From 3d74c41c2d199f910928d72ee16d3d65157611cf Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Fri, 7 Oct 2022 12:32:44 -0700 Subject: [PATCH 001/122] Netherite Diving - Add netherite diving helmet, netherite backtank, and netherite diving boots - Full netherite diving set makes entity fire immune --- src/generated/resources/.cache/cache | 62 +++--- .../blockstates/netherite_backtank.json | 34 +++ .../resources/assets/create/lang/en_ud.json | 9 +- .../resources/assets/create/lang/en_us.json | 9 +- .../assets/create/lang/unfinished/de_de.json | 11 +- .../assets/create/lang/unfinished/es_cl.json | 11 +- .../assets/create/lang/unfinished/es_es.json | 11 +- .../assets/create/lang/unfinished/fr_fr.json | 11 +- .../assets/create/lang/unfinished/it_it.json | 11 +- .../assets/create/lang/unfinished/ja_jp.json | 11 +- .../assets/create/lang/unfinished/ko_kr.json | 11 +- .../assets/create/lang/unfinished/nl_nl.json | 11 +- .../assets/create/lang/unfinished/pl_pl.json | 11 +- .../assets/create/lang/unfinished/pt_br.json | 11 +- .../assets/create/lang/unfinished/pt_pt.json | 11 +- .../assets/create/lang/unfinished/ro_ro.json | 11 +- .../assets/create/lang/unfinished/ru_ru.json | 11 +- .../assets/create/lang/unfinished/uk_ua.json | 11 +- .../assets/create/lang/unfinished/zh_cn.json | 11 +- .../assets/create/lang/unfinished/zh_tw.json | 11 +- ...ng_boots.json => copper_diving_boots.json} | 2 +- ..._helmet.json => copper_diving_helmet.json} | 2 +- .../models/item/netherite_backtank.json | 3 + .../item/netherite_backtank_placeable.json | 3 + .../models/item/netherite_diving_boots.json | 6 + .../models/item/netherite_diving_helmet.json | 6 + .../data/create/advancements/diving_suit.json | 2 +- .../create/advancements/diving_suit_lava.json | 2 +- ...ng_boots.json => copper_diving_boots.json} | 4 +- ..._helmet.json => copper_diving_helmet.json} | 4 +- .../blocks/netherite_backtank.json | 48 ++++ ...ng_boots.json => copper_diving_boots.json} | 2 +- ..._helmet.json => copper_diving_helmet.json} | 2 +- .../tags/items/pressurized_air_sources.json | 3 +- .../tags/blocks/mineable/pickaxe.json | 1 + .../com/simibubi/create/AllBlockPartials.java | 3 + .../java/com/simibubi/create/AllBlocks.java | 30 +-- .../java/com/simibubi/create/AllItems.java | 47 +++- .../com/simibubi/create/AllTileEntities.java | 16 +- .../com/simibubi/create/CreateClient.java | 4 +- .../contraptions/relays/belt/BeltBlock.java | 4 +- .../curiosities/armor/AllArmorMaterials.java | 3 +- ...rmorLayer.java => BacktankArmorLayer.java} | 73 +------ ...rBacktankBlock.java => BacktankBlock.java} | 43 ++-- ...ankInstance.java => BacktankInstance.java} | 7 +- .../curiosities/armor/BacktankItem.java | 111 ++++++++++ ...ankRenderer.java => BacktankRenderer.java} | 26 ++- ...ileEntity.java => BacktankTileEntity.java} | 35 +-- .../{BackTankUtil.java => BacktankUtil.java} | 2 +- .../curiosities/armor/BaseArmorItem.java | 24 ++ .../armor/CapacityEnchantment.java | 4 +- .../curiosities/armor/CopperArmorItem.java | 33 --- .../curiosities/armor/CopperBacktankItem.java | 91 -------- .../curiosities/armor/DivingBootsItem.java | 22 +- .../curiosities/armor/DivingHelmetItem.java | 30 ++- .../armor/NetheriteDivingHandler.java | 150 +++++++++++++ .../armor/RemainingAirOverlay.java | 66 ++++++ .../curiosities/tools/ExtendoGripItem.java | 10 +- .../curiosities/weapons/PotatoCannonItem.java | 10 +- .../simibubi/create/events/ClientEvents.java | 8 +- .../advancement/AllAdvancements.java | 4 +- .../foundation/data/BuilderTransformers.java | 31 +++ .../foundation/data/SharedProperties.java | 10 +- .../data/recipe/StandardRecipeGen.java | 4 +- .../create/foundation/mixin/EntityMixin.java | 22 ++ .../foundation/networking/AllPackets.java | 2 + .../foundation/utility/RemapHelper.java | 18 ++ .../block/netherite_backtank/block.json | 74 +++++++ .../block/netherite_backtank/block_cogs.json | 125 +++++++++++ .../netherite_backtank/block_shaft_input.json | 37 ++++ .../models/block/netherite_backtank/item.json | 205 ++++++++++++++++++ .../textures/block/netherite_backtank.png | Bin 0 -> 8119 bytes ...ving_boots.png => copper_diving_boots.png} | Bin ...ng_helmet.png => copper_diving_helmet.png} | Bin .../textures/item/netherite_diving_boots.png | Bin 0 -> 5875 bytes .../textures/item/netherite_diving_helmet.png | Bin 0 -> 5879 bytes .../{copper.png => copper_diving_layer_1.png} | Bin .../models/armor/netherite_diving_layer_1.png | Bin 0 -> 10002 bytes .../netherite_diving_layer_1_original.png | Bin 0 -> 9195 bytes .../netherite_diving_layer_1_overlay.png | Bin 0 -> 8724 bytes src/main/resources/create.mixins.json | 1 + 81 files changed, 1355 insertions(+), 410 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/netherite_backtank.json rename src/generated/resources/assets/create/models/item/{diving_boots.json => copper_diving_boots.json} (56%) rename src/generated/resources/assets/create/models/item/{diving_helmet.json => copper_diving_helmet.json} (56%) create mode 100644 src/generated/resources/assets/create/models/item/netherite_backtank.json create mode 100644 src/generated/resources/assets/create/models/item/netherite_backtank_placeable.json create mode 100644 src/generated/resources/assets/create/models/item/netherite_diving_boots.json create mode 100644 src/generated/resources/assets/create/models/item/netherite_diving_helmet.json rename src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/{diving_boots.json => copper_diving_boots.json} (80%) rename src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/{diving_helmet.json => copper_diving_helmet.json} (80%) create mode 100644 src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json rename src/generated/resources/data/create/recipes/crafting/appliances/{diving_boots.json => copper_diving_boots.json} (85%) rename src/generated/resources/data/create/recipes/crafting/appliances/{diving_helmet.json => copper_diving_helmet.json} (83%) rename src/main/java/com/simibubi/create/content/curiosities/armor/{CopperBacktankArmorLayer.java => BacktankArmorLayer.java} (53%) rename src/main/java/com/simibubi/create/content/curiosities/armor/{CopperBacktankBlock.java => BacktankBlock.java} (79%) rename src/main/java/com/simibubi/create/content/curiosities/armor/{CopperBacktankInstance.java => BacktankInstance.java} (61%) create mode 100644 src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java rename src/main/java/com/simibubi/create/content/curiosities/armor/{CopperBacktankRenderer.java => BacktankRenderer.java} (65%) rename src/main/java/com/simibubi/create/content/curiosities/armor/{CopperBacktankTileEntity.java => BacktankTileEntity.java} (86%) rename src/main/java/com/simibubi/create/content/curiosities/armor/{BackTankUtil.java => BacktankUtil.java} (99%) create mode 100644 src/main/java/com/simibubi/create/content/curiosities/armor/BaseArmorItem.java delete mode 100644 src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java delete mode 100644 src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/armor/RemainingAirOverlay.java create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java create mode 100644 src/main/resources/assets/create/models/block/netherite_backtank/block.json create mode 100644 src/main/resources/assets/create/models/block/netherite_backtank/block_cogs.json create mode 100644 src/main/resources/assets/create/models/block/netherite_backtank/block_shaft_input.json create mode 100644 src/main/resources/assets/create/models/block/netherite_backtank/item.json create mode 100644 src/main/resources/assets/create/textures/block/netherite_backtank.png rename src/main/resources/assets/create/textures/item/{diving_boots.png => copper_diving_boots.png} (100%) rename src/main/resources/assets/create/textures/item/{diving_helmet.png => copper_diving_helmet.png} (100%) create mode 100644 src/main/resources/assets/create/textures/item/netherite_diving_boots.png create mode 100644 src/main/resources/assets/create/textures/item/netherite_diving_helmet.png rename src/main/resources/assets/create/textures/models/armor/{copper.png => copper_diving_layer_1.png} (100%) create mode 100644 src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1.png create mode 100644 src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1_original.png create mode 100644 src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1_overlay.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index c345e5268..d4c0cfed2 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -302,6 +302,7 @@ e20699a753e7b12abd4a881de473d494a4ffeaa9 assets/create/blockstates/metal_girder_ 4e48ad0936647065c2322390e7c0fe115c853a98 assets/create/blockstates/millstone.json 468202df0802e17c75fcad0993daf1bc5300ca91 assets/create/blockstates/minecart_anchor.json b1126c191877cff86b4e2de83e1fcbd151451cb7 assets/create/blockstates/mysterious_cuckoo_clock.json +828fadf676c75b2a11235a106b018b0505d54ec5 assets/create/blockstates/netherite_backtank.json 304e5e7b2927f3e8e8b8c6932c35c5c6892d2eb5 assets/create/blockstates/nixie_tube.json 36e46e65003a8d0b8555fe5e8f8dc980d6559bc5 assets/create/blockstates/nozzle.json cf60989f63f02067fc4e4ad25033ac83167cdeb0 assets/create/blockstates/oak_window.json @@ -558,24 +559,24 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json -c219c77242e645f32704201dd80e279b3759b794 assets/create/lang/en_us.json -cf37534c3f98098f42b181083fd7cc1063ac2bbb assets/create/lang/unfinished/de_de.json -83d427726fdc38ec3c5b8c3c0f6f87f49d3e5ff3 assets/create/lang/unfinished/es_cl.json -d21caeb0cbe871e38dc101c34ab89ece3cbe2127 assets/create/lang/unfinished/es_es.json -2215688baa2b0beffe0c19f71a3238df1d01b0c1 assets/create/lang/unfinished/fr_fr.json -79484f2c3eba2b40f5d82ffdc3abeb3d2e6962d2 assets/create/lang/unfinished/it_it.json -d659570c9dc89653f03cd4cc82ed50db443638d8 assets/create/lang/unfinished/ja_jp.json -03c30521d9b1bc7a6eb85d2a59a4c4676dca581e assets/create/lang/unfinished/ko_kr.json -3a56d579d022cc1b20746e9d3a1483e6fa8fb4be assets/create/lang/unfinished/nl_nl.json -d5bfeacb442236c8b075fddb41364f85c8cb7feb assets/create/lang/unfinished/pl_pl.json -0f3f51d065d896a7e3b4abd8c2801fa3e8fbd8c3 assets/create/lang/unfinished/pt_br.json -9f2ec0b2f8fa9b380c7edb56bfb806bcce621cce assets/create/lang/unfinished/pt_pt.json -1f88f0d91bdf5c68224cb65249f77272771939c9 assets/create/lang/unfinished/ro_ro.json -928ac3ad2ab5e7fa3d582b8b956258c110bea868 assets/create/lang/unfinished/ru_ru.json -ed29ef4ae8f3633533485d56f7fa8cb77b790a0a assets/create/lang/unfinished/uk_ua.json -e5cf7b657be816bc15b331dd058f7ccdabee8c14 assets/create/lang/unfinished/zh_cn.json -316dae07f95fb65c984fe7c424b566eb8ddba5f9 assets/create/lang/unfinished/zh_tw.json +48a4f2df04e092f355a70994af169f8e3e23eff9 assets/create/lang/en_ud.json +697142f7df636ab2c1a4c51de518da1057f00b0d assets/create/lang/en_us.json +c748bf6346d594db47b012a642201878d6099f19 assets/create/lang/unfinished/de_de.json +d9a59a5dd0acf9f109e50536dfbb9cfd7231c02d assets/create/lang/unfinished/es_cl.json +5353625f2eeea67c3db572c76579ecceba08d07e assets/create/lang/unfinished/es_es.json +022da28dbe8794c9c70e2f56f51d194b59227910 assets/create/lang/unfinished/fr_fr.json +3d748d50b3e3452082470d4e13349e999a0ff121 assets/create/lang/unfinished/it_it.json +c1d7f5ab9f8796e9e83a98aebea60ddbd7066b5c assets/create/lang/unfinished/ja_jp.json +18dbdd8a353469d954159174c0c668af87e65a96 assets/create/lang/unfinished/ko_kr.json +783900eaad7ea3bd08c41817365025e52e8665a8 assets/create/lang/unfinished/nl_nl.json +004d34ba743ab206dea12ea4c85c00ae7cd3b191 assets/create/lang/unfinished/pl_pl.json +bbe3799eeaed6b3e00c9314607ade798b116c42b assets/create/lang/unfinished/pt_br.json +3eb467693daee7da7c40dd4a9f807ead7dd66b7e assets/create/lang/unfinished/pt_pt.json +e1cf6bdd38ab822f626e0b02c2d16637fdd2e622 assets/create/lang/unfinished/ro_ro.json +18e0fba5433d35ba1512f1c828c67443d60a0b86 assets/create/lang/unfinished/ru_ru.json +041e6917f64163ac0b8157b4aa5cbbbde9efd165 assets/create/lang/unfinished/uk_ua.json +2a5fb11b27476169d381e02f94073889b4e5fb7f assets/create/lang/unfinished/zh_cn.json +cf24b02eef0b51db5543f985e232cb84d0cc6a50 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 @@ -1680,6 +1681,8 @@ dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json 10397036fc0bb1e18a767cfd7b19b10d805a83fe assets/create/models/item/copper_backtank.json 3652f8f7b454940050f090ab32d38e04b93e14f8 assets/create/models/item/copper_backtank_placeable.json 759bcb5fe7dfdd628716f9b4ff19a5ab00393381 assets/create/models/item/copper_casing.json +16182c4c32b11b370cf5b1116250cf3dda838954 assets/create/models/item/copper_diving_boots.json +dc517e70cee9c5d74edfedd49ac43a67fe258c1b assets/create/models/item/copper_diving_helmet.json 599845f2382da5b43a3c610f6ed7a87c032e1c6a assets/create/models/item/copper_ladder.json 751324b03f657f4166460eb10a64dae47cb97bd4 assets/create/models/item/copper_nugget.json 177dafb51d70c55ec62036332868efed4e01f353 assets/create/models/item/copper_sheet.json @@ -1839,8 +1842,6 @@ f786a43e296d9f10d7c302fe3ae9cddf4ba9984e assets/create/models/item/dark_oak_wind e0ecc0a20cf9dd54ccfc48e0041d5220b2c8316e assets/create/models/item/diorite_pillar.json 0ff9267a39783dce5e0aa59e78088c64337ad6ee assets/create/models/item/display_board.json c89ab6316518a19974cbed73edb54aaaafd073f5 assets/create/models/item/display_link.json -6006f88e56d74a3fd75a9dddb25af39075e0482b assets/create/models/item/diving_boots.json -df8cfe7e8eb527329094396e11222e9097e309d7 assets/create/models/item/diving_helmet.json 4b2af721dccfcf4e5b5a7b0f64f295d7cfd27f69 assets/create/models/item/dough.json c25cd4d5cdf67b0d7e15f5a56c63e6bf35fe2917 assets/create/models/item/dripstone_pillar.json 5c45bf31bc4b6d2c6482318f19a660ad949d796b assets/create/models/item/electron_tube.json @@ -1941,6 +1942,10 @@ f8d0d4b2a890ea7a69ab0c390947b48fe0478d3f assets/create/models/item/mechanical_pi 363c5a2b8ac945b676c838cdf7b0494c3ab13599 assets/create/models/item/minecart_contraption.json 01e3fda31e549a3b6a1e5e615b59478e8f06f16a assets/create/models/item/minecart_coupling.json dae5cffa4e1263d6a113469f79fba8695fa8232a assets/create/models/item/mysterious_cuckoo_clock.json +cfacabb82a073bb03845f88397e04496128e0889 assets/create/models/item/netherite_backtank.json +3652f8f7b454940050f090ab32d38e04b93e14f8 assets/create/models/item/netherite_backtank_placeable.json +cae57da9a495dec4a17e4452111332ee5e0967ca assets/create/models/item/netherite_diving_boots.json +507ea9c5eac8c381ab99b6236ab26ca953388d8c assets/create/models/item/netherite_diving_helmet.json bafe601f186e868819da3d29f7be7dc96f9ba790 assets/create/models/item/nixie_tube.json 366a60447bbbd61eb25aecf191a01e8d9417ad61 assets/create/models/item/nozzle.json 7a336a340f3e4927d7a35f9d79e8a03693b802aa assets/create/models/item/oak_window.json @@ -2238,8 +2243,8 @@ d53e397aef8dc2fc674f6f1c7a059a17678ec56c data/create/advancements/cuckoo_clock.j 27c72072683dad1a8ca9976a58367c965ca35fe7 data/create/advancements/deployer.json b30ed29c6e69d0964e810a470a8725bf9496e9b5 data/create/advancements/display_board_0.json 92fdb65633cf93b7aca5f359abeb5a9ec715ae40 data/create/advancements/display_link.json -12a4c76b2d1eff364ed15926711fdf5a79957899 data/create/advancements/diving_suit.json -9e3fc44ae8997b03881fddd3938397cac3f580e1 data/create/advancements/diving_suit_lava.json +0c6d98542523d90ff3848c07ee6fd4963c85ed2c data/create/advancements/diving_suit.json +50d2f42e9d63b5dff964c60800997ebd26a736f6 data/create/advancements/diving_suit_lava.json ebf21bebdeb29fc7f1ffa078123256241921681f data/create/advancements/drain.json f87f17fb29afda4fc46a81b5c3967bd21c068e36 data/create/advancements/ejector_maxed.json 0c19f535f04e653e0263ab9c3e9f04a203fa6765 data/create/advancements/encased_fan.json @@ -2319,9 +2324,9 @@ c2ca0ac0d670fa4d7e8150ba6e314de2881248b6 data/create/advancements/recipes/create f605ac221fbd565152f8e987beb7697299588da2 data/create/advancements/recipes/create.base/copper_tile_stairs_from_copper_tiles_stonecutting.json 5190d5c155ebd9a670dc8271e4920a048e633d25 data/create/advancements/recipes/create.base/copper_tiles_from_plates_copper_stonecutting.json 376bda381f3dedb52b03eb1504b103d8ddd1b672 data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json +9833d16405f8c51646590e98588fb410f96d9523 data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_boots.json +680c982dd1d3c45bed4d390fc0da5042750c157a data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_helmet.json 265a953eaac909fd2817c6dc3d1a08b376579a25 data/create/advancements/recipes/create.base/crafting/appliances/crafting_blueprint.json -29a77555e4d9eb1c8d4740f95b784fe0e53c72b1 data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json -638f93712e176fa3ef5cd6ecaf8dac4eebe1cd1e data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json fa2e18298f7710465d9b0798a69288e846c646fd data/create/advancements/recipes/create.base/crafting/appliances/dough.json a9b163744b1c494d07ec256d0367884f9601176d data/create/advancements/recipes/create.base/crafting/appliances/linked_controller.json c4769d7ac9c537eb4409b02883e89d0930514a8b data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json @@ -3676,6 +3681,7 @@ afdff197c9d1a6940e988c00435135f9705fd0e5 data/create/loot_tables/blocks/metal_gi b83a90fbe83906b171fc0de6bdc2d9aa3a8c542e data/create/loot_tables/blocks/millstone.json 5c1df8443043b3fe3b665dba348e2ff188bcbe31 data/create/loot_tables/blocks/minecart_anchor.json 1e73d28fdd2e54910074aeadbe5617425a8ae656 data/create/loot_tables/blocks/mysterious_cuckoo_clock.json +a5fa8fdc10efe534e5c7d8bdb687f226b39f63ef data/create/loot_tables/blocks/netherite_backtank.json 2e21a06c0d671e543bffecb0b67d97b51fa83ddc data/create/loot_tables/blocks/nixie_tube.json f6b4095a518a01081f3663d7268d67063bdb44ee data/create/loot_tables/blocks/nozzle.json d378be8f13fc7ed625813eae3a50b68e8706a297 data/create/loot_tables/blocks/oak_window.json @@ -3981,9 +3987,9 @@ bea832822e0e5f0048eb94649641ea541e11f943 data/create/recipes/copper_shingles_fro 15da07234ee005be984f060520d0cf87bca672f5 data/create/recipes/copper_tile_stairs_from_copper_tiles_stonecutting.json 10fdc13f5b2b745e13e6e4e949a07ceaf4544a26 data/create/recipes/copper_tiles_from_plates_copper_stonecutting.json eb18d5972484418fa5a768633e68688ad20d2bd7 data/create/recipes/crafting/appliances/copper_backtank.json +5771562086710eb5a3a05d464989d2f23d6c5e86 data/create/recipes/crafting/appliances/copper_diving_boots.json +ec38ddb44e4bf8eaaba6f9d27e8469234fc98528 data/create/recipes/crafting/appliances/copper_diving_helmet.json c077375d16b4505e52548613fbc9356993556e6b data/create/recipes/crafting/appliances/crafting_blueprint.json -cba3566f09234b9cd17d8bc87dc87b2f779214e9 data/create/recipes/crafting/appliances/diving_boots.json -3e6bbbd6aa2b1373e9d6063d48560e4b547a5a5b data/create/recipes/crafting/appliances/diving_helmet.json edf96556bb2357f54fd398fe573641afa15239b2 data/create/recipes/crafting/appliances/dough.json 75cdbd88973a8ca943ebe890153b01a344b96b01 data/create/recipes/crafting/appliances/linked_controller.json 7b5f863dda3d05a79cb85943a178eba0bd8a7dc7 data/create/recipes/crafting/appliances/slime_ball.json @@ -5647,7 +5653,7 @@ c98ffdc2780c2a7690c590f46f014aeee7b0b504 data/create/tags/items/create_ingots.js 4480f211f4a37bfee193eba945bc9f5a8d2c6e34 data/create/tags/items/crushed_ores.json 67385d5198d0796ec8f0d2c6ae144c672f4317a1 data/create/tags/items/modded_stripped_logs.json 27a1074a88a7b939c811341086afece325ed724c data/create/tags/items/modded_stripped_wood.json -7973972edb524683ef365bc103fcfcde0858a854 data/create/tags/items/pressurized_air_sources.json +8c8f6658ee72bdea2fcef77bade7bfa48de784c8 data/create/tags/items/pressurized_air_sources.json bce28787b0271382842823d04a977912a88b01c2 data/create/tags/items/sandpaper.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json 0f4276a6b7da5f4dee8909802e6717a4c97f0555 data/create/tags/items/sleepers.json @@ -5726,7 +5732,7 @@ e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/blocks/doors.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json 71480793b5e5ac5eb33c5271118c62227a2769d8 data/minecraft/tags/blocks/mineable/axe.json -77511f0fca91aa40c8b2566bf9bfb78964a56db3 data/minecraft/tags/blocks/mineable/pickaxe.json +f24ab07c09d7c0cb237944099cac4e3ca1c0844c data/minecraft/tags/blocks/mineable/pickaxe.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json diff --git a/src/generated/resources/assets/create/blockstates/netherite_backtank.json b/src/generated/resources/assets/create/blockstates/netherite_backtank.json new file mode 100644 index 000000000..c8113d106 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/netherite_backtank.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=north,waterlogged=false": { + "model": "create:block/netherite_backtank/block" + }, + "facing=south,waterlogged=false": { + "model": "create:block/netherite_backtank/block", + "y": 180 + }, + "facing=west,waterlogged=false": { + "model": "create:block/netherite_backtank/block", + "y": 270 + }, + "facing=east,waterlogged=false": { + "model": "create:block/netherite_backtank/block", + "y": 90 + }, + "facing=north,waterlogged=true": { + "model": "create:block/netherite_backtank/block" + }, + "facing=south,waterlogged=true": { + "model": "create:block/netherite_backtank/block", + "y": 180 + }, + "facing=west,waterlogged=true": { + "model": "create:block/netherite_backtank/block", + "y": 270 + }, + "facing=east,waterlogged=true": { + "model": "create:block/netherite_backtank/block", + "y": 90 + } + } +} \ 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 d57821dd5..61918052c 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -303,6 +303,7 @@ "block.create.millstone": "\u01DDuo\u0287s\u05DF\u05DF\u0131W", "block.create.minecart_anchor": "\u0279o\u0265\u0254u\u2C6F \u0287\u0279\u0250\u0254\u01DDu\u0131W", "block.create.mysterious_cuckoo_clock": "\u029E\u0254o\u05DF\u0186 oo\u029E\u0254n\u0186", + "block.create.netherite_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u01DD\u0287\u0131\u0279\u01DD\u0265\u0287\u01DDN", "block.create.nixie_tube": "\u01DDqn\u27D8 \u01DD\u0131x\u0131N", "block.create.nozzle": "\u01DD\u05DFzzoN", "block.create.oak_window": "\u028Dopu\u0131M \u029E\u0250O", @@ -589,6 +590,8 @@ "item.create.cinder_flour": "\u0279no\u05DF\u2132 \u0279\u01DDpu\u0131\u0186", "item.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", "item.create.copper_backtank_placeable": "\u01DD\u05DFq\u0250\u01DD\u0254\u0250\u05DF\u0500 \u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", + "item.create.copper_diving_boots": "s\u0287oo\u15FA bu\u0131\u028C\u0131\u15E1 \u0279\u01DDddo\u0186", + "item.create.copper_diving_helmet": "\u0287\u01DD\u026F\u05DF\u01DDH bu\u0131\u028C\u0131\u15E1 \u0279\u01DDddo\u0186", "item.create.copper_nugget": "\u0287\u01DDbbnN \u0279\u01DDddo\u0186", "item.create.copper_sheet": "\u0287\u01DD\u01DD\u0265S \u0279\u01DDddo\u0186", "item.create.crafter_slot_cover": "\u0279\u01DD\u028Co\u0186 \u0287o\u05DFS \u0279\u01DD\u0287\u025F\u0250\u0279\u0186", @@ -607,8 +610,6 @@ "item.create.crushed_tin_ore": "\u01DD\u0279O u\u0131\u27D8 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_uranium_ore": "\u01DD\u0279O \u026Fn\u0131u\u0250\u0279\u2229 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z p\u01DD\u0265sn\u0279\u0186", - "item.create.diving_boots": "s\u0287oo\u15FA bu\u0131\u028C\u0131\u15E1", - "item.create.diving_helmet": "\u0287\u01DD\u026F\u05DF\u01DDH bu\u0131\u028C\u0131\u15E1", "item.create.dough": "\u0265bno\u15E1", "item.create.electron_tube": "\u01DDqn\u27D8 uo\u0279\u0287\u0254\u01DD\u05DF\u018E", "item.create.empty_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u028E\u0287d\u026F\u018E", @@ -628,6 +629,10 @@ "item.create.linked_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 p\u01DD\u029Eu\u0131\uA780", "item.create.minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W", "item.create.minecart_coupling": "bu\u0131\u05DFdno\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W", + "item.create.netherite_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u01DD\u0287\u0131\u0279\u01DD\u0265\u0287\u01DDN", + "item.create.netherite_backtank_placeable": "\u01DD\u05DFq\u0250\u01DD\u0254\u0250\u05DF\u0500 \u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u01DD\u0287\u0131\u0279\u01DD\u0265\u0287\u01DDN", + "item.create.netherite_diving_boots": "s\u0287oo\u15FA bu\u0131\u028C\u0131\u15E1 \u01DD\u0287\u0131\u0279\u01DD\u0265\u0287\u01DDN", + "item.create.netherite_diving_helmet": "\u0287\u01DD\u026F\u05DF\u01DDH bu\u0131\u028C\u0131\u15E1 \u01DD\u0287\u0131\u0279\u01DD\u0265\u0287\u01DDN", "item.create.polished_rose_quartz": "z\u0287\u0279\u0250n\u1F49 \u01DDso\u1D1A p\u01DD\u0265s\u0131\u05DFo\u0500", "item.create.potato_cannon": "uouu\u0250\u0186 o\u0287\u0250\u0287o\u0500", "item.create.powdered_obsidian": "u\u0250\u0131p\u0131sqO p\u01DD\u0279\u01DDp\u028Do\u0500", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index f29227a7a..29ad1b200 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -306,6 +306,7 @@ "block.create.millstone": "Millstone", "block.create.minecart_anchor": "Minecart Anchor", "block.create.mysterious_cuckoo_clock": "Cuckoo Clock", + "block.create.netherite_backtank": "Netherite Backtank", "block.create.nixie_tube": "Nixie Tube", "block.create.nozzle": "Nozzle", "block.create.oak_window": "Oak Window", @@ -596,6 +597,8 @@ "item.create.cinder_flour": "Cinder Flour", "item.create.copper_backtank": "Copper Backtank", "item.create.copper_backtank_placeable": "Copper Backtank Placeable", + "item.create.copper_diving_boots": "Copper Diving Boots", + "item.create.copper_diving_helmet": "Copper Diving Helmet", "item.create.copper_nugget": "Copper Nugget", "item.create.copper_sheet": "Copper Sheet", "item.create.crafter_slot_cover": "Crafter Slot Cover", @@ -614,8 +617,6 @@ "item.create.crushed_tin_ore": "Crushed Tin Ore", "item.create.crushed_uranium_ore": "Crushed Uranium Ore", "item.create.crushed_zinc_ore": "Crushed Zinc Ore", - "item.create.diving_boots": "Diving Boots", - "item.create.diving_helmet": "Diving Helmet", "item.create.dough": "Dough", "item.create.electron_tube": "Electron Tube", "item.create.empty_blaze_burner": "Empty Blaze Burner", @@ -635,6 +636,10 @@ "item.create.linked_controller": "Linked Controller", "item.create.minecart_contraption": "Minecart Contraption", "item.create.minecart_coupling": "Minecart Coupling", + "item.create.netherite_backtank": "Netherite Backtank", + "item.create.netherite_backtank_placeable": "Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "Netherite Diving Boots", + "item.create.netherite_diving_helmet": "Netherite Diving Helmet", "item.create.polished_rose_quartz": "Polished Rose Quartz", "item.create.potato_cannon": "Potato Cannon", "item.create.powdered_obsidian": "Powdered Obsidian", 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 ec0ab8c0d..b3b47f45f 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: 842", + "_": "Missing Localizations: 849", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Mahlstein", "block.create.minecart_anchor": "Lorenanker", "block.create.mysterious_cuckoo_clock": "Kuckucksuhr", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Nixie-Röhre", "block.create.nozzle": "Düse", "block.create.oak_window": "Eichenfenster", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Aschenmehl", "item.create.copper_backtank": "Kupferner Rückentank", "item.create.copper_backtank_placeable": "Platzierbarer Kupferner Rückentank", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Kupferklumpen", "item.create.copper_sheet": "Kupferblech", "item.create.crafter_slot_cover": "Handwerkseinheit Slot Abdeckung", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Zerkleinertes Zinnerz", "item.create.crushed_uranium_ore": "Zerkleinertes Uranerz", "item.create.crushed_zinc_ore": "Zerkleinertes Zinkerz", - "item.create.diving_boots": "Tauchstiefel", - "item.create.diving_helmet": "Tauchhelm", "item.create.dough": "Teig", "item.create.electron_tube": "Elektronenröhre", "item.create.empty_blaze_burner": "Leerer Lohenbrenner", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Fernsteuerung", "item.create.minecart_contraption": "Loren Vorrichtung", "item.create.minecart_coupling": "Lorenkupplung", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Polierter Rosenquarz", "item.create.potato_cannon": "Kartoffelkanone", "item.create.powdered_obsidian": "Pulverisierter Obsidian", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index b1cb4225f..3b5d6ac16 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 988", + "_": "Missing Localizations: 995", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Piedra de Molino", "block.create.minecart_anchor": "Ancla de Vagoneta", "block.create.mysterious_cuckoo_clock": "Reloj Cu-Cú", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Boquilla", "block.create.oak_window": "Ventana de Roble", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Harina de Cenizas", "item.create.copper_backtank": "Mochila-Tanque de Cobre", "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Nugget de Cobre", "item.create.copper_sheet": "Plancha de Cobre", "item.create.crafter_slot_cover": "Cubre Ranuras", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Mineral de Estaño Triturado", "item.create.crushed_uranium_ore": "Mineral de Uranio Triturado", "item.create.crushed_zinc_ore": "Mineral de Zinc Triturado", - "item.create.diving_boots": "Botas de Buceo", - "item.create.diving_helmet": "Casco de Buceo", "item.create.dough": "Masa", "item.create.electron_tube": "Tubo de Electrones", "item.create.empty_blaze_burner": "Quemador Blaze Vacío", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Controlador Vinculable", "item.create.minecart_contraption": "Contrapción de Vagoneta", "item.create.minecart_coupling": "Acoplamiento de Vagonetas", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Cuarzo Rosa Pulido", "item.create.potato_cannon": "Cañón de Papas", "item.create.powdered_obsidian": "Obsidiana Pulverizada", 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 9866e0ed4..8d6b84ed3 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: 8", + "_": "Missing Localizations: 15", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Piedra de molino", "block.create.minecart_anchor": "Ancla de vagonetas", "block.create.mysterious_cuckoo_clock": "Reloj de cuco", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Boquilla", "block.create.oak_window": "Ventana de roble", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Harina del Nether", "item.create.copper_backtank": "Depósito trasero de cobre", "item.create.copper_backtank_placeable": "Depósito de cobre colocable", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Pepita de cobre", "item.create.copper_sheet": "Lámina de cobre", "item.create.crafter_slot_cover": "Tapa de ranura del ensamblador mecánico", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Mineral de estaño molido", "item.create.crushed_uranium_ore": "Mineral de uranio molido", "item.create.crushed_zinc_ore": "Mineral de cinc molido", - "item.create.diving_boots": "Botas de buceo", - "item.create.diving_helmet": "Casco de buceo", "item.create.dough": "Masa", "item.create.electron_tube": "Tubo de electrones", "item.create.empty_blaze_burner": "Quemador de blaze vacío", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Controlador enlazado", "item.create.minecart_contraption": "Artefacto móvil de vagoneta", "item.create.minecart_coupling": "Acoplamiento de vagoneta", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Cuarzo rosado pulido", "item.create.potato_cannon": "Cañón de patatas", "item.create.powdered_obsidian": "Polvo de obsidiana", 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 a40d4bfce..153b506c2 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: 2139", + "_": "Missing Localizations: 2144", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "UNLOCALIZED: Millstone", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", "block.create.nozzle": "Buse", "block.create.oak_window": "UNLOCALIZED: Oak Window", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Farine de braise", "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Pépite de cuivre", "item.create.copper_sheet": "Plaques de cuivre", "item.create.crafter_slot_cover": "Couvercle", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Etain concassé", "item.create.crushed_uranium_ore": "Uranium concassé", "item.create.crushed_zinc_ore": "Zinc concassé", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Pâte", "item.create.electron_tube": "Tube électronique", "item.create.empty_blaze_burner": "Brûleur à blaze vide", @@ -636,6 +637,10 @@ "item.create.linked_controller": "UNLOCALIZED: Linked Controller", "item.create.minecart_contraption": "Engin de wagonnet", "item.create.minecart_coupling": "Lien pour wagonnet", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Quartz rose poli", "item.create.potato_cannon": "UNLOCALIZED: Potato Cannon", "item.create.powdered_obsidian": "Obsidienne concassée", 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 39c5e5ac9..449be154b 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: 2", + "_": "Missing Localizations: 9", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Macina", "block.create.minecart_anchor": "Ancora per carrello da miniera", "block.create.mysterious_cuckoo_clock": "Orologio a cucù misterioso", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Dispersore", "block.create.oak_window": "Finestra di quercia", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Cenere farinosa", "item.create.copper_backtank": "Zaino serbatoio", "item.create.copper_backtank_placeable": "Zaino serbatoio posizionabile", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Pepita di rame", "item.create.copper_sheet": "Lamiera di rame", "item.create.crafter_slot_cover": "Copertura per slot di fabbricazione", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Stagno grezzo frantumato", "item.create.crushed_uranium_ore": "Uranio grezzo frantumato", "item.create.crushed_zinc_ore": "Zinco grezzo frantumato", - "item.create.diving_boots": "Stivali da immersione", - "item.create.diving_helmet": "Elmo da immersione", "item.create.dough": "Impasto", "item.create.electron_tube": "Tubo a vuoto", "item.create.empty_blaze_burner": "Inceneritore vuoto", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Pulsantiera di comando", "item.create.minecart_contraption": "Macchinario con carrello da miniera", "item.create.minecart_coupling": "Aggancio per carrelli da miniera", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Quarzo rosa levigato", "item.create.potato_cannon": "Cannone a patate", "item.create.powdered_obsidian": "Ossidiana in polvere", 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 29408f90f..d95da9a6d 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: 4", + "_": "Missing Localizations: 11", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "石臼", "block.create.minecart_anchor": "トロッコアンカー", "block.create.mysterious_cuckoo_clock": "鳩時計", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "ニキシー管", "block.create.nozzle": "ノズル", "block.create.oak_window": "オークの窓", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "ネザーラックの粉", "item.create.copper_backtank": "銅のバックタンク", "item.create.copper_backtank_placeable": "設置可能な銅のバックタンク", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "クラフタースロットカバー", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "砕いた錫鉱石", "item.create.crushed_uranium_ore": "砕いたウラン鉱石", "item.create.crushed_zinc_ore": "砕いた亜鉛鉱石", - "item.create.diving_boots": "潜水ブーツ", - "item.create.diving_helmet": "潜水ヘルメット", "item.create.dough": "生地", "item.create.electron_tube": "電子管", "item.create.empty_blaze_burner": "空のブレイズバーナー", @@ -636,6 +637,10 @@ "item.create.linked_controller": "リンクコントローラー", "item.create.minecart_contraption": "からくりトロッコ", "item.create.minecart_coupling": "トロッコ連結器", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "磨かれたローズクォーツ", "item.create.potato_cannon": "ポテトキャノン", "item.create.powdered_obsidian": "黒曜石の粉", 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 92e403ed6..c6999e6f2 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: 8", + "_": "Missing Localizations: 15", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "맷돌", "block.create.minecart_anchor": "광산 수레 정박기", "block.create.mysterious_cuckoo_clock": "뻐꾸기 시계", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "닉시관", "block.create.nozzle": "노즐", "block.create.oak_window": "참나무 유리창", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "잿가루", "item.create.copper_backtank": "구리 산소통", "item.create.copper_backtank_placeable": "구리 산소통", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "구리 조각", "item.create.copper_sheet": "구리 판", "item.create.crafter_slot_cover": "조합기 슬롯 덮개", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "분쇄된 주석 광석", "item.create.crushed_uranium_ore": "분쇄된 우라늄 광석", "item.create.crushed_zinc_ore": "분쇄된 아연 광석", - "item.create.diving_boots": "다이빙 부츠", - "item.create.diving_helmet": "다이빙 헬멧", "item.create.dough": "반죽", "item.create.electron_tube": "전지 튜브", "item.create.empty_blaze_burner": "빈 블레이즈 버너", @@ -636,6 +637,10 @@ "item.create.linked_controller": "레드스톤 링크 조작기", "item.create.minecart_contraption": "광산 수레 구조물", "item.create.minecart_coupling": "광산 수레 커플링", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "윤나는 장밋빛 석영", "item.create.potato_cannon": "감자포", "item.create.powdered_obsidian": "흑요석 가루", 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 319e3974f..8ad555c4e 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: 2487", + "_": "Missing Localizations: 2492", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "UNLOCALIZED: Millstone", "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", "block.create.nozzle": "UNLOCALIZED: Nozzle", "block.create.oak_window": "UNLOCALIZED: Oak Window", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Koper klompje", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Deeg", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", @@ -636,6 +637,10 @@ "item.create.linked_controller": "UNLOCALIZED: Linked Controller", "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", "item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", "item.create.potato_cannon": "UNLOCALIZED: Potato Cannon", "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", 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 be600d683..61a9f4c2c 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: 12", + "_": "Missing Localizations: 19", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Młynek", "block.create.minecart_anchor": "Kotwica wagonikowa", "block.create.mysterious_cuckoo_clock": "Zegar z kukułką", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Lampa cyfrowa", "block.create.nozzle": "Dysza", "block.create.oak_window": "Dębowe okno", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Rozżarzona mąka", "item.create.copper_backtank": "Miedziany zbiornik w plecaku", "item.create.copper_backtank_placeable": "Stacjonarny miedziany zbiornik w plecaku", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Bryłka miedzi", "item.create.copper_sheet": "Arkusz miedzi", "item.create.crafter_slot_cover": "Przykrywka na slot stołu rzemieślniczego", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Rozkruszona ruda cyny", "item.create.crushed_uranium_ore": "Rozkruszona ruda uranu", "item.create.crushed_zinc_ore": "Rozkruszona ruda cynku", - "item.create.diving_boots": "Buty do nurkowania", - "item.create.diving_helmet": "Hełm do nurkowania", "item.create.dough": "Ciasto", "item.create.electron_tube": "Lampa elektronowa", "item.create.empty_blaze_burner": "Pusty płomienny palnik", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Zdalny sterownik", "item.create.minecart_contraption": "Maszyna w wagoniku", "item.create.minecart_coupling": "Łącznik wagoników", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Wypolerowany różowy kwarc", "item.create.potato_cannon": "Armata na ziemniaki", "item.create.powdered_obsidian": "Sproszkowany obsydian", 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 4be946869..16f4e6c88 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: 1331", + "_": "Missing Localizations: 1338", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Pedra de Moer", "block.create.minecart_anchor": "Ancóra de carrinho de Mina", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Bocal", "block.create.oak_window": "janela de carvalho", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Farinha de Netherrack", "item.create.copper_backtank": "Tanque Traseiro de cobre", "item.create.copper_backtank_placeable": "Tanque de cobre traseiro colocável", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Chapa de Cobre", "item.create.crafter_slot_cover": "Cobertura do slot de fabricador", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Minério de Estanho Esmagado", "item.create.crushed_uranium_ore": "Urânio Esmagado", "item.create.crushed_zinc_ore": "Minério de Zinco Esmagado", - "item.create.diving_boots": "Botas de Mergulhador", - "item.create.diving_helmet": "Capacete de Mergulhador", "item.create.dough": "Massa de pão", "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Controle conectado", "item.create.minecart_contraption": "Engenhoca de Carrinho de Mina", "item.create.minecart_coupling": "Acoplamento de Carrinho de Mina", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Quartzo Rosa Polido", "item.create.potato_cannon": "Canhão de Batata", "item.create.powdered_obsidian": "Pó de Obsidiana", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index a62924d83..13a80bf3e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2196", + "_": "Missing Localizations: 2203", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Pedra de Moer", "block.create.minecart_anchor": "Ancóra de carrinho de Mina", "block.create.mysterious_cuckoo_clock": "Relógio cuckoo", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Tubo Nixie", "block.create.nozzle": "Bocal", "block.create.oak_window": "UNLOCALIZED: Oak Window", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Farinha de Netherrack", "item.create.copper_backtank": "Tanque Traseiro", "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Chapa de Cobre", "item.create.crafter_slot_cover": "Cobertura do slot de fabricador", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Minério de Estanho Esmagado", "item.create.crushed_uranium_ore": "Urânio Esmagado", "item.create.crushed_zinc_ore": "Minério de Zinco Esmagado", - "item.create.diving_boots": "Botas de Mergulhador", - "item.create.diving_helmet": "Capacete de Mergulhador", "item.create.dough": "Massa de pão", "item.create.electron_tube": "Tubo de Elétron", "item.create.empty_blaze_burner": "Queimador de Blaze Vazio", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Controle conectado", "item.create.minecart_contraption": "Engenhoca de Carrino de Mina", "item.create.minecart_coupling": "Acoplamento de Carrinho de Mina", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Quartzo Rosa Polido", "item.create.potato_cannon": "Canhão de Batata", "item.create.powdered_obsidian": "Pó de Obsidiana", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 25aa3227a..b3dcde1d0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 655", + "_": "Missing Localizations: 662", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Moară De Piatră", "block.create.minecart_anchor": "Ancoră De Vagonet", "block.create.mysterious_cuckoo_clock": "Ceas Cucu", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Tub Nixie", "block.create.nozzle": "Plasă", "block.create.oak_window": "Sticlă De Stejar", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Făină De Zgură", "item.create.copper_backtank": "Backtank De Cupru", "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Pepită De Cupru", "item.create.copper_sheet": "Placă De Cupru", "item.create.crafter_slot_cover": "Capac De Meșter Mecanic", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Minereu De Staniu Zdrobit", "item.create.crushed_uranium_ore": "Minereu De Uraniu Zdrobit", "item.create.crushed_zinc_ore": "Minereu De Zinc Zdrobit", - "item.create.diving_boots": "Bocanci De Scufundare", - "item.create.diving_helmet": "Cască De Scufundare", "item.create.dough": "Aluat", "item.create.electron_tube": "Tub De Electroni", "item.create.empty_blaze_burner": "Arzător De Dogoreală Gol", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Controlor Legat", "item.create.minecart_contraption": "Invenție De Vagonet", "item.create.minecart_coupling": "Cuplare De Vagonet", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Cuarț Roz Șlefuit", "item.create.potato_cannon": "Tun De Cartofi", "item.create.powdered_obsidian": "Praf De Obsidian", 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 28d2f0826..766fae846 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: 0", + "_": "Missing Localizations: 7", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Жёрнов", "block.create.minecart_anchor": "Вагонеточная опора", "block.create.mysterious_cuckoo_clock": "Странные часы с кукушкой", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Газоразрядный индикатор", "block.create.nozzle": "Форсунка", "block.create.oak_window": "Дубовое окно", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Незераковая пыль", "item.create.copper_backtank": "Медный баллон", "item.create.copper_backtank_placeable": "Размещаемый медный баллон", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Кусочек меди", "item.create.copper_sheet": "Медный лист", "item.create.crafter_slot_cover": "Заглушка на слот крафтера", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Дроблёная оловянная руда", "item.create.crushed_uranium_ore": "Дроблёная урановая руда", "item.create.crushed_zinc_ore": "Дроблёная цинковая руда", - "item.create.diving_boots": "Ботинки для дайвинга", - "item.create.diving_helmet": "Шлем для дайвинга", "item.create.dough": "Тесто", "item.create.electron_tube": "Электронная лампа", "item.create.empty_blaze_burner": "Пустая горелка всполоха", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Контроллер связей", "item.create.minecart_contraption": "Вагонеточная штуковина", "item.create.minecart_coupling": "Соединитель вагонеток", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Полированный розовый кварц", "item.create.potato_cannon": "Картофельная пушка", "item.create.powdered_obsidian": "Порошкообразный обсидиан", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index 94152cfd6..16804a7a7 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 986", + "_": "Missing Localizations: 993", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "Жорна", "block.create.minecart_anchor": "Якір вагонетки", "block.create.mysterious_cuckoo_clock": "Годинник із зозулею", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "Ніксі-труба", "block.create.nozzle": "Насадка", "block.create.oak_window": "Скло з дубом", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "Борошно з незераку", "item.create.copper_backtank": "Мідний балон", "item.create.copper_backtank_placeable": "UNLOCALIZED: Copper Backtank Placeable", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "Мідний самородок", "item.create.copper_sheet": "Мідний лист", "item.create.crafter_slot_cover": "Кришка слота крафта", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "Подрібнена олов'яна руда", "item.create.crushed_uranium_ore": "Подрібнена уранова руда", "item.create.crushed_zinc_ore": "Подрібнена цинкова руда", - "item.create.diving_boots": "Чоботи для дайвінгу", - "item.create.diving_helmet": "Шолом для дайвінгу", "item.create.dough": "Тісто", "item.create.electron_tube": "Електронна лампа", "item.create.empty_blaze_burner": "Пустий пальник блейза", @@ -636,6 +637,10 @@ "item.create.linked_controller": "Підключений контролер", "item.create.minecart_contraption": "Вагонеточна штуковина", "item.create.minecart_coupling": "З'єднувач вагонеток", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "Полірований рожевий кварц", "item.create.potato_cannon": "Картопляна гармата", "item.create.powdered_obsidian": "Обсідіановий порошок", 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 f4be7ff19..c00e6e6a7 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: 0", + "_": "Missing Localizations: 7", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "石磨", "block.create.minecart_anchor": "矿车锚", "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "辉光管", "block.create.nozzle": "分散网", "block.create.oak_window": "橡木窗户", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "余烬面粉", "item.create.copper_backtank": "铜背罐", "item.create.copper_backtank_placeable": "可放置的铜背罐", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "铜粒", "item.create.copper_sheet": "铜板", "item.create.crafter_slot_cover": "合成槽盖板", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "粉碎锡矿石", "item.create.crushed_uranium_ore": "粉碎铀矿石", "item.create.crushed_zinc_ore": "粉碎锌矿石", - "item.create.diving_boots": "潜水靴", - "item.create.diving_helmet": "潜水头盔", "item.create.dough": "面团", "item.create.electron_tube": "电子管", "item.create.empty_blaze_burner": "空的烈焰人燃烧室", @@ -636,6 +637,10 @@ "item.create.linked_controller": "无线红石遥控器", "item.create.minecart_contraption": "装配过的矿车", "item.create.minecart_coupling": "矿车连轴器", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "磨制玫瑰石英", "item.create.potato_cannon": "土豆加农炮", "item.create.powdered_obsidian": "黑曜石粉末", 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 1af6b480c..0724a1be1 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: 8", + "_": "Missing Localizations: 15", "_": "->------------------------] Game Elements [------------------------<-", @@ -307,6 +307,7 @@ "block.create.millstone": "石磨", "block.create.minecart_anchor": "礦車錨", "block.create.mysterious_cuckoo_clock": "神秘布穀鳥鐘", + "block.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", "block.create.nixie_tube": "真空管顯示器", "block.create.nozzle": "鼓風機噴嘴", "block.create.oak_window": "橡木窗戶", @@ -597,6 +598,8 @@ "item.create.cinder_flour": "地獄麵粉", "item.create.copper_backtank": "銅製後背包", "item.create.copper_backtank_placeable": "可放置的銅製後背包", + "item.create.copper_diving_boots": "UNLOCALIZED: Copper Diving Boots", + "item.create.copper_diving_helmet": "UNLOCALIZED: Copper Diving Helmet", "item.create.copper_nugget": "銅粒", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "合成器蓋板", @@ -615,8 +618,6 @@ "item.create.crushed_tin_ore": "碎狀錫礦石", "item.create.crushed_uranium_ore": "碎狀鈾礦石", "item.create.crushed_zinc_ore": "碎狀鋅礦石", - "item.create.diving_boots": "潛水鞋", - "item.create.diving_helmet": "潛水頭盔", "item.create.dough": "麵團", "item.create.electron_tube": "真空管", "item.create.empty_blaze_burner": "空的烈焰使者動力爐", @@ -636,6 +637,10 @@ "item.create.linked_controller": "遙控器", "item.create.minecart_contraption": "裝修過的礦車", "item.create.minecart_coupling": "礦車連結器", + "item.create.netherite_backtank": "UNLOCALIZED: Netherite Backtank", + "item.create.netherite_backtank_placeable": "UNLOCALIZED: Netherite Backtank Placeable", + "item.create.netherite_diving_boots": "UNLOCALIZED: Netherite Diving Boots", + "item.create.netherite_diving_helmet": "UNLOCALIZED: Netherite Diving Helmet", "item.create.polished_rose_quartz": "拋光玫瑰石英", "item.create.potato_cannon": "馬鈴薯大砲", "item.create.powdered_obsidian": "黑曜石粉末", diff --git a/src/generated/resources/assets/create/models/item/diving_boots.json b/src/generated/resources/assets/create/models/item/copper_diving_boots.json similarity index 56% rename from src/generated/resources/assets/create/models/item/diving_boots.json rename to src/generated/resources/assets/create/models/item/copper_diving_boots.json index 88c9dccb5..fab121e04 100644 --- a/src/generated/resources/assets/create/models/item/diving_boots.json +++ b/src/generated/resources/assets/create/models/item/copper_diving_boots.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "create:item/diving_boots" + "layer0": "create:item/copper_diving_boots" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diving_helmet.json b/src/generated/resources/assets/create/models/item/copper_diving_helmet.json similarity index 56% rename from src/generated/resources/assets/create/models/item/diving_helmet.json rename to src/generated/resources/assets/create/models/item/copper_diving_helmet.json index f287c2ca8..e21e9b4ee 100644 --- a/src/generated/resources/assets/create/models/item/diving_helmet.json +++ b/src/generated/resources/assets/create/models/item/copper_diving_helmet.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "create:item/diving_helmet" + "layer0": "create:item/copper_diving_helmet" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/netherite_backtank.json b/src/generated/resources/assets/create/models/item/netherite_backtank.json new file mode 100644 index 000000000..267a98e10 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/netherite_backtank.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/netherite_backtank/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/netherite_backtank_placeable.json b/src/generated/resources/assets/create/models/item/netherite_backtank_placeable.json new file mode 100644 index 000000000..ff77c281b --- /dev/null +++ b/src/generated/resources/assets/create/models/item/netherite_backtank_placeable.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/barrier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/netherite_diving_boots.json b/src/generated/resources/assets/create/models/item/netherite_diving_boots.json new file mode 100644 index 000000000..ed1728d3f --- /dev/null +++ b/src/generated/resources/assets/create/models/item/netherite_diving_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "create:item/netherite_diving_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/netherite_diving_helmet.json b/src/generated/resources/assets/create/models/item/netherite_diving_helmet.json new file mode 100644 index 000000000..fde66a4b6 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/netherite_diving_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "create:item/netherite_diving_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/diving_suit.json b/src/generated/resources/data/create/advancements/diving_suit.json index 94db68db5..aec7ce96e 100644 --- a/src/generated/resources/data/create/advancements/diving_suit.json +++ b/src/generated/resources/data/create/advancements/diving_suit.json @@ -2,7 +2,7 @@ "parent": "create:backtank", "display": { "icon": { - "item": "create:diving_helmet", + "item": "create:copper_diving_helmet", "nbt": "{Damage:0}" }, "title": { diff --git a/src/generated/resources/data/create/advancements/diving_suit_lava.json b/src/generated/resources/data/create/advancements/diving_suit_lava.json index 9f8b1630e..0c888be2c 100644 --- a/src/generated/resources/data/create/advancements/diving_suit_lava.json +++ b/src/generated/resources/data/create/advancements/diving_suit_lava.json @@ -2,7 +2,7 @@ "parent": "create:backtank", "display": { "icon": { - "item": "create:diving_helmet", + "item": "create:copper_diving_helmet", "nbt": "{Damage:0}" }, "title": { diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_boots.json similarity index 80% rename from src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json rename to src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_boots.json index d0d7f07e1..d2a401732 100644 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_boots.json @@ -2,7 +2,7 @@ "parent": "minecraft:recipes/root", "rewards": { "recipes": [ - "create:crafting/appliances/diving_boots" + "create:crafting/appliances/copper_diving_boots" ] }, "criteria": { @@ -21,7 +21,7 @@ "has_the_recipe": { "trigger": "minecraft:recipe_unlocked", "conditions": { - "recipe": "create:crafting/appliances/diving_boots" + "recipe": "create:crafting/appliances/copper_diving_boots" } } }, diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_helmet.json similarity index 80% rename from src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json rename to src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_helmet.json index 5491317c8..36cadac5d 100644 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_helmet.json @@ -2,7 +2,7 @@ "parent": "minecraft:recipes/root", "rewards": { "recipes": [ - "create:crafting/appliances/diving_helmet" + "create:crafting/appliances/copper_diving_helmet" ] }, "criteria": { @@ -21,7 +21,7 @@ "has_the_recipe": { "trigger": "minecraft:recipe_unlocked", "conditions": { - "recipe": "create:crafting/appliances/diving_helmet" + "recipe": "create:crafting/appliances/copper_diving_helmet" } } }, diff --git a/src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json b/src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json new file mode 100644 index 000000000..4418da818 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/netherite_backtank.json @@ -0,0 +1,48 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Air", + "target": "Air", + "op": "replace" + } + ] + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Enchantments", + "target": "Enchantments", + "op": "replace" + } + ] + } + ], + "name": "create:netherite_backtank" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json b/src/generated/resources/data/create/recipes/crafting/appliances/copper_diving_boots.json similarity index 85% rename from src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json rename to src/generated/resources/data/create/recipes/crafting/appliances/copper_diving_boots.json index 8ea573d10..76059a797 100644 --- a/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json +++ b/src/generated/resources/data/create/recipes/crafting/appliances/copper_diving_boots.json @@ -14,6 +14,6 @@ } }, "result": { - "item": "create:diving_boots" + "item": "create:copper_diving_boots" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json b/src/generated/resources/data/create/recipes/crafting/appliances/copper_diving_helmet.json similarity index 83% rename from src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json rename to src/generated/resources/data/create/recipes/crafting/appliances/copper_diving_helmet.json index c2434ae43..68e63efc2 100644 --- a/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json +++ b/src/generated/resources/data/create/recipes/crafting/appliances/copper_diving_helmet.json @@ -13,6 +13,6 @@ } }, "result": { - "item": "create:diving_helmet" + "item": "create:copper_diving_helmet" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/pressurized_air_sources.json b/src/generated/resources/data/create/tags/items/pressurized_air_sources.json index 9c5cb97a4..3b3bbadd0 100644 --- a/src/generated/resources/data/create/tags/items/pressurized_air_sources.json +++ b/src/generated/resources/data/create/tags/items/pressurized_air_sources.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "create:copper_backtank" + "create:copper_backtank", + "create:netherite_backtank" ] } \ No newline at end of file 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 3394d19b5..2280ba112 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -157,6 +157,7 @@ "create:analog_lever", "create:placard", "create:copper_backtank", + "create:netherite_backtank", "create:peculiar_bell", "create:haunted_bell", "create:zinc_ore", diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index 88443bdc2..33819238d 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -102,6 +102,9 @@ public class AllBlockPartials { COPPER_BACKTANK_SHAFT = block("copper_backtank/block_shaft_input"), COPPER_BACKTANK_COGS = block("copper_backtank/block_cogs"), + NETHERITE_BACKTANK_SHAFT = block("netherite_backtank/block_shaft_input"), + NETHERITE_BACKTANK_COGS = block("netherite_backtank/block_cogs"), + TRACK_SEGMENT_LEFT = block("track/segment_left"), TRACK_SEGMENT_RIGHT = block("track/segment_right"), TRACK_TIE = block("track/tie"), GIRDER_SEGMENT_TOP = block("metal_girder/segment_top"), GIRDER_SEGMENT_MIDDLE = block("metal_girder/segment_middle"), diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 1fd9d6434..43b7eb1c1 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -130,7 +130,7 @@ import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; -import com.simibubi.create.content.curiosities.armor.CopperBacktankBlock; +import com.simibubi.create.content.curiosities.armor.BacktankBlock; import com.simibubi.create.content.curiosities.bell.HauntedBellBlock; import com.simibubi.create.content.curiosities.bell.HauntedBellMovementBehaviour; import com.simibubi.create.content.curiosities.bell.PeculiarBellBlock; @@ -1892,26 +1892,16 @@ public class AllBlocks { REGISTRATE.startSection(AllSections.CURIOSITIES); } - public static final BlockEntry COPPER_BACKTANK = - REGISTRATE.block("copper_backtank", CopperBacktankBlock::new) + public static final BlockEntry COPPER_BACKTANK = + REGISTRATE.block("copper_backtank", BacktankBlock::new) .initialProperties(SharedProperties::copperMetal) - .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) - .transform(BlockStressDefaults.setImpact(4.0)) - .loot((lt, block) -> { - Builder builder = LootTable.lootTable(); - LootItemCondition.Builder survivesExplosion = ExplosionCondition.survivesExplosion(); - lt.add(block, builder.withPool(LootPool.lootPool() - .when(survivesExplosion) - .setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(AllItems.COPPER_BACKTANK.get()) - .apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY)) - .apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY) - .copy("Air", "Air")) - .apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY) - .copy("Enchantments", "Enchantments"))))); - }) + .transform(BuilderTransformers.backtank(AllItems.COPPER_BACKTANK::get)) + .register(); + + public static final BlockEntry NETHERITE_BACKTANK = + REGISTRATE.block("netherite_backtank", BacktankBlock::new) + .initialProperties(SharedProperties::netheriteMetal) + .transform(BuilderTransformers.backtank(AllItems.NETHERITE_BACKTANK::get)) .register(); public static final BlockEntry PECULIAR_BELL = diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index ad474e17c..347e969b2 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -38,9 +38,9 @@ import com.simibubi.create.content.curiosities.ExperienceNuggetItem; import com.simibubi.create.content.curiosities.RefinedRadianceItem; import com.simibubi.create.content.curiosities.ShadowSteelItem; import com.simibubi.create.content.curiosities.TreeFertilizerItem; -import com.simibubi.create.content.curiosities.armor.CopperArmorItem; -import com.simibubi.create.content.curiosities.armor.CopperBacktankItem; -import com.simibubi.create.content.curiosities.armor.CopperBacktankItem.CopperBacktankBlockItem; +import com.simibubi.create.content.curiosities.armor.AllArmorMaterials; +import com.simibubi.create.content.curiosities.armor.BacktankItem; +import com.simibubi.create.content.curiosities.armor.BacktankItem.BacktankBlockItem; import com.simibubi.create.content.curiosities.armor.DivingBootsItem; import com.simibubi.create.content.curiosities.armor.DivingHelmetItem; import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem; @@ -65,6 +65,7 @@ import com.tterrag.registrate.util.entry.ItemEntry; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.ArmorMaterials; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; import net.minecraftforge.common.Tags; @@ -239,22 +240,44 @@ public class AllItems { // wrapped by COPPER_BACKTANK for block placement uses. // must be registered as of 1.18.2 - public static final ItemEntry COPPER_BACKTANK_PLACEABLE = REGISTRATE - .item("copper_backtank_placeable", p -> new CopperBacktankBlockItem(AllBlocks.COPPER_BACKTANK.get(), p)) + public static final ItemEntry COPPER_BACKTANK_PLACEABLE = REGISTRATE + .item("copper_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.COPPER_BACKTANK.get(), p)) .model((c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) .register(); - public static final ItemEntry + // wrapped by NETHERITE_BACKTANK for block placement uses. + // must be registered as of 1.18.2 + public static final ItemEntry NETHERITE_BACKTANK_PLACEABLE = REGISTRATE + .item("netherite_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.NETHERITE_BACKTANK.get(), p)) + .model((c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) + .register(); - COPPER_BACKTANK = REGISTRATE.item("copper_backtank", p -> new CopperBacktankItem(p, COPPER_BACKTANK_PLACEABLE)) - .model(AssetLookup.customGenericItemModel("_", "item")) - .tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) - .register(), + public static final ItemEntry - DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new) + COPPER_BACKTANK = REGISTRATE.item("copper_backtank", p -> new BacktankItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"), COPPER_BACKTANK_PLACEABLE)) + .model(AssetLookup.customGenericItemModel("_", "item")) + .tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) .register(), - DIVING_BOOTS = REGISTRATE.item("diving_boots", DivingBootsItem::new) + NETHERITE_BACKTANK = REGISTRATE.item("netherite_backtank", p -> new BacktankItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"), NETHERITE_BACKTANK_PLACEABLE)) + .model(AssetLookup.customGenericItemModel("_", "item")) + .tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) + .register(); + + public static final ItemEntry + + COPPER_DIVING_HELMET = REGISTRATE.item("copper_diving_helmet", p -> new DivingHelmetItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"))) + .register(), + + NETHERITE_DIVING_HELMET = REGISTRATE.item("netherite_diving_helmet", p -> new DivingHelmetItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) + .register(); + + public static final ItemEntry + + COPPER_DIVING_BOOTS = REGISTRATE.item("copper_diving_boots", p -> new DivingBootsItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"))) + .register(), + + NETHERITE_DIVING_BOOTS = REGISTRATE.item("netherite_diving_boots", p -> new DivingBootsItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) .register(); public static final ItemEntry SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new) diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 3647ad732..bf29c1b89 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -127,9 +127,9 @@ import com.simibubi.create.content.contraptions.relays.gearbox.GearboxInstance; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxRenderer; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxTileEntity; import com.simibubi.create.content.contraptions.relays.gearbox.GearshiftTileEntity; -import com.simibubi.create.content.curiosities.armor.CopperBacktankInstance; -import com.simibubi.create.content.curiosities.armor.CopperBacktankRenderer; -import com.simibubi.create.content.curiosities.armor.CopperBacktankTileEntity; +import com.simibubi.create.content.curiosities.armor.BacktankInstance; +import com.simibubi.create.content.curiosities.armor.BacktankRenderer; +import com.simibubi.create.content.curiosities.armor.BacktankTileEntity; import com.simibubi.create.content.curiosities.bell.BellRenderer; import com.simibubi.create.content.curiosities.bell.HauntedBellTileEntity; import com.simibubi.create.content.curiosities.bell.PeculiarBellTileEntity; @@ -748,11 +748,11 @@ public class AllTileEntities { .register(); // Curiosities - public static final BlockEntityEntry COPPER_BACKTANK = Create.registrate() - .tileEntity("copper_backtank", CopperBacktankTileEntity::new) - .instance(() -> CopperBacktankInstance::new) - .validBlocks(AllBlocks.COPPER_BACKTANK) - .renderer(() -> CopperBacktankRenderer::new) + public static final BlockEntityEntry BACKTANK = Create.registrate() + .tileEntity("backtank", BacktankTileEntity::new) + .instance(() -> BacktankInstance::new) + .validBlocks(AllBlocks.COPPER_BACKTANK, AllBlocks.NETHERITE_BACKTANK) + .renderer(() -> BacktankRenderer::new) .register(); public static final BlockEntityEntry PECULIAR_BELL = Create.registrate() diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index d20076543..cb68f1a4a 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren import com.simibubi.create.content.contraptions.components.structureMovement.render.SBBContraptionManager; import com.simibubi.create.content.contraptions.goggles.GoggleOverlayRenderer; import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; -import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; +import com.simibubi.create.content.curiosities.armor.RemainingAirOverlay; import com.simibubi.create.content.curiosities.bell.SoulPulseEffectHandler; import com.simibubi.create.content.curiosities.toolbox.ToolboxHandlerClient; import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer; @@ -97,7 +97,7 @@ public class CreateClient { private static void registerOverlays() { // Register overlays in reverse order - OverlayRegistry.registerOverlayAbove(ForgeIngameGui.AIR_LEVEL_ELEMENT, "Create's Remaining Air", CopperBacktankArmorLayer.REMAINING_AIR_OVERLAY); + OverlayRegistry.registerOverlayAbove(ForgeIngameGui.AIR_LEVEL_ELEMENT, "Create's Remaining Air", RemainingAirOverlay.INSTANCE); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.EXPERIENCE_BAR_ELEMENT, "Create's Train Driver HUD", TrainHUD.OVERLAY); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Goggle Information", GoggleOverlayRenderer.OVERLAY); OverlayRegistry.registerOverlayAbove(ForgeIngameGui.HOTBAR_ELEMENT, "Create's Blueprints", BlueprintOverlayRenderer.OVERLAY); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index 8581b69ee..747699d80 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -20,6 +20,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltSlicer.Feedback; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo; import com.simibubi.create.content.contraptions.relays.belt.transport.BeltTunnelInteractionHandler; +import com.simibubi.create.content.curiosities.armor.DivingBootsItem; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement; @@ -191,8 +192,7 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEvent(), 0.0F, 0.0F, + COPPER(Create.asResource("copper").toString(), 7, new int[] { 1, 3, 4, 2 }, 25, () -> AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEvent(), 0.0F, 0.0F, () -> Ingredient.of(Items.COPPER_INGOT)) ; diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankArmorLayer.java similarity index 53% rename from src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java rename to src/main/java/com/simibubi/create/content/curiosities/armor/BacktankArmorLayer.java index 67dffa2a8..6cec2efa5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankArmorLayer.java @@ -1,21 +1,13 @@ package com.simibubi.create.content.curiosities.armor; import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.gui.element.GuiGameElement; import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.render.SuperByteBuffer; import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Color; -import com.simibubi.create.foundation.utility.Components; -import net.minecraft.client.Minecraft; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; @@ -25,22 +17,13 @@ import net.minecraft.client.renderer.entity.LivingEntityRenderer; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.entity.layers.RenderLayer; import net.minecraft.core.Direction; -import net.minecraft.network.chat.Component; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.StringUtil; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.gui.ForgeIngameGui; -import net.minecraftforge.client.gui.IIngameOverlay; -public class CopperBacktankArmorLayer> extends RenderLayer { - - public static final IIngameOverlay REMAINING_AIR_OVERLAY = CopperBacktankArmorLayer::renderRemainingAirOverlay; - - public CopperBacktankArmorLayer(RenderLayerParent renderer) { +public class BacktankArmorLayer> extends RenderLayer { + public BacktankArmorLayer(RenderLayerParent renderer) { super(renderer); } @@ -49,8 +32,9 @@ public class CopperBacktankArmorLayer model = (HumanoidModel) entityModel; RenderType renderType = Sheets.cutoutBlockSheet(); - BlockState renderedState = AllBlocks.COPPER_BACKTANK.getDefaultState() - .setValue(CopperBacktankBlock.HORIZONTAL_FACING, Direction.SOUTH); + BlockState renderedState = item.getBlock().defaultBlockState() + .setValue(BacktankBlock.HORIZONTAL_FACING, Direction.SOUTH); SuperByteBuffer backtank = CachedBufferer.block(renderedState); - SuperByteBuffer cogs = CachedBufferer.partial(AllBlockPartials.COPPER_BACKTANK_COGS, renderedState); + SuperByteBuffer cogs = CachedBufferer.partial(BacktankRenderer.getCogsModel(renderedState), renderedState); ms.pushPose(); @@ -102,44 +86,7 @@ public class CopperBacktankArmorLayer livingRenderer = (LivingEntityRenderer) entityRenderer; if (!(livingRenderer.getModel() instanceof HumanoidModel)) return; - CopperBacktankArmorLayer layer = new CopperBacktankArmorLayer<>(livingRenderer); - livingRenderer.addLayer((CopperBacktankArmorLayer) layer); + BacktankArmorLayer layer = new BacktankArmorLayer<>(livingRenderer); + livingRenderer.addLayer((BacktankArmorLayer) layer); } - - public static void renderRemainingAirOverlay(ForgeIngameGui gui, PoseStack poseStack, float partialTicks, int width, int height) { - Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) - return; - - LocalPlayer player = mc.player; - if (player == null) - return; - if (player.isCreative()) - return; - if (!player.getPersistentData() - .contains("VisualBacktankAir")) - return; - if (!player.isEyeInFluid(FluidTags.WATER)) - return; - - int timeLeft = player.getPersistentData() - .getInt("VisualBacktankAir"); - - poseStack.pushPose(); - - poseStack.translate(width / 2 + 90, height - 53, 0); - - Component text = Components.literal(StringUtil.formatTickDuration(timeLeft * 20)); - GuiGameElement.of(AllItems.COPPER_BACKTANK.asStack()) - .at(0, 0) - .render(poseStack); - int color = 0xFF_FFFFFF; - if (timeLeft < 60 && timeLeft % 2 == 0) { - color = Color.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f)); - } - Minecraft.getInstance().font.drawShadow(poseStack, text, 16, 5, color); - - poseStack.popPose(); - } - } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankBlock.java similarity index 79% rename from src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java rename to src/main/java/com/simibubi/create/content/curiosities/armor/BacktankBlock.java index a83030faa..fa17a1b18 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankBlock.java @@ -3,7 +3,6 @@ package com.simibubi.create.content.curiosities.armor; import java.util.Optional; import com.simibubi.create.AllEnchantments; -import com.simibubi.create.AllItems; import com.simibubi.create.AllShapes; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; @@ -46,12 +45,12 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.common.util.FakePlayer; -public class CopperBacktankBlock extends HorizontalKineticBlock - implements ITE, SimpleWaterloggedBlock { +public class BacktankBlock extends HorizontalKineticBlock + implements ITE, SimpleWaterloggedBlock { - public CopperBacktankBlock(Properties properties) { + public BacktankBlock(Properties properties) { super(properties); - registerDefaultState(super.defaultBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); + registerDefaultState(defaultBlockState().setValue(BlockStateProperties.WATERLOGGED, false)); } @Override @@ -73,10 +72,10 @@ public class CopperBacktankBlock extends HorizontalKineticBlock public boolean hasAnalogOutputSignal(BlockState p_149740_1_) { return true; } - + @Override - public int getAnalogOutputSignal(BlockState p_180641_1_, Level world, BlockPos pos) { - return getTileEntityOptional(world, pos).map(CopperBacktankTileEntity::getComparatorOutput) + public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { + return getTileEntityOptional(world, pos).map(BacktankTileEntity::getComparatorOutput) .orElse(0); } @@ -90,10 +89,10 @@ public class CopperBacktankBlock extends HorizontalKineticBlock @Override public BlockState getStateForPlacement(BlockPlaceContext context) { - FluidState ifluidstate = context.getLevel() + FluidState fluidState = context.getLevel() .getFluidState(context.getClickedPos()); return super.getStateForPlacement(context).setValue(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(ifluidstate.getType() == Fluids.WATER)); + fluidState.getType() == Fluids.WATER); } @Override @@ -125,8 +124,8 @@ public class CopperBacktankBlock extends HorizontalKineticBlock } @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand p_225533_5_, - BlockHitResult p_225533_6_) { + public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + BlockHitResult hit) { if (player == null) return InteractionResult.PASS; if (player instanceof FakePlayer) @@ -148,16 +147,16 @@ public class CopperBacktankBlock extends HorizontalKineticBlock } @Override - public ItemStack getCloneItemStack(BlockGetter p_185473_1_, BlockPos p_185473_2_, BlockState p_185473_3_) { - ItemStack item = AllItems.COPPER_BACKTANK.asStack(); - Optional tileEntityOptional = getTileEntityOptional(p_185473_1_, p_185473_2_); + public ItemStack getCloneItemStack(BlockGetter blockGetter, BlockPos pos, BlockState state) { + ItemStack item = super.getCloneItemStack(blockGetter, pos, state); + Optional tileEntityOptional = getTileEntityOptional(blockGetter, pos); - int air = tileEntityOptional.map(CopperBacktankTileEntity::getAirLevel) + int air = tileEntityOptional.map(BacktankTileEntity::getAirLevel) .orElse(0); CompoundTag tag = item.getOrCreateTag(); tag.putInt("Air", air); - ListTag enchants = tileEntityOptional.map(CopperBacktankTileEntity::getEnchantmentTag) + ListTag enchants = tileEntityOptional.map(BacktankTileEntity::getEnchantmentTag) .orElse(new ListTag()); if (!enchants.isEmpty()) { ListTag enchantmentTagList = item.getEnchantmentTags(); @@ -165,7 +164,7 @@ public class CopperBacktankBlock extends HorizontalKineticBlock tag.put("Enchantments", enchantmentTagList); } - Component customName = tileEntityOptional.map(CopperBacktankTileEntity::getCustomName) + Component customName = tileEntityOptional.map(BacktankTileEntity::getCustomName) .orElse(null); if (customName != null) item.setHoverName(customName); @@ -179,13 +178,13 @@ public class CopperBacktankBlock extends HorizontalKineticBlock } @Override - public Class getTileEntityClass() { - return CopperBacktankTileEntity.class; + public Class getTileEntityClass() { + return BacktankTileEntity.class; } @Override - public BlockEntityType getTileEntityType() { - return AllTileEntities.COPPER_BACKTANK.get(); + public BlockEntityType getTileEntityType() { + return AllTileEntities.BACKTANK.get(); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankInstance.java similarity index 61% rename from src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java rename to src/main/java/com/simibubi/create/content/curiosities/armor/BacktankInstance.java index 26d1b9139..ccb5d1c69 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankInstance.java @@ -2,20 +2,19 @@ package com.simibubi.create.content.curiosities.armor; import com.jozufozu.flywheel.api.Instancer; import com.jozufozu.flywheel.api.MaterialManager; -import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; import com.simibubi.create.content.contraptions.base.flwdata.RotatingData; -public class CopperBacktankInstance extends SingleRotatingInstance { +public class BacktankInstance extends SingleRotatingInstance { - public CopperBacktankInstance(MaterialManager modelManager, KineticTileEntity tile) { + public BacktankInstance(MaterialManager modelManager, KineticTileEntity tile) { super(modelManager, tile); } @Override protected Instancer getModel() { - return getRotatingMaterial().getModel(AllBlockPartials.COPPER_BACKTANK_SHAFT, blockState); + return getRotatingMaterial().getModel(BacktankRenderer.getShaftModel(blockState), blockState); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java new file mode 100644 index 000000000..ce63ccc04 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java @@ -0,0 +1,111 @@ +package com.simibubi.create.content.curiosities.armor; + +import java.util.function.Supplier; + +import org.jetbrains.annotations.Nullable; + +import com.simibubi.create.content.curiosities.armor.CapacityEnchantment.ICapacityEnchantable; + +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.block.Block; + +public class BacktankItem extends BaseArmorItem implements ICapacityEnchantable { + public static final EquipmentSlot SLOT = EquipmentSlot.CHEST; + public static final int BAR_COLOR = 0xEFEFEF; + + private final Supplier blockItem; + + public BacktankItem(ArmorMaterial material, Properties properties, ResourceLocation textureLoc, Supplier copperBacktankPlaceable) { + super(material, SLOT, properties, textureLoc); + this.blockItem = copperBacktankPlaceable; + } + + @Nullable + public static BacktankItem getWornBy(Entity entity) { + if (!(entity instanceof LivingEntity livingEntity)) { + return null; + } + if (!(livingEntity.getItemBySlot(SLOT).getItem() instanceof BacktankItem item)) { + return null; + } + return item; + } + + @Override + public InteractionResult useOn(UseOnContext ctx) { + return blockItem.get() + .useOn(ctx); + } + + @Override + public boolean canBeDepleted() { + return false; + } + + @Override + public boolean isEnchantable(ItemStack p_77616_1_) { + return true; + } + + @Override + public void fillItemCategory(CreativeModeTab tab, NonNullList items) { + if (!allowdedIn(tab)) + return; + + ItemStack stack = new ItemStack(this); + CompoundTag nbt = new CompoundTag(); + nbt.putInt("Air", BacktankUtil.maxAirWithoutEnchants()); + stack.setTag(nbt); + items.add(stack); + } + + @Override + public boolean isBarVisible(ItemStack stack) { + return true; + } + + @Override + public int getBarWidth(ItemStack stack) { + return Math.round(13.0F * Mth.clamp(getRemainingAir(stack) / ((float) BacktankUtil.maxAir(stack)), 0, 1)); + } + + @Override + public int getBarColor(ItemStack stack) { + return BAR_COLOR; + } + + public Block getBlock() { + return blockItem.get().getBlock(); + } + + public static int getRemainingAir(ItemStack stack) { + CompoundTag orCreateTag = stack.getOrCreateTag(); + return orCreateTag.getInt("Air"); + } + + public static class BacktankBlockItem extends BlockItem { + public BacktankBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public void fillItemCategory(CreativeModeTab group, NonNullList items) {} + + @Override + public String getDescriptionId() { + return this.getOrCreateDescriptionId(); + } + } +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankRenderer.java similarity index 65% rename from src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java rename to src/main/java/com/simibubi/create/content/curiosities/armor/BacktankRenderer.java index fc7b1d87a..674e16691 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankRenderer.java @@ -1,7 +1,9 @@ package com.simibubi.create.content.curiosities.armor; +import com.jozufozu.flywheel.core.PartialModel; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.foundation.render.CachedBufferer; @@ -15,9 +17,8 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; -public class CopperBacktankRenderer extends KineticTileEntityRenderer { - - public CopperBacktankRenderer(BlockEntityRendererProvider.Context context) { +public class BacktankRenderer extends KineticTileEntityRenderer { + public BacktankRenderer(BlockEntityRendererProvider.Context context) { super(context); } @@ -27,9 +28,9 @@ public class CopperBacktankRenderer extends KineticTileEntityRenderer { super.renderSafe(te, partialTicks, ms, buffer, light, overlay); BlockState blockState = te.getBlockState(); - SuperByteBuffer cogs = CachedBufferer.partial(AllBlockPartials.COPPER_BACKTANK_COGS, blockState); + SuperByteBuffer cogs = CachedBufferer.partial(getCogsModel(blockState), blockState); cogs.centre() - .rotateY(180 + AngleHelper.horizontalAngle(blockState.getValue(CopperBacktankBlock.HORIZONTAL_FACING))) + .rotateY(180 + AngleHelper.horizontalAngle(blockState.getValue(BacktankBlock.HORIZONTAL_FACING))) .unCentre() .translate(0, 6.5f / 16, 11f / 16) .rotate(Direction.EAST, @@ -41,7 +42,20 @@ public class CopperBacktankRenderer extends KineticTileEntityRenderer { @Override protected SuperByteBuffer getRotatedModel(KineticTileEntity te, BlockState state) { - return CachedBufferer.partial(AllBlockPartials.COPPER_BACKTANK_SHAFT, state); + return CachedBufferer.partial(getShaftModel(state), state); } + public static PartialModel getCogsModel(BlockState state) { + if (AllBlocks.NETHERITE_BACKTANK.has(state)) { + return AllBlockPartials.NETHERITE_BACKTANK_COGS; + } + return AllBlockPartials.COPPER_BACKTANK_COGS; + } + + public static PartialModel getShaftModel(BlockState state) { + if (AllBlocks.NETHERITE_BACKTANK.has(state)) { + return AllBlockPartials.NETHERITE_BACKTANK_SHAFT; + } + return AllBlockPartials.COPPER_BACKTANK_SHAFT; + } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankTileEntity.java similarity index 86% rename from src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java rename to src/main/java/com/simibubi/create/content/curiosities/armor/BacktankTileEntity.java index da941de04..445a5e352 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankTileEntity.java @@ -2,9 +2,9 @@ package com.simibubi.create.content.curiosities.armor; import java.util.List; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.particle.AirParticleData; import com.simibubi.create.foundation.advancement.AllAdvancements; @@ -27,33 +27,43 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.Vec3; -public class CopperBacktankTileEntity extends KineticTileEntity implements Nameable { +public class BacktankTileEntity extends KineticTileEntity implements Nameable { public int airLevel; public int airLevelTimer; + private Component defaultName; private Component customName; private int capacityEnchantLevel; private ListTag enchantmentTag; - public CopperBacktankTileEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { - super(typeIn, pos, state); + public BacktankTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + defaultName = getDefaultName(state); enchantmentTag = new ListTag(); } - + + public static Component getDefaultName(BlockState state) { + if (AllBlocks.NETHERITE_BACKTANK.has(state)) { + AllItems.NETHERITE_BACKTANK.get().getDescription(); + } + + return AllItems.COPPER_BACKTANK.get().getDescription(); + } + @Override public void addBehaviours(List behaviours) { super.addBehaviours(behaviours); registerAwardables(behaviours, AllAdvancements.BACKTANK); } - + @Override public void onSpeedChanged(float previousSpeed) { super.onSpeedChanged(previousSpeed); if (getSpeed() != 0) award(AllAdvancements.BACKTANK); } - + @Override public void tick() { super.tick(); @@ -70,10 +80,10 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea return; } - int max = BackTankUtil.maxAir(capacityEnchantLevel); + int max = BacktankUtil.maxAir(capacityEnchantLevel); if (level.isClientSide) { Vec3 centerOf = VecHelper.getCenterOf(worldPosition); - Vec3 v = VecHelper.offsetRandomly(centerOf, Create.RANDOM, .65f); + Vec3 v = VecHelper.offsetRandomly(centerOf, level.random, .65f); Vec3 m = centerOf.subtract(v); if (airLevel != max) level.addParticle(new AirParticleData(1, .05f), v.x, v.y, v.z, m.x, m.y, m.z); @@ -95,7 +105,7 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea } public int getComparatorOutput() { - int max = BackTankUtil.maxAir(capacityEnchantLevel); + int max = BacktankUtil.maxAir(capacityEnchantLevel); return ComparatorUtil.fractionToRedstoneLevel(airLevel / (float) max); } @@ -120,7 +130,7 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea enchantmentTag = compound.getList("Enchantments", Tag.TAG_COMPOUND); if (compound.contains("CustomName", 8)) this.customName = Component.Serializer.fromJson(compound.getString("CustomName")); - if (prev != 0 && prev != airLevel && airLevel == BackTankUtil.maxAir(capacityEnchantLevel) && clientPacket) + if (prev != 0 && prev != airLevel && airLevel == BacktankUtil.maxAir(capacityEnchantLevel) && clientPacket) playFilledEffect(); } @@ -140,8 +150,7 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements Namea @Override public Component getName() { return this.customName != null ? this.customName - : AllItems.COPPER_BACKTANK.get() - .getDescription(); + : defaultName; } public int getAirLevel() { diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankUtil.java similarity index 99% rename from src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java rename to src/main/java/com/simibubi/create/content/curiosities/armor/BacktankUtil.java index ed12b472b..4be38619b 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BackTankUtil.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankUtil.java @@ -24,7 +24,7 @@ import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -public class BackTankUtil { +public class BacktankUtil { public static ItemStack get(LivingEntity entity) { for (ItemStack itemStack : entity.getArmorSlots()) diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BaseArmorItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BaseArmorItem.java new file mode 100644 index 000000000..de5eb487b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BaseArmorItem.java @@ -0,0 +1,24 @@ +package com.simibubi.create.content.curiosities.armor; + +import java.util.Locale; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; + +public class BaseArmorItem extends ArmorItem { + protected final ResourceLocation textureLoc; + + public BaseArmorItem(ArmorMaterial armorMaterial, EquipmentSlot slot, Properties properties, ResourceLocation textureLoc) { + super(armorMaterial, slot, properties.stacksTo(1)); + this.textureLoc = textureLoc; + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return String.format(Locale.ROOT, "%s:textures/models/armor/%s_layer_%d%s.png", textureLoc.getNamespace(), textureLoc.getPath(), slot == EquipmentSlot.LEGS ? 2 : 1, type == null ? "" : String.format(Locale.ROOT, "_%s", type)); + } +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CapacityEnchantment.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CapacityEnchantment.java index 531e1bf4e..3d894e219 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CapacityEnchantment.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CapacityEnchantment.java @@ -7,8 +7,8 @@ import net.minecraft.world.item.enchantment.EnchantmentCategory; public class CapacityEnchantment extends Enchantment { - public CapacityEnchantment(Rarity p_i46731_1_, EnchantmentCategory p_i46731_2_, EquipmentSlot[] p_i46731_3_) { - super(p_i46731_1_, p_i46731_2_, p_i46731_3_); + public CapacityEnchantment(Rarity rarity, EnchantmentCategory category, EquipmentSlot[] slots) { + super(rarity, category, slots); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java deleted file mode 100644 index 8b3220ad1..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.simibubi.create.Create; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ItemStack; - -public class CopperArmorItem extends ArmorItem { - - public static final ResourceLocation TEXTURE = Create.asResource("textures/models/armor/copper.png"); - private static final String TEXTURE_STRING = TEXTURE.toString(); - - public CopperArmorItem(EquipmentSlot p_i48534_2_, Properties p_i48534_3_) { - super(AllArmorMaterials.COPPER, p_i48534_2_, p_i48534_3_.stacksTo(1)); - } - - public boolean isWornBy(Entity entity) { - if (!(entity instanceof LivingEntity)) - return false; - LivingEntity livingEntity = (LivingEntity) entity; - return livingEntity.getItemBySlot(slot).getItem() == this; - } - - @Override - public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { - return TEXTURE_STRING; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java deleted file mode 100644 index eef4852c6..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.simibubi.create.content.curiosities.armor.CapacityEnchantment.ICapacityEnchantable; -import com.tterrag.registrate.util.entry.ItemEntry; - -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.util.Mth; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.block.Block; - -public class CopperBacktankItem extends CopperArmorItem implements ICapacityEnchantable { - - public static final int DURABILITY_BAR = 0xEFEFEF; - private ItemEntry blockItem; - - public CopperBacktankItem(Properties p_i48534_3_, ItemEntry copperBacktankPlaceable) { - super(EquipmentSlot.CHEST, p_i48534_3_); - this.blockItem = copperBacktankPlaceable; - } - - @Override - public InteractionResult useOn(UseOnContext p_195939_1_) { - return blockItem.get() - .useOn(p_195939_1_); - } - - @Override - public boolean canBeDepleted() { - return false; - } - - @Override - public boolean isEnchantable(ItemStack p_77616_1_) { - return true; - } - - @Override - public void fillItemCategory(CreativeModeTab p_150895_1_, NonNullList p_150895_2_) { - if (!allowdedIn(p_150895_1_)) - return; - - ItemStack stack = new ItemStack(this); - CompoundTag nbt = new CompoundTag(); - nbt.putInt("Air", BackTankUtil.maxAirWithoutEnchants()); - stack.setTag(nbt); - p_150895_2_.add(stack); - } - - @Override - public boolean isBarVisible(ItemStack stack) { - return true; - } - - @Override - public int getBarWidth(ItemStack stack) { - return Math.round(13.0F * Mth.clamp(getRemainingAir(stack) / ((float) BackTankUtil.maxAir(stack)), 0, 1)); - } - - @Override - public int getBarColor(ItemStack stack) { - return DURABILITY_BAR; - } - - public static int getRemainingAir(ItemStack stack) { - CompoundTag orCreateTag = stack.getOrCreateTag(); - return orCreateTag.getInt("Air"); - } - - public static class CopperBacktankBlockItem extends BlockItem { - - public CopperBacktankBlockItem(Block pBlock, Properties pProperties) { - super(pBlock, pProperties); - } - - @Override - public void fillItemCategory(CreativeModeTab pGroup, NonNullList pItems) {} - - @Override - public String getDescriptionId() { - return this.getOrCreateDescriptionId(); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java index 4f154a3fd..9b0abbed3 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java @@ -1,22 +1,32 @@ package com.simibubi.create.content.curiosities.armor; -import com.simibubi.create.AllItems; import com.simibubi.create.foundation.utility.NBTHelper; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @EventBusSubscriber -public class DivingBootsItem extends CopperArmorItem { +public class DivingBootsItem extends BaseArmorItem { + public static final EquipmentSlot SLOT = EquipmentSlot.FEET; - public DivingBootsItem(Properties p_i48534_3_) { - super(EquipmentSlot.FEET, p_i48534_3_); + public DivingBootsItem(ArmorMaterial material, Properties properties, ResourceLocation textureLoc) { + super(material, SLOT, properties, textureLoc); + } + + public static boolean isWornBy(Entity entity) { + if (!(entity instanceof LivingEntity livingEntity)) { + return false; + } + return livingEntity.getItemBySlot(SLOT).getItem() instanceof DivingBootsItem; } @SubscribeEvent @@ -44,8 +54,7 @@ public class DivingBootsItem extends CopperArmorItem { } protected static boolean affects(LivingEntity entity) { - if (!AllItems.DIVING_BOOTS.get() - .isWornBy(entity)) { + if (!isWornBy(entity)) { entity.getPersistentData() .remove("HeavyBoots"); return false; @@ -63,5 +72,4 @@ public class DivingBootsItem extends CopperArmorItem { } return true; } - } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java index bde2a4e65..5bfd951d0 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java @@ -1,15 +1,17 @@ package com.simibubi.create.content.curiosities.armor; -import com.simibubi.create.AllItems; import com.simibubi.create.foundation.advancement.AllAdvancements; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.FluidTags; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; @@ -17,10 +19,18 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @EventBusSubscriber -public class DivingHelmetItem extends CopperArmorItem { +public class DivingHelmetItem extends BaseArmorItem { + public static final EquipmentSlot SLOT = EquipmentSlot.HEAD; - public DivingHelmetItem(Properties p_i48534_3_) { - super(EquipmentSlot.HEAD, p_i48534_3_); + public DivingHelmetItem(ArmorMaterial material, Properties properties, ResourceLocation textureLoc) { + super(material, SLOT, properties, textureLoc); + } + + public static boolean isWornBy(Entity entity) { + if (!(entity instanceof LivingEntity livingEntity)) { + return false; + } + return livingEntity.getItemBySlot(SLOT).getItem() instanceof DivingHelmetItem; } @SubscribeEvent @@ -34,8 +44,7 @@ public class DivingHelmetItem extends CopperArmorItem { entity.getPersistentData() .remove("VisualBacktankAir"); - if (!AllItems.DIVING_HELMET.get() - .isWornBy(entity)) + if (!isWornBy(entity)) return; boolean lavaDiving = entity.isEyeInFluid(FluidTags.LAVA); @@ -44,10 +53,10 @@ public class DivingHelmetItem extends CopperArmorItem { if (entity instanceof Player && ((Player) entity).isCreative()) return; - ItemStack backtank = BackTankUtil.get(entity); + ItemStack backtank = BacktankUtil.get(entity); if (backtank.isEmpty()) return; - if (!BackTankUtil.hasAirRemaining(backtank)) + if (!BacktankUtil.hasAirRemaining(backtank)) return; if (lavaDiving) { @@ -61,7 +70,7 @@ public class DivingHelmetItem extends CopperArmorItem { if (world.isClientSide) entity.getPersistentData() - .putInt("VisualBacktankAir", (int) BackTankUtil.getAir(backtank)); + .putInt("VisualBacktankAir", (int) BacktankUtil.getAir(backtank)); if (!second) return; @@ -71,7 +80,6 @@ public class DivingHelmetItem extends CopperArmorItem { entity.setAirSupply(Math.min(entity.getMaxAirSupply(), entity.getAirSupply() + 10)); entity.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 30, 0, true, false, true)); - BackTankUtil.consumeAir(entity, backtank, 1); + BacktankUtil.consumeAir(entity, backtank, 1); } - } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java b/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java new file mode 100644 index 000000000..2878beeab --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java @@ -0,0 +1,150 @@ +package com.simibubi.create.content.curiosities.armor; + +import java.util.function.Supplier; + +import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.networking.SimplePacketBase; + +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterials; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.network.NetworkEvent.Context; +import net.minecraftforge.network.PacketDistributor; + +@EventBusSubscriber +public final class NetheriteDivingHandler { + public static final String NETHERITE_DIVING_BITS_KEY = "CreateNetheriteDivingBits"; + public static final String FIRE_IMMUNE_KEY = "CreateFireImmune"; + + @SubscribeEvent + public static void onLivingEquipmentChange(LivingEquipmentChangeEvent event) { + EquipmentSlot slot = event.getSlot(); + if (slot.getType() != EquipmentSlot.Type.ARMOR) { + return; + } + + LivingEntity entity = event.getEntityLiving(); + ItemStack to = event.getTo(); + + if (slot == EquipmentSlot.HEAD) { + if (AllItems.NETHERITE_DIVING_HELMET.isIn(to)) { + setBit(entity, 0); + } else { + clearBit(entity, 0); + } + } else if (slot == EquipmentSlot.CHEST) { + if (AllItems.NETHERITE_BACKTANK.isIn(to)) { + setBit(entity, 1); + } else { + clearBit(entity, 1); + } + } else if (slot == EquipmentSlot.LEGS) { + if (to.getItem() instanceof ArmorItem armorItem && armorItem.getMaterial() == ArmorMaterials.NETHERITE) { + setBit(entity, 2); + } else { + clearBit(entity, 2); + } + } else if (slot == EquipmentSlot.FEET) { + if (AllItems.NETHERITE_DIVING_BOOTS.isIn(to)) { + setBit(entity, 3); + } else { + clearBit(entity, 3); + } + } + } + + public static void setBit(LivingEntity entity, int i) { + CompoundTag nbt = entity.getPersistentData(); + byte bits = nbt.getByte(NETHERITE_DIVING_BITS_KEY); + bits |= 1 << i; + nbt.putByte(NETHERITE_DIVING_BITS_KEY, bits); + + if ((bits & 0xF) == 0xF) { + setFireImmune(entity, true); + } + } + + public static void clearBit(LivingEntity entity, int i) { + CompoundTag nbt = entity.getPersistentData(); + if (!nbt.contains(NETHERITE_DIVING_BITS_KEY)) { + return; + } + + byte bits = nbt.getByte(NETHERITE_DIVING_BITS_KEY); + boolean prevFullSet = (bits & 0xF) == 0xF; + bits &= ~(1 << i); + nbt.putByte(NETHERITE_DIVING_BITS_KEY, bits); + + if (prevFullSet) { + setFireImmune(entity, false); + } + } + + public static void setFireImmune(LivingEntity entity, boolean fireImmune) { + entity.getPersistentData().putBoolean(FIRE_IMMUNE_KEY, fireImmune); + AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), SetFireImmunePacket.create(entity)); + } + + @SubscribeEvent + public static void onStartTrackingEntity(PlayerEvent.StartTracking event) { + if (!(event.getPlayer() instanceof ServerPlayer player)) { + return; + } + + if (!(event.getTarget() instanceof LivingEntity entity)) { + return; + } + + AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), SetFireImmunePacket.create(entity)); + } + + public static class SetFireImmunePacket extends SimplePacketBase { + private final int entityId; + private final boolean fireImmune; + + public SetFireImmunePacket(int entityId, boolean fireImmune) { + this.entityId = entityId; + this.fireImmune = fireImmune; + } + + public static SetFireImmunePacket create(Entity entity) { + int entityId = entity.getId(); + boolean fireImmune = entity.getPersistentData().getBoolean(FIRE_IMMUNE_KEY); + return new SetFireImmunePacket(entityId, fireImmune); + } + + public SetFireImmunePacket(FriendlyByteBuf buffer) { + entityId = buffer.readVarInt(); + fireImmune = buffer.readBoolean(); + } + + @Override + public void write(FriendlyByteBuf buffer) { + buffer.writeVarInt(entityId); + buffer.writeBoolean(fireImmune); + } + + @Override + public void handle(Supplier context) { + context.get().enqueueWork(() -> { + Entity entity = Minecraft.getInstance().level.getEntity(entityId); + if (entity != null) { + entity.getPersistentData().putBoolean(FIRE_IMMUNE_KEY, fireImmune); + } + }); + context.get().setPacketHandled(true); + } + } +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/RemainingAirOverlay.java b/src/main/java/com/simibubi/create/content/curiosities/armor/RemainingAirOverlay.java new file mode 100644 index 000000000..e806d41ef --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/RemainingAirOverlay.java @@ -0,0 +1,66 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Components; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.chat.Component; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.StringUtil; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.GameType; +import net.minecraftforge.client.gui.ForgeIngameGui; +import net.minecraftforge.client.gui.IIngameOverlay; + +public class RemainingAirOverlay implements IIngameOverlay { + public static final RemainingAirOverlay INSTANCE = new RemainingAirOverlay(); + + @Override + public void render(ForgeIngameGui gui, PoseStack poseStack, float partialTick, int width, int height) { + Minecraft mc = Minecraft.getInstance(); + if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + return; + + LocalPlayer player = mc.player; + if (player == null) + return; + if (player.isCreative()) + return; + if (!player.getPersistentData() + .contains("VisualBacktankAir")) + return; + if (!player.isEyeInFluid(FluidTags.WATER)) + return; + + int timeLeft = player.getPersistentData() + .getInt("VisualBacktankAir"); + + poseStack.pushPose(); + + poseStack.translate(width / 2 + 90, height - 53, 0); + + Component text = Components.literal(StringUtil.formatTickDuration(timeLeft * 20)); + GuiGameElement.of(getDisplayedBacktank(player)) + .at(0, 0) + .render(poseStack); + int color = 0xFF_FFFFFF; + if (timeLeft < 60 && timeLeft % 2 == 0) { + color = Color.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f)); + } + mc.font.drawShadow(poseStack, text, 16, 5, color); + + poseStack.popPose(); + } + + public static ItemStack getDisplayedBacktank(LocalPlayer player) { + ItemStack backtank = BacktankUtil.get(player); + if (!backtank.isEmpty()) { + return backtank; + } + return AllItems.COPPER_BACKTANK.asStack(); + } +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java index a32a7c5dd..161275653 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java @@ -8,7 +8,7 @@ import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; import com.simibubi.create.AllItems; -import com.simibubi.create.content.curiosities.armor.BackTankUtil; +import com.simibubi.create.content.curiosities.armor.BacktankUtil; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; @@ -205,23 +205,23 @@ public class ExtendoGripItem extends Item { if (!AllItems.EXTENDO_GRIP.isIn(extendo)) return; final InteractionHand h = hand; - if (!BackTankUtil.canAbsorbDamage(player, maxUses())) + if (!BacktankUtil.canAbsorbDamage(player, maxUses())) extendo.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(h)); } @Override public boolean isBarVisible(ItemStack stack) { - return BackTankUtil.isBarVisible(stack, maxUses()); + return BacktankUtil.isBarVisible(stack, maxUses()); } @Override public int getBarWidth(ItemStack stack) { - return BackTankUtil.getBarWidth(stack, maxUses()); + return BacktankUtil.getBarWidth(stack, maxUses()); } @Override public int getBarColor(ItemStack stack) { - return BackTankUtil.getBarColor(stack, maxUses()); + return BacktankUtil.getBarColor(stack, maxUses()); } private static int maxUses() { diff --git a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java index 7b132d8d0..8a808a0c8 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/weapons/PotatoCannonItem.java @@ -9,7 +9,7 @@ import com.simibubi.create.AllEnchantments; import com.simibubi.create.AllEntityTypes; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; -import com.simibubi.create.content.curiosities.armor.BackTankUtil; +import com.simibubi.create.content.curiosities.armor.BacktankUtil; import com.simibubi.create.content.curiosities.zapper.ShootableGadgetItemMethods; import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; @@ -82,17 +82,17 @@ public class PotatoCannonItem extends ProjectileWeaponItem { @Override public boolean isBarVisible(ItemStack stack) { - return BackTankUtil.isBarVisible(stack, maxUses()); + return BacktankUtil.isBarVisible(stack, maxUses()); } @Override public int getBarWidth(ItemStack stack) { - return BackTankUtil.getBarWidth(stack, maxUses()); + return BacktankUtil.getBarWidth(stack, maxUses()); } @Override public int getBarColor(ItemStack stack) { - return BackTankUtil.getBarColor(stack, maxUses()); + return BacktankUtil.getBarColor(stack, maxUses()); } private int maxUses() { @@ -164,7 +164,7 @@ public class PotatoCannonItem extends ProjectileWeaponItem { player.getInventory().removeItem(itemStack); } - if (!BackTankUtil.canAbsorbDamage(player, maxUses())) + if (!BacktankUtil.canAbsorbDamage(player, maxUses())) stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); Integer cooldown = diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index e3830192a..e40e05ddf 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -6,7 +6,6 @@ import java.util.List; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllFluids; -import com.simibubi.create.AllItems; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.KineticDebugger; @@ -25,7 +24,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra import com.simibubi.create.content.contraptions.components.turntable.TurntableHandler; import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe; import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHandler; -import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; +import com.simibubi.create.content.curiosities.armor.BacktankArmorLayer; +import com.simibubi.create.content.curiosities.armor.DivingHelmetItem; import com.simibubi.create.content.curiosities.girder.GirderWrenchBehavior; import com.simibubi.create.content.curiosities.toolbox.ToolboxHandlerClient; import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer; @@ -334,7 +334,7 @@ public class ClientEvents { return; } - if (FluidHelper.isWater(fluid) && AllItems.DIVING_HELMET.get() + if (FluidHelper.isWater(fluid) && DivingHelmetItem .isWornBy(Minecraft.getInstance().cameraEntity)) { event.scaleFarPlaneDistance(6.25f); event.setCanceled(true); @@ -390,7 +390,7 @@ public class ClientEvents { public static void addEntityRendererLayers(EntityRenderersEvent.AddLayers event) { EntityRenderDispatcher dispatcher = Minecraft.getInstance() .getEntityRenderDispatcher(); - CopperBacktankArmorLayer.registerOnAll(dispatcher); + BacktankArmorLayer.registerOnAll(dispatcher); TrainHatArmorLayer.registerOnAll(dispatcher); } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java index ebd311337..d0f8407fe 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java @@ -270,7 +270,7 @@ public class AllAdvancements implements DataProvider { .description("Create a Copper Backtank and make it accumulate air pressure") .after(STEAM_WHISTLE)), - DIVING_SUIT = create("diving_suit", b -> b.icon(AllItems.DIVING_HELMET) + DIVING_SUIT = create("diving_suit", b -> b.icon(AllItems.COPPER_DIVING_HELMET) .title("Ready for the Depths") .description("Equip a Diving Helmet and a Copper Backtank, then jump into water") .after(BACKTANK)), @@ -331,7 +331,7 @@ public class AllAdvancements implements DataProvider { // Copper - Hidden - DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.DIVING_HELMET) + DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.COPPER_DIVING_HELMET) .title("Swimming with the Striders") .description("Attempt to take a dive in lava with your diving gear") .after(BACKTANK) 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 2c410b692..1574a414f 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -62,6 +62,16 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.PistonType; import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.LootTable.Builder; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.functions.CopyNameFunction; +import net.minecraft.world.level.storage.loot.functions.CopyNbtFunction; +import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.minecraft.world.level.storage.loot.providers.nbt.ContextNbtProvider; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.client.model.generators.ModelFile; @@ -360,6 +370,27 @@ public class BuilderTransformers { .transform(ModelGen.customItemModel("crate", type, "single")); } + public static NonNullUnaryOperator> backtank(Supplier drop) { + return b -> b + .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .transform(pickaxeOnly()) + .addLayer(() -> RenderType::cutoutMipped) + .transform(BlockStressDefaults.setImpact(4.0)) + .loot((lt, block) -> { + Builder builder = LootTable.lootTable(); + LootItemCondition.Builder survivesExplosion = ExplosionCondition.survivesExplosion(); + lt.add(block, builder.withPool(LootPool.lootPool() + .when(survivesExplosion) + .setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(drop.get()) + .apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY)) + .apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY) + .copy("Air", "Air")) + .apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY) + .copy("Enchantments", "Enchantments"))))); + }); + } + public static NonNullUnaryOperator> bell() { return b -> b.initialProperties(SharedProperties::softMetal) .properties(p -> p.noOcclusion() diff --git a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java index f1838c470..256aafed4 100644 --- a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java +++ b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java @@ -15,6 +15,10 @@ public class SharedProperties { public static final Material CRUSHING_WHEEL_CONTROLLER_MATERIAL = new Material(MaterialColor.NONE, false, false, true, true, false, false, PushReaction.BLOCK); + public static Block wooden() { + return Blocks.STRIPPED_SPRUCE_WOOD; + } + public static Block stone() { return Blocks.ANDESITE; } @@ -22,12 +26,12 @@ public class SharedProperties { public static Block softMetal() { return Blocks.GOLD_BLOCK; } - + public static Block copperMetal() { return Blocks.COPPER_BLOCK; } - public static Block wooden() { - return Blocks.STRIPPED_SPRUCE_WOOD; + public static Block netheriteMetal() { + return Blocks.NETHERITE_BLOCK; } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index 5401c429c..30ff9ea90 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -988,7 +988,7 @@ public class StandardRecipeGen extends CreateRecipeProvider { .viaShapeless(b -> b.requires(I.wheatFlour()) .requires(Items.WATER_BUCKET)), - DIVING_HELMET = create(AllItems.DIVING_HELMET).unlockedBy(I::copper) + DIVING_HELMET = create(AllItems.COPPER_DIVING_HELMET).unlockedBy(I::copper) .viaShaped(b -> b.define('G', Tags.Items.GLASS) .define('P', I.copper()) .pattern("PPP") @@ -1003,7 +1003,7 @@ public class StandardRecipeGen extends CreateRecipeProvider { .pattern("PBP") .pattern(" P ")), - DIVING_BOOTS = create(AllItems.DIVING_BOOTS).unlockedBy(I::copper) + DIVING_BOOTS = create(AllItems.COPPER_DIVING_BOOTS).unlockedBy(I::copper) .viaShaped(b -> b.define('G', I.andesite()) .define('P', I.copper()) .pattern("P P") diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java new file mode 100644 index 000000000..18cfd4b6a --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java @@ -0,0 +1,22 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.simibubi.create.content.curiosities.armor.NetheriteDivingHandler; + +import net.minecraft.world.entity.Entity; + +@Mixin(Entity.class) +public class EntityMixin { + @Inject(method = "fireImmune()Z", at = @At("RETURN"), cancellable = true) + public void fireImmune(CallbackInfoReturnable cir) { + if (!cir.getReturnValueZ()) { + Entity self = (Entity) (Object) this; + boolean immune = self.getPersistentData().getBoolean(NetheriteDivingHandler.FIRE_IMMUNE_KEY); + cir.setReturnValue(immune); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index 10c6a635f..784b8c8b8 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -31,6 +31,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra import com.simibubi.create.content.contraptions.fluids.actors.FluidSplashPacket; import com.simibubi.create.content.contraptions.relays.advanced.sequencer.ConfigureSequencedGearshiftPacket; import com.simibubi.create.content.contraptions.relays.gauge.GaugeObservedPacket; +import com.simibubi.create.content.curiosities.armor.NetheriteDivingHandler; import com.simibubi.create.content.curiosities.bell.SoulPulseEffectPacket; import com.simibubi.create.content.curiosities.symmetry.ConfigureSymmetryWandPacket; import com.simibubi.create.content.curiosities.symmetry.SymmetryEffectPacket; @@ -184,6 +185,7 @@ public enum AllPackets { S_TRAIN_PROMPT(TrainPromptPacket.class, TrainPromptPacket::new, PLAY_TO_CLIENT), CONTRAPTION_RELOCATION(ContraptionRelocationPacket.class, ContraptionRelocationPacket::new, PLAY_TO_CLIENT), TRACK_GRAPH_ROLL_CALL(TrackGraphRollCallPacket.class, TrackGraphRollCallPacket::new, PLAY_TO_CLIENT), + SET_FIRE_IMMUNE(NetheriteDivingHandler.SetFireImmunePacket.class, NetheriteDivingHandler.SetFireImmunePacket::new, PLAY_TO_CLIENT), ; diff --git a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java index 9c579b473..77cb32db0 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java @@ -25,6 +25,8 @@ import static com.simibubi.create.AllBlocks.STOCKPILE_SWITCH; import static com.simibubi.create.AllBlocks.STRESSOMETER; import static com.simibubi.create.AllItems.ATTRIBUTE_FILTER; import static com.simibubi.create.AllItems.CRAFTER_SLOT_COVER; +import static com.simibubi.create.AllItems.COPPER_DIVING_BOOTS; +import static com.simibubi.create.AllItems.COPPER_DIVING_HELMET; import static com.simibubi.create.AllItems.GOLDEN_SHEET; import static com.simibubi.create.AllItems.POWDERED_OBSIDIAN; import static com.simibubi.create.AllItems.SCHEMATIC; @@ -51,12 +53,14 @@ import static com.simibubi.create.content.palettes.AllPaletteBlocks.SPRUCE_WINDO import java.util.HashMap; import java.util.Map; +import com.simibubi.create.AllTileEntities; import com.simibubi.create.Create; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.common.ForgeMod; import net.minecraftforge.event.RegistryEvent; @@ -179,6 +183,8 @@ public class RemapHelper { reMap.put("terrain_zapper", WORLDSHAPER.getId()); reMap.put("property_filter", ATTRIBUTE_FILTER.getId()); reMap.put("obsidian_dust", POWDERED_OBSIDIAN.getId()); + reMap.put("diving_helmet", COPPER_DIVING_HELMET.getId()); + reMap.put("diving_boots", COPPER_DIVING_BOOTS.getId()); } private static void remapPaletteBlock(String type, String newType, boolean vanilla) { @@ -274,4 +280,16 @@ public class RemapHelper { } } + @SubscribeEvent + public static void remapBlockEntities(RegistryEvent.MissingMappings> event) { + for (Mapping> mapping : event.getMappings(Create.ID)) { + ResourceLocation key = mapping.key; + String path = key.getPath(); + + if (path.equals("copper_backtank")) { + mapping.remap(AllTileEntities.BACKTANK.get()); + } + } + } + } diff --git a/src/main/resources/assets/create/models/block/netherite_backtank/block.json b/src/main/resources/assets/create/models/block/netherite_backtank/block.json new file mode 100644 index 000000000..8af694a87 --- /dev/null +++ b/src/main/resources/assets/create/models/block/netherite_backtank/block.json @@ -0,0 +1,74 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/netherite_backtank", + "particle": "create:block/netherite_backtank" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 4, 11], + "faces": { + "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, + "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, + "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 12, 11], + "faces": { + "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, + "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, + "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [4, 4, 4], + "to": [12, 10, 12], + "faces": { + "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, + "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, + "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, + "down": {"uv": [4, 6, 8, 10], "texture": "#0"} + } + }, + { + "from": [4, 4, 9], + "to": [12, 10, 11], + "faces": { + "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} + } + }, + { + "from": [5, 2, 3], + "to": [11, 11, 5], + "faces": { + "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, + "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, + "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, + "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, + "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Tank", + "origin": [0, 0, 0], + "children": [0, 1, 2, 3, 4] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/netherite_backtank/block_cogs.json b/src/main/resources/assets/create/models/block/netherite_backtank/block_cogs.json new file mode 100644 index 000000000..3db35b065 --- /dev/null +++ b/src/main/resources/assets/create/models/block/netherite_backtank/block_cogs.json @@ -0,0 +1,125 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/netherite_backtank", + "particle": "create:block/netherite_backtank" + }, + "elements": [ + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Gears", + "origin": [1, 2.5, 0.5], + "children": [0, 1, 2, 3, 4, 5, 6, 7] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/netherite_backtank/block_shaft_input.json b/src/main/resources/assets/create/models/block/netherite_backtank/block_shaft_input.json new file mode 100644 index 000000000..09a4d316e --- /dev/null +++ b/src/main/resources/assets/create/models/block/netherite_backtank/block_shaft_input.json @@ -0,0 +1,37 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/netherite_backtank", + "particle": "create:block/netherite_backtank" + }, + "elements": [ + { + "from": [6.5, 12, 6.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, + "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} + } + }, + { + "from": [6, 13, 6], + "to": [10, 16, 10], + "faces": { + "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, + "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + }, 0, 1] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/netherite_backtank/item.json b/src/main/resources/assets/create/models/block/netherite_backtank/item.json new file mode 100644 index 000000000..20607aa1f --- /dev/null +++ b/src/main/resources/assets/create/models/block/netherite_backtank/item.json @@ -0,0 +1,205 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/netherite_backtank", + "particle": "create:block/netherite_backtank" + }, + "elements": [ + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 4, 11], + "faces": { + "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, + "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, + "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 12, 11], + "faces": { + "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, + "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, + "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [4, 4, 4], + "to": [12, 10, 12], + "faces": { + "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, + "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, + "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, + "down": {"uv": [4, 6, 8, 10], "texture": "#0"} + } + }, + { + "from": [4, 4, 9], + "to": [12, 10, 11], + "faces": { + "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} + } + }, + { + "from": [5, 2, 3], + "to": [11, 11, 5], + "faces": { + "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, + "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, + "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, + "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, + "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [6.5, 12, 6.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, + "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} + } + }, + { + "from": [6, 13, 6], + "to": [10, 16, 10], + "faces": { + "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, + "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Gears", + "origin": [1, 2.5, 0.5], + "children": [0, 1, 2, 3, 4, 5, 6, 7] + }, + { + "name": "Tank", + "origin": [0, 0, 0], + "children": [8, 9, 10, 11, 12] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + }, 13, 14] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/netherite_backtank.png b/src/main/resources/assets/create/textures/block/netherite_backtank.png new file mode 100644 index 0000000000000000000000000000000000000000..27e53312bae5382e39144d840b4667039bb916b5 GIT binary patch literal 8119 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/models/armor/copper.png b/src/main/resources/assets/create/textures/models/armor/copper_diving_layer_1.png similarity index 100% rename from src/main/resources/assets/create/textures/models/armor/copper.png rename to src/main/resources/assets/create/textures/models/armor/copper_diving_layer_1.png diff --git a/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1.png b/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ecc6756d04e783520ab2b6b9c57009b6e9d4c6 GIT binary patch literal 10002 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1_original.png b/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1_original.png new file mode 100644 index 0000000000000000000000000000000000000000..515a9a12d452e1e26e4ddaa68d68f8b5b4cdeb8a GIT binary patch literal 9195 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 b06{@%r8S7EzJ_>ULj&n)8EclPyPo+kGru|3 literal 0 HcmV?d00001 diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index f3af76190..a8cd94f97 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -6,6 +6,7 @@ "refmap": "create.refmap.json", "mixins": [ "CustomItemUseEffectsMixin", + "EntityMixin", "MapItemSavedDataMixin", "ContraptionDriverInteractMixin", "accessor.AbstractProjectileDispenseBehaviorAccessor", From 53cc386b86b0b920ab328e1ec3577d3747cc8ba4 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Fri, 7 Oct 2022 18:48:49 -0700 Subject: [PATCH 002/122] Layered with mixins - Render netherite diving gear with both layers properly - Mixin to HumanoidArmorLayer to render both layers for all slots --- .../java/com/simibubi/create/AllItems.java | 12 +-- .../curiosities/armor/BacktankItem.java | 17 +++- .../curiosities/armor/DivingBootsItem.java | 15 +++ .../curiosities/armor/DivingHelmetItem.java | 14 +++ .../item/MultiLayeredArmorItem.java | 20 ++++ .../mixin/HumanoidArmorLayerMixin.java | 87 ++++++++++++++++++ .../models/armor/netherite_diving_layer_1.png | Bin 10002 -> 8897 bytes .../netherite_diving_layer_1_overlay.png | Bin 8724 -> 0 bytes ...ginal.png => netherite_diving_layer_2.png} | Bin src/main/resources/create.mixins.json | 1 + 10 files changed, 158 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/simibubi/create/foundation/item/MultiLayeredArmorItem.java create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java delete mode 100644 src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1_overlay.png rename src/main/resources/assets/create/textures/models/armor/{netherite_diving_layer_1_original.png => netherite_diving_layer_2.png} (100%) diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 347e969b2..3eca8725f 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -252,32 +252,32 @@ public class AllItems { .model((c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) .register(); - public static final ItemEntry + public static final ItemEntry COPPER_BACKTANK = REGISTRATE.item("copper_backtank", p -> new BacktankItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"), COPPER_BACKTANK_PLACEABLE)) .model(AssetLookup.customGenericItemModel("_", "item")) .tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) .register(), - NETHERITE_BACKTANK = REGISTRATE.item("netherite_backtank", p -> new BacktankItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"), NETHERITE_BACKTANK_PLACEABLE)) + NETHERITE_BACKTANK = REGISTRATE.item("netherite_backtank", p -> new BacktankItem.MultiLayered(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"), NETHERITE_BACKTANK_PLACEABLE)) .model(AssetLookup.customGenericItemModel("_", "item")) .tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) .register(); - public static final ItemEntry + public static final ItemEntry COPPER_DIVING_HELMET = REGISTRATE.item("copper_diving_helmet", p -> new DivingHelmetItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"))) .register(), - NETHERITE_DIVING_HELMET = REGISTRATE.item("netherite_diving_helmet", p -> new DivingHelmetItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) + NETHERITE_DIVING_HELMET = REGISTRATE.item("netherite_diving_helmet", p -> new DivingHelmetItem.MultiLayered(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) .register(); - public static final ItemEntry + public static final ItemEntry COPPER_DIVING_BOOTS = REGISTRATE.item("copper_diving_boots", p -> new DivingBootsItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"))) .register(), - NETHERITE_DIVING_BOOTS = REGISTRATE.item("netherite_diving_boots", p -> new DivingBootsItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) + NETHERITE_DIVING_BOOTS = REGISTRATE.item("netherite_diving_boots", p -> new DivingBootsItem.MultiLayered(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) .register(); public static final ItemEntry SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new) diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java index ce63ccc04..d5b0c0828 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java @@ -1,10 +1,12 @@ package com.simibubi.create.content.curiosities.armor; +import java.util.Locale; import java.util.function.Supplier; import org.jetbrains.annotations.Nullable; import com.simibubi.create.content.curiosities.armor.CapacityEnchantment.ICapacityEnchantable; +import com.simibubi.create.foundation.item.MultiLayeredArmorItem; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; @@ -27,9 +29,9 @@ public class BacktankItem extends BaseArmorItem implements ICapacityEnchantable private final Supplier blockItem; - public BacktankItem(ArmorMaterial material, Properties properties, ResourceLocation textureLoc, Supplier copperBacktankPlaceable) { + public BacktankItem(ArmorMaterial material, Properties properties, ResourceLocation textureLoc, Supplier placeable) { super(material, SLOT, properties, textureLoc); - this.blockItem = copperBacktankPlaceable; + this.blockItem = placeable; } @Nullable @@ -108,4 +110,15 @@ public class BacktankItem extends BaseArmorItem implements ICapacityEnchantable return this.getOrCreateDescriptionId(); } } + + public static class MultiLayered extends BacktankItem implements MultiLayeredArmorItem { + public MultiLayered(ArmorMaterial material, Properties properties, ResourceLocation textureLoc, Supplier placeable) { + super(material, properties, textureLoc, placeable); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String layer) { + return String.format(Locale.ROOT, "%s:textures/models/armor/%s_layer_%s.png", textureLoc.getNamespace(), textureLoc.getPath(), layer); + } + } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java index 9b0abbed3..dfffc1bd5 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java @@ -1,5 +1,8 @@ package com.simibubi.create.content.curiosities.armor; +import java.util.Locale; + +import com.simibubi.create.foundation.item.MultiLayeredArmorItem; import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.resources.ResourceLocation; @@ -9,6 +12,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -72,4 +76,15 @@ public class DivingBootsItem extends BaseArmorItem { } return true; } + + public static class MultiLayered extends DivingBootsItem implements MultiLayeredArmorItem { + public MultiLayered(ArmorMaterial material, Properties properties, ResourceLocation textureLoc) { + super(material, properties, textureLoc); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String layer) { + return String.format(Locale.ROOT, "%s:textures/models/armor/%s_layer_%s.png", textureLoc.getNamespace(), textureLoc.getPath(), layer); + } + } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java index 5bfd951d0..a525dc198 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java @@ -1,6 +1,9 @@ package com.simibubi.create.content.curiosities.armor; +import java.util.Locale; + import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.item.MultiLayeredArmorItem; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -82,4 +85,15 @@ public class DivingHelmetItem extends BaseArmorItem { entity.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 30, 0, true, false, true)); BacktankUtil.consumeAir(entity, backtank, 1); } + + public static class MultiLayered extends DivingHelmetItem implements MultiLayeredArmorItem { + public MultiLayered(ArmorMaterial material, Properties properties, ResourceLocation textureLoc) { + super(material, properties, textureLoc); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String layer) { + return String.format(Locale.ROOT, "%s:textures/models/armor/%s_layer_%s.png", textureLoc.getNamespace(), textureLoc.getPath(), layer); + } + } } diff --git a/src/main/java/com/simibubi/create/foundation/item/MultiLayeredArmorItem.java b/src/main/java/com/simibubi/create/foundation/item/MultiLayeredArmorItem.java new file mode 100644 index 000000000..025faf134 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/MultiLayeredArmorItem.java @@ -0,0 +1,20 @@ +package com.simibubi.create.foundation.item; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.DyeableLeatherItem; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.extensions.IForgeItem; + +/** + * This interface is meant to be implemented on {@link ArmorItem}s, which will allow them to be rendered on both the inner model and outer model. + * + *

Classes implementing this interface must not also implement {@link DyeableLeatherItem}. + * + *

Classes that implement this interface and override {@link IForgeItem#getArmorTexture(ItemStack, Entity, EquipmentSlot, String) getArmorTexture} + * must note that the {@code String} argument will be used for layer context instead of the type. + * This string will always be {@code "1"} when querying the location for the outer model or {@code "2"} when querying the location for the inner model. + */ +public interface MultiLayeredArmorItem { +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java new file mode 100644 index 000000000..4aa5abd0f --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java @@ -0,0 +1,87 @@ +package com.simibubi.create.foundation.mixin; + +import javax.annotation.Nullable; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.item.MultiLayeredArmorItem; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; + +@Mixin(HumanoidArmorLayer.class) +public class HumanoidArmorLayerMixin { + @Shadow + @Final + private HumanoidModel innerModel; + @Shadow + @Final + private HumanoidModel outerModel; + + @Unique + private boolean intercepted; + @Unique + private Boolean useInnerTexture; + + @Shadow + private void renderArmorPiece(PoseStack poseStack, MultiBufferSource buffer, LivingEntity livingEntity, EquipmentSlot slot, int packedLight, HumanoidModel model) { + } + + @Shadow + private boolean usesInnerModel(EquipmentSlot slot) { + return false; + } + + @Inject(method = "renderArmorPiece", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;getParentModel()Lnet/minecraft/client/model/EntityModel;"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true) + private void onRenderArmorPiece(PoseStack poseStack, MultiBufferSource buffer, LivingEntity livingEntity, EquipmentSlot slot, int packedLight, HumanoidModel model, CallbackInfo ci, ItemStack stack, ArmorItem armorItem) { + if (intercepted) { + return; + } + + if (armorItem instanceof MultiLayeredArmorItem) { + intercepted = true; + + useInnerTexture = true; + renderArmorPiece(poseStack, buffer, livingEntity, slot, packedLight, innerModel); + useInnerTexture = false; + renderArmorPiece(poseStack, buffer, livingEntity, slot, packedLight, outerModel); + + useInnerTexture = null; + intercepted = false; + ci.cancel(); + } + } + + @Inject(method = "usesInnerModel", at = @At("HEAD"), cancellable = true) + private void onUsesInnerModel(EquipmentSlot slot, CallbackInfoReturnable cir) { + if (useInnerTexture != null) { + cir.setReturnValue(useInnerTexture); + } + } + + @ModifyVariable(method = "getArmorResource", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/client/ForgeHooksClient;getArmorTexture(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Lnet/minecraft/world/entity/EquipmentSlot;Ljava/lang/String;)Ljava/lang/String;", shift = Shift.BEFORE), ordinal = 0) + private String modifyType(@Nullable String type, Entity entity, ItemStack stack, EquipmentSlot slot, @Nullable String typeArg) { + if (stack.getItem() instanceof MultiLayeredArmorItem) { + return usesInnerModel(slot) ? "2" : "1"; + } + + return type; + } +} diff --git a/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1.png b/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1.png index f4ecc6756d04e783520ab2b6b9c57009b6e9d4c6..850bcece6907b2683a87766c70d5e92cdcc93b95 100644 GIT binary patch delta 5424 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 b06{@%r8S7EzJ_>ULj&n)8EclPyPo+kGru|3 diff --git a/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1_original.png b/src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_2.png similarity index 100% rename from src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_1_original.png rename to src/main/resources/assets/create/textures/models/armor/netherite_diving_layer_2.png diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index a8cd94f97..b58d1fc36 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -7,6 +7,7 @@ "mixins": [ "CustomItemUseEffectsMixin", "EntityMixin", + "HumanoidArmorLayerMixin", "MapItemSavedDataMixin", "ContraptionDriverInteractMixin", "accessor.AbstractProjectileDispenseBehaviorAccessor", From 8afc834f0c5be7c5bd26a71ed0db31dbb970d482 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Mon, 10 Oct 2022 13:10:02 -0700 Subject: [PATCH 003/122] Unobtainium Backtank - Allow any netherite boots to complete netherite diving set - Fix picking up backtank creating unobtainable placeable item - Add tooltip for netherite backtank - Remove direct references to copper backtank in tooltips --- src/generated/resources/.cache/cache | 34 +++++++++---------- .../resources/assets/create/lang/en_us.json | 17 +++++++--- .../assets/create/lang/unfinished/de_de.json | 9 ++++- .../assets/create/lang/unfinished/es_cl.json | 9 ++++- .../assets/create/lang/unfinished/es_es.json | 9 ++++- .../assets/create/lang/unfinished/fr_fr.json | 19 +++++++---- .../assets/create/lang/unfinished/it_it.json | 9 ++++- .../assets/create/lang/unfinished/ja_jp.json | 9 ++++- .../assets/create/lang/unfinished/ko_kr.json | 9 ++++- .../assets/create/lang/unfinished/nl_nl.json | 19 +++++++---- .../assets/create/lang/unfinished/pl_pl.json | 9 ++++- .../assets/create/lang/unfinished/pt_br.json | 19 +++++++---- .../assets/create/lang/unfinished/pt_pt.json | 19 +++++++---- .../assets/create/lang/unfinished/ro_ro.json | 9 ++++- .../assets/create/lang/unfinished/ru_ru.json | 9 ++++- .../assets/create/lang/unfinished/uk_ua.json | 9 ++++- .../assets/create/lang/unfinished/zh_cn.json | 9 ++++- .../assets/create/lang/unfinished/zh_tw.json | 9 ++++- .../java/com/simibubi/create/AllItems.java | 4 +-- .../curiosities/armor/BacktankBlock.java | 16 ++++++--- .../curiosities/armor/BacktankItem.java | 10 +++++- .../armor/NetheriteDivingHandler.java | 2 +- .../assets/create/lang/default/tooltips.json | 17 +++++++--- 23 files changed, 212 insertions(+), 72 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index d4c0cfed2..5a355fbf0 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -560,23 +560,23 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 48a4f2df04e092f355a70994af169f8e3e23eff9 assets/create/lang/en_ud.json -697142f7df636ab2c1a4c51de518da1057f00b0d assets/create/lang/en_us.json -c748bf6346d594db47b012a642201878d6099f19 assets/create/lang/unfinished/de_de.json -d9a59a5dd0acf9f109e50536dfbb9cfd7231c02d assets/create/lang/unfinished/es_cl.json -5353625f2eeea67c3db572c76579ecceba08d07e assets/create/lang/unfinished/es_es.json -022da28dbe8794c9c70e2f56f51d194b59227910 assets/create/lang/unfinished/fr_fr.json -3d748d50b3e3452082470d4e13349e999a0ff121 assets/create/lang/unfinished/it_it.json -c1d7f5ab9f8796e9e83a98aebea60ddbd7066b5c assets/create/lang/unfinished/ja_jp.json -18dbdd8a353469d954159174c0c668af87e65a96 assets/create/lang/unfinished/ko_kr.json -783900eaad7ea3bd08c41817365025e52e8665a8 assets/create/lang/unfinished/nl_nl.json -004d34ba743ab206dea12ea4c85c00ae7cd3b191 assets/create/lang/unfinished/pl_pl.json -bbe3799eeaed6b3e00c9314607ade798b116c42b assets/create/lang/unfinished/pt_br.json -3eb467693daee7da7c40dd4a9f807ead7dd66b7e assets/create/lang/unfinished/pt_pt.json -e1cf6bdd38ab822f626e0b02c2d16637fdd2e622 assets/create/lang/unfinished/ro_ro.json -18e0fba5433d35ba1512f1c828c67443d60a0b86 assets/create/lang/unfinished/ru_ru.json -041e6917f64163ac0b8157b4aa5cbbbde9efd165 assets/create/lang/unfinished/uk_ua.json -2a5fb11b27476169d381e02f94073889b4e5fb7f assets/create/lang/unfinished/zh_cn.json -cf24b02eef0b51db5543f985e232cb84d0cc6a50 assets/create/lang/unfinished/zh_tw.json +5cabda0c8e179cc41227db3c56886d2478d1a695 assets/create/lang/en_us.json +9ea6550269dbaae7dc264bca0c9a536b792dc7bb assets/create/lang/unfinished/de_de.json +d7191119619b6c7d79cc8adf9ba57cadce4bc14a assets/create/lang/unfinished/es_cl.json +f4188969805eebcd834c75e44ac0fc69394036b8 assets/create/lang/unfinished/es_es.json +ab3a1ccddf4f51a3b63342f597a5b94418192521 assets/create/lang/unfinished/fr_fr.json +964436316a4273e55f87c66950ce98cf78f40f39 assets/create/lang/unfinished/it_it.json +285b2ea2cbe701d552e8db451e094d1b39e3e243 assets/create/lang/unfinished/ja_jp.json +fa133f62d05912a88399539a3c7fc2ec933929ba assets/create/lang/unfinished/ko_kr.json +320365889ff4bb1f1730d3f1db66e70777e66cbd assets/create/lang/unfinished/nl_nl.json +35c4d3c8d8778e80f141bc8bd63837f5352b6cf8 assets/create/lang/unfinished/pl_pl.json +4c5abf767860b2875e4c9b687fc5ec67b46a0674 assets/create/lang/unfinished/pt_br.json +14f6c51f5e72dcb26f23cb639f99c3dfa2d6b7ec assets/create/lang/unfinished/pt_pt.json +871db8052bf4f32cf9f9d84dd704d20803cf3ed1 assets/create/lang/unfinished/ro_ro.json +abd7ff9715b030e5c2b891dcbf6a6d8ca4ac81e6 assets/create/lang/unfinished/ru_ru.json +ad9b1c4c5da8fd2fd08721f0e18aeaccac9fa7bc assets/create/lang/unfinished/uk_ua.json +76f4d15a367e7a5cf6b64554ea1a1a1a07e904f5 assets/create/lang/unfinished/zh_cn.json +e535263bee1ab31a40d2774af3f68c8a12e8fffd 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 diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 29ad1b200..e78940d08 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1855,17 +1855,17 @@ "item.create.tree_fertilizer.tooltip.behaviour1": "Grows Trees _regardless_ of their _spacing conditions_", "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Backtank_", "item.create.extendo_grip.tooltip.condition1": "When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.condition2": "While wearing Backtank", "item.create.extendo_grip.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.potato_cannon.tooltip": "POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.summary": "Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Backtank_", "item.create.potato_cannon.tooltip.condition1": "When R-Clicked", "item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.condition2": "While wearing Backtank", "item.create.potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.filter.tooltip": "FILTER", @@ -2008,7 +2008,7 @@ "item.create.linked_controller.tooltip.behaviour4": "Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", "item.create.diving_helmet.tooltip": "DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.summary": "Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", "item.create.diving_helmet.tooltip.condition1": "When Worn", "item.create.diving_helmet.tooltip.behaviour1": "Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", @@ -2019,6 +2019,13 @@ "item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "item.create.netherite_backtank.tooltip": "NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "PLACARD", "block.create.placard.tooltip.summary": "_Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "When R-Clicked with Item", 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 b3b47f45f..de4435372 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: 849", + "_": "Missing Localizations: 855", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "Wenn platziert und mit kinetischer Energie betrieben", "item.create.copper_backtank.tooltip.behaviour2": "_Sammelt_ _komprimierte_ _Luft_ mit einer Geschwindigkeit basierend auf der Rotationsgeschwindigkeit.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 3b5d6ac16..ef9e6e0fa 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 995", + "_": "Missing Localizations: 1001", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "Al colocarlo, y darle Cinética", "item.create.copper_backtank.tooltip.behaviour2": "_Recolecta_ _Aire_ _Comprimido_ a una velocidad dependiente de la velocidad de rotación.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", 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 8d6b84ed3..c25bdeb8e 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: 15", + "_": "Missing Localizations: 21", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "Cuando se coloca y es alimentado por cinética", "item.create.copper_backtank.tooltip.behaviour2": "Recoge _aire presurizado_ a un ritmo que depende de la velocidad rotacional.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "Pancarta", "block.create.placard.tooltip.summary": "_Enmarca_ tus _objetos_ en latón usando este fantástico mural. ¡Seguro para artefactos móviles!", "block.create.placard.tooltip.condition1": "Cuando se usa clic derecho con un objeto", 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 153b506c2..a0e45a890 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: 2144", + "_": "Missing Localizations: 2150", "_": "->------------------------] Game Elements [------------------------<-", @@ -1856,17 +1856,17 @@ "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des rotors _indépendamment_ de leurs _conditions_ _d'emplacement_", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Backtank_", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Backtank_", "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.filter.tooltip": "FILTRE", @@ -2009,7 +2009,7 @@ "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", 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 449be154b..b06dea3ba 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: 9", + "_": "Missing Localizations: 15", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "Quando posizionato e collegato a un sistema cinetico", "item.create.copper_backtank.tooltip.behaviour2": "_Assorbe_ _aria_ _compressa_ ad una velocità dipendente dalla velocità di rotazione.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "CORNICE DI OTTONE", "block.create.placard.tooltip.summary": "_Incornicia_ i tuoi _oggetti_ in ottone usando questo elegante pannello da muro. Sicuro per i macchinari!", "block.create.placard.tooltip.condition1": "Click destro con un oggetto", 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 d95da9a6d..49cf52db8 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: 11", + "_": "Missing Localizations: 17", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "設置して動力を供給したとき", "item.create.copper_backtank.tooltip.behaviour2": "_圧縮空気_を_集めます_。速度は回転速度によって決まります。", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "プラカード", "block.create.placard.tooltip.summary": "このイカした真鍮の壁掛けパネルにアイテムを飾ろう。からくりにつけても大丈夫!", "block.create.placard.tooltip.condition1": "右クリックしたとき", 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 c6999e6f2..07f22729d 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: 15", + "_": "Missing Localizations: 21", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "설치되고 동력으로 회전될 때", "item.create.copper_backtank.tooltip.behaviour2": "동력 속도에 따라 _공기_를 _모읍니다_.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "PLACARD", "block.create.placard.tooltip.summary": "_아이템_을 황동안에 _장식_하세요. 구조물에도 사용할 수 있습니다!", "block.create.placard.tooltip.condition1": "아이템을 들고 우클릭", 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 8ad555c4e..8969ee79a 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: 2492", + "_": "Missing Localizations: 2498", "_": "->------------------------] Game Elements [------------------------<-", @@ -1856,17 +1856,17 @@ "item.create.tree_fertilizer.tooltip.behaviour1": "Groeit bomen onafhankelijk van beschikbare ruimte", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Backtank_", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Backtank_", "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.filter.tooltip": "UNLOCALIZED: FILTER", @@ -2009,7 +2009,7 @@ "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", 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 61a9f4c2c..48a584bb2 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: 19", + "_": "Missing Localizations: 25", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "Po postawieniu i zasileniu siłą obrotową", "item.create.copper_backtank.tooltip.behaviour2": "_Zbiera_ _sprężone_ _powietrze_, w tempie zależnym od prędkości obrotu.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "Plakietka", "block.create.placard.tooltip.summary": "_Opraw_ swoje przedmioty w mosiądzu używając tego eleganckiego panelu ściennego. Dozwolone na maszynach!", "block.create.placard.tooltip.condition1": "Kliknięcie PPM przedmiotem", 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 16f4e6c88..73619403e 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: 1338", + "_": "Missing Localizations: 1344", "_": "->------------------------] Game Elements [------------------------<-", @@ -1856,17 +1856,17 @@ "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Árvores independentemente das suas Regras de espaço", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Backtank_", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Backtank_", "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.filter.tooltip": "UNLOCALIZED: FILTER", @@ -2009,7 +2009,7 @@ "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index 13a80bf3e..48bffd9b2 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2203", + "_": "Missing Localizations: 2209", "_": "->------------------------] Game Elements [------------------------<-", @@ -1856,17 +1856,17 @@ "item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço", "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Backtank_", "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Backtank_", "item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", "item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Backtank", "item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.filter.tooltip": "UNLOCALIZED: FILTER", @@ -2009,7 +2009,7 @@ "item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", "item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", "item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn", "item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index b3dcde1d0..71849d0b8 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 662", + "_": "Missing Localizations: 668", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "Când este plasat, Alimentat de Cinetice", "item.create.copper_backtank.tooltip.behaviour2": "_Colectează_ _Presiune de_ _Aer_ într-un ritm depinzând de Viteză de Rotație.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", 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 766fae846..129c23a99 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: 7", + "_": "Missing Localizations: 13", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "При вращении", "item.create.copper_backtank.tooltip.behaviour2": "Собирает и сжимает воздух со скоростью, зависящей от скорости вращения.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "УМНАЯ РАМКА", "block.create.placard.tooltip.summary": "_Обрамите_ свои предметы латунью с помощью этой красивой рамки. Безопасна для штуковин!", "block.create.placard.tooltip.condition1": "ПКМ по рамке с предметом в руках", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index 16804a7a7..1e85cc9ba 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 993", + "_": "Missing Localizations: 999", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "При розміщенні та живленні від кінетичної енергії", "item.create.copper_backtank.tooltip.behaviour2": "_Збирає та стискає повітря_ зі швидкістю, яка залежить від швидкості обертання_.", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "UNLOCALIZED: PLACARD", "block.create.placard.tooltip.summary": "UNLOCALIZED: _Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "UNLOCALIZED: When R-Clicked with Item", 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 c00e6e6a7..698656975 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: 7", + "_": "Missing Localizations: 13", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "放下并接入动力时", "item.create.copper_backtank.tooltip.behaviour2": "基于转速从周围环境中_收集_并_加压空气_", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "置物板", "block.create.placard.tooltip.summary": "用这个漂亮的墙板把你的物品用黄铜框起来,支持移动装置!", "block.create.placard.tooltip.condition1": "手持物品右击时", 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 0724a1be1..231748081 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: 15", + "_": "Missing Localizations: 21", "_": "->------------------------] Game Elements [------------------------<-", @@ -2020,6 +2020,13 @@ "item.create.copper_backtank.tooltip.condition2": "當放置時,由轉動來補充驅動", "item.create.copper_backtank.tooltip.behaviour2": "旋轉的速度決定收集_壓縮空氣_的速率", + "item.create.netherite_backtank.tooltip": "UNLOCALIZED: NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "UNLOCALIZED: When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "標示牌", "block.create.placard.tooltip.summary": "用這個精美的牆板將你的_物品_用黃銅_框起來_。對器械安全!", "block.create.placard.tooltip.condition1": "手持物品右鍵時", diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 3eca8725f..0dc603498 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -241,14 +241,14 @@ public class AllItems { // wrapped by COPPER_BACKTANK for block placement uses. // must be registered as of 1.18.2 public static final ItemEntry COPPER_BACKTANK_PLACEABLE = REGISTRATE - .item("copper_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.COPPER_BACKTANK.get(), p)) + .item("copper_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.COPPER_BACKTANK.get(), AllItems.COPPER_BACKTANK::get, p)) .model((c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) .register(); // wrapped by NETHERITE_BACKTANK for block placement uses. // must be registered as of 1.18.2 public static final ItemEntry NETHERITE_BACKTANK_PLACEABLE = REGISTRATE - .item("netherite_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.NETHERITE_BACKTANK.get(), p)) + .item("netherite_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.NETHERITE_BACKTANK.get(), AllItems.NETHERITE_BACKTANK::get, p)) .model((c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) .register(); diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankBlock.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankBlock.java index fa17a1b18..42cedf76d 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankBlock.java @@ -24,6 +24,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.enchantment.EnchantmentHelper; @@ -148,18 +149,23 @@ public class BacktankBlock extends HorizontalKineticBlock @Override public ItemStack getCloneItemStack(BlockGetter blockGetter, BlockPos pos, BlockState state) { - ItemStack item = super.getCloneItemStack(blockGetter, pos, state); + Item item = asItem(); + if (item instanceof BacktankItem.BacktankBlockItem placeable) { + item = placeable.getActualItem(); + } + + ItemStack stack = new ItemStack(item); Optional tileEntityOptional = getTileEntityOptional(blockGetter, pos); int air = tileEntityOptional.map(BacktankTileEntity::getAirLevel) .orElse(0); - CompoundTag tag = item.getOrCreateTag(); + CompoundTag tag = stack.getOrCreateTag(); tag.putInt("Air", air); ListTag enchants = tileEntityOptional.map(BacktankTileEntity::getEnchantmentTag) .orElse(new ListTag()); if (!enchants.isEmpty()) { - ListTag enchantmentTagList = item.getEnchantmentTags(); + ListTag enchantmentTagList = stack.getEnchantmentTags(); enchantmentTagList.addAll(enchants); tag.put("Enchantments", enchantmentTagList); } @@ -167,8 +173,8 @@ public class BacktankBlock extends HorizontalKineticBlock Component customName = tileEntityOptional.map(BacktankTileEntity::getCustomName) .orElse(null); if (customName != null) - item.setHoverName(customName); - return item; + stack.setHoverName(customName); + return stack; } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java index d5b0c0828..2f6ec43eb 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/BacktankItem.java @@ -19,6 +19,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.block.Block; @@ -98,8 +99,11 @@ public class BacktankItem extends BaseArmorItem implements ICapacityEnchantable } public static class BacktankBlockItem extends BlockItem { - public BacktankBlockItem(Block block, Properties properties) { + private final Supplier actualItem; + + public BacktankBlockItem(Block block, Supplier actualItem, Properties properties) { super(block, properties); + this.actualItem = actualItem; } @Override @@ -109,6 +113,10 @@ public class BacktankItem extends BaseArmorItem implements ICapacityEnchantable public String getDescriptionId() { return this.getOrCreateDescriptionId(); } + + public Item getActualItem() { + return actualItem.get(); + } } public static class MultiLayered extends BacktankItem implements MultiLayeredArmorItem { diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java b/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java index 2878beeab..1b83fb565 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java @@ -57,7 +57,7 @@ public final class NetheriteDivingHandler { clearBit(entity, 2); } } else if (slot == EquipmentSlot.FEET) { - if (AllItems.NETHERITE_DIVING_BOOTS.isIn(to)) { + if (to.getItem() instanceof ArmorItem armorItem && armorItem.getMaterial() == ArmorMaterials.NETHERITE) { setBit(entity, 3); } else { clearBit(entity, 3); diff --git a/src/main/resources/assets/create/lang/default/tooltips.json b/src/main/resources/assets/create/lang/default/tooltips.json index 870b1f292..be7e4a106 100644 --- a/src/main/resources/assets/create/lang/default/tooltips.json +++ b/src/main/resources/assets/create/lang/default/tooltips.json @@ -49,17 +49,17 @@ "item.create.tree_fertilizer.tooltip.behaviour1": "Grows Trees _regardless_ of their _spacing conditions_", "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Backtank_", "item.create.extendo_grip.tooltip.condition1": "When in Off-Hand", "item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.", - "item.create.extendo_grip.tooltip.condition2": "While wearing Copper Backtank", + "item.create.extendo_grip.tooltip.condition2": "While wearing Backtank", "item.create.extendo_grip.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.potato_cannon.tooltip": "POTATO CANNON", - "item.create.potato_cannon.tooltip.summary": "Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_", + "item.create.potato_cannon.tooltip.summary": "Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Backtank_", "item.create.potato_cannon.tooltip.condition1": "When R-Clicked", "item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.", - "item.create.potato_cannon.tooltip.condition2": "While wearing Copper Backtank", + "item.create.potato_cannon.tooltip.condition2": "While wearing Backtank", "item.create.potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.filter.tooltip": "FILTER", @@ -202,7 +202,7 @@ "item.create.linked_controller.tooltip.behaviour4": "Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", "item.create.diving_helmet.tooltip": "DIVING HELMET", - "item.create.diving_helmet.tooltip.summary": "Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", + "item.create.diving_helmet.tooltip.summary": "Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", "item.create.diving_helmet.tooltip.condition1": "When Worn", "item.create.diving_helmet.tooltip.behaviour1": "Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", @@ -213,6 +213,13 @@ "item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "item.create.netherite_backtank.tooltip": "NETHERITE BACKTANK", + "item.create.netherite_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.", + "item.create.netherite_backtank.tooltip.condition1": "When Worn", + "item.create.netherite_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.", + "item.create.netherite_backtank.tooltip.condition2": "When placed, Powered by Kinetics", + "item.create.netherite_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", + "block.create.placard.tooltip": "PLACARD", "block.create.placard.tooltip.summary": "_Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.condition1": "When R-Clicked with Item", From 1a475f737311065fd4351303db2853649e027a9a Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Tue, 18 Oct 2022 19:31:26 +0200 Subject: [PATCH 004/122] Next level elevation - Added the Contraption Controls - Added the Elevator Pulley - Pulley ropes are now climbable - Lowered hitbox of seats for improved traversability inside contraptions - Improved safety for players standing on vertically moving contraptions - Fixed seated entities on controlled contraptions not rendering at the correct location - Multiple pulleys can now attach to contraptions in a synchronised group - Display Boards now update text instantaneously at high input rpm --- src/generated/resources/.cache/cache | 51 +-- .../blockstates/contraption_controls.json | 124 +++++++ .../create/blockstates/elevator_contact.json | 212 ++++++++++++ .../create/blockstates/elevator_pulley.json | 19 ++ .../resources/assets/create/lang/en_ud.json | 3 + .../resources/assets/create/lang/en_us.json | 12 + .../assets/create/lang/unfinished/de_de.json | 14 +- .../assets/create/lang/unfinished/es_cl.json | 14 +- .../assets/create/lang/unfinished/es_es.json | 14 +- .../assets/create/lang/unfinished/fr_fr.json | 14 +- .../assets/create/lang/unfinished/it_it.json | 14 +- .../assets/create/lang/unfinished/ja_jp.json | 14 +- .../assets/create/lang/unfinished/ko_kr.json | 14 +- .../assets/create/lang/unfinished/nl_nl.json | 14 +- .../assets/create/lang/unfinished/pl_pl.json | 14 +- .../assets/create/lang/unfinished/pt_br.json | 14 +- .../assets/create/lang/unfinished/pt_pt.json | 14 +- .../assets/create/lang/unfinished/ro_ro.json | 14 +- .../assets/create/lang/unfinished/ru_ru.json | 14 +- .../assets/create/lang/unfinished/uk_ua.json | 14 +- .../assets/create/lang/unfinished/zh_cn.json | 14 +- .../assets/create/lang/unfinished/zh_tw.json | 14 +- .../models/item/contraption_controls.json | 3 + .../create/models/item/elevator_contact.json | 3 + .../create/models/item/elevator_pulley.json | 3 + .../blocks/contraption_controls.json | 20 ++ .../loot_tables/blocks/elevator_contact.json | 20 ++ .../loot_tables/blocks/elevator_pulley.json | 20 ++ .../data/minecraft/tags/blocks/climbable.json | 4 +- .../minecraft/tags/blocks/mineable/axe.json | 3 + .../tags/blocks/mineable/pickaxe.json | 3 + .../com/simibubi/create/AllBlockPartials.java | 9 + .../java/com/simibubi/create/AllBlocks.java | 58 +++- .../create/AllMovementBehaviours.java | 2 +- .../java/com/simibubi/create/AllShapes.java | 12 +- .../com/simibubi/create/AllSpriteShifts.java | 7 +- .../com/simibubi/create/AllTileEntities.java | 31 +- .../actors/DrillMovementBehaviour.java | 5 +- .../actors/HarvesterActorInstance.java | 31 +- .../actors/HarvesterMovementBehaviour.java | 5 +- .../actors/PloughMovementBehaviour.java | 5 +- .../actors/SawMovementBehaviour.java | 5 +- .../components/actors/SeatBlock.java | 5 +- .../controls/ContraptionControlsBlock.java | 65 ++++ .../controls/ContraptionControlsMovement.java | 239 +++++++++++++ .../ContraptionControlsMovingInteraction.java | 127 +++++++ .../controls/ContraptionControlsRenderer.java | 52 +++ .../ContraptionControlsTileEntity.java | 152 +++++++++ .../ContraptionDisableActorPacket.java | 74 ++++ .../deployer/DeployerActorInstance.java | 4 +- .../deployer/DeployerMovingInteraction.java | 28 +- .../components/deployer/DeployerRenderer.java | 3 +- .../AbstractContraptionEntity.java | 2 +- .../structureMovement/Contraption.java | 77 ++++- .../ContraptionCollider.java | 84 ++++- .../structureMovement/ContraptionType.java | 4 +- .../ControlledContraptionEntity.java | 16 +- .../structureMovement/MovementBehaviour.java | 19 +- .../structureMovement/MovementContext.java | 4 + .../TranslatingContraption.java | 33 +- .../StabilizedBearingMovementBehaviour.java | 6 + .../elevator/ElevatorColumn.java | 226 ++++++++++++ .../elevator/ElevatorContactBlock.java | 217 ++++++++++++ .../elevator/ElevatorContactEditPacket.java | 40 +++ .../elevator/ElevatorContactScreen.java | 171 ++++++++++ .../elevator/ElevatorContactTileEntity.java | 154 +++++++++ .../elevator/ElevatorContraption.java | 180 ++++++++++ .../elevator/ElevatorControlsHandler.java | 117 +++++++ .../elevator/ElevatorFloorListPacket.java | 103 ++++++ .../elevator/ElevatorPulleyBlock.java | 74 ++++ .../elevator/ElevatorPulleyInstance.java | 25 ++ .../elevator/ElevatorPulleyRenderer.java | 123 +++++++ .../elevator/ElevatorPulleyTileEntity.java | 316 +++++++++++++++++ .../elevator/ElevatorTargetFloorPacket.java | 73 ++++ .../piston/LinearActuatorTileEntity.java | 25 +- .../pulley/AbstractPulleyRenderer.java | 4 +- .../pulley/PulleyContraption.java | 6 +- .../pulley/PulleyRenderer.java | 20 +- .../pulley/PulleyTileEntity.java | 158 +++++++-- .../pulley/RopePulleyInstance.java | 2 +- .../burner/BlazeBurnerMovementBehaviour.java | 6 + .../deco/SlidingDoorMovementBehaviour.java | 12 +- .../source/CurrentFloorDisplaySource.java | 29 ++ .../redstone/ContactMovementBehaviour.java | 33 +- .../block/redstone/NixieTubeRenderer.java | 10 +- .../block/redstone/RedstoneContactBlock.java | 18 +- .../block/redstone/RedstoneContactItem.java | 43 +++ .../trains/entity/CarriageContraption.java | 4 +- .../display/FlapDisplaySection.java | 11 +- .../display/FlapDisplayTileEntity.java | 3 +- .../ChangeThrottleInstruction.java | 2 +- .../simibubi/create/events/InputEvents.java | 4 +- .../foundation/command/AllCommands.java | 2 +- .../data/recipe/StandardRecipeGen.java | 2 +- .../create/foundation/gui/AllGuiTextures.java | 2 + .../foundation/networking/AllPackets.java | 10 + .../ponder/content/PonderIndex.java | 6 +- .../tileEntity/behaviour/ValueBox.java | 11 +- .../behaviour/ValueBoxRenderer.java | 46 ++- .../filtering/FilteringRenderer.java | 6 +- .../assets/create/lang/default/interface.json | 10 + .../block/contraption_controls/block.json | 104 ++++++ .../block/contraption_controls/button.json | 56 +++ .../contraption_controls/indicator_0.json | 52 +++ .../contraption_controls/indicator_1.json | 52 +++ .../contraption_controls/indicator_2.json | 52 +++ .../contraption_controls/indicator_3.json | 52 +++ .../contraption_controls/indicator_4.json | 52 +++ .../contraption_controls/indicator_5.json | 52 +++ .../contraption_controls/indicator_6.json | 52 +++ .../contraption_controls/indicator_7.json | 52 +++ .../block/contraption_controls/item.json | 124 +++++++ .../models/block/elevator_contact/block.json | 82 +++++ .../block/elevator_contact/block_dim.json | 8 + .../block/elevator_contact/block_powered.json | 8 + .../models/block/elevator_pulley/block.json | 151 ++++++++ .../models/block/elevator_pulley/item.json | 250 ++++++++++++++ .../block/elevator_pulley/pulley_magnet.json | 41 +++ .../models/block/elevator_pulley/rope.json | 31 ++ .../block/elevator_pulley/rope_coil.json | 42 +++ .../block/elevator_pulley/rope_half.json | 39 +++ .../models/block/mechanical_drill/item.json | 10 +- .../block/mechanical_harvester/item.json | 323 +++++++++--------- .../models/block/mechanical_plough.json | 7 +- .../models/block/mechanical_saw/item.json | 197 +++++------ .../textures/block/contraption_controls.png | Bin 0 -> 7358 bytes .../block/contraption_controls_frame.png | Bin 0 -> 3408 bytes .../block/contraption_controls_indicator.png | Bin 0 -> 2945 bytes .../textures/block/elevator_contact_side.png | Bin 0 -> 330 bytes .../block/elevator_contact_side_dim.png | Bin 0 -> 361 bytes .../block/elevator_contact_side_powered.png | Bin 0 -> 357 bytes .../create/textures/block/elevator_pulley.png | Bin 0 -> 795 bytes .../textures/block/elevator_pulley_belt.png | Bin 0 -> 394 bytes .../block/elevator_pulley_belt_scroll.png | Bin 0 -> 409 bytes .../textures/block/elevator_pulley_coil.png | Bin 0 -> 306 bytes .../block/elevator_pulley_coil_scroll.png | Bin 0 -> 277 bytes .../textures/block/rose_quartz_lamp_dim.png | Bin 0 -> 320 bytes .../create/textures/gui/display_link.png | Bin 1164 -> 2037 bytes 138 files changed, 5615 insertions(+), 466 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/contraption_controls.json create mode 100644 src/generated/resources/assets/create/blockstates/elevator_contact.json create mode 100644 src/generated/resources/assets/create/blockstates/elevator_pulley.json create mode 100644 src/generated/resources/assets/create/models/item/contraption_controls.json create mode 100644 src/generated/resources/assets/create/models/item/elevator_contact.json create mode 100644 src/generated/resources/assets/create/models/item/elevator_pulley.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/contraption_controls.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/elevator_contact.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/elevator_pulley.json create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsBlock.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovingInteraction.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsTileEntity.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionDisableActorPacket.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorColumn.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactEditPacket.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactScreen.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactTileEntity.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorControlsHandler.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorFloorListPacket.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyBlock.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyInstance.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyRenderer.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/display/source/CurrentFloorDisplaySource.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/block/redstone/RedstoneContactItem.java create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/block.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/button.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_0.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_1.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_2.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_3.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_4.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_5.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_6.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/indicator_7.json create mode 100644 src/main/resources/assets/create/models/block/contraption_controls/item.json create mode 100644 src/main/resources/assets/create/models/block/elevator_contact/block.json create mode 100644 src/main/resources/assets/create/models/block/elevator_contact/block_dim.json create mode 100644 src/main/resources/assets/create/models/block/elevator_contact/block_powered.json create mode 100644 src/main/resources/assets/create/models/block/elevator_pulley/block.json create mode 100644 src/main/resources/assets/create/models/block/elevator_pulley/item.json create mode 100644 src/main/resources/assets/create/models/block/elevator_pulley/pulley_magnet.json create mode 100644 src/main/resources/assets/create/models/block/elevator_pulley/rope.json create mode 100644 src/main/resources/assets/create/models/block/elevator_pulley/rope_coil.json create mode 100644 src/main/resources/assets/create/models/block/elevator_pulley/rope_half.json create mode 100644 src/main/resources/assets/create/textures/block/contraption_controls.png create mode 100644 src/main/resources/assets/create/textures/block/contraption_controls_frame.png create mode 100644 src/main/resources/assets/create/textures/block/contraption_controls_indicator.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_contact_side.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_contact_side_dim.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_contact_side_powered.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_pulley.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_pulley_belt.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_pulley_belt_scroll.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_pulley_coil.png create mode 100644 src/main/resources/assets/create/textures/block/elevator_pulley_coil_scroll.png create mode 100644 src/main/resources/assets/create/textures/block/rose_quartz_lamp_dim.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index c345e5268..4cb3fe1d5 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -50,6 +50,7 @@ b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json 1f33834c685e3243882acfe20183fe64dfa872be assets/create/blockstates/clutch.json e5e3757e99c139d67b2a70288466d8a74d818841 assets/create/blockstates/cogwheel.json 36f54136a7756c97f71bc6b47ef4e8e575e72879 assets/create/blockstates/content_observer.json +7ecbf72c0557d97514aadc5a794bd8720c2fc48b assets/create/blockstates/contraption_controls.json 7d11142092c89ccba3e74e0a3bdd0ccb446d63b5 assets/create/blockstates/controller_rail.json 80d71365995d4c2a61dd1c15e99cae18551af6e8 assets/create/blockstates/controls.json 961b615124ea9a5a5735e8a79f81a702de7da2cf assets/create/blockstates/copper_backtank.json @@ -199,6 +200,8 @@ ac85f55d82d96fc15750e6b954297cfd1e00d04d assets/create/blockstates/deployer.json 62cc543abb242836570d07d619fcdb4c79c75db4 assets/create/blockstates/display_board.json 6766818ea63026a3af2fb9d81110d3887c74b0f8 assets/create/blockstates/display_link.json 30b3422bfee9878c92521429b2536d3e0313cedb assets/create/blockstates/dripstone_pillar.json +8c3ab1fc1fa0f705145212c62bde4787be392ac0 assets/create/blockstates/elevator_contact.json +98eaeef191c52eaf0f08cf2251237d704a4fc9ad assets/create/blockstates/elevator_pulley.json 35fc68eb1d031d28ad09b7b603e64ae459634179 assets/create/blockstates/encased_chain_drive.json 7b2b836649e729feafa60972bf95e3afb2143131 assets/create/blockstates/encased_fan.json d13940ed213d7acbc6ebe3bdd21175ef89e4d613 assets/create/blockstates/encased_fluid_pipe.json @@ -558,24 +561,24 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json -c219c77242e645f32704201dd80e279b3759b794 assets/create/lang/en_us.json -cf37534c3f98098f42b181083fd7cc1063ac2bbb assets/create/lang/unfinished/de_de.json -83d427726fdc38ec3c5b8c3c0f6f87f49d3e5ff3 assets/create/lang/unfinished/es_cl.json -d21caeb0cbe871e38dc101c34ab89ece3cbe2127 assets/create/lang/unfinished/es_es.json -2215688baa2b0beffe0c19f71a3238df1d01b0c1 assets/create/lang/unfinished/fr_fr.json -79484f2c3eba2b40f5d82ffdc3abeb3d2e6962d2 assets/create/lang/unfinished/it_it.json -d659570c9dc89653f03cd4cc82ed50db443638d8 assets/create/lang/unfinished/ja_jp.json -03c30521d9b1bc7a6eb85d2a59a4c4676dca581e assets/create/lang/unfinished/ko_kr.json -3a56d579d022cc1b20746e9d3a1483e6fa8fb4be assets/create/lang/unfinished/nl_nl.json -d5bfeacb442236c8b075fddb41364f85c8cb7feb assets/create/lang/unfinished/pl_pl.json -0f3f51d065d896a7e3b4abd8c2801fa3e8fbd8c3 assets/create/lang/unfinished/pt_br.json -9f2ec0b2f8fa9b380c7edb56bfb806bcce621cce assets/create/lang/unfinished/pt_pt.json -1f88f0d91bdf5c68224cb65249f77272771939c9 assets/create/lang/unfinished/ro_ro.json -928ac3ad2ab5e7fa3d582b8b956258c110bea868 assets/create/lang/unfinished/ru_ru.json -ed29ef4ae8f3633533485d56f7fa8cb77b790a0a assets/create/lang/unfinished/uk_ua.json -e5cf7b657be816bc15b331dd058f7ccdabee8c14 assets/create/lang/unfinished/zh_cn.json -316dae07f95fb65c984fe7c424b566eb8ddba5f9 assets/create/lang/unfinished/zh_tw.json +030897fc54ff8948c4f75c12fc0cb75b7533a7d3 assets/create/lang/en_ud.json +b1efd3b09b9b99864c62946609e2fda2b27289ca assets/create/lang/en_us.json +0674019c1a174515a411399f8072014c0262e9e3 assets/create/lang/unfinished/de_de.json +c97060d5ac1e4e1ec44e9c24ddfe981414c5d38c assets/create/lang/unfinished/es_cl.json +118ccd144daec81fd505cd09f97d55dc054a663b assets/create/lang/unfinished/es_es.json +26fc490f390650044c853be59d6b27e2bd0accc5 assets/create/lang/unfinished/fr_fr.json +d64bcf8740ef1c117148388399f332015b1a35c2 assets/create/lang/unfinished/it_it.json +cc277bc6cc78bf7c943b428321d685a64bc25ebd assets/create/lang/unfinished/ja_jp.json +0c9199e23e24af99b7878b9278308ebf63db1eb9 assets/create/lang/unfinished/ko_kr.json +086ca8f196d987b1bb0b7cfe2b285c173d46a499 assets/create/lang/unfinished/nl_nl.json +0ce3cc278b14d36493f48aeb221ce9f6e7153b3f assets/create/lang/unfinished/pl_pl.json +7ef6bb7a596f4d5ac9273a0f5e8424229ca457ee assets/create/lang/unfinished/pt_br.json +c93a7d9275c0cc755e859ad57e352b9f1e2ee2f9 assets/create/lang/unfinished/pt_pt.json +c4aaebf10dd4a94e64d0fc2f48e4242d63cc6f71 assets/create/lang/unfinished/ro_ro.json +2fddf07de6613c3d680a645325d83d925c82aebc assets/create/lang/unfinished/ru_ru.json +ab7e76507c58c93e2e0619bbf78dd1a7c6459b00 assets/create/lang/unfinished/uk_ua.json +46e97308f1bfe26232952139f99d902f7f465c1a assets/create/lang/unfinished/zh_cn.json +d0d72e70e30f7d3a02293f15acd31e042deda59b 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 @@ -1675,6 +1678,7 @@ c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bea 0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets/create/models/item/clutch.json dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json 7717e3b21cff39f497f07687c70c1fa40eaa756d assets/create/models/item/content_observer.json +f5f1ad973341f8bebc474d5e65ff877ac6303b0d assets/create/models/item/contraption_controls.json 9dbd63c9e1b09a663fd4b83d76e3ab5967086167 assets/create/models/item/controller_rail.json 9a93b3ccef02cd0abd8106edec954dc0f2269229 assets/create/models/item/controls.json 10397036fc0bb1e18a767cfd7b19b10d805a83fe assets/create/models/item/copper_backtank.json @@ -1844,6 +1848,8 @@ df8cfe7e8eb527329094396e11222e9097e309d7 assets/create/models/item/diving_helmet 4b2af721dccfcf4e5b5a7b0f64f295d7cfd27f69 assets/create/models/item/dough.json c25cd4d5cdf67b0d7e15f5a56c63e6bf35fe2917 assets/create/models/item/dripstone_pillar.json 5c45bf31bc4b6d2c6482318f19a660ad949d796b assets/create/models/item/electron_tube.json +5958eae9379424b0bdaef0d4230185773aa351e0 assets/create/models/item/elevator_contact.json +485f89a600a98141a2826ecef5bf32a83060efbf assets/create/models/item/elevator_pulley.json 971be8e52e8dfef50c8329be83f9c5d5ea869279 assets/create/models/item/empty_blaze_burner.json 5312db341e777c79feeaec99e5cb85bb99bb76ff assets/create/models/item/empty_schematic.json cf34fd7e891a131d763126aa070d5b919e304a51 assets/create/models/item/encased_chain_drive.json @@ -3426,6 +3432,7 @@ bd4ed53c029fcd6e5da7e43ebe4d15030d3fd9de data/create/loot_tables/blocks/clockwor 8a5655e16f3da654e801cbfd81478c30180892a0 data/create/loot_tables/blocks/clutch.json 982a41e1bccd9a130a2874aff995d4f7da0f0316 data/create/loot_tables/blocks/cogwheel.json c2b075008849e152f20e8da946e89c9722325df6 data/create/loot_tables/blocks/content_observer.json +69b4b25d7d271458177fbbaeba2c797daccc38a2 data/create/loot_tables/blocks/contraption_controls.json 28856dc862efc6bcc421d035d26386740458f868 data/create/loot_tables/blocks/controller_rail.json 2c2785e39e1891dff2c50cba93e814b56d935154 data/create/loot_tables/blocks/controls.json 3abf04f6132955275ad490668cd28f481afb4ec2 data/create/loot_tables/blocks/copper_backtank.json @@ -3574,6 +3581,8 @@ b6118279802f1a27e6e0c3d0feca86f0792f85df data/create/loot_tables/blocks/depot.js 2a8d81a07e9d209349264787eee93a0b973d2510 data/create/loot_tables/blocks/display_board.json fd63effdc29cf565f561f8901a93c8ee3124bcaa data/create/loot_tables/blocks/display_link.json 7ab5f0aa32d6641999943636766c806a1d59e1d2 data/create/loot_tables/blocks/dripstone_pillar.json +5ef611585677ea3108fa034b2629434a98a9bb5c data/create/loot_tables/blocks/elevator_contact.json +3dd62aeec55972379dbf1b6a5033891cb190cbb2 data/create/loot_tables/blocks/elevator_pulley.json 2186860c4a0cb47a66bdfdefcde302c599cddeea data/create/loot_tables/blocks/encased_chain_drive.json 7fcc15674a7583b965441fb079b8997e4244a4ff data/create/loot_tables/blocks/encased_fan.json b4df9a8b28f29587e75ffe11ca26d85ddbe926da data/create/loot_tables/blocks/encased_fluid_pipe.json @@ -5720,13 +5729,13 @@ cfa16b75227c9bf4f245c97ac55999b3903e5471 data/forge/tags/items/stripped_logs.jso e002dfedc5e8762de0f97ea1f3fa546e92e748ae data/forge/tags/items/tools/wrench.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/azalea_root_replaceable.json 9f7a428085b1aac66da32a43e9d51c7efc1f0d81 data/minecraft/tags/blocks/beacon_base_blocks.json -dea0b54b33b1ae3b4fa8091dfcc4ad5687978ab1 data/minecraft/tags/blocks/climbable.json +f5cc2ea490ede338c9ea94a5775ad626b0ebc83b data/minecraft/tags/blocks/climbable.json e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/blocks/doors.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json -71480793b5e5ac5eb33c5271118c62227a2769d8 data/minecraft/tags/blocks/mineable/axe.json -77511f0fca91aa40c8b2566bf9bfb78964a56db3 data/minecraft/tags/blocks/mineable/pickaxe.json +f1d3b91aab8ea3c59a06b8ccc1a469b3ef953220 data/minecraft/tags/blocks/mineable/axe.json +95508e50d0c11690a4a8938c731930cca3384c90 data/minecraft/tags/blocks/mineable/pickaxe.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json diff --git a/src/generated/resources/assets/create/blockstates/contraption_controls.json b/src/generated/resources/assets/create/blockstates/contraption_controls.json new file mode 100644 index 000000000..c2c6be7bf --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/contraption_controls.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=north,open=false,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=false,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=false,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=false,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 90 + }, + "facing=north,open=true,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=true,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=true,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=true,virtual=false,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 90 + }, + "facing=north,open=false,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=false,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=false,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=false,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 90 + }, + "facing=north,open=true,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=true,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=true,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=true,virtual=true,waterlogged=false": { + "model": "create:block/contraption_controls/block", + "y": 90 + }, + "facing=north,open=false,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=false,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=false,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=false,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 90 + }, + "facing=north,open=true,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=true,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=true,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=true,virtual=false,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 90 + }, + "facing=north,open=false,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=false,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=false,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=false,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 90 + }, + "facing=north,open=true,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block" + }, + "facing=south,open=true,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 180 + }, + "facing=west,open=true,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 270 + }, + "facing=east,open=true,virtual=true,waterlogged=true": { + "model": "create:block/contraption_controls/block", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/elevator_contact.json b/src/generated/resources/assets/create/blockstates/elevator_contact.json new file mode 100644 index 000000000..33bbc03f6 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/elevator_contact.json @@ -0,0 +1,212 @@ +{ + "variants": { + "calling=false,facing=down,powered=false,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 180 + }, + "calling=true,facing=down,powered=false,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 180 + }, + "calling=false,facing=up,powered=false,powering=false": { + "model": "create:block/elevator_contact/block" + }, + "calling=true,facing=up,powered=false,powering=false": { + "model": "create:block/elevator_contact/block_dim" + }, + "calling=false,facing=north,powered=false,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90 + }, + "calling=true,facing=north,powered=false,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90 + }, + "calling=false,facing=south,powered=false,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90, + "y": 180 + }, + "calling=true,facing=south,powered=false,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90, + "y": 180 + }, + "calling=false,facing=west,powered=false,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90, + "y": 270 + }, + "calling=true,facing=west,powered=false,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90, + "y": 270 + }, + "calling=false,facing=east,powered=false,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90, + "y": 90 + }, + "calling=true,facing=east,powered=false,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90, + "y": 90 + }, + "calling=false,facing=down,powered=true,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 180 + }, + "calling=true,facing=down,powered=true,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 180 + }, + "calling=false,facing=up,powered=true,powering=false": { + "model": "create:block/elevator_contact/block" + }, + "calling=true,facing=up,powered=true,powering=false": { + "model": "create:block/elevator_contact/block_dim" + }, + "calling=false,facing=north,powered=true,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90 + }, + "calling=true,facing=north,powered=true,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90 + }, + "calling=false,facing=south,powered=true,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90, + "y": 180 + }, + "calling=true,facing=south,powered=true,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90, + "y": 180 + }, + "calling=false,facing=west,powered=true,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90, + "y": 270 + }, + "calling=true,facing=west,powered=true,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90, + "y": 270 + }, + "calling=false,facing=east,powered=true,powering=false": { + "model": "create:block/elevator_contact/block", + "x": 90, + "y": 90 + }, + "calling=true,facing=east,powered=true,powering=false": { + "model": "create:block/elevator_contact/block_dim", + "x": 90, + "y": 90 + }, + "calling=false,facing=down,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 180 + }, + "calling=true,facing=down,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 180 + }, + "calling=false,facing=up,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered" + }, + "calling=true,facing=up,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered" + }, + "calling=false,facing=north,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90 + }, + "calling=true,facing=north,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90 + }, + "calling=false,facing=south,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 180 + }, + "calling=true,facing=south,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 180 + }, + "calling=false,facing=west,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 270 + }, + "calling=true,facing=west,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 270 + }, + "calling=false,facing=east,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 90 + }, + "calling=true,facing=east,powered=false,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 90 + }, + "calling=false,facing=down,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 180 + }, + "calling=true,facing=down,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 180 + }, + "calling=false,facing=up,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered" + }, + "calling=true,facing=up,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered" + }, + "calling=false,facing=north,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90 + }, + "calling=true,facing=north,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90 + }, + "calling=false,facing=south,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 180 + }, + "calling=true,facing=south,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 180 + }, + "calling=false,facing=west,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 270 + }, + "calling=true,facing=west,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 270 + }, + "calling=false,facing=east,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 90 + }, + "calling=true,facing=east,powered=true,powering=true": { + "model": "create:block/elevator_contact/block_powered", + "x": 90, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/elevator_pulley.json b/src/generated/resources/assets/create/blockstates/elevator_pulley.json new file mode 100644 index 000000000..b01fd9b7d --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/elevator_pulley.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "create:block/elevator_pulley/block" + }, + "facing=south": { + "model": "create:block/elevator_pulley/block", + "y": 180 + }, + "facing=west": { + "model": "create:block/elevator_pulley/block", + "y": 270 + }, + "facing=east": { + "model": "create:block/elevator_pulley/block", + "y": 90 + } + } +} \ 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 d57821dd5..d25c3ca47 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -51,6 +51,7 @@ "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", "block.create.content_observer": "\u0279\u01DD\u028C\u0279\u01DDsqO \u0287u\u01DD\u0287uo\u0186", + "block.create.contraption_controls": "s\u05DFo\u0279\u0287uo\u0186 uo\u0131\u0287d\u0250\u0279\u0287uo\u0186", "block.create.controller_rail": "\u05DF\u0131\u0250\u1D1A \u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186", "block.create.controls": "s\u05DFo\u0279\u0287uo\u0186 u\u0131\u0250\u0279\u27D8", "block.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", @@ -200,6 +201,8 @@ "block.create.display_board": "p\u0279\u0250o\u15FA \u028E\u0250\u05DFds\u0131\u15E1", "block.create.display_link": "\u029Eu\u0131\uA780 \u028E\u0250\u05DFds\u0131\u15E1", "block.create.dripstone_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DDuo\u0287sd\u0131\u0279\u15E1", + "block.create.elevator_contact": "\u0287\u0254\u0250\u0287uo\u0186 \u0279o\u0287\u0250\u028C\u01DD\u05DF\u018E", + "block.create.elevator_pulley": "\u028E\u01DD\u05DF\u05DFn\u0500 \u0279o\u0287\u0250\u028C\u01DD\u05DF\u018E", "block.create.encased_chain_drive": "\u01DD\u028C\u0131\u0279\u15E1 u\u0131\u0250\u0265\u0186 p\u01DDs\u0250\u0254u\u018E", "block.create.encased_fan": "u\u0250\u2132 p\u01DDs\u0250\u0254u\u018E", "block.create.encased_fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132 p\u01DDs\u0250\u0254u\u018E", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index f29227a7a..f1be35b9c 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -54,6 +54,7 @@ "block.create.clutch": "Clutch", "block.create.cogwheel": "Cogwheel", "block.create.content_observer": "Content Observer", + "block.create.contraption_controls": "Contraption Controls", "block.create.controller_rail": "Controller Rail", "block.create.controls": "Train Controls", "block.create.copper_backtank": "Copper Backtank", @@ -203,6 +204,8 @@ "block.create.display_board": "Display Board", "block.create.display_link": "Display Link", "block.create.dripstone_pillar": "Dripstone Pillar", + "block.create.elevator_contact": "Elevator Contact", + "block.create.elevator_pulley": "Elevator Pulley", "block.create.encased_chain_drive": "Encased Chain Drive", "block.create.encased_fan": "Encased Fan", "block.create.encased_fluid_pipe": "Encased Fluid Pipe", @@ -1423,6 +1426,10 @@ "create.boiler.via_one_engine": "via 1 engine", "create.boiler.via_engines": "via %1$s engines", + "create.elevator_contact.title": "Elevator Contact", + "create.elevator_contact.floor_identifier": "Floor Identifier", + "create.elevator_contact.floor_description": "Floor Description", + "create.gui.schedule.lmb_edit": "Left-Click to Edit", "create.gui.schedule.rmb_remove": "Right-Click to Remove", "create.gui.schedule.duplicate": "Duplicate", @@ -1628,6 +1635,10 @@ "create.contraption.controls.start_controlling": "Now controlling: %1$s", "create.contraption.controls.stop_controlling": "Stopped controlling contraption", "create.contraption.controls.approach_station": "Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "%1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "On", + "create.contraption.controls.actor_toggle.off": "Off", "create.display_link.set": "Targeted position selected", "create.display_link.success": "Successfully bound to targeted position", @@ -1690,6 +1701,7 @@ "create.display_source.max_enchant_level": "Max Enchanting Cost", "create.display_source.boiler_status": "Boiler Status", "create.display_source.entity_name": "Entity Name", + "create.display_source.current_floor": "Elevator Location", "create.display_source.kinetic_speed": "Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "Ignore Direction", "create.display_source.kinetic_speed.directional": "Include Direction", 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 ec0ab8c0d..d567eac6b 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: 842", + "_": "Missing Localizations: 853", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Steuerungsschiene", "block.create.controls": "Zugsteuerung", "block.create.copper_backtank": "Kupferne Druckluftflasche", @@ -204,6 +205,8 @@ "block.create.display_board": "Anzeigetafel", "block.create.display_link": "Anzeige-Link", "block.create.dripstone_pillar": "Tropfstein-Säule", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Ummantelter Kettenriemen", "block.create.encased_fan": "Ummantelter Lüfter", "block.create.encased_fluid_pipe": "Ummanteltes Rohr", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "mit einer Dampfmaschine", "create.boiler.via_engines": "mit %1$s Dampfmaschinen", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "Links-Klick zum Bearbeiten", "create.gui.schedule.rmb_remove": "Rechts-Klick zum Entfernen", "create.gui.schedule.duplicate": "Duplizieren", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "Du steuerst jetzt: %1$s", "create.contraption.controls.stop_controlling": "Du steuerst den Zug nicht mehr", "create.contraption.controls.approach_station": "Halte %1$s gedrückt, um bei %2$s zu halten", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "Anvisierte Position ausgewählt", "create.display_link.success": "Erfolgreich mit ausgewählter Position gebunden", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "Max. Verzauberungskosten", "create.display_source.boiler_status": "Kesselstatus", "create.display_source.entity_name": "Entitätenname", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "Drehgeschwindigkeit (RPM)", "create.display_source.kinetic_speed.absolute": "Ignoriere Richtung", "create.display_source.kinetic_speed.directional": "Beachte Richtung", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index b1cb4225f..78a7e6d2b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 988", + "_": "Missing Localizations: 999", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Embrague", "block.create.cogwheel": "Engranaje", "block.create.content_observer": "Observador de Contenidos", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Raíl Controlador", "block.create.controls": "UNLOCALIZED: Train Controls", "block.create.copper_backtank": "Tanque-Mochila de Cobre", @@ -204,6 +205,8 @@ "block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_link": "UNLOCALIZED: Display Link", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Conductor en Cadena Encubierto", "block.create.encased_fan": "Ventilador Encubierto", "block.create.encased_fluid_pipe": "Tubería de Fluidos Encubierta", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", 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 9866e0ed4..3f5be979d 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: 8", + "_": "Missing Localizations: 19", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Embrague", "block.create.cogwheel": "Engranaje", "block.create.content_observer": "Observador de contenidos", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Raíl de control", "block.create.controls": "Controles de tren", "block.create.copper_backtank": "Depósito trasero de cobre", @@ -204,6 +205,8 @@ "block.create.display_board": "Pantalla de visualización", "block.create.display_link": "Enlace de pantalla", "block.create.dripstone_pillar": "Pilar de espeleotema", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Cadena de transmisión revestida", "block.create.encased_fan": "Ventilador revestido", "block.create.encased_fluid_pipe": "Tubería de fluidos de cobre reforzada", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "a través de 1 motor", "create.boiler.via_engines": "a través de %1$s motores", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "Clic izquierdo para editar", "create.gui.schedule.rmb_remove": "Clic derecho para eliminar", "create.gui.schedule.duplicate": "Duplicar", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "Controlando actualmente: %1$s", "create.contraption.controls.stop_controlling": "Se ha parado de controlar el artefacto móvil", "create.contraption.controls.approach_station": "Mantén %1$s para acercarte a %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "Posición objetivo seleccionada", "create.display_link.success": "Posición objetivo vinculada con éxito", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "Coste máximo de encantamiento", "create.display_source.boiler_status": "Estado de la caldera", "create.display_source.entity_name": "Nombre de la entidad", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "Velocidad de rotación (RPM)", "create.display_source.kinetic_speed.absolute": "Ignorar dirección", "create.display_source.kinetic_speed.directional": "Incluir direcció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 a40d4bfce..5a4ee5f26 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: 2139", + "_": "Missing Localizations: 2150", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Embrayage", "block.create.cogwheel": "Roue dentée", "block.create.content_observer": "Observateur de contenu", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Rails controlleurs", "block.create.controls": "UNLOCALIZED: Train Controls", "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", @@ -204,6 +205,8 @@ "block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_link": "UNLOCALIZED: Display Link", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Chaine de transmission", "block.create.encased_fan": "Ventilateur enchâssé", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", 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 39c5e5ac9..9324ec9b6 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: 2", + "_": "Missing Localizations: 13", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Frizione", "block.create.cogwheel": "Ingranaggio", "block.create.content_observer": "Osservatore di contenuti", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Binario di controllo", "block.create.controls": "Comandi del treno", "block.create.copper_backtank": "Zaino serbatoio", @@ -204,6 +205,8 @@ "block.create.display_board": "Tabellone", "block.create.display_link": "Lettore di dati", "block.create.dripstone_pillar": "Pilastro di speleotema", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Trasmissione a catena", "block.create.encased_fan": "Ventilatore", "block.create.encased_fluid_pipe": "Tubo per fluidi rivestito", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "tramite 1 motore", "create.boiler.via_engines": "tramite %1$s motori", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "Click sinistro per modificare", "create.gui.schedule.rmb_remove": "Click destro per rimuovere", "create.gui.schedule.duplicate": "Duplica", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "Al comando di: %1$s", "create.contraption.controls.stop_controlling": "Hai smesso di guidare il macchinario", "create.contraption.controls.approach_station": "Tieni premuto %1$s per fermarti a %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "Bersaglio selezionato", "create.display_link.success": "Connesso con successo alla posizione selezionata", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "Livello massimo", "create.display_source.boiler_status": "Stato della Caldaia", "create.display_source.entity_name": "Nome entità", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "Velocità di rotazione", "create.display_source.kinetic_speed.absolute": "Ignora direzione", "create.display_source.kinetic_speed.directional": "Includi direzione", 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 29408f90f..34fdc20ca 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: 4", + "_": "Missing Localizations: 15", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "クラッチ", "block.create.cogwheel": "歯車", "block.create.content_observer": "コンテンツオブザーバー", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "コントローラーレール", "block.create.controls": "列車運転台", "block.create.copper_backtank": "銅のバックタンク", @@ -204,6 +205,8 @@ "block.create.display_board": "ディスプレイボード", "block.create.display_link": "ディスプレイリンク", "block.create.dripstone_pillar": "鍾乳石の柱", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "ケース入りチェーンドライブ", "block.create.encased_fan": "ケース入りファン", "block.create.encased_fluid_pipe": "ケース入り液体パイプ", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "1基のエンジン経由", "create.boiler.via_engines": "%1$s基のエンジン経由", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "左クリックで編集", "create.gui.schedule.rmb_remove": "右クリックで削除", "create.gui.schedule.duplicate": "複製", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "運転中: %1$s", "create.contraption.controls.stop_controlling": "運転終了", "create.contraption.controls.approach_station": "%1$sキーを長押しで%2$sに停車", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "対象の位置を選択しました", "create.display_link.success": "対象の位置と結び付けられました", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "最大エンチャントコスト", "create.display_source.boiler_status": "ボイラー状態", "create.display_source.entity_name": "エンティティ名", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "回転速度(RPM)", "create.display_source.kinetic_speed.absolute": "回転方向を無視", "create.display_source.kinetic_speed.directional": "回転方向を含める", 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 92e403ed6..80394cd5a 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: 8", + "_": "Missing Localizations: 19", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "클러치", "block.create.cogwheel": "톱니바퀴", "block.create.content_observer": "정보 감지기", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "방향 레일", "block.create.controls": "기차 조종기", "block.create.copper_backtank": "구리 산소통", @@ -204,6 +205,8 @@ "block.create.display_board": "디스플레이 화면", "block.create.display_link": "디스플레이 링크", "block.create.dripstone_pillar": "점적석 기둥", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "체인 드라이브", "block.create.encased_fan": "선풍기", "block.create.encased_fluid_pipe": "구리 케이스를 씌운 파이프", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "엔진 1개", "create.boiler.via_engines": "엔진 %1$s개", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "좌클릭으로 수정", "create.gui.schedule.rmb_remove": "우클릭으로 삭제", "create.gui.schedule.duplicate": "복제", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "%1$s를 조종합니다", "create.contraption.controls.stop_controlling": "구조물 조종을 멈췄습니다", "create.contraption.controls.approach_station": "%1$s을(를) 눌러 %2$s에 접근합니다", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "표시할 대상을 선택했습니다", "create.display_link.success": "성공적으로 대상과 연결되었습니다", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "최대 마법부여 수치", "create.display_source.boiler_status": "보일러 상태", "create.display_source.entity_name": "엔티티 이름", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "회전 속도 (RPM)", "create.display_source.kinetic_speed.absolute": "방향 무시", "create.display_source.kinetic_speed.directional": "방향 포함", 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 319e3974f..207b4ac50 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: 2487", + "_": "Missing Localizations: 2498", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Koppeling", "block.create.cogwheel": "Tandwiel", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.controls": "UNLOCALIZED: Train Controls", "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", @@ -204,6 +205,8 @@ "block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_link": "UNLOCALIZED: Display Link", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "UNLOCALIZED: Encased Chain Drive", "block.create.encased_fan": "Omhulsde Ventilator", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", 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 be600d683..eca30b91b 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: 12", + "_": "Missing Localizations: 23", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Sprzęgło", "block.create.cogwheel": "Koło zębate", "block.create.content_observer": "Detektor zawartości", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Tory sterujące", "block.create.controls": "Kontroler pociągów", "block.create.copper_backtank": "Miedziany zbiornik w plecaku", @@ -204,6 +205,8 @@ "block.create.display_board": "Tablica wyświetlająca", "block.create.display_link": "Nadajnik wyświetlacza", "block.create.dripstone_pillar": "Naciekowy filar", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Izolowany przekaźnik łańcuchowy", "block.create.encased_fan": "Izolowany wiatrak", "block.create.encased_fluid_pipe": "Izolowana rura", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "poprzez 1 silnik", "create.boiler.via_engines": "poprzez %1$s silniki(ów)", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "Kliknij LPM, aby edytować", "create.gui.schedule.rmb_remove": "Kliknij PPM, aby usunąć", "create.gui.schedule.duplicate": "Duplikuj", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "Teraz kontrolowane: %1$s", "create.contraption.controls.stop_controlling": "Przestano kontrolować maszynę", "create.contraption.controls.approach_station": "Przytrzymaj %1$s aby podjechać do %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "Pozycja docelowa zaznaczona", "create.display_link.success": "Pomyślnie przypisano do pozycji docelowej", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "Maksymalny koszt zaklinania", "create.display_source.boiler_status": "Stan boilera", "create.display_source.entity_name": "Nazwa bytu", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "Prędkość obrotu (Ob/min)", "create.display_source.kinetic_speed.absolute": "Ignoruj kierunek", "create.display_source.kinetic_speed.directional": "Pokaż kierunek", 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 4be946869..a06725447 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: 1331", + "_": "Missing Localizations: 1342", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Embreagem", "block.create.cogwheel": "Roda Dentada", "block.create.content_observer": "Observador de Conteúdo", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Trilho Controlador", "block.create.controls": "Controles do trem", "block.create.copper_backtank": "Tanque Traseiro de Cobre", @@ -204,6 +205,8 @@ "block.create.display_board": "Placa de exibição", "block.create.display_link": "Conexão de placa de exibição", "block.create.dripstone_pillar": "Pilar de espeleotema", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fluid_pipe": "Cano de Fluidos Revestido", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index a62924d83..4c2e0ac5a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2196", + "_": "Missing Localizations: 2207", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Embreagem", "block.create.cogwheel": "Roda Dentada", "block.create.content_observer": "Observador de Conteúdo", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Trilho Controlador", "block.create.controls": "UNLOCALIZED: Train Controls", "block.create.copper_backtank": "Tanque Traseiro de Cobre", @@ -204,6 +205,8 @@ "block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_link": "UNLOCALIZED: Display Link", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Correia Revestida", "block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fluid_pipe": "Cano de Fluidos Revestido", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 25aa3227a..37d996dec 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 655", + "_": "Missing Localizations: 666", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Ambreiaj", "block.create.cogwheel": "Roată Dințată", "block.create.content_observer": "Observator De Conținut", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Controlor De Șină", "block.create.controls": "UNLOCALIZED: Train Controls", "block.create.copper_backtank": "Backtank De Cupru", @@ -204,6 +205,8 @@ "block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_link": "UNLOCALIZED: Display Link", "block.create.dripstone_pillar": "Coloană De Dripstone", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Lanț De Distribuție Încapsulat", "block.create.encased_fan": "Ventilator Încapsulat", "block.create.encased_fluid_pipe": "Conductă De Fluide Încapsulată", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", 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 28d2f0826..bed5a534d 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: 0", + "_": "Missing Localizations: 11", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Сцепление", "block.create.cogwheel": "Шестерня", "block.create.content_observer": "Наблюдатель за содержимым", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Контролирующие рельсы", "block.create.controls": "Контроллер поезда", "block.create.copper_backtank": "Медный баллон", @@ -204,6 +205,8 @@ "block.create.display_board": "Механическое табло", "block.create.display_link": "Передатчик информации", "block.create.dripstone_pillar": "Колонна из натёчного камня", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Цепной привод в корпусе", "block.create.encased_fan": "Вентилятор в корпусе", "block.create.encased_fluid_pipe": "Жидкостная труба в корпусе", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "с помощью 1 двигателя", "create.boiler.via_engines": "с помощью %1$s двигателей", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "ЛКМ для редактирования", "create.gui.schedule.rmb_remove": "ПКМ для удаления", "create.gui.schedule.duplicate": "Дублировать", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "Под управлением: %1$s", "create.contraption.controls.stop_controlling": "Выход из режима управления", "create.contraption.controls.approach_station": "Зажмите %1$s для прибытия на %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "Выбрана целевая позиция", "create.display_link.success": "Успешно привязан к целевой позиции", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "Уровень чар", "create.display_source.boiler_status": "Статус котла", "create.display_source.entity_name": "Имя существа", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "Обороты в минуту", "create.display_source.kinetic_speed.absolute": "Без направления", "create.display_source.kinetic_speed.directional": "С направлением", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index 94152cfd6..522132907 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 986", + "_": "Missing Localizations: 997", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "Зчеплення", "block.create.cogwheel": "Шестірня", "block.create.content_observer": "Спостерігач вмісту", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "Контролерна рейка", "block.create.controls": "UNLOCALIZED: Train Controls", "block.create.copper_backtank": "Мідний резервуар", @@ -204,6 +205,8 @@ "block.create.display_board": "UNLOCALIZED: Display Board", "block.create.display_link": "UNLOCALIZED: Display Link", "block.create.dripstone_pillar": "UNLOCALIZED: Dripstone Pillar", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "Ланцюговий привід у корпусі", "block.create.encased_fan": "Вентилятор у корпусі", "block.create.encased_fluid_pipe": "Труба для рідини в корпусі", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "UNLOCALIZED: via 1 engine", "create.boiler.via_engines": "UNLOCALIZED: via %1$s engines", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "UNLOCALIZED: Left-Click to Edit", "create.gui.schedule.rmb_remove": "UNLOCALIZED: Right-Click to Remove", "create.gui.schedule.duplicate": "UNLOCALIZED: Duplicate", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "UNLOCALIZED: Now controlling: %1$s", "create.contraption.controls.stop_controlling": "UNLOCALIZED: Stopped controlling contraption", "create.contraption.controls.approach_station": "UNLOCALIZED: Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "UNLOCALIZED: Max Enchanting Cost", "create.display_source.boiler_status": "UNLOCALIZED: Boiler Status", "create.display_source.entity_name": "UNLOCALIZED: Entity Name", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "UNLOCALIZED: Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "UNLOCALIZED: Ignore Direction", "create.display_source.kinetic_speed.directional": "UNLOCALIZED: Include Direction", 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 f4be7ff19..6e9b3c486 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: 0", + "_": "Missing Localizations: 11", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "离合器", "block.create.cogwheel": "齿轮", "block.create.content_observer": "物品侦测器", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "控制铁轨", "block.create.controls": "列车驾驶台", "block.create.copper_backtank": "铜背罐", @@ -204,6 +205,8 @@ "block.create.display_board": "翻牌显示器", "block.create.display_link": "显示链接器", "block.create.dripstone_pillar": "滴水石柱", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "链式传动箱", "block.create.encased_fan": "鼓风机", "block.create.encased_fluid_pipe": "流体管道箱", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "通过1个引擎", "create.boiler.via_engines": "通过%1$s个引擎", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "左键点击编辑", "create.gui.schedule.rmb_remove": "右键点击移除", "create.gui.schedule.duplicate": "复制", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "现在控制:%1$s", "create.contraption.controls.stop_controlling": "停止控制装置", "create.contraption.controls.approach_station": "按住%1$s以接近%2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "已选择目标位置", "create.display_link.success": "成功绑定到目标位置", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "最大附魔花费", "create.display_source.boiler_status": "锅炉状态", "create.display_source.entity_name": "实体名称", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "转速(RPM)", "create.display_source.kinetic_speed.absolute": "无视转向", "create.display_source.kinetic_speed.directional": "包含转向", 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 1af6b480c..a3edce07f 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: 8", + "_": "Missing Localizations: 19", "_": "->------------------------] Game Elements [------------------------<-", @@ -55,6 +55,7 @@ "block.create.clutch": "離合器", "block.create.cogwheel": "齒輪", "block.create.content_observer": "物品偵測器", + "block.create.contraption_controls": "UNLOCALIZED: Contraption Controls", "block.create.controller_rail": "控制軌道", "block.create.controls": "火車控制台", "block.create.copper_backtank": "銅製後背包", @@ -204,6 +205,8 @@ "block.create.display_board": "顯示板", "block.create.display_link": "顯示鏈路", "block.create.dripstone_pillar": "鐘乳石柱", + "block.create.elevator_contact": "UNLOCALIZED: Elevator Contact", + "block.create.elevator_pulley": "UNLOCALIZED: Elevator Pulley", "block.create.encased_chain_drive": "鏈式傳動箱", "block.create.encased_fan": "鼓風機", "block.create.encased_fluid_pipe": "流體管道箱", @@ -1424,6 +1427,10 @@ "create.boiler.via_one_engine": "透過 1 個引擎", "create.boiler.via_engines": "透過 %1$s 個引擎", + "create.elevator_contact.title": "UNLOCALIZED: Elevator Contact", + "create.elevator_contact.floor_identifier": "UNLOCALIZED: Floor Identifier", + "create.elevator_contact.floor_description": "UNLOCALIZED: Floor Description", + "create.gui.schedule.lmb_edit": "左鍵點擊編輯", "create.gui.schedule.rmb_remove": "右鍵點擊移除", "create.gui.schedule.duplicate": "複製", @@ -1629,6 +1636,10 @@ "create.contraption.controls.start_controlling": "正在控制:%1$s", "create.contraption.controls.stop_controlling": "停止控制裝置", "create.contraption.controls.approach_station": "按住 %1$s 以接近 %2$s", + "create.contraption.controls.specific_actor_toggle": "UNLOCALIZED: %1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", + "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", "create.display_link.set": "已選定目標位置", "create.display_link.success": "成功綁定到目標位置", @@ -1691,6 +1702,7 @@ "create.display_source.max_enchant_level": "最大附魔費用", "create.display_source.boiler_status": "鍋爐狀態", "create.display_source.entity_name": "實體名稱", + "create.display_source.current_floor": "UNLOCALIZED: Elevator Location", "create.display_source.kinetic_speed": "轉速 (RPM)", "create.display_source.kinetic_speed.absolute": "無視轉向", "create.display_source.kinetic_speed.directional": "顯示轉向", diff --git a/src/generated/resources/assets/create/models/item/contraption_controls.json b/src/generated/resources/assets/create/models/item/contraption_controls.json new file mode 100644 index 000000000..07a722d36 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/contraption_controls.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/contraption_controls/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/elevator_contact.json b/src/generated/resources/assets/create/models/item/elevator_contact.json new file mode 100644 index 000000000..50fc0dfa9 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/elevator_contact.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/elevator_contact/block" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/elevator_pulley.json b/src/generated/resources/assets/create/models/item/elevator_pulley.json new file mode 100644 index 000000000..df00e5656 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/elevator_pulley.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/elevator_pulley/item" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/contraption_controls.json b/src/generated/resources/data/create/loot_tables/blocks/contraption_controls.json new file mode 100644 index 000000000..69cece520 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/contraption_controls.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:contraption_controls" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/elevator_contact.json b/src/generated/resources/data/create/loot_tables/blocks/elevator_contact.json new file mode 100644 index 000000000..da0d76bbd --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/elevator_contact.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:redstone_contact" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/elevator_pulley.json b/src/generated/resources/data/create/loot_tables/blocks/elevator_pulley.json new file mode 100644 index 000000000..f73be002f --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/elevator_pulley.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:elevator_pulley" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/climbable.json b/src/generated/resources/data/minecraft/tags/blocks/climbable.json index 409891742..0a947eec2 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/climbable.json +++ b/src/generated/resources/data/minecraft/tags/blocks/climbable.json @@ -3,6 +3,8 @@ "values": [ "create:andesite_ladder", "create:brass_ladder", - "create:copper_ladder" + "create:copper_ladder", + "create:rope", + "create:pulley_magnet" ] } \ 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 3dfa8509f..0c6012b4a 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json @@ -42,10 +42,12 @@ "create:mechanical_bearing", "create:clockwork_bearing", "create:rope_pulley", + "create:elevator_pulley", "create:cart_assembler", "create:linear_chassis", "create:secondary_linear_chassis", "create:radial_chassis", + "create:contraption_controls", "create:mechanical_drill", "create:mechanical_saw", "create:deployer", @@ -97,6 +99,7 @@ "create:rotation_speed_controller", "create:mechanical_arm", "create:railway_casing", + "create:elevator_contact", "create:content_observer", "create:stockpile_switch", "create:creative_crate", 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 3394d19b5..8ad563b28 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -89,12 +89,14 @@ "create:mechanical_bearing", "create:clockwork_bearing", "create:rope_pulley", + "create:elevator_pulley", "create:cart_assembler", "create:controller_rail", "create:linear_chassis", "create:secondary_linear_chassis", "create:radial_chassis", "create:sticker", + "create:contraption_controls", "create:mechanical_drill", "create:mechanical_saw", "create:deployer", @@ -124,6 +126,7 @@ "create:train_trapdoor", "create:framed_glass_door", "create:framed_glass_trapdoor", + "create:elevator_contact", "create:item_vault", "create:andesite_funnel", "create:andesite_belt_funnel", diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index 88443bdc2..5979377b7 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -1,7 +1,9 @@ package com.simibubi.create; +import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.jozufozu.flywheel.core.PartialModel; @@ -64,6 +66,9 @@ public class AllBlockPartials { HOSE_MAGNET = block("hose_pulley/pulley_magnet"), HOSE_HALF = block("hose_pulley/rope_half"), HOSE_HALF_MAGNET = block("hose_pulley/rope_half_magnet"), + ELEVATOR_COIL = block("elevator_pulley/rope_coil"), ELEVATOR_MAGNET = block("elevator_pulley/pulley_magnet"), + ELEVATOR_BELT = block("elevator_pulley/rope"), ELEVATOR_BELT_HALF = block("elevator_pulley/rope_half"), + MILLSTONE_COG = block("millstone/inner"), SYMMETRY_PLANE = block("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = block("symmetry_effect/crossplane"), @@ -120,6 +125,7 @@ public class AllBlockPartials { TRAIN_COUPLING_CABLE = block("track/bogey/coupling_cable"), TRAIN_CONTROLS_COVER = block("controls/train/cover"), TRAIN_CONTROLS_LEVER = block("controls/train/lever"), + CONTRAPTION_CONTROLS_BUTTON = block("contraption_controls/button"), ENGINE_PISTON = block("steam_engine/piston"), ENGINE_LINKAGE = block("steam_engine/linkage"), ENGINE_CONNECTOR = block("steam_engine/shaft_connector"), BOILER_GAUGE = block("steam_engine/gauge"), @@ -166,6 +172,7 @@ public class AllBlockPartials { public static final Map METAL_GIRDER_BRACKETS = new EnumMap<>(Direction.class); public static final Map TOOLBOX_LIDS = new EnumMap<>(DyeColor.class); + public static final List CONTRAPTION_CONTROLS_INDICATOR = new ArrayList<>(); static { for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials type : FluidTransportBehaviour.AttachmentTypes.ComponentPartials.values()) { @@ -180,6 +187,8 @@ public class AllBlockPartials { TOOLBOX_LIDS.put(color, block("toolbox/lid/" + Lang.asId(color.name()))); for (Direction d : Iterate.horizontalDirections) METAL_GIRDER_BRACKETS.put(d, block("metal_girder/bracket_" + Lang.asId(d.name()))); + for (int i = 0; i < 8; i++) + CONTRAPTION_CONTROLS_INDICATOR.add(block("contraption_controls/indicator_" + i)); } private static PartialModel block(String path) { diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 1fd9d6434..316fe62b2 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -31,6 +31,9 @@ import com.simibubi.create.content.contraptions.components.actors.SawMovementBeh import com.simibubi.create.content.contraptions.components.actors.SeatBlock; import com.simibubi.create.content.contraptions.components.actors.SeatInteractionBehaviour; import com.simibubi.create.content.contraptions.components.actors.SeatMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsBlock; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovement; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovingInteraction; import com.simibubi.create.content.contraptions.components.clock.CuckooClockBlock; import com.simibubi.create.content.contraptions.components.crafter.CrafterCTBehaviour; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; @@ -66,6 +69,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.cha import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock.ChassisCTBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerBlock; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContactBlock; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorPulleyBlock; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageBlock; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsBlock; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsInteractionBehaviour; @@ -165,6 +170,7 @@ import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock; import com.simibubi.create.content.logistics.block.display.DisplayLinkBlockItem; import com.simibubi.create.content.logistics.block.display.source.AccumulatedItemCountDisplaySource; import com.simibubi.create.content.logistics.block.display.source.BoilerDisplaySource; +import com.simibubi.create.content.logistics.block.display.source.CurrentFloorDisplaySource; import com.simibubi.create.content.logistics.block.display.source.EntityNameDisplaySource; import com.simibubi.create.content.logistics.block.display.source.FillLevelDisplaySource; import com.simibubi.create.content.logistics.block.display.source.FluidAmountDisplaySource; @@ -197,6 +203,7 @@ import com.simibubi.create.content.logistics.block.redstone.ContentObserverBlock import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; import com.simibubi.create.content.logistics.block.redstone.NixieTubeGenerator; import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; +import com.simibubi.create.content.logistics.block.redstone.RedstoneContactItem; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkGenerator; import com.simibubi.create.content.logistics.block.redstone.RoseQuartzLampBlock; @@ -1135,6 +1142,7 @@ public class AllBlocks { public static final BlockEntry ROPE = REGISTRATE.block("rope", PulleyBlock.RopeBlock::new) .initialProperties(SharedProperties.BELT_MATERIAL, MaterialColor.COLOR_BROWN) .tag(AllBlockTags.BRITTLE.tag) + .tag(BlockTags.CLIMBABLE) .properties(p -> p.sound(SoundType.WOOL)) .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) @@ -1144,10 +1152,22 @@ public class AllBlocks { REGISTRATE.block("pulley_magnet", PulleyBlock.MagnetBlock::new) .initialProperties(SharedProperties::stone) .tag(AllBlockTags.BRITTLE.tag) + .tag(BlockTags.CLIMBABLE) .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) .register(); + public static final BlockEntry ELEVATOR_PULLEY = + REGISTRATE.block("elevator_pulley", ElevatorPulleyBlock::new) + .initialProperties(SharedProperties::softMetal) + .properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN)) + .transform(axeOrPickaxe()) + .blockstate(BlockStateGen.horizontalBlockProvider(true)) + .transform(BlockStressDefaults.setImpact(4.0)) + .item() + .transform(customItemModel()) + .register(); + public static final BlockEntry CART_ASSEMBLER = REGISTRATE.block("cart_assembler", CartAssemblerBlock::new) .initialProperties(SharedProperties::stone) @@ -1229,6 +1249,19 @@ public class AllBlocks { .transform(customItemModel()) .register(); + public static final BlockEntry CONTRAPTION_CONTROLS = + REGISTRATE.block("contraption_controls", ContraptionControlsBlock::new) + .initialProperties(SharedProperties::stone) + .properties(p -> p.color(MaterialColor.PODZOL)) + .addLayer(() -> RenderType::cutoutMipped) + .transform(axeOrPickaxe()) + .blockstate((c, p) -> p.horizontalBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p))) + .onRegister(movementBehaviour(new ContraptionControlsMovement())) + .onRegister(interactionBehaviour(new ContraptionControlsMovingInteraction())) + .item() + .transform(customItemModel()) + .register(); + public static final BlockEntry MECHANICAL_DRILL = REGISTRATE.block("mechanical_drill", DrillBlock::new) .initialProperties(SharedProperties::stone) .properties(p -> p.color(MaterialColor.PODZOL)) @@ -1282,7 +1315,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .onRegister(movementBehaviour(new ContactMovementBehaviour())) .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) - .item() + .item(RedstoneContactItem::new) .transform(customItemModel("_", "block")) .register(); @@ -1579,7 +1612,7 @@ public class AllBlocks { .transform(BuilderTransformers.bogey()) .register(); - public static final BlockEntry CONTROLS = REGISTRATE.block("controls", ControlsBlock::new) + public static final BlockEntry TRAIN_CONTROLS = REGISTRATE.block("controls", ControlsBlock::new) .initialProperties(SharedProperties::softMetal) .properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) @@ -1629,9 +1662,28 @@ public class AllBlocks { .addLayer(() -> RenderType::cutoutMipped) .register(); + public static final BlockEntry ELEVATOR_CONTACT = + REGISTRATE.block("elevator_contact", ElevatorContactBlock::new) + .initialProperties(SharedProperties::softMetal) + .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) + .properties(p -> p.lightLevel(ElevatorContactBlock::getLight)) + .transform(axeOrPickaxe()) + .blockstate((c, p) -> p.directionalBlock(c.get(), state -> { + Boolean calling = state.getValue(ElevatorContactBlock.CALLING); + Boolean powering = state.getValue(ElevatorContactBlock.POWERING); + return powering ? AssetLookup.partialBaseModel(c, p, "powered") + : calling ? AssetLookup.partialBaseModel(c, p, "dim") : AssetLookup.partialBaseModel(c, p); + })) + .loot((p, b) -> p.dropOther(b, REDSTONE_CONTACT.get())) + .onRegister(assignDataBehaviour(new CurrentFloorDisplaySource(), "current_floor")) + .item() + .transform(customItemModel("_", "block")) + .register(); + public static final BlockEntry ITEM_VAULT = REGISTRATE.block("item_vault", ItemVaultBlock::new) .initialProperties(SharedProperties::softMetal) - .properties(p -> p.color(MaterialColor.TERRACOTTA_BLUE)) + .properties(p -> p.color( + MaterialColor.TERRACOTTA_BLUE)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK) .explosionResistance(1200)) .transform(pickaxeOnly()) diff --git a/src/main/java/com/simibubi/create/AllMovementBehaviours.java b/src/main/java/com/simibubi/create/AllMovementBehaviours.java index 843ece1f7..8d98bbc7f 100644 --- a/src/main/java/com/simibubi/create/AllMovementBehaviours.java +++ b/src/main/java/com/simibubi/create/AllMovementBehaviours.java @@ -3,7 +3,7 @@ package com.simibubi.create; import java.util.ArrayList; import java.util.List; -import org.jetbrains.annotations.Nullable; +import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.components.actors.BellMovementBehaviour; import com.simibubi.create.content.contraptions.components.actors.CampfireMovementBehaviour; diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 57ae5e08c..a15e9ed28 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -41,6 +41,9 @@ public class AllShapes { .add(2, 13, 2, 14, 16, 14) .add(0, 0, 14, 16, 16, 16) .forHorizontalAxis(), + ELEVATOR_PULLEY = shape(0, 0, 0, 16, 16, 2).add(0, 0, 14, 16, 16, 16) + .add(2, 0, 2, 14, 14, 14) + .forHorizontal(EAST), SAIL_FRAME_COLLISION = shape(0, 5, 0, 16, 9, 16).erase(2, 0, 2, 14, 16, 14) .forDirectional(), SAIL_FRAME = shape(0, 5, 0, 16, 9, 16).forDirectional(), SAIL = shape(0, 5, 0, 16, 10, 16).forDirectional(), @@ -122,6 +125,10 @@ public class AllShapes { .forHorizontalAxis(), CONTROLS = shape(0, 0, 6, 16, 14, 16).forHorizontal(NORTH), + CONTRAPTION_CONTROLS = shape(0, 0, 6, 2, 14, 16).add(14, 0, 6, 16, 14, 16) + .add(0, 0, 14, 16, 14, 16) + .add(0, 0, 7, 16, 10, 16) + .forHorizontal(NORTH), NIXIE_TUBE = shape(9, 0, 5, 15, 12, 11).add(1, 0, 5, 7, 12, 11) .forHorizontalAxis(), @@ -181,8 +188,8 @@ public class AllShapes { // Static Block Shapes public static final VoxelShape - TRACK_CROSS = shape(TRACK_ORTHO.get(SOUTH)).add(TRACK_ORTHO.get(EAST)) - .build(), + TRACK_CROSS = shape(TRACK_ORTHO.get(SOUTH)).add(TRACK_ORTHO.get(EAST)) + .build(), TRACK_CROSS_DIAG = shape(TRACK_DIAG.get(SOUTH)).add(TRACK_DIAG.get(EAST)) .build(), @@ -211,6 +218,7 @@ public class AllShapes { HEATER_BLOCK_SPECIAL_COLLISION_SHAPE = shape(0, 0, 0, 16, 4, 16).build(), CRUSHING_WHEEL_COLLISION_SHAPE = cuboid(0, 0, 0, 16, 16, 16), SEAT = cuboid(0, 0, 0, 16, 8, 16), SEAT_COLLISION = cuboid(0, 0, 0, 16, 6, 16), + SEAT_COLLISION_PLAYERS = cuboid(0, 0, 0, 16, 3, 16), MECHANICAL_PROCESSOR_SHAPE = shape(Shapes.block()).erase(4, 0, 4, 12, 16, 12) .build(), TURNTABLE_SHAPE = shape(1, 4, 1, 15, 8, 15).add(5, 0, 5, 11, 4, 11) diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index 31abb134d..b5efb3573 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -54,13 +54,18 @@ public class AllSpriteShifts { CHASSIS_STICKY = omni("linear_chassis_end_sticky"); public static final CTSpriteShiftEntry BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"), - FLUID_TANK = getCT(AllCTTypes.RECTANGLE, "fluid_tank"), FLUID_TANK_TOP = getCT(AllCTTypes.RECTANGLE, "fluid_tank_top"), + FLUID_TANK = getCT(AllCTTypes.RECTANGLE, "fluid_tank"), + FLUID_TANK_TOP = getCT(AllCTTypes.RECTANGLE, "fluid_tank_top"), FLUID_TANK_INNER = getCT(AllCTTypes.RECTANGLE, "fluid_tank_inner"), CREATIVE_FLUID_TANK = getCT(AllCTTypes.CROSS, "creative_fluid_tank"); public static final Couple VAULT_TOP = vault("top"), VAULT_FRONT = vault("front"), VAULT_SIDE = vault("side"), VAULT_BOTTOM = vault("bottom"); + public static final SpriteShiftEntry ELEVATOR_BELT = + get("block/elevator_pulley_belt", "block/elevator_pulley_belt_scroll"), + ELEVATOR_COIL = get("block/elevator_pulley_coil", "block/elevator_pulley_coil_scroll"); + public static final SpriteShiftEntry BELT = get("block/belt", "block/belt_scroll"), BELT_OFFSET = get("block/belt_offset", "block/belt_scroll"), BELT_DIAGONAL = get("block/belt_diagonal", "block/belt_diagonal_scroll"), diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 3647ad732..baeed8dc6 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -17,6 +17,8 @@ import com.simibubi.create.content.contraptions.components.actors.PSIInstance; import com.simibubi.create.content.contraptions.components.actors.PortableFluidInterfaceTileEntity; import com.simibubi.create.content.contraptions.components.actors.PortableItemInterfaceTileEntity; import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceRenderer; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsRenderer; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsTileEntity; import com.simibubi.create.content.contraptions.components.clock.CuckooClockRenderer; import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterInstance; @@ -65,6 +67,9 @@ import com.simibubi.create.content.contraptions.components.structureMovement.cha import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerInstance; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerTileEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContactTileEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorPulleyRenderer; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorPulleyTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageInstance; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageTileEntity; @@ -476,6 +481,18 @@ public class AllTileEntities { .renderer(() -> PulleyRenderer::new) .register(); + public static final BlockEntityEntry ELEVATOR_PULLEY = Create.registrate() + .tileEntity("elevator_pulley", ElevatorPulleyTileEntity::new) +// .instance(() -> ElevatorPulleyInstance::new, false) + .validBlocks(AllBlocks.ELEVATOR_PULLEY) + .renderer(() -> ElevatorPulleyRenderer::new) + .register(); + + public static final BlockEntityEntry ELEVATOR_CONTACT = Create.registrate() + .tileEntity("elevator_contact", ElevatorContactTileEntity::new) + .validBlocks(AllBlocks.ELEVATOR_CONTACT) + .register(); + public static final BlockEntityEntry CHASSIS = Create.registrate() .tileEntity("chassis", ChassisTileEntity::new) .validBlocks(AllBlocks.RADIAL_CHASSIS, AllBlocks.LINEAR_CHASSIS, AllBlocks.SECONDARY_LINEAR_CHASSIS) @@ -488,6 +505,12 @@ public class AllTileEntities { .validBlocks(AllBlocks.STICKER) .renderer(() -> StickerRenderer::new) .register(); + + public static final BlockEntityEntry CONTRAPTION_CONTROLS = Create.registrate() + .tileEntity("contraption_controls", ContraptionControlsTileEntity::new) + .validBlocks(AllBlocks.CONTRAPTION_CONTROLS) + .renderer(() -> ContraptionControlsRenderer::new) + .register(); public static final BlockEntityEntry DRILL = Create.registrate() .tileEntity("drill", DrillTileEntity::new) @@ -653,7 +676,7 @@ public class AllTileEntities { .validBlocks(AllBlocks.ANALOG_LEVER) .renderer(() -> AnalogLeverRenderer::new) .register(); - + public static final BlockEntityEntry PLACARD = Create.registrate() .tileEntity("placard", PlacardTileEntity::new) .validBlocks(AllBlocks.PLACARD) @@ -780,7 +803,7 @@ public class AllTileEntities { .renderer(() -> TrackRenderer::new) .validBlocks(AllBlocks.TRACK) .register(); - + public static final BlockEntityEntry FAKE_TRACK = Create.registrate() .tileEntity("fake_track", FakeTrackTileEntity::new) .validBlocks(AllBlocks.FAKE_TRACK) @@ -797,7 +820,7 @@ public class AllTileEntities { .renderer(() -> StationRenderer::new) .validBlocks(AllBlocks.TRACK_STATION) .register(); - + public static final BlockEntityEntry SLIDING_DOOR = Create.registrate() .tileEntity("sliding_door", SlidingDoorTileEntity::new) .renderer(() -> SlidingDoorRenderer::new) @@ -816,7 +839,7 @@ public class AllTileEntities { .renderer(() -> SignalRenderer::new) .validBlocks(AllBlocks.TRACK_SIGNAL) .register(); - + public static final BlockEntityEntry TRACK_OBSERVER = Create.registrate() .tileEntity("track_observer", TrackObserverTileEntity::new) .renderer(() -> TrackObserverRenderer::new) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java index 89ebb9582..1a7a7e863 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java @@ -24,8 +24,9 @@ public class DrillMovementBehaviour extends BlockBreakingMovementBehaviour { @Override public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(DrillBlock.FACING) - .getOpposite()); + return super.isActive(context) + && !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(DrillBlock.FACING) + .getOpposite()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java index de07acdd9..9b9efbf08 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java @@ -45,30 +45,31 @@ public class HarvesterActorInstance extends ActorInstance { horizontalAngle = facing.toYRot() + ((facing.getAxis() == Direction.Axis.X) ? 180 : 0); - harvester.setBlockLight(localBlockLight()); - } + harvester.setBlockLight(localBlockLight()); + } - @Override - public void tick() { - super.tick(); + @Override + public void tick() { + super.tick(); - previousRotation = rotation; + previousRotation = rotation; - if (context.contraption.stalled || VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite())) - return; + if (context.contraption.stalled || context.disabled + || VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite())) + return; - double arcLength = context.motion.length(); + double arcLength = context.motion.length(); - double radians = arcLength * oneOverRadius; + double radians = arcLength * oneOverRadius; - float deg = AngleHelper.deg(radians); + float deg = AngleHelper.deg(radians); - deg = (float) (((int) (deg * 3000)) / 3000); + deg = (float) (((int) (deg * 3000)) / 3000); - rotation += deg * 1.25; + rotation += deg * 1.25; - rotation %= 360; - } + rotation %= 360; + } @Override public void beginFrame() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java index 53e6acefc..3367abc84 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java @@ -39,8 +39,9 @@ public class HarvesterMovementBehaviour implements MovementBehaviour { @Override public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(HarvesterBlock.FACING) - .getOpposite()); + return MovementBehaviour.super.isActive(context) + && !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(HarvesterBlock.FACING) + .getOpposite()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java index 9f95c0652..a7bab0a2c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java @@ -38,8 +38,9 @@ public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { @Override public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(PloughBlock.FACING) - .getOpposite()); + return super.isActive(context) + && !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(PloughBlock.FACING) + .getOpposite()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java index 17965f864..d2e36e53b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java @@ -30,8 +30,9 @@ public class SawMovementBehaviour extends BlockBreakingMovementBehaviour { @Override public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(SawBlock.FACING) - .getOpposite()); + return super.isActive(context) + && !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.getValue(SawBlock.FACING) + .getOpposite()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java index 3ebd4be6c..410863415 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java @@ -40,6 +40,7 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.EntityCollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault @@ -127,7 +128,9 @@ public class SeatBlock extends Block implements ProperWaterloggedBlock { @Override public VoxelShape getCollisionShape(BlockState p_220071_1_, BlockGetter p_220071_2_, BlockPos p_220071_3_, - CollisionContext p_220071_4_) { + CollisionContext ctx) { + if (ctx instanceof EntityCollisionContext ecc && ecc.getEntity() instanceof Player) + return AllShapes.SEAT_COLLISION_PLAYERS; return AllShapes.SEAT_COLLISION; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsBlock.java new file mode 100644 index 000000000..cef0a5245 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsBlock.java @@ -0,0 +1,65 @@ +package com.simibubi.create.content.contraptions.components.actors.controls; + +import com.simibubi.create.AllShapes; +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsBlock; +import com.simibubi.create.foundation.block.ITE; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class ContraptionControlsBlock extends ControlsBlock implements ITE { + + public ContraptionControlsBlock(Properties pProperties) { + super(pProperties); + } + + @Override + public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, + BlockHitResult pHit) { + return onTileEntityUse(pLevel, pPos, cte -> { + cte.pressButton(); + cte.disabled = !cte.disabled; + cte.notifyUpdate(); + if (!pLevel.isClientSide()) { + ContraptionControlsTileEntity.sendStatus(pPlayer, cte.filtering.getFilter(), !cte.disabled); + AllSoundEvents.CONTROLLER_CLICK.play(cte.getLevel(), null, cte.getBlockPos(), 1, + cte.disabled ? 0.8f : 1.5f); + } + return InteractionResult.SUCCESS; + }); + } + + @Override + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, + boolean pIsMoving) { + withTileEntityDo(pLevel, pPos, ContraptionControlsTileEntity::updatePoweredState); + } + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { + return AllShapes.CONTRAPTION_CONTROLS.get(pState.getValue(FACING)); + } + + @Override + public Class getTileEntityClass() { + return ContraptionControlsTileEntity.class; + } + + @Override + public BlockEntityType getTileEntityType() { + return AllTileEntities.CONTRAPTION_CONTROLS.get(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java new file mode 100644 index 000000000..7aa0dec3a --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java @@ -0,0 +1,239 @@ +package com.simibubi.create.content.contraptions.components.actors.controls; + +import java.util.Random; + +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; +import com.jozufozu.flywheel.util.transform.TransformStack; +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContraption; +import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; +import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.DyeHelper; +import com.simibubi.create.foundation.utility.IntAttached; +import com.simibubi.create.foundation.utility.animation.LerpedFloat; +import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.items.ItemHandlerHelper; + +public class ContraptionControlsMovement implements MovementBehaviour { + + @Override + public ItemStack canBeDisabledVia(MovementContext context) { + return null; + } + + @Override + public void startMoving(MovementContext context) { + if (context.contraption instanceof ElevatorContraption && context.tileData != null) + context.tileData.remove("Filter"); + } + + @Override + public void stopMoving(MovementContext context) { + ItemStack filter = getFilter(context); + if (filter != null) + context.tileData.putBoolean("Disabled", context.contraption.isActorTypeDisabled(filter) + || context.contraption.isActorTypeDisabled(ItemStack.EMPTY)); + } + + public static boolean isSameFilter(ItemStack stack1, ItemStack stack2) { + if (stack1.isEmpty() && stack2.isEmpty()) + return true; + return ItemHandlerHelper.canItemStacksStack(stack1, stack2); + } + + private static Random r = new Random(); + + public static ItemStack getFilter(MovementContext ctx) { + CompoundTag tileData = ctx.tileData; + if (tileData == null) + return null; + return ItemStack.of(tileData.getCompound("Filter")); + } + + public static boolean isDisabledInitially(MovementContext ctx) { + return ctx.tileData != null && ctx.tileData.getBoolean("Disabled"); + } + + @Override + public void tick(MovementContext ctx) { + if (!ctx.world.isClientSide()) + return; + + Contraption contraption = ctx.contraption; + if (!(contraption instanceof ElevatorContraption ec)) { + if (!(contraption.presentTileEntities.get(ctx.localPos)instanceof ContraptionControlsTileEntity cte)) + return; + ItemStack filter = getFilter(ctx); + int value = + contraption.isActorTypeDisabled(filter) || contraption.isActorTypeDisabled(ItemStack.EMPTY) ? 4 * 45 + : 0; + cte.indicator.setValue(value); + cte.indicator.updateChaseTarget(value); + cte.tickAnimations(); + return; + } + + if (!(ctx.temporaryData instanceof ElevatorFloorSelection)) + ctx.temporaryData = new ElevatorFloorSelection(); + + ElevatorFloorSelection efs = (ElevatorFloorSelection) ctx.temporaryData; + tickFloorSelection(efs, ec); + + if (!(contraption.presentTileEntities.get(ctx.localPos)instanceof ContraptionControlsTileEntity cte)) + return; + + cte.tickAnimations(); + + int currentY = (int) Math.round(contraption.entity.getY() + ec.getContactYOffset()); + boolean atTargetY = ec.clientYTarget == currentY; + + LerpedFloat indicator = cte.indicator; + float currentIndicator = indicator.getChaseTarget(); + boolean below = atTargetY ? currentIndicator > 0 : ec.clientYTarget <= currentY; + + if (currentIndicator == 0 && !atTargetY) { + int startingPoint = below ? 181 : -181; + indicator.setValue(startingPoint); + indicator.updateChaseTarget(startingPoint); + cte.tickAnimations(); + return; + } + + int currentStage = Mth.floor(((currentIndicator % 360) + 360) % 360); + if (!atTargetY || currentStage / 45 != 0) { + float increment = currentStage / 45 == (below ? 4 : 3) ? 2.25f : 33.75f; + indicator.chase(currentIndicator + (below ? increment : -increment), 45f, Chaser.LINEAR); + return; + } + + indicator.setValue(0); + indicator.updateChaseTarget(0); + return; + } + + public static void tickFloorSelection(ElevatorFloorSelection efs, ElevatorContraption ec) { + if (ec.namesList.isEmpty()) { + efs.currentShortName = "X"; + efs.currentLongName = "No Floors"; + efs.currentIndex = 0; + efs.targetYEqualsSelection = true; + return; + } + + efs.currentIndex = Mth.clamp(efs.currentIndex, 0, ec.namesList.size() - 1); + IntAttached> entry = ec.namesList.get(efs.currentIndex); + efs.currentTargetY = entry.getFirst(); + efs.currentShortName = entry.getSecond() + .getFirst(); + efs.currentLongName = entry.getSecond() + .getSecond(); + efs.targetYEqualsSelection = efs.currentTargetY == ec.clientYTarget; + } + + @Override + public boolean renderAsNormalTileEntity() { + return true; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void renderInContraption(MovementContext ctx, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, + MultiBufferSource buffer) { + + if (!(ctx.temporaryData instanceof ElevatorFloorSelection efs)) + return; + if (!AllBlocks.CONTRAPTION_CONTROLS.has(ctx.state)) + return; + + Entity cameraEntity = Minecraft.getInstance() + .getCameraEntity(); + float playerDistance = (float) (ctx.position == null || cameraEntity == null ? 0 + : ctx.position.distanceToSqr(cameraEntity.getEyePosition())); + + float flicker = r.nextFloat(); + Couple couple = DyeHelper.DYE_TABLE.get(efs.targetYEqualsSelection ? DyeColor.WHITE : DyeColor.ORANGE); + int brightColor = couple.getFirst(); + int darkColor = couple.getSecond(); + int flickeringBrightColor = Color.mixColors(brightColor, darkColor, flicker / 4); + Font fontRenderer = Minecraft.getInstance().font; + float shadowOffset = .5f; + + String text = efs.currentShortName; + String description = efs.currentLongName; + PoseStack ms = matrices.getViewProjection(); + TransformStack msr = TransformStack.cast(ms); + + ms.pushPose(); + msr.translate(ctx.localPos); + msr.rotateCentered(Direction.UP, + AngleHelper.rad(AngleHelper.horizontalAngle(ctx.state.getValue(ContraptionControlsBlock.FACING)))); + ms.translate(0.275f + 0.125f, 1, 0.5f); + msr.rotate(Direction.WEST, AngleHelper.rad(67.5f)); + + float buttondepth = -.25f; + if (ctx.contraption.presentTileEntities.get(ctx.localPos)instanceof ContraptionControlsTileEntity cte) + buttondepth += -1 / 24f * cte.button.getValue(AnimationTickHolder.getPartialTicks(renderWorld)); + + if (!text.isBlank() && playerDistance < 100) { + int actualWidth = fontRenderer.width(text); + int width = Math.max(actualWidth, 12); + float scale = 1 / (5f * (width - .5f)); + float heightCentering = (width - 8f) / 2; + + ms.pushPose(); + ms.translate(0, .15f, buttondepth); + ms.scale(scale, -scale, scale); + ms.translate(Math.max(0, width - actualWidth) / 2, heightCentering, 0); + NixieTubeRenderer.drawInWorldString(ms, buffer, text, flickeringBrightColor); + ms.translate(shadowOffset, shadowOffset, -1 / 16f); + NixieTubeRenderer.drawInWorldString(ms, buffer, text, Color.mixColors(darkColor, 0, .35f)); + ms.popPose(); + } + + if (!description.isBlank() && playerDistance < 20) { + int actualWidth = fontRenderer.width(description); + int width = Math.max(actualWidth, 55); + float scale = 1 / (3f * (width - .5f)); + float heightCentering = (width - 8f) / 2; + + ms.pushPose(); + ms.translate(-.0635f, 0.06f, buttondepth); + ms.scale(scale, -scale, scale); + ms.translate(Math.max(0, width - actualWidth) / 2, heightCentering, 0); + NixieTubeRenderer.drawInWorldString(ms, buffer, description, flickeringBrightColor); + ms.popPose(); + } + + ms.popPose(); + + } + + public static class ElevatorFloorSelection { + public int currentIndex = 0; + public int currentTargetY = 0; + public boolean targetYEqualsSelection = true; + public String currentShortName = ""; + public String currentLongName = ""; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovingInteraction.java new file mode 100644 index 000000000..75f8df039 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovingInteraction.java @@ -0,0 +1,127 @@ +package com.simibubi.create.content.contraptions.components.actors.controls; + +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.lang3.tuple.MutablePair; + +import com.simibubi.create.AllMovementBehaviours; +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovement.ElevatorFloorSelection; +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.MovingInteractionBehaviour; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContraption; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorTargetFloorPacket; +import com.simibubi.create.foundation.networking.AllPackets; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.network.PacketDistributor; + +public class ContraptionControlsMovingInteraction extends MovingInteractionBehaviour { + + @Override + public boolean handlePlayerInteraction(Player player, InteractionHand activeHand, BlockPos localPos, + AbstractContraptionEntity contraptionEntity) { + Contraption contraption = contraptionEntity.getContraption(); + + MutablePair actor = contraption.getActorAt(localPos); + if (actor == null) + return false; + MovementContext ctx = actor.right; + if (ctx == null) + return false; + if (contraption instanceof ElevatorContraption ec) + return elevatorInteraction(localPos, contraptionEntity, ec, ctx); + if (contraptionEntity.level.isClientSide()) { + if (contraption.presentTileEntities.get(ctx.localPos)instanceof ContraptionControlsTileEntity cte) + cte.pressButton(); + return true; + } + + ItemStack filter = ContraptionControlsMovement.getFilter(ctx); + boolean disable = true; + boolean invert = false; + + List disabledActors = contraption.getDisabledActors(); + for (Iterator iterator = disabledActors.iterator(); iterator.hasNext();) { + ItemStack presentFilter = iterator.next(); + boolean sameFilter = ContraptionControlsMovement.isSameFilter(presentFilter, filter); + if (presentFilter.isEmpty()) { + iterator.remove(); + disable = false; + if (!sameFilter) + invert = true; + continue; + } + if (!sameFilter) + continue; + iterator.remove(); + disable = false; + break; + } + + if (invert) { + for (MutablePair pair : contraption.getActors()) { + MovementBehaviour behaviour = AllMovementBehaviours.getBehaviour(pair.left.state); + if (behaviour == null) + continue; + ItemStack behaviourStack = behaviour.canBeDisabledVia(pair.right); + if (behaviourStack == null) + continue; + if (ContraptionControlsMovement.isSameFilter(behaviourStack, filter)) + continue; + if (contraption.isActorTypeDisabled(behaviourStack)) + continue; + disabledActors.add(behaviourStack); + send(contraptionEntity, behaviourStack, true); + } + } + + if (filter.isEmpty()) + disabledActors.clear(); + if (disable) + disabledActors.add(filter); + + contraption.setActorsActive(filter, !disable); + ContraptionControlsTileEntity.sendStatus(player, filter, !disable); + send(contraptionEntity, filter, disable); + + AllSoundEvents.CONTROLLER_CLICK.play(player.level, null, + new BlockPos(contraptionEntity.toGlobalVector(Vec3.atCenterOf(localPos), 1)), 1, disable ? 0.8f : 1.5f); + + return true; + } + + private void send(AbstractContraptionEntity contraptionEntity, ItemStack filter, boolean disable) { + AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> contraptionEntity), + new ContraptionDisableActorPacket(contraptionEntity.getId(), filter, !disable)); + } + + private boolean elevatorInteraction(BlockPos localPos, AbstractContraptionEntity contraptionEntity, + ElevatorContraption contraption, MovementContext ctx) { + if (!contraptionEntity.level.isClientSide()) { + BlockPos pos = new BlockPos(contraptionEntity.toGlobalVector(Vec3.atCenterOf(localPos), 1)); + AllSoundEvents.CONTROLLER_CLICK.play(contraptionEntity.level, null, pos, 1, 1.5f); + AllSoundEvents.CONTRAPTION_ASSEMBLE.play(contraptionEntity.level, null, pos, 0.75f, 0.8f); + return true; + } + if (!(ctx.temporaryData instanceof ElevatorFloorSelection efs)) + return false; + if (efs.currentTargetY == contraption.clientYTarget) + return false; + + AllPackets.channel.sendToServer(new ElevatorTargetFloorPacket(contraptionEntity, efs.currentTargetY)); + if (contraption.presentTileEntities.get(ctx.localPos)instanceof ContraptionControlsTileEntity cte) + cte.pressButton(); + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java new file mode 100644 index 000000000..31d8838d6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java @@ -0,0 +1,52 @@ +package com.simibubi.create.content.contraptions.components.actors.controls; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.foundation.render.CachedBufferer; +import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +public class ContraptionControlsRenderer extends SmartTileEntityRenderer { + + public ContraptionControlsRenderer(Context context) { + super(context); + } + + @Override + protected void renderSafe(ContraptionControlsTileEntity tileEntityIn, float pt, PoseStack ms, + MultiBufferSource buffer, int light, int overlay) { + BlockState blockState = tileEntityIn.getBlockState(); + Direction facing = blockState.getValue(ContraptionControlsBlock.FACING) + .getOpposite(); + Vec3 buttonAxis = VecHelper.rotate(new Vec3(0, 1, -.325), AngleHelper.horizontalAngle(facing), Axis.Y) + .scale(-1 / 24f * tileEntityIn.button.getValue(pt)); + + ms.pushPose(); + ms.translate(buttonAxis.x, buttonAxis.y, buttonAxis.z); + super.renderSafe(tileEntityIn, pt, ms, buffer, light, overlay); + + VertexConsumer vc = buffer.getBuffer(RenderType.solid()); + CachedBufferer.partialFacing(AllBlockPartials.CONTRAPTION_CONTROLS_BUTTON, blockState, facing) + .light(light) + .renderInto(ms, vc); + + ms.popPose(); + + int i = (((int) tileEntityIn.indicator.getValue(pt) / 45) % 8) + 8; + CachedBufferer.partialFacing(AllBlockPartials.CONTRAPTION_CONTROLS_INDICATOR.get(i % 8), blockState, facing) + .light(light) + .renderInto(ms, vc); + + } + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsTileEntity.java new file mode 100644 index 000000000..eb2f92ce4 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsTileEntity.java @@ -0,0 +1,152 @@ +package com.simibubi.create.content.contraptions.components.actors.controls; + +import java.util.List; + +import com.jozufozu.flywheel.util.transform.TransformStack; +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsBlock; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.DyeHelper; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.VecHelper; +import com.simibubi.create.foundation.utility.animation.LerpedFloat; +import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; + +public class ContraptionControlsTileEntity extends SmartTileEntity { + + public FilteringBehaviour filtering; + public boolean disabled; + public boolean powered; + + public LerpedFloat indicator; + public LerpedFloat button; + + public ContraptionControlsTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + indicator = LerpedFloat.angular() + .startWithValue(0); + button = LerpedFloat.linear() + .startWithValue(0) + .chase(0, 0.125f, Chaser.EXP); + } + + @Override + public void addBehaviours(List behaviours) { + behaviours.add(filtering = new FilteringBehaviour(this, new ControlsSlot()).moveText(new Vec3(-30, 20, 10))); + } + + public void pressButton() { + button.setValue(1); + } + + public void updatePoweredState() { + if (level.isClientSide()) + return; + boolean powered = level.hasNeighborSignal(worldPosition); + if (this.powered == powered) + return; + this.powered = powered; + this.disabled = powered; + notifyUpdate(); + } + + @Override + public void initialize() { + super.initialize(); + updatePoweredState(); + } + + @Override + public void tick() { + super.tick(); + if (!level.isClientSide()) + return; + tickAnimations(); + int value = disabled ? 4 * 45 : 0; + indicator.setValue(value); + indicator.updateChaseTarget(value); + } + + public void tickAnimations() { + button.tickChaser(); + indicator.tickChaser(); + } + + @Override + protected void read(CompoundTag tag, boolean clientPacket) { + super.read(tag, clientPacket); + disabled = tag.getBoolean("Disabled"); + powered = tag.getBoolean("Powered"); + } + + @Override + protected void write(CompoundTag tag, boolean clientPacket) { + super.write(tag, clientPacket); + tag.putBoolean("Disabled", disabled); + tag.putBoolean("Powered", powered); + } + + public static void sendStatus(Player player, ItemStack filter, boolean enabled) { + MutableComponent state = Lang.translate("contraption.controls.actor_toggle." + (enabled ? "on" : "off")) + .color(DyeHelper.DYE_TABLE.get(enabled ? DyeColor.LIME : DyeColor.ORANGE) + .getFirst()) + .component(); + + if (filter.isEmpty()) { + Lang.translate("contraption.controls.all_actor_toggle", state) + .sendStatus(player); + return; + } + + Lang.translate("contraption.controls.specific_actor_toggle", filter.getHoverName() + .getString(), state) + .sendStatus(player); + } + + public static class ControlsSlot extends ValueBoxTransform.Sided { + + @Override + protected Vec3 getLocalOffset(BlockState state) { + Direction facing = state.getValue(ControlsBlock.FACING); + float yRot = AngleHelper.horizontalAngle(facing); + return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 10.875f, 5.1f), yRot, Axis.Y); + } + + @Override + protected void rotate(BlockState state, PoseStack ms) { + Direction facing = state.getValue(ControlsBlock.FACING); + float yRot = AngleHelper.horizontalAngle(facing); + TransformStack.cast(ms) + .rotateY(yRot + 180) + .rotateX(67.5f); + } + + @Override + protected float getScale() { + return .5f; + } + + @Override + protected Vec3 getSouthLocation() { + return Vec3.ZERO; + } + + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionDisableActorPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionDisableActorPacket.java new file mode 100644 index 000000000..108cf8349 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionDisableActorPacket.java @@ -0,0 +1,74 @@ +package com.simibubi.create.content.contraptions.components.actors.controls; + +import java.util.Iterator; +import java.util.List; +import java.util.function.Supplier; + +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.foundation.networking.SimplePacketBase; + +import net.minecraft.client.Minecraft; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent.Context; + +public class ContraptionDisableActorPacket extends SimplePacketBase { + + private int entityID; + private ItemStack filter; + private boolean enable; + + public ContraptionDisableActorPacket(int entityID, ItemStack filter, boolean enable) { + this.entityID = entityID; + this.filter = filter; + this.enable = enable; + } + + public ContraptionDisableActorPacket(FriendlyByteBuf buffer) { + entityID = buffer.readInt(); + enable = buffer.readBoolean(); + filter = buffer.readItem(); + } + + @Override + public void write(FriendlyByteBuf buffer) { + buffer.writeInt(entityID); + buffer.writeBoolean(enable); + buffer.writeItem(filter); + } + + @Override + public void handle(Supplier context) { + context.get() + .enqueueWork(() -> { + Entity entityByID = Minecraft.getInstance().level.getEntity(entityID); + if (!(entityByID instanceof AbstractContraptionEntity ace)) + return; + + Contraption contraption = ace.getContraption(); + List disabledActors = contraption.getDisabledActors(); + if (filter.isEmpty()) + disabledActors.clear(); + + if (!enable) { + disabledActors.add(filter); + contraption.setActorsActive(filter, false); + return; + } + + for (Iterator iterator = disabledActors.iterator(); iterator.hasNext();) { + ItemStack next = iterator.next(); + if (ContraptionControlsMovement.isSameFilter(next, filter) || next.isEmpty()) + iterator.remove(); + } + + contraption.setActorsActive(filter, true); + + }); + context.get() + .setPacketHandled(true); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java index 7477c48d1..56163a0e2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java @@ -83,7 +83,9 @@ public class DeployerActorInstance extends ActorInstance { @Override public void beginFrame() { double factor; - if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) { + if (context.disabled) { + factor = 0; + } else if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) { factor = Mth.sin(AnimationTickHolder.getRenderTime() * .5f) * .25f + .25f; } else { Vec3 center = VecHelper.getCenterOf(new BlockPos(context.position)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java index 58bedbfd1..9bdd77197 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovingInteraction.java @@ -22,26 +22,12 @@ public class DeployerMovingInteraction extends MovingInteractionBehaviour { @Override public boolean handlePlayerInteraction(Player player, InteractionHand activeHand, BlockPos localPos, AbstractContraptionEntity contraptionEntity) { - StructureBlockInfo info = contraptionEntity.getContraption() - .getBlocks() - .get(localPos); - if (info == null) + MutablePair actor = contraptionEntity.getContraption() + .getActorAt(localPos); + if (actor == null || actor.right == null) return false; - MovementContext ctx = null; - int index = -1; - for (MutablePair pair : contraptionEntity.getContraption() - .getActors()) { - if (info.equals(pair.left)) { - ctx = pair.right; - index = contraptionEntity.getContraption() - .getActors() - .indexOf(pair); - break; - } - } - if (ctx == null) - return false; - + + MovementContext ctx = actor.right; ItemStack heldStack = player.getItemInHand(activeHand); if (heldStack.getItem() .equals(AllItems.WRENCH.get())) { @@ -73,8 +59,8 @@ public class DeployerMovingInteraction extends MovingInteractionBehaviour { ctx.tileData.put("HeldItem", heldStack.serializeNBT()); ctx.data.put("HeldItem", heldStack.serializeNBT()); } - if (index >= 0) - setContraptionActorData(contraptionEntity, index, info, ctx); +// if (index >= 0) +// setContraptionActorData(contraptionEntity, index, info, ctx); return true; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java index e5abdf1fb..e4388a44c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java @@ -206,7 +206,8 @@ public class DeployerRenderer extends SafeTileEntityRenderer shaft.rotateCentered(Direction.get(AxisDirection.POSITIVE, Axis.Y), angle); m.popPose(); - m.translate(offset.x, offset.y, offset.z); + if (!context.disabled) + m.translate(offset.x, offset.y, offset.z); pole.transform(m); hand.transform(m); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java index 00af0d452..0fb21b5f3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java @@ -448,7 +448,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit context.rotation = v -> applyRotation(v, 1); context.position = actorPosition; - if (!isActorActive(context, actor)) + if (!isActorActive(context, actor) && !actor.mustTickWhileDisabled()) continue; if (newPosVisited && !context.stall) { actor.visitNewPosition(context, gridPosition); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index 51655a236..ba0f9112c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -21,8 +21,6 @@ import java.util.function.BiConsumer; import javax.annotation.Nullable; -import net.minecraft.world.level.block.DoorBlock; - import org.apache.commons.lang3.tuple.MutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -36,6 +34,7 @@ import com.simibubi.create.content.contraptions.components.actors.BlockBreakingM import com.simibubi.create.content.contraptions.components.actors.HarvesterMovementBehaviour; import com.simibubi.create.content.contraptions.components.actors.SeatBlock; import com.simibubi.create.content.contraptions.components.actors.SeatEntity; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovement; import com.simibubi.create.content.contraptions.components.steam.PoweredShaftTileEntity; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption; @@ -89,12 +88,14 @@ import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.ButtonBlock; import net.minecraft.world.level.block.ChestBlock; +import net.minecraft.world.level.block.DoorBlock; import net.minecraft.world.level.block.PressurePlateBlock; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.SimpleWaterloggedBlock; @@ -138,6 +139,8 @@ public abstract class Contraption { protected Map blocks; protected List> actors; protected Map interactors; + protected List disabledActors; + protected List superglue; protected List seats; protected Map seatMapping; @@ -163,6 +166,7 @@ public abstract class Contraption { blocks = new HashMap<>(); seats = new ArrayList<>(); actors = new ArrayList<>(); + disabledActors = new ArrayList<>(); modelData = new HashMap<>(); interactors = new HashMap<>(); superglue = new ArrayList<>(); @@ -604,7 +608,7 @@ public abstract class Contraption { blockstate = blockstate.setValue(RedstoneContactBlock.POWERED, true); if (AllBlocks.POWERED_SHAFT.has(blockstate)) blockstate = BlockHelper.copyProperties(blockstate, AllBlocks.SHAFT.getDefaultState()); - if (AllBlocks.CONTROLS.has(blockstate)) + if (blockstate.getBlock() instanceof ControlsBlock) blockstate = blockstate.setValue(ControlsBlock.OPEN, true); if (blockstate.hasProperty(SlidingDoorBlock.VISIBLE)) blockstate = blockstate.setValue(SlidingDoorBlock.VISIBLE, false); @@ -701,6 +705,10 @@ public abstract class Contraption { getActors().add(MutablePair.of(info, context)); }); + disabledActors = NBTHelper.readItemList(nbt.getList("DisabledActors", Tag.TAG_COMPOUND)); + for (ItemStack stack : disabledActors) + setActorsActive(stack, false); + superglue.clear(); NBTHelper.iterateCompoundList(nbt.getList("Superglue", Tag.TAG_COMPOUND), c -> superglue.add(SuperGlueEntity.readBoundingBox(c))); @@ -753,6 +761,8 @@ public abstract class Contraption { actorsNBT.add(compound); } + ListTag disabledActorsNBT = NBTHelper.writeItemList(disabledActors); + ListTag superglueNBT = new ListTag(); if (!spawnPacket) { for (AABB glueEntry : superglue) { @@ -789,6 +799,7 @@ public abstract class Contraption { nbt.put("Blocks", blocksNBT); nbt.put("Actors", actorsNBT); + nbt.put("DisabledActors", disabledActorsNBT); nbt.put("Interactors", interactorNBT); nbt.put("Superglue", superglueNBT); nbt.put("Anchor", NbtUtils.writeBlockPos(anchor)); @@ -1005,7 +1016,7 @@ public abstract class Contraption { if (disassembled) return; disassembled = true; - + for (boolean nonBrittles : Iterate.trueAndFalse) { for (StructureBlockInfo block : blocks.values()) { if (nonBrittles == BlockMovementChecks.isBrittle(block.state)) @@ -1052,7 +1063,8 @@ public abstract class Contraption { boolean verticalRotation = transform.rotationAxis == null || transform.rotationAxis.isHorizontal(); verticalRotation = verticalRotation && transform.rotation != Rotation.NONE; if (verticalRotation) { - if (state.getBlock() instanceof RopeBlock || state.getBlock() instanceof MagnetBlock || state.getBlock() instanceof DoorBlock) + if (state.getBlock() instanceof RopeBlock || state.getBlock() instanceof MagnetBlock + || state.getBlock() instanceof DoorBlock) world.destroyBlock(targetPos, true); } @@ -1119,12 +1131,55 @@ public abstract class Contraption { } public void startMoving(Level world) { + disabledActors.clear(); + for (MutablePair pair : actors) { MovementContext context = new MovementContext(world, pair.left, this); - AllMovementBehaviours.getBehaviour(pair.left.state) - .startMoving(context); + MovementBehaviour behaviour = AllMovementBehaviours.getBehaviour(pair.left.state); + behaviour.startMoving(context); pair.setRight(context); + if (behaviour instanceof ContraptionControlsMovement) + disableActorOnStart(context); } + + for (ItemStack stack : disabledActors) + setActorsActive(stack, false); + } + + protected void disableActorOnStart(MovementContext context) { + if (!ContraptionControlsMovement.isDisabledInitially(context)) + return; + ItemStack filter = ContraptionControlsMovement.getFilter(context); + if (filter == null) + return; + if (isActorTypeDisabled(filter)) + return; + disabledActors.add(filter); + } + + public boolean isActorTypeDisabled(ItemStack filter) { + return disabledActors.stream() + .anyMatch(i -> ContraptionControlsMovement.isSameFilter(i, filter)); + } + + public void setActorsActive(ItemStack referenceStack, boolean enable) { + for (MutablePair pair : actors) { + MovementBehaviour behaviour = AllMovementBehaviours.getBehaviour(pair.left.state); + if (behaviour == null) + continue; + ItemStack behaviourStack = behaviour.canBeDisabledVia(pair.right); + if (behaviourStack == null) + continue; + if (!referenceStack.isEmpty() && !ContraptionControlsMovement.isSameFilter(referenceStack, behaviourStack)) + continue; + pair.right.disabled = !enable; + if (!enable) + behaviour.onDisabledByControls(pair.right); + } + } + + public List getDisabledActors() { + return disabledActors; } public void stop(Level world) { @@ -1213,6 +1268,14 @@ public abstract class Contraption { return actors; } + @Nullable + public MutablePair getActorAt(BlockPos localPos) { + for (MutablePair pair : actors) + if (localPos.equals(pair.left.pos)) + return pair; + return null; + } + public Map getInteractors() { return interactors; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java index 6d0594123..43aac9a87 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java @@ -2,12 +2,14 @@ package com.simibubi.create.content.contraptions.components.structureMovement; import static net.minecraft.world.entity.Entity.collideBoundingBox; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableFloat; import org.apache.commons.lang3.mutable.MutableObject; +import org.apache.commons.lang3.tuple.MutablePair; import com.google.common.base.Predicates; import com.simibubi.create.AllBlocks; @@ -27,6 +29,7 @@ import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -48,6 +51,7 @@ import net.minecraft.world.level.block.CocoaBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; @@ -60,6 +64,8 @@ public class ContraptionCollider { NONE, CLIENT, REMOTE, SERVER } + private static MutablePair, Double> safetyLock = new MutablePair<>(); + static void collideEntities(AbstractContraptionEntity contraptionEntity) { Level world = contraptionEntity.getCommandSenderWorld(); Contraption contraption = contraptionEntity.getContraption(); @@ -75,6 +81,10 @@ public class ContraptionCollider { Vec3 anchorVec = contraptionEntity.getAnchorVec(); ContraptionRotationState rotation = null; + if (world.isClientSide() && safetyLock.left != null && safetyLock.left.get() == contraptionEntity) + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, + () -> () -> saveClientPlayerFromClipping(contraptionEntity, contraptionMotion)); + // After death, multiple refs to the client player may show up in the area boolean skipClientPlayer = false; @@ -97,11 +107,12 @@ public class ContraptionCollider { if (playerType == PlayerType.SERVER) continue; - if (playerType == PlayerType.CLIENT) + if (playerType == PlayerType.CLIENT) { if (skipClientPlayer) continue; else skipClientPlayer = true; + } // Init matrix if (rotation == null) @@ -115,13 +126,15 @@ public class ContraptionCollider { float yawOffset = rotation.getYawOffset(); Vec3 position = getWorldToLocalTranslation(entity, anchorVec, rotationMatrix, yawOffset); + motion = motion.subtract(contraptionMotion); + motion = rotationMatrix.transform(motion); + // Prepare entity bounds AABB localBB = entityBounds.move(position) .inflate(1.0E-7D); + OrientedBB obb = new OrientedBB(localBB); obb.setRotation(rotationMatrix); - motion = motion.subtract(contraptionMotion); - motion = rotationMatrix.transform(motion); // Use simplified bbs when present final Vec3 motionCopy = motion; @@ -363,10 +376,67 @@ public class ContraptionCollider { if (limbSwing > 1.0F) limbSwing = 1.0F; AllPackets.channel.sendToServer(new ClientMotionPacket(entityMotion, true, limbSwing)); + + if (entity.isOnGround() && contraption instanceof TranslatingContraption) { + safetyLock.setLeft(new WeakReference<>(contraptionEntity)); + safetyLock.setRight(entity.getY() - contraptionEntity.getY()); + } } } + @OnlyIn(Dist.CLIENT) + private static void saveClientPlayerFromClipping(AbstractContraptionEntity contraptionEntity, + Vec3 contraptionMotion) { + Player entity = Minecraft.getInstance().player; + + if (entity.isPassenger()) + return; + + double prevDiff = safetyLock.right; + double currentDiff = entity.getY() - contraptionEntity.getY(); + double motion = contraptionMotion.subtract(entity.getDeltaMovement()).y; + double trend = Math.signum(currentDiff - prevDiff); + + if (trend == 0) + return; + if (trend == Math.signum(motion)) + return; + + double speed = contraptionMotion.multiply(0, 1, 0) + .lengthSqr(); + if (trend > 0 && speed < 0.1) + return; + if (speed < 0.05) + return; + + AABB bb = entity.getBoundingBox().deflate(1/4f, 0, 1/4f); + double shortestDistance = Double.MAX_VALUE; + double yStart = entity.getStepHeight() + contraptionEntity.getY() + prevDiff; + double rayLength = Math.max(5, Math.abs(entity.getY() - yStart)); + + for (int rayIndex = 0; rayIndex < 4; rayIndex++) { + Vec3 start = new Vec3(rayIndex / 2 == 0 ? bb.minX : bb.maxX, yStart, rayIndex % 2 == 0 ? bb.minZ : bb.maxZ); + Vec3 end = start.add(0, -rayLength, 0); + + BlockHitResult hitResult = ContraptionHandlerClient.rayTraceContraption(start, end, contraptionEntity); + if (hitResult == null) + continue; + + Vec3 hit = contraptionEntity.toGlobalVector(hitResult.getLocation(), 1); + double hitDiff = start.y - hit.y; + if (shortestDistance > hitDiff) + shortestDistance = hitDiff; + } + + if (shortestDistance > rayLength) { + safetyLock.setLeft(null); + return; + } + + entity.setPos(entity.getX(), yStart - shortestDistance, entity.getZ()); + } + private static Vec3 handleDamageFromTrain(Level world, AbstractContraptionEntity contraptionEntity, Vec3 contraptionMotion, Entity entity, Vec3 entityMotion, PlayerType playerType) { @@ -374,13 +444,13 @@ public class ContraptionCollider { return entityMotion; if (!entity.isOnGround()) return entityMotion; - + CompoundTag persistentData = entity.getPersistentData(); if (persistentData.contains("ContraptionGrounded")) { persistentData.remove("ContraptionGrounded"); return entityMotion; } - + if (cce.collidingEntities.containsKey(entity)) return entityMotion; if (entity instanceof ItemEntity) @@ -612,7 +682,7 @@ public class ContraptionCollider { .intersects(otherBounds.move(otherMotion))) continue; - for (BlockPos colliderPos : contraption.getColliders(world, movementDirection)) { + for (BlockPos colliderPos : contraption.getOrCreateColliders(world, movementDirection)) { colliderPos = colliderPos.offset(gridPos) .subtract(new BlockPos(otherPosition)); if (!otherContraption.getBlocks() @@ -627,7 +697,7 @@ public class ContraptionCollider { public static boolean isCollidingWithWorld(Level world, TranslatingContraption contraption, BlockPos anchor, Direction movementDirection) { - for (BlockPos pos : contraption.getColliders(world, movementDirection)) { + for (BlockPos pos : contraption.getOrCreateColliders(world, movementDirection)) { BlockPos colliderPos = pos.offset(anchor); if (!world.isLoaded(colliderPos)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionType.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionType.java index 4b5d8fcd0..aa3d98e5f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionType.java @@ -8,6 +8,7 @@ import java.util.function.Supplier; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingContraption; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkContraption; import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContraption; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraption; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption; import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonContraption; @@ -25,7 +26,8 @@ public class ContraptionType { MOUNTED = register("mounted", MountedContraption::new), STABILIZED = register("stabilized", StabilizedContraption::new), GANTRY = register("gantry", GantryContraption::new), - CARRIAGE = register("carriage", CarriageContraption::new); + CARRIAGE = register("carriage", CarriageContraption::new), + ELEVATOR = register("elevator", ElevatorContraption::new); Supplier factory; String id; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java index 46d7b8ac8..0f8cbc96a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java @@ -14,6 +14,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -48,6 +49,15 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity { entity.setContraption(contraption); return entity; } + + @Override + public void setPos(double x, double y, double z) { + super.setPos(x, y, z); + if (!level.isClientSide()) + return; + for (Entity entity : getPassengers()) + positionRider(entity); + } @Override public Vec3 getContactPointMotion(Vec3 globalContactPoint) { @@ -62,7 +72,6 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity { if (contraption instanceof BearingContraption) rotationAxis = ((BearingContraption) contraption).getFacing() .getAxis(); - } @Override @@ -113,6 +122,11 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity { public void setAngle(float angle) { this.angle = angle; + + if (!level.isClientSide()) + return; + for (Entity entity : getPassengers()) + positionRider(entity); } public float getAngle(float partialTicks) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java index 642e7da4f..4b2359f34 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java @@ -12,6 +12,7 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -20,7 +21,7 @@ import net.minecraftforge.items.ItemHandlerHelper; public interface MovementBehaviour { default boolean isActive(MovementContext context) { - return true; + return !context.disabled; } default void tick(MovementContext context) {} @@ -33,6 +34,22 @@ public interface MovementBehaviour { return Vec3.ZERO; } + @Nullable + default ItemStack canBeDisabledVia(MovementContext context) { + Block block = context.state.getBlock(); + if (block == null) + return null; + return new ItemStack(block); + } + + default void onDisabledByControls(MovementContext context) { + cancelStall(context); + } + + default boolean mustTickWhileDisabled() { + return false; + } + default void dropItem(MovementContext context, ItemStack stack) { ItemStack remainder; if (AllConfigs.SERVER.kinetics.moveItemsToStorage.get()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java index 751044b5b..e2e1bb0a6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java @@ -25,6 +25,7 @@ public class MovementContext { public CompoundTag tileData; public boolean stall; + public boolean disabled; public boolean firstMovement; public CompoundTag data; public Contraption contraption; @@ -37,6 +38,7 @@ public class MovementContext { this.contraption = contraption; localPos = info.pos; + disabled = false; firstMovement = true; motion = Vec3.ZERO; relativeMotion = Vec3.ZERO; @@ -49,6 +51,8 @@ public class MovementContext { public float getAnimationSpeed() { int modifier = 1000; double length = -motion.length(); + if (disabled) + return 0; if (world.isClientSide && contraption.stalled) return 700; if (Math.abs(length) < 1 / 512f) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/TranslatingContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/TranslatingContraption.java index b3a2c616c..5b6ba8e3e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/TranslatingContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/TranslatingContraption.java @@ -14,29 +14,32 @@ public abstract class TranslatingContraption extends Contraption { protected Set cachedColliders; protected Direction cachedColliderDirection; - public Set getColliders(Level world, Direction movementDirection) { + public Set getOrCreateColliders(Level world, Direction movementDirection) { if (getBlocks() == null) return Collections.emptySet(); if (cachedColliders == null || cachedColliderDirection != movementDirection) { - cachedColliders = new HashSet<>(); cachedColliderDirection = movementDirection; - - for (StructureBlockInfo info : getBlocks().values()) { - BlockPos offsetPos = info.pos.relative(movementDirection); - if (info.state.getCollisionShape(world, offsetPos) - .isEmpty()) - continue; - if (getBlocks().containsKey(offsetPos) - && !getBlocks().get(offsetPos).state.getCollisionShape(world, offsetPos) - .isEmpty()) - continue; - cachedColliders.add(info.pos); - } - + cachedColliders= createColliders(world, movementDirection); } return cachedColliders; } + public Set createColliders(Level world, Direction movementDirection) { + Set colliders = new HashSet<>(); + for (StructureBlockInfo info : getBlocks().values()) { + BlockPos offsetPos = info.pos.relative(movementDirection); + if (info.state.getCollisionShape(world, offsetPos) + .isEmpty()) + continue; + if (getBlocks().containsKey(offsetPos) + && !getBlocks().get(offsetPos).state.getCollisionShape(world, offsetPos) + .isEmpty()) + continue; + colliders.add(info.pos); + } + return colliders; + } + @Override public void removeBlocksFromWorld(Level world, BlockPos offset) { int count = blocks.size(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java index 340db86f8..16d5fb7bd 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java @@ -23,12 +23,18 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public class StabilizedBearingMovementBehaviour implements MovementBehaviour { + @Override + public ItemStack canBeDisabledVia(MovementContext context) { + return null; + } + @Override @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorColumn.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorColumn.java new file mode 100644 index 000000000..a13c1c423 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorColumn.java @@ -0,0 +1,226 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import javax.annotation.Nullable; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.IntAttached; +import com.simibubi.create.foundation.utility.NBTHelper; +import com.simibubi.create.foundation.utility.WorldAttached; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class ElevatorColumn { + + public static WorldAttached> LOADED_COLUMNS = + new WorldAttached<>($ -> new HashMap<>()); + + protected LevelAccessor level; + protected ColumnCoords coords; + protected List contacts; + protected int targetedYLevel; + protected boolean isActive; + + @Nullable + public static ElevatorColumn get(LevelAccessor level, ColumnCoords coords) { + return LOADED_COLUMNS.get(level) + .get(coords); + } + + public static ElevatorColumn getOrCreate(LevelAccessor level, ColumnCoords coords) { + return LOADED_COLUMNS.get(level) + .computeIfAbsent(coords, c -> new ElevatorColumn(level, c)); + } + + public ElevatorColumn(LevelAccessor level, ColumnCoords coords) { + this.level = level; + this.coords = coords; + contacts = new ArrayList<>(); + } + + public void markDirty() { + for (BlockPos pos : getContacts()) { + BlockEntity blockEntity = level.getBlockEntity(pos); + if (blockEntity instanceof ElevatorContactTileEntity ecte) + ecte.setChanged(); + } + } + + public void floorReached(LevelAccessor level, String name) { + getContacts().stream() + .forEach(p -> { + if (level.getBlockEntity(p)instanceof ElevatorContactTileEntity ecte) + ecte.updateDisplayedFloor(name); + }); + } + + public int namesListVersion; + + public List>> compileNamesList() { + return getContacts().stream() + .map(p -> { + if (level.getBlockEntity(p)instanceof ElevatorContactTileEntity ecte) + return IntAttached.with(p.getY(), ecte.getNames()); + return null; + }) + .filter(Objects::nonNull) + .toList(); + } + + public void namesChanged() { + namesListVersion++; + } + + public Collection getContacts() { + return contacts.stream() + .map(this::contactAt) + .toList(); + } + + public void gatherAll() { + BlockPos.betweenClosedStream(contactAt(level.getMinBuildHeight()), contactAt(level.getMaxBuildHeight())) + .filter(p -> coords.equals(ElevatorContactBlock.getColumnCoords(level, p))) + .forEach(p -> level.setBlock(p, + BlockHelper.copyProperties(level.getBlockState(p), AllBlocks.ELEVATOR_CONTACT.getDefaultState()), 3)); + } + + public BlockPos contactAt(int y) { + return new BlockPos(coords.x, y, coords.z); + } + + public void setActive(boolean isActive) { + this.isActive = isActive; + markDirty(); + checkEmpty(); + } + + public boolean isActive() { + return isActive; + } + + public void target(int yLevel) { + targetedYLevel = yLevel; + } + + public int getTargetedYLevel() { + return targetedYLevel; + } + + public void initNames(Level level) { + Integer prevLevel = null; + + for (int i = 0; i < contacts.size(); i++) { + Integer y = contacts.get(i); + + BlockPos pos = contactAt(y); + if (!(level.getBlockEntity(pos)instanceof ElevatorContactTileEntity ecte)) + continue; + + Integer currentLevel = null; + + if (!ecte.shortName.isBlank()) { + Integer tryValueOf = tryValueOf(ecte.shortName); + if (tryValueOf != null) + currentLevel = tryValueOf; + if (currentLevel == null) + continue; + } + + if (prevLevel != null) + currentLevel = prevLevel + 1; + + Integer nextLevel = null; + + for (int peekI = i + 1; peekI < contacts.size(); peekI++) { + BlockPos peekPos = contactAt(contacts.get(peekI)); + if (!(level.getBlockEntity(peekPos)instanceof ElevatorContactTileEntity peekEcte)) + continue; + Integer tryValueOf = tryValueOf(peekEcte.shortName); + if (tryValueOf == null) + continue; + if (currentLevel != null && currentLevel >= tryValueOf) { + peekEcte.shortName = ""; + break; + } + nextLevel = tryValueOf; + break; + } + + if (currentLevel == null) + currentLevel = nextLevel != null ? nextLevel - 1 : 0; + + ecte.updateName(String.valueOf(currentLevel), ecte.longName); + prevLevel = currentLevel; + } + + } + + private static Integer tryValueOf(String floorName) { + try { + return Integer.valueOf(floorName, 10); + } catch (NumberFormatException nfe) { + return null; + } + } + + public void add(BlockPos contactPos) { + int coord = contactPos.getY(); + if (contacts.contains(coord)) + return; + int index = 0; + for (; index < contacts.size(); index++) + if (contacts.get(index) > coord) + break; + contacts.add(index, coord); + namesChanged(); + } + + public void remove(BlockPos contactPos) { + contacts.remove((Object) contactPos.getY()); + checkEmpty(); + namesChanged(); + } + + private void checkEmpty() { + if (contacts.isEmpty() && !isActive()) + LOADED_COLUMNS.get(level) + .remove(coords); + } + + public static record ColumnCoords(int x, int z, Direction side) { + + public ColumnCoords relative(BlockPos anchor) { + return new ColumnCoords(x + anchor.getX(), z + anchor.getZ(), side); + } + + public CompoundTag write() { + CompoundTag tag = new CompoundTag(); + tag.putInt("X", x); + tag.putInt("Z", z); + NBTHelper.writeEnum(tag, "Side", side); + return tag; + } + + public static ColumnCoords read(CompoundTag tag) { + int x = tag.getInt("X"); + int z = tag.getInt("Z"); + Direction side = NBTHelper.readEnum(tag, "Side", Direction.class); + return new ColumnCoords(x, z, side); + } + + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java new file mode 100644 index 000000000..f0e3c7df0 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java @@ -0,0 +1,217 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.util.Optional; +import java.util.Random; + +import javax.annotation.Nullable; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllItems; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorColumn.ColumnCoords; +import com.simibubi.create.content.logistics.block.diodes.BrassDiodeBlock; +import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; +import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; +import com.simibubi.create.content.schematics.ItemRequirement; +import com.simibubi.create.foundation.block.ITE; +import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; +import com.simibubi.create.foundation.gui.ScreenOpener; + +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +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; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.DistExecutor; + +public class ElevatorContactBlock extends WrenchableDirectionalBlock + implements ITE, ISpecialBlockItemRequirement { + + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public static final BooleanProperty CALLING = BooleanProperty.create("calling"); + public static final BooleanProperty POWERING = BrassDiodeBlock.POWERING; + + public ElevatorContactBlock(Properties pProperties) { + super(pProperties); + registerDefaultState(defaultBlockState().setValue(CALLING, false) + .setValue(POWERING, false) + .setValue(POWERED, false) + .setValue(FACING, Direction.SOUTH)); + } + + @Override + protected void createBlockStateDefinition(Builder builder) { + super.createBlockStateDefinition(builder.add(CALLING, POWERING, POWERED)); + } + + @Nullable + public static ColumnCoords getColumnCoords(LevelAccessor level, BlockPos pos) { + BlockState blockState = level.getBlockState(pos); + if (!AllBlocks.ELEVATOR_CONTACT.has(blockState) && !AllBlocks.REDSTONE_CONTACT.has(blockState)) + return null; + Direction facing = blockState.getValue(FACING); + BlockPos target = pos; + return new ColumnCoords(target.getX(), target.getZ(), facing); + } + + @Override + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, + boolean pIsMoving) { + if (pLevel.isClientSide) + return; + + boolean isPowered = pState.getValue(POWERED); + if (isPowered == pLevel.hasNeighborSignal(pPos)) + return; + + pLevel.setBlock(pPos, pState.cycle(POWERED), 2); + + if (isPowered) + return; + if (pState.getValue(CALLING)) + return; + + pLevel.setBlock(pPos, pState.cycle(CALLING), 2); + + ElevatorColumn elevatorColumn = ElevatorColumn.getOrCreate(pLevel, getColumnCoords(pLevel, pPos)); + for (BlockPos otherPos : elevatorColumn.getContacts()) { + if (otherPos.equals(pPos)) + continue; + BlockState otherState = pLevel.getBlockState(otherPos); + if (!AllBlocks.ELEVATOR_CONTACT.has(otherState)) + continue; + pLevel.setBlock(otherPos, otherState.setValue(CALLING, false), 2); + scheduleActivation(pLevel, otherPos); + } + + pLevel.setBlock(pPos, pState.setValue(POWERED, true) + .setValue(CALLING, true), 2); + pLevel.updateNeighborsAt(pPos, this); + + elevatorColumn.target(pPos.getY()); + elevatorColumn.markDirty(); + } + + public void scheduleActivation(LevelAccessor pLevel, BlockPos pPos) { + if (!pLevel.getBlockTicks() + .hasScheduledTick(pPos, this)) + pLevel.scheduleTick(pPos, this, 1); + } + + @Override + public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, Random pRand) { + boolean wasPowering = pState.getValue(POWERING); + + Optional optionalTE = getTileEntityOptional(pLevel, pPos); + boolean shouldBePowering = optionalTE.map(te -> { + boolean activateBlock = te.activateBlock; + te.activateBlock = false; + te.setChanged(); + return activateBlock; + }) + .orElse(false); + + shouldBePowering |= RedstoneContactBlock.hasValidContact(pLevel, pPos, pState.getValue(FACING)); + + if (wasPowering || shouldBePowering) + pLevel.setBlock(pPos, pState.setValue(POWERING, shouldBePowering), 2); + + pLevel.updateNeighborsAt(pPos, this); + } + + @Override + public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, LevelAccessor worldIn, + BlockPos currentPos, BlockPos facingPos) { + if (facing != stateIn.getValue(FACING)) + return stateIn; + boolean hasValidContact = RedstoneContactBlock.hasValidContact(worldIn, currentPos, facing); + if (stateIn.getValue(POWERING) != hasValidContact) + scheduleActivation(worldIn, currentPos); + return stateIn; + } + + @Override + public boolean shouldCheckWeakPower(BlockState state, LevelReader level, BlockPos pos, Direction side) { + return false; + } + + @Override + public boolean isSignalSource(BlockState state) { + return state.getValue(POWERING); + } + + @Override + public ItemStack getCloneItemStack(BlockGetter pLevel, BlockPos pPos, BlockState pState) { + return AllBlocks.REDSTONE_CONTACT.asStack(); + } + + @Override + public boolean canConnectRedstone(BlockState state, BlockGetter world, BlockPos pos, @Nullable Direction side) { + if (side == null) + return true; + return state.getValue(FACING) != side.getOpposite(); + } + + @Override + public int getSignal(BlockState state, BlockGetter blockAccess, BlockPos pos, Direction side) { + return state.getValue(POWERING) ? 15 : 0; + } + + @Override + public Class getTileEntityClass() { + return ElevatorContactTileEntity.class; + } + + @Override + public BlockEntityType getTileEntityType() { + return AllTileEntities.ELEVATOR_CONTACT.get(); + } + + @Override + public void fillItemCategory(CreativeModeTab pTab, NonNullList pItems) {} + + @Override + public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) { + return ItemRequirement.of(AllBlocks.REDSTONE_CONTACT.getDefaultState(), te); + } + + @Override + public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, + BlockHitResult hit) { + if (player != null && AllItems.WRENCH.isIn(player.getItemInHand(handIn))) + return InteractionResult.PASS; + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, + () -> () -> withTileEntityDo(worldIn, pos, te -> this.displayScreen(te, player))); + return InteractionResult.SUCCESS; + } + + @OnlyIn(value = Dist.CLIENT) + protected void displayScreen(ElevatorContactTileEntity te, Player player) { + if (player instanceof LocalPlayer) + ScreenOpener.open(new ElevatorContactScreen(te.getBlockPos(), te.shortName, te.longName)); + } + + public static int getLight(BlockState state) { + return state.getValue(POWERING) ? 10 : state.getValue(CALLING) ? 5 : 0; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactEditPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactEditPacket.java new file mode 100644 index 000000000..7fd24f490 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactEditPacket.java @@ -0,0 +1,40 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; + +public class ElevatorContactEditPacket extends TileEntityConfigurationPacket { + + private String shortName; + private String longName; + + public ElevatorContactEditPacket(BlockPos pos, String shortName, String longName) { + super(pos); + this.shortName = shortName; + this.longName = longName; + } + + public ElevatorContactEditPacket(FriendlyByteBuf buffer) { + super(buffer); + } + + @Override + protected void writeSettings(FriendlyByteBuf buffer) { + buffer.writeUtf(shortName, 4); + buffer.writeUtf(longName, 30); + } + + @Override + protected void readSettings(FriendlyByteBuf buffer) { + shortName = buffer.readUtf(4); + longName = buffer.readUtf(30); + } + + @Override + protected void applySettings(ElevatorContactTileEntity te) { + te.updateName(shortName, longName); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactScreen.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactScreen.java new file mode 100644 index 000000000..a7d2f8466 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactScreen.java @@ -0,0 +1,171 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import org.lwjgl.glfw.GLFW; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.gui.AbstractSimiScreen; +import com.simibubi.create.foundation.gui.AllGuiTextures; +import com.simibubi.create.foundation.gui.AllIcons; +import com.simibubi.create.foundation.gui.element.GuiGameElement; +import com.simibubi.create.foundation.gui.widget.IconButton; +import com.simibubi.create.foundation.gui.widget.TooltipArea; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Components; +import com.simibubi.create.foundation.utility.Lang; + +import net.minecraft.ChatFormatting; +import net.minecraft.client.gui.components.EditBox; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.FormattedCharSequence; + +public class ElevatorContactScreen extends AbstractSimiScreen { + + private AllGuiTextures background; + + private EditBox shortNameInput; + private EditBox longNameInput; + private IconButton confirm; + + private String shortName; + private String longName; + + private BlockPos pos; + + public ElevatorContactScreen(BlockPos pos, String prevShortName, String prevLongName) { + super(Lang.translateDirect("elevator_contact.title")); + this.pos = pos; + background = AllGuiTextures.ELEVATOR_CONTACT; + this.shortName = prevShortName; + this.longName = prevLongName; + } + + @Override + public void init() { + setWindowSize(background.width + 30, background.height); + super.init(); + + int x = guiLeft; + int y = guiTop; + + confirm = new IconButton(x + 200, y + 58, AllIcons.I_CONFIRM); + confirm.withCallback(this::confirm); + addRenderableWidget(confirm); + + shortNameInput = editBox(33, 30, 4); + shortNameInput.setValue(shortName); + centerInput(x); + shortNameInput.setResponder(s -> { + shortName = s; + centerInput(x); + }); + shortNameInput.changeFocus(true); + setFocused(shortNameInput); + shortNameInput.setHighlightPos(0); + + longNameInput = editBox(63, 140, 30); + longNameInput.setValue(longName); + longNameInput.setResponder(s -> longName = s); + + MutableComponent rmbToEdit = Lang.translate("gui.schedule.lmb_edit") + .style(ChatFormatting.DARK_GRAY) + .style(ChatFormatting.ITALIC) + .component(); + + addRenderableOnly(new TooltipArea(x + 21, y + 23, 30, 18) + .withTooltip(ImmutableList.of(Lang.translate("elevator_contact.floor_identifier") + .color(0x5391E1) + .component(), rmbToEdit))); + + addRenderableOnly(new TooltipArea(x + 57, y + 23, 147, 18).withTooltip(ImmutableList.of( + Lang.translate("elevator_contact.floor_description") + .color(0x5391E1) + .component(), + Lang.translate("crafting_blueprint.optional") + .style(ChatFormatting.GRAY) + .component(), + rmbToEdit))); + + } + + private int centerInput(int x) { + return shortNameInput.x = x + (shortName.isEmpty() ? 34 : 36 - font.width(shortName) / 2); + } + + private EditBox editBox(int x, int width, int chars) { + EditBox editBox = new EditBox(font, guiLeft + x, guiTop + 30, width, 10, Components.immutableEmpty()); + editBox.setTextColor(-1); + editBox.setTextColorUneditable(-1); + editBox.setBordered(false); + editBox.setMaxLength(chars); + editBox.changeFocus(false); + editBox.mouseClicked(0, 0, 0); + addRenderableWidget(editBox); + return editBox; + } + + @Override + protected void renderWindow(PoseStack ms, int mouseX, int mouseY, float partialTicks) { + int x = guiLeft; + int y = guiTop; + + background.render(ms, x, y, this); + + FormattedCharSequence formattedcharsequence = title.getVisualOrderText(); + font.draw(ms, formattedcharsequence, + (float) (x + (background.width - 8) / 2 - font.width(formattedcharsequence) / 2), (float) y + 6, 0x2F3738); + + GuiGameElement.of(AllBlocks.ELEVATOR_CONTACT.asStack()).at(x + background.width + 6, y + background.height - 56, -200) + .scale(5) + .render(ms); + + } + + @Override + public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { + boolean consumed = super.mouseClicked(pMouseX, pMouseY, pButton); + + if (!shortNameInput.isFocused()) { + int length = shortNameInput.getValue() + .length(); + shortNameInput.setHighlightPos(length); + shortNameInput.setCursorPosition(length); + } + + if (shortNameInput.isHoveredOrFocused()) + longNameInput.mouseClicked(0, 0, 0); + + if (!consumed && pMouseX > guiLeft + 22 && pMouseY > guiTop + 24 && pMouseX < guiLeft + 50 + && pMouseY < guiTop + 40) { + setFocused(shortNameInput); + shortNameInput.changeFocus(true); + return true; + } + + return consumed; + } + + @Override + public boolean keyPressed(int keyCode, int p_keyPressed_2_, int p_keyPressed_3_) { + if (super.keyPressed(keyCode, p_keyPressed_2_, p_keyPressed_3_)) + return true; + if (keyCode == GLFW.GLFW_KEY_ENTER) { + confirm(); + return true; + } + if (keyCode == 256 && this.shouldCloseOnEsc()) { + this.onClose(); + return true; + } + return false; + } + + private void confirm() { + AllPackets.channel.sendToServer(new ElevatorContactEditPacket(pos, shortName, longName)); + onClose(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactTileEntity.java new file mode 100644 index 000000000..87d287cb3 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactTileEntity.java @@ -0,0 +1,154 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.util.List; + +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorColumn.ColumnCoords; +import com.simibubi.create.content.logistics.block.display.DisplayLinkBlock; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.NBTHelper; + +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class ElevatorContactTileEntity extends SmartTileEntity { + + public ColumnCoords columnCoords; + public boolean activateBlock; + + public String shortName; + public String longName; + + public String lastReportedCurrentFloor; + + private int yTargetFromNBT = Integer.MIN_VALUE; + private boolean deferNameGenerator; + + public ElevatorContactTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + shortName = ""; + longName = ""; + deferNameGenerator = false; + } + + @Override + public void addBehaviours(List behaviours) {} + + @Override + protected void write(CompoundTag tag, boolean clientPacket) { + super.write(tag, clientPacket); + + tag.putString("ShortName", shortName); + tag.putString("LongName", longName); + + if (lastReportedCurrentFloor != null) + tag.putString("LastReportedCurrentFloor", lastReportedCurrentFloor); + + if (clientPacket) + return; + tag.putBoolean("Activate", activateBlock); + if (columnCoords == null) + return; + + ElevatorColumn column = ElevatorColumn.get(level, columnCoords); + if (column == null) + return; + tag.putInt("ColumnTarget", column.getTargetedYLevel()); + if (column.isActive()) + NBTHelper.putMarker(tag, "ColumnActive"); + } + + @Override + protected void read(CompoundTag tag, boolean clientPacket) { + super.read(tag, clientPacket); + + shortName = tag.getString("ShortName"); + longName = tag.getString("LongName"); + + if (tag.contains("LastReportedCurrentFloor")) + lastReportedCurrentFloor = tag.getString("LastReportedCurrentFloor"); + + if (clientPacket) + return; + activateBlock = tag.getBoolean("Activate"); + if (!tag.contains("ColumnTarget")) + return; + + int target = tag.getInt("ColumnTarget"); + boolean active = tag.contains("ColumnActive"); + + if (columnCoords == null) { + yTargetFromNBT = target; + return; + } + + ElevatorColumn column = ElevatorColumn.getOrCreate(level, columnCoords); + column.target(target); + column.setActive(active); + } + + public void updateDisplayedFloor(String floor) { + if (floor.equals(lastReportedCurrentFloor)) + return; + lastReportedCurrentFloor = floor; + DisplayLinkBlock.notifyGatherers(level, worldPosition); + } + + @Override + public void initialize() { + super.initialize(); + if (level.isClientSide()) + return; + columnCoords = ElevatorContactBlock.getColumnCoords(level, worldPosition); + if (columnCoords == null) + return; + ElevatorColumn column = ElevatorColumn.getOrCreate(level, columnCoords); + column.add(worldPosition); + if (shortName.isBlank()) + deferNameGenerator = true; + if (yTargetFromNBT == Integer.MIN_VALUE) + return; + column.target(yTargetFromNBT); + yTargetFromNBT = Integer.MIN_VALUE; + } + + @Override + public void tick() { + super.tick(); + if (!deferNameGenerator) + return; + if (columnCoords != null) + ElevatorColumn.getOrCreate(level, columnCoords) + .initNames(level); + deferNameGenerator = false; + } + + @Override + public void setRemoved() { + if (columnCoords != null) { + ElevatorColumn column = ElevatorColumn.get(level, columnCoords); + if (column != null) + column.remove(worldPosition); + } + super.setRemoved(); + } + + public void updateName(String shortName, String longName) { + this.shortName = shortName; + this.longName = longName; + this.deferNameGenerator = false; + notifyUpdate(); + + ElevatorColumn column = ElevatorColumn.get(level, columnCoords); + if (column != null) + column.namesChanged(); + } + + public Couple getNames() { + return Couple.create(shortName, longName); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java new file mode 100644 index 000000000..c33b8e7f0 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java @@ -0,0 +1,180 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.util.List; + +import org.apache.commons.lang3.tuple.MutablePair; +import org.apache.commons.lang3.tuple.Pair; + +import com.google.common.collect.ImmutableList; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovement.ElevatorFloorSelection; +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorColumn.ColumnCoords; +import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyContraption; +import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.IntAttached; +import com.simibubi.create.foundation.utility.Lang; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; +import net.minecraftforge.network.PacketDistributor; + +public class ElevatorContraption extends PulleyContraption { + + protected ColumnCoords column; + protected int contactYOffset; + public boolean arrived; + + private int namesListVersion = -1; + public List>> namesList = ImmutableList.of(); + public int clientYTarget; + + // during assembly only + private int contacts; + + public ElevatorContraption() { + super(); + } + + public ElevatorContraption(int initialOffset) { + super(initialOffset); + } + + @Override + public void tickStorage(AbstractContraptionEntity entity) { + super.tickStorage(entity); + + if (entity.tickCount % 10 != 0) + return; + + ColumnCoords coords = getGlobalColumn(); + ElevatorColumn column = ElevatorColumn.get(entity.level, coords); + + if (column == null) + return; + if (column.namesListVersion == namesListVersion) + return; + + namesList = column.compileNamesList(); + namesListVersion = column.namesListVersion; + AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> entity), + new ElevatorFloorListPacket(entity, namesList)); + } + + @Override + protected void disableActorOnStart(MovementContext context) {} + + public ColumnCoords getGlobalColumn() { + return column.relative(anchor); + } + + public Integer getCurrentTargetY(Level level) { + ColumnCoords coords = getGlobalColumn(); + ElevatorColumn column = ElevatorColumn.get(level, coords); + if (column == null) + return null; + return column.targetedYLevel; + } + + @Override + public boolean assemble(Level world, BlockPos pos) throws AssemblyException { + if (!searchMovedStructure(world, pos, null)) + return false; + if (blocks.size() <= 0) + return false; + if (contacts == 0) + throw new AssemblyException(Lang.translateDirect("elevator_assembly.no_contacts")); + if (contacts > 1) + throw new AssemblyException(Lang.translateDirect("train_assembly.too_many_contacts")); + startMoving(world); + return true; + } + + @Override + protected Pair capture(Level world, BlockPos pos) { + BlockState blockState = world.getBlockState(pos); + + if (!AllBlocks.REDSTONE_CONTACT.has(blockState)) + return super.capture(world, pos); + + Direction facing = blockState.getValue(RedstoneContactBlock.FACING); + if (facing.getAxis() == Axis.Y) + return super.capture(world, pos); + + contacts++; + BlockPos local = toLocalPos(pos.relative(facing)); + column = new ColumnCoords(local.getX(), local.getZ(), facing.getOpposite()); + contactYOffset = local.getY(); + + return super.capture(world, pos); + } + + public int getContactYOffset() { + return contactYOffset; + } + + public void broadcastFloorData(Level level, BlockPos contactPos) { + ElevatorColumn column = ElevatorColumn.get(level, getGlobalColumn()); + if (!(world.getBlockEntity(contactPos)instanceof ElevatorContactTileEntity ecte)) + return; + if (column != null) + column.floorReached(level, ecte.shortName); + } + + @Override + public CompoundTag writeNBT(boolean spawnPacket) { + CompoundTag tag = super.writeNBT(spawnPacket); + tag.putBoolean("Arrived", arrived); + tag.put("Column", column.write()); + tag.putInt("ContactY", contactYOffset); + return tag; + } + + @Override + public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { + arrived = nbt.getBoolean("Arrived"); + column = ColumnCoords.read(nbt.getCompound("Column")); + contactYOffset = nbt.getInt("ContactY"); + super.readNBT(world, nbt, spawnData); + } + + @Override + protected ContraptionType getType() { + return ContraptionType.ELEVATOR; + } + + public void setClientYTarget(int clientYTarget) { + if (this.clientYTarget == clientYTarget) + return; + + this.clientYTarget = clientYTarget; + syncControlDisplays(); + } + + public void syncControlDisplays() { + if (namesList.isEmpty()) + return; + for (int i = 0; i < namesList.size(); i++) + if (namesList.get(i) + .getFirst() == clientYTarget) + setAllControlsToFloor(i); + } + + public void setAllControlsToFloor(int floorIndex) { + for (MutablePair pair : actors) + if (pair.right != null && pair.right.temporaryData instanceof ElevatorFloorSelection efs) + efs.currentIndex = floorIndex; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorControlsHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorControlsHandler.java new file mode 100644 index 000000000..bc603011b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorControlsHandler.java @@ -0,0 +1,117 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.lang.ref.WeakReference; +import java.util.Collection; + +import org.apache.commons.lang3.tuple.MutablePair; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovement; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovement.ElevatorFloorSelection; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsTileEntity; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsTileEntity.ControlsSlot; +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandler; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandlerClient; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.foundation.utility.Couple; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public class ElevatorControlsHandler { + + private static ControlsSlot slot = new ContraptionControlsTileEntity.ControlsSlot(); + + @OnlyIn(Dist.CLIENT) + public static boolean onScroll(double delta) { + Minecraft mc = Minecraft.getInstance(); + LocalPlayer player = mc.player; + + if (player == null) + return false; + if (player.isSpectator()) + return false; + if (mc.level == null) + return false; + + Couple rayInputs = ContraptionHandlerClient.getRayInputs(player); + Vec3 origin = rayInputs.getFirst(); + Vec3 target = rayInputs.getSecond(); + AABB aabb = new AABB(origin, target).inflate(16); + + Collection> contraptions = + ContraptionHandler.loadedContraptions.get(mc.level) + .values(); + + for (WeakReference ref : contraptions) { + AbstractContraptionEntity contraptionEntity = ref.get(); + if (contraptionEntity == null) + continue; + + Contraption contraption = contraptionEntity.getContraption(); + if (!(contraption instanceof ElevatorContraption ec)) + continue; + + if (!contraptionEntity.getBoundingBox() + .intersects(aabb)) + continue; + + BlockHitResult rayTraceResult = + ContraptionHandlerClient.rayTraceContraption(origin, target, contraptionEntity); + if (rayTraceResult == null) + continue; + + BlockPos pos = rayTraceResult.getBlockPos(); + StructureBlockInfo info = contraption.getBlocks() + .get(pos); + + if (info == null) + continue; + if (!AllBlocks.CONTRAPTION_CONTROLS.has(info.state)) + continue; + + if (!slot.testHit(info.state, rayTraceResult.getLocation() + .subtract(Vec3.atLowerCornerOf(pos)))) + continue; + + MovementContext ctx = null; + for (MutablePair pair : contraption.getActors()) { + if (info.equals(pair.left)) { + ctx = pair.right; + break; + } + } + + if (!(ctx.temporaryData instanceof ElevatorFloorSelection)) + ctx.temporaryData = new ElevatorFloorSelection(); + + ElevatorFloorSelection efs = (ElevatorFloorSelection) ctx.temporaryData; + int prev = efs.currentIndex; + efs.currentIndex += delta; + ContraptionControlsMovement.tickFloorSelection(efs, ec); + + if (prev != efs.currentIndex && !ec.namesList.isEmpty()) { + float pitch = (efs.currentIndex) / (float) (ec.namesList.size()); + pitch = Mth.lerp(pitch, 1f, 1.5f); + AllSoundEvents.SCROLL_VALUE.play(mc.player.level, mc.player, + new BlockPos(contraptionEntity.toGlobalVector(rayTraceResult.getLocation(), 1)), 1, pitch); + } + + return true; + } + + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorFloorListPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorFloorListPacket.java new file mode 100644 index 000000000..b314c10fe --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorFloorListPacket.java @@ -0,0 +1,103 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.networking.SimplePacketBase; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.IntAttached; + +import net.minecraft.client.Minecraft; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraftforge.network.NetworkEvent.Context; +import net.minecraftforge.network.PacketDistributor; + +public class ElevatorFloorListPacket extends SimplePacketBase { + + private int entityId; + private List>> floorsList; + + public ElevatorFloorListPacket(AbstractContraptionEntity entity, List>> floorsList) { + this.entityId = entity.getId(); + this.floorsList = floorsList; + } + + public ElevatorFloorListPacket(FriendlyByteBuf buffer) { + entityId = buffer.readInt(); + int size = buffer.readInt(); + floorsList = new ArrayList<>(); + for (int i = 0; i < size; i++) + floorsList.add(IntAttached.with(buffer.readInt(), Couple.create(buffer.readUtf(), buffer.readUtf()))); + } + + @Override + public void write(FriendlyByteBuf buffer) { + buffer.writeInt(entityId); + buffer.writeInt(floorsList.size()); + for (IntAttached> entry : floorsList) { + buffer.writeInt(entry.getFirst()); + entry.getSecond() + .forEach(buffer::writeUtf); + } + } + + @Override + public void handle(Supplier context) { + context.get() + .enqueueWork(() -> { + + Entity entityByID = Minecraft.getInstance().level.getEntity(entityId); + if (!(entityByID instanceof AbstractContraptionEntity ace)) + return; + if (!(ace.getContraption()instanceof ElevatorContraption ec)) + return; + + ec.namesList = floorsList; + ec.syncControlDisplays(); + }); + context.get() + .setPacketHandled(true); + } + + public static class RequestFloorList extends SimplePacketBase { + + private int entityId; + + public RequestFloorList(AbstractContraptionEntity entity) { + this.entityId = entity.getId(); + } + + public RequestFloorList(FriendlyByteBuf buffer) { + entityId = buffer.readInt(); + } + + @Override + public void write(FriendlyByteBuf buffer) { + buffer.writeInt(entityId); + } + + @Override + public void handle(Supplier context) { + Context ctx = context.get(); + ctx.enqueueWork(() -> { + ServerPlayer sender = ctx.getSender(); + Entity entityByID = sender.getLevel() + .getEntity(entityId); + if (!(entityByID instanceof AbstractContraptionEntity ace)) + return; + if (!(ace.getContraption()instanceof ElevatorContraption ec)) + return; + AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> sender), + new ElevatorFloorListPacket(ace, ec.namesList)); + }); + ctx.setPacketHandled(true); + } + + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyBlock.java new file mode 100644 index 000000000..6fc11c1cb --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyBlock.java @@ -0,0 +1,74 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import com.simibubi.create.AllShapes; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; +import com.simibubi.create.foundation.block.ITE; + +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.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class ElevatorPulleyBlock extends HorizontalKineticBlock implements ITE { + + public ElevatorPulleyBlock(Properties properties) { + super(properties); + } + + @Override + public InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, + BlockHitResult hit) { + if (!player.mayBuild()) + return InteractionResult.FAIL; + if (player.isShiftKeyDown()) + return InteractionResult.FAIL; + if (!player.getItemInHand(handIn) + .isEmpty()) + return InteractionResult.PASS; + if (worldIn.isClientSide) + return InteractionResult.SUCCESS; + return onTileEntityUse(worldIn, pos, te -> { + te.clicked(); + return InteractionResult.SUCCESS; + }); + } + + @Override + public BlockEntityType getTileEntityType() { + return AllTileEntities.ELEVATOR_PULLEY.get(); + } + + @Override + public Axis getRotationAxis(BlockState state) { + return state.getValue(HORIZONTAL_FACING) + .getClockWise() + .getAxis(); + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + return AllShapes.ELEVATOR_PULLEY.get(state.getValue(HORIZONTAL_FACING)); + } + + @Override + public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) { + return getRotationAxis(state) == face.getAxis(); + } + + @Override + public Class getTileEntityClass() { + return ElevatorPulleyTileEntity.class; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyInstance.java new file mode 100644 index 000000000..3eb8693c6 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyInstance.java @@ -0,0 +1,25 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import com.jozufozu.flywheel.api.MaterialManager; +import com.jozufozu.flywheel.api.instance.DynamicInstance; +import com.jozufozu.flywheel.light.TickingLightListener; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; + +// TODO +public class ElevatorPulleyInstance extends ShaftInstance implements DynamicInstance, TickingLightListener { + + public ElevatorPulleyInstance(MaterialManager dispatcher, KineticTileEntity tile) { + super(dispatcher, tile); + } + + @Override + public boolean tickLightListener() { + return false; + } + + @Override + public void beginFrame() { + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyRenderer.java new file mode 100644 index 000000000..b0e18abd2 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyRenderer.java @@ -0,0 +1,123 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllSpriteShifts; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.content.contraptions.components.structureMovement.pulley.AbstractPulleyRenderer; +import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyRenderer; +import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; +import com.simibubi.create.foundation.render.CachedBufferer; +import com.simibubi.create.foundation.render.SuperByteBuffer; +import com.simibubi.create.foundation.utility.AngleHelper; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +public class ElevatorPulleyRenderer extends KineticTileEntityRenderer { + + public ElevatorPulleyRenderer(BlockEntityRendererProvider.Context context) { + super(context); + } + + @Override + protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer, + int light, int overlay) { + +// if (Backend.canUseInstancing(te.getLevel())) +// return; + + // from KTE. replace with super call when flw instance is implemented + BlockState state = getRenderedBlockState(te); + RenderType type = getRenderType(te, state); + if (type != null) + renderRotatingBuffer(te, getRotatedModel(te, state), ms, buffer.getBuffer(type), light); + // + + float offset = PulleyRenderer.getTileOffset(partialTicks, (PulleyTileEntity) te); + boolean running = PulleyRenderer.isPulleyRunning(te); + + SpriteShiftEntry beltShift = AllSpriteShifts.ELEVATOR_BELT; + SpriteShiftEntry coilShift = AllSpriteShifts.ELEVATOR_COIL; + VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + Level world = te.getLevel(); + BlockState blockState = te.getBlockState(); + BlockPos pos = te.getBlockPos(); + + SuperByteBuffer magnet = CachedBufferer.partial(AllBlockPartials.ELEVATOR_MAGNET, blockState); + if (running || offset == 0) + AbstractPulleyRenderer.renderAt(world, magnet, offset, pos, ms, vb); + + SuperByteBuffer rotatedCoil = getRotatedCoil(te); + if (offset == 0) { + rotatedCoil.light(light) + .renderInto(ms, vb); + return; + } + + float spriteSize = beltShift.getTarget() + .getV1() + - beltShift.getTarget() + .getV0(); + + double coilScroll = -(offset + 3 / 16f) - Math.floor((offset + 3 / 16f) * -2) / 2; + double beltScroll = (-(offset + .5) - Math.floor(-(offset + .5))) / 2; + + rotatedCoil.shiftUVScrolling(coilShift, (float) coilScroll * spriteSize) + .light(light) + .renderInto(ms, vb); + + SuperByteBuffer halfRope = CachedBufferer.partial(AllBlockPartials.ELEVATOR_BELT_HALF, blockState); + SuperByteBuffer rope = CachedBufferer.partial(AllBlockPartials.ELEVATOR_BELT, blockState); + + float f = offset % 1; + if (f < .25f || f > .75f) { + halfRope.centre() + .rotateY(180 + AngleHelper.horizontalAngle(blockState.getValue(ElevatorPulleyBlock.HORIZONTAL_FACING))) + .unCentre(); + AbstractPulleyRenderer.renderAt(world, + halfRope.shiftUVScrolling(beltShift, (float) beltScroll * spriteSize), f > .75f ? f - 1 : f, pos, ms, + vb); + } + + if (!running) + return; + + for (int i = 0; i < offset - .25f; i++) { + rope.centre() + .rotateY(180 + AngleHelper.horizontalAngle(blockState.getValue(ElevatorPulleyBlock.HORIZONTAL_FACING))) + .unCentre(); + AbstractPulleyRenderer.renderAt(world, rope.shiftUVScrolling(beltShift, (float) beltScroll * spriteSize), + offset - i, pos, ms, vb); + } + } + + @Override + protected BlockState getRenderedBlockState(KineticTileEntity te) { + return shaft(getRotationAxisOf(te)); + } + + protected SuperByteBuffer getRotatedCoil(KineticTileEntity te) { + BlockState blockState = te.getBlockState(); + return CachedBufferer.partialFacing(AllBlockPartials.ELEVATOR_COIL, blockState, + blockState.getValue(ElevatorPulleyBlock.HORIZONTAL_FACING)); + } + + @Override + public int getViewDistance() { + return 128; + } + + @Override + public boolean shouldRenderOffScreen(KineticTileEntity p_188185_1_) { + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java new file mode 100644 index 000000000..a9175c9f7 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java @@ -0,0 +1,316 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.util.List; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; +import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorColumn.ColumnCoords; +import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; +import com.simibubi.create.foundation.advancement.AllAdvancements; +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.networking.AllPackets; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Mth; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class ElevatorPulleyTileEntity extends PulleyTileEntity { + + private float prevSpeed; + private boolean arrived; + private int clientOffsetTarget; + private boolean initialOffsetReceived; + + public ElevatorPulleyTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + prevSpeed = 0; + arrived = true; + initialOffsetReceived = false; + } + + private int getTargetOffset() { + if (level.isClientSide) + return clientOffsetTarget; + if (movedContraption == null || !(movedContraption.getContraption()instanceof ElevatorContraption ec)) + return (int) offset; + + Integer target = ec.getCurrentTargetY(level); + if (target == null) + return (int) offset; + + return worldPosition.getY() - target + ec.contactYOffset - 1; + } + + @Override + public void attach(ControlledContraptionEntity contraption) { + super.attach(contraption); + if (offset >= 0) + resetContraptionToOffset(); + if (level.isClientSide) { + AllPackets.channel.sendToServer(new ElevatorFloorListPacket.RequestFloorList(contraption)); + return; + } + + if (contraption.getContraption()instanceof ElevatorContraption ec) + ElevatorColumn.getOrCreate(level, ec.getGlobalColumn()) + .setActive(true); + } + + @Override + public void tick() { + boolean wasArrived = arrived; + super.tick(); + + if (movedContraption == null) + return; + if (!(movedContraption.getContraption()instanceof ElevatorContraption ec)) + return; + if (level.isClientSide()) + ec.setClientYTarget(worldPosition.getY() - clientOffsetTarget + ec.contactYOffset - 1); + + ec.arrived = wasArrived; + + if (!arrived) + return; + + double y = movedContraption.getY(); + int targetLevel = Mth.floor(0.5f + y); + if (!wasArrived && !level.isClientSide()) { + triggerContact(ec, targetLevel); + AllSoundEvents.CONTRAPTION_DISASSEMBLE.play(level, null, worldPosition.below((int) offset), 0.75f, 0.8f); + } + + double diff = targetLevel - y; + if (Math.abs(diff) > 1f / 128) + diff *= 0.25f; + movedContraption.setPos(movedContraption.position() + .add(0, diff, 0)); + } + + @Override + public void lazyTick() { + super.lazyTick(); + if (level.isClientSide() || !arrived) + return; + if (movedContraption == null || !movedContraption.isAlive()) + return; + if (!(movedContraption.getContraption()instanceof ElevatorContraption ec)) + return; + if (getTargetOffset() != (int) offset) + return; + + double y = movedContraption.getY(); + int targetLevel = Mth.floor(0.5f + y); + triggerContact(ec, targetLevel); + } + + private void triggerContact(ElevatorContraption ec, int targetLevel) { + ColumnCoords coords = ec.getGlobalColumn(); + ElevatorColumn column = ElevatorColumn.get(level, coords); + if (column == null) + return; + + BlockPos contactPos = column.contactAt(targetLevel + ec.contactYOffset); + if (!level.isLoaded(contactPos)) + return; + BlockState contactState = level.getBlockState(contactPos); + if (!AllBlocks.ELEVATOR_CONTACT.has(contactState)) + return; + if (contactState.getValue(ElevatorContactBlock.POWERING)) + return; + + ElevatorContactBlock ecb = AllBlocks.ELEVATOR_CONTACT.get(); + ecb.withTileEntityDo(level, contactPos, te -> te.activateBlock = true); + ecb.scheduleActivation(level, contactPos); + } + + @Override + public void write(CompoundTag compound, boolean clientPacket) { + super.write(compound, clientPacket); + if (clientPacket) + compound.putInt("ClientTarget", clientOffsetTarget); + } + + @Override + protected void read(CompoundTag compound, boolean clientPacket) { + super.read(compound, clientPacket); + if (!clientPacket) + return; + + clientOffsetTarget = compound.getInt("ClientTarget"); + if (initialOffsetReceived) + return; + + offset = compound.getFloat("Offset"); + initialOffsetReceived = true; + resetContraptionToOffset(); + } + + @Override + public float getMovementSpeed() { + int currentTarget = getTargetOffset(); + + if (!level.isClientSide() && currentTarget != clientOffsetTarget) { + clientOffsetTarget = currentTarget; + sendData(); + } + + float diff = currentTarget - offset; + float movementSpeed = Mth.clamp(convertToLinear(getSpeed() * 2), -1.99f, 1.99f); + float rpmLimit = Math.abs(movementSpeed); + + float configacc = Mth.lerp(Math.abs(movementSpeed), 0.0075f, 0.0175f); + float decelleration = (float) Math.sqrt(2 * Math.abs(diff) * configacc); + + float speed = diff; + speed = Mth.clamp(speed, -rpmLimit, rpmLimit); + speed = Mth.clamp(speed, prevSpeed - configacc, prevSpeed + configacc); + speed = Mth.clamp(speed, -decelleration, decelleration); + + arrived = Math.abs(diff) < 0.5f; + + if (speed > 1 / 1024f && !level.isClientSide()) + setChanged(); + + return prevSpeed = speed; + } + + @Override + protected boolean shouldCreateRopes() { + return false; + } + + @Override + public void disassemble() { + if (movedContraption != null && movedContraption.getContraption()instanceof ElevatorContraption ec) { + ElevatorColumn column = ElevatorColumn.get(level, ec.getGlobalColumn()); + if (column != null) + column.setActive(false); + } + + super.disassemble(); + offset = -1; + sendData(); + } + + public void clicked() { + if (isPassive() && level.getBlockEntity(mirrorParent)instanceof ElevatorPulleyTileEntity parent) { + parent.clicked(); + return; + } + + if (running) + disassemble(); + else + assembleNextTick = true; + } + + @Override + protected boolean moveAndCollideContraption() { + if (arrived) + return false; + super.moveAndCollideContraption(); + return false; + } + + @Override + public void addBehaviours(List behaviours) { + registerAwardables(behaviours, AllAdvancements.CONTRAPTION_ACTORS); + } + + @Override + protected void assemble() throws AssemblyException { + if (!(level.getBlockState(worldPosition) + .getBlock() instanceof ElevatorPulleyBlock)) + return; + if (getSpeed() == 0) + return; + + int maxLength = AllConfigs.SERVER.kinetics.maxRopeLength.get(); + int i = 1; + while (i <= maxLength) { + BlockPos ropePos = worldPosition.below(i); + BlockState ropeState = level.getBlockState(ropePos); + if (!ropeState.getCollisionShape(level, ropePos) + .isEmpty() + && !ropeState.getMaterial() + .isReplaceable()) { + break; + } + ++i; + } + + offset = i - 1; + forceMove = true; + + // Collect Construct + if (!level.isClientSide && mirrorParent == null) { + needsContraption = false; + BlockPos anchor = worldPosition.below(Mth.floor(offset + 1)); + offset = Mth.floor(offset); + ElevatorContraption contraption = new ElevatorContraption((int) offset); + + float offsetOnSucess = offset; + offset = 0; + + boolean canAssembleStructure = contraption.assemble(level, anchor); + if (!canAssembleStructure && getSpeed() > 0) + return; + + if (!contraption.getBlocks() + .isEmpty()) { + offset = offsetOnSucess; + contraption.removeBlocksFromWorld(level, BlockPos.ZERO); + movedContraption = ControlledContraptionEntity.create(level, this, contraption); + movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); + level.addFreshEntity(movedContraption); + forceMove = true; + needsContraption = true; + + if (contraption.containsBlockBreakers()) + award(AllAdvancements.CONTRAPTION_ACTORS); + + for (BlockPos pos : contraption.createColliders(level, Direction.UP)) { + if (pos.getY() != 0) + continue; + pos = pos.offset(anchor); + if (level.getBlockEntity(new BlockPos(pos.getX(), worldPosition.getY(), + pos.getZ()))instanceof ElevatorPulleyTileEntity pte) + pte.startMirroringOther(worldPosition); + } + + ElevatorColumn column = ElevatorColumn.getOrCreate(level, contraption.getGlobalColumn()); + int target = (int) (worldPosition.getY() + contraption.contactYOffset - 1 - offset); + column.target(target); + column.gatherAll(); + column.setActive(true); + column.markDirty(); + + contraption.broadcastFloorData(level, column.contactAt(target)); + clientOffsetTarget = column.getTargetedYLevel(); + arrived = true; + } + } + + clientOffsetDiff = 0; + running = true; + sendData(); + } + + @Override + public void onSpeedChanged(float previousSpeed) { + setChanged(); + } + + @Override + protected MovementMode getMovementMode() { + return MovementMode.MOVE_NEVER_PLACE; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java new file mode 100644 index 000000000..5a9e15b45 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java @@ -0,0 +1,73 @@ +package com.simibubi.create.content.contraptions.components.structureMovement.elevator; + +import java.util.function.Supplier; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.foundation.networking.SimplePacketBase; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.network.NetworkEvent.Context; + +public class ElevatorTargetFloorPacket extends SimplePacketBase { + + private int entityId; + private int targetY; + + public ElevatorTargetFloorPacket(AbstractContraptionEntity entity, int targetY) { + this.targetY = targetY; + this.entityId = entity.getId(); + } + + public ElevatorTargetFloorPacket(FriendlyByteBuf buffer) { + entityId = buffer.readInt(); + targetY = buffer.readInt(); + } + + @Override + public void write(FriendlyByteBuf buffer) { + buffer.writeInt(entityId); + buffer.writeInt(targetY); + } + + @Override + public void handle(Supplier context) { + Context ctx = context.get(); + ctx.enqueueWork(() -> { + ServerPlayer sender = ctx.getSender(); + Entity entityByID = sender.getLevel() + .getEntity(entityId); + if (!(entityByID instanceof AbstractContraptionEntity ace)) + return; + if (!(ace.getContraption()instanceof ElevatorContraption ec)) + return; + if (ace.distanceToSqr(sender) > 50 * 50) + return; + + Level level = sender.level; + ElevatorColumn elevatorColumn = ElevatorColumn.get(level, ec.getGlobalColumn()); + if (!elevatorColumn.contacts.contains(targetY)) + return; + + for (BlockPos otherPos : elevatorColumn.getContacts()) { + BlockState otherState = level.getBlockState(otherPos); + if (!AllBlocks.ELEVATOR_CONTACT.has(otherState)) + continue; + level.setBlock(otherPos, otherState.setValue(ElevatorContactBlock.CALLING, otherPos.getY() == targetY), + 2); + AllBlocks.ELEVATOR_CONTACT.get() + .scheduleActivation(level, otherPos); + } + + elevatorColumn.target(targetY); + elevatorColumn.markDirty(); + }); + ctx.setPacketHandled(true); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index 39e54a86e..5379103c2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -61,14 +61,17 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity public void tick() { super.tick(); - if (movedContraption != null) { + if (movedContraption != null) if (!movedContraption.isAlive()) movedContraption = null; - } + if (isPassive()) + return; + if (level.isClientSide) clientOffsetDiff *= .75f; + waitingForSpeedChange = false;//TODO if (waitingForSpeedChange) { if (movedContraption != null) { if (level.isClientSide) { @@ -144,6 +147,10 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity } } + protected boolean isPassive() { + return false; + } + @Override public void lazyTick() { super.lazyTick(); @@ -164,6 +171,10 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity @Override public void onSpeedChanged(float prevSpeed) { super.onSpeedChanged(prevSpeed); + + if (isPassive()) + return; + assembleNextTick = true; waitingForSpeedChange = false; @@ -249,18 +260,22 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity disassemble(); return; } - if (movementMode.get() == MovementMode.MOVE_NEVER_PLACE) { + if (getMovementMode() == MovementMode.MOVE_NEVER_PLACE) { waitingForSpeedChange = true; return; } int initial = getInitialOffset(); - if ((int) (offset + .5f) != initial && movementMode.get() == MovementMode.MOVE_PLACE_RETURNED) { + if ((int) (offset + .5f) != initial && getMovementMode() == MovementMode.MOVE_PLACE_RETURNED) { waitingForSpeedChange = true; return; } disassemble(); } + protected MovementMode getMovementMode() { + return movementMode.get(); + } + protected boolean moveAndCollideContraption() { if (movedContraption == null) return false; @@ -288,6 +303,8 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity protected void resetContraptionToOffset() { if (movedContraption == null) return; + if (!movedContraption.isAlive()) + return; Vec3 vec = toPosition(offset); movedContraption.setPos(vec.x, vec.y, vec.z); if (getSpeed() == 0 || waitingForSpeedChange) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java index dfa6dcd0c..b40e862a0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java @@ -80,8 +80,8 @@ public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { renderAt(world, rope, offset - i - 1, pos, ms, vb); } - private void renderAt(LevelAccessor world, SuperByteBuffer partial, float offset, BlockPos pulleyPos, PoseStack ms, - VertexConsumer buffer) { + public static void renderAt(LevelAccessor world, SuperByteBuffer partial, float offset, BlockPos pulleyPos, + PoseStack ms, VertexConsumer buffer) { BlockPos actualPos = pulleyPos.below((int) offset); int light = LevelRenderer.getLightColor(world, world.getBlockState(actualPos), actualPos); partial.translate(0, -offset, 0) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyContraption.java index ee53dfc94..76fc5474b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyContraption.java @@ -14,7 +14,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; public class PulleyContraption extends TranslatingContraption { int initialOffset; - + @Override protected ContraptionType getType() { return ContraptionType.PULLEY; @@ -62,4 +62,8 @@ public class PulleyContraption extends TranslatingContraption { public ContraptionLighter makeLighter() { return new PulleyLighter(this); } + + public int getInitialOffset() { + return initialOffset; + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java index ce547d079..547fa9731 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java @@ -47,18 +47,22 @@ public class PulleyRenderer extends AbstractPulleyRenderer { @Override protected boolean isRunning(KineticTileEntity te) { - return ((PulleyTileEntity) te).running || te.isVirtual(); + return isPulleyRunning(te); + } + + public static boolean isPulleyRunning(KineticTileEntity te) { + PulleyTileEntity pte = (PulleyTileEntity) te; + return pte.running || pte.mirrorParent != null || te.isVirtual(); } - - static float getTileOffset(float partialTicks, PulleyTileEntity tile) { + public static float getTileOffset(float partialTicks, PulleyTileEntity tile) { float offset = tile.getInterpolatedOffset(partialTicks); - if (tile.movedContraption != null) { - AbstractContraptionEntity e = tile.movedContraption; - PulleyContraption c = (PulleyContraption) tile.movedContraption.getContraption(); - double entityPos = Mth.lerp(partialTicks, e.yOld, e.getY()); - offset = (float) -(entityPos - c.anchor.getY() - c.initialOffset); + AbstractContraptionEntity attachedContraption = tile.getAttachedContraption(); + if (attachedContraption != null) { + PulleyContraption c = (PulleyContraption) attachedContraption.getContraption(); + double entityPos = Mth.lerp(partialTicks, attachedContraption.yOld, attachedContraption.getY()); + offset = (float) -(entityPos - c.anchor.getY() - c.getInitialOffset()); } return offset; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java index a71661c89..91209ba8c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java @@ -1,8 +1,13 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pulley; +import java.lang.ref.WeakReference; +import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; + import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; @@ -14,13 +19,14 @@ import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.utility.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; import net.minecraft.util.Mth; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -34,13 +40,23 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp protected int initialOffset; private float prevAnimatedOffset; + protected BlockPos mirrorParent; + protected List mirrorChildren; + public WeakReference sharedMirrorContraption; + public PulleyTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } @Override protected AABB createRenderBoundingBox() { - return super.createRenderBoundingBox().expandTowards(0, -offset, 0); + double expandY = -offset; + if (sharedMirrorContraption != null) { + AbstractContraptionEntity ace = sharedMirrorContraption.get(); + if (ace != null) + expandY = ace.getY() - worldPosition.getY(); + } + return super.createRenderBoundingBox().expandTowards(0, expandY, 0); } @Override @@ -48,25 +64,46 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp super.addBehaviours(behaviours); registerAwardables(behaviours, AllAdvancements.PULLEY_MAXED); } - + @Override public void tick() { float prevOffset = offset; super.tick(); + + if (level.isClientSide() && mirrorParent != null) + if (sharedMirrorContraption == null || sharedMirrorContraption.get() == null + || !sharedMirrorContraption.get() + .isAlive()) { + sharedMirrorContraption = null; + if (level.getBlockEntity(mirrorParent)instanceof PulleyTileEntity pte && pte.movedContraption != null) + sharedMirrorContraption = new WeakReference<>(pte.movedContraption); + } + if (isVirtual()) prevAnimatedOffset = offset; invalidateRenderBoundingBox(); - + if (prevOffset < 200 && offset >= 200) award(AllAdvancements.PULLEY_MAXED); } + @Override + protected boolean isPassive() { + return mirrorParent != null; + } + + @Nullable + public AbstractContraptionEntity getAttachedContraption() { + return mirrorParent != null && sharedMirrorContraption != null ? sharedMirrorContraption.get() + : movedContraption; + } + @Override protected void assemble() throws AssemblyException { if (!(level.getBlockState(worldPosition) .getBlock() instanceof PulleyBlock)) return; - if (speed == 0) + if (speed == 0 && mirrorParent == null) return; int maxLength = AllConfigs.SERVER.kinetics.maxRopeLength.get(); int i = 1; @@ -85,7 +122,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp return; // Collect Construct - if (!level.isClientSide) { + if (!level.isClientSide && mirrorParent == null) { needsContraption = false; BlockPos anchor = worldPosition.below(Mth.floor(offset + 1)); initialOffset = Mth.floor(offset); @@ -102,17 +139,7 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp if (!canAssembleStructure && getSpeed() > 0) return; - for (i = ((int) offset); i > 0; i--) { - BlockPos offset = worldPosition.below(i); - BlockState oldState = level.getBlockState(offset); - if (oldState.getBlock() instanceof SimpleWaterloggedBlock - && oldState.hasProperty(BlockStateProperties.WATERLOGGED) - && oldState.getValue(BlockStateProperties.WATERLOGGED)) { - level.setBlock(offset, Blocks.WATER.defaultBlockState(), 66); - continue; - } - level.setBlock(offset, Blocks.AIR.defaultBlockState(), 66); - } + removeRopes(); if (!contraption.getBlocks() .isEmpty()) { @@ -122,27 +149,48 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp level.addFreshEntity(movedContraption); forceMove = true; needsContraption = true; - + if (contraption.containsBlockBreakers()) award(AllAdvancements.CONTRAPTION_ACTORS); + + for (BlockPos pos : contraption.createColliders(level, Direction.UP)) { + if (pos.getY() != 0) + continue; + pos = pos.offset(anchor); + if (level.getBlockEntity( + new BlockPos(pos.getX(), worldPosition.getY(), pos.getZ()))instanceof PulleyTileEntity pte) + pte.startMirroringOther(worldPosition); + } } } + + if (mirrorParent != null) + removeRopes(); clientOffsetDiff = 0; running = true; sendData(); } + private void removeRopes() { + for (int i = ((int) offset); i > 0; i--) { + BlockPos offset = worldPosition.below(i); + BlockState oldState = level.getBlockState(offset); + level.setBlock(offset, oldState.getFluidState() + .createLegacyBlock(), 66); + } + } + @Override public void disassemble() { - if (!running && movedContraption == null) + if (!running && movedContraption == null && mirrorParent == null) return; offset = getGridOffset(offset); if (movedContraption != null) resetContraptionToOffset(); if (!level.isClientSide) { - if (!remove) { + if (shouldCreateRopes()) { if (offset > 0) { BlockPos magnetPos = worldPosition.below((int) offset); FluidState ifluidstate = level.getFluidState(magnetPos); @@ -170,24 +218,30 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp .setValue(BlockStateProperties.WATERLOGGED, waterlog[i]), 66); } - if (movedContraption != null) + if (movedContraption != null && mirrorParent == null) movedContraption.disassemble(); + notifyMirrorsOfDisassembly(); } if (movedContraption != null) movedContraption.discard(); + movedContraption = null; initialOffset = 0; running = false; sendData(); } + protected boolean shouldCreateRopes() { + return !remove; + } + @Override protected Vec3 toPosition(float offset) { if (movedContraption.getContraption() instanceof PulleyContraption) { PulleyContraption contraption = (PulleyContraption) movedContraption.getContraption(); return Vec3.atLowerCornerOf(contraption.anchor) - .add(0, contraption.initialOffset - offset, 0); + .add(0, contraption.getInitialOffset() - offset, 0); } return Vec3.ZERO; @@ -219,12 +273,70 @@ public class PulleyTileEntity extends LinearActuatorTileEntity implements Stockp initialOffset = compound.getInt("InitialOffset"); needsContraption = compound.getBoolean("NeedsContraption"); super.read(compound, clientPacket); + + BlockPos prevMirrorParent = mirrorParent; + mirrorParent = null; + mirrorChildren = null; + + if (compound.contains("MirrorParent")) { + mirrorParent = NbtUtils.readBlockPos(compound.getCompound("MirrorParent")); + offset = 0; + if (prevMirrorParent == null || !prevMirrorParent.equals(mirrorParent)) + sharedMirrorContraption = null; + } + + if (compound.contains("MirrorChildren")) + mirrorChildren = NBTHelper.readCompoundList(compound.getList("MirrorChildren", Tag.TAG_COMPOUND), + NbtUtils::readBlockPos); + + if (mirrorParent == null) + sharedMirrorContraption = null; } @Override public void write(CompoundTag compound, boolean clientPacket) { compound.putInt("InitialOffset", initialOffset); super.write(compound, clientPacket); + + if (mirrorParent != null) + compound.put("MirrorParent", NbtUtils.writeBlockPos(mirrorParent)); + if (mirrorChildren != null) + compound.put("MirrorChildren", NBTHelper.writeCompoundList(mirrorChildren, NbtUtils::writeBlockPos)); + } + + public void startMirroringOther(BlockPos parent) { + if (parent.equals(worldPosition)) + return; + if (!(level.getBlockEntity(parent)instanceof PulleyTileEntity pte)) + return; + if (pte.getType() != getType()) + return; + if (pte.mirrorChildren == null) + pte.mirrorChildren = new ArrayList<>(); + pte.mirrorChildren.add(worldPosition); + pte.notifyUpdate(); + + mirrorParent = parent; + try { + assemble(); + } catch (AssemblyException e) { + } + notifyUpdate(); + } + + public void notifyMirrorsOfDisassembly() { + if (mirrorChildren == null) + return; + for (BlockPos blockPos : mirrorChildren) { + if (!(level.getBlockEntity(blockPos)instanceof PulleyTileEntity pte)) + continue; + pte.offset = offset; + pte.disassemble(); + pte.mirrorParent = null; + pte.notifyUpdate(); + } + mirrorChildren.clear(); + notifyUpdate(); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java index 5eac17ee0..cdb180393 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java @@ -39,6 +39,6 @@ public class RopePulleyInstance extends AbstractPulleyInstance { } protected boolean isRunning() { - return ((PulleyTileEntity) blockEntity).running || blockEntity.isVirtual(); + return PulleyRenderer.isPulleyRunning(blockEntity); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerMovementBehaviour.java index 28de9978c..f5f6face5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerMovementBehaviour.java @@ -24,6 +24,7 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -34,6 +35,11 @@ public class BlazeBurnerMovementBehaviour implements MovementBehaviour { public boolean renderAsNormalTileEntity() { return false; } + + @Override + public ItemStack canBeDisabledVia(MovementContext context) { + return null; + } @Override public void tick(MovementContext context) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/deco/SlidingDoorMovementBehaviour.java b/src/main/java/com/simibubi/create/content/curiosities/deco/SlidingDoorMovementBehaviour.java index 5e42e9b1a..a76cedb99 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/deco/SlidingDoorMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/curiosities/deco/SlidingDoorMovementBehaviour.java @@ -5,6 +5,7 @@ import java.util.Map; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContraption; import com.simibubi.create.content.logistics.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.logistics.trains.entity.CarriageSyncData; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; @@ -24,7 +25,12 @@ public class SlidingDoorMovementBehaviour implements MovementBehaviour { public boolean renderAsNormalTileEntity() { return true; } - + + @Override + public boolean mustTickWhileDisabled() { + return true; + } + @Override public void tick(MovementContext context) { StructureBlockInfo structureBlockInfo = context.contraption.getBlocks() @@ -97,6 +103,10 @@ public class SlidingDoorMovementBehaviour implements MovementBehaviour { } protected boolean shouldOpen(MovementContext context) { + if (context.disabled) + return false; + if (context.contraption instanceof ElevatorContraption ec && ec.arrived) + return true; if (context.contraption.entity instanceof CarriageContraptionEntity cce) { CarriageSyncData carriageData = cce.getCarriageData(); if (Math.abs(carriageData.distanceToDestination) > 1) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/display/source/CurrentFloorDisplaySource.java b/src/main/java/com/simibubi/create/content/logistics/block/display/source/CurrentFloorDisplaySource.java new file mode 100644 index 000000000..32d4dde28 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/display/source/CurrentFloorDisplaySource.java @@ -0,0 +1,29 @@ +package com.simibubi.create.content.logistics.block.display.source; + +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContactTileEntity; +import com.simibubi.create.content.logistics.block.display.DisplayLinkContext; +import com.simibubi.create.content.logistics.block.display.target.DisplayTargetStats; +import com.simibubi.create.foundation.utility.Components; + +import net.minecraft.network.chat.MutableComponent; + +public class CurrentFloorDisplaySource extends SingleLineDisplaySource { + + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + if (!(context.getSourceTE() instanceof ElevatorContactTileEntity ecte)) + return EMPTY_LINE; + return Components.literal(ecte.lastReportedCurrentFloor); + } + + @Override + protected String getTranslationKey() { + return "current_floor"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return false; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContactMovementBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContactMovementBehaviour.java index fe7539064..4e5cfa5f6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContactMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/ContactMovementBehaviour.java @@ -3,6 +3,7 @@ package com.simibubi.create.content.logistics.block.redstone; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContraption; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -16,7 +17,9 @@ public class ContactMovementBehaviour implements MovementBehaviour { @Override public Vec3 getActiveAreaOffset(MovementContext context) { - return Vec3.atLowerCornerOf(context.state.getValue(RedstoneContactBlock.FACING).getNormal()).scale(.65f); + return Vec3.atLowerCornerOf(context.state.getValue(RedstoneContactBlock.FACING) + .getNormal()) + .scale(.65f); } @Override @@ -31,16 +34,22 @@ public class ContactMovementBehaviour implements MovementBehaviour { deactivateLastVisitedContact(context); BlockState visitedState = world.getBlockState(pos); - if (!AllBlocks.REDSTONE_CONTACT.has(visitedState)) + if (!AllBlocks.REDSTONE_CONTACT.has(visitedState) && !AllBlocks.ELEVATOR_CONTACT.has(visitedState)) return; - Vec3 contact = Vec3.atLowerCornerOf(block.getValue(RedstoneContactBlock.FACING).getNormal()); + Vec3 contact = Vec3.atLowerCornerOf(block.getValue(RedstoneContactBlock.FACING) + .getNormal()); contact = context.rotation.apply(contact); Direction direction = Direction.getNearest(contact.x, contact.y, contact.z); - if (!RedstoneContactBlock.hasValidContact(world, pos.relative(direction.getOpposite()), direction)) + if (visitedState.getValue(RedstoneContactBlock.FACING) != direction.getOpposite()) return; - world.setBlockAndUpdate(pos, visitedState.setValue(RedstoneContactBlock.POWERED, true)); + + if (AllBlocks.REDSTONE_CONTACT.has(visitedState)) + world.setBlockAndUpdate(pos, visitedState.setValue(RedstoneContactBlock.POWERED, true)); + if (AllBlocks.ELEVATOR_CONTACT.has(visitedState) && context.contraption instanceof ElevatorContraption ec) + ec.broadcastFloorData(world, pos); + context.data.put("lastContact", NbtUtils.writeBlockPos(pos)); return; } @@ -49,7 +58,7 @@ public class ContactMovementBehaviour implements MovementBehaviour { public void stopMoving(MovementContext context) { deactivateLastVisitedContact(context); } - + @Override public void cancelStall(MovementContext context) { MovementBehaviour.super.cancelStall(context); @@ -57,11 +66,15 @@ public class ContactMovementBehaviour implements MovementBehaviour { } public void deactivateLastVisitedContact(MovementContext context) { - if (context.data.contains("lastContact")) { - BlockPos last = NbtUtils.readBlockPos(context.data.getCompound("lastContact")); + if (!context.data.contains("lastContact")) + return; + + BlockPos last = NbtUtils.readBlockPos(context.data.getCompound("lastContact")); + context.data.remove("lastContact"); + BlockState blockState = context.world.getBlockState(last); + + if (AllBlocks.REDSTONE_CONTACT.has(blockState)) context.world.scheduleTick(last, AllBlocks.REDSTONE_CONTACT.get(), 1, TickPriority.NORMAL); - context.data.remove("lastContact"); - } } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java index 4428908fa..1798c1cc7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/redstone/NixieTubeRenderer.java @@ -93,25 +93,25 @@ public class NixieTubeRenderer extends SafeTileEntityRenderer LOADED_FLAP_CYCLES = new HashMap<>(); + static Random r = new Random(); public static final float MONOSPACE = 7; public static final float WIDE_MONOSPACE = 9; @@ -83,7 +84,7 @@ public class FlapDisplaySection { spinningTicks = 0; } - public int tick() { + public int tick(boolean instant) { if (cyclingOptions == null) return 0; int max = Math.max(4, (int) (cyclingOptions.length * 1.75f)); @@ -97,13 +98,13 @@ public class FlapDisplaySection { int spinningFlaps = 0; for (int i = 0; i < spinning.length; i++) { int increasingChance = Mth.clamp(8 - spinningTicks, 1, 10); - boolean continueSpin = Create.RANDOM.nextInt(increasingChance * max / 4) != 0; + boolean continueSpin = !instant && r.nextInt(increasingChance * max / 4) != 0; continueSpin &= max > 5 || spinningTicks < 2; spinning[i] &= continueSpin; - if (i > 0 && Create.RANDOM.nextInt(3) > 0) + if (i > 0 && r.nextInt(3) > 0) spinning[i - 1] &= continueSpin; - if (i < spinning.length - 1 && Create.RANDOM.nextInt(3) > 0) + if (i < spinning.length - 1 && r.nextInt(3) > 0) spinning[i + 1] &= continueSpin; if (spinningTicks > max) spinning[i] = false; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java index 355419495..22f6478e8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/display/FlapDisplayTileEntity.java @@ -111,9 +111,10 @@ public class FlapDisplayTileEntity extends KineticTileEntity { if ((!level.isClientSide || !isRunning) && !isVirtual()) return; int activeFlaps = 0; + boolean instant = getSpeed() > 128; for (FlapDisplayLayout line : lines) for (FlapDisplaySection section : line.getSections()) - activeFlaps += section.tick(); + activeFlaps += section.tick(instant); if (activeFlaps == 0) return; diff --git a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java index 36d71f3d3..f1941136d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java +++ b/src/main/java/com/simibubi/create/content/logistics/trains/management/schedule/destination/ChangeThrottleInstruction.java @@ -73,7 +73,7 @@ public class ChangeThrottleInstruction extends ScheduleInstruction { } private ItemStack icon() { - return AllBlocks.CONTROLS.asStack(); + return AllBlocks.TRAIN_CONTROLS.asStack(); } @Override diff --git a/src/main/java/com/simibubi/create/events/InputEvents.java b/src/main/java/com/simibubi/create/events/InputEvents.java index b40b720cd..a47ce01b8 100644 --- a/src/main/java/com/simibubi/create/events/InputEvents.java +++ b/src/main/java/com/simibubi/create/events/InputEvents.java @@ -1,6 +1,7 @@ package com.simibubi.create.events; import com.simibubi.create.CreateClient; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorControlsHandler; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.TrainHUD; import com.simibubi.create.content.curiosities.toolbox.ToolboxHandlerClient; import com.simibubi.create.content.logistics.item.LinkedControllerClientHandler; @@ -43,7 +44,8 @@ public class InputEvents { // CollisionDebugger.onScroll(delta); boolean cancelled = CreateClient.SCHEMATIC_HANDLER.mouseScrolled(delta) || CreateClient.SCHEMATIC_AND_QUILL_HANDLER.mouseScrolled(delta) || FilteringHandler.onScroll(delta) - || ScrollValueHandler.onScroll(delta) || TrainHUD.onScroll(delta); + || ScrollValueHandler.onScroll(delta) || TrainHUD.onScroll(delta) + || ElevatorControlsHandler.onScroll(delta); event.setCanceled(cancelled); } diff --git a/src/main/java/com/simibubi/create/foundation/command/AllCommands.java b/src/main/java/com/simibubi/create/foundation/command/AllCommands.java index 8664b0a5e..1b67a386e 100644 --- a/src/main/java/com/simibubi/create/foundation/command/AllCommands.java +++ b/src/main/java/com/simibubi/create/foundation/command/AllCommands.java @@ -60,7 +60,7 @@ public class AllCommands { .then(CameraDistanceCommand.register()) .then(CameraAngleCommand.register()) .then(FlySpeedCommand.register()) - //.then(KillTPSCommand.register()) + .then(KillTPSCommand.register()) .build(); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index 5401c429c..1c6451ea9 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -593,7 +593,7 @@ public class StandardRecipeGen extends CreateRecipeProvider { .viaShapeless(b -> b.requires(I.railwayCasing()) .requires(Items.COMPASS)), - TRAIN_CONTROLS = create(AllBlocks.CONTROLS).unlockedBy(I::railwayCasing) + TRAIN_CONTROLS = create(AllBlocks.TRAIN_CONTROLS).unlockedBy(I::railwayCasing) .viaShaped(b -> b.define('I', I.precisionMechanism()) .define('B', Items.LEVER) .define('C', I.railwayCasing()) diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java index 53f9571e8..bcb832da5 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java @@ -131,6 +131,8 @@ public enum AllGuiTextures implements ScreenElement { I_NEW_TRAIN("schedule_2", 14, 239, 24, 16), I_DISASSEMBLE_TRAIN("schedule_2", 39, 239, 24, 16), I_ASSEMBLE_TRAIN("schedule_2", 64, 239, 24, 16), + + ELEVATOR_CONTACT("display_link", 20, 172, 233, 82), // JEI JEI_SLOT("jei/widgets", 18, 18), diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index 10c6a635f..1fd3ea695 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -8,11 +8,15 @@ import java.util.function.Function; import java.util.function.Supplier; import com.simibubi.create.Create; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionDisableActorPacket; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionBlockChangedPacket; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionDisassemblyPacket; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionRelocationPacket; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionStallPacket; import com.simibubi.create.content.contraptions.components.structureMovement.TrainCollisionPacket; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContactEditPacket; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorFloorListPacket; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorTargetFloorPacket; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionUpdatePacket; import com.simibubi.create.content.contraptions.components.structureMovement.glue.GlueEffectPacket; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueRemovalPacket; @@ -148,6 +152,10 @@ public enum AllPackets { OBSERVER_STRESSOMETER(GaugeObservedPacket.class, GaugeObservedPacket::new, PLAY_TO_SERVER), EJECTOR_AWARD(EjectorAwardPacket.class, EjectorAwardPacket::new, PLAY_TO_SERVER), TRACK_GRAPH_REQUEST(TrackGraphRequestPacket.class, TrackGraphRequestPacket::new, PLAY_TO_SERVER), + CONFIGURE_ELEVATOR_CONTACT(ElevatorContactEditPacket.class, ElevatorContactEditPacket::new, PLAY_TO_SERVER), + REQUEST_FLOOR_LIST(ElevatorFloorListPacket.RequestFloorList.class, ElevatorFloorListPacket.RequestFloorList::new, + PLAY_TO_SERVER), + ELEVATOR_SET_FLOOR(ElevatorTargetFloorPacket.class, ElevatorTargetFloorPacket::new, PLAY_TO_SERVER), // Server to Client SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new, PLAY_TO_CLIENT), @@ -184,6 +192,8 @@ public enum AllPackets { S_TRAIN_PROMPT(TrainPromptPacket.class, TrainPromptPacket::new, PLAY_TO_CLIENT), CONTRAPTION_RELOCATION(ContraptionRelocationPacket.class, ContraptionRelocationPacket::new, PLAY_TO_CLIENT), TRACK_GRAPH_ROLL_CALL(TrackGraphRollCallPacket.class, TrackGraphRollCallPacket::new, PLAY_TO_CLIENT), + UPDATE_ELEVATOR_FLOORS(ElevatorFloorListPacket.class, ElevatorFloorListPacket::new, PLAY_TO_CLIENT), + CONTRAPTION_ACTOR_TOGGLE(ContraptionDisableActorPacket.class, ContraptionDisableActorPacket::new, PLAY_TO_CLIENT), ; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java index ed44673e8..fec11c123 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java @@ -320,7 +320,7 @@ public class PonderIndex { HELPER.forComponents(AllItems.SCHEDULE) .addStoryBoard("train_schedule", TrainScenes::schedule); - HELPER.forComponents(AllBlocks.CONTROLS) + HELPER.forComponents(AllBlocks.TRAIN_CONTROLS) .addStoryBoard("train_controls", TrainScenes::controls); HELPER.forComponents(AllBlocks.TRACK_OBSERVER) @@ -377,7 +377,7 @@ public class PonderIndex { .add(AllBlocks.TRACK_STATION) .add(AllBlocks.TRACK_SIGNAL) .add(AllBlocks.TRACK_OBSERVER) - .add(AllBlocks.CONTROLS) + .add(AllBlocks.TRAIN_CONTROLS) .add(AllItems.SCHEDULE) .add(AllBlocks.TRAIN_DOOR) .add(AllBlocks.TRAIN_TRAPDOOR) @@ -522,7 +522,7 @@ public class PonderIndex { .add(AllBlocks.ANDESITE_FUNNEL) .add(AllBlocks.BRASS_FUNNEL) .add(AllBlocks.SEATS.get(DyeColor.WHITE)) - .add(AllBlocks.CONTROLS) + .add(AllBlocks.TRAIN_CONTROLS) .add(AllBlocks.REDSTONE_CONTACT) .add(Blocks.BELL) .add(Blocks.DISPENSER) diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java index 75d6367d2..a98450419 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java @@ -38,10 +38,14 @@ public class ValueBox extends ChasingAABBOutline { protected BlockState blockState; public ValueBox(Component label, AABB bb, BlockPos pos) { + this(label, bb, pos, Minecraft.getInstance().level.getBlockState(pos)); + } + + public ValueBox(Component label, AABB bb, BlockPos pos, BlockState state) { super(bb); this.label = label; this.pos = pos; - this.blockState = Minecraft.getInstance().level.getBlockState(pos); + this.blockState = state; } public ValueBox transform(ValueBoxTransform transform) { @@ -169,6 +173,11 @@ public class ValueBox extends ChasingAABBOutline { super(label, bb, pos); this.text = text; } + + public TextValueBox(Component label, AABB bb, BlockPos pos, BlockState state, Component text) { + super(label, bb, pos, state); + this.text = text; + } @Override public void renderContents(PoseStack ms, MultiBufferSource buffer) { diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java index 58b93c7e8..7ff2bb466 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java @@ -1,6 +1,8 @@ package com.simibubi.create.foundation.tileEntity.behaviour; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Matrix3f; import com.simibubi.create.content.contraptions.relays.elementary.AbstractSimpleShaftBlock; import com.simibubi.create.content.logistics.item.filter.FilterItem; @@ -8,8 +10,10 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.ItemTransforms.TransformType; import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -33,6 +37,45 @@ public class ValueBoxRenderer { itemRenderer.renderStatic(filter, TransformType.FIXED, light, overlay, ms, buffer, 0); } + public static void renderFlatItemIntoValueBox(ItemStack filter, PoseStack ms, MultiBufferSource buffer, int light, + int overlay) { + if (filter.isEmpty()) + return; + + int bl = light >> 4 & 0xf; + int sl = light >> 20 & 0xf; + int itemLight = Mth.floor(sl + .5) << 20 | (Mth.floor(bl + .5) & 0xf) << 4; + + ms.pushPose(); + TransformStack.cast(ms) + .rotateX(230); + Matrix3f copy = ms.last() + .normal() + .copy(); + ms.popPose(); + + ms.pushPose(); + TransformStack.cast(ms) + .translate(0, 0, -1 / 4f) + .translate(0, 0, 1 / 32f + .001) + .rotateY(180); + + PoseStack squashedMS = new PoseStack(); + squashedMS.last() + .pose() + .multiply(ms.last() + .pose()); + squashedMS.scale(.5f, .5f, 1 / 1024f); + squashedMS.last() + .normal() + .load(copy); + Minecraft.getInstance() + .getItemRenderer() + .renderStatic(filter, TransformType.GUI, itemLight, OverlayTexture.NO_OVERLAY, squashedMS, buffer, 0); + + ms.popPose(); + } + @SuppressWarnings("deprecation") private static float customZOffset(Item item) { float nudge = -.1f; @@ -44,7 +87,8 @@ public class ValueBoxRenderer { return nudge; if (block instanceof FenceBlock) return nudge; - if (block.builtInRegistryHolder().is(BlockTags.BUTTONS)) + if (block.builtInRegistryHolder() + .is(BlockTags.BUTTONS)) return nudge; if (block == Blocks.END_ROD) return nudge; diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java index d9fe1c193..ede584da7 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java @@ -1,6 +1,7 @@ package com.simibubi.create.foundation.tileEntity.behaviour.filtering; import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSpecialTextures; import com.simibubi.create.CreateClient; import com.simibubi.create.content.logistics.item.filter.FilterItem; @@ -131,7 +132,10 @@ public class FilteringRenderer { ms.pushPose(); slotPositioning.transform(blockState, ms); - ValueBoxRenderer.renderItemIntoValueBox(filter, ms, buffer, light, overlay); + if (AllBlocks.CONTRAPTION_CONTROLS.has(blockState)) + ValueBoxRenderer.renderFlatItemIntoValueBox(filter, ms, buffer, light, overlay); + else + ValueBoxRenderer.renderItemIntoValueBox(filter, ms, buffer, light, overlay); ms.popPose(); } sided.fromSide(side); diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index 2c861151e..8c7a2aab4 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -588,6 +588,10 @@ "create.boiler.via_one_engine": "via 1 engine", "create.boiler.via_engines": "via %1$s engines", + "create.elevator_contact.title": "Elevator Contact", + "create.elevator_contact.floor_identifier": "Floor Identifier", + "create.elevator_contact.floor_description": "Floor Description", + "create.gui.schedule.lmb_edit": "Left-Click to Edit", "create.gui.schedule.rmb_remove": "Right-Click to Remove", "create.gui.schedule.duplicate": "Duplicate", @@ -799,6 +803,11 @@ "create.contraption.controls.stop_controlling": "Stopped controlling contraption", "create.contraption.controls.approach_station": "Hold %1$s to approach %2$s", + "create.contraption.controls.specific_actor_toggle": "%1$s Actors: %2$s", + "create.contraption.controls.all_actor_toggle": "All Actors: %1$s", + "create.contraption.controls.actor_toggle.on": "On", + "create.contraption.controls.actor_toggle.off": "Off", + "create.display_link.set": "Targeted position selected", "create.display_link.success": "Successfully bound to targeted position", "create.display_link.clear": "Cleared position selection", @@ -860,6 +869,7 @@ "create.display_source.max_enchant_level": "Max Enchanting Cost", "create.display_source.boiler_status": "Boiler Status", "create.display_source.entity_name": "Entity Name", + "create.display_source.current_floor": "Elevator Location", "create.display_source.kinetic_speed": "Rotation Speed (RPM)", "create.display_source.kinetic_speed.absolute": "Ignore Direction", "create.display_source.kinetic_speed.directional": "Include Direction", diff --git a/src/main/resources/assets/create/models/block/contraption_controls/block.json b/src/main/resources/assets/create/models/block/contraption_controls/block.json new file mode 100644 index 000000000..82d694c11 --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/block.json @@ -0,0 +1,104 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_frame", + "1_7": "create:block/contraption_controls", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [14, 0, 6], + "to": [16, 14, 16], + "faces": { + "north": {"uv": [0, 9, 1, 16], "texture": "#4"}, + "east": {"uv": [13, 0, 8, 7], "texture": "#4"}, + "south": {"uv": [7, 0, 8, 7], "texture": "#4"}, + "west": {"uv": [16, 9, 11, 16], "texture": "#4"}, + "up": {"uv": [0, 0, 1, 5], "rotation": 180, "texture": "#1_7"}, + "down": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [2, 5, 14], + "to": [14, 14, 16], + "faces": { + "north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"}, + "south": {"uv": [1, 0, 7, 4.5], "texture": "#4"}, + "up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [0, 0, 6], + "to": [2, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [7, 9, 8, 16], "texture": "#4"}, + "east": {"uv": [11, 9, 16, 16], "texture": "#4"}, + "south": {"uv": [0, 0, 1, 7], "texture": "#4"}, + "west": {"uv": [8, 0, 13, 7], "texture": "#4"}, + "up": {"uv": [7, 0, 8, 5], "rotation": 180, "texture": "#1_7"}, + "down": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [2, 5, 7], + "to": [14, 10, 15], + "faces": { + "north": {"uv": [1, 16, 7, 13.5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [1, 16, 7, 12], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [2, 0, 8], + "to": [14, 5, 16], + "faces": { + "north": {"uv": [1, 4.5, 7, 7], "texture": "#4"}, + "south": {"uv": [1, 4.5, 7, 7], "texture": "#4"}, + "down": {"uv": [7, 12, 1, 16], "texture": "#1_7"} + } + }, + { + "from": [2, 9, 7], + "to": [14, 10, 15], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [1, 9.5, 7, 13.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/button.json b/src/main/resources/assets/create/models/block/contraption_controls/button.json new file mode 100644 index 000000000..47a0a32ba --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/button.json @@ -0,0 +1,56 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_frame", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [4.95, 8.5, 7.95], + "to": [11.05, 11, 14.05], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "north": {"uv": [5.5, 12.5, 2.5, 13], "rotation": 180, "texture": "#4"}, + "east": {"uv": [2.5, 13, 3, 10], "rotation": 90, "texture": "#4"}, + "south": {"uv": [2.5, 10, 5.5, 10.5], "rotation": 180, "texture": "#4"}, + "west": {"uv": [5, 10, 5.5, 13], "rotation": 90, "texture": "#4"}, + "up": {"uv": [2.5, 10, 5.5, 13], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_0.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_0.json new file mode 100644 index 000000000..3be842dcc --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_0.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [1, 0.5, 7, 3.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_1.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_1.json new file mode 100644 index 000000000..5c4e856cb --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_1.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [1, 4.5, 7, 7.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_2.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_2.json new file mode 100644 index 000000000..3da3a805e --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_2.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [1, 8.5, 7, 11.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_3.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_3.json new file mode 100644 index 000000000..c3e33150e --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_3.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [1, 12.5, 7, 15.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_4.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_4.json new file mode 100644 index 000000000..8f4a0a243 --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_4.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [9, 0.5, 15, 3.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_5.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_5.json new file mode 100644 index 000000000..093fd61d9 --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_5.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [9, 4.5, 15, 7.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_6.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_6.json new file mode 100644 index 000000000..466ed81e6 --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_6.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [9, 8.5, 15, 11.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/indicator_7.json b/src/main/resources/assets/create/models/block/contraption_controls/indicator_7.json new file mode 100644 index 000000000..9a7d32687 --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/indicator_7.json @@ -0,0 +1,52 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_indicator", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [9, 12.5, 15, 15.5], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/contraption_controls/item.json b/src/main/resources/assets/create/models/block/contraption_controls/item.json new file mode 100644 index 000000000..ae87b0f88 --- /dev/null +++ b/src/main/resources/assets/create/models/block/contraption_controls/item.json @@ -0,0 +1,124 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "4": "create:block/contraption_controls_frame", + "1_7": "create:block/contraption_controls", + "particle": "create:block/andesite_casing" + }, + "elements": [ + { + "from": [14, 0, 6], + "to": [16, 14, 16], + "faces": { + "north": {"uv": [0, 9, 1, 16], "texture": "#4"}, + "east": {"uv": [13, 0, 8, 7], "texture": "#4"}, + "south": {"uv": [7, 0, 8, 7], "texture": "#4"}, + "west": {"uv": [16, 9, 11, 16], "texture": "#4"}, + "up": {"uv": [0, 0, 1, 5], "rotation": 180, "texture": "#1_7"}, + "down": {"uv": [0, 11, 1, 16], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [2, 5, 14], + "to": [14, 14, 16], + "faces": { + "north": {"uv": [1, 0, 7, 4.5], "texture": "#1_7"}, + "south": {"uv": [1, 0, 7, 4.5], "texture": "#4"}, + "up": {"uv": [1, 0, 7, 1], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [0, 0, 6], + "to": [2, 14, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [7, 9, 8, 16], "texture": "#4"}, + "east": {"uv": [11, 9, 16, 16], "texture": "#4"}, + "south": {"uv": [0, 0, 1, 7], "texture": "#4"}, + "west": {"uv": [8, 0, 13, 7], "texture": "#4"}, + "up": {"uv": [7, 0, 8, 5], "rotation": 180, "texture": "#1_7"}, + "down": {"uv": [7, 11, 8, 16], "rotation": 180, "texture": "#1_7"} + } + }, + { + "from": [2, 5, 7], + "to": [14, 10, 15], + "faces": { + "north": {"uv": [1, 16, 7, 13.5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [1, 16, 7, 12], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [2, 0, 8], + "to": [14, 5, 16], + "faces": { + "north": {"uv": [1, 4.5, 7, 7], "texture": "#4"}, + "south": {"uv": [1, 4.5, 7, 7], "texture": "#4"}, + "down": {"uv": [7, 12, 1, 16], "texture": "#1_7"} + } + }, + { + "from": [4.95, 8.5, 7.95], + "to": [11.05, 11, 14.05], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "north": {"uv": [5.5, 12.5, 2.5, 13], "rotation": 180, "texture": "#4"}, + "east": {"uv": [2.5, 13, 3, 10], "rotation": 90, "texture": "#4"}, + "south": {"uv": [2.5, 10, 5.5, 10.5], "rotation": 180, "texture": "#4"}, + "west": {"uv": [5, 10, 5.5, 13], "rotation": 90, "texture": "#4"}, + "up": {"uv": [2.5, 10, 5.5, 13], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [2, 9, 7], + "to": [14, 10, 15], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [1, 9.5, 7, 13.5], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [2, 9.05, 8], + "to": [14, 10.05, 14], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 7]}, + "faces": { + "up": {"uv": [1, 10, 7, 13], "rotation": 180, "texture": "#4"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [1.5, -0.25, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, -2.25] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_contact/block.json b/src/main/resources/assets/create/models/block/elevator_contact/block.json new file mode 100644 index 000000000..6ced587e7 --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_contact/block.json @@ -0,0 +1,82 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/contact_front", + "1": "create:block/elevator_contact_side", + "3": "create:block/rose_quartz_lamp", + "particle": "create:block/elevator_contact_side" + }, + "elements": [ + { + "name": "Center", + "from": [2, 0, 2], + "to": [14, 15, 14], + "faces": { + "up": {"uv": [2, 2, 14, 14], "texture": "#0"}, + "down": {"uv": [2, 2, 14, 14], "texture": "#3"} + } + }, + { + "name": "Side", + "from": [0, 0, 0], + "to": [2, 16, 16], + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 2, 16], "texture": "#3"} + } + }, + { + "name": "Side", + "from": [14, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "south": {"uv": [14, 0, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "up": {"uv": [14, 0, 16, 16], "texture": "#0"}, + "down": {"uv": [14, 0, 16, 16], "texture": "#3"} + } + }, + { + "name": "Short Side", + "from": [2, 0, 0], + "to": [14, 16, 2], + "faces": { + "north": {"uv": [2, 0, 14, 16], "texture": "#1"}, + "south": {"uv": [2, 0, 14, 16], "texture": "#1"}, + "up": {"uv": [2, 0, 14, 2], "texture": "#0"}, + "down": {"uv": [2, 14, 14, 16], "texture": "#3"} + } + }, + { + "name": "Short Side", + "from": [2, 0, 14], + "to": [14, 16, 16], + "faces": { + "north": {"uv": [2, 0, 14, 16], "texture": "#1"}, + "south": {"uv": [2, 0, 14, 16], "texture": "#1"}, + "up": {"uv": [2, 14, 14, 16], "texture": "#0"}, + "down": {"uv": [2, 0, 14, 2], "texture": "#3"} + } + }, + { + "name": "Contact", + "from": [6, 15, 6], + "to": [10, 16, 10], + "shade": false, + "faces": { + "north": {"uv": [6, 6, 10, 7], "rotation": 180, "texture": "#0"}, + "east": {"uv": [9, 6, 10, 10], "rotation": 90, "texture": "#0"}, + "south": {"uv": [9, 6, 10, 10], "rotation": 270, "texture": "#0"}, + "west": {"uv": [6, 6, 10, 7], "texture": "#0"}, + "up": {"uv": [6, 6, 10, 10], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_contact/block_dim.json b/src/main/resources/assets/create/models/block/elevator_contact/block_dim.json new file mode 100644 index 000000000..b19221a98 --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_contact/block_dim.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/elevator_contact/block", + "textures": { + "1": "create:block/elevator_contact_side_dim", + "3": "create:block/rose_quartz_lamp_dim", + "particle": "create:block/elevator_contact_side_dim" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_contact/block_powered.json b/src/main/resources/assets/create/models/block/elevator_contact/block_powered.json new file mode 100644 index 000000000..3807fab67 --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_contact/block_powered.json @@ -0,0 +1,8 @@ +{ + "parent": "create:block/elevator_contact/block", + "textures": { + "1": "create:block/elevator_contact_side_powered", + "3": "create:block/rose_quartz_lamp_powered", + "particle": "create:block/elevator_contact_side_powered" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_pulley/block.json b/src/main/resources/assets/create/models/block/elevator_pulley/block.json new file mode 100644 index 000000000..cc3c334ee --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_pulley/block.json @@ -0,0 +1,151 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/elevator_pulley", + "particle": "create:block/brass_gearbox" + }, + "elements": [ + { + "from": [13, 2, 2], + "to": [15, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [1, 1, 1.5, 7], "texture": "#0"}, + "east": {"uv": [9, 1, 15, 7], "texture": "#0"}, + "south": {"uv": [6.5, 1, 7, 7], "texture": "#0"}, + "up": {"uv": [1, 1, 1.5, 7], "texture": "#0"}, + "down": {"uv": [6.5, 1, 7, 7], "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [2, 16, 2], + "faces": { + "north": {"uv": [7, 0, 8, 8], "texture": "#0"}, + "east": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "south": {"uv": [9, 0, 8, 8], "texture": "#0"}, + "west": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "up": {"uv": [7, 7, 8, 8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [7, 0, 8, 1], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [0, 0, 14], + "to": [2, 16, 16], + "faces": { + "north": {"uv": [16, 0, 15, 8], "texture": "#0"}, + "east": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "west": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "up": {"uv": [7, 0, 8, 1], "rotation": 180, "texture": "#0"}, + "down": {"uv": [7, 7, 8, 8], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [0, 0, 2], + "to": [2, 2, 14], + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "up": {"uv": [9, 7, 15, 8], "rotation": 270, "texture": "#0"}, + "down": {"uv": [7, 1, 8, 7], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [0, 14, 2], + "to": [2, 16, 14], + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [9, 0, 15.5, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [9, 0, 15, 1], "texture": "#0"}, + "up": {"uv": [7, 0.5, 8, 7.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [9, 1, 15, 0], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [1, 2, 2], + "to": [3, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [6.5, 1, 7, 7], "texture": "#0"}, + "south": {"uv": [1, 1, 1.5, 7], "texture": "#0"}, + "west": {"uv": [9, 1, 15, 7], "texture": "#0"}, + "up": {"uv": [6.5, 1, 7, 7], "texture": "#0"}, + "down": {"uv": [1, 1, 1.5, 7], "texture": "#0"} + } + }, + { + "from": [14, 0, 14], + "to": [16, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 0, 8, 8], "texture": "#0"}, + "east": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "south": {"uv": [7, 0, 8, 8], "texture": "#0"}, + "west": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "up": {"uv": [7, 7, 8, 8], "texture": "#0"}, + "down": {"uv": [7, 0, 8, 1], "texture": "#0"} + } + }, + { + "from": [14, 0, 0], + "to": [16, 16, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "east": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "south": {"uv": [16, 0, 15, 8], "texture": "#0"}, + "west": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "up": {"uv": [7, 0, 8, 1], "texture": "#0"}, + "down": {"uv": [7, 7, 8, 8], "texture": "#0"} + } + }, + { + "from": [14, 0, 2], + "to": [16, 2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "up": {"uv": [9, 7, 15, 8], "rotation": 90, "texture": "#0"}, + "down": {"uv": [7, 1, 8, 7], "texture": "#0"} + } + }, + { + "from": [14, 14, 2], + "to": [16, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "east": {"uv": [9, 0, 15, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "west": {"uv": [9, 0, 15.5, 1], "texture": "#0"}, + "up": {"uv": [7, 0.5, 8, 7.5], "texture": "#0"}, + "down": {"uv": [9, 1, 15, 0], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [2, 0, 2.9], + "to": [14, 2, 13.1], + "faces": { + "north": {"uv": [0, 8, 6, 9], "texture": "#0"}, + "south": {"uv": [0, 8, 6, 9], "texture": "#0"}, + "down": {"uv": [0, 9, 6, 14], "rotation": 180, "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Frame", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_pulley/item.json b/src/main/resources/assets/create/models/block/elevator_pulley/item.json new file mode 100644 index 000000000..f5c2abfac --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_pulley/item.json @@ -0,0 +1,250 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/elevator_pulley", + "1": "create:block/elevator_pulley_coil", + "1_0": "create:block/axis", + "1_1": "create:block/axis_top", + "particle": "create:block/brass_gearbox" + }, + "elements": [ + { + "from": [2, 2, 13], + "to": [14, 14, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [1, 1, 1.5, 7], "texture": "#0"}, + "south": {"uv": [9, 1, 15, 7], "texture": "#0"}, + "west": {"uv": [6.5, 1, 7, 7], "texture": "#0"}, + "up": {"uv": [1, 1, 1.5, 7], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6.5, 1, 7, 7], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [14, 0, 0], + "to": [16, 16, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "east": {"uv": [7, 0, 8, 8], "texture": "#0"}, + "south": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "west": {"uv": [9, 0, 8, 8], "texture": "#0"}, + "up": {"uv": [7, 7, 8, 8], "rotation": 270, "texture": "#0"}, + "down": {"uv": [7, 0, 8, 1], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [2, 16, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "east": {"uv": [16, 0, 15, 8], "texture": "#0"}, + "south": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "up": {"uv": [7, 0, 8, 1], "rotation": 270, "texture": "#0"}, + "down": {"uv": [7, 7, 8, 8], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [2, 0, 0], + "to": [14, 2, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "down": {"uv": [7, 1, 8, 7], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [2, 14, 0], + "to": [14, 16, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [9, 0, 15, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [9, 0, 15.5, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [7, 0.5, 8, 7.5], "rotation": 270, "texture": "#0"}, + "down": {"uv": [9, 1, 15, 0], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [2, 2, 1], + "to": [14, 14, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 1, 15, 7], "texture": "#0"}, + "east": {"uv": [6.5, 1, 7, 7], "texture": "#0"}, + "west": {"uv": [1, 1, 1.5, 7], "texture": "#0"}, + "up": {"uv": [6.5, 1, 7, 7], "rotation": 90, "texture": "#0"}, + "down": {"uv": [1, 1, 1.5, 7], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [0, 0, 14], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "east": {"uv": [9, 0, 8, 8], "texture": "#0"}, + "south": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "west": {"uv": [7, 0, 8, 8], "texture": "#0"}, + "up": {"uv": [7, 7, 8, 8], "rotation": 90, "texture": "#0"}, + "down": {"uv": [7, 0, 8, 1], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [14, 0, 14], + "to": [16, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [8, 0, 9, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 8], "texture": "#0"}, + "south": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "west": {"uv": [16, 0, 15, 8], "texture": "#0"}, + "up": {"uv": [7, 0, 8, 1], "rotation": 90, "texture": "#0"}, + "down": {"uv": [7, 7, 8, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [2, 0, 14], + "to": [14, 2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [9, 7, 15, 8], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [9, 7, 15, 8], "rotation": 180, "texture": "#0"}, + "down": {"uv": [7, 1, 8, 7], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [2, 14, 14], + "to": [14, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 0, 15.5, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "south": {"uv": [9, 0, 15, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [7, 0.5, 8, 7.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [9, 1, 15, 0], "texture": "#0"} + } + }, + { + "from": [2.9, 0, 2], + "to": [13.1, 2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "east": {"uv": [0, 8, 6, 9], "texture": "#0"}, + "west": {"uv": [0, 8, 6, 9], "texture": "#0"}, + "down": {"uv": [0, 9, 6, 14], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [3, -2, 3], + "to": [13, 3, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "east": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "south": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "west": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "up": {"uv": [6, 8, 11, 13], "rotation": 90, "texture": "#0"}, + "down": {"uv": [6, 8, 11, 13], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [4, 2, 5], + "to": [12, 5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "north": {"uv": [10, 13, 14, 14.5], "texture": "#0"}, + "east": {"uv": [12, 9, 15, 10.5], "texture": "#0"}, + "south": {"uv": [10, 13, 14, 14.5], "texture": "#0"}, + "west": {"uv": [12, 9, 15, 10.5], "texture": "#0"}, + "up": {"uv": [6, 13, 10, 16], "rotation": 180, "texture": "#0"} + } + }, + { + "name": "Axis", + "from": [6, 6, 0], + "to": [10, 10, 16], + "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [6, 6, 10, 10], "rotation": 90, "texture": "#1_1"}, + "east": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, + "south": {"uv": [6, 6, 10, 10], "rotation": 90, "texture": "#1_1"}, + "west": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"}, + "down": {"uv": [6, 0, 10, 16], "texture": "#1_0"} + } + }, + { + "from": [2, 10, 3], + "to": [14, 14, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "west": {"uv": [3, 12, 13, 16], "texture": "#1"}, + "up": {"uv": [3, 0, 13, 12], "rotation": 90, "texture": "#1"} + } + }, + { + "from": [10, 2, 3], + "to": [14, 14, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "east": {"uv": [3, 4, 13, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 0, 13, 4], "rotation": 270, "texture": "#1"} + } + }, + { + "from": [2, 2, 3], + "to": [10, 10, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "west": {"uv": [3, 0, 13, 8], "texture": "#1"}, + "down": {"uv": [3, 8, 13, 16], "rotation": 270, "texture": "#1"} + } + } + ], + "groups": [ + { + "name": "Frame", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + }, + { + "name": "Anchor", + "origin": [0, 0, 0], + "color": 0, + "children": [11, 12] + }, + { + "name": "shaft", + "origin": [8, 8, 8], + "color": 0, + "children": [13] + }, + { + "name": "rope_coil", + "origin": [8, 8, 8], + "color": 0, + "children": [ + { + "name": "Spool", + "origin": [8, 8, 8], + "color": 0, + "children": [14, 15, 16] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_pulley/pulley_magnet.json b/src/main/resources/assets/create/models/block/elevator_pulley/pulley_magnet.json new file mode 100644 index 000000000..7f5134fb5 --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_pulley/pulley_magnet.json @@ -0,0 +1,41 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/elevator_pulley", + "particle": "create:block/brass_gearbox" + }, + "elements": [ + { + "from": [3, -3, 3], + "to": [13, 2, 13], + "faces": { + "north": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "east": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "south": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "west": {"uv": [11, 10.5, 16, 13], "texture": "#0"}, + "up": {"uv": [6, 8, 11, 13], "texture": "#0"}, + "down": {"uv": [6, 8, 11, 13], "texture": "#0"} + } + }, + { + "from": [5, 2, 4], + "to": [11, 5, 12], + "faces": { + "north": {"uv": [12, 9, 15, 10.5], "texture": "#0"}, + "east": {"uv": [10, 13, 14, 14.5], "texture": "#0"}, + "south": {"uv": [12, 9, 15, 10.5], "texture": "#0"}, + "west": {"uv": [10, 13, 14, 14.5], "texture": "#0"}, + "up": {"uv": [6, 13, 10, 16], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Anchor", + "origin": [0, 0, 0], + "color": 0, + "children": [0, 1] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_pulley/rope.json b/src/main/resources/assets/create/models/block/elevator_pulley/rope.json new file mode 100644 index 000000000..06e3cc6ab --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_pulley/rope.json @@ -0,0 +1,31 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/elevator_pulley_belt", + "particle": "create:block/brass_gearbox" + }, + "elements": [ + { + "from": [6, 0, 3.5], + "to": [10, 16, 5.5], + "faces": { + "north": {"uv": [3, 0, 7, 16], "texture": "#1"}, + "east": {"uv": [2, 0, 0, 16], "texture": "#1"}, + "south": {"uv": [3, 0, 7, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"} + } + }, + { + "from": [6, 0, 10.5], + "to": [10, 16, 12.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -5.5, 11.5]}, + "faces": { + "north": {"uv": [13, 16, 9, 0], "texture": "#1"}, + "east": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#1"}, + "south": {"uv": [13, 16, 9, 0], "texture": "#1"}, + "west": {"uv": [16, 0, 14, 16], "rotation": 180, "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_pulley/rope_coil.json b/src/main/resources/assets/create/models/block/elevator_pulley/rope_coil.json new file mode 100644 index 000000000..b36884c47 --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_pulley/rope_coil.json @@ -0,0 +1,42 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/elevator_pulley_coil", + "particle": "create:block/brass_gearbox" + }, + "elements": [ + { + "from": [3, 10, 2], + "to": [13, 14, 14], + "faces": { + "south": {"uv": [3, 12, 13, 16], "texture": "#1"}, + "up": {"uv": [3, 0, 13, 12], "texture": "#1"} + } + }, + { + "from": [3, 2, 2], + "to": [13, 14, 6], + "faces": { + "north": {"uv": [3, 4, 13, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 0, 13, 4], "texture": "#1"} + } + }, + { + "from": [3, 2, 6], + "to": [13, 10, 14], + "faces": { + "south": {"uv": [3, 0, 13, 8], "texture": "#1"}, + "down": {"uv": [3, 8, 13, 16], "texture": "#1"} + } + } + ], + "groups": [ + { + "name": "Spool", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/elevator_pulley/rope_half.json b/src/main/resources/assets/create/models/block/elevator_pulley/rope_half.json new file mode 100644 index 000000000..5ff05ff15 --- /dev/null +++ b/src/main/resources/assets/create/models/block/elevator_pulley/rope_half.json @@ -0,0 +1,39 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/elevator_pulley_belt", + "particle": "create:block/brass_gearbox" + }, + "elements": [ + { + "from": [6, 0, 3.5], + "to": [10, 8, 5.5], + "faces": { + "north": {"uv": [3, 8, 7, 16], "texture": "#1"}, + "east": {"uv": [2, 8, 0, 16], "texture": "#1"}, + "south": {"uv": [3, 8, 7, 16], "texture": "#1"}, + "west": {"uv": [0, 8, 2, 16], "texture": "#1"} + } + }, + { + "from": [6, 0, 10.5], + "to": [10, 8, 12.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, -5.5, 11.5]}, + "faces": { + "north": {"uv": [13, 8, 9, 0], "texture": "#1"}, + "east": {"uv": [14, 0, 16, 8], "rotation": 180, "texture": "#1"}, + "south": {"uv": [13, 8, 9, 0], "texture": "#1"}, + "west": {"uv": [16, 0, 14, 8], "rotation": 180, "texture": "#1"} + } + } + ], + "groups": [ + { + "name": "rope", + "origin": [8, 8, 8], + "color": 0, + "children": [0, 1] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_drill/item.json b/src/main/resources/assets/create/models/block/mechanical_drill/item.json index 0deb49447..725b4ed4a 100644 --- a/src/main/resources/assets/create/models/block/mechanical_drill/item.json +++ b/src/main/resources/assets/create/models/block/mechanical_drill/item.json @@ -209,16 +209,24 @@ } } ], - "display": {}, + "display": { + "fixed": { + "rotation": [0, 180, 0], + "translation": [0, 0, -1.75], + "scale": [0.5, 0.5, 0.5] + } + }, "groups": [ { "name": "head", "origin": [8, 8, 8], + "color": 0, "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] }, { "name": "casing", "origin": [8, 8, 8], + "color": 0, "children": [10, 11, 12, 13, 14] } ] diff --git a/src/main/resources/assets/create/models/block/mechanical_harvester/item.json b/src/main/resources/assets/create/models/block/mechanical_harvester/item.json index 970dc1d27..d81d76a75 100644 --- a/src/main/resources/assets/create/models/block/mechanical_harvester/item.json +++ b/src/main/resources/assets/create/models/block/mechanical_harvester/item.json @@ -1,161 +1,168 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", + "credit": "Made with Blockbench", "parent": "create:block/block", - "textures": { - "harvester": "create:block/harvester", - "anvil": "minecraft:block/anvil", - "andesite_casing_short": "create:block/andesite_casing_short", - "particle": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Core", - "from": [ 0, 2, 0 ], - "to": [ 16, 14, 2.9 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 2, 0, 14, 3 ], "rotation": 270 }, - "south": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 2, 0, 14, 3 ], "rotation": 90 }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 16, 2.9 ], "rotation": 180 }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 16, 2.9 ] } - } - }, - { - "name": "Wheel", - "from": [ 1, 0, 3 ], - "to": [ 1, 12, 15 ], - "rotation": { "origin": [ 8, 6, 9 ], "axis": "x", "angle": -22.5 }, - "faces": { - "east": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] }, - "west": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 0, 11 ], - "to": [ 16, 2, 12 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 10, 6 ], - "to": [ 16, 12, 7 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 8, 13 ], - "to": [ 16, 9, 15 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 9, 16, 10 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 3, 3 ], - "to": [ 16, 4, 5 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 6, 15 ], - "to": [ 16, 8, 15 ], - "faces": { - "north": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 }, - "south": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 } - } - }, - { - "name": "Wheel", - "from": [ 15, 0, 3 ], - "to": [ 15, 12, 15 ], - "rotation": { "origin": [ 8, 6, 9 ], "axis": "x", "angle": -22.5 }, - "faces": { - "east": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] }, - "west": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 4, 3 ], - "to": [ 16, 6, 3 ], - "faces": { - "north": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] }, - "south": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 12, 7 ], - "to": [ 16, 12, 9 ], - "faces": { - "up": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 }, - "down": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 0, 9 ], - "to": [ 16, 0, 11 ], - "faces": { - "up": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] }, - "down": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 } - } - }, - { - "name": "Attachment", - "from": [ 0.1, 7, 3 ], - "to": [ 2, 10, 11 ], - "rotation": { "origin": [ 0, 10, 3 ], "axis": "x", "angle": 22.5 }, - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 1.9, 3 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "south": { "texture": "#andesite_casing_short", "uv": [ 0.1, 8, 2, 11 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0.1, 6, 2, 14 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0.1, 6, 2, 14 ] } - } - }, - { - "name": "Attachment", - "from": [ 14, 7, 3 ], - "to": [ 15.9, 10, 11 ], - "rotation": { "origin": [ 0, 10, 3 ], "axis": "x", "angle": 22.5 }, - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 1.9, 3 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "south": { "texture": "#andesite_casing_short", "uv": [ 14, 8, 15.9, 11 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 14, 6, 15.9, 14 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 14, 6, 15.9, 14 ] } - } - } - ] + "textures": { + "harvester": "create:block/harvester", + "anvil": "block/anvil", + "particle": "create:block/andesite_casing_short", + "andesite_casing_short": "create:block/andesite_casing_short" + }, + "elements": [ + { + "name": "Core", + "from": [0, 2, 0], + "to": [16, 14, 2.9], + "faces": { + "north": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, + "east": {"uv": [2, 0, 14, 3], "rotation": 270, "texture": "#andesite_casing_short"}, + "south": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, + "west": {"uv": [2, 0, 14, 3], "rotation": 90, "texture": "#andesite_casing_short"}, + "up": {"uv": [0, 0, 16, 2.9], "rotation": 180, "texture": "#andesite_casing_short"}, + "down": {"uv": [0, 0, 16, 2.9], "texture": "#andesite_casing_short"} + } + }, + { + "name": "Wheel", + "from": [1, 0, 3], + "to": [1, 12, 15], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6, 9]}, + "faces": { + "east": {"uv": [0, 0, 12, 12], "texture": "#harvester"}, + "west": {"uv": [0, 0, 12, 12], "texture": "#harvester"} + } + }, + { + "name": "Trim", + "from": [0, 0, 11], + "to": [16, 2, 12], + "faces": { + "north": {"uv": [0, 0, 16, 2], "texture": "#anvil"}, + "east": {"uv": [0, 0, 1, 2], "texture": "#anvil"}, + "south": {"uv": [0, 0, 16, 2], "texture": "#anvil"}, + "west": {"uv": [0, 0, 1, 2], "texture": "#anvil"}, + "up": {"uv": [0, 0, 16, 1], "texture": "#anvil"}, + "down": {"uv": [0, 0, 16, 1], "texture": "#anvil"} + } + }, + { + "name": "Trim", + "from": [0, 10, 6], + "to": [16, 12, 7], + "faces": { + "north": {"uv": [0, 0, 16, 2], "texture": "#anvil"}, + "east": {"uv": [0, 0, 1, 2], "texture": "#anvil"}, + "south": {"uv": [0, 0, 16, 2], "texture": "#anvil"}, + "west": {"uv": [0, 0, 1, 2], "texture": "#anvil"}, + "up": {"uv": [0, 0, 16, 1], "texture": "#anvil"}, + "down": {"uv": [0, 0, 16, 1], "texture": "#anvil"} + } + }, + { + "name": "Trim", + "from": [0, 8, 13], + "to": [16, 9, 15], + "faces": { + "north": {"uv": [0, 9, 16, 10], "texture": "#anvil"}, + "east": {"uv": [0, 0, 2, 1], "texture": "#anvil"}, + "south": {"uv": [0, 0, 16, 1], "texture": "#anvil"}, + "west": {"uv": [0, 0, 2, 1], "texture": "#anvil"}, + "up": {"uv": [0, 0, 16, 2], "texture": "#anvil"}, + "down": {"uv": [0, 0, 16, 2], "texture": "#anvil"} + } + }, + { + "name": "Trim", + "from": [0, 3, 3], + "to": [16, 4, 5], + "faces": { + "north": {"uv": [0, 0, 16, 1], "texture": "#anvil"}, + "east": {"uv": [0, 0, 2, 1], "texture": "#anvil"}, + "south": {"uv": [0, 0, 16, 1], "texture": "#anvil"}, + "west": {"uv": [0, 0, 2, 1], "texture": "#anvil"}, + "up": {"uv": [0, 0, 16, 2], "texture": "#anvil"}, + "down": {"uv": [0, 0, 16, 2], "texture": "#anvil"} + } + }, + { + "name": "Blade", + "from": [0, 6, 15], + "to": [16, 8, 15], + "faces": { + "north": {"uv": [0, 12, 16, 14], "rotation": 180, "texture": "#harvester"}, + "south": {"uv": [0, 12, 16, 14], "rotation": 180, "texture": "#harvester"} + } + }, + { + "name": "Wheel", + "from": [15, 0, 3], + "to": [15, 12, 15], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6, 9]}, + "faces": { + "east": {"uv": [0, 0, 12, 12], "texture": "#harvester"}, + "west": {"uv": [0, 0, 12, 12], "texture": "#harvester"} + } + }, + { + "name": "Blade", + "from": [0, 4, 3], + "to": [16, 6, 3], + "faces": { + "north": {"uv": [0, 12, 16, 14], "texture": "#harvester"}, + "south": {"uv": [0, 12, 16, 14], "texture": "#harvester"} + } + }, + { + "name": "Blade", + "from": [0, 12, 7], + "to": [16, 12, 9], + "faces": { + "up": {"uv": [0, 12, 16, 14], "rotation": 180, "texture": "#harvester"}, + "down": {"uv": [0, 12, 16, 14], "texture": "#harvester"} + } + }, + { + "name": "Blade", + "from": [0, 0, 9], + "to": [16, 0, 11], + "faces": { + "up": {"uv": [0, 12, 16, 14], "texture": "#harvester"}, + "down": {"uv": [0, 12, 16, 14], "rotation": 180, "texture": "#harvester"} + } + }, + { + "name": "Attachment", + "from": [0.1, 7, 3], + "to": [2, 10, 11], + "rotation": {"angle": 22.5, "axis": "x", "origin": [0, 10, 3]}, + "faces": { + "north": {"uv": [0, 0, 1.9, 3], "texture": "#andesite_casing_short"}, + "east": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, + "south": {"uv": [0.1, 8, 2, 11], "texture": "#andesite_casing_short"}, + "west": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, + "up": {"uv": [0.1, 6, 2, 14], "texture": "#andesite_casing_short"}, + "down": {"uv": [0.1, 6, 2, 14], "texture": "#andesite_casing_short"} + } + }, + { + "name": "Attachment", + "from": [14, 7, 3], + "to": [15.9, 10, 11], + "rotation": {"angle": 22.5, "axis": "x", "origin": [0, 10, 3]}, + "faces": { + "north": {"uv": [0, 0, 1.9, 3], "texture": "#andesite_casing_short"}, + "east": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, + "south": {"uv": [14, 8, 15.9, 11], "texture": "#andesite_casing_short"}, + "west": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, + "up": {"uv": [14, 6, 15.9, 14], "texture": "#andesite_casing_short"}, + "down": {"uv": [14, 6, 15.9, 14], "texture": "#andesite_casing_short"} + } + } + ], + "display": { + "fixed": { + "rotation": [0, 180, 0], + "translation": [0, 0.5, -4], + "scale": [0.5, 0.5, 0.5] + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_plough.json b/src/main/resources/assets/create/models/block/mechanical_plough.json index bdbde566a..ad0dd1fb0 100644 --- a/src/main/resources/assets/create/models/block/mechanical_plough.json +++ b/src/main/resources/assets/create/models/block/mechanical_plough.json @@ -78,10 +78,9 @@ } ], "display": { - "gui": { - "rotation": [30, -135, 0], - "translation": [1, 0, 0], - "scale": [0.625, 0.625, 0.625] + "fixed": { + "translation": [0, 0.5, -4], + "scale": [0.5, 0.5, 0.5] } } } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/item.json b/src/main/resources/assets/create/models/block/mechanical_saw/item.json index a74e1a24c..b81666f37 100644 --- a/src/main/resources/assets/create/models/block/mechanical_saw/item.json +++ b/src/main/resources/assets/create/models/block/mechanical_saw/item.json @@ -1,98 +1,105 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "particle": "create:block/gearbox_top", - "slit": "create:block/mechanical_saw_top", - "stonecutter_saw": "block/stonecutter_saw", - "gearbox_top": "create:block/gearbox_top", - "encased_belt": "create:block/encased_chain_drive", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short" - }, + "credit": "Made with Blockbench", "parent": "create:block/block", - "elements": [ - { - "name": "Bottom", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 12 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 16, 16 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 4, 14, 16, 16 ] }, - "south": { "texture": "#encased_belt", "uv": [ 0, 14, 16, 16 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 12, 16 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] } - } - }, - { - "name": "Top", - "from": [ 0, 14, 0 ], - "to": [ 16, 16, 12 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 6 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 4, 4, 16, 6 ] }, - "south": { "texture": "#encased_belt", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 12, 6 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] } - } - }, - { - "name": "Back", - "from": [ 0, 2, 0 ], - "to": [ 2, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] } - } - }, - { - "name": "Inner", - "from": [ 0, 2, 2 ], - "to": [ 16, 14, 11 ], - "faces": { - "east": { "texture": "#andesite_casing_short", "uv": [ 2, 6, 14, 15 ], "rotation": 90 }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 16, 14 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 2, 6, 14, 15 ], "rotation": 270 } - } - }, - { - "name": "SawSlit", - "from": [ 1, 7, 11.062 ], - "to": [ 15, 9, 11.062 ], - "faces": { - "south": { "texture": "#slit", "uv": [ 1, 7, 15, 9 ] } - } - }, - { - "name": "Blade", - "from": [ 1, 8, 11 ], - "to": [ 15, 8.062, 18 ], - "faces": { - "up": { "texture": "#stonecutter_saw", "uv": [ 1, 9, 15, 16 ], "rotation": 180 }, - "down": { "texture": "#stonecutter_saw", "uv": [ 1, 9, 15, 16 ] } - } - }, - { - "name": "Back", - "from": [ 14, 2, 0 ], - "to": [ 16, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] } - } - }, - { - "name": "Back", - "from": [ 2, 2, 1 ], - "to": [ 14, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] } - } - } - ] + "textures": { + "slit": "create:block/mechanical_saw_top", + "stonecutter_saw": "block/stonecutter_saw", + "particle": "create:block/gearbox_top", + "gearbox_top": "create:block/gearbox_top", + "encased_belt": "create:block/encased_chain_drive", + "gearbox": "create:block/gearbox", + "andesite_casing_short": "create:block/andesite_casing_short" + }, + "elements": [ + { + "name": "Bottom", + "from": [0, 0, 0], + "to": [16, 2, 12], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#andesite_casing_short"}, + "east": {"uv": [4, 14, 16, 16], "texture": "#andesite_casing_short"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#encased_belt"}, + "west": {"uv": [0, 14, 12, 16], "texture": "#andesite_casing_short"}, + "up": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, + "down": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"} + } + }, + { + "name": "Top", + "from": [0, 14, 0], + "to": [16, 16, 12], + "faces": { + "north": {"uv": [0, 4, 16, 6], "texture": "#andesite_casing_short"}, + "east": {"uv": [4, 4, 16, 6], "texture": "#andesite_casing_short"}, + "south": {"uv": [0, 0, 16, 2], "texture": "#encased_belt"}, + "west": {"uv": [0, 4, 12, 6], "texture": "#andesite_casing_short"}, + "up": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, + "down": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"} + } + }, + { + "name": "Back", + "from": [0, 2, 0], + "to": [2, 14, 2], + "faces": { + "north": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, + "east": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, + "south": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, + "west": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"} + } + }, + { + "name": "Inner", + "from": [0, 2, 2], + "to": [16, 14, 11], + "faces": { + "east": {"uv": [2, 6, 14, 15], "rotation": 90, "texture": "#andesite_casing_short"}, + "south": {"uv": [0, 2, 16, 14], "texture": "#gearbox_top"}, + "west": {"uv": [2, 6, 14, 15], "rotation": 270, "texture": "#andesite_casing_short"} + } + }, + { + "name": "SawSlit", + "from": [1, 7, 11.062], + "to": [15, 9, 11.062], + "faces": { + "south": {"uv": [1, 7, 15, 9], "texture": "#slit"} + } + }, + { + "name": "Blade", + "from": [1, 8, 11], + "to": [15, 8.062, 18], + "faces": { + "up": {"uv": [1, 9, 15, 16], "rotation": 180, "texture": "#stonecutter_saw"}, + "down": {"uv": [1, 9, 15, 16], "texture": "#stonecutter_saw"} + } + }, + { + "name": "Back", + "from": [14, 2, 0], + "to": [16, 14, 2], + "faces": { + "north": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, + "east": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, + "south": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, + "west": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"} + } + }, + { + "name": "Back", + "from": [2, 2, 1], + "to": [14, 14, 2], + "faces": { + "north": {"uv": [2, 2, 14, 14], "texture": "#gearbox"} + } + } + ], + "display": { + "fixed": { + "rotation": [0, 180, 0], + "translation": [0, 0, -1.5], + "scale": [0.5, 0.5, 0.5] + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/contraption_controls.png b/src/main/resources/assets/create/textures/block/contraption_controls.png new file mode 100644 index 0000000000000000000000000000000000000000..49dd879026c95007d00913002685f1b7338b0fdf GIT binary patch literal 7358 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/contraption_controls_indicator.png b/src/main/resources/assets/create/textures/block/contraption_controls_indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..33f1fdd9dd263d21950efdf7d9a0b1c82bbed727 GIT binary patch literal 2945 zcmb_eeQXow88@0x16@cZO6f>8Zq5R6>G?i{(28R{*K8sXQ$}# z1brS45>%v!7y~9#e*sv!V9f#x2$J-fi$4@{7Hn9R2wHQro2y z(X_OzbRBpAT;=(`zSkqI+~KD`d8q%5elvY>a!|VD-}>~%H>bw0Y_I$5;GK_#-+AN8 z=%&7F&o5lMZ|g7B$%p^))AZ=Pg)h}P#$vJb{Z+rezHQx}hoyArp6Sv(?}GPsEeWLl zc%F4$t++b$_vWVSN95DZBTt=r<Y})l=a^z0%+DE2m>8scJfANh6R?YOw2c~;^goX53Qh0E&1;Rfsy|@QH7HAE1 zjnjo6Q}tU{&cdB}a_t5c0#51QIg2XScAHE^2gT5OZGFJc@>1N&2~rqXQ*jxhO(xf> zl+5w1KtsYHDkj|KiQ|K2L=@cS@7V)*K=yzZu{N!M#&lhXPq*?;!Mti^@qAZ`g$!|^ zaY!m2OQ>whZ8nHm_+J-eX2gJKt#0%BKoIdr3P30;WyR6zl-N$1Aqj%G6d}Skc-Le} z;L2@o(KMOGuw*i6P1>xI62%Co(~03EMv^E*plU}#<5FlsEzgi-X}mz?6;akiDS_y; zTv%$;+-B&9;UL`Mt5Z;r<=58+yQ&G84=yMe5CmW(jx#7uqNG!gAro9&4g~U=2{oHT zm`yCj$rxe9v3NX>R<-K(n|5xCRzn>!z#4!mwJAKPZU+giJZDUfwW)=++Ek#63}0hH z1cPoG7IXL-Um%#r>sgD6aoIrY$Q(-G^BB2Ji5dF>kAWD7L*puBB=T5IjNCkj8UE`# zGmJwMdEObwTwZkhFnO$3;@fmfKCj!XJID$WFAA*j*G3WyVqfKzW|QagJspq(J2K z>lG1}ITtJRN9PeB597coJHgmdN0^SF6i?Bplcq?NaZohJ(00a7Qf5TYH(M3-xy_^% z&n|;8PK!uN9CnSE5TvASP3NC81d0 z*)@=ggC!)!xhTNoMAVGvnP;K%Fom36;*ih?iS;Oe(3SdPyep31cY z!JHNHEnFfB;K+p?n1PA6sd9(F2{a?vP{s*plyYz!8g?)Q%2Na&93&nQ2w0sNeN~ER zNlpP(QCKgqEMUVKWr0*?>(i1$CR>1Bd^nt~aO{zEh$L9b!BVi{ZdQX{B}S3_KjPqd zoaP8#KsmrTQOa%?P^aJ!P+J(M!wh4$GaQri?thKLMuZ3(i#u7|J~Iv%roS2r&&Z_@ zR5+k+Jx-TCbXlL?fsJjl920?3aIQu+AWcD%T-blnC}7Jr?Ci;IRmgC8B)J35vKFmA znV6+(U!s!X^NT!4sM73$yak-eYQYQG2reUqZ+EzYSy#&9=%7=&jh-klm{Oi-#Du5?>|sBw{~E8c&p`^P0!qK zdg;8zVx>1 zvtvuYUgq*o4ZXF()%%-a_xb6rv67XmuD$q&lIADwOLksh`}J#-ue#2AWc8Mv{{|Sc BNS%G}}0G|+7O-)T}YwN12s{a1|)YR1Q@NiQT6J=#(O*OR=DaRCHvuHm3je6nz zNNS%Lh(0G|+7O-)T}YwN12s{a1|)YR1Q@NiQT6J=#(O*OS*3A-Kzk2-0mvuXL8 z9HUq11W!@+o3G)w_Snjf?#isZ_Skb;E>}o}o!q(_iy)0K7iF>#8 z&m_<6=Mj6j(kxc+h4HaD&S&3$ys=yC%Wu)${{s_wII17-3;;To!PC{xWt~$(699>r BhFt&v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/elevator_contact_side_powered.png b/src/main/resources/assets/create/textures/block/elevator_contact_side_powered.png new file mode 100644 index 0000000000000000000000000000000000000000..afc7fd5d747fe2e087d6c9dd35167db6248cb521 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}N0G|+7O-)T}YwN12s{a1|)YR1Q@NiQT6J=#(O*OS>KK)gi;U|nz{=dHX zf9bUUt*yVaYreY{{fsJKdu(M#cV$*ya!^>Xm5XbWoO{2L&#WaAEDxz}0h-KN;1OBO zz`%C^gc-B0b#ej)7kIijhG+!K_A-hcR^V{HnDu(WinW(^{*EtMSoy8bv*7;&`e)1vTzDR(Sp12!a6C79&1?FMzq+Acxi5VKhOUv*Q19G5wkt^->BYo zd`8g3YT@^pvu2t+S$)c&I-}<14rTMy=+iIMYbC<3PHs0XEcj#+Z=Lg!dyD>T^Jmv1 yWfRit*U!Fo&Mnz+3j<5?k1N-mK3ATdXYV_odv?}dxW?khbnnaSqxbZ>$tkKC$njaJ2-;~1 zY3UgUTS)mENqFju8<<(Ty0`=c1Ox^Ks;j9=U^YfdO zZ(8J|t*&h#E-9m|rtRYGlai4f7#37gUE&`W*4W-Weby8gPmiehxU{UyqS6vWd+YTZ zmK{5`18B&+Gqu@3%BUpBFZe&HfPpt)#(SV{&H|6fVg?31B@kv@_2}*-V1Qikba4!^ z@XwvxUAD?Vz;&|8;l&G&G+d2{&Sn*SQTy}1effEn3yW5#>+%+srJdsm$S7HL+&sd%oI!gy60w|`T41)3{$=Zi+l=Nd1X!6Z1IfX^**QM-Zd=Q z@O4^aZf^I3M9u?;g$z#i%e}Fhc4Hw6^J%m1ClYc@enu^1nH`gMBY9Hm)~oN<#=T!- znmFk+PtXQWIiZlGfS4r9tO|vmn`fF{-k!cyJgYu}W8S^|`0u~>9%=NL+}6S8ZvN8Z zD4#XDBJj^cd z&eYDcWTI@#wfnhpv9A|ila)+x@?QC}I^dl3lB^9K0rrn&Tyn2}kG-EL*;e=BqO*+1 z|IQt~DKa~^7rr?zCiR=)!}T@Aw;xti%WZg+`QUyX%d*@FClXietoiq=_iT((+oB`$ o1)u+V_})GzZL;B!U2*@Jezopr02I(+>Hq)$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/elevator_pulley_belt.png b/src/main/resources/assets/create/textures/block/elevator_pulley_belt.png new file mode 100644 index 0000000000000000000000000000000000000000..f9dd15f2808df547b6f154ea7177d72b34437a23 GIT binary patch literal 394 zcmV;50d@X~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Ut?3K~y+T-BPhi z13?gdcX)S$=2%7W11v2ByFfz3P794?I{(c|>lAiE8Wqwhwic2`L6Xg>>|PGnnZ0b0 zE`<>A!7Rh<%zKZWjgHy}&e{rh!>8!{r0u493^R+Na>C8+Fao1{+;YWqf{fOolya}5 zx0uULdSXh~q{oAZd=n)<$g*r+1+2A98o`=x7-QyDz?2nYIRfO;H?ad53J@|%Tusg* z0V4k29B8d^*1N#rX>WN4#>`NB)vUTOc>frq_|!fRD9aMN`%UaMJ6Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0WL{IK~zXf?NmKW z1TheOySTf9x6yz?qD#_kr%*FMtT4NS%G}B0G|+7M;k*+6CEQxjQ~#@Co63$Q(aFd)0B+lz_6f*K$q#WrZl!UmsFPo zdfDn~sVXbTN{EX9wVpe=j~7S@l?3?(|3?Q5kM{2u0?Kk0ctjR6FmMZlFeAgPITAp@ zbWaz@5RKr{UT?kw3LLDgqFZk9f8U?u+Ii6=c0zopr0MQ_4E&u=k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/elevator_pulley_coil_scroll.png b/src/main/resources/assets/create/textures/block/elevator_pulley_coil_scroll.png new file mode 100644 index 0000000000000000000000000000000000000000..b5364418d025f4c446c66c2992eea35673418b28 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!3-pI!a4o{DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheS^+*Gu8uZ_mL@tzdKv+qHcnRBR;Ie1PNpdt$$?=(5rHn#XH98rZ!W1W z0V?OZ8g~jv@s$Mm1^-6|46X<6oB+yj7I;J!0~H(wVaDV6D^h@hQJyZ2AsWF?CpdB) zP~c&?8#;N*tpD}fBbH>i{%VjbI$_|WaPTg(M6lSSxLYe^Cn+`Zt=MKLx54DVPR4+9 zM$$X4*f6gAb@4`wq=T_fe4D2Ai{7IVQp`VI+uzZ@s=)iX{!#Y=pe+oZu6{1-oD!M< D*2ZE} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/rose_quartz_lamp_dim.png b/src/main/resources/assets/create/textures/block/rose_quartz_lamp_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..dee04668f21bdfd1b6f830503f60bf7978d67651 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}Z0G|-oj_%4?OD3#6wlXU(Ihs#DMcAxF$}uP`xJSWblVkMRwEPY^mpW;u zVhOudI>A$v{pM@Ealo5ghC9 z$kc4W(VfJpQ2Oe>y!DH`#{nLxs|J_ue+Za4u L{an^LB{Ts58LW0@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/gui/display_link.png b/src/main/resources/assets/create/textures/gui/display_link.png index 35c88f4640b743bd2e441b0f7b3014d0f4aa1d7e..216ab336a7c39d8e9ca734108f295cc825143dc7 100644 GIT binary patch literal 2037 zcmb7F30D)@60Y0n1Ofx7xQvKH93e_jb_84?C|eXT0w%12j<|p3lto2BQ1Uv=FL-^vKHsf-s_ItNsk-+FKfuR8 z&qNOZ40yhtfdGhFBG9E#6n8l!SSuw5`mBV~d#1gVfN%Bi_W-zdT>tAvIwj}u{erzH zrqk&dhA|ingwTiDcxA4q&=NM-qewf5w1o%?HV{t18p0?nhOk8tO2G<3C~!c?0UXCq zoH&t^l9HI1SXEWUceC_xV7a=w3WY*vXJ?5-A`*!-8cktgp-QD%zkdCeEnB*~yE{7{ zb#``kbaWII6O70+UtGf`#%=C<>ncE+wB;9Yk$mBS@_#K#}x6Lqd)a? zqMb^+-;9p#ZCdI&4??68&?P_@s{5v+DS*h>h|huFSNA<^Xqb9g6$5AT^S?i9(hy%& z{$t;HWdel$DgCZ1^ND?WE6?Mqu30U6!cO7nvy2%;FBu;KWAOm)R4<@L-k=W^Ws{Q4EGjo4L^6|OxCYATiO#@1J z(})F^%;ARz&4#d39s3wp!>jgGCfWDYWHHL_5Y%%slF5p_I?_)GP%?VX3N?(LvqZh4 zW;Q5;7Q7OW`6n8J(et-tq=ab{= za2b!UYNWFaBMkgW;yQQpxL@vaG?EwT6n~EQPjHe4)0rWeGJ?j2bG&;trpJwqlj>br zT=%^6wYPF0pDv>UJ<5#6)a4$2KqYC5o=r?H>Z^>1q4@fUzn!yKY&F3Q=?QxDAE$0b zoov!-_6QKi&0o*TxP64_^1}4Qt3&6tRkGcV1x}~j9Ht2=FHmf-38QL8Fo!;G#bksB z)A!@5b=m`E_UK63LXKgC9XfRnS!yGw+iyiF60Hn7 zt3MX(9gew+KG@5+%k_sAQCU-paAwJ2%2q}U;A**V#e;<61%?sQ--&nQI%Nm&RN?A5 zgiDf>Ez0@jq=!SruEn=qq3PkB3T^qRqTd{2vU|iA@S+~^pZIsVv!A&I_;!^cCGUuRlXETT z;T%nTe%G@kG!lmO1wFA!XW9&TTl>Su8BMnCGvwn}N~Cl1Hl}d|M&UsggpR_}W-3Hs zI12;}#I+ZLr zsI-WOq;G@bSgWs2JB>kOleyj)~RpK$*OJZGSQOLE~($zqa8cmfE3^e`&`` zn~M$Ph*#myi(0Hk%a78?m?FU^L@=hWSsxxGEo-$!(X$VOE>{OSB3pz-PpT5&%_Tv@ z?pgZP(yh9zcT4i;69uiJEJ($^Kv|PFo$z7JfzPIV+Qn+=YmB5?B)F#10rAI1kS^+n z)jdOIz%5+y4PI=~AskH}8j`tJzwU)g-jY7#g59fGM=wZlEHNYIsb>l>GOj!a!CFv% zxj&5)oa=neGDW P83UeIfM@B-==A>qICgZQ literal 1164 zcmZWoX;4#F6h80eJxIcmus9ToG@Ys~R2D%bv;`6-NEpf@f(fBe&^Cb3vPFpC;B#kj z5U@q4HrRm?1SUXb)8Y_10y0>ZDnmdbfwF`Fl(ryag`_Xk_D}D8cfNb(eCOQn+?ksn z8tiXEx1j@oNdTW027r)91gI2}k{X2JBw_K~ATB`j6{F2KoQ!Fy{KyOd({BAnI!cmO z^d%W#{=Og|v|S{Fg3wRH{Ycj7bTczEO69mxsT>;{`=k4--rnAhj*jZ;>Z+=$uJ3ro z#l?k%g;J?hB9Ww|q=?00fj|%u5fSQbALEL6dU{6hgJ>7{jD$0Icz8rPLzEMUNH_x5 zjV0O(kt99@AqfW%kgx{>0|Ok#F$_ad6hZXk6z;Z)(_55;1s?{^yiyE6$qnFf!=)3; z!};`cF2)Ax^n8~R*LnBJ+fm;ic%jPR|@-`8phBy0AzWD`no=Vp8@q9>R*$D4sjAf7A zw{zWW+2w)J+PZtsUyQU24x6Y(JEmW+F!1S7Un4J7X#4vsZhP)8Efr;U?bKNJRh;-T zMQ))AJsot1=94$WJ?}T`+fzn;K&56aWW_dGMC?LBh4g%#yHImOtut zz_RMh#RnYY-ZbQ>yJIVzvY`z*DM0D-lK88^+R6;7aQ&*J;PNwOlaDKv11OUK?9>s? zPraS8T~8B`Uz|z;z1Xfi&Jaa9mv^2fo#Wqtfs!jU;o76Hc0*0}!5n;ly`!Su9has# zAzG{@gPs?(M^Q;+h9DK8iky+torVvSQ7J>cceSdnbqKw8eB}-y7s(AJRF}K+BF10> z^2+T9M~l%ooPp90kTs$${^3iN9Raugal-;++gQ_z_0dBpvnjGD`CXK$u++=R6o37Y zg!Jr!>z)6rC5W|m{3sZU^}GMb>uvFyUa`W>YeoGQn60+)YX*C;>sK!|yBw{+|0}-| zUDKz91AJpMg?Bd^^~I?Qk;+az@FW{=nRq(eDH0G?OE00>y1jo3(a2EON}^r1n9E=u zyKeg$tJ$FtCk~=(M4$ZeZx?CL-{QWxR^3LJdjzL1XqA z2FGg=7RR8tl)@qCECl*@zs-QZJ_o*ij}(Td$Q%@xZs>5${R~h~!?Vg6s@l|;X!Suj ze`;Y>YYQe@hj}nD6x8vm& z&F13G3!Y~6Ai<;v=HlR?sGWqWQVK7VV2&fVh?sL|Y@z&Tbl9w1wZLm|?mwNA$|AoU fz^rb9TKB)@us+GNxsklTKradK3+BmvW6%B#x{}Xp From 945ecefe0db6d1a32200c565aef1ff20fb8748ae Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 19 Oct 2022 00:37:05 +0200 Subject: [PATCH 005/122] Bumpo --- gradle.properties | 2 +- src/main/java/com/simibubi/create/Create.java | 2 +- .../create/foundation/mixin/HumanoidArmorLayerMixin.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 69b7698fd..88b064810 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.jvmargs = -Xmx3G org.gradle.daemon = false # mod version info -mod_version = 0.5.0.e +mod_version = 0.5.1 artifact_minecraft_version = 1.18.2 minecraft_version = 1.18.2 diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 99ee30c01..841ef3c24 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -66,7 +66,7 @@ public class Create { public static final String ID = "create"; public static final String NAME = "Create"; - public static final String VERSION = "0.5e"; + public static final String VERSION = "0.5.1-unstable"; public static final Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java index 4aa5abd0f..0ec93fb81 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java @@ -76,7 +76,7 @@ public class HumanoidArmorLayerMixin { } } - @ModifyVariable(method = "getArmorResource", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/client/ForgeHooksClient;getArmorTexture(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Lnet/minecraft/world/entity/EquipmentSlot;Ljava/lang/String;)Ljava/lang/String;", shift = Shift.BEFORE), ordinal = 0) + @ModifyVariable(method = "getArmorResource", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/client/ForgeHooksClient;getArmorTexture(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Lnet/minecraft/world/entity/EquipmentSlot;Ljava/lang/String;)Ljava/lang/String;", shift = Shift.BEFORE), ordinal = 0, remap = false) private String modifyType(@Nullable String type, Entity entity, ItemStack stack, EquipmentSlot slot, @Nullable String typeArg) { if (stack.getItem() instanceof MultiLayeredArmorItem) { return usesInnerModel(slot) ? "2" : "1"; From cd0c748e0be1c6b7d2458a3c0938dd38ac55df19 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:15:47 +0200 Subject: [PATCH 006/122] Too much elevation - Elevator contacts no longer power adjacent elevator contacts - Fixed elevator contraptions travelling to unreachable floors - Switch to redstone palette for controls indicator - Added localised elevator assembly hints - Multiple elevators can no longer be assembled into the same column --- src/generated/resources/.cache/cache | 34 +++---- .../resources/assets/create/lang/en_us.json | 4 + .../assets/create/lang/unfinished/de_de.json | 6 +- .../assets/create/lang/unfinished/es_cl.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/pt_pt.json | 6 +- .../assets/create/lang/unfinished/ro_ro.json | 6 +- .../assets/create/lang/unfinished/ru_ru.json | 6 +- .../assets/create/lang/unfinished/uk_ua.json | 6 +- .../assets/create/lang/unfinished/zh_cn.json | 6 +- .../assets/create/lang/unfinished/zh_tw.json | 6 +- .../controls/ContraptionControlsMovement.java | 90 ++--------------- .../controls/ContraptionControlsRenderer.java | 93 +++++++++++++++++- .../AbstractContraptionEntity.java | 3 +- .../elevator/ElevatorContactBlock.java | 7 +- .../elevator/ElevatorContraption.java | 25 ++++- .../elevator/ElevatorPulleyTileEntity.java | 3 + .../elevator/ElevatorTargetFloorPacket.java | 2 + .../piston/LinearActuatorTileEntity.java | 1 - .../assets/create/lang/default/interface.json | 4 + .../block/contraption_controls_frame.png | Bin 3408 -> 3409 bytes .../block/contraption_controls_indicator.png | Bin 2945 -> 2941 bytes 29 files changed, 237 insertions(+), 125 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 529a795b7..53998221a 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -563,23 +563,23 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json 29da6f08028cfed0f311c8073d7615d6821aaee6 assets/create/lang/en_ud.json -f16b180625bb72138bcb57e27b91b1b4b9c71db7 assets/create/lang/en_us.json -cab6bdb4325f41b3309bc9f7381dacbe50bc284a assets/create/lang/unfinished/de_de.json -52206a7b8357a3ba74b265a87ef01f4f5ccff521 assets/create/lang/unfinished/es_cl.json -9dbfe72c9585e0eaec5b185ede7a7f58c2896c31 assets/create/lang/unfinished/es_es.json -8cbbfeb3f1697d013517754bcd2a6b08831d4f84 assets/create/lang/unfinished/fr_fr.json -218ea3097c9979909d897d978cbad61facfb1b8c assets/create/lang/unfinished/it_it.json -ae2dfc2bd8196fce9f30dc1469e94f050a1a49f5 assets/create/lang/unfinished/ja_jp.json -271fc874fe49205e3fbcfe1d27148ab4f4cf3d96 assets/create/lang/unfinished/ko_kr.json -032e905563d9257b9423c88706ab8a4cfb1b5bb3 assets/create/lang/unfinished/nl_nl.json -3012ab3a76e359db944d1d6330772dd15e6e8c5c assets/create/lang/unfinished/pl_pl.json -df65548cb9c722b93bee0a570b75aac37442a517 assets/create/lang/unfinished/pt_br.json -5cb5a8ab92c155131dfcfc1e593d5a0e04cbd219 assets/create/lang/unfinished/pt_pt.json -3afabc1553ae8c007c31c79686d0d36502f54687 assets/create/lang/unfinished/ro_ro.json -ccb8e554f34afdd21f9d6920c9a503f275ec676c assets/create/lang/unfinished/ru_ru.json -b6ecf4c99b64ecf194253a8595ced0732a53beb3 assets/create/lang/unfinished/uk_ua.json -fe13c0665e0359ec356d0656f1b5715b1e6a6213 assets/create/lang/unfinished/zh_cn.json -9f80d15820f6d308e31c3a31b2e98251bdc93b01 assets/create/lang/unfinished/zh_tw.json +0070b8f388464c998ebdec0dd9ed00f95910922b assets/create/lang/en_us.json +819a773dac8b804a497bc798aa5b60011de1f736 assets/create/lang/unfinished/de_de.json +ed149274800dbc226bdc3dc0ba5f37fd5aff7e9a assets/create/lang/unfinished/es_cl.json +59ba35103b2ec6b30b00c38e6410994eb1050a06 assets/create/lang/unfinished/es_es.json +27463977eae36ec876a0a298885f606297c971c1 assets/create/lang/unfinished/fr_fr.json +b8f760ee53958b6193350c82a0ad6ec4df0116d9 assets/create/lang/unfinished/it_it.json +766d570603a8cb1475002045db8976d7bfae72f1 assets/create/lang/unfinished/ja_jp.json +5d585d77810a3bc6b4247eff5a08f0a85fcc0e7c assets/create/lang/unfinished/ko_kr.json +1275ee80cc65b49a77c26dbbd3bfba9eac762ead assets/create/lang/unfinished/nl_nl.json +9c2210faa1a598567c9b8c6e0529183227afd8de assets/create/lang/unfinished/pl_pl.json +4e07b14961b64aa05a60193335663a4ea2cbe4ef assets/create/lang/unfinished/pt_br.json +4f27ff82d89d4b25b3cc237118611c385b6bedd9 assets/create/lang/unfinished/pt_pt.json +3b76d014cacd40e53e1f8f10545a133e2289ebc7 assets/create/lang/unfinished/ro_ro.json +b315407f620e95f376e4b0aab5cc6755c6410227 assets/create/lang/unfinished/ru_ru.json +5ec15854ee92e6e463341b226da3682f213ad7a5 assets/create/lang/unfinished/uk_ua.json +1be5b9da89c4f22421bda20eae909f69dd8f7554 assets/create/lang/unfinished/zh_cn.json +df88975ac97350e6f77355c053f853f14d867ecb 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 diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index b1f5c9e4e..6d6d2dfda 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -1081,6 +1081,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", "create.gui.assembly.exception.noPistonPoles": "The Piston is missing some extension Poles", "create.gui.assembly.exception.not_enough_sails": "Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.assembly.exception.no_contacts": "Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Gauge Information:", "create.gui.speedometer.title": "Rotation Speed", "create.gui.stressometer.title": "Network Stress", @@ -1644,6 +1647,7 @@ "create.contraption.controls.all_actor_toggle": "All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "On", "create.contraption.controls.actor_toggle.off": "Off", + "create.contraption.controls.floor_unreachable": "Unreachable", "create.display_link.set": "Targeted position selected", "create.display_link.success": "Successfully bound to targeted position", 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 044a0069c..c3935a7ea 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: 866", + "_": "Missing Localizations: 870", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Es sind zu viele Pleuelverlängerungen an diesen Kolben angebracht.\nDas konfigurierte Maximum ist: %1$s", "create.gui.assembly.exception.noPistonPoles": "Dem Kolben fehlen ein paar Pleuelverlängerungen", "create.gui.assembly.exception.not_enough_sails": "Angebrachte Struktur enthält nicht genug segelähnliche Blöcke: %1$s\nEin Minimum von %2$s ist erforderlich", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Messgerät Information:", "create.gui.speedometer.title": "Rotationsgeschwindigkeit", "create.gui.stressometer.title": "Netzwerkbelastung", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "Anvisierte Position ausgewählt", "create.display_link.success": "Erfolgreich mit ausgewählter Position gebunden", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 54776c155..d09f16d7b 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1012", + "_": "Missing Localizations: 1016", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Hay muchos postes de extensión en este pistón.\nEl máximo configurado es: %1$s", "create.gui.assembly.exception.noPistonPoles": "Al pistón le faltan algunos postes de extensión", "create.gui.assembly.exception.not_enough_sails": "La estructura adjunta no incluye suficientes bloques de vela: %1$s\nUn mínimo de %2$s son requeridos", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Información del medidor:", "create.gui.speedometer.title": "Velocidad de Rotación", "create.gui.stressometer.title": "Estrés de la Red", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", 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 4fdc694f1..53974bfaa 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: 32", + "_": "Missing Localizations: 36", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Hay demasiadas Pértigas de extensión conectadas a este Pistón.\nEl máximo configurado es: %1$s", "create.gui.assembly.exception.noPistonPoles": "Faltan pértigas de extensión para el pistón", "create.gui.assembly.exception.not_enough_sails": "La estructura adjunta no incluye suficientes bloques tipo vela: %1$s\nSe requiere un mínimo de %2$s", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Información sobre el medidor:", "create.gui.speedometer.title": "Velocidad de rotación", "create.gui.stressometer.title": "Estrés de la red", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "Posición objetivo seleccionada", "create.display_link.success": "Posición objetivo vinculada con éxito", 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 3f590a96c..3e927a7cc 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: 2150", + "_": "Missing Localizations: 2165", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Informations sur la jauge:", "create.gui.speedometer.title": "Vitesse de rotation", "create.gui.stressometer.title": "Stress du réseau", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", 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 1044a7dea..73cc6388d 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: 26", + "_": "Missing Localizations: 30", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Ci sono troppi Pali di pistone attaccati a questo Pistone.\nIl massimo èimpostato a: %1$s", "create.gui.assembly.exception.noPistonPoles": "Questo Pistone non ha Pali per pistone attaccati", "create.gui.assembly.exception.not_enough_sails": "La struttura attaccata non include abbastanza blocchi simili a vele: %1$s\nNe servono un minimo di %2$s", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Informazioni sul sistema:", "create.gui.speedometer.title": "Velocità di rotazione", "create.gui.stressometer.title": "Stress della rete", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "Bersaglio selezionato", "create.display_link.success": "Connesso con successo alla posizione selezionata", 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 355cf6504..c76c046cf 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: 28", + "_": "Missing Localizations: 32", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられているピストン延長ポールが多すぎます。\n最大値: %1$s", "create.gui.assembly.exception.noPistonPoles": "ピストンにピストン延長ポールがありません。", "create.gui.assembly.exception.not_enough_sails": "このからくりは帆ブロックが足りていません。: %1$s\nが最低でも%2$s個必要です。", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "メーターの情報:", "create.gui.speedometer.title": "回転速度", "create.gui.stressometer.title": "ネットワークの応力", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "対象の位置を選択しました", "create.display_link.success": "対象の位置と結び付けられました", 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 719a7b46c..bdcebf9c2 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: 32", + "_": "Missing Localizations: 36", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "이 피스톤에 너무 많은 연장 축이 부착되어 있습니다.\n설정된 최댓값: %1$s개", "create.gui.assembly.exception.noPistonPoles": "이 피스톤은 연장 축이 없습니다.", "create.gui.assembly.exception.not_enough_sails": "부착된 구조물에 날개 블록이 부족합니다. 현재: %1$s개 \n최소 %2$s개가 필요합니다.", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "계측기 정보:", "create.gui.speedometer.title": "회전 속도", "create.gui.stressometer.title": "네트워크 부하", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "표시할 대상을 선택했습니다", "create.display_link.success": "성공적으로 대상과 연결되었습니다", 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 056daaa70..dc0e06221 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: 2498", + "_": "Missing Localizations: 2513", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", 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 4b9101779..9c2204258 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: 36", + "_": "Missing Localizations: 40", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Zbyt dużo przedłużeń tłoka. Ustawione maksimum to: %1$s", "create.gui.assembly.exception.noPistonPoles": "Brakuje kilku przedłużeń tłoka", "create.gui.assembly.exception.not_enough_sails": "Przyczepiona struktura nie zawiera wystarczająco żaglo-podobnych bloków: %1$s Wymagane minimum to %2$s", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Informacje miernika:", "create.gui.speedometer.title": "Prędkość obrotu", "create.gui.stressometer.title": "Obciążenie systemu", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "Pozycja docelowa zaznaczona", "create.display_link.success": "Pomyślnie przypisano do pozycji docelowej", 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 a47a0b41c..a8f817d21 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: 1355", + "_": "Missing Localizations: 1359", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Tem muitas varetas de extensão colocadas nesse pistão. O limite configurado é: %1$s", "create.gui.assembly.exception.noPistonPoles": "O pistão esta faltando algumas varetas de extensão", "create.gui.assembly.exception.not_enough_sails": "A estrutura conectada não possui o número suficiente de blocos tipo vela: %1$s\nUm mínimo de %2$s são requeridos", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Informação do medidor:", "create.gui.speedometer.title": "Velocidade de rotação", "create.gui.stressometer.title": "Estresse do sistema", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index a4a5fc425..5f6365e95 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2220", + "_": "Missing Localizations: 2224", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index e6e5d8cf9..dfd9983f0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 679", + "_": "Missing Localizations: 683", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Sunt prea multe Brațe de extensie atașat la acest Piston.\nMaximul configurat este: %1$s", "create.gui.assembly.exception.noPistonPoles": "Pistonului îi lipsesc niște Brațe de extensie", "create.gui.assembly.exception.not_enough_sails": "Structura atașată nu include destule blocuri de pânze: %1$s\nUn minim de %2$s e necesar", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Informație Gabarit:", "create.gui.speedometer.title": "Viteză de Rotație", "create.gui.stressometer.title": "Rețea de Stres", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", 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 718150b8a..d7f9acbc7 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: 24", + "_": "Missing Localizations: 28", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много удлинителей прикреплено к этому поршню.\nТекущий максимум: %1$s", "create.gui.assembly.exception.noPistonPoles": "Поршню не хватает удлинителей", "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура содержит недостаточно парусоподобных блоков; %1$s из минимум %2$s необходимых", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Калибровочная информация:", "create.gui.speedometer.title": "Скорость вращения", "create.gui.stressometer.title": "Нагрузка на сеть", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "Выбрана целевая позиция", "create.display_link.success": "Успешно привязан к целевой позиции", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index 07a44b6a0..f4005ba15 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1010", + "_": "Missing Localizations: 1014", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "Надто багато Подовжувачів прикріплено до цього поршня.\nПоточний максимум: %1$s", "create.gui.assembly.exception.noPistonPoles": "Поршню не вистачає Подовжувачів", "create.gui.assembly.exception.not_enough_sails": "Приєднана структура не містить достатньо парусоподібних блоків: %1$s\nМінімум з %2$s необхідних", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Калібрувальна інформація:", "create.gui.speedometer.title": "Швидкість обертання", "create.gui.stressometer.title": "Нагрузка на мережу", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "UNLOCALIZED: Targeted position selected", "create.display_link.success": "UNLOCALIZED: Successfully bound to targeted position", 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 0bf7da01c..67a3007d2 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: 24", + "_": "Missing Localizations: 28", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多\n配置的最大值为:%1$s", "create.gui.assembly.exception.noPistonPoles": "活塞缺失部分活塞杆", "create.gui.assembly.exception.not_enough_sails": "相接的结构所包含的类风帆方块的数量不足:%1$s\n至少需要 %2$s", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "仪表信息:", "create.gui.speedometer.title": "旋转速度", "create.gui.stressometer.title": "网络应力", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "已选择目标位置", "create.display_link.success": "成功绑定到目标位置", 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 7ab5bcc94..dd4891d51 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: 32", + "_": "Missing Localizations: 36", "_": "->------------------------] Game Elements [------------------------<-", @@ -1082,6 +1082,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "活塞的活塞桿數量過多\n可放置的數量最大為:%1$s", "create.gui.assembly.exception.noPistonPoles": "這個活塞遺失了一些活塞桿", "create.gui.assembly.exception.not_enough_sails": "結構中所需的風帆類方塊數量不足:%1$s\n最少需要的數量為:%2$s", + "create.gui.assembly.exception.no_contacts": "UNLOCALIZED: Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "UNLOCALIZED: Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "UNLOCALIZED: Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "儀表訊息:", "create.gui.speedometer.title": "旋轉速度", "create.gui.stressometer.title": "網路負荷", @@ -1645,6 +1648,7 @@ "create.contraption.controls.all_actor_toggle": "UNLOCALIZED: All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "UNLOCALIZED: On", "create.contraption.controls.actor_toggle.off": "UNLOCALIZED: Off", + "create.contraption.controls.floor_unreachable": "UNLOCALIZED: Unreachable", "create.display_link.set": "已選定目標位置", "create.display_link.success": "成功綁定到目標位置", diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java index 7aa0dec3a..ecac443ee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsMovement.java @@ -1,34 +1,20 @@ package com.simibubi.create.content.contraptions.components.actors.controls; -import java.util.Random; - import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; -import com.jozufozu.flywheel.util.transform.TransformStack; -import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContraption; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.utility.IntAttached; +import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.animation.LerpedFloat; import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -61,8 +47,6 @@ public class ContraptionControlsMovement implements MovementBehaviour { return ItemHandlerHelper.canItemStacksStack(stack1, stack2); } - private static Random r = new Random(); - public static ItemStack getFilter(MovementContext ctx) { CompoundTag tileData = ctx.tileData; if (tileData == null) @@ -148,6 +132,10 @@ public class ContraptionControlsMovement implements MovementBehaviour { efs.currentLongName = entry.getSecond() .getSecond(); efs.targetYEqualsSelection = efs.currentTargetY == ec.clientYTarget; + + if (ec.isTargetUnreachable(efs.currentTargetY)) + efs.currentLongName = Lang.translate("contraption.controls.floor_unreachable") + .string(); } @Override @@ -159,73 +147,7 @@ public class ContraptionControlsMovement implements MovementBehaviour { @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext ctx, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { - - if (!(ctx.temporaryData instanceof ElevatorFloorSelection efs)) - return; - if (!AllBlocks.CONTRAPTION_CONTROLS.has(ctx.state)) - return; - - Entity cameraEntity = Minecraft.getInstance() - .getCameraEntity(); - float playerDistance = (float) (ctx.position == null || cameraEntity == null ? 0 - : ctx.position.distanceToSqr(cameraEntity.getEyePosition())); - - float flicker = r.nextFloat(); - Couple couple = DyeHelper.DYE_TABLE.get(efs.targetYEqualsSelection ? DyeColor.WHITE : DyeColor.ORANGE); - int brightColor = couple.getFirst(); - int darkColor = couple.getSecond(); - int flickeringBrightColor = Color.mixColors(brightColor, darkColor, flicker / 4); - Font fontRenderer = Minecraft.getInstance().font; - float shadowOffset = .5f; - - String text = efs.currentShortName; - String description = efs.currentLongName; - PoseStack ms = matrices.getViewProjection(); - TransformStack msr = TransformStack.cast(ms); - - ms.pushPose(); - msr.translate(ctx.localPos); - msr.rotateCentered(Direction.UP, - AngleHelper.rad(AngleHelper.horizontalAngle(ctx.state.getValue(ContraptionControlsBlock.FACING)))); - ms.translate(0.275f + 0.125f, 1, 0.5f); - msr.rotate(Direction.WEST, AngleHelper.rad(67.5f)); - - float buttondepth = -.25f; - if (ctx.contraption.presentTileEntities.get(ctx.localPos)instanceof ContraptionControlsTileEntity cte) - buttondepth += -1 / 24f * cte.button.getValue(AnimationTickHolder.getPartialTicks(renderWorld)); - - if (!text.isBlank() && playerDistance < 100) { - int actualWidth = fontRenderer.width(text); - int width = Math.max(actualWidth, 12); - float scale = 1 / (5f * (width - .5f)); - float heightCentering = (width - 8f) / 2; - - ms.pushPose(); - ms.translate(0, .15f, buttondepth); - ms.scale(scale, -scale, scale); - ms.translate(Math.max(0, width - actualWidth) / 2, heightCentering, 0); - NixieTubeRenderer.drawInWorldString(ms, buffer, text, flickeringBrightColor); - ms.translate(shadowOffset, shadowOffset, -1 / 16f); - NixieTubeRenderer.drawInWorldString(ms, buffer, text, Color.mixColors(darkColor, 0, .35f)); - ms.popPose(); - } - - if (!description.isBlank() && playerDistance < 20) { - int actualWidth = fontRenderer.width(description); - int width = Math.max(actualWidth, 55); - float scale = 1 / (3f * (width - .5f)); - float heightCentering = (width - 8f) / 2; - - ms.pushPose(); - ms.translate(-.0635f, 0.06f, buttondepth); - ms.scale(scale, -scale, scale); - ms.translate(Math.max(0, width - actualWidth) / 2, heightCentering, 0); - NixieTubeRenderer.drawInWorldString(ms, buffer, description, flickeringBrightColor); - ms.popPose(); - } - - ms.popPose(); - + ContraptionControlsRenderer.renderInContraption(ctx, renderWorld, matrices, buffer); } public static class ElevatorFloorSelection { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java index 31d8838d6..a48f914fa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/controls/ContraptionControlsRenderer.java @@ -1,23 +1,42 @@ package com.simibubi.create.content.contraptions.components.actors.controls; +import java.util.Random; + +import com.jozufozu.flywheel.core.virtual.VirtualRenderWorld; +import com.jozufozu.flywheel.util.transform.TransformStack; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.actors.controls.ContraptionControlsMovement.ElevatorFloorSelection; +import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; +import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; +import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; import com.simibubi.create.foundation.render.CachedBufferer; import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; import com.simibubi.create.foundation.utility.AngleHelper; +import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.simibubi.create.foundation.utility.Color; +import com.simibubi.create.foundation.utility.Couple; +import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.utility.VecHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; public class ContraptionControlsRenderer extends SmartTileEntityRenderer { + private static Random r = new Random(); + public ContraptionControlsRenderer(Context context) { super(context); } @@ -34,18 +53,88 @@ public class ContraptionControlsRenderer extends SmartTileEntityRenderer couple = DyeHelper.DYE_TABLE.get(efs.targetYEqualsSelection ? DyeColor.WHITE : DyeColor.ORANGE); + int brightColor = couple.getFirst(); + int darkColor = couple.getSecond(); + int flickeringBrightColor = Color.mixColors(brightColor, darkColor, flicker / 4); + Font fontRenderer = Minecraft.getInstance().font; + float shadowOffset = .5f; + + String text = efs.currentShortName; + String description = efs.currentLongName; + PoseStack ms = matrices.getViewProjection(); + TransformStack msr = TransformStack.cast(ms); + + ms.pushPose(); + msr.translate(ctx.localPos); + msr.rotateCentered(Direction.UP, + AngleHelper.rad(AngleHelper.horizontalAngle(ctx.state.getValue(ContraptionControlsBlock.FACING)))); + ms.translate(0.275f + 0.125f, 1, 0.5f); + msr.rotate(Direction.WEST, AngleHelper.rad(67.5f)); + + float buttondepth = -.25f; + if (ctx.contraption.presentTileEntities.get(ctx.localPos)instanceof ContraptionControlsTileEntity cte) + buttondepth += -1 / 24f * cte.button.getValue(AnimationTickHolder.getPartialTicks(renderWorld)); + + if (!text.isBlank() && playerDistance < 100) { + int actualWidth = fontRenderer.width(text); + int width = Math.max(actualWidth, 12); + float scale = 1 / (5f * (width - .5f)); + float heightCentering = (width - 8f) / 2; + + ms.pushPose(); + ms.translate(0, .15f, buttondepth); + ms.scale(scale, -scale, scale); + ms.translate(Math.max(0, width - actualWidth) / 2, heightCentering, 0); + NixieTubeRenderer.drawInWorldString(ms, buffer, text, flickeringBrightColor); + ms.translate(shadowOffset, shadowOffset, -1 / 16f); + NixieTubeRenderer.drawInWorldString(ms, buffer, text, Color.mixColors(darkColor, 0, .35f)); + ms.popPose(); + } + + if (!description.isBlank() && playerDistance < 20) { + int actualWidth = fontRenderer.width(description); + int width = Math.max(actualWidth, 55); + float scale = 1 / (3f * (width - .5f)); + float heightCentering = (width - 8f) / 2; + + ms.pushPose(); + ms.translate(-.0635f, 0.06f, buttondepth); + ms.scale(scale, -scale, scale); + ms.translate(Math.max(0, width - actualWidth) / 2, heightCentering, 0); + NixieTubeRenderer.drawInWorldString(ms, buffer, description, flickeringBrightColor); + ms.popPose(); + } + + ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java index 0fb21b5f3..02b952a59 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java @@ -24,6 +24,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceMovement; import com.simibubi.create.content.contraptions.components.actors.SeatBlock; import com.simibubi.create.content.contraptions.components.actors.SeatEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.elevator.ElevatorContraption; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsStopControllingPacket; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption; @@ -129,7 +130,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit } public boolean supportsTerrainCollision() { - return contraption instanceof TranslatingContraption; + return contraption instanceof TranslatingContraption && !(contraption instanceof ElevatorContraption); } protected void contraptionInitialize() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java index f0e3c7df0..c0e48e3e8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContactBlock.java @@ -173,6 +173,11 @@ public class ElevatorContactBlock extends WrenchableDirectionalBlock @Override public int getSignal(BlockState state, BlockGetter blockAccess, BlockPos pos, Direction side) { + if (side == null) + return 0; + BlockState toState = blockAccess.getBlockState(pos.relative(side.getOpposite())); + if (toState.is(this)) + return 0; return state.getValue(POWERING) ? 15 : 0; } @@ -209,7 +214,7 @@ public class ElevatorContactBlock extends WrenchableDirectionalBlock if (player instanceof LocalPlayer) ScreenOpener.open(new ElevatorContactScreen(te.getBlockPos(), te.shortName, te.longName)); } - + public static int getLight(BlockState state) { return state.getValue(POWERING) ? 10 : state.getValue(CALLING) ? 5 : 0; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java index c33b8e7f0..46e9c4486 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorContraption.java @@ -39,6 +39,9 @@ public class ElevatorContraption extends PulleyContraption { private int namesListVersion = -1; public List>> namesList = ImmutableList.of(); public int clientYTarget; + + public int maxContactY; + public int minContactY; // during assembly only private int contacts; @@ -84,7 +87,14 @@ public class ElevatorContraption extends PulleyContraption { ElevatorColumn column = ElevatorColumn.get(level, coords); if (column == null) return null; - return column.targetedYLevel; + int targetedYLevel = column.targetedYLevel; + if (isTargetUnreachable(targetedYLevel)) + return null; + return targetedYLevel; + } + + public boolean isTargetUnreachable(int contactY) { + return contactY < minContactY || contactY > maxContactY; } @Override @@ -94,9 +104,14 @@ public class ElevatorContraption extends PulleyContraption { if (blocks.size() <= 0) return false; if (contacts == 0) - throw new AssemblyException(Lang.translateDirect("elevator_assembly.no_contacts")); + throw new AssemblyException(Lang.translateDirect("gui.assembly.exception.no_contacts")); if (contacts > 1) - throw new AssemblyException(Lang.translateDirect("train_assembly.too_many_contacts")); + throw new AssemblyException(Lang.translateDirect("gui.assembly.exception.too_many_contacts")); + + ElevatorColumn column = ElevatorColumn.get(world, getGlobalColumn()); + if (column != null && column.isActive()) + throw new AssemblyException(Lang.translateDirect("gui.assembly.exception.column_conflict")); + startMoving(world); return true; } @@ -138,6 +153,8 @@ public class ElevatorContraption extends PulleyContraption { tag.putBoolean("Arrived", arrived); tag.put("Column", column.write()); tag.putInt("ContactY", contactYOffset); + tag.putInt("MaxContactY", maxContactY); + tag.putInt("MinContactY", minContactY); return tag; } @@ -146,6 +163,8 @@ public class ElevatorContraption extends PulleyContraption { arrived = nbt.getBoolean("Arrived"); column = ColumnCoords.read(nbt.getCompound("Column")); contactYOffset = nbt.getInt("ContactY"); + maxContactY = nbt.getInt("MaxContactY"); + minContactY = nbt.getInt("MinContactY"); super.readNBT(world, nbt, spawnData); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java index a9175c9f7..1d15767c1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorPulleyTileEntity.java @@ -74,6 +74,7 @@ public class ElevatorPulleyTileEntity extends PulleyTileEntity { if (level.isClientSide()) ec.setClientYTarget(worldPosition.getY() - clientOffsetTarget + ec.contactYOffset - 1); + waitingForSpeedChange = false; ec.arrived = wasArrived; if (!arrived) @@ -269,6 +270,8 @@ public class ElevatorPulleyTileEntity extends PulleyTileEntity { contraption.removeBlocksFromWorld(level, BlockPos.ZERO); movedContraption = ControlledContraptionEntity.create(level, this, contraption); movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); + contraption.maxContactY = worldPosition.getY() + contraption.contactYOffset - 1; + contraption.minContactY = contraption.maxContactY - maxLength; level.addFreshEntity(movedContraption); forceMove = true; needsContraption = true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java index 5a9e15b45..09d63dd87 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/elevator/ElevatorTargetFloorPacket.java @@ -53,6 +53,8 @@ public class ElevatorTargetFloorPacket extends SimplePacketBase { ElevatorColumn elevatorColumn = ElevatorColumn.get(level, ec.getGlobalColumn()); if (!elevatorColumn.contacts.contains(targetY)) return; + if (ec.isTargetUnreachable(targetY)) + return; for (BlockPos otherPos : elevatorColumn.getContacts()) { BlockState otherState = level.getBlockState(otherPos); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java index 5379103c2..fe89f8bda 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java @@ -71,7 +71,6 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity if (level.isClientSide) clientOffsetDiff *= .75f; - waitingForSpeedChange = false;//TODO if (waitingForSpeedChange) { if (movedContraption != null) { if (level.isClientSide) { diff --git a/src/main/resources/assets/create/lang/default/interface.json b/src/main/resources/assets/create/lang/default/interface.json index 8c7a2aab4..791f99267 100644 --- a/src/main/resources/assets/create/lang/default/interface.json +++ b/src/main/resources/assets/create/lang/default/interface.json @@ -220,6 +220,9 @@ "create.gui.assembly.exception.tooManyPistonPoles": "There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", "create.gui.assembly.exception.noPistonPoles": "The Piston is missing some extension Poles", "create.gui.assembly.exception.not_enough_sails": "Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", + "create.gui.assembly.exception.no_contacts": "Elevators require a horizontal _Redstone_ _Contact_ attached to the structure", + "create.gui.assembly.exception.too_many_contacts": "Cannot attach more than one _Redstone_ _Contact_ to Elevators", + "create.gui.assembly.exception.column_conflict": "Another Elevator is already targeting this column of contacts", "create.gui.gauge.info_header": "Gauge Information:", "create.gui.speedometer.title": "Rotation Speed", @@ -807,6 +810,7 @@ "create.contraption.controls.all_actor_toggle": "All Actors: %1$s", "create.contraption.controls.actor_toggle.on": "On", "create.contraption.controls.actor_toggle.off": "Off", + "create.contraption.controls.floor_unreachable": "Unreachable", "create.display_link.set": "Targeted position selected", "create.display_link.success": "Successfully bound to targeted position", diff --git a/src/main/resources/assets/create/textures/block/contraption_controls_frame.png b/src/main/resources/assets/create/textures/block/contraption_controls_frame.png index 80d302af23355a35021018c76c585fa6da353e7f..e42877d8204b80ceb60e6022066c6662f89423c3 100644 GIT binary patch delta 526 zcmV+p0`dLO8qpfCVgf2a0Rd!WWLH;LSOEb^0|hJw0A*!mM@C0PLqz}p0E%KwRR910 zLv&J3QRA@ z<|b^^fihT%0l`AurYTIpB=3ylCw#%dVf>d`n>Q=$Pw!vh5C;pASc=|oTUgn-cSK$6Vn^BEnk z&XWX0S~QZx18Mr;hAR(LQikqCW9EU{E?8|BYNW{Yuis>Hbf=gM4G%<}=+9%TP37si z-R%4Y4F5e)Gl^$Ra(QC1JbkS50K7qX?FIn<-hWG>kI7L4lqo6_#bp3cqLe6v01(Dl zYpko*U|53i;w}Q1vDt!@=UH|H$|=DCxHQ>fwO+6C%q%6VfKo_fvo(t~X=OHBcATLQ zm*io)vjvdb-KN@w2S5VDoy~H$#NOJSr~|;reV*t0{XWZVZ3YA;-)!>);LhaXa7gKQ zm_NOwFYlSe*NGA*04>3#`{F{1UOlK%1R&+7N>t4QEg_32`9xJO%L5$$1IiDR4xHls QmH+?%07*qoM6N<$f(hI4DgXcg delta 525 zcmV+o0`mRQ8qgZBVgf338bM@aWLH;Lk0MNh9!F#oHf3dHM@C0PLqz}p03>c7xBvhE zLv&J3Q4wIaaK@Id$Ss&{>J+wJ|jx$1Qc@9_FpSlhXu#0$0KvLH`mNP?q{n(hKxlX%NhZ_jgbr7y zNdh7*8cE`TG<|Txl?N&*LwBMv@jz`CthNg^P-Ob?iA)ae6_cUifv6KbzqHy^UjMY4 zoj1Vn-vc$1_>D;}4@{P)|Lc1Iz977I1Au?;rGL=JWG@2B6cvf$G5{!1N)$o>2xF`@ z)>UgTEJ1j27Xi%JY(~oSEZYO+l;8lIn{2jNE*E)b=8{!FDWtJlo7s}IFsn7&&rpa< z^04060?6%rRqet9Ac5h=X1QBpYwbqV0bt}l&-3ken`O2(0|Jv@ws`<>XL7gOrS#iP z-aga!f0@M3i4q3@Ey1Px;zEi(J*ZLyAmyh@RLuh|A&V&aL{%@#104SX#DkLwO>#ce P00000NkvXXu0mjf$-VD9 diff --git a/src/main/resources/assets/create/textures/block/contraption_controls_indicator.png b/src/main/resources/assets/create/textures/block/contraption_controls_indicator.png index 33f1fdd9dd263d21950efdf7d9a0b1c82bbed727..4f14eaae39c333753eb643696382024c5b2c76b6 100644 GIT binary patch delta 253 zcmVMKmh@u003A40Z9V|(EtFv001lo0C)fZKo=PR007)W%`TJW z0VN8-000ib0l1NC?XwgDtq6aoNklkdB&2a5s7Kq8Mr{wv=9xm+y#Ei!Q=Frn#sZbQ(eXYkZF)OoARq|D~4yg@t4jHpnt$Ko=hb@-yGSuc+h+T)*_Ic? zOeIW#`Xv|uH2c{Y!D-YafQ5bmwk1csCMSRo+6R1SDLVeJ1;tH(kZ`|1>s#7#k+PN? z1xURoVrnUuUY9HYqP}2^9LlKqDQ$lpcYyzT5a8fpo}0aln!PYE&%Hr<(e~GI2l$1D zK6g+L+85NrJomaE3>-X6`@z5~JdC-|J Date: Fri, 21 Oct 2022 21:58:30 +0200 Subject: [PATCH 007/122] Trapdoors everything - Added Copycat Panels and Copycat Steps --- src/generated/resources/.cache/cache | 52 ++- .../create/blockstates/copycat_base.json | 7 + .../create/blockstates/copycat_panel.json | 7 + .../create/blockstates/copycat_step.json | 7 + .../resources/assets/create/lang/en_ud.json | 3 + .../resources/assets/create/lang/en_us.json | 3 + .../assets/create/lang/unfinished/de_de.json | 5 +- .../assets/create/lang/unfinished/es_cl.json | 5 +- .../assets/create/lang/unfinished/es_es.json | 5 +- .../assets/create/lang/unfinished/fr_fr.json | 5 +- .../assets/create/lang/unfinished/it_it.json | 5 +- .../assets/create/lang/unfinished/ja_jp.json | 5 +- .../assets/create/lang/unfinished/ko_kr.json | 5 +- .../assets/create/lang/unfinished/nl_nl.json | 5 +- .../assets/create/lang/unfinished/pl_pl.json | 5 +- .../assets/create/lang/unfinished/pt_br.json | 5 +- .../assets/create/lang/unfinished/pt_pt.json | 5 +- .../assets/create/lang/unfinished/ro_ro.json | 5 +- .../assets/create/lang/unfinished/ru_ru.json | 5 +- .../assets/create/lang/unfinished/uk_ua.json | 5 +- .../assets/create/lang/unfinished/zh_cn.json | 5 +- .../assets/create/lang/unfinished/zh_tw.json | 5 +- .../create/models/item/copycat_panel.json | 3 + .../create/models/item/copycat_step.json | 3 + .../loot_tables/blocks/copycat_base.json | 20 + .../loot_tables/blocks/copycat_panel.json | 20 + .../loot_tables/blocks/copycat_step.json | 20 + .../create/tags/blocks/copycat_allow.json | 6 + .../data/create/tags/blocks/copycat_deny.json | 8 + .../data/create/tags/blocks/safe_nbt.json | 2 + .../minecraft/tags/blocks/mineable/axe.json | 2 + .../tags/blocks/mineable/pickaxe.json | 3 + .../java/com/simibubi/create/AllBlocks.java | 28 ++ .../java/com/simibubi/create/AllShapes.java | 4 + .../java/com/simibubi/create/AllTags.java | 7 + .../com/simibubi/create/AllTileEntities.java | 6 + .../bearing/BearingContraption.java | 12 +- .../structureMovement/bearing/SailBlock.java | 16 +- .../fluids/PipeAttachmentModel.java | 3 +- .../fluids/tank/FluidTankModel.java | 5 +- .../curiosities/deco/TrainTrapdoorBlock.java | 6 +- .../curiosities/frames/CopycatBlock.java | 365 ++++++++++++++++++ .../curiosities/frames/CopycatModel.java | 221 +++++++++++ .../curiosities/frames/CopycatPanelBlock.java | 206 ++++++++++ .../curiosities/frames/CopycatPanelModel.java | 68 ++++ .../curiosities/frames/CopycatStepBlock.java | 282 ++++++++++++++ .../curiosities/frames/CopycatStepModel.java | 87 +++++ .../curiosities/frames/CopycatTileEntity.java | 170 ++++++++ .../frames/WaterloggedCopycatBlock.java | 43 +++ .../girder/ConnectedGirderModel.java | 6 +- .../connected/BakedModelWrapperWithData.java | 9 +- .../foundation/block/connected/CTModel.java | 9 +- .../connected/ConnectedTextureBehaviour.java | 45 ++- .../connected/RotatedPillarCTBehaviour.java | 5 + .../foundation/block/render/QuadHelper.java | 14 + .../foundation/data/BuilderTransformers.java | 19 + .../create/foundation/utility/VecHelper.java | 8 + .../models/block/copycat_base/block.json | 6 + .../models/block/copycat_base/panel.json | 33 ++ .../models/block/copycat_base/step.json | 51 +++ .../create/textures/block/copycat_base.png | Bin 0 -> 265 bytes 61 files changed, 1917 insertions(+), 63 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/copycat_base.json create mode 100644 src/generated/resources/assets/create/blockstates/copycat_panel.json create mode 100644 src/generated/resources/assets/create/blockstates/copycat_step.json create mode 100644 src/generated/resources/assets/create/models/item/copycat_panel.json create mode 100644 src/generated/resources/assets/create/models/item/copycat_step.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/copycat_base.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/copycat_panel.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/copycat_step.json create mode 100644 src/generated/resources/data/create/tags/blocks/copycat_allow.json create mode 100644 src/generated/resources/data/create/tags/blocks/copycat_deny.json create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/CopycatBlock.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/CopycatModel.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelBlock.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelModel.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepBlock.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepModel.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/CopycatTileEntity.java create mode 100644 src/main/java/com/simibubi/create/content/curiosities/frames/WaterloggedCopycatBlock.java create mode 100644 src/main/resources/assets/create/models/block/copycat_base/block.json create mode 100644 src/main/resources/assets/create/models/block/copycat_base/panel.json create mode 100644 src/main/resources/assets/create/models/block/copycat_base/step.json create mode 100644 src/main/resources/assets/create/textures/block/copycat_base.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index c345e5268..10fd2ce98 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -62,6 +62,9 @@ a87097f3a092264d9b74966ee9e3bcfc0b743f80 assets/create/blockstates/copper_tile_s 1cc9cdcd48ea76fe3407dce0973220ff9f63f51a assets/create/blockstates/copper_tile_stairs.json cbae7653d6a6f2d98370e9a4a3bd91fdb529f89d assets/create/blockstates/copper_tiles.json 543af282e2cb44f00509d850814b4501f3491d48 assets/create/blockstates/copper_valve_handle.json +22a91cc73d6b492dddd9354693b873701fb82c01 assets/create/blockstates/copycat_base.json +f4d185b9eb086e5024a9818bad57d524267d6e13 assets/create/blockstates/copycat_panel.json +f4d185b9eb086e5024a9818bad57d524267d6e13 assets/create/blockstates/copycat_step.json b759be6f47fb960a7757b70d194921a38261c90a assets/create/blockstates/creative_crate.json da3f1203dd0b0096ce19e09705060a0ed0478bee assets/create/blockstates/creative_fluid_tank.json f0031f5e970b3d5695472ed384950b8631b015ed assets/create/blockstates/creative_motor.json @@ -558,24 +561,24 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json -c219c77242e645f32704201dd80e279b3759b794 assets/create/lang/en_us.json -cf37534c3f98098f42b181083fd7cc1063ac2bbb assets/create/lang/unfinished/de_de.json -83d427726fdc38ec3c5b8c3c0f6f87f49d3e5ff3 assets/create/lang/unfinished/es_cl.json -d21caeb0cbe871e38dc101c34ab89ece3cbe2127 assets/create/lang/unfinished/es_es.json -2215688baa2b0beffe0c19f71a3238df1d01b0c1 assets/create/lang/unfinished/fr_fr.json -79484f2c3eba2b40f5d82ffdc3abeb3d2e6962d2 assets/create/lang/unfinished/it_it.json -d659570c9dc89653f03cd4cc82ed50db443638d8 assets/create/lang/unfinished/ja_jp.json -03c30521d9b1bc7a6eb85d2a59a4c4676dca581e assets/create/lang/unfinished/ko_kr.json -3a56d579d022cc1b20746e9d3a1483e6fa8fb4be assets/create/lang/unfinished/nl_nl.json -d5bfeacb442236c8b075fddb41364f85c8cb7feb assets/create/lang/unfinished/pl_pl.json -0f3f51d065d896a7e3b4abd8c2801fa3e8fbd8c3 assets/create/lang/unfinished/pt_br.json -9f2ec0b2f8fa9b380c7edb56bfb806bcce621cce assets/create/lang/unfinished/pt_pt.json -1f88f0d91bdf5c68224cb65249f77272771939c9 assets/create/lang/unfinished/ro_ro.json -928ac3ad2ab5e7fa3d582b8b956258c110bea868 assets/create/lang/unfinished/ru_ru.json -ed29ef4ae8f3633533485d56f7fa8cb77b790a0a assets/create/lang/unfinished/uk_ua.json -e5cf7b657be816bc15b331dd058f7ccdabee8c14 assets/create/lang/unfinished/zh_cn.json -316dae07f95fb65c984fe7c424b566eb8ddba5f9 assets/create/lang/unfinished/zh_tw.json +5a971b8b9e5c42c6ffb3d40919f7e2c878eb10d6 assets/create/lang/en_ud.json +240eeda3e8c255d3c6f956b6976aaf7d777c5af3 assets/create/lang/en_us.json +2d9d88acc6611b38131cc3abcca3e73eaed20b18 assets/create/lang/unfinished/de_de.json +3c37dc0f6b0a50fe4a5c6ebf16c5d57d15ef95a4 assets/create/lang/unfinished/es_cl.json +7cc3b51abbe4123a03194e87c20832334fbb70a0 assets/create/lang/unfinished/es_es.json +c085d2a7a0cebe2cbc15a403f551680c06c42fca assets/create/lang/unfinished/fr_fr.json +4f5c9f5fed24d1e25fb901e289ee13148e52d194 assets/create/lang/unfinished/it_it.json +e780d3d95ed49fc4de49123e842ab4ed7d9fa046 assets/create/lang/unfinished/ja_jp.json +201b5578befd5666177172407e48c014d2a6fc8f assets/create/lang/unfinished/ko_kr.json +1980d6b9c90dc294e13ee79ea33f37bf8e17e192 assets/create/lang/unfinished/nl_nl.json +5f410564891fcc2eb4e471cfaacc3e582cd0384a assets/create/lang/unfinished/pl_pl.json +1995a20285f1aab0428c2ccecbc37d5b1bb026d1 assets/create/lang/unfinished/pt_br.json +f4b94a7fa0ff3934319ec2b7b784ebabf921c795 assets/create/lang/unfinished/pt_pt.json +14e743f1c308ce2cc26c9780445dd982b638808b assets/create/lang/unfinished/ro_ro.json +dae7635ac70929d8f4fc62bf863d53a199da099e assets/create/lang/unfinished/ru_ru.json +b6b17ca9c6dafaa818bd03c5aeb18f6b88467eee assets/create/lang/unfinished/uk_ua.json +9e2e281ffc80c7c577599b200a80c8cebdab25c7 assets/create/lang/unfinished/zh_cn.json +cf850c70ccd87d42f7674c2b8dcfb0bee2d0f854 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 @@ -1690,6 +1693,8 @@ ecaea6626101acc4c655a33e2148c336bfde9895 assets/create/models/item/copper_shingl 0f6e8e2ff3543fd0b076da64fa2cf8c2bfd017e9 assets/create/models/item/copper_tile_stairs.json 532d2c60de6129082b7ff5a713e9a70d89078f58 assets/create/models/item/copper_tiles.json 5583368909c319acfcf0f7a419bedf23272fe613 assets/create/models/item/copper_valve_handle.json +d17c8d4e1daf2e128254ee6897585c5d84902433 assets/create/models/item/copycat_panel.json +aa1b9e74076d71cd096e057dc752023b2bf1d994 assets/create/models/item/copycat_step.json 4e253e7c0626dfd76e2d39786ce1a34e0baaa62d assets/create/models/item/crafter_slot_cover.json 1f947dafff30da701b7675f5b026ccab3129b079 assets/create/models/item/crafting_blueprint.json db68f1fcc5b91f3ee0cc023538d965d76dd13506 assets/create/models/item/creative_blaze_cake.json @@ -3438,6 +3443,9 @@ dccfbda7fd3a7a75c323dea619d8d309ae980469 data/create/loot_tables/blocks/copper_s 8abac40a29800a0ca18c50ec8ce346cad15ad47a data/create/loot_tables/blocks/copper_tile_stairs.json 3eddbc442b37ba3bb309eaf26c2f4ad06de40df7 data/create/loot_tables/blocks/copper_tiles.json 6430f776846393ab6d70d23faeccb3e353c66129 data/create/loot_tables/blocks/copper_valve_handle.json +5c1df8443043b3fe3b665dba348e2ff188bcbe31 data/create/loot_tables/blocks/copycat_base.json +565441b809ded4218e69abd88bf26abee763ca08 data/create/loot_tables/blocks/copycat_panel.json +3f3df2ffc1efb1492a2a42c1eff14e5cad06b6f5 data/create/loot_tables/blocks/copycat_step.json 24f8cf0606fda07ecc26970f9aeb3f9da75e9a8f data/create/loot_tables/blocks/creative_crate.json 02efe9913be9d546c73f89e29016abf486c25f39 data/create/loot_tables/blocks/creative_fluid_tank.json ea6580ed7d1b08ec10838bff7fa46b907e981277 data/create/loot_tables/blocks/creative_motor.json @@ -5626,11 +5634,13 @@ ac265a674626e0e832330086fd18fe0be37fc327 data/create/recipes/weathered_copper_ti 5942a571f79c40524bbf408775cf91de4715f2b6 data/create/recipes/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json 2d549ea56fb226c0e31e66c0391996093f8bece9 data/create/tags/blocks/brittle.json d99d5c67bdffff60789a19bd51a5c5267c75e0a4 data/create/tags/blocks/casing.json +bc203f09dd7f48965d146d0bd035fb904cb75e7d data/create/tags/blocks/copycat_allow.json +d4a3b66f4b763b9a2dcdea74b7273f0ae85cb335 data/create/tags/blocks/copycat_deny.json 443f75adbf3d2f6fb0aad4b344372669470065b8 data/create/tags/blocks/fan_transparent.json 6e5d3b2123fbb00e7f439c091623619502551bca data/create/tags/blocks/non_movable.json 10781e8cfcbb3486327aace3aa00e437fb44b331 data/create/tags/blocks/ore_override_stone.json 418c6da531d6206e3cbe4049dce3db23c4270bed data/create/tags/blocks/passive_boiler_heaters.json -74f4ba5f6f61c30e27947c6fb4557e888d018285 data/create/tags/blocks/safe_nbt.json +3492722cffa53b96d7a91f8c04d792329d902c85 data/create/tags/blocks/safe_nbt.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json d063e12c9ef75f39518c6d129ea35d833464d547 data/create/tags/blocks/toolboxes.json 8861f982c335a1f17796df4af53a7d5dc91fc85a data/create/tags/blocks/tree_attachments.json @@ -5725,8 +5735,8 @@ e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/blocks/doors.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json -71480793b5e5ac5eb33c5271118c62227a2769d8 data/minecraft/tags/blocks/mineable/axe.json -77511f0fca91aa40c8b2566bf9bfb78964a56db3 data/minecraft/tags/blocks/mineable/pickaxe.json +52c7b4b803dd20f67ed43385a586fdb9d625d926 data/minecraft/tags/blocks/mineable/axe.json +0e6abdd34fa4feb2d524980717a1767e1bade134 data/minecraft/tags/blocks/mineable/pickaxe.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json diff --git a/src/generated/resources/assets/create/blockstates/copycat_base.json b/src/generated/resources/assets/create/blockstates/copycat_base.json new file mode 100644 index 000000000..739d7181a --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/copycat_base.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "create:block/copycat_base/block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copycat_panel.json b/src/generated/resources/assets/create/blockstates/copycat_panel.json new file mode 100644 index 000000000..2c8f02f06 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/copycat_panel.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/air" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copycat_step.json b/src/generated/resources/assets/create/blockstates/copycat_step.json new file mode 100644 index 000000000..2c8f02f06 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/copycat_step.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "minecraft:block/air" + } + } +} \ 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 d57821dd5..b81beaaf3 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -63,6 +63,9 @@ "block.create.copper_tile_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u05DF\u0131\u27D8 \u0279\u01DDddo\u0186", "block.create.copper_tiles": "s\u01DD\u05DF\u0131\u27D8 \u0279\u01DDddo\u0186", "block.create.copper_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u0279\u01DDddo\u0186", + "block.create.copycat_base": "\u01DDs\u0250\u15FA \u0287\u0250\u0254\u028Edo\u0186", + "block.create.copycat_panel": "\u05DF\u01DDu\u0250\u0500 \u0287\u0250\u0254\u028Edo\u0186", + "block.create.copycat_step": "d\u01DD\u0287S \u0287\u0250\u0254\u028Edo\u0186", "block.create.creative_crate": "\u01DD\u0287\u0250\u0279\u0186 \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", "block.create.creative_fluid_tank": "\u029Eu\u0250\u27D8 p\u0131n\u05DF\u2132 \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", "block.create.creative_motor": "\u0279o\u0287oW \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index f29227a7a..28f1c5000 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -66,6 +66,9 @@ "block.create.copper_tile_stairs": "Copper Tile Stairs", "block.create.copper_tiles": "Copper Tiles", "block.create.copper_valve_handle": "Copper Valve Handle", + "block.create.copycat_base": "Copycat Base", + "block.create.copycat_panel": "Copycat Panel", + "block.create.copycat_step": "Copycat Step", "block.create.creative_crate": "Creative Crate", "block.create.creative_fluid_tank": "Creative Fluid Tank", "block.create.creative_motor": "Creative Motor", 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 ec0ab8c0d..481fc99af 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: 842", + "_": "Missing Localizations: 845", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "Kupferfliesentreppe", "block.create.copper_tiles": "Kupferfliesen", "block.create.copper_valve_handle": "Kupfer Ventilgriff", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Kreative anpassbare Kiste", "block.create.creative_fluid_tank": "Kreativer Flüssigkeitstank", "block.create.creative_motor": "Kreativer Motor", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index b1cb4225f..c2c6af034 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 988", + "_": "Missing Localizations: 991", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", "block.create.copper_tiles": "Baldosas de Cobre", "block.create.copper_valve_handle": "Válvula de Cobre", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Cajón del Creativo", "block.create.creative_fluid_tank": "Tanque de Fluidos del Creativo", "block.create.creative_motor": "Motor del Creativo", 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 9866e0ed4..519d4146f 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: 8", + "_": "Missing Localizations: 11", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "Escaleras de baldosas de cobre", "block.create.copper_tiles": "Bloque de baldosas de cobre", "block.create.copper_valve_handle": "Asa de válvula de cobre", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Caja creativa", "block.create.creative_fluid_tank": "Tanque de fluidos creativo", "block.create.creative_motor": "Motor creativo", 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 a40d4bfce..09db7b88a 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: 2139", + "_": "Missing Localizations: 2142", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", "block.create.copper_tiles": "Tuiles en cuivre", "block.create.copper_valve_handle": "Vanne en cuivre", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Créateur de schémacanon", "block.create.creative_fluid_tank": "Réservoir créatif", "block.create.creative_motor": "Moteur", 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 39c5e5ac9..fe86a13b9 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: 2", + "_": "Missing Localizations: 5", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "Scalini di mattonelle di rame", "block.create.copper_tiles": "Piastrelle di rame", "block.create.copper_valve_handle": "Maniglia per valvola di rame", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Cassa (creativa)", "block.create.creative_fluid_tank": "Serbatoio per fluidi (creativa)", "block.create.creative_motor": "Motore (creativa)", 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 29408f90f..36ab093e4 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: 4", + "_": "Missing Localizations: 7", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "銅タイルの階段", "block.create.copper_tiles": "銅タイル", "block.create.copper_valve_handle": "銅のバルブハンドル", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "クリエティブクレート", "block.create.creative_fluid_tank": "クリエイティブ液体タンク", "block.create.creative_motor": "クリエイティブモーター", 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 92e403ed6..007566428 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: 8", + "_": "Missing Localizations: 11", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "구리 타일 계단", "block.create.copper_tiles": "구리 타일", "block.create.copper_valve_handle": "구리 밸브 손잡이", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "크리에이티브 창고", "block.create.creative_fluid_tank": "크리에이티브 탱크", "block.create.creative_motor": "크리에이티브 모터", 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 319e3974f..94fef7ed7 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: 2487", + "_": "Missing Localizations: 2490", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", "block.create.copper_valve_handle": "UNLOCALIZED: Copper Valve Handle", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Bouwtekeningkannon Creatiefeerder", "block.create.creative_fluid_tank": "UNLOCALIZED: Creative Fluid Tank", "block.create.creative_motor": "UNLOCALIZED: Creative Motor", 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 be600d683..cdabf61a7 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: 12", + "_": "Missing Localizations: 15", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "Schody z miedziaych kafelków", "block.create.copper_tiles": "Miedziane kafelki", "block.create.copper_valve_handle": "Miedziane pokrętło", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Kreatywna skrzynka", "block.create.creative_fluid_tank": "Kreatywny zbiornik", "block.create.creative_motor": "Kreatywny silnik", 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 4be946869..269e385d8 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: 1331", + "_": "Missing Localizations: 1334", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "Escada de ladrilho de cobre", "block.create.copper_tiles": "Ladrilho de cobre", "block.create.copper_valve_handle": "Válvula de Cobre", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Caixa Criativa", "block.create.creative_fluid_tank": "Tanque de Fluidos Criativo", "block.create.creative_motor": "Motor Criativo", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index a62924d83..1e1716d4f 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2196", + "_": "Missing Localizations: 2199", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", "block.create.copper_valve_handle": "Manopla de válvula de Cobre", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Caixa Criativa", "block.create.creative_fluid_tank": "Tanque de Fluidos Criativo", "block.create.creative_motor": "Motor Criativo", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 25aa3227a..dfaa0757e 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 655", + "_": "Missing Localizations: 658", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "Scări De Țiglă De Cupru", "block.create.copper_tiles": "Țigle De Cupru", "block.create.copper_valve_handle": "Mâner De Supapă De Cupru", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Ladă Creativ", "block.create.creative_fluid_tank": "Rezervor De Fluid Creativ", "block.create.creative_motor": "Motor Creativ", 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 28d2f0826..e5a5a62e5 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: 0", + "_": "Missing Localizations: 3", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "Ступеньки из медной плитки", "block.create.copper_tiles": "Медная плитка", "block.create.copper_valve_handle": "Медный ручной вентиль", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Творческий ящик", "block.create.creative_fluid_tank": "Творческий жидкостный бак", "block.create.creative_motor": "Творческий мотор", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index 94152cfd6..1c2b02d45 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 986", + "_": "Missing Localizations: 989", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "UNLOCALIZED: Copper Tile Stairs", "block.create.copper_tiles": "Мідна плитка", "block.create.copper_valve_handle": "Мідний ручний клапан", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "Творчий ящик", "block.create.creative_fluid_tank": "Творчий бак для рідини", "block.create.creative_motor": "Творчий мотор", 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 f4be7ff19..2df513bed 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: 0", + "_": "Missing Localizations: 3", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "铜瓦楼梯", "block.create.copper_tiles": "铜瓦", "block.create.copper_valve_handle": "铜阀门手轮", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "创造板条箱", "block.create.creative_fluid_tank": "创造流体储罐", "block.create.creative_motor": "创造马达", 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 1af6b480c..fa3911d7d 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: 8", + "_": "Missing Localizations: 11", "_": "->------------------------] Game Elements [------------------------<-", @@ -67,6 +67,9 @@ "block.create.copper_tile_stairs": "銅磚瓦階梯", "block.create.copper_tiles": "銅磚瓦", "block.create.copper_valve_handle": "銅製閥門開關", + "block.create.copycat_base": "UNLOCALIZED: Copycat Base", + "block.create.copycat_panel": "UNLOCALIZED: Copycat Panel", + "block.create.copycat_step": "UNLOCALIZED: Copycat Step", "block.create.creative_crate": "創造板條箱", "block.create.creative_fluid_tank": "創造流體儲存罐", "block.create.creative_motor": "創造馬達", diff --git a/src/generated/resources/assets/create/models/item/copycat_panel.json b/src/generated/resources/assets/create/models/item/copycat_panel.json new file mode 100644 index 000000000..5772b8c88 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/copycat_panel.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/copycat_base/panel" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copycat_step.json b/src/generated/resources/assets/create/models/item/copycat_step.json new file mode 100644 index 000000000..dd2286908 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/copycat_step.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/copycat_base/step" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copycat_base.json b/src/generated/resources/data/create/loot_tables/blocks/copycat_base.json new file mode 100644 index 000000000..3da3a59b4 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/copycat_base.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:air" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copycat_panel.json b/src/generated/resources/data/create/loot_tables/blocks/copycat_panel.json new file mode 100644 index 000000000..920edaf46 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/copycat_panel.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:copycat_panel" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copycat_step.json b/src/generated/resources/data/create/loot_tables/blocks/copycat_step.json new file mode 100644 index 000000000..880a818c1 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/copycat_step.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:copycat_step" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/copycat_allow.json b/src/generated/resources/data/create/tags/blocks/copycat_allow.json new file mode 100644 index 000000000..01825818a --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/copycat_allow.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:barrel" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/copycat_deny.json b/src/generated/resources/data/create/tags/blocks/copycat_deny.json new file mode 100644 index 000000000..14671651f --- /dev/null +++ b/src/generated/resources/data/create/tags/blocks/copycat_deny.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "#minecraft:cauldrons", + "#minecraft:saplings", + "#minecraft:climbable" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/safe_nbt.json b/src/generated/resources/data/create/tags/blocks/safe_nbt.json index 3d607530a..d0e85fba3 100644 --- a/src/generated/resources/data/create/tags/blocks/safe_nbt.json +++ b/src/generated/resources/data/create/tags/blocks/safe_nbt.json @@ -15,6 +15,8 @@ "create:radial_chassis", "create:sequenced_gearshift", "create:rotation_speed_controller", + "create:copycat_step", + "create:copycat_panel", "create:andesite_funnel", "create:andesite_belt_funnel", "create:brass_funnel", 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 3dfa8509f..4bf141d4f 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json @@ -97,6 +97,8 @@ "create:rotation_speed_controller", "create:mechanical_arm", "create:railway_casing", + "create:copycat_step", + "create:copycat_panel", "create:content_observer", "create:stockpile_switch", "create:creative_crate", 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 3394d19b5..926638381 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -124,6 +124,9 @@ "create:train_trapdoor", "create:framed_glass_door", "create:framed_glass_trapdoor", + "create:copycat_base", + "create:copycat_step", + "create:copycat_panel", "create:item_vault", "create:andesite_funnel", "create:andesite_belt_funnel", diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 1fd9d6434..87a991379 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -139,6 +139,10 @@ import com.simibubi.create.content.curiosities.deco.PlacardBlock; import com.simibubi.create.content.curiosities.deco.SlidingDoorBlock; import com.simibubi.create.content.curiosities.deco.TrainTrapdoorBlock; import com.simibubi.create.content.curiosities.deco.TrapdoorCTBehaviour; +import com.simibubi.create.content.curiosities.frames.CopycatPanelBlock; +import com.simibubi.create.content.curiosities.frames.CopycatPanelModel; +import com.simibubi.create.content.curiosities.frames.CopycatStepBlock; +import com.simibubi.create.content.curiosities.frames.CopycatStepModel; import com.simibubi.create.content.curiosities.girder.ConnectedGirderModel; import com.simibubi.create.content.curiosities.girder.GirderBlock; import com.simibubi.create.content.curiosities.girder.GirderBlockStateGenerator; @@ -1629,6 +1633,30 @@ public class AllBlocks { .addLayer(() -> RenderType::cutoutMipped) .register(); + public static final BlockEntry COPYCAT_BASE = REGISTRATE.block("copycat_base", Block::new) + .initialProperties(SharedProperties::softMetal) + .properties(p -> p.color(MaterialColor.GLOW_LICHEN)) + .addLayer(() -> RenderType::cutoutMipped) + .transform(pickaxeOnly()) + .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .register(); + + public static final BlockEntry COPYCAT_STEP = + REGISTRATE.block("copycat_step", CopycatStepBlock::new) + .transform(BuilderTransformers.copycat()) + .onRegister(CreateRegistrate.blockModel(() -> CopycatStepModel::new)) + .item() + .transform(customItemModel("copycat_base", "step")) + .register(); + + public static final BlockEntry COPYCAT_PANEL = + REGISTRATE.block("copycat_panel", CopycatPanelBlock::new) + .transform(BuilderTransformers.copycat()) + .onRegister(CreateRegistrate.blockModel(() -> CopycatPanelModel::new)) + .item() + .transform(customItemModel("copycat_base", "panel")) + .register(); + public static final BlockEntry ITEM_VAULT = REGISTRATE.block("item_vault", ItemVaultBlock::new) .initialProperties(SharedProperties::softMetal) .properties(p -> p.color(MaterialColor.TERRACOTTA_BLUE)) diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 57ae5e08c..d00af352d 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -30,6 +30,7 @@ public class AllShapes { CASING_13PX = shape(0, 0, 0, 16, 13, 16).forDirectional(), CASING_12PX = shape(0, 0, 0, 16, 12, 16).forDirectional(), CASING_11PX = shape(0, 0, 0, 16, 11, 16).forDirectional(), + CASING_3PX = shape(0, 0, 0, 16, 3, 16).forDirectional(), MOTOR_BLOCK = shape(3, 0, 3, 13, 14, 13).forDirectional(), FOUR_VOXEL_POLE = shape(6, 0, 6, 10, 16, 10).forAxis(), SIX_VOXEL_POLE = shape(5, 0, 5, 11, 16, 11).forAxis(), @@ -121,6 +122,9 @@ public class AllShapes { GIRDER_BEAM_SHAFT = shape(GIRDER_BEAM.get(Axis.X)).add(SIX_VOXEL_POLE.get(Axis.Z)) .forHorizontalAxis(), + STEP_BOTTOM = shape(0, 0, 8, 16, 8, 16).forHorizontal(SOUTH), + STEP_TOP = shape(0, 8, 8, 16, 16, 16).forHorizontal(SOUTH), + CONTROLS = shape(0, 0, 6, 16, 14, 16).forHorizontal(NORTH), NIXIE_TUBE = shape(9, 0, 5, 15, 12, 11).add(1, 0, 5, 7, 12, 11) diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index facf15ed9..560454958 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -125,6 +125,8 @@ public class AllTags { WINDOWABLE, WRENCH_PICKUP, TREE_ATTACHMENTS, + COPYCAT_ALLOW, + COPYCAT_DENY, RELOCATION_NOT_SUPPORTED(FORGE), WG_STONE(FORGE), @@ -407,6 +409,11 @@ public class AllTags { AllBlockTags.SAFE_NBT.includeAll(BlockTags.SIGNS); AllBlockTags.SAFE_NBT.includeAll(BlockTags.BANNERS); + + AllBlockTags.COPYCAT_ALLOW.add(Blocks.BARREL); + AllBlockTags.COPYCAT_DENY.includeAll(BlockTags.CAULDRONS); + AllBlockTags.COPYCAT_DENY.includeAll(BlockTags.SAPLINGS); + AllBlockTags.COPYCAT_DENY.includeAll(BlockTags.CLIMBABLE); AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.RAILS); AllBlockTags.WRENCH_PICKUP.includeAll(BlockTags.BUTTONS); diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 3647ad732..47e9b54a6 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -137,6 +137,7 @@ import com.simibubi.create.content.curiosities.deco.PlacardRenderer; import com.simibubi.create.content.curiosities.deco.PlacardTileEntity; import com.simibubi.create.content.curiosities.deco.SlidingDoorRenderer; import com.simibubi.create.content.curiosities.deco.SlidingDoorTileEntity; +import com.simibubi.create.content.curiosities.frames.CopycatTileEntity; import com.simibubi.create.content.curiosities.toolbox.ToolBoxInstance; import com.simibubi.create.content.curiosities.toolbox.ToolboxRenderer; import com.simibubi.create.content.curiosities.toolbox.ToolboxTileEntity; @@ -804,6 +805,11 @@ public class AllTileEntities { .validBlocks(AllBlocks.TRAIN_DOOR, AllBlocks.FRAMED_GLASS_DOOR) .register(); + public static final BlockEntityEntry UNIVERSAL_FRAME = Create.registrate() + .tileEntity("universal_frame", CopycatTileEntity::new) + .validBlocks(AllBlocks.COPYCAT_PANEL, AllBlocks.COPYCAT_STEP) + .register(); + public static final BlockEntityEntry FLAP_DISPLAY = Create.registrate() .tileEntity("flap_display", FlapDisplayTileEntity::new) .instance(() -> MechanicalCrafterInstance::new) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingContraption.java index 788b111b7..b1a5d142a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingContraption.java @@ -2,11 +2,13 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be import org.apache.commons.lang3.tuple.Pair; +import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionLighter; +import com.simibubi.create.content.curiosities.frames.CopycatTileEntity; import com.simibubi.create.foundation.config.AllConfigs; import net.minecraft.core.BlockPos; @@ -14,6 +16,7 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -59,11 +62,18 @@ public class BearingContraption extends Contraption { @Override public void addBlock(BlockPos pos, Pair capture) { BlockPos localPos = pos.subtract(anchor); - if (!getBlocks().containsKey(localPos) && AllBlockTags.WINDMILL_SAILS.matches(capture.getKey().state)) + if (!getBlocks().containsKey(localPos) && AllBlockTags.WINDMILL_SAILS.matches(getSailBlock(capture))) sailBlocks++; super.addBlock(pos, capture); } + private BlockState getSailBlock(Pair capture) { + BlockState state = capture.getKey().state; + if (AllBlocks.COPYCAT_PANEL.has(state) && capture.getRight()instanceof CopycatTileEntity cte) + return cte.getMaterial(); + return state; + } + @Override public CompoundTag writeNBT(boolean spawnPacket) { CompoundTag tag = super.writeNBT(spawnPacket); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java index ee71a2dd5..3f81ad17c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java @@ -84,9 +84,13 @@ public class SailBlock extends WrenchableDirectionalBlock { ItemStack heldItem = player.getItemInHand(hand); IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); - if (placementHelper.matchesItem(heldItem)) - return placementHelper.getOffset(player, world, state, pos, ray) - .placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); + if (!player.isShiftKeyDown() && player.mayBuild()) { + if (placementHelper.matchesItem(heldItem)) { + placementHelper.getOffset(player, world, state, pos, ray) + .placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); + return InteractionResult.SUCCESS; + } + } if (heldItem.getItem() instanceof ShearsItem) { if (!world.isClientSide) @@ -119,7 +123,8 @@ public class SailBlock extends WrenchableDirectionalBlock { } // Dye all adjacent - List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, hit, state.getValue(FACING).getAxis()); + List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, hit, state.getValue(FACING) + .getAxis()); for (Direction d : directions) { BlockPos offset = pos.relative(d); BlockState adjacentState = world.getBlockState(offset); @@ -182,7 +187,8 @@ public class SailBlock extends WrenchableDirectionalBlock { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) { + public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, + Player player) { ItemStack pickBlock = super.getCloneItemStack(state, target, world, pos, player); if (pickBlock.isEmpty()) return AllBlocks.SAIL.get() diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java index bc6056670..5e143089a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java @@ -34,7 +34,8 @@ public class PipeAttachmentModel extends BakedModelWrapperWithData { } @Override - protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state) { + protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state, + IModelData tileData) { PipeModelData data = new PipeModelData(); FluidTransportBehaviour transport = TileEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE); BracketedTileEntityBehaviour bracket = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java index e239afc29..c6b25049c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java @@ -42,11 +42,12 @@ public class FluidTankModel extends CTModel { } @Override - protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state) { + protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state, + IModelData tileData) { CullData cullData = new CullData(); for (Direction d : Iterate.horizontalDirections) cullData.setCulled(d, ConnectivityHandler.isConnected(world, pos, pos.relative(d))); - return super.gatherModelData(builder, world, pos, state).withInitial(CULL_PROPERTY, cullData); + return super.gatherModelData(builder, world, pos, state, tileData).withInitial(CULL_PROPERTY, cullData); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/deco/TrainTrapdoorBlock.java b/src/main/java/com/simibubi/create/content/curiosities/deco/TrainTrapdoorBlock.java index 7fbd3233b..339354b4c 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/deco/TrainTrapdoorBlock.java +++ b/src/main/java/com/simibubi/create/content/curiosities/deco/TrainTrapdoorBlock.java @@ -37,8 +37,10 @@ public class TrainTrapdoorBlock extends TrapDoorBlock implements IWrenchable { } public static boolean isConnected(BlockState state, BlockState other, Direction pDirection) { - state = state.setValue(WATERLOGGED, false); - other = other.setValue(WATERLOGGED, false); + state = state.setValue(WATERLOGGED, false) + .setValue(POWERED, false); + other = other.setValue(WATERLOGGED, false) + .setValue(POWERED, false); boolean open = state.getValue(OPEN); Half half = state.getValue(HALF); diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatBlock.java b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatBlock.java new file mode 100644 index 000000000..b37a50e1b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatBlock.java @@ -0,0 +1,365 @@ +package com.simibubi.create.content.curiosities.frames; + +import javax.annotation.Nullable; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllTags.AllBlockTags; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.block.ITE; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.color.block.BlockColor; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.SpawnPlacements.Type; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.GrassColor; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.StairBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public abstract class CopycatBlock extends Block implements ITE, IWrenchable { + + public CopycatBlock(Properties pProperties) { + super(pProperties); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level p_153212_, BlockState p_153213_, + BlockEntityType p_153214_) { + return null; + } + + @Override + public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) { + onWrenched(state, context); + return IWrenchable.super.onSneakWrenched(state, context); + } + + @Override + public InteractionResult onWrenched(BlockState state, UseOnContext context) { + return onTileEntityUse(context.getLevel(), context.getClickedPos(), ufte -> { + ItemStack consumedItem = ufte.getConsumedItem(); + if (!ufte.hasCustomMaterial()) + return InteractionResult.PASS; + Player player = context.getPlayer(); + if (!player.isCreative()) + player.getInventory() + .placeItemBackInInventory(consumedItem); + context.getLevel() + .levelEvent(2001, context.getClickedPos(), Block.getId(ufte.getBlockState())); + ufte.setMaterial(AllBlocks.COPYCAT_BASE.getDefaultState()); + ufte.setItem(ItemStack.EMPTY); + return InteractionResult.SUCCESS; + }); + } + + @Override + public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, + BlockHitResult pHit) { + + if (pPlayer == null) + return InteractionResult.PASS; + + Direction face = pHit.getDirection(); + ItemStack itemInHand = pPlayer.getItemInHand(pHand); + BlockState material = getAcceptedBlockState(pLevel, pPos, itemInHand, face); + + if (material == null) + return InteractionResult.PASS; + + return onTileEntityUse(pLevel, pPos, ufte -> { + if (ufte.getMaterial() + .is(material.getBlock())) { + if (!ufte.cycleMaterial()) + return InteractionResult.PASS; + ufte.getLevel() + .playSound(null, ufte.getBlockPos(), SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.BLOCKS, .75f, + .95f); + return InteractionResult.SUCCESS; + } + if (ufte.hasCustomMaterial()) + return InteractionResult.PASS; + if (pLevel.isClientSide()) + return InteractionResult.SUCCESS; + + ufte.setMaterial(material); + ufte.setItem(itemInHand); + ufte.getLevel() + .playSound(null, ufte.getBlockPos(), material.getSoundType() + .getPlaceSound(), SoundSource.BLOCKS, 1, .75f); + + if (pPlayer.isCreative()) + return InteractionResult.SUCCESS; + + itemInHand.shrink(1); + if (itemInHand.isEmpty()) + pPlayer.setItemInHand(pHand, ItemStack.EMPTY); + return InteractionResult.SUCCESS; + }); + } + + @Override + public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { + if (pPlacer == null) + return; + ItemStack offhandItem = pPlacer.getItemInHand(InteractionHand.OFF_HAND); + BlockState appliedState = + getAcceptedBlockState(pLevel, pPos, offhandItem, Direction.orderedByNearest(pPlacer)[0]); + + if (appliedState == null) + return; + withTileEntityDo(pLevel, pPos, ufte -> { + if (ufte.hasCustomMaterial()) + return; + + ufte.setMaterial(appliedState); + ufte.setItem(offhandItem); + + if (pPlacer instanceof Player player && player.isCreative()) + return; + offhandItem.shrink(1); + if (offhandItem.isEmpty()) + pPlacer.setItemInHand(InteractionHand.OFF_HAND, ItemStack.EMPTY); + }); + } + + @Nullable + public static BlockState getAcceptedBlockState(Level pLevel, BlockPos pPos, ItemStack item, Direction face) { + if (!(item.getItem()instanceof BlockItem bi)) + return null; + + Block block = bi.getBlock(); + if (block instanceof CopycatBlock) + return null; + if (AllBlockTags.COPYCAT_DENY.matches(block)) + return null; + + BlockState appliedState = block.defaultBlockState(); + + if (!AllBlockTags.COPYCAT_ALLOW.matches(block)) { + if (block instanceof EntityBlock) + return null; + if (block instanceof StairBlock) + return null; + + VoxelShape shape = appliedState.getShape(pLevel, pPos); + if (shape.isEmpty() || !shape.bounds() + .equals(Shapes.block() + .bounds())) + return null; + + VoxelShape collisionShape = appliedState.getCollisionShape(pLevel, pPos); + if (collisionShape.isEmpty()) + return null; + } + + if (face != null) { + Axis axis = face.getAxis(); + + if (appliedState.hasProperty(BlockStateProperties.FACING)) + appliedState = appliedState.setValue(BlockStateProperties.FACING, face); + if (appliedState.hasProperty(BlockStateProperties.HORIZONTAL_FACING) && axis != Axis.Y) + appliedState = appliedState.setValue(BlockStateProperties.HORIZONTAL_FACING, face); + if (appliedState.hasProperty(BlockStateProperties.AXIS)) + appliedState = appliedState.setValue(BlockStateProperties.AXIS, axis); + if (appliedState.hasProperty(BlockStateProperties.HORIZONTAL_AXIS) && axis != Axis.Y) + appliedState = appliedState.setValue(BlockStateProperties.HORIZONTAL_AXIS, axis); + } + + return appliedState; + } + + @Override + public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { + if (!pState.hasBlockEntity() || pState.getBlock() == pNewState.getBlock()) + return; + if (!pIsMoving) + withTileEntityDo(pLevel, pPos, ufte -> Block.popResource(pLevel, pPos, ufte.getConsumedItem())); + pLevel.removeBlockEntity(pPos); + } + + @Override + public void playerWillDestroy(Level pLevel, BlockPos pPos, BlockState pState, Player pPlayer) { + super.playerWillDestroy(pLevel, pPos, pState, pPlayer); + if (pPlayer.isCreative()) + withTileEntityDo(pLevel, pPos, ufte -> ufte.setItem(ItemStack.EMPTY)); + } + + @Override + public Class getTileEntityClass() { + return CopycatTileEntity.class; + } + + @Override + public BlockEntityType getTileEntityType() { + return AllTileEntities.UNIVERSAL_FRAME.get(); + } + + // Connected Textures + + @Nullable + /** + * The wrapped blockstate at toPos. Wrapper guaranteed to be a block of this + * type
+ * Return null if the 'from' state shouldn't connect to this block/face + * + * @param from + * @param reader + * @param targetPos + * @param face + * @return + */ + public abstract BlockState getConnectiveMaterial(BlockAndTintGetter reader, BlockState otherState, Direction face, + BlockPos fromPos, BlockPos toPos); + + public boolean isUnblockableConnectivitySide(BlockAndTintGetter reader, BlockState state, Direction face, + BlockPos fromPos, BlockPos toPos) { + return false; + } + + public boolean isIgnoredConnectivitySide(BlockAndTintGetter reader, BlockState state, Direction face, + BlockPos fromPos, BlockPos toPos) { + return false; + } + + public static BlockState getMaterial(BlockGetter reader, BlockPos targetPos) { + if (reader.getBlockEntity(targetPos)instanceof CopycatTileEntity ufte) + return ufte.getMaterial(); + return Blocks.AIR.defaultBlockState(); + } + + public boolean canFaceBeOccluded(BlockState state, Direction face) { + return false; + } + + // Wrapped properties + + @Override + public SoundType getSoundType(BlockState state, LevelReader level, BlockPos pos, Entity entity) { + return getMaterial(level, pos).getSoundType(); + } + + @Override + public float getFriction(BlockState state, LevelReader level, BlockPos pos, Entity entity) { + return getMaterial(level, pos).getFriction(level, pos, entity); + } + + @Override + public int getLightEmission(BlockState state, BlockGetter level, BlockPos pos) { + return getMaterial(level, pos).getLightEmission(level, pos); + } + + @Override + public boolean canHarvestBlock(BlockState state, BlockGetter level, BlockPos pos, Player player) { + return getMaterial(level, pos).canHarvestBlock(level, pos, player); + } + + @Override + public float getExplosionResistance(BlockState state, BlockGetter level, BlockPos pos, Explosion explosion) { + return getMaterial(level, pos).getExplosionResistance(level, pos, explosion); + } + + @Override + public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter level, BlockPos pos, + Player player) { + BlockState material = getMaterial(level, pos); + if (AllBlocks.COPYCAT_BASE.has(material)) + return new ItemStack(this); + return material.getCloneItemStack(target, level, pos, player); + } + + @Override + public boolean addLandingEffects(BlockState state1, ServerLevel level, BlockPos pos, BlockState state2, + LivingEntity entity, int numberOfParticles) { + return getMaterial(level, pos).addLandingEffects(level, pos, state2, entity, numberOfParticles); + } + + @Override + public boolean addRunningEffects(BlockState state, Level level, BlockPos pos, Entity entity) { + return getMaterial(level, pos).addRunningEffects(level, pos, entity); + } + + @Override + public float getEnchantPowerBonus(BlockState state, LevelReader level, BlockPos pos) { + return getMaterial(level, pos).getEnchantPowerBonus(level, pos); + } + + @Override + public boolean canEntityDestroy(BlockState state, BlockGetter level, BlockPos pos, Entity entity) { + return getMaterial(level, pos).canEntityDestroy(level, pos, entity); + } + + @Override + public boolean isValidSpawn(BlockState state, BlockGetter level, BlockPos pos, Type type, + EntityType entityType) { + return false; + } + + @Override + public void fallOn(Level pLevel, BlockState pState, BlockPos pPos, Entity pEntity, float p_152430_) { + BlockState material = getMaterial(pLevel, pPos); + material.getBlock() + .fallOn(pLevel, material, pPos, pEntity, p_152430_); + } + + @Override + public float getDestroyProgress(BlockState pState, Player pPlayer, BlockGetter pLevel, BlockPos pPos) { + return getMaterial(pLevel, pPos).getDestroyProgress(pPlayer, pLevel, pPos); + } + + // + + @OnlyIn(Dist.CLIENT) + public static BlockColor wrappedColor() { + return new WrappedBlockColor(); + } + + @OnlyIn(Dist.CLIENT) + public static class WrappedBlockColor implements BlockColor { + + @Override + public int getColor(BlockState pState, @Nullable BlockAndTintGetter pLevel, @Nullable BlockPos pPos, + int pTintIndex) { + if (pLevel == null || pPos == null) + return GrassColor.get(0.5D, 1.0D); + return Minecraft.getInstance() + .getBlockColors() + .getColor(getMaterial(pLevel, pPos), pLevel, pPos, pTintIndex); + } + + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatModel.java b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatModel.java new file mode 100644 index 000000000..1b20fe6cf --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatModel.java @@ -0,0 +1,221 @@ +package com.simibubi.create.content.curiosities.frames; + +import static com.simibubi.create.content.curiosities.frames.CopycatTileEntity.MATERIAL_PROPERTY; +import static com.simibubi.create.foundation.block.render.SpriteShiftEntry.getUnInterpolatedU; +import static com.simibubi.create.foundation.block.render.SpriteShiftEntry.getUnInterpolatedV; + +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +import javax.annotation.Nullable; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.foundation.block.connected.BakedModelWrapperWithData; +import com.simibubi.create.foundation.block.render.QuadHelper; +import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockPos.MutableBlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.client.model.data.EmptyModelData; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelDataMap.Builder; +import net.minecraftforge.client.model.data.ModelProperty; + +public abstract class CopycatModel extends BakedModelWrapperWithData { + + private static final ModelProperty WRAPPED_DATA_PROPERTY = new ModelProperty<>(); + private static final ModelProperty OCCLUSION_PROPERTY = new ModelProperty<>(); + + public CopycatModel(BakedModel originalModel) { + super(originalModel); + } + + @Override + protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state, + IModelData tileData) { + BlockState wrappedState = getMaterial(world, pos, state); + + if (wrappedState == null) + return builder; + if (tileData instanceof ModelDataMap mdm && mdm.hasProperty(MATERIAL_PROPERTY)) + builder.withInitial(MATERIAL_PROPERTY, mdm.getData(MATERIAL_PROPERTY)); + + OcclusionData occlusionData = new OcclusionData(); + if (state.getBlock()instanceof CopycatBlock ufb) { + MutableBlockPos mutablePos = new MutableBlockPos(); + for (Direction face : Iterate.directions) + if (ufb.canFaceBeOccluded(state, face)) + if (!Block.shouldRenderFace(wrappedState, world, pos, face, mutablePos.setWithOffset(pos, face))) + occlusionData.occlude(face); + builder.withInitial(OCCLUSION_PROPERTY, occlusionData); + } + + IModelData modelData = getModelOf(wrappedState).getModelData(world, pos, wrappedState, EmptyModelData.INSTANCE); + return builder.withInitial(WRAPPED_DATA_PROPERTY, modelData); + } + + @Override + public List getQuads(BlockState state, Direction side, Random rand, IModelData extraData) { + List quads = super.getQuads(state, side, rand, extraData); + + BlockState material = getMaterial(extraData); + IModelData wrappedData = extraData.getData(WRAPPED_DATA_PROPERTY); + + if (material == null) + return quads; + + RenderType renderType = MinecraftForgeClient.getRenderType(); + if (renderType != null && !ItemBlockRenderTypes.canRenderInLayer(material, renderType)) + return quads; + if (wrappedData == null) + wrappedData = EmptyModelData.INSTANCE; + + OcclusionData occlusionData = extraData.getData(OCCLUSION_PROPERTY); + if (occlusionData != null && occlusionData.isOccluded(side)) + return quads; + + return getCroppedQuads(state, side, rand, material, wrappedData); + } + + protected abstract List getCroppedQuads(BlockState state, Direction side, Random rand, + BlockState material, IModelData wrappedData); + + public static boolean cropAndMove(BakedQuad quad, AABB crop, Vec3 move) { + int[] vertexData = quad.getVertices(); + + Vec3 xyz0 = QuadHelper.getXYZ(vertexData, 0); + Vec3 xyz1 = QuadHelper.getXYZ(vertexData, 1); + Vec3 xyz2 = QuadHelper.getXYZ(vertexData, 2); + Vec3 xyz3 = QuadHelper.getXYZ(vertexData, 3); + + Vec3 uAxis = xyz3.add(xyz2) + .scale(.5); + Vec3 vAxis = xyz1.add(xyz2) + .scale(.5); + Vec3 center = xyz3.add(xyz2) + .add(xyz0) + .add(xyz1) + .scale(.25); + + float u0 = QuadHelper.getU(vertexData, 0); + float u3 = QuadHelper.getU(vertexData, 3); + float v0 = QuadHelper.getV(vertexData, 0); + float v1 = QuadHelper.getV(vertexData, 1); + + TextureAtlasSprite sprite = quad.getSprite(); + + float uScale = (float) Math + .round((getUnInterpolatedU(sprite, u3) - getUnInterpolatedU(sprite, u0)) / xyz3.distanceTo(xyz0)); + float vScale = (float) Math + .round((getUnInterpolatedV(sprite, v1) - getUnInterpolatedV(sprite, v0)) / xyz1.distanceTo(xyz0)); + + if (uScale == 0) { + float v3 = QuadHelper.getV(vertexData, 3); + float u1 = QuadHelper.getU(vertexData, 1); + uAxis = xyz1.add(xyz2) + .scale(.5); + vAxis = xyz3.add(xyz2) + .scale(.5); + uScale = (float) Math + .round((getUnInterpolatedU(sprite, u1) - getUnInterpolatedU(sprite, u0)) / xyz1.distanceTo(xyz0)); + vScale = (float) Math + .round((getUnInterpolatedV(sprite, v3) - getUnInterpolatedV(sprite, v0)) / xyz3.distanceTo(xyz0)); + + } + + uAxis = uAxis.subtract(center) + .normalize(); + vAxis = vAxis.subtract(center) + .normalize(); + + Vec3 min = new Vec3(crop.minX, crop.minY, crop.minZ); + Vec3 max = new Vec3(crop.maxX, crop.maxY, crop.maxZ); + + for (int vertex = 0; vertex < 4; vertex++) { + Vec3 xyz = QuadHelper.getXYZ(vertexData, vertex); + Vec3 newXyz = VecHelper.componentMin(max, VecHelper.componentMax(xyz, min)); + Vec3 diff = newXyz.subtract(xyz); + + if (diff.lengthSqr() > 0) { + float u = QuadHelper.getU(vertexData, vertex); + float v = QuadHelper.getV(vertexData, vertex); + float uDiff = (float) uAxis.dot(diff) * uScale; + float vDiff = (float) vAxis.dot(diff) * vScale; + QuadHelper.setU(vertexData, vertex, sprite.getU(getUnInterpolatedU(sprite, u) + uDiff)); + QuadHelper.setV(vertexData, vertex, sprite.getV(getUnInterpolatedV(sprite, v) + vDiff)); + } + + QuadHelper.setXYZ(vertexData, vertex, newXyz.add(move)); + } + + return true; + } + + @Override + public TextureAtlasSprite getParticleIcon(IModelData data) { + BlockState material = getMaterial(data); + IModelData wrappedData = data.getData(WRAPPED_DATA_PROPERTY); + + if (wrappedData == null) + wrappedData = EmptyModelData.INSTANCE; + if (material != null) + return getModelOf(material).getParticleIcon(wrappedData); + + return super.getParticleIcon(data); + } + + @Nullable + public BlockState getMaterial(IModelData extraData) { + BlockState material = extraData.getData(MATERIAL_PROPERTY); + return material == null ? AllBlocks.COPYCAT_BASE.getDefaultState() : material; + } + + @Nullable + public BlockState getMaterial(BlockAndTintGetter world, BlockPos pos, BlockState state) { + if (!(state.getBlock()instanceof CopycatBlock ufb)) + return null; + return ufb.getTileEntityOptional(world, pos) + .map(CopycatTileEntity::getMaterial) + .orElse(null); + } + + public BakedModel getModelOf(BlockState wrappedState) { + return Minecraft.getInstance() + .getBlockRenderer() + .getBlockModel(wrappedState); + } + + private static class OcclusionData { + private final boolean[] occluded; + + public OcclusionData() { + occluded = new boolean[6]; + Arrays.fill(occluded, false); + } + + public void occlude(Direction face) { + occluded[face.get3DDataValue()] = true; + } + + public boolean isOccluded(Direction face) { + return face == null ? false : occluded[face.get3DDataValue()]; + } + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelBlock.java b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelBlock.java new file mode 100644 index 000000000..679350113 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelBlock.java @@ -0,0 +1,206 @@ +package com.simibubi.create.content.curiosities.frames; + +import java.util.List; +import java.util.function.Predicate; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllShapes; +import com.simibubi.create.foundation.utility.placement.IPlacementHelper; +import com.simibubi.create.foundation.utility.placement.PlacementHelpers; +import com.simibubi.create.foundation.utility.placement.PlacementOffset; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class CopycatPanelBlock extends WaterloggedCopycatBlock { + + public static final DirectionProperty FACING = BlockStateProperties.FACING; + + private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + + public CopycatPanelBlock(Properties pProperties) { + super(pProperties); + registerDefaultState(defaultBlockState().setValue(FACING, Direction.UP)); + } + + @Override + public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + BlockHitResult ray) { + + if (!player.isShiftKeyDown() && player.mayBuild()) { + ItemStack heldItem = player.getItemInHand(hand); + IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + if (placementHelper.matchesItem(heldItem)) { + placementHelper.getOffset(player, world, state, pos, ray) + .placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); + return InteractionResult.SUCCESS; + } + } + + return super.use(state, world, pos, player, hand, ray); + } + + @Override + public boolean isUnblockableConnectivitySide(BlockAndTintGetter reader, BlockState state, Direction face, + BlockPos fromPos, BlockPos toPos) { + return true; + } + + @Override + public boolean isIgnoredConnectivitySide(BlockAndTintGetter reader, BlockState state, Direction face, + BlockPos fromPos, BlockPos toPos) { + Direction facing = state.getValue(FACING); + BlockState toState = reader.getBlockState(toPos); + + if (!toState.is(this)) + return facing != face.getOpposite(); + + BlockPos diff = fromPos.subtract(toPos); + int coord = facing.getAxis() + .choose(diff.getX(), diff.getY(), diff.getZ()); + return facing == toState.getValue(FACING) + .getOpposite() + && !(coord != 0 && coord == facing.getAxisDirection() + .getStep()); + } + + @Override + public boolean canFaceBeOccluded(BlockState state, Direction face) { + return state.getValue(FACING) + .getOpposite() == face; + } + + @Override + public BlockState getConnectiveMaterial(BlockAndTintGetter reader, BlockState otherState, Direction face, + BlockPos fromPos, BlockPos toPos) { + BlockState panelState = reader.getBlockState(toPos); + Direction facing = panelState.getValue(FACING); + + if (!otherState.is(this)) + return facing == face.getOpposite() ? getMaterial(reader, toPos) : null; + + if (isOccluded(panelState, otherState, facing)) + return getMaterial(reader, toPos); + + BlockPos diff = fromPos.subtract(toPos); + int coord = facing.getAxis() + .choose(diff.getX(), diff.getY(), diff.getZ()); + + if (otherState.setValue(WATERLOGGED, false) == panelState.setValue(WATERLOGGED, false) && coord == 0) + return getMaterial(reader, toPos); + + return null; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext pContext) { + BlockState stateForPlacement = super.getStateForPlacement(pContext); + return stateForPlacement.setValue(FACING, pContext.getNearestLookingDirection() + .getOpposite()); + } + + @Override + protected void createBlockStateDefinition(Builder pBuilder) { + super.createBlockStateDefinition(pBuilder.add(FACING)); + } + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { + return AllShapes.CASING_3PX.get(pState.getValue(FACING)); + } + + @Override + public boolean isPathfindable(BlockState pState, BlockGetter pLevel, BlockPos pPos, PathComputationType pType) { + return false; + } + + @Override + public boolean supportsExternalFaceHiding(BlockState state) { + return true; + } + + @Override + public boolean hidesNeighborFace(BlockGetter level, BlockPos pos, BlockState state, BlockState neighborState, + Direction dir) { + if (state.is(this) == neighborState.is(this) + && getMaterial(level, pos).skipRendering(getMaterial(level, pos.relative(dir)), dir.getOpposite())) + return isOccluded(state, neighborState, dir.getOpposite()); + return state.getValue(FACING) == dir.getOpposite() + && getMaterial(level, pos).skipRendering(neighborState, dir.getOpposite()); + } + + public static boolean isOccluded(BlockState state, BlockState other, Direction pDirection) { + state = state.setValue(WATERLOGGED, false); + other = other.setValue(WATERLOGGED, false); + Direction facing = state.getValue(FACING); + if (facing.getOpposite() == other.getValue(FACING) && pDirection == facing) + return true; + if (other.getValue(FACING) != facing) + return false; + return pDirection.getAxis() != facing.getAxis(); + } + + @Override + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + @Override + @SuppressWarnings("deprecation") + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + @MethodsReturnNonnullByDefault + private static class PlacementHelper implements IPlacementHelper { + @Override + public Predicate getItemPredicate() { + return AllBlocks.COPYCAT_PANEL::isIn; + } + + @Override + public Predicate getStatePredicate() { + return AllBlocks.COPYCAT_PANEL::has; + } + + @Override + public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { + List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), + state.getValue(FACING) + .getAxis(), + dir -> world.getBlockState(pos.relative(dir)) + .getMaterial() + .isReplaceable()); + + if (directions.isEmpty()) + return PlacementOffset.fail(); + else { + return PlacementOffset.success(pos.relative(directions.get(0)), + s -> s.setValue(FACING, state.getValue(FACING))); + } + } + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelModel.java b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelModel.java new file mode 100644 index 000000000..efaac4c3d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatPanelModel.java @@ -0,0 +1,68 @@ +package com.simibubi.create.content.curiosities.frames; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.simibubi.create.foundation.block.render.QuadHelper; +import com.simibubi.create.foundation.utility.Iterate; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.model.data.IModelData; + +public class CopycatPanelModel extends CopycatModel { + + public CopycatPanelModel(BakedModel originalModel) { + super(originalModel); + } + + @Override + protected List getCroppedQuads(BlockState state, Direction side, Random rand, BlockState material, + IModelData wrappedData) { + Direction facing = state.getOptionalValue(CopycatPanelBlock.FACING) + .orElse(Direction.UP); + + Vec3 normal = Vec3.atLowerCornerOf(facing.getNormal()); + AABB cube = new AABB(BlockPos.ZERO); + + BakedModel model = getModelOf(material); + List templateQuads = model.getQuads(material, side, rand, wrappedData); + int size = templateQuads.size(); + + List quads = new ArrayList<>(); + + // 2 Pieces + for (boolean front : Iterate.trueAndFalse) { + + for (int i = 0; i < size; i++) { + BakedQuad quad = templateQuads.get(i); + Direction direction = quad.getDirection(); + + if (front && direction == facing) + continue; + if (!front && direction == facing.getOpposite()) + continue; + + float contract = 16 - (front ? 1 : 2); + AABB bb = cube.contract(normal.x * contract / 16, normal.y * contract / 16, normal.z * contract / 16); + + if (!front) + bb = bb.move(normal.scale(14 / 16f)); + + BakedQuad newQuad = QuadHelper.clone(quad); + if (cropAndMove(newQuad, bb, normal.scale(front ? 0 : -13 / 16f))); + quads.add(newQuad); + } + + } + + return quads; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepBlock.java b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepBlock.java new file mode 100644 index 000000000..34dd69ec7 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepBlock.java @@ -0,0 +1,282 @@ +package com.simibubi.create.content.curiosities.frames; + +import java.util.function.Predicate; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.curiosities.tools.ExtendoGripItem; +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.utility.Iterate; +import com.simibubi.create.foundation.utility.VoxelShaper; +import com.simibubi.create.foundation.utility.placement.IPlacementHelper; +import com.simibubi.create.foundation.utility.placement.PlacementHelpers; +import com.simibubi.create.foundation.utility.placement.PlacementOffset; + +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.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.Half; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.common.ForgeMod; + +public class CopycatStepBlock extends WaterloggedCopycatBlock { + + public static EnumProperty HALF = BlockStateProperties.HALF; + public static DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + + private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + + public CopycatStepBlock(Properties pProperties) { + super(pProperties); + registerDefaultState(defaultBlockState().setValue(HALF, Half.BOTTOM) + .setValue(FACING, Direction.SOUTH)); + } + + @Override + public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + BlockHitResult ray) { + + if (!player.isShiftKeyDown() && player.mayBuild()) { + ItemStack heldItem = player.getItemInHand(hand); + IPlacementHelper helper = PlacementHelpers.get(placementHelperId); + if (helper.matchesItem(heldItem)) + return helper.getOffset(player, world, state, pos, ray) + .placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); + } + + return super.use(state, world, pos, player, hand, ray); + } + + @Override + public BlockState getConnectiveMaterial(BlockAndTintGetter reader, BlockState otherState, Direction face, + BlockPos fromPos, BlockPos toPos) { + if (!otherState.is(this)) + return null; + + BlockState stepState = reader.getBlockState(toPos); + Direction facing = stepState.getValue(FACING); + BlockPos diff = fromPos.subtract(toPos); + + if (diff.getY() != 0) { + if (isOccluded(stepState, otherState, diff.getY() > 0 ? Direction.UP : Direction.DOWN)) + return getMaterial(reader, toPos); + return null; + } + + if (isOccluded(stepState, otherState, facing)) + return getMaterial(reader, toPos); + + int coord = facing.getAxis() + .choose(diff.getX(), diff.getY(), diff.getZ()); + + if (otherState.setValue(WATERLOGGED, false) == stepState.setValue(WATERLOGGED, false) && coord == 0) + return getMaterial(reader, toPos); + + return null; + } + + @Override + public boolean isUnblockableConnectivitySide(BlockAndTintGetter reader, BlockState state, Direction face, + BlockPos fromPos, BlockPos toPos) { + return true; + } + + @Override + public boolean isIgnoredConnectivitySide(BlockAndTintGetter reader, BlockState state, Direction face, + BlockPos fromPos, BlockPos toPos) { + BlockState toState = reader.getBlockState(toPos); + + if (!toState.is(this)) { + if (!canFaceBeOccluded(state, face.getOpposite())) + return true; + for (Direction d : Iterate.directions) + if (fromPos.relative(d) + .equals(toPos) && !canFaceBeOccluded(state, d)) + return true; + return false; + } + + Direction facing = state.getValue(FACING); + BlockPos diff = fromPos.subtract(toPos); + int coord = facing.getAxis() + .choose(diff.getX(), diff.getY(), diff.getZ()); + + Half half = state.getValue(HALF); + if (half != toState.getValue(HALF)) + return diff.getY() == 0; + + return facing == toState.getValue(FACING) + .getOpposite() + && !(coord != 0 && coord != facing.getAxisDirection() + .getStep()); + } + + @Override + public boolean canFaceBeOccluded(BlockState state, Direction face) { + if (face.getAxis() == Axis.Y) + return (state.getValue(HALF) == Half.TOP) == (face == Direction.UP); + return state.getValue(FACING) == face; + } + + @Override + public boolean isPathfindable(BlockState pState, BlockGetter pLevel, BlockPos pPos, PathComputationType pType) { + return false; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext pContext) { + BlockState stateForPlacement = + super.getStateForPlacement(pContext).setValue(FACING, pContext.getHorizontalDirection()); + Direction direction = pContext.getClickedFace(); + if (direction == Direction.UP) + return stateForPlacement; + if (direction == Direction.DOWN || (pContext.getClickLocation().y - pContext.getClickedPos() + .getY() > 0.5D)) + return stateForPlacement.setValue(HALF, Half.TOP); + return stateForPlacement; + } + + @Override + protected void createBlockStateDefinition(Builder pBuilder) { + super.createBlockStateDefinition(pBuilder.add(HALF, FACING)); + } + + @Override + public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { + VoxelShaper voxelShaper = pState.getValue(HALF) == Half.BOTTOM ? AllShapes.STEP_BOTTOM : AllShapes.STEP_TOP; + return voxelShaper.get(pState.getValue(FACING)); + } + + @Override + public boolean supportsExternalFaceHiding(BlockState state) { + return true; + } + + @Override + public boolean hidesNeighborFace(BlockGetter level, BlockPos pos, BlockState state, BlockState neighborState, + Direction dir) { + if (state.is(this) == neighborState.is(this) + && getMaterial(level, pos).skipRendering(getMaterial(level, pos.relative(dir)), dir.getOpposite())) + return isOccluded(state, neighborState, dir); + return false; + } + + public static boolean isOccluded(BlockState state, BlockState other, Direction pDirection) { + state = state.setValue(WATERLOGGED, false); + other = other.setValue(WATERLOGGED, false); + + Half half = state.getValue(HALF); + boolean vertical = pDirection.getAxis() == Axis.Y; + if (half != other.getValue(HALF)) + return vertical && (pDirection == Direction.UP) == (half == Half.TOP); + if (vertical) + return false; + + Direction facing = state.getValue(FACING); + if (facing.getOpposite() == other.getValue(FACING) && pDirection == facing) + return true; + if (other.getValue(FACING) != facing) + return false; + return pDirection.getAxis() != facing.getAxis(); + } + + @Override + public BlockState rotate(BlockState pState, Rotation pRot) { + return pState.setValue(FACING, pRot.rotate(pState.getValue(FACING))); + } + + @Override + @SuppressWarnings("deprecation") + public BlockState mirror(BlockState pState, Mirror pMirror) { + return pState.rotate(pMirror.getRotation(pState.getValue(FACING))); + } + + private static class PlacementHelper implements IPlacementHelper { + + @Override + public Predicate getItemPredicate() { + return AllBlocks.COPYCAT_STEP::isIn; + } + + @Override + public Predicate getStatePredicate() { + return AllBlocks.COPYCAT_STEP::has; + } + + public int attachedSteps(Level world, BlockPos pos, Direction direction) { + BlockPos checkPos = pos.relative(direction); + BlockState state = world.getBlockState(checkPos); + int count = 0; + while (getStatePredicate().test(state)) { + count++; + checkPos = checkPos.relative(direction); + state = world.getBlockState(checkPos); + } + return count; + } + + @Override + public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, + BlockHitResult ray) { + + Direction dir = null; + Direction facing = state.getValue(FACING); + + for (Direction nearest : Direction.orderedByNearest(player)) { + if (nearest.getAxis() != facing.getClockWise() + .getAxis()) + continue; + dir = nearest; + break; + } + + int range = AllConfigs.SERVER.curiosities.placementAssistRange.get(); + if (player != null) { + AttributeInstance reach = player.getAttribute(ForgeMod.REACH_DISTANCE.get()); + if (reach != null && reach.hasModifier(ExtendoGripItem.singleRangeAttributeModifier)) + range += 4; + } + + int row = attachedSteps(world, pos, dir); + if (row >= range) + return PlacementOffset.fail(); + + BlockPos newPos = pos.relative(dir, row + 1); + BlockState newState = world.getBlockState(newPos); + + if (!state.canSurvive(world, newPos)) + return PlacementOffset.fail(); + + if (newState.getMaterial() + .isReplaceable()) + return PlacementOffset.success(newPos, bState -> { + return bState.setValue(FACING, facing) + .setValue(HALF, state.getValue(HALF)); + }); + return PlacementOffset.fail(); + } + + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepModel.java b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepModel.java new file mode 100644 index 000000000..a13ca5d38 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatStepModel.java @@ -0,0 +1,87 @@ +package com.simibubi.create.content.curiosities.frames; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.simibubi.create.foundation.block.render.QuadHelper; +import com.simibubi.create.foundation.utility.Iterate; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Half; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.model.data.IModelData; + +public class CopycatStepModel extends CopycatModel { + + public CopycatStepModel(BakedModel originalModel) { + super(originalModel); + } + + @Override + protected List getCroppedQuads(BlockState state, Direction side, Random rand, BlockState material, + IModelData wrappedData) { + Direction facing = state.getOptionalValue(CopycatStepBlock.FACING) + .orElse(Direction.SOUTH); + boolean upperHalf = state.getOptionalValue(CopycatStepBlock.HALF) + .orElse(Half.BOTTOM) == Half.TOP; + + Vec3 zero = Vec3.ZERO; + Vec3 up = new Vec3(0, 1, 0); + Vec3 normal = Vec3.atLowerCornerOf(facing.getNormal()); + + BakedModel model = getModelOf(material); + List templateQuads = model.getQuads(material, side, rand, wrappedData); + int size = templateQuads.size(); + AABB cube = new AABB(BlockPos.ZERO); + + List quads = new ArrayList<>(); + + // 4 Pieces + for (boolean top : Iterate.trueAndFalse) { + for (boolean front : Iterate.trueAndFalse) { + + for (int i = 0; i < size; i++) { + BakedQuad quad = templateQuads.get(i); + Direction direction = quad.getDirection(); + + if (front && direction == facing) + continue; + if (!front && direction == facing.getOpposite()) + continue; + if (!top && direction == Direction.UP) + continue; + if (top && direction == Direction.DOWN) + continue; + + AABB bb = cube.contract(-normal.x * .75, .75, -normal.z * .75); + + if (front) + bb = bb.move(normal.scale(-.75)); + if (top) + bb = bb.move(up.scale(.75)); + + Vec3 offset = zero; + + if (front) + offset = offset.add(normal.scale(.5)); + if (top != upperHalf) + offset = offset.add(up.scale(upperHalf ? .5 : -.5)); + + BakedQuad newQuad = QuadHelper.clone(quad); + if (cropAndMove(newQuad, bb, offset)) + quads.add(newQuad); + } + + } + } + + return quads; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatTileEntity.java new file mode 100644 index 000000000..9b4d7cef4 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/CopycatTileEntity.java @@ -0,0 +1,170 @@ +package com.simibubi.create.content.curiosities.frames; + +import java.util.List; + +import com.google.gson.JsonParser; +import com.mojang.serialization.JsonOps; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.components.structureMovement.ITransformableTE; +import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; +import com.simibubi.create.content.logistics.block.redstone.RoseQuartzLampBlock; +import com.simibubi.create.content.schematics.ISpecialBlockEntityItemRequirement; +import com.simibubi.create.content.schematics.ItemRequirement; +import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; +import com.simibubi.create.foundation.tileEntity.SmartTileEntity; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Iterate; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelProperty; +import net.minecraftforge.items.ItemHandlerHelper; + +public class CopycatTileEntity extends SmartTileEntity implements ISpecialBlockEntityItemRequirement, ITransformableTE { + + ItemStack consumedItem; + BlockState baseBlock; + + public CopycatTileEntity(BlockEntityType type, BlockPos pos, BlockState state) { + super(type, pos, state); + baseBlock = AllBlocks.COPYCAT_BASE.getDefaultState(); + consumedItem = ItemStack.EMPTY; + } + + public void setItem(ItemStack item) { + consumedItem = ItemHandlerHelper.copyStackWithSize(item, 1); + setChanged(); + } + + public ItemStack getConsumedItem() { + return consumedItem; + } + + @Override + public ItemRequirement getRequiredItems(BlockState state) { + if (consumedItem.isEmpty()) + return ItemRequirement.NONE; + return new ItemRequirement(ItemUseType.CONSUME, consumedItem); + } + + public void setMaterial(BlockState blockState) { + BlockState wrapperState = getBlockState(); + + if (!baseBlock.is(blockState.getBlock())) + for (Direction side : Iterate.directions) { + BlockPos neighbour = worldPosition.relative(side); + BlockState neighbourState = level.getBlockState(neighbour); + if (neighbourState != wrapperState) + continue; + if (!(level.getBlockEntity(neighbour)instanceof CopycatTileEntity ufte)) + continue; + BlockState otherMaterial = ufte.getMaterial(); + if (!otherMaterial.is(blockState.getBlock())) + continue; + blockState = otherMaterial; + break; + } + + baseBlock = blockState; + if (!level.isClientSide()) { + notifyUpdate(); + return; + } + redraw(); + } + + public boolean hasCustomMaterial() { + return !AllBlocks.COPYCAT_BASE.has(getMaterial()); + } + + public BlockState getMaterial() { + return baseBlock; + } + + public boolean cycleMaterial() { + if (baseBlock.hasProperty(BlockStateProperties.FACING)) + setMaterial(baseBlock.cycle(BlockStateProperties.FACING)); + else if (baseBlock.hasProperty(BlockStateProperties.HORIZONTAL_FACING)) + setMaterial(baseBlock.cycle(BlockStateProperties.HORIZONTAL_FACING)); + else if (baseBlock.hasProperty(BlockStateProperties.AXIS)) + setMaterial(baseBlock.cycle(BlockStateProperties.AXIS)); + else if (baseBlock.hasProperty(BlockStateProperties.HORIZONTAL_AXIS)) + setMaterial(baseBlock.cycle(BlockStateProperties.HORIZONTAL_AXIS)); + else if (baseBlock.hasProperty(BlockStateProperties.LIT)) + setMaterial(baseBlock.cycle(BlockStateProperties.LIT)); + else if (baseBlock.hasProperty(RoseQuartzLampBlock.POWERING)) + setMaterial(baseBlock.cycle(RoseQuartzLampBlock.POWERING)); + else + return false; + + return true; + } + + @Override + protected void read(CompoundTag tag, boolean clientPacket) { + super.read(tag, clientPacket); + + consumedItem = ItemStack.of(tag.getCompound("Item")); + + BlockState prevMaterial = baseBlock; + if (!tag.contains("Material")) + return; + + JsonOps ops = JsonOps.INSTANCE; + BlockState.CODEC.decode(ops, JsonParser.parseString(tag.getString("Material"))) + .result() + .ifPresent(p -> baseBlock = p.getFirst()); + + if (clientPacket && prevMaterial != baseBlock) + redraw(); + } + + private void redraw() { + if (!isVirtual()) + requestModelDataUpdate(); + if (hasLevel()) { + level.sendBlockUpdated(getBlockPos(), getBlockState(), getBlockState(), 16); + level.getChunkSource() + .getLightEngine() + .checkBlock(worldPosition); + } + } + + @Override + protected void write(CompoundTag tag, boolean clientPacket) { + super.write(tag, clientPacket); + + tag.put("Item", consumedItem.serializeNBT()); + + JsonOps ops = JsonOps.INSTANCE; + BlockState.CODEC.encode(baseBlock, ops, ops.empty()) + .result() + .map(je -> je.toString()) + .ifPresent(s -> tag.putString("Material", s)); + } + + public static final ModelProperty MATERIAL_PROPERTY = new ModelProperty<>(); + + @Override + public IModelData getModelData() { + return new ModelDataMap.Builder().withInitial(MATERIAL_PROPERTY, baseBlock) + .build(); + } + + @Override + public void addBehaviours(List behaviours) {} + + @Override + public void transform(StructureTransform transform) { + baseBlock = transform.apply(baseBlock); + notifyUpdate(); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/frames/WaterloggedCopycatBlock.java b/src/main/java/com/simibubi/create/content/curiosities/frames/WaterloggedCopycatBlock.java new file mode 100644 index 000000000..169d73039 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/frames/WaterloggedCopycatBlock.java @@ -0,0 +1,43 @@ +package com.simibubi.create.content.curiosities.frames; + +import com.simibubi.create.foundation.block.ProperWaterloggedBlock; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.material.FluidState; + +public abstract class WaterloggedCopycatBlock extends CopycatBlock implements ProperWaterloggedBlock { + + public WaterloggedCopycatBlock(Properties pProperties) { + super(pProperties); + registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); + } + + @Override + protected void createBlockStateDefinition(Builder pBuilder) { + super.createBlockStateDefinition(pBuilder.add(WATERLOGGED)); + } + + @Override + public FluidState getFluidState(BlockState pState) { + return fluidState(pState); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext pContext) { + return withWater(super.getStateForPlacement(pContext), pContext); + } + + @Override + public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, + LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { + updateWater(pLevel, pState, pCurrentPos); + return pState; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/girder/ConnectedGirderModel.java b/src/main/java/com/simibubi/create/content/curiosities/girder/ConnectedGirderModel.java index 373800fd2..4c333dfcd 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/girder/ConnectedGirderModel.java +++ b/src/main/java/com/simibubi/create/content/curiosities/girder/ConnectedGirderModel.java @@ -28,11 +28,13 @@ public class ConnectedGirderModel extends CTModel { } @Override - protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state) { + protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state, + IModelData tileData) { ConnectionData connectionData = new ConnectionData(); for (Direction d : Iterate.horizontalDirections) connectionData.setConnected(d, GirderBlock.isConnected(world, pos, state, d)); - return super.gatherModelData(builder, world, pos, state).withInitial(CONNECTION_PROPERTY, connectionData); + return super.gatherModelData(builder, world, pos, state, tileData).withInitial(CONNECTION_PROPERTY, + connectionData); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java b/src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java index 2cc960565..3336098d9 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java @@ -16,14 +16,15 @@ public abstract class BakedModelWrapperWithData extends BakedModelWrapper IBogeyBlock.register(RegisteredObjects.getKeyOrThrow(block))); } + public static NonNullUnaryOperator> copycat() { + return b -> b.initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .getExistingFile(p.mcLoc("air")))) + .initialProperties(SharedProperties::softMetal) + .properties(p -> p.noOcclusion() + .color(MaterialColor.NONE)) + .addLayer(() -> RenderType::solid) + .addLayer(() -> RenderType::cutout) + .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) + .color(() -> CopycatBlock::wrappedColor) + .tag(AllBlockTags.SAFE_NBT.tag) + .transform(AllTags.axeOrPickaxe()); + } + public static NonNullUnaryOperator> trapdoor(boolean orientable) { return b -> b.blockstate((c, p) -> { ModelFile bottom = AssetLookup.partialBaseModel(c, p, "bottom"); diff --git a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java b/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java index ffb52b2b3..e92d79f31 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java @@ -207,6 +207,14 @@ public class VecHelper { return new Vec3(Mth.clamp(vec.x, -maxLength, maxLength), Mth.clamp(vec.y, -maxLength, maxLength), Mth.clamp(vec.z, -maxLength, maxLength)); } + + public static Vec3 componentMin(Vec3 vec1, Vec3 vec2) { + return new Vec3(Math.min(vec1.x, vec2.x), Math.min(vec1.y, vec2.y), Math.min(vec1.z, vec2.z)); + } + + public static Vec3 componentMax(Vec3 vec1, Vec3 vec2) { + return new Vec3(Math.max(vec1.x, vec2.x), Math.max(vec1.y, vec2.y), Math.max(vec1.z, vec2.z)); + } public static Vec3 project(Vec3 vec, Vec3 ontoVec) { if (ontoVec.equals(Vec3.ZERO)) diff --git a/src/main/resources/assets/create/models/block/copycat_base/block.json b/src/main/resources/assets/create/models/block/copycat_base/block.json new file mode 100644 index 000000000..ac8beca4d --- /dev/null +++ b/src/main/resources/assets/create/models/block/copycat_base/block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "create:block/copycat_base" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copycat_base/panel.json b/src/main/resources/assets/create/models/block/copycat_base/panel.json new file mode 100644 index 000000000..50dc651f4 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copycat_base/panel.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/copycat_base", + "2": "create:block/copycat_base", + "particle": "create:block/copycat_base" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 1, 16], + "faces": { + "north": {"uv": [0, 15, 16, 16], "texture": "#2"}, + "east": {"uv": [0, 15, 16, 16], "texture": "#2"}, + "south": {"uv": [0, 15, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 15, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + }, + { + "from": [0, 1, 0], + "to": [16, 3, 16], + "faces": { + "north": {"uv": [0, 0, 16, 2], "texture": "#2"}, + "east": {"uv": [0, 0, 16, 2], "texture": "#2"}, + "south": {"uv": [0, 0, 16, 2], "texture": "#2"}, + "west": {"uv": [0, 0, 16, 2], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copycat_base/step.json b/src/main/resources/assets/create/models/block/copycat_base/step.json new file mode 100644 index 000000000..ed41c928a --- /dev/null +++ b/src/main/resources/assets/create/models/block/copycat_base/step.json @@ -0,0 +1,51 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "1": "create:block/copycat_base", + "2": "create:block/copycat_base", + "particle": "create:block/copycat_base" + }, + "elements": [ + { + "from": [0, 0, 4], + "to": [16, 4, 8], + "faces": { + "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, + "east": {"uv": [12, 12, 16, 16], "texture": "#2"}, + "west": {"uv": [0, 12, 4, 16], "texture": "#2"}, + "down": {"uv": [0, 12, 16, 16], "texture": "#1"} + } + }, + { + "from": [0, 0, 8], + "to": [16, 4, 12], + "faces": { + "east": {"uv": [0, 12, 4, 16], "texture": "#2"}, + "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, + "west": {"uv": [12, 12, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 4], "texture": "#1"} + } + }, + { + "from": [0, 4, 8], + "to": [16, 8, 12], + "faces": { + "east": {"uv": [0, 0, 4, 4], "texture": "#2"}, + "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, + "west": {"uv": [12, 0, 16, 4], "texture": "#2"}, + "up": {"uv": [0, 12, 16, 16], "texture": "#1"} + } + }, + { + "from": [0, 4, 4], + "to": [16, 8, 8], + "faces": { + "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, + "east": {"uv": [12, 0, 16, 4], "texture": "#2"}, + "west": {"uv": [0, 0, 4, 4], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 4], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/copycat_base.png b/src/main/resources/assets/create/textures/block/copycat_base.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2dd598cffbf0e2f75d61e397920e5f1343177d GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}f0G|-oj_%4?OD1IHC9gfUGAJzA%Ec8ZlWt(T8c4C11o;L32LlEvZ)P{3 z5NCl$WHAE+-$4*&+%YlxEl@Da)5S4FBiOZ{o9}=DhttRE|H}MVa#egE9KFUQ!J64~ z_|WIzii3Oh_`jRF;mJ*z2Lg`roKfBivs<=Lk>++$t6!l1Um>S_uS4W}j*OCL>Ehcj y{EicroG`ncW5ek*p(=;kb-K3oA<-pMzcO5CXRc2>ySE-_D}$%2pUXO@geCw@wOY^s literal 0 HcmV?d00001 From 447d4236fc2d771c2ee8559867489d05c6feb1a4 Mon Sep 17 00:00:00 2001 From: Kryppers <65094918+Kryppers@users.noreply.github.com> Date: Fri, 21 Oct 2022 22:35:57 +0100 Subject: [PATCH 008/122] Spit and Shine part 1 Reworked funnel models Reorganised funnel assets WIP textures for funnels WIP texture for andesite_block Cleaned up some unused files --- .../create/models/block/brass_block.json | 2 +- .../java/com/simibubi/create/AllBlocks.java | 6 +- .../block/belt_funnel/block_connected.json | 232 --------------- .../block/belt_funnel/block_extended.json | 194 +++++-------- .../block/belt_funnel/block_pulling.json | 179 +++++------- .../block/belt_funnel/block_pushing.json | 179 +++++------- .../block/belt_funnel/block_retracted.json | 197 +++++-------- .../create/models/block/belt_funnel/flap.json | 2 +- .../models/block/funnel/block_horizontal.json | 161 +++++------ .../models/block/funnel/block_vertical.json | 172 ++++-------- .../funnel/block_vertical_filterless.json | 127 +++------ .../create/models/block/funnel/item.json | 263 ++++++++---------- .../create/textures/block/andesite_block.png | Bin 0 -> 752 bytes .../create/textures/block/brass_block.png | Bin 226 -> 6407 bytes .../create/textures/block/brass_casing.png | Bin 298 -> 6481 bytes .../textures/block/brass_storage_block.png | Bin 214 -> 0 bytes .../create/textures/block/crate_brass.png | Bin 493 -> 0 bytes .../textures/block/crate_brass_side.png | Bin 734 -> 0 bytes .../textures/block/funnel/andesite_funnel.png | Bin 0 -> 8648 bytes .../block/funnel/andesite_funnel_frame.png | Bin 0 -> 5725 bytes .../block/funnel/andesite_funnel_neutral.png | Bin 0 -> 6487 bytes .../block/funnel/andesite_funnel_powered.png | Bin 0 -> 6444 bytes .../block/funnel/andesite_funnel_pull.png | Bin 0 -> 6823 bytes .../block/funnel/andesite_funnel_push.png | Bin 0 -> 6821 bytes .../funnel/andesite_funnel_unpowered.png | Bin 0 -> 6335 bytes .../textures/block/funnel/brass_funnel.png | Bin 0 -> 8280 bytes .../block/funnel/brass_funnel_frame.png | Bin 0 -> 627 bytes .../block/funnel/brass_funnel_neutral.png | Bin 0 -> 752 bytes .../block/funnel/brass_funnel_powered.png | Bin 0 -> 734 bytes .../block/funnel/brass_funnel_pull.png | Bin 0 -> 804 bytes .../block/funnel/brass_funnel_push.png | Bin 0 -> 802 bytes .../block/funnel/brass_funnel_unpowered.png | Bin 0 -> 725 bytes .../textures/block/funnel/funnel_back.png | Bin 0 -> 7565 bytes .../textures/block/funnel/funnel_closed.png | Bin 0 -> 177 bytes .../textures/block/funnel/funnel_open.png | Bin 0 -> 186 bytes 35 files changed, 553 insertions(+), 1161 deletions(-) delete mode 100644 src/main/resources/assets/create/models/block/belt_funnel/block_connected.json create mode 100644 src/main/resources/assets/create/textures/block/andesite_block.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_storage_block.png delete mode 100644 src/main/resources/assets/create/textures/block/crate_brass.png delete mode 100644 src/main/resources/assets/create/textures/block/crate_brass_side.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/andesite_funnel.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/andesite_funnel_frame.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/andesite_funnel_neutral.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/andesite_funnel_powered.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/andesite_funnel_pull.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/andesite_funnel_push.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/andesite_funnel_unpowered.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/brass_funnel.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/brass_funnel_frame.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/brass_funnel_neutral.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/brass_funnel_powered.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/brass_funnel_pull.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/brass_funnel_push.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/brass_funnel_unpowered.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/funnel_back.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/funnel_closed.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/funnel_open.png diff --git a/src/generated/resources/assets/create/models/block/brass_block.json b/src/generated/resources/assets/create/models/block/brass_block.json index c3d4b94f4..124827f00 100644 --- a/src/generated/resources/assets/create/models/block/brass_block.json +++ b/src/generated/resources/assets/create/models/block/brass_block.json @@ -1,6 +1,6 @@ { "parent": "minecraft:block/cube_all", "textures": { - "all": "create:block/brass_storage_block" + "all": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 620af8219..89c1358ac 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -1699,6 +1699,7 @@ public class AllBlocks { public static final BlockEntry ANDESITE_FUNNEL = REGISTRATE.block("andesite_funnel", AndesiteFunnelBlock::new) + .addLayer(() -> RenderType::cutoutMipped) .initialProperties(SharedProperties::stone) .properties(p -> p.color(MaterialColor.STONE)) .transform(pickaxeOnly()) @@ -1712,6 +1713,7 @@ public class AllBlocks { public static final BlockEntry ANDESITE_BELT_FUNNEL = REGISTRATE.block("andesite_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.ANDESITE_FUNNEL, p)) + .addLayer(() -> RenderType::cutoutMipped) .initialProperties(SharedProperties::stone) .properties(p -> p.color(MaterialColor.STONE)) .transform(pickaxeOnly()) @@ -1722,6 +1724,7 @@ public class AllBlocks { public static final BlockEntry BRASS_FUNNEL = REGISTRATE.block("brass_funnel", BrassFunnelBlock::new) + .addLayer(() -> RenderType::cutoutMipped) .initialProperties(SharedProperties::softMetal) .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .transform(pickaxeOnly()) @@ -1735,6 +1738,7 @@ public class AllBlocks { public static final BlockEntry BRASS_BELT_FUNNEL = REGISTRATE.block("brass_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.BRASS_FUNNEL, p)) + .addLayer(() -> RenderType::cutoutMipped) .initialProperties(SharedProperties::softMetal) .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .transform(pickaxeOnly()) @@ -2077,7 +2081,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .properties(p -> p.requiresCorrectToolForDrops()) .transform(pickaxeOnly()) - .blockstate(simpleCubeAll("brass_storage_block")) + .blockstate(simpleCubeAll("brass_block")) .tag(BlockTags.NEEDS_IRON_TOOL) .tag(Tags.Blocks.STORAGE_BLOCKS) .tag(BlockTags.BEACON_BASE_BLOCKS) diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json b/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json deleted file mode 100644 index 447d36f7a..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 5], - "to": [16, 0, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [8, 8, 9, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 5], - "to": [2, 0, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 5], - "to": [16, 16, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [8, 0, 16, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 8, 3], "texture": "#7"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 5], - "to": [16, -3, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 5], - "to": [1, -3, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [1, 0, 0, 6], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 11], - "to": [16, -2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 11]}, - "faces": { - "east": {"uv": [5, 14.5, 7.5, 16], "texture": "#7"}, - "south": {"uv": [7.5, 13, 8, 14.5], "texture": "#7"}, - "west": {"uv": [5.5, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 0, 1, 5], "texture": "#particle"}, - "down": {"uv": [0, 0, 1, 5], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 11], - "to": [1, -2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 11]}, - "faces": { - "east": {"uv": [8, 14.5, 5.5, 16], "texture": "#7"}, - "south": {"uv": [8, 13, 7.5, 14.5], "texture": "#7"}, - "west": {"uv": [7.5, 14.5, 5, 16], "texture": "#7"}, - "up": {"uv": [1, 0, 0, 5], "texture": "#particle"}, - "down": {"uv": [1, 0, 0, 5], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 0], - "to": [16, -2, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [8, 13, 7.5, 14.5], "texture": "#7"}, - "east": {"uv": [7.5, 14.5, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 14.5, 5.5, 16], "texture": "#7"}, - "up": {"uv": [0, 5, 1, 0], "texture": "#particle"}, - "down": {"uv": [0, 5, 1, 0], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 0], - "to": [1, -2, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [7.5, 13, 8, 14.5], "texture": "#7"}, - "east": {"uv": [5.5, 14.5, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 14.5, 7.5, 16], "texture": "#7"}, - "up": {"uv": [1, 5, 0, 0], "texture": "#particle"}, - "down": {"uv": [1, 5, 0, 0], "texture": "#particle"} - } - }, - { - "name": "BackExtension", - "from": [3, -2, 10], - "to": [13, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [9, 6, 16, 8], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 6, 16, 8], "rotation": 270, "texture": "#3"}, - "up": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"} - } - }, - { - "name": "BackExtension", - "from": [3, -2, 2], - "to": [13, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 10]}, - "faces": { - "east": {"uv": [9, 8, 16, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 8, 16, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [9.5, 4, 14.5, 2], "texture": "#3"} - } - }, - { - "name": "MidExtension", - "from": [2, -2, 8], - "to": [14, 14, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "MidExtension", - "from": [2, -2, 4], - "to": [14, 14, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [8, 6, 16, 0], "rotation": 270, "texture": "#3"}, - "east": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, - "up": {"uv": [8, 0, 6, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, -2.1], - "to": [13.9, 13.95, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 10]}, - "faces": { - "north": {"uv": [15, 1, 9, 9], "texture": "#7"}, - "east": {"uv": [0, 4, 16, 0], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 16, 16, 4], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 4, 16, 0], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 4, 12, 0], "texture": "#6"}, - "down": {"uv": [0, 4, 12, 0], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "north": {"uv": [0, 4, 16, 16], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [1, -5, 0], - "to": [15, -2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, - "faces": { - "north": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 0, 15, 16], "texture": "#particle"}, - "down": {"uv": [1, 0, 15, 16], "texture": "#particle"} - } - } - ], - "groups": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8] - }, - { - "name": "Extension", - "origin": [9, -4, 8], - "children": [9, 10, 11, 12] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [13, 14, 15] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index 073985dd2..ca4b4eb0a 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -2,88 +2,24 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" + "back": "create:block/funnel/funnel_back", + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block", + "block": "create:block/brass_block" }, "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 0], - "to": [16, 0, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [14, 10, 16, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [2, 0, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 10, 2, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [14, 0, 0], - "to": [16, 16, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 0], - "to": [2, 16, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, 10, 0], - "to": [14, 16, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 0]}, - "faces": { - "north": {"uv": [9, 13, 15, 16], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"} - } - }, { "name": "LeftBottom", "from": [15, -5, 0], "to": [16, -3, 6], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, "faces": { - "north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"}, - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} + "north": {"uv": [8, 8, 9, 8.5], "rotation": 90, "texture": "#base"}, + "east": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, + "down": {"uv": [0, 0, 1, 6], "rotation": 180, "texture": "#block"} } }, { @@ -92,10 +28,31 @@ "to": [1, -3, 6], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, "faces": { - "north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"}, - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} + "north": {"uv": [8, 8, 9, 8.5], "rotation": 90, "texture": "#base"}, + "east": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, + "down": {"uv": [15, 0, 16, 6], "rotation": 180, "texture": "#block"} + } + }, + { + "from": [0, -3, 0], + "to": [16, 16, 6], + "faces": { + "north": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "east": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "up": {"uv": [0, 0, 8, 3], "texture": "#direction"}, + "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + } + }, + { + "from": [2, -3, 6], + "to": [14, 10, 0], + "faces": { + "east": {"uv": [11, 8.5, 14, 16], "texture": "#base"}, + "west": {"uv": [13, 8.5, 16, 16], "texture": "#base"}, + "up": {"uv": [14, 9, 11, 15], "rotation": 90, "texture": "#base"} } }, { @@ -104,10 +61,9 @@ "to": [13, 13, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { - "east": {"uv": [9, 6, 16, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 0.5, 8, 6.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 6, 16, 8], "rotation": 270, "texture": "#3"}, - "up": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"} + "east": {"uv": [8.5, 6, 16, 8], "rotation": 90, "texture": "#back"}, + "west": {"uv": [8.5, 6, 16, 8], "rotation": 270, "texture": "#back"}, + "up": {"uv": [0.5, 8.5, 5.5, 10.5], "texture": "#back"} } }, { @@ -116,61 +72,39 @@ "to": [14, 14, 10], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { - "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, - "east": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"} + "north": {"uv": [0, 0, 8, 6], "rotation": 270, "texture": "#base"}, + "east": {"uv": [0.5, 6, 8.5, 8], "rotation": 90, "texture": "#back"}, + "south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [0.5, 8, 8.5, 6], "rotation": 90, "texture": "#back"}, + "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#back"} } }, { "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], + "from": [2.05, -2, 14], + "to": [13.95, 13.95, 18], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { - "north": {"uv": [0, 4, 16, 16], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} + "north": {"uv": [4, 0, 16, 16], "texture": "#redstone"}, + "east": {"uv": [0, 0, 4, 16], "texture": "#redstone"}, + "south": {"uv": [0, 8, 6, 16], "texture": "#base"}, + "west": {"uv": [0, 0, 4, 16], "rotation": 180, "texture": "#redstone"}, + "up": {"uv": [8, 2, 12, 14], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [8, 2, 12, 14], "rotation": 90, "texture": "#redstone"} } }, { "name": "RearBackPlate", - "from": [1, -5, 5], - "to": [15, -2, 16.05], + "from": [0, -5, 6], + "to": [16, -2, 16], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 5, 15, 16], "texture": "#particle"}, - "down": {"uv": [1, 0, 15, 11], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [15, -5, 6], - "to": [16, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [0, 14.5, 5, 16], "texture": "#7"}, - "south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 14.5, 5.5, 15], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 10], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [0, -5, 6], - "to": [1, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, - "west": {"uv": [5, 14.5, 0, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 5.5, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 10], "texture": "#particle"} + "north": {"uv": [0, 3, 16, 6], "texture": "#block"}, + "east": {"uv": [7.5, 11, 9, 16], "rotation": 90, "texture": "#base"}, + "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7.5, 10.5, 9, 16], "rotation": 90, "texture": "#base"}, + "up": {"uv": [0, 6, 16, 16], "texture": "#block"}, + "down": {"uv": [0, 6, 16, 16], "rotation": 180, "texture": "#block"} } } ], @@ -178,21 +112,25 @@ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ { "name": "FrontSection", "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6] + "color": 0, + "children": [0, 1, 2, 3] }, { "name": "Extension", "origin": [9, -4, 8], - "children": [7, 8] + "color": 0, + "children": [4, 5] }, { "name": "Base", "origin": [9, -4, 8], - "children": [9, 10, 11, 12] + "color": 0, + "children": [6, 7] } ] } diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json index d59a3ae68..e3dd34e56 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json @@ -2,135 +2,84 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "2_2": "create:block/brass_funnel_pull", - "particle": "create:block/brass_block" + "back": "create:block/funnel/funnel_back", + "particle": "create:block/funnel/brass_funnel", + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_pull", + "redstone": "create:block/funnel/brass_funnel_unpowered" }, "elements": [ - { - "name": "LeftWall", - "from": [14, -2, 6], - "to": [16.05, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, - "down": {"uv": [14, 0, 16, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, -2, 6], - "to": [2, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, - "down": {"uv": [0, 0, 2, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [14, 1, 6], - "to": [16.05, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, 1, 6], - "to": [2, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2_2"} - } - }, - { - "name": "Top", - "from": [2, 11, 6], - "to": [14, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2_2"} - } - }, { "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], + "from": [2.05, -2, 14], + "to": [13.95, 13.95, 18], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, "faces": { - "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, 2.9, 11.9], - "to": [13.9, 13.95, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, - "faces": { - "east": {"uv": [5, 1, 16, 3], "rotation": 270, "texture": "#5"}, - "west": {"uv": [5, 3, 16, 1], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 3, 12, 1], "texture": "#6"} + "north": {"uv": [0, 0, 6, 8], "rotation": 180, "texture": "#base"}, + "east": {"uv": [0, 0, 4, 16], "texture": "#redstone"}, + "south": {"uv": [0, 8, 6, 16], "texture": "#base"}, + "west": {"uv": [0, 0, 4, 16], "rotation": 180, "texture": "#redstone"}, + "up": {"uv": [8, 2, 12, 14], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [12, 2, 8, 14], "rotation": 270, "texture": "#redstone"} } }, { "name": "RearBackPlate", - "from": [0.05, -5, 13], - "to": [15.95, -2, 15.95], + "from": [0.1, -5, 13], + "to": [15.9, -2, 16], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "north": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "east": {"uv": [6.5, 14.5, 8, 16], "texture": "#7"}, - "south": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "west": {"uv": [0, 14.5, 1.5, 16], "texture": "#7"}, - "up": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "down": {"uv": [0, 13, 8, 14.5], "texture": "#7"} + "north": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "east": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, + "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, + "up": {"uv": [6, 8, 7.5, 16], "texture": "#base"}, + "down": {"uv": [6, 8, 7.5, 16], "rotation": 90, "texture": "#base"} } }, { "name": "RearBackPlate", - "from": [2, 9.9, 9], - "to": [14, 11.9, 16], + "from": [2, 9.9, 10], + "to": [14, 11.9, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, "faces": { - "down": {"uv": [2, 6, 14, 13], "texture": "#2_2"} + "down": {"uv": [12, 9.5, 14, 15.5], "rotation": 90, "texture": "#base"} } }, { "from": [1, 8, 11], - "to": [15, 15, 14], + "to": [15, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { - "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} + "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, + "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [0.5, 6, 4, 7.5], "rotation": 90, "texture": "#back"}, + "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#back"} + } + }, + { + "name": "External", + "from": [0, -3, 13], + "to": [16, 16, 19], + "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, + "faces": { + "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, + "east": {"uv": [11, 0, 8, 9.5], "texture": "#direction"}, + "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "down": {"uv": [0, 6.5, 8, 9.5], "texture": "#direction"} + } + }, + { + "name": "Internal", + "from": [2, -3, 19], + "to": [14, 10, 13], + "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, + "faces": { + "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, + "west": {"uv": [13, 9.5, 16, 16], "texture": "#base"}, + "up": {"uv": [11, 9.5, 14, 15.5], "rotation": 270, "texture": "#base"} } } ], @@ -138,23 +87,29 @@ { "name": "block_retracted", "origin": [8, 8, 8], + "color": 0, "children": [ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4] - }, { "name": "Base", "origin": [9, -4, 8], - "children": [5, 6, 7, 8] + "color": 0, + "children": [0, 1, 2] } ] - }, 9] + }, + 3 + ] + }, + { + "name": "Front_section", + "origin": [8, 8, 8], + "color": 0, + "children": [4, 5] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json index 4fbd350ed..e098c5b1c 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json @@ -2,135 +2,84 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "2_1": "create:block/brass_funnel_push", - "particle": "create:block/brass_block" + "back": "create:block/funnel/funnel_back", + "particle": "create:block/funnel/brass_funnel", + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_push", + "redstone": "create:block/funnel/brass_funnel_unpowered" }, "elements": [ - { - "name": "LeftWall", - "from": [14, -2, 6], - "to": [16.05, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_1"}, - "down": {"uv": [14, 0, 16, 6], "texture": "#2_1"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, -2, 6], - "to": [2, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_1"}, - "down": {"uv": [0, 0, 2, 6], "texture": "#2_1"} - } - }, - { - "name": "LeftWall", - "from": [14, 1, 6], - "to": [16.05, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_1"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2_1"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, 1, 6], - "to": [2, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_1"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2_1"} - } - }, - { - "name": "Top", - "from": [2, 11, 6], - "to": [14, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2_1"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2_1"} - } - }, { "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], + "from": [2.05, -2, 14], + "to": [13.95, 13.95, 18], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, "faces": { - "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, 2.9, 11.9], - "to": [13.9, 13.95, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, - "faces": { - "east": {"uv": [5, 1, 16, 3], "rotation": 270, "texture": "#5"}, - "west": {"uv": [5, 3, 16, 1], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 3, 12, 1], "texture": "#6"} + "north": {"uv": [0, 0, 6, 8], "rotation": 180, "texture": "#base"}, + "east": {"uv": [0, 0, 4, 16], "texture": "#redstone"}, + "south": {"uv": [0, 8, 6, 16], "texture": "#base"}, + "west": {"uv": [0, 0, 4, 16], "rotation": 180, "texture": "#redstone"}, + "up": {"uv": [8, 2, 12, 14], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [12, 2, 8, 14], "rotation": 270, "texture": "#redstone"} } }, { "name": "RearBackPlate", - "from": [0.05, -5, 13], - "to": [15.95, -2, 15.95], + "from": [0.1, -5, 13], + "to": [15.9, -2, 16], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "north": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "east": {"uv": [6.5, 14.5, 8, 16], "texture": "#7"}, - "south": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "west": {"uv": [0, 14.5, 1.5, 16], "texture": "#7"}, - "up": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "down": {"uv": [0, 13, 8, 14.5], "texture": "#7"} + "north": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "east": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, + "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, + "up": {"uv": [6, 8, 7.5, 16], "texture": "#base"}, + "down": {"uv": [6, 8, 7.5, 16], "rotation": 90, "texture": "#base"} } }, { "name": "RearBackPlate", - "from": [2, 9.9, 9], - "to": [14, 11.9, 16], + "from": [2, 9.9, 10], + "to": [14, 11.9, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, "faces": { - "down": {"uv": [2, 6, 14, 13], "texture": "#2_1"} + "down": {"uv": [12, 9.5, 14, 15.5], "rotation": 90, "texture": "#base"} } }, { "from": [1, 8, 11], - "to": [15, 15, 14], + "to": [15, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { - "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} + "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, + "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [0.5, 6, 4, 7.5], "rotation": 90, "texture": "#back"}, + "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#back"} + } + }, + { + "name": "External", + "from": [0, -3, 13], + "to": [16, 16, 19], + "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, + "faces": { + "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, + "east": {"uv": [11, 0, 8, 9.5], "texture": "#direction"}, + "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "down": {"uv": [0, 6.5, 8, 9.5], "texture": "#direction"} + } + }, + { + "name": "Internal", + "from": [2, -3, 19], + "to": [14, 10, 13], + "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, + "faces": { + "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, + "west": {"uv": [13, 9.5, 16, 16], "texture": "#base"}, + "up": {"uv": [11, 9.5, 14, 15.5], "rotation": 270, "texture": "#base"} } } ], @@ -138,23 +87,29 @@ { "name": "block_retracted", "origin": [8, 8, 8], + "color": 0, "children": [ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4] - }, { "name": "Base", "origin": [9, -4, 8], - "children": [5, 6, 7, 8] + "color": 0, + "children": [0, 1, 2] } ] - }, 9] + }, + 3 + ] + }, + { + "name": "Front_section", + "origin": [8, 8, 8], + "color": 0, + "children": [4, 5] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 6336e2bd4..da2a1b625 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -3,98 +3,24 @@ "parent": "block/block", "texture_size": [32, 32], "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" + "back": "create:block/funnel/funnel_back", + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block", + "block": "create:block/brass_block" }, "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 8], - "to": [16, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [14, 10, 16, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 8], - "to": [2, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 10, 2, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [14, 0, 8], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 8], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, 10, 8], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, -2, 12], - "to": [14, 10, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -14, 8]}, - "faces": { - "north": {"uv": [0, 8, 6, 14], "texture": "#3"}, - "south": {"uv": [9, 3, 15, 9.5], "texture": "#7"} - } - }, { "name": "LeftBottom", "from": [15, -5, 8], "to": [16, -3, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, "faces": { - "north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"}, - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} + "north": {"uv": [8, 12, 9, 12.5], "rotation": 90, "texture": "#base"}, + "east": {"uv": [8, 12, 9, 15], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 12, 9, 15], "rotation": 90, "texture": "#base"}, + "down": {"uv": [0, 8, 1, 14], "texture": "#block"} } }, { @@ -103,60 +29,68 @@ "to": [1, -3, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, "faces": { - "north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"}, - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} + "north": {"uv": [8, 11.5, 9, 12], "rotation": 90, "texture": "#base"}, + "east": {"uv": [8, 12, 9, 9], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 12, 9, 9], "rotation": 90, "texture": "#base"}, + "down": {"uv": [15, 8, 16, 14], "texture": "#block"} + } + }, + { + "from": [0, -3, 8], + "to": [16, 16, 14], + "faces": { + "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, + "east": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + } + }, + { + "from": [2, -3, 14], + "to": [14, 10, 8], + "faces": { + "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, + "west": {"uv": [13, 9.5, 16, 16], "texture": "#base"}, + "up": {"uv": [14, 9, 11, 15], "rotation": 90, "texture": "#base"} } }, { "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], + "from": [2.05, -2, 12], + "to": [13.95, 13.95, 18], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, "faces": { - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} + "north": {"uv": [0, 0, 6, 8], "rotation": 180, "texture": "#base"}, + "east": {"uv": [0, 0, 6, 16], "texture": "#redstone"}, + "south": {"uv": [0, 8, 6, 16], "texture": "#base"}, + "west": {"uv": [0, 0, 6, 16], "rotation": 180, "texture": "#redstone"}, + "up": {"uv": [8, 2, 14, 14], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [8, 2, 14, 14], "rotation": 90, "texture": "#redstone"} } }, { "name": "RearBackPlate", - "from": [1, -5, 10], - "to": [15, -2, 16.05], + "from": [0, -5, 14], + "to": [16, -2, 16], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 10, 15, 16], "texture": "#particle"} + "east": {"uv": [7.5, 15, 9, 16], "rotation": 90, "texture": "#base"}, + "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7.5, 8, 9, 9], "rotation": 90, "texture": "#base"}, + "up": {"uv": [0, 14, 16, 16], "texture": "#block"}, + "down": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#block"} } }, { - "name": "BackPlateLeft", - "from": [15, -5, 14], - "to": [16, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, + "name": "RearBackPlate", + "from": [1, -5, 12], + "to": [15, -2, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "east": {"uv": [0, 14.5, 1, 16], "texture": "#7"}, - "south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"}, - "west": {"uv": [7, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [0, -5, 14], - "to": [1, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [8, 14.5, 7, 16], "texture": "#7"}, - "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, - "west": {"uv": [1, 14.5, 0, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} + "north": {"uv": [1, 10, 15, 12], "texture": "#block"}, + "down": {"uv": [1, 12, 15, 14], "rotation": 180, "texture": "#block"} } }, { @@ -164,10 +98,10 @@ "to": [15, 15, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, "faces": { - "east": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 6.5, 6], "rotation": 90, "texture": "#3"} + "east": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, + "south": {"uv": [7.5, 0, 16, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [7.5, 5.5, 16, 6], "rotation": 90, "texture": "#back"}, + "up": {"uv": [7.5, 0, 8, 6], "rotation": 270, "texture": "#back"} } } ], @@ -175,17 +109,22 @@ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ { "name": "FrontSection", "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7] + "color": 0, + "children": [0, 1, 2, 3] }, { "name": "Base", "origin": [9, -4, 8], - "children": [8, 9, 10, 11] + "color": 0, + "children": [4, 5, 6] } ] - }, 12] + }, + 7 + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/flap.json b/src/main/resources/assets/create/models/block/belt_funnel/flap.json index 2cc22b0b7..04fc536bb 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/flap.json @@ -1,7 +1,7 @@ { "credit": "Made with Blockbench", "textures": { - "4": "create:block/brass_funnel_back" + "4": "create:block/funnel/funnel_back" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json index 23c63640f..184f3899c 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json +++ b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json @@ -2,124 +2,83 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "2_2": "create:block/brass_funnel_pull" + "back": "create:block/funnel/funnel_back", + "base": "create:block/funnel/brass_funnel", + "particle": "create:block/funnel/brass_funnel_pull", + "direction": "create:block/funnel/brass_funnel_pull", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "block": "create:block/brass_block" }, "elements": [ - { - "name": "LeftWall", - "from": [14, 1, 6], - "to": [16.05, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [0, 0, 2, 6], "rotation": 180, "texture": "#2_2"}, - "down": {"uv": [14, 0, 16, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, 1, 6], - "to": [2, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2_2"}, - "down": {"uv": [0, 0, 2, 6], "texture": "#2_2"} - } - }, { "name": "Top", - "from": [2, 11, 6], - "to": [14, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, + "from": [0.1, -1, 12], + "to": [15.9, 2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 4]}, "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "down": {"uv": [9, 13, 15, 16], "rotation": 180, "texture": "#7"} - } - }, - { - "name": "Top", - "from": [0.05, -1, 12], - "to": [15.95, 1, 15.95], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 17]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "rotation": 180, "texture": "#7"}, - "east": {"uv": [16, 11, 15, 13], "rotation": 270, "texture": "#7"}, - "south": {"uv": [0, 13.5, 8, 14.5], "texture": "#7"}, - "west": {"uv": [9, 11, 8, 13], "rotation": 90, "texture": "#7"}, - "up": {"uv": [8, 11, 16, 13], "texture": "#7"}, - "down": {"uv": [8, 11, 16, 13], "rotation": 180, "texture": "#7"} - } - }, - { - "name": "Top", - "from": [0, 1, 14], - "to": [16, 1.9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13.9, 17]}, - "faces": { - "north": {"uv": [0, 7, 0.5, 15], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 13, 6, 13.5], "texture": "#7"}, - "south": {"uv": [0, 13, 8, 13.5], "texture": "#7"}, - "west": {"uv": [8, 13, 7, 13.5], "texture": "#7"}, - "up": {"uv": [8, 11, 16, 13], "texture": "#7"}, - "down": {"uv": [8, 11, 16, 13], "rotation": 180, "texture": "#7"} + "north": {"uv": [0, 9, 16, 12], "texture": "#block"}, + "east": {"uv": [9, 8, 7.5, 10], "rotation": 270, "texture": "#base"}, + "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "west": {"uv": [9, 8, 7.5, 10], "rotation": 270, "texture": "#base"}, + "up": {"uv": [0, 5, 16, 9], "rotation": 180, "texture": "#block"}, + "down": {"uv": [0, 12, 16, 16], "rotation": 180, "texture": "#block"} } }, { "from": [1, 8, 11], - "to": [15, 15, 14], + "to": [15, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { - "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} + "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, + "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [0.5, 6, 4, 7.5], "rotation": 90, "texture": "#back"}, + "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#back"} } }, { "name": "Back", - "from": [2.1, 1.9, 14], - "to": [13.9, 13.95, 18.1], + "from": [2.05, 2, 14], + "to": [13.95, 13.95, 18], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, "faces": { - "north": {"uv": [0, 7.5, 6, 13.5], "texture": "#3"}, - "east": {"uv": [0, 0, 12, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [6, 8, 12, 14], "texture": "#3"}, - "west": {"uv": [0, 0, 12, 4], "rotation": 270, "texture": "#6"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, 2.9, 11.9], - "to": [13.9, 13.95, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, - "faces": { - "east": {"uv": [2.5, 0.5, 8, 1.5], "rotation": 270, "texture": "#5"}, - "west": {"uv": [2.5, 1.5, 8, 0.5], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 1.5, 6, 0.5], "texture": "#6"} + "north": {"uv": [0, 0, 6, 6], "texture": "#base"}, + "east": {"uv": [8, 2, 12, 14], "texture": "#redstone"}, + "south": {"uv": [6, 0, 12, 6], "texture": "#base"}, + "west": {"uv": [8, 2, 12, 14], "rotation": 180, "texture": "#redstone"}, + "up": {"uv": [8, 2, 12, 14], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [8, 2, 12, 14], "rotation": 90, "texture": "#redstone"} } }, { "name": "RearBackPlate", - "from": [2, 9.9, 10], - "to": [14, 11.9, 14], + "from": [2, 10, 10], + "to": [14, 12, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, "faces": { - "down": {"uv": [0, 11.5, 6, 14], "texture": "#3"} + "down": {"uv": [0, 0, 6, 2.5], "rotation": 180, "texture": "#base"} + } + }, + { + "from": [0, 0, 12], + "to": [16, 16, 18], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 0, 12]}, + "faces": { + "north": {"uv": [0, 0, 8, 8], "texture": "#direction"}, + "east": {"uv": [11, 0, 14, 8], "rotation": 180, "texture": "#direction"}, + "south": {"uv": [0, 8, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [11, 0, 14, 8], "texture": "#direction"}, + "up": {"uv": [11, 0, 14, 7.5], "rotation": 90, "texture": "#direction"}, + "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + } + }, + { + "from": [2, 0, 18], + "to": [14, 10, 12], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 0, 12]}, + "faces": { + "east": {"uv": [11, 11, 14, 16], "texture": "#base"}, + "west": {"uv": [13, 11, 16, 16], "texture": "#base"}, + "up": {"uv": [11, 9, 14, 15], "rotation": 270, "texture": "#base"} } } ], @@ -127,24 +86,30 @@ { "name": "block_retracted", "origin": [8, 8, 8], + "color": 0, "children": [ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ { "name": "FrontSection", "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5] + "color": 0, + "children": [0, 1] }, { "name": "Base", "origin": [9, -4, 8], - "children": [6, 7, 8] + "color": 0, + "children": [2, 3] } ] } ] - } + }, + 4, + 5 ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical.json b/src/main/resources/assets/create/models/block/funnel/block_vertical.json index e72ebfa9d..e727afeeb 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical.json @@ -2,73 +2,24 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "7": "create:block/brass_funnel_plating", - "8": "create:block/brass_storage_block", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed", - "2_2": "create:block/brass_funnel_pull" + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_pull", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "open": "create:block/funnel_closed", + "particle": "create:block/funnel/brass_funnel_frame", + "frame": "create:block/funnel/brass_funnel_frame" }, "elements": [ - { - "name": "LeftWall", - "from": [0, 4, 0], - "to": [2, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "south": {"uv": [0, 0, 2, 6], "texture": "#2_2"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#8"}, - "down": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "LeftWall", - "from": [14, 4, 0], - "to": [16, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 0, 6], "rotation": 180, "texture": "#2_2"}, - "east": {"uv": [0, 6, 16, 0], "rotation": 180, "texture": "#2_2"}, - "south": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 0], - "to": [14, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#8"}, - "down": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 14], - "to": [14, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 18]}, - "faces": { - "south": {"uv": [14, 0, 2, 6], "texture": "#2_2"}, - "up": {"uv": [2, 16, 14, 14], "rotation": 180, "texture": "#8"}, - "down": {"uv": [14, 14, 16, 2], "rotation": 270, "texture": "#8"} - } - }, { "from": [1, 1, 1], "to": [15, 4, 15], "rotation": {"angle": 0, "axis": "y", "origin": [7, -6, 10]}, "faces": { - "north": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "east": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "west": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#8"} + "north": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "east": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "south": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "west": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [1, 1, 15, 15], "rotation": 270, "texture": "#frame"} } }, { @@ -76,7 +27,7 @@ "to": [2, 10, 14], "rotation": {"angle": 22.5, "axis": "z", "origin": [2, 10, 8]}, "faces": { - "east": {"uv": [2, 2, 14, 7], "texture": "#9"} + "east": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { @@ -84,7 +35,7 @@ "to": [15, 10, 14], "rotation": {"angle": -22.5, "axis": "z", "origin": [14, 10, 8]}, "faces": { - "west": {"uv": [2, 2, 14, 7], "texture": "#9"} + "west": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { @@ -92,7 +43,7 @@ "to": [14, 10, 15], "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14]}, "faces": { - "north": {"uv": [2, 2, 14, 7], "texture": "#9"} + "north": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { @@ -100,15 +51,27 @@ "to": [14, 10, 2], "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 2]}, "faces": { - "south": {"uv": [2, 2, 14, 7], "texture": "#9"} + "south": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { "from": [3, 5, 3], - "to": [13, 6, 13], + "to": [13, 6.3, 13], "rotation": {"angle": 0, "axis": "y", "origin": [11, 13, 11]}, "faces": { - "up": {"uv": [3, 3, 13, 13], "texture": "#10"} + "up": {"uv": [3, 3, 13, 13], "texture": "#open"} + } + }, + { + "from": [0, 4, 0], + "to": [16, 10, 16], + "faces": { + "north": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "east": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "south": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "west": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#frame"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } }, { @@ -117,65 +80,47 @@ "to": [14.075, 2, 14.075], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0.025, 8]}, "faces": { - "north": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "east": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "south": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "west": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "down": {"uv": [6, 8, 12, 14], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, 2, 2.05], - "to": [13.9, 4.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -6, 24.1]}, - "faces": { - "east": {"uv": [2.5, 1.5, 8, 0.5], "texture": "#5"}, - "west": {"uv": [2.5, 0.5, 8, 1.5], "rotation": 180, "texture": "#5"} + "north": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "east": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "south": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "west": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "down": {"uv": [6, 0, 12, 6], "rotation": 180, "texture": "#base"} } }, { "from": [5.05, -0.95, 0.05], "to": [10.95, 4, 2], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "color": 5, "faces": { - "north": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "east": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "west": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "texture": "#7"} + "north": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#missing"}, + "east": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#missing"}, + "west": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#missing"}, + "down": {"uv": [2.5, 11.5, 5.5, 12.5], "texture": "#missing"} } }, { - "from": [5.05, -0.95, 14], - "to": [10.95, 4, 15.95], + "from": [0, -1, 5], + "to": [16, 4, 11], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, "faces": { - "east": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "south": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "west": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "rotation": 180, "texture": "#7"} + "north": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "east": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, + "south": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "west": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, + "down": {"uv": [8, 3, 0, 6], "texture": "#direction"} } }, { - "from": [14, -0.95, 5.05], - "to": [15.95, 4, 10.95], + "from": [5, -1, 0], + "to": [11, 4, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, "faces": { - "north": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "east": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "south": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "rotation": 270, "texture": "#7"} - } - }, - { - "from": [0.05, -0.95, 5.05], - "to": [2, 4, 10.95], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, - "faces": { - "north": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "south": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "west": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "rotation": 90, "texture": "#7"} + "north": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, + "east": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "south": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, + "west": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "down": {"uv": [8, 3, 0, 6], "rotation": 90, "texture": "#direction"} } } ], @@ -183,20 +128,24 @@ { "name": "block_retracted", "origin": [8, 8, 8], + "color": 0, "children": [ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ { "name": "FrontSection", "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6] }, { "name": "Base", "origin": [9, -4, 8], - "children": [10, 11] + "color": 0, + "children": [7] } ] } @@ -205,7 +154,8 @@ { "name": "Item Filter", "origin": [8, 0, 8], - "children": [12, 13, 14, 15] + "color": 0, + "children": [8, 9, 10] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json index 6d16d099c..f5e0e2692 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json @@ -2,72 +2,24 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "8": "create:block/brass_storage_block", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed", - "2_2": "create:block/brass_funnel_pull" + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_pull", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "open": "create:block/funnel_closed", + "particle": "create:block/funnel/brass_funnel_frame", + "frame": "create:block/funnel/brass_funnel_frame" }, "elements": [ - { - "name": "LeftWall", - "from": [0, 4, 0], - "to": [2, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "south": {"uv": [0, 0, 2, 6], "texture": "#2_2"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#8"}, - "down": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "LeftWall", - "from": [14, 4, 0], - "to": [16, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 0, 6], "rotation": 180, "texture": "#2_2"}, - "east": {"uv": [0, 6, 16, 0], "rotation": 180, "texture": "#2_2"}, - "south": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 0], - "to": [14, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#8"}, - "down": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 14], - "to": [14, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 18]}, - "faces": { - "south": {"uv": [14, 0, 2, 6], "texture": "#2_2"}, - "up": {"uv": [2, 16, 14, 14], "rotation": 180, "texture": "#8"}, - "down": {"uv": [14, 14, 16, 2], "rotation": 270, "texture": "#8"} - } - }, { "from": [1, 1, 1], "to": [15, 4, 15], "rotation": {"angle": 0, "axis": "y", "origin": [7, -6, 10]}, "faces": { - "north": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "east": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "west": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#8"} + "north": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "east": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "south": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "west": {"uv": [1, 1, 4, 15], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [1, 1, 15, 15], "rotation": 270, "texture": "#frame"} } }, { @@ -75,7 +27,7 @@ "to": [2, 10, 14], "rotation": {"angle": 22.5, "axis": "z", "origin": [2, 10, 8]}, "faces": { - "east": {"uv": [2, 2, 14, 7], "texture": "#9"} + "east": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { @@ -83,7 +35,7 @@ "to": [15, 10, 14], "rotation": {"angle": -22.5, "axis": "z", "origin": [14, 10, 8]}, "faces": { - "west": {"uv": [2, 2, 14, 7], "texture": "#9"} + "west": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { @@ -91,7 +43,7 @@ "to": [14, 10, 15], "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14]}, "faces": { - "north": {"uv": [2, 2, 14, 7], "texture": "#9"} + "north": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { @@ -99,15 +51,27 @@ "to": [14, 10, 2], "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 2]}, "faces": { - "south": {"uv": [2, 2, 14, 7], "texture": "#9"} + "south": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { "from": [3, 5, 3], - "to": [13, 6, 13], + "to": [13, 6.3, 13], "rotation": {"angle": 0, "axis": "y", "origin": [11, 13, 11]}, "faces": { - "up": {"uv": [3, 3, 13, 13], "texture": "#10"} + "up": {"uv": [3, 3, 13, 13], "texture": "#open"} + } + }, + { + "from": [0, 4, 0], + "to": [16, 10, 16], + "faces": { + "north": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "east": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "south": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "west": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#frame"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } }, { @@ -116,21 +80,11 @@ "to": [14.075, 2, 14.075], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0.025, 8]}, "faces": { - "north": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "east": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "south": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "west": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "down": {"uv": [6, 8, 12, 14], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, 2, 2.05], - "to": [13.9, 4.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -6, 24.1]}, - "faces": { - "east": {"uv": [2.5, 1.5, 8, 0.5], "texture": "#5"}, - "west": {"uv": [2.5, 0.5, 8, 1.5], "rotation": 180, "texture": "#5"} + "north": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "east": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "south": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "west": {"uv": [9, 9, 11, 15], "rotation": 270, "texture": "#base"}, + "down": {"uv": [6, 0, 12, 6], "rotation": 180, "texture": "#base"} } } ], @@ -138,29 +92,28 @@ { "name": "block_retracted", "origin": [8, 8, 8], + "color": 0, "children": [ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ { "name": "FrontSection", "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + "color": 0, + "children": [0, 1, 2, 3, 4, 5, 6] }, { "name": "Base", "origin": [9, -4, 8], - "children": [10, 11] + "color": 0, + "children": [7] } ] } ] - }, - { - "name": "Item Filter", - "origin": [8, 0, 8], - "children": [] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/item.json b/src/main/resources/assets/create/models/block/funnel/item.json index 8a9560327..73e46d81c 100644 --- a/src/main/resources/assets/create/models/block/funnel/item.json +++ b/src/main/resources/assets/create/models/block/funnel/item.json @@ -3,86 +3,22 @@ "parent": "block/block", "texture_size": [32, 32], "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" + "back": "create:block/funnel/funnel_back", + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block", + "block": "create:block/brass_block" }, "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 8], - "to": [16, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [14, 10, 16, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 8], - "to": [2, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 10, 2, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [14, 0, 8], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 8], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, 10, 8], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"} - } - }, { "name": "Top", "from": [2, -2, 12], "to": [14, 10, 14], "rotation": {"angle": 0, "axis": "y", "origin": [6, -14, 8]}, "faces": { - "north": {"uv": [0, 8, 6, 14], "texture": "#3"}, - "south": {"uv": [9, 3, 15, 9.5], "texture": "#7"} + "north": {"uv": [0, 0, 6, 6], "texture": "#base"}, + "south": {"uv": [9, 3, 15, 9.5], "texture": "#missing"} } }, { @@ -91,10 +27,10 @@ "to": [16, -3, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, "faces": { - "north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"}, - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} + "north": {"uv": [8, 8, 9, 8.5], "rotation": 90, "texture": "#base"}, + "east": {"uv": [8, 12, 9, 15], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 12.5, 9, 15.5], "rotation": 90, "texture": "#base"}, + "down": {"uv": [0, 8, 1, 14], "texture": "#block"} } }, { @@ -103,35 +39,56 @@ "to": [1, -3, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, "faces": { - "north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"}, - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} + "north": {"uv": [8, 15.5, 9, 16], "rotation": 90, "texture": "#base"}, + "east": {"uv": [8, 11.5, 9, 8.5], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 12, 9, 9], "rotation": 90, "texture": "#base"}, + "down": {"uv": [15, 8, 16, 14], "texture": "#block"} + } + }, + { + "from": [0, -3, 8], + "to": [16, 16, 14], + "faces": { + "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, + "east": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + } + }, + { + "from": [2, -3, 14], + "to": [14, 10, 8], + "faces": { + "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, + "west": {"uv": [13, 9.5, 16, 16], "texture": "#base"}, + "up": {"uv": [11, 9.5, 14, 15.5], "rotation": 270, "texture": "#base"} } }, { "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], + "from": [2.05, -2, 14], + "to": [13.95, 13.95, 18.1], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, "faces": { - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} + "east": {"uv": [0, 0, 4, 16], "texture": "#redstone"}, + "south": {"uv": [0, 8, 6, 16], "texture": "#base"}, + "west": {"uv": [0, 0, 4, 16], "rotation": 180, "texture": "#redstone"}, + "up": {"uv": [8, 2, 12, 14], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [8, 2, 12, 14], "rotation": 90, "texture": "#redstone"} } }, { "name": "RearBackPlate", "from": [1, -5, 10], - "to": [15, -2, 16.05], + "to": [15, -2, 16], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 10, 15, 16], "texture": "#particle"}, - "down": {"uv": [8.5, 13, 15.5, 16], "texture": "#7"} + "north": {"uv": [1, 7, 15, 10], "texture": "#block"}, + "south": {"uv": [7.5, 8.5, 9, 15.5], "rotation": 90, "texture": "#base"}, + "up": {"uv": [1, 15, 15, 16], "rotation": 180, "texture": "#block"}, + "down": {"uv": [1, 10, 15, 16], "rotation": 180, "texture": "#block"} } }, { @@ -140,11 +97,11 @@ "to": [16, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { - "east": {"uv": [0, 14.5, 1, 16], "texture": "#7"}, - "south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"}, - "west": {"uv": [7, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} + "east": {"uv": [7.5, 15, 9, 16], "rotation": 90, "texture": "#base"}, + "south": {"uv": [7.5, 8, 9, 8.5], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7, 14.5, 8, 16], "texture": "#missing"}, + "up": {"uv": [16, 14, 15, 16], "texture": "#block"}, + "down": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#block"} } }, { @@ -153,22 +110,22 @@ "to": [1, -2, 16.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { - "east": {"uv": [8, 14.5, 7, 16], "texture": "#7"}, - "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, - "west": {"uv": [1, 14.5, 0, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} + "east": {"uv": [8, 14.5, 7, 16], "texture": "#missing"}, + "south": {"uv": [7.5, 15.5, 9, 16], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7.5, 9, 9, 8], "rotation": 90, "texture": "#base"}, + "up": {"uv": [1, 14, 0, 16], "texture": "#block"}, + "down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#block"} } }, { "from": [1, -2, 14], - "to": [15, 15, 15], + "to": [15, 14.95, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, "faces": { - "east": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 6.5, 6], "rotation": 90, "texture": "#3"} + "east": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, + "south": {"uv": [7.5, 0, 16, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [7.5, 5.5, 16, 6], "rotation": 90, "texture": "#back"}, + "up": {"uv": [8, 0, 8.5, 6], "rotation": 90, "texture": "#back"} } }, { @@ -177,12 +134,12 @@ "to": [14, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} + "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, + "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} } }, { @@ -191,12 +148,12 @@ "to": [11, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-27.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} + "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, + "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} } }, { @@ -205,12 +162,12 @@ "to": [8, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-30.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} + "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, + "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} } }, { @@ -219,12 +176,12 @@ "to": [5, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-33.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} + "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, + "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} } } ], @@ -268,38 +225,46 @@ { "name": "BeltFunnel", "origin": [9, -4, 8], + "color": 0, "children": [ { "name": "FrontSection", "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7] + "color": 0, + "children": [0, 1, 2, 3, 4] }, { "name": "Base", "origin": [9, -4, 8], - "children": [8, 9, 10, 11] + "color": 0, + "children": [5, 6, 7, 8] } ] - }, 12, + }, + 9, { "name": "flap", "origin": [8, 8, 8], + "color": 0, + "children": [10] + }, + { + "name": "flap", + "origin": [8, 8, 8], + "color": 0, + "children": [11] + }, + { + "name": "flap", + "origin": [8, 8, 8], + "color": 0, + "children": [12] + }, + { + "name": "flap", + "origin": [8, 8, 8], + "color": 0, "children": [13] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [14] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [15] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [16] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/andesite_block.png b/src/main/resources/assets/create/textures/block/andesite_block.png new file mode 100644 index 0000000000000000000000000000000000000000..53724fc0be8c71c4566d3224b325399db2c1b79e GIT binary patch literal 752 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 delta 210 zcmV;@04@KAGU5S{7=Hu<0002(-QrRJ000DMK}|sb0I`n?{9y$E001FSOjJek!EMv8 zTf~=3yp2Y#gg&EuIGA=ciCrv$R48~3`N2B zHO?&&+>n835?Y}wDmWk^vqeZGc6AL_P}zPr2y|?I(IDo>AWL-URAb0}J~u-VH3LIp zz0YZhQv*zq^>W83uOTo`zBpL2N{O4`(H*ru*J+1rnkkP;-9f(K4~^j`Se<1G>i_@% M07*qoM6N<$f(sQ-Z~y=R diff --git a/src/main/resources/assets/create/textures/block/brass_casing.png b/src/main/resources/assets/create/textures/block/brass_casing.png index a5f88ba6648d17348821843351c6a8eb81eb4c96..3d4580fe07dfb059b6cd05357a8cb78e4077b694 100644 GIT binary patch literal 6481 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 M07*qoM6N<$f&rysPXGV_ diff --git a/src/main/resources/assets/create/textures/block/brass_storage_block.png b/src/main/resources/assets/create/textures/block/brass_storage_block.png deleted file mode 100644 index 7c5c69ba5b0f937e09cd0f6975c0f6a66b85df93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFs*?-eWK)K(dt1&#IT4h$zl7>?)dWK3kAwkiI==4o@B=QUj{R!uo+ymCvjtZq~O zPBlgM`SPmEHpiMP6@NBs&DekK%&7_PEB2Ozt-mFAH$k)ffc!RorSm7M&&vR9WbkzL Kb6Mw<&;$U+F-{Bs diff --git a/src/main/resources/assets/create/textures/block/crate_brass.png b/src/main/resources/assets/create/textures/block/crate_brass.png deleted file mode 100644 index f47739e6631d4bc2242fd79b6fbaefc97ce9a97f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmV!$mMy5KSN#0a9+F zsvt1HmWS|&>R`sw*259&x-9F8o(H+iEX|K zxs`t_?HB>Z?hsG_Y(axILBTQvq6`$wj#sSfeO-bDYR4sB$D_%h-SUx6I zIwDgz8c;YPO*kP=H6Bkg7)diANHZNsF&arP7fCJ_L@yjfFB(KG7ep)-Kr9zNDHS~_ z6+S5vLnsP5BoR9!4nHCYIUx)*Ar3ho2Q(lHG#?Ex9u6uR3n>~5E*SzU83-sC3M>}{ zD-{AM6aps`0VEOvB@qB45da|%03Qzm9u5H=3;-Gn0LRB}`v3p{0d!JMQvg8b*k%9# z0n155K~#9!Vjv7S0aTBH#>7AngI$ZiU=a*J3}DRrzu*6jQ8ez7-AyF=Jbz#Xe6Iwq z>-W3B%KY#9h7mxZRo#^dqws3YgPK68bbNpn_R--tP+}2CWe6*r$Q-q5V{JqCHYPI4 z&~R@twfu@4)__HR+H51M-?NlFz2LWsu zYXV8*u0WuXL_juyf3ac%Y%m5;0T*7tKnBnTlu1TA4Z|=LRn@(@)r{6L27ofc0>%LX zfC2yihhbYx)u1m`)$8Q=>Y$eVgwRS7@GXu-h(Nt%9N$|~WcQ)#-GUII>#ev!Y8miT z>TjUy=I*-AibJV{+b=Dt4bddC)#TM#RpeK+M_j&D%}FqP*xCQh=JaCY23TOFyqZ3e zpYyzZJtprO6YC2NJPXI}F zLWb?DIusKfl(Fud0h%pz1EZ9nUi7mv{UT0qUV`;YZm{#f?2QHfKYxVz0Y`ILUV!Wr QUH||907*qoM6N<$g0A}-w*UYD diff --git a/src/main/resources/assets/create/textures/block/funnel/andesite_funnel.png b/src/main/resources/assets/create/textures/block/funnel/andesite_funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4887d1f2b0befa6095ecf4f8a02178270a13ad5 GIT binary patch literal 8648 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 ATL1t6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_frame.png b/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3ff2c4089dad8ee5a46b519f8c2bc74ec636d7 GIT binary patch literal 5725 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 F{|O<`$us}} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_powered.png b/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_powered.png new file mode 100644 index 0000000000000000000000000000000000000000..19f31bbf76da3a8c77d36174b3355b9058acfca8 GIT binary patch literal 6444 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_pull.png b/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_pull.png new file mode 100644 index 0000000000000000000000000000000000000000..59f9e487aeead2a28662477d4404da4e42f80854 GIT binary patch literal 6823 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_unpowered.png b/src/main/resources/assets/create/textures/block/funnel/andesite_funnel_unpowered.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ce955879e6c7c0808756555c994ac1fc8e82b9 GIT binary patch literal 6335 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 TNn8%JKp4ZthhDWND(!y&=;nlj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..a49b74abe675160eb2787005674ff11de3aa35e1 GIT binary patch literal 8280 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 N002ovPDHLkV1g)V`o{nO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_neutral.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_neutral.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b3f49ac1370729e1096276e52f9936508ef347 GIT binary patch literal 752 zcmVEX>4Tx04R}tkv&MmP!xqvQ$;BihgJ|#$WWauh>AE$6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRRg44N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`T7B{t2J_lVn(I`??*IS*24YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j&VD3@9tvMMJ#+000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0002TNklFH#Q!{EpcG_HnZk(7 zXJKGqU=Y>dLv_F%1_qBDHx#iQQ+8pfdwt^*12+AH#E}6L!vKR(2e4p`8x{eE9aDB; zD8?3tRB?c)1|LIcP8%aB8dp!L`cDl9(L4&S+!0{7az|j0rvYmDl!1YPK}Y2Sia0ud z_=W%>pNEX>4Tx04R}tkv&MmP!xqvQ$;BihgJ|#$WWauh>AE$6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRRg44N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`T7B{t2J_lVn(I`??*IS*24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j&VD4Hp-$Hh(by007!aL_t(I%e|Aa4Z<)GMPCqg zsG^j#DPe+CjKCJ2zymPB35gk)f|3f#RFP65sOV8>>~KU!M1;g|&OY1!o-JRpb*{~d zl&EWU2jDD12^2sB%vC%BI0wKKLs^ls5)VKfayn+JSZ8o^8%|-o63^Og5`aEo%OjW*D)Y^eb9UT!{yz%n02V444y-~v>? z5ahsNh#*$@MDP&beQ%Q>R@jaBiANx@x>3)E^wv!M1w@z`?R)`Fz#_Es6T)Xxi9j3y Q3jhEB07*qoM6N<$f;*`*3IG5A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_pull.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_pull.png new file mode 100644 index 0000000000000000000000000000000000000000..443a9aec79e2eb78efc38e16b428ba488cb777aa GIT binary patch literal 804 zcmV+<1Ka$GP)EX>4Tx04R}tkv&MmP!xqvQ$;BihgJ|#$WWauh>AE$6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRRg44N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`T7B{t2J_lVn(I`??*IS*24YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j&VD3>Fixg5X{N000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0002{NklFH#Q!{EpcG_HnZk(7 zXJKGqU=Y>dLv_F%1_qBDHx#iQQ+8pfdwt^*12+AH#E}6L!vKTf?SLzH1PH2O!5TL# z0t`E*?7~otEe`Pkj~q9K9aDBO=%{?a?*LH^K8DboHbznmUp=MjKg>Z_?g-$tgpebs z5(OSPZg_(mpFGvl03k=vB@yCs1kIxWA0U(nnP_PlA0b)u{nmGWy-XFBJAq%~Nnr03lHmFBtgJjeJqYfZC8@|5ri2+*=iB@@^V9$u2 iju=e?gC`LV6aWAK&1g__VOL%N0000EX>4Tx04R}tkv&MmP!xqvQ$;BihgJ|#$WWauh>AE$6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRRg44N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`T7B{t2J_lVn(I`??*IS*24YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j&VD3?~to(T2bP000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0002_NklFH#Q!{EpcG_HnZk(7 zXJKGqU=Y>dLv_F%1_qBDHx#iQQ+8pfdwt^*12+AH#E}6L!vKSk<$ps;A05QX=5bC(A86_{$q2{l{*3q;tZcKET>Bp zpj$@Ba;iFj7|Uqp09=;qsC>Yhmgt%b2swg@9+u#fXQG!+byPmkJ_?A5bDF0CTt3AG zSZJ95i77d0<^c41f6&&3Ec6O$nmK^jpdM|Ij5=V{0eG|F>l>dKu=S8=mG=qujOgiz g(KIl465&7r0Fd)%2t`r!@&Et;07*qoM6N<$g1dH5SpWb4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_unpowered.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_unpowered.png new file mode 100644 index 0000000000000000000000000000000000000000..c339a57942194b2321e842cdd3426e0fd2de1f91 GIT binary patch literal 725 zcmV;`0xJE9P)EX>4Tx04R}tkv&MmP!xqvQ$;BihgJ|#$WWauh>AE$6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRRg44N3P2*zi}=)Ebz>*kx9)Hhl#~v2g@DIN`^{2O&n2Fjq-)8 z%L?Z$&T6H`T7B{t2J_lVn(I`??*IS*24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j&VD4HW~2+R4rU007ZRL_t(I%hi)H3c@fHKwrQ~ zXt6`lBlJRg0=L%PdVu0y*iZN$q)a(ANXP$MamCc z8j8FGAd`{_a7N&vUa_7+}EjhRM?05A=k`~7C6 zGAY{vjb0yy`Un-^e0Z!IHaL0#r~a^a*bFbGfoF8ku^Eo~7_@oyyMdYiGlK_$qfwxj z!8~08aEKDSfvrOqCqUS?Q9pmZOlBgJl5sufNQ)J4)7JS3Ob%a**@Y?K00000NkvXX Hu0mjft_3Zv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/funnel_back.png b/src/main/resources/assets/create/textures/block/funnel/funnel_back.png new file mode 100644 index 0000000000000000000000000000000000000000..d7db70c40be78bb20f9e8ad34115b21f7c8c99b4 GIT binary patch literal 7565 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 J3avK8{TGKf!|DJ4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/funnel/funnel_closed.png b/src/main/resources/assets/create/textures/block/funnel/funnel_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..1475a7bd6e87b7e0dcc1772623e3b4e5ba54f5ec GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFqbkr5G|9v&_(E_Sw#7UtHbCKkpsr90xrZjBfNK1|55MN{^A{iUZFPW`^|l{0EZu SG=~8-GkCiCxvX^+a&oe=vVwwwNmoAw097!S1o;IsI6S+N2IN?Ix;TbZ z+)6&cKI8D|)3GcKJlD?5G+u7OAem#_$Z#Zq-H_{pafCw;gTUe9XJ=L_#P$FUQ{?)w bhK1qxJ4uFn#TwgyrZ9NA`njxgN@xNAsSPtb literal 0 HcmV?d00001 From f04da385839fbb2e6170ac37a492cc899fcae12f Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sat, 22 Oct 2022 00:27:33 +0200 Subject: [PATCH 009/122] Firing up the funnel generator --- src/generated/resources/.cache/cache | 126 +++++++++--------- .../blockstates/andesite_alloy_block.json | 7 + .../blockstates/andesite_belt_funnel.json | 32 ++--- .../create/blockstates/andesite_funnel.json | 24 ++-- .../create/blockstates/brass_belt_funnel.json | 32 ++--- .../create/blockstates/brass_funnel.json | 24 ++-- .../resources/assets/create/lang/en_ud.json | 1 + .../resources/assets/create/lang/en_us.json | 1 + .../assets/create/lang/unfinished/de_de.json | 3 +- .../assets/create/lang/unfinished/es_cl.json | 3 +- .../assets/create/lang/unfinished/es_es.json | 3 +- .../assets/create/lang/unfinished/fr_fr.json | 3 +- .../assets/create/lang/unfinished/it_it.json | 3 +- .../assets/create/lang/unfinished/ja_jp.json | 3 +- .../assets/create/lang/unfinished/ko_kr.json | 3 +- .../assets/create/lang/unfinished/nl_nl.json | 3 +- .../assets/create/lang/unfinished/pl_pl.json | 3 +- .../assets/create/lang/unfinished/pt_br.json | 3 +- .../assets/create/lang/unfinished/pt_pt.json | 3 +- .../assets/create/lang/unfinished/ro_ro.json | 3 +- .../assets/create/lang/unfinished/ru_ru.json | 3 +- .../assets/create/lang/unfinished/uk_ua.json | 3 +- .../assets/create/lang/unfinished/zh_cn.json | 3 +- .../assets/create/lang/unfinished/zh_tw.json | 3 +- .../models/block/andesite_alloy_block.json | 6 + .../block/andesite_belt_funnel_extended.json | 13 -- ...andesite_belt_funnel_extended_powered.json | 13 +- ...desite_belt_funnel_extended_unpowered.json | 10 ++ .../block/andesite_belt_funnel_pulling.json | 13 -- .../andesite_belt_funnel_pulling_powered.json | 13 +- ...ndesite_belt_funnel_pulling_unpowered.json | 10 ++ .../block/andesite_belt_funnel_pushing.json | 13 -- .../andesite_belt_funnel_pushing_powered.json | 13 +- ...ndesite_belt_funnel_pushing_unpowered.json | 10 ++ .../block/andesite_belt_funnel_retracted.json | 13 -- ...ndesite_belt_funnel_retracted_powered.json | 13 +- ...esite_belt_funnel_retracted_unpowered.json | 10 ++ .../andesite_funnel_horizontal_pull.json | 11 -- ...desite_funnel_horizontal_pull_powered.json | 11 +- ...site_funnel_horizontal_pull_unpowered.json | 10 ++ .../andesite_funnel_horizontal_push.json | 11 -- ...desite_funnel_horizontal_push_powered.json | 11 +- ...site_funnel_horizontal_push_unpowered.json | 10 ++ ...esite_funnel_vertical_filterless_pull.json | 13 -- ...nnel_vertical_filterless_pull_powered.json | 14 +- ...el_vertical_filterless_pull_unpowered.json | 11 ++ ...esite_funnel_vertical_filterless_push.json | 13 -- ...nnel_vertical_filterless_push_powered.json | 14 +- ...el_vertical_filterless_push_unpowered.json | 11 ++ .../block/brass_belt_funnel_extended.json | 13 -- .../brass_belt_funnel_extended_powered.json | 11 +- .../brass_belt_funnel_extended_unpowered.json | 10 ++ .../block/brass_belt_funnel_pulling.json | 13 -- .../brass_belt_funnel_pulling_powered.json | 11 +- .../brass_belt_funnel_pulling_unpowered.json | 10 ++ .../block/brass_belt_funnel_pushing.json | 13 -- .../brass_belt_funnel_pushing_powered.json | 11 +- .../brass_belt_funnel_pushing_unpowered.json | 10 ++ .../block/brass_belt_funnel_retracted.json | 13 -- .../brass_belt_funnel_retracted_powered.json | 11 +- ...brass_belt_funnel_retracted_unpowered.json | 10 ++ .../block/brass_funnel_horizontal_pull.json | 11 -- .../brass_funnel_horizontal_pull_powered.json | 11 +- ...rass_funnel_horizontal_pull_unpowered.json | 10 ++ .../block/brass_funnel_horizontal_push.json | 11 -- .../brass_funnel_horizontal_push_powered.json | 11 +- ...rass_funnel_horizontal_push_unpowered.json | 10 ++ .../block/brass_funnel_vertical_pull.json | 13 -- .../brass_funnel_vertical_pull_powered.json | 14 +- .../brass_funnel_vertical_pull_unpowered.json | 11 ++ .../block/brass_funnel_vertical_push.json | 13 -- .../brass_funnel_vertical_push_powered.json | 14 +- .../brass_funnel_vertical_push_unpowered.json | 11 ++ .../models/item/andesite_alloy_block.json | 3 + .../create/models/item/andesite_funnel.json | 11 +- .../create/models/item/brass_funnel.json | 11 +- .../blocks/andesite_alloy_block.json | 20 +++ .../forge/tags/blocks/storage_blocks.json | 1 + .../blocks/storage_blocks/andesite_alloy.json | 6 + .../data/forge/tags/items/storage_blocks.json | 1 + .../items/storage_blocks/andesite_alloy.json | 6 + .../tags/blocks/mineable/pickaxe.json | 1 + .../java/com/simibubi/create/AllBlocks.java | 17 ++- .../block/funnel/BeltFunnelGenerator.java | 28 ++-- .../block/funnel/FunnelGenerator.java | 39 +++--- .../block/belt_funnel/block_extended.json | 2 +- .../block/belt_funnel/block_pulling.json | 2 +- .../block/belt_funnel/block_pushing.json | 2 +- .../block/belt_funnel/block_retracted.json | 3 +- .../models/block/funnel/block_horizontal.json | 2 +- .../models/block/funnel/block_vertical.json | 4 +- .../funnel/block_vertical_filterless.json | 4 +- .../textures/block/funnel/andesite_funnel.png | Bin 8648 -> 3878 bytes 93 files changed, 519 insertions(+), 505 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/andesite_alloy_block.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_alloy_block.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push.json create mode 100644 src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_extended.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted.json create mode 100644 src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull.json create mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push.json create mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull.json create mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_unpowered.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_vertical_push.json create mode 100644 src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_unpowered.json create mode 100644 src/generated/resources/assets/create/models/item/andesite_alloy_block.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/andesite_alloy_block.json create mode 100644 src/generated/resources/data/forge/tags/blocks/storage_blocks/andesite_alloy.json create mode 100644 src/generated/resources/data/forge/tags/items/storage_blocks/andesite_alloy.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index e0f94546b..6c5b720b8 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -2,12 +2,13 @@ f0d6baaabda94151134f569246d61a6e710c35a9 assets/create/blockstates/acacia_window_pane.json 6b70306397316d6ebfa1cb07f2308d5c7fce83e0 assets/create/blockstates/adjustable_chain_gearshift.json 9dd79bf5430f674e7d3e3fc7d59edee3d66e241e assets/create/blockstates/analog_lever.json -96097d97028f38d61d64fec7c7095aaf64650db3 assets/create/blockstates/andesite_belt_funnel.json +a891d5abbc133288a9ad377b3ea9adad8ee92972 assets/create/blockstates/andesite_alloy_block.json +47cb4f4629277b467263bd54a44dec45837eb719 assets/create/blockstates/andesite_belt_funnel.json 9999a75c7766781eadb12510a09264600bc846e4 assets/create/blockstates/andesite_casing.json 96bd534d3d84336927fb6512f9848d837d557084 assets/create/blockstates/andesite_encased_cogwheel.json 1673172100317477ca559c32fd91d16b165e0085 assets/create/blockstates/andesite_encased_large_cogwheel.json 9639b901ffdd2ecccab5575c5c9e6c7b5c901e02 assets/create/blockstates/andesite_encased_shaft.json -ca9a629472625abf741f02b94ce4578292fb14a7 assets/create/blockstates/andesite_funnel.json +7c5ac6149a991dfe125be3ae3c27c0c841e11f6c assets/create/blockstates/andesite_funnel.json 73154ab9fe5463116d06d0732f9a1c2fa817dc3f assets/create/blockstates/andesite_ladder.json 3adca59d03198c273f13c21c6058348c9fa71735 assets/create/blockstates/andesite_pillar.json 1d2d8081581e07d9be4b382aede4f2de4401cc6b assets/create/blockstates/andesite_tunnel.json @@ -28,13 +29,13 @@ ec2ab87734acc209e6be3bc4898b1199f819bfd3 assets/create/blockstates/blue_sail.jso 4854d1ef52130a7887aecc60bcaffbd66f0871a8 assets/create/blockstates/blue_seat.json dea175335c5db0abe758cd208dc984c22506a176 assets/create/blockstates/blue_toolbox.json f3697a7d105e5d271f5999b86df071fe5893457c assets/create/blockstates/blue_valve_handle.json -5f57741e500903b70c80d2a72788a25e97387e2e assets/create/blockstates/brass_belt_funnel.json +4b436e4afa3b1734567010788064fee73f69c92e assets/create/blockstates/brass_belt_funnel.json 8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json 577adb030af119fb980ededaa7fc2a3d3ed14220 assets/create/blockstates/brass_encased_cogwheel.json e69a71fdeb5855b2a59a31598f25eaea589c1748 assets/create/blockstates/brass_encased_large_cogwheel.json 288bad07593a8a2c8efaf44bba0ffb0011d36cd3 assets/create/blockstates/brass_encased_shaft.json -adfbd6cc5e44a0f431180aedbe65a19428299d8e assets/create/blockstates/brass_funnel.json +bd8f3073f3208d0116719a25044a91dd46fc11ac assets/create/blockstates/brass_funnel.json f9234ab4324892587c4b0bf38523ee7770072f6b assets/create/blockstates/brass_ladder.json 672eedcd3520c6d39603449165a23be9c612c620 assets/create/blockstates/brass_tunnel.json ffe31d5ad0486949b049cf2060d1f34ef7ceaa82 assets/create/blockstates/brown_nixie_tube.json @@ -565,24 +566,24 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -3054a5519fbf91481b0c9c8160a20679fa9530da assets/create/lang/en_ud.json -c57c7f223e483ec45f7b94a33582f2bf66c4cf60 assets/create/lang/en_us.json -4080736502d1f2367ae70d9aae33ca0314db5bd9 assets/create/lang/unfinished/de_de.json -76227addfbcb0cb33c6851fdcc915b774493b801 assets/create/lang/unfinished/es_cl.json -2cce9e6ef650c78c594d62b96cd3f976dc2affec assets/create/lang/unfinished/es_es.json -ffd78f1c2269cfc95c9cddb81f98500451f1e249 assets/create/lang/unfinished/fr_fr.json -7da0e0a81888382ef09808dc26a0acc00981bfc5 assets/create/lang/unfinished/it_it.json -777e9fcbd341e8b7c1a76400f384a7892cebd84f assets/create/lang/unfinished/ja_jp.json -3efd5341a65b265b015caff7756c93a9e62e24b2 assets/create/lang/unfinished/ko_kr.json -d69eb7e9ada984144b84adcaa66bd58d34392f93 assets/create/lang/unfinished/nl_nl.json -ef1d3c48c5b29618c7c03b862cb414450f61b2b4 assets/create/lang/unfinished/pl_pl.json -fd304a1b08cb1a26a71bf14e03427f3ea347b851 assets/create/lang/unfinished/pt_br.json -02c1b9461cf73901e7c524970fb70bc27cbeb805 assets/create/lang/unfinished/pt_pt.json -5e55fe730dadb7c4cb5f8cac65dd2288c3fc8349 assets/create/lang/unfinished/ro_ro.json -ab0235e297d83f14990c9c11c9ea494cb725c082 assets/create/lang/unfinished/ru_ru.json -2dcd9d1659d59f399b44b2d0e0e7428e248cafca assets/create/lang/unfinished/uk_ua.json -1ec8b3397df54e2af39e3e52c1ffb7c0a11a3b8b assets/create/lang/unfinished/zh_cn.json -6b2ccb147e70ae407da8686b5b989991a11bd802 assets/create/lang/unfinished/zh_tw.json +e7d21b55946bb30c58e6b1cfd3518255833b5463 assets/create/lang/en_ud.json +09c3fa149383dbcb2c1070dd17c8ca4ccf1966e3 assets/create/lang/en_us.json +b7b7ebbf555289d17e847c0221c2227c7b042ffc assets/create/lang/unfinished/de_de.json +13d36e69e4a347dffe84479d363deb9915c71b26 assets/create/lang/unfinished/es_cl.json +0c62f87191d2c2faa2f8ce2a0c23fe522100e885 assets/create/lang/unfinished/es_es.json +983e8025fba6994405f371e3d126d9a319ac62db assets/create/lang/unfinished/fr_fr.json +52d4f689e99161f86690985b2fb70128a209458d assets/create/lang/unfinished/it_it.json +553a4e82130dbc5b87ad6caf1142c19f78876659 assets/create/lang/unfinished/ja_jp.json +032418e5388048fb7b3c1375bb4168f43b704d31 assets/create/lang/unfinished/ko_kr.json +eb8fa78d35ade6ee205dbfcce2553f74a77868a1 assets/create/lang/unfinished/nl_nl.json +df9eb70809f14a0a80bf076be73dd07bf8b34b60 assets/create/lang/unfinished/pl_pl.json +412b329284d6094525f3f68651fc8e3212d33ece assets/create/lang/unfinished/pt_br.json +548d153017ceeae9dd8af3627a24a942628fddcf assets/create/lang/unfinished/pt_pt.json +a9ca34eb5d8dffe035e869210acb791fd3c7f816 assets/create/lang/unfinished/ro_ro.json +c11347776986ac1b6554e0bae19baf5667e87b86 assets/create/lang/unfinished/ru_ru.json +323e79f90c5f7d5dc5e791f7c95798fa32df089b assets/create/lang/unfinished/uk_ua.json +fb7aa2f12a983e098de2422f3ed6a7584d888305 assets/create/lang/unfinished/zh_cn.json +dd1fa10817dab6ad0fc13775a2d21e2cf4214d27 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 @@ -599,14 +600,15 @@ c3fdfa0ef84a598a17b2194fd0ea56fb323441d6 assets/create/models/block/adjustable_c 11c034a7689e3bc96cf54f67fd93bc3839ae19e9 assets/create/models/block/adjustable_chain_gearshift_middle_vertical_powered.json 221b65e4fed640dc77f8ec5fee300f2a199d05b1 assets/create/models/block/adjustable_chain_gearshift_single.json ef644b33e136692c19cf8e79fcd28431b40dbb62 assets/create/models/block/adjustable_chain_gearshift_single_powered.json -10832d276445d8a5f94413de1979349db1364ec4 assets/create/models/block/andesite_belt_funnel_extended.json -d01611179d3ed6c013f4f649127239772cbdeba3 assets/create/models/block/andesite_belt_funnel_extended_powered.json -c862af2b37ccfd0123e9e96a5400be82033bbdd3 assets/create/models/block/andesite_belt_funnel_pulling.json -ed52e27fd7d645c25dc9dc58a44f29be12cb6d5e assets/create/models/block/andesite_belt_funnel_pulling_powered.json -884aaf754de0bfd51690aab6e01f775419728cf7 assets/create/models/block/andesite_belt_funnel_pushing.json -3c8ed64100de95994580a8e6e24c7b72f2332081 assets/create/models/block/andesite_belt_funnel_pushing_powered.json -7b1888eec72c04677a3dfb709b04ad10d08d74d0 assets/create/models/block/andesite_belt_funnel_retracted.json -240230f29d092505d47c83ae59f5c908e4bf4932 assets/create/models/block/andesite_belt_funnel_retracted_powered.json +647aa88fe7f74048b06e61dd092a7ce167f6e7bc assets/create/models/block/andesite_alloy_block.json +953daa66d3befd33edfb62421c01330ff9ecf441 assets/create/models/block/andesite_belt_funnel_extended_powered.json +0e0b6fffad506f7bb9f212becb69b04fdb773372 assets/create/models/block/andesite_belt_funnel_extended_unpowered.json +5be49f276346a4908366426329319366d98c0877 assets/create/models/block/andesite_belt_funnel_pulling_powered.json +3078958b74af612dbb1a5bf18b92c190d63524d6 assets/create/models/block/andesite_belt_funnel_pulling_unpowered.json +eddf206f5fffbf9446461538da9fea70f5d22f0e assets/create/models/block/andesite_belt_funnel_pushing_powered.json +31784901768ebb9322a101710c5b6c16e7185271 assets/create/models/block/andesite_belt_funnel_pushing_unpowered.json +574ece0c5d1877a07e46f0d86add876bf002541f assets/create/models/block/andesite_belt_funnel_retracted_powered.json +2ea98218be00eea0f8b58072f970b4a2d096306d assets/create/models/block/andesite_belt_funnel_retracted_unpowered.json 4e44ccdc5e396c4380a7e59408db50553fa25226 assets/create/models/block/andesite_casing.json 762509cfb8602c6d0d3f959c08ad4934c2b5d8fa assets/create/models/block/andesite_encased_cogwheel.json 314489582d1cde98bc5e4fd4d2f0c9ab3cb731d3 assets/create/models/block/andesite_encased_cogwheel_bottom.json @@ -616,14 +618,14 @@ c8f215c191f46ff1ea6f098ab32c7d27d04cb017 assets/create/models/block/andesite_enc f8f131a53664faa5bd84b61e83d62ed5b367bf1d assets/create/models/block/andesite_encased_large_cogwheel_bottom.json 77b3bbcb47e83f985d68b0ed0344e9f79999e797 assets/create/models/block/andesite_encased_large_cogwheel_top.json 01189fb179863ce1ef524bd5ddd5b4bebd5bbc6b assets/create/models/block/andesite_encased_large_cogwheel_top_bottom.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 -50af1ff6ce9af162d4e438f21952c7215608dc8e assets/create/models/block/andesite_funnel_horizontal_push_powered.json -75c914bf9448e25fd01d597de48375a9782bef36 assets/create/models/block/andesite_funnel_vertical_filterless_pull.json -4d70a221809f5bc598a0a0e98bd152e9ab7a2f7f assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json -a41c7351513a9514dfdc0fc552b646b1d715c977 assets/create/models/block/andesite_funnel_vertical_filterless_push.json -e7931f28887baadd52ac988fc8eeeb84ee6f0d27 assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json +a51ef8eb258251ecd4313d6997ce607b79a23850 assets/create/models/block/andesite_funnel_horizontal_pull_powered.json +fd19670a4504617fcd0ee0a1fb6ebeca9b30cc82 assets/create/models/block/andesite_funnel_horizontal_pull_unpowered.json +aa22be9799a91810fa0068e525dd6961d7af4900 assets/create/models/block/andesite_funnel_horizontal_push_powered.json +5ca7cfe29534b2839b2cefd6ab1047c74f9af079 assets/create/models/block/andesite_funnel_horizontal_push_unpowered.json +f2d6d85ad3e0899855d2c6658484e33ea9d5e2e0 assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json +afa3669c0d80b4eccd839fa08a3c3e884f5dd1f6 assets/create/models/block/andesite_funnel_vertical_filterless_pull_unpowered.json +eeb2637590e8af1342c5494dea7faab0490f2f3e assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json +2c0e1bb2edca1c0315e4b989d1ae58b8fe681d05 assets/create/models/block/andesite_funnel_vertical_filterless_push_unpowered.json ee665cf464ead6135de3f60c7e2ac475af6496d7 assets/create/models/block/andesite_ladder.json 882871d4cd7b4925f300c09d00ba58785b27119e assets/create/models/block/andesite_pillar.json 587491f19767bd682bbef00eaa890d4b8a320b7a assets/create/models/block/andesite_pillar_horizontal.json @@ -663,15 +665,15 @@ c86a455b8e85ef190261718726b344cf15ba1e4f assets/create/models/block/bracket/shaf 8fa9ce896412af894d7c431a50104445d91b1d4d assets/create/models/block/bracket/shaft/ground_wooden.json 3956168840aca9425d3bf240650406c1dbc8ea66 assets/create/models/block/bracket/shaft/wall_metal.json 7aaa2fbdb618e8aab7e0da19a5393e1eaa608623 assets/create/models/block/bracket/shaft/wall_wooden.json -3fac6b1da6a81fc44a1ffe1e13dc6cfe37c3b738 assets/create/models/block/brass_belt_funnel_extended.json -2d10825bfd94419d5dbb4e60187127c4a1ce1526 assets/create/models/block/brass_belt_funnel_extended_powered.json -dfc6250e28e12ff193a45891978ec50c406fc0c2 assets/create/models/block/brass_belt_funnel_pulling.json -5ff7e01c5b65eb210a054556068d75426b547d9b assets/create/models/block/brass_belt_funnel_pulling_powered.json -5409325494780afe32e6e30377314e2992ca4aa5 assets/create/models/block/brass_belt_funnel_pushing.json -e981727fd71e32ea2ecb8e057dfe123f1b940101 assets/create/models/block/brass_belt_funnel_pushing_powered.json -97410a12b7c1461f88fb633f26ff566a0636b627 assets/create/models/block/brass_belt_funnel_retracted.json -bc23a91f300e46761bb14c597fad39c3d414e84d assets/create/models/block/brass_belt_funnel_retracted_powered.json -5adb8b446817eee3a31971d708320c7104d6bbd8 assets/create/models/block/brass_block.json +18048eac6c45e30c47cc7fc964b0986cd033bc00 assets/create/models/block/brass_belt_funnel_extended_powered.json +7870163874d8d2e29e9bed3fcaf5be715d0de541 assets/create/models/block/brass_belt_funnel_extended_unpowered.json +e4894b8cb9dda7aa4b9d035ae16f705459ddf14c assets/create/models/block/brass_belt_funnel_pulling_powered.json +8d86c2f3ddd51dc6b15d1e4ce115f0d7b1e28dda assets/create/models/block/brass_belt_funnel_pulling_unpowered.json +f0a9b05c69e67aa61b88f6db5d818ae191b3aad5 assets/create/models/block/brass_belt_funnel_pushing_powered.json +710f4903e7022761c43f7def240d5aad98389871 assets/create/models/block/brass_belt_funnel_pushing_unpowered.json +e0958b94c40e4aabbcbabd70be8a368eb877dcf9 assets/create/models/block/brass_belt_funnel_retracted_powered.json +5715303e539e6005a347480e52db2c7e6676c716 assets/create/models/block/brass_belt_funnel_retracted_unpowered.json +2b1ca994d2feec8321fdb0388028c20d40326eb7 assets/create/models/block/brass_block.json 2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json 8cb0039684377c27a7fe20bdcacf24f871221478 assets/create/models/block/brass_encased_cogwheel.json c735917634c87b3d289bd912c7ceb465a3cc65b6 assets/create/models/block/brass_encased_cogwheel_bottom.json @@ -681,14 +683,14 @@ c2199a633597a73a1c2d508e5dfe0a7589b02329 assets/create/models/block/brass_encase ed150a9e18889217b7f010412e4317af04af7dc1 assets/create/models/block/brass_encased_large_cogwheel_bottom.json bb4155627c1f189e2e3bc07822d227bb0fc64bc4 assets/create/models/block/brass_encased_large_cogwheel_top.json 421cbc9bcb6511c66ff7122d1800bcd8ab866b2b assets/create/models/block/brass_encased_large_cogwheel_top_bottom.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 -4049bf503ec2ee22412c59e05299de20319b0dc6 assets/create/models/block/brass_funnel_horizontal_push_powered.json -320e377a4380ac637bff2e0535f229c52d886437 assets/create/models/block/brass_funnel_vertical_pull.json -28c2f8ca6403f98b82e3a0eadb608a41490cc96f assets/create/models/block/brass_funnel_vertical_pull_powered.json -c4c46d47854c9a6cf8f410006a35bbc8e599f0d5 assets/create/models/block/brass_funnel_vertical_push.json -fd6f6607a4742fa87dfe1768927a29dc4975ce7a assets/create/models/block/brass_funnel_vertical_push_powered.json +68f57bccd8a7ec0a997ab65aab74103338b0ade0 assets/create/models/block/brass_funnel_horizontal_pull_powered.json +327643126b6b4a93523354ac70b0148d36176c75 assets/create/models/block/brass_funnel_horizontal_pull_unpowered.json +49c2cf87fb273d7e557cfde908e319f7810e333d assets/create/models/block/brass_funnel_horizontal_push_powered.json +f5bc8543b6b6cddeb455a1c20500240de9d837ac assets/create/models/block/brass_funnel_horizontal_push_unpowered.json +c76668b6b61a3f81a08a1eadaa34fa8bfe68f912 assets/create/models/block/brass_funnel_vertical_pull_powered.json +33c07af5f61f89d781037a5841335e4783392fde assets/create/models/block/brass_funnel_vertical_pull_unpowered.json +2d78db12acd90364658b36e8fe7dee7f24ea361b assets/create/models/block/brass_funnel_vertical_push_powered.json +aa81eeb9771e59173ecf635f7c5334ac64c83b6d assets/create/models/block/brass_funnel_vertical_push_unpowered.json 5620cf6b033dbfb3c43d03ddad18c432eb821997 assets/create/models/block/brass_ladder.json 520087db8d479c66f85f3483af813fb668f27503 assets/create/models/block/brass_tunnel/cross.json 347ed67bf3426e323354e2d959fc9563dc7eeecd assets/create/models/block/brass_tunnel/straight.json @@ -1631,11 +1633,12 @@ c695dab3964186a857767b2b4975aebffa86dcf9 assets/create/models/item/acacia_window 564f6245f92ec48a733e34d91b96b1beebbaf44a assets/create/models/item/adjustable_chain_gearshift.json e7759d9b3cd64d2719a58dc35fc75ca65b9e14fa assets/create/models/item/analog_lever.json 2e90c7abfcad12ca656ae253d834fbb799e15277 assets/create/models/item/andesite_alloy.json +2e7cf267efb66404721ac8bf08802de0eb134159 assets/create/models/item/andesite_alloy_block.json 174c9705d25f149052835fdcf7c85626afead90b assets/create/models/item/andesite_casing.json 420020284d01c72a7fb3387750fe1dd2dcfb9550 assets/create/models/item/andesite_encased_cogwheel.json 6e246e91b4ebffd5c45311057feb5d26d1cb8aec 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 +105a9946b9e4d5e949f6d557cfde750227463bff assets/create/models/item/andesite_funnel.json 4c9232a6249ad1ef51a7978a8e642a8c88dda0ab assets/create/models/item/andesite_ladder.json 75b8b00c2418b9660d35a7fabd0774925cf1c02f assets/create/models/item/andesite_pillar.json 795541cf7205d90531a23cd5b388f93a03bbf925 assets/create/models/item/andesite_tunnel.json @@ -1660,7 +1663,7 @@ f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing. 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 +8de90ceb9997f61efc544304fcd919a54db47d41 assets/create/models/item/brass_funnel.json 965f3f992fde899719506fd584f3fbbbf69af93c assets/create/models/item/brass_hand.json d5e8b577aee56671e117a4a2ac93e58680b51949 assets/create/models/item/brass_ingot.json 1f93ec11bd28a3f063f27e8c53fc45d027218560 assets/create/models/item/brass_ladder.json @@ -3395,6 +3398,7 @@ f92b20e0ae4c8808479df3553203c1b5e334cfe3 data/create/advancements/windmill.json 98f71c17409a37a584eed6cb6ee3878efebf3ef6 data/create/loot_tables/blocks/acacia_window_pane.json c5c0b82ab3bcd7ffd1bcb65d00876aaba69363f9 data/create/loot_tables/blocks/adjustable_chain_gearshift.json a4716789704bb30cf1c518b04c61661ba6289efa data/create/loot_tables/blocks/analog_lever.json +03eadc2a4695b505e92c1a688dc7af619fd364c0 data/create/loot_tables/blocks/andesite_alloy_block.json 468759c042e8410da9230357f4b602766190df79 data/create/loot_tables/blocks/andesite_belt_funnel.json f9b768b3b9bbddede80912f1319e7b290cd90f20 data/create/loot_tables/blocks/andesite_casing.json 982a41e1bccd9a130a2874aff995d4f7da0f0316 data/create/loot_tables/blocks/andesite_encased_cogwheel.json @@ -5702,7 +5706,8 @@ f3e20d8b3ca5652d3975da680740cc36326fdfc9 data/create/tags/items/vanilla_stripped 9fc688d8fac1033c7b8f4b8de1138e56d2faf527 data/forge/tags/blocks/ores_in_ground/deepslate.json d5ea262a0f5fb210612d22521818e26cf08e591a data/forge/tags/blocks/ores_in_ground/stone.json ad8fa04f7bbbafd70d0ce158af78a35e899301e2 data/forge/tags/blocks/relocation_not_supported.json -66065a698fca917446a0fb766593dbcc77fabeac data/forge/tags/blocks/storage_blocks.json +cffe82d6f1d2eefdaf200eedfe50b590aa5ffbbb data/forge/tags/blocks/storage_blocks.json +ecd6eda3669e4d4df367df99a7692cc0dd04e7ee data/forge/tags/blocks/storage_blocks/andesite_alloy.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/blocks/storage_blocks/brass.json 823d05187626797205381d4620a84abda3bc8f89 data/forge/tags/blocks/storage_blocks/raw_zinc.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/blocks/storage_blocks/zinc.json @@ -5736,7 +5741,8 @@ fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data/forge/tags/items/plates/gold.json d82758dd3c2972fa94736733dc6b3944129f5a11 data/forge/tags/items/plates/obsidian.json dc96331cded39b2d2f24853f4dd6c1f6f3863115 data/forge/tags/items/raw_materials.json dc96331cded39b2d2f24853f4dd6c1f6f3863115 data/forge/tags/items/raw_materials/zinc.json -66065a698fca917446a0fb766593dbcc77fabeac data/forge/tags/items/storage_blocks.json +cffe82d6f1d2eefdaf200eedfe50b590aa5ffbbb data/forge/tags/items/storage_blocks.json +ecd6eda3669e4d4df367df99a7692cc0dd04e7ee data/forge/tags/items/storage_blocks/andesite_alloy.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/brass.json 823d05187626797205381d4620a84abda3bc8f89 data/forge/tags/items/storage_blocks/raw_zinc.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/items/storage_blocks/zinc.json @@ -5751,7 +5757,7 @@ e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/blocks/doors.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json a8662d145a8b1b5faa263c2aac9d12e7727c8c3f data/minecraft/tags/blocks/mineable/axe.json -6f18f0d6fe0e4204079cbf9c7b6dc79c8cebcaa9 data/minecraft/tags/blocks/mineable/pickaxe.json +120c1793c3ef27f19c2e366754060b15ff602f8d data/minecraft/tags/blocks/mineable/pickaxe.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json diff --git a/src/generated/resources/assets/create/blockstates/andesite_alloy_block.json b/src/generated/resources/assets/create/blockstates/andesite_alloy_block.json new file mode 100644 index 000000000..1a141d07c --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_alloy_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "create:block/andesite_alloy_block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json index 0199a6d72..a63a8d30e 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json @@ -1,18 +1,18 @@ { "variants": { "facing=north,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_retracted" + "model": "create:block/andesite_belt_funnel_retracted_unpowered" }, "facing=south,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_retracted", + "model": "create:block/andesite_belt_funnel_retracted_unpowered", "y": 180 }, "facing=west,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_retracted", + "model": "create:block/andesite_belt_funnel_retracted_unpowered", "y": 270 }, "facing=east,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel_retracted", + "model": "create:block/andesite_belt_funnel_retracted_unpowered", "y": 90 }, "facing=north,powered=true,shape=retracted": { @@ -31,18 +31,18 @@ "y": 90 }, "facing=north,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_extended" + "model": "create:block/andesite_belt_funnel_extended_unpowered" }, "facing=south,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_extended", + "model": "create:block/andesite_belt_funnel_extended_unpowered", "y": 180 }, "facing=west,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_extended", + "model": "create:block/andesite_belt_funnel_extended_unpowered", "y": 270 }, "facing=east,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel_extended", + "model": "create:block/andesite_belt_funnel_extended_unpowered", "y": 90 }, "facing=north,powered=true,shape=extended": { @@ -61,18 +61,18 @@ "y": 90 }, "facing=north,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel_pushing" + "model": "create:block/andesite_belt_funnel_pushing_unpowered" }, "facing=south,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel_pushing", + "model": "create:block/andesite_belt_funnel_pushing_unpowered", "y": 180 }, "facing=west,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel_pushing", + "model": "create:block/andesite_belt_funnel_pushing_unpowered", "y": 270 }, "facing=east,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel_pushing", + "model": "create:block/andesite_belt_funnel_pushing_unpowered", "y": 90 }, "facing=north,powered=true,shape=pushing": { @@ -91,18 +91,18 @@ "y": 90 }, "facing=north,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel_pulling" + "model": "create:block/andesite_belt_funnel_pulling_unpowered" }, "facing=south,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel_pulling", + "model": "create:block/andesite_belt_funnel_pulling_unpowered", "y": 180 }, "facing=west,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel_pulling", + "model": "create:block/andesite_belt_funnel_pulling_unpowered", "y": 270 }, "facing=east,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel_pulling", + "model": "create:block/andesite_belt_funnel_pulling_unpowered", "y": 90 }, "facing=north,powered=true,shape=pulling": { diff --git a/src/generated/resources/assets/create/blockstates/andesite_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_funnel.json index 9ea4b09ee..c9aed855d 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_funnel.json +++ b/src/generated/resources/assets/create/blockstates/andesite_funnel.json @@ -1,51 +1,51 @@ { "variants": { "extracting=false,facing=down,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_pull", + "model": "create:block/andesite_funnel_vertical_filterless_pull_unpowered", "x": 180, "y": 180 }, "extracting=true,facing=down,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_push", + "model": "create:block/andesite_funnel_vertical_filterless_push_unpowered", "x": 180, "y": 180 }, "extracting=false,facing=up,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_pull", + "model": "create:block/andesite_funnel_vertical_filterless_pull_unpowered", "y": 180 }, "extracting=true,facing=up,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_push", + "model": "create:block/andesite_funnel_vertical_filterless_push_unpowered", "y": 180 }, "extracting=false,facing=north,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull" + "model": "create:block/andesite_funnel_horizontal_pull_unpowered" }, "extracting=true,facing=north,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push" + "model": "create:block/andesite_funnel_horizontal_push_unpowered" }, "extracting=false,facing=south,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull", + "model": "create:block/andesite_funnel_horizontal_pull_unpowered", "y": 180 }, "extracting=true,facing=south,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push", + "model": "create:block/andesite_funnel_horizontal_push_unpowered", "y": 180 }, "extracting=false,facing=west,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull", + "model": "create:block/andesite_funnel_horizontal_pull_unpowered", "y": 270 }, "extracting=true,facing=west,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push", + "model": "create:block/andesite_funnel_horizontal_push_unpowered", "y": 270 }, "extracting=false,facing=east,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull", + "model": "create:block/andesite_funnel_horizontal_pull_unpowered", "y": 90 }, "extracting=true,facing=east,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push", + "model": "create:block/andesite_funnel_horizontal_push_unpowered", "y": 90 }, "extracting=false,facing=down,powered=true": { diff --git a/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json b/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json index f4466bfb2..4a7e7e2e2 100644 --- a/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json @@ -1,18 +1,18 @@ { "variants": { "facing=north,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_retracted" + "model": "create:block/brass_belt_funnel_retracted_unpowered" }, "facing=south,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_retracted", + "model": "create:block/brass_belt_funnel_retracted_unpowered", "y": 180 }, "facing=west,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_retracted", + "model": "create:block/brass_belt_funnel_retracted_unpowered", "y": 270 }, "facing=east,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel_retracted", + "model": "create:block/brass_belt_funnel_retracted_unpowered", "y": 90 }, "facing=north,powered=true,shape=retracted": { @@ -31,18 +31,18 @@ "y": 90 }, "facing=north,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel_extended" + "model": "create:block/brass_belt_funnel_extended_unpowered" }, "facing=south,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel_extended", + "model": "create:block/brass_belt_funnel_extended_unpowered", "y": 180 }, "facing=west,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel_extended", + "model": "create:block/brass_belt_funnel_extended_unpowered", "y": 270 }, "facing=east,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel_extended", + "model": "create:block/brass_belt_funnel_extended_unpowered", "y": 90 }, "facing=north,powered=true,shape=extended": { @@ -61,18 +61,18 @@ "y": 90 }, "facing=north,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel_pushing" + "model": "create:block/brass_belt_funnel_pushing_unpowered" }, "facing=south,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel_pushing", + "model": "create:block/brass_belt_funnel_pushing_unpowered", "y": 180 }, "facing=west,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel_pushing", + "model": "create:block/brass_belt_funnel_pushing_unpowered", "y": 270 }, "facing=east,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel_pushing", + "model": "create:block/brass_belt_funnel_pushing_unpowered", "y": 90 }, "facing=north,powered=true,shape=pushing": { @@ -91,18 +91,18 @@ "y": 90 }, "facing=north,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel_pulling" + "model": "create:block/brass_belt_funnel_pulling_unpowered" }, "facing=south,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel_pulling", + "model": "create:block/brass_belt_funnel_pulling_unpowered", "y": 180 }, "facing=west,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel_pulling", + "model": "create:block/brass_belt_funnel_pulling_unpowered", "y": 270 }, "facing=east,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel_pulling", + "model": "create:block/brass_belt_funnel_pulling_unpowered", "y": 90 }, "facing=north,powered=true,shape=pulling": { diff --git a/src/generated/resources/assets/create/blockstates/brass_funnel.json b/src/generated/resources/assets/create/blockstates/brass_funnel.json index 19a543d73..eb948db56 100644 --- a/src/generated/resources/assets/create/blockstates/brass_funnel.json +++ b/src/generated/resources/assets/create/blockstates/brass_funnel.json @@ -1,51 +1,51 @@ { "variants": { "extracting=false,facing=down,powered=false": { - "model": "create:block/brass_funnel_vertical_pull", + "model": "create:block/brass_funnel_vertical_pull_unpowered", "x": 180, "y": 180 }, "extracting=true,facing=down,powered=false": { - "model": "create:block/brass_funnel_vertical_push", + "model": "create:block/brass_funnel_vertical_push_unpowered", "x": 180, "y": 180 }, "extracting=false,facing=up,powered=false": { - "model": "create:block/brass_funnel_vertical_pull", + "model": "create:block/brass_funnel_vertical_pull_unpowered", "y": 180 }, "extracting=true,facing=up,powered=false": { - "model": "create:block/brass_funnel_vertical_push", + "model": "create:block/brass_funnel_vertical_push_unpowered", "y": 180 }, "extracting=false,facing=north,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull" + "model": "create:block/brass_funnel_horizontal_pull_unpowered" }, "extracting=true,facing=north,powered=false": { - "model": "create:block/brass_funnel_horizontal_push" + "model": "create:block/brass_funnel_horizontal_push_unpowered" }, "extracting=false,facing=south,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull", + "model": "create:block/brass_funnel_horizontal_pull_unpowered", "y": 180 }, "extracting=true,facing=south,powered=false": { - "model": "create:block/brass_funnel_horizontal_push", + "model": "create:block/brass_funnel_horizontal_push_unpowered", "y": 180 }, "extracting=false,facing=west,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull", + "model": "create:block/brass_funnel_horizontal_pull_unpowered", "y": 270 }, "extracting=true,facing=west,powered=false": { - "model": "create:block/brass_funnel_horizontal_push", + "model": "create:block/brass_funnel_horizontal_push_unpowered", "y": 270 }, "extracting=false,facing=east,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull", + "model": "create:block/brass_funnel_horizontal_pull_unpowered", "y": 90 }, "extracting=true,facing=east,powered=false": { - "model": "create:block/brass_funnel_horizontal_push", + "model": "create:block/brass_funnel_horizontal_push_unpowered", "y": 90 }, "extracting=false,facing=down,powered=true": { diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index a602dbf3f..a048f129c 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -3,6 +3,7 @@ "block.create.acacia_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u0250\u0131\u0254\u0250\u0254\u2C6F", "block.create.adjustable_chain_gearshift": "\u0287\u025F\u0131\u0265s\u0279\u0250\u01DD\u2141 u\u0131\u0250\u0265\u0186 \u01DD\u05DFq\u0250\u0287sn\u0638p\u2C6F", "block.create.analog_lever": "\u0279\u01DD\u028C\u01DD\uA780 bo\u05DF\u0250u\u2C6F", + "block.create.andesite_alloy_block": "\u028Eo\u05DF\u05DF\u2C6F \u01DD\u0287\u0131s\u01DDpu\u2C6F \u025Fo \u029E\u0254o\u05DF\u15FA", "block.create.andesite_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_casing": "bu\u0131s\u0250\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", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 4f2358c2d..c38001908 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -6,6 +6,7 @@ "block.create.acacia_window_pane": "Acacia Window Pane", "block.create.adjustable_chain_gearshift": "Adjustable Chain Gearshift", "block.create.analog_lever": "Analog Lever", + "block.create.andesite_alloy_block": "Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Andesite Belt Funnel", "block.create.andesite_casing": "Andesite Casing", "block.create.andesite_encased_cogwheel": "Andesite Encased Cogwheel", 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 faf8ae4d2..cedce75b7 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: 873", + "_": "Missing Localizations: 874", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Akazienholzfensterscheibe", "block.create.adjustable_chain_gearshift": "Verstellbares Kettengetriebe", "block.create.analog_lever": "Analoger Schalter", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Riementrichter aus Andesit", "block.create.andesite_casing": "Andesitrahmen", "block.create.andesite_encased_cogwheel": "Andesit-Zahnrad", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 1b734ff53..97fdb4fe5 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1019", + "_": "Missing Localizations: 1020", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Panel de Ventana de Acacia", "block.create.adjustable_chain_gearshift": "Caja de Cambios en Cadena Ajustable", "block.create.analog_lever": "Palanca Análoga", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Ingreso para Cintas de Andesita", "block.create.andesite_casing": "Cubierta de Andesita", "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", 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 0af808e9d..6b399bd34 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: 39", + "_": "Missing Localizations: 40", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Panel de ventana de acacia", "block.create.adjustable_chain_gearshift": "Cadena de transmisión ajustable", "block.create.analog_lever": "Palanca analógica", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Embudo lateral de andesita", "block.create.andesite_casing": "Revestidor de andesita", "block.create.andesite_encased_cogwheel": "Engranaje revestido de andesita", 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 97087b84b..50c639f33 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: 2168", + "_": "Missing Localizations: 2169", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Vitre en acacia", "block.create.adjustable_chain_gearshift": "UNLOCALIZED: Adjustable Chain Gearshift", "block.create.analog_lever": "Levier analogique", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Entonnoir en andésite pour tapis roulant", "block.create.andesite_casing": "Revêtement en andésite", "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", 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 908ada24a..e4fae59cc 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: 33", + "_": "Missing Localizations: 34", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Pannello di finestra di acacia", "block.create.adjustable_chain_gearshift": "Cambio a catena regolabile", "block.create.analog_lever": "Leva analogica", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Imbuto di andesite su nastro", "block.create.andesite_casing": "Rivestimento di andesite", "block.create.andesite_encased_cogwheel": "Ingranaggio rivestito in andesite", 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 b009c9971..541be6aaa 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: 35", + "_": "Missing Localizations: 36", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "アカシアの板窓", "block.create.adjustable_chain_gearshift": "可変チェーンギアシフト", "block.create.analog_lever": "アナログレバー", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "安山岩ベルトファンネル", "block.create.andesite_casing": "安山岩ケーシング", "block.create.andesite_encased_cogwheel": "安山岩ケース入り歯車", 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 463d14307..ded4447f2 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: 39", + "_": "Missing Localizations: 40", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "아카시아나무 유리판 ", "block.create.adjustable_chain_gearshift": "벨트 변속기", "block.create.analog_lever": "아날로그 레버", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "안산암 퍼널", "block.create.andesite_casing": "안산암 케이스", "block.create.andesite_encased_cogwheel": "안산암 케이스를 씌운 톱니바퀴", 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 a740cff1b..745f04679 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: 2516", + "_": "Missing Localizations: 2517", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "block.create.adjustable_chain_gearshift": "UNLOCALIZED: Adjustable Chain Gearshift", "block.create.analog_lever": "UNLOCALIZED: Analog Lever", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", 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 2263e0266..8e6febe4e 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: 43", + "_": "Missing Localizations: 44", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Akacjowa szyba okienna", "block.create.adjustable_chain_gearshift": "Regulowany przekładnik łańcuchowy", "block.create.analog_lever": "Dźwignia analogowa", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Andezytowy lejek taśmowy", "block.create.andesite_casing": "Andezytowa obudowa", "block.create.andesite_encased_cogwheel": "Andezytowe izolowane koło zębate", 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 438b61e06..a9f64ff4f 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: 1362", + "_": "Missing Localizations: 1363", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Vidraça de Acácia", "block.create.adjustable_chain_gearshift": "Correia Ajustável", "block.create.analog_lever": "Alavanca Analógica", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Funil de Esteira de Andesito", "block.create.andesite_casing": "Revestimento de Andesito", "block.create.andesite_encased_cogwheel": "Roda dentada revestida com andesito", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index 48f1fd11b..5ad323b5d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2227", + "_": "Missing Localizations: 2228", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", "block.create.adjustable_chain_gearshift": "Mudança de engrenagem de corrente ajustável", "block.create.analog_lever": "Alavanca Analógica", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Funil de correia de andesito", "block.create.andesite_casing": "Revestimento de Andesito", "block.create.andesite_encased_cogwheel": "Roda dentada revestida com andesito", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 4bce461d2..12e72d4f6 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 686", + "_": "Missing Localizations: 687", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Geam De Salcâm", "block.create.adjustable_chain_gearshift": "Schimbător De Viteze Reglabil Înlănțuit", "block.create.analog_lever": "Manetă Analogică", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Pâlnie De Andezit Pentru Benzi", "block.create.andesite_casing": "Carcasă De Andezit", "block.create.andesite_encased_cogwheel": "Roată Dințată Încapsulată În Andezit", 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 93d72d2e7..ce993862a 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: 31", + "_": "Missing Localizations: 32", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Панель из акациевого окна", "block.create.adjustable_chain_gearshift": "Регулируемая цепная коробка передач", "block.create.analog_lever": "Аналоговый рычаг", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Андезитовая конвейерная воронка", "block.create.andesite_casing": "Андезитовый корпус", "block.create.andesite_encased_cogwheel": "Шестерня в андезитовом корпусе", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index 489614fa6..d076effcd 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1017", + "_": "Missing Localizations: 1018", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "Склянна панель з акацією", "block.create.adjustable_chain_gearshift": "Регульований коробка передач", "block.create.analog_lever": "Аналоговий важіль", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "Андезитова воронка на конвеєрі", "block.create.andesite_casing": "Андезитовий корпус", "block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel", 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 f483c7982..459223587 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: 31", + "_": "Missing Localizations: 32", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "金合欢木窗户板", "block.create.adjustable_chain_gearshift": "可调节链式传动箱", "block.create.analog_lever": "模拟拉杆", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "安山岩传送带漏斗", "block.create.andesite_casing": "安山机壳", "block.create.andesite_encased_cogwheel": "安山齿轮箱", 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 c8ce1ebe3..1e5339718 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: 39", + "_": "Missing Localizations: 40", "_": "->------------------------] Game Elements [------------------------<-", @@ -7,6 +7,7 @@ "block.create.acacia_window_pane": "相思木窗戶片", "block.create.adjustable_chain_gearshift": "可調式鏈式變速箱", "block.create.analog_lever": "可調式拉桿", + "block.create.andesite_alloy_block": "UNLOCALIZED: Block of Andesite Alloy", "block.create.andesite_belt_funnel": "安山岩輸送帶漏斗", "block.create.andesite_casing": "安山岩機殼", "block.create.andesite_encased_cogwheel": "安山齒輪箱", diff --git a/src/generated/resources/assets/create/models/block/andesite_alloy_block.json b/src/generated/resources/assets/create/models/block/andesite_alloy_block.json new file mode 100644 index 000000000..10e0cb6b8 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_alloy_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "create:block/andesite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended.json deleted file mode 100644 index 5036d51eb..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_powered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_powered.json index d4d5598d2..9d10ca351 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_powered.json @@ -1,13 +1,10 @@ { "parent": "create:block/belt_funnel/block_extended", "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_neutral", + "redstone": "create:block/funnel/andesite_funnel_powered", + "base": "create:block/funnel/andesite_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_unpowered.json new file mode 100644 index 000000000..37387e3e7 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_extended_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_neutral", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "base": "create:block/funnel/andesite_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling.json deleted file mode 100644 index 5a4fd73da..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pulling", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_powered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_powered.json index a43488f11..624713368 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_powered.json @@ -1,13 +1,10 @@ { "parent": "create:block/belt_funnel/block_pulling", "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_pull", + "redstone": "create:block/funnel/andesite_funnel_powered", + "base": "create:block/funnel/andesite_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_unpowered.json new file mode 100644 index 000000000..e2098131c --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pulling_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_pulling", + "textures": { + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_pull", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "base": "create:block/funnel/andesite_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing.json deleted file mode 100644 index 47130f005..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pushing", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_powered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_powered.json index 651382173..4d852fabd 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_powered.json @@ -1,13 +1,10 @@ { "parent": "create:block/belt_funnel/block_pushing", "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_push", + "redstone": "create:block/funnel/andesite_funnel_powered", + "base": "create:block/funnel/andesite_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_unpowered.json new file mode 100644 index 000000000..3fdaa36d2 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_pushing_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_pushing", + "textures": { + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_push", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "base": "create:block/funnel/andesite_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted.json deleted file mode 100644 index 4b272eeee..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_powered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_powered.json index 5552e989d..45a34cceb 100644 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_powered.json @@ -1,13 +1,10 @@ { "parent": "create:block/belt_funnel/block_retracted", "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_neutral", + "redstone": "create:block/funnel/andesite_funnel_powered", + "base": "create:block/funnel/andesite_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_unpowered.json new file mode 100644 index 000000000..9d61dfef3 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_belt_funnel_retracted_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "direction": "create:block/funnel/andesite_funnel_neutral", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "base": "create:block/funnel/andesite_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull.json deleted file mode 100644 index 4ca78f3ab..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_powered.json index f30214bd6..b985ddc8c 100644 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_powered.json @@ -1,11 +1,10 @@ { "parent": "create:block/funnel/block_horizontal", "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel_powered" + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_powered", + "direction": "create:block/funnel/andesite_funnel_pull", + "block": "create:block/andesite_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_unpowered.json new file mode 100644 index 000000000..f815e4bb1 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/funnel/block_horizontal", + "textures": { + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "direction": "create:block/funnel/andesite_funnel_pull", + "block": "create:block/andesite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push.json deleted file mode 100644 index 090a3e964..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_powered.json index 3907df971..fdafa100a 100644 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_powered.json @@ -1,11 +1,10 @@ { "parent": "create:block/funnel/block_horizontal", "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel_powered" + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_powered", + "direction": "create:block/funnel/andesite_funnel_push", + "block": "create:block/andesite_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_unpowered.json new file mode 100644 index 000000000..27a70e7bb --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/funnel/block_horizontal", + "textures": { + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "direction": "create:block/funnel/andesite_funnel_push", + "block": "create:block/andesite_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull.json deleted file mode 100644 index a05b1954a..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical_filterless", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json index 979f71145..24b1f8300 100644 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json @@ -1,13 +1,11 @@ { "parent": "create:block/funnel/block_vertical_filterless", "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_closed" + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_powered", + "direction": "create:block/funnel/andesite_funnel_pull", + "frame": "create:block/funnel/andesite_funnel_frame", + "open": "create:block/funnel/funnel_closed" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_unpowered.json new file mode 100644 index 000000000..6a8ad6c1e --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_unpowered.json @@ -0,0 +1,11 @@ +{ + "parent": "create:block/funnel/block_vertical_filterless", + "textures": { + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "direction": "create:block/funnel/andesite_funnel_pull", + "frame": "create:block/funnel/andesite_funnel_frame", + "open": "create:block/funnel/funnel_open" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push.json deleted file mode 100644 index ef3fe4431..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical_filterless", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json index 4afdf8a20..d81ac8ed2 100644 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json @@ -1,13 +1,11 @@ { "parent": "create:block/funnel/block_vertical_filterless", "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_closed" + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_powered", + "direction": "create:block/funnel/andesite_funnel_push", + "frame": "create:block/funnel/andesite_funnel_frame", + "open": "create:block/funnel/funnel_closed" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_unpowered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_unpowered.json new file mode 100644 index 000000000..2b56302db --- /dev/null +++ b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_unpowered.json @@ -0,0 +1,11 @@ +{ + "parent": "create:block/funnel/block_vertical_filterless", + "textures": { + "particle": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "redstone": "create:block/funnel/andesite_funnel_unpowered", + "direction": "create:block/funnel/andesite_funnel_push", + "frame": "create:block/funnel/andesite_funnel_frame", + "open": "create:block/funnel/funnel_open" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended.json deleted file mode 100644 index 0fce1a25a..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_powered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_powered.json index ff664c508..9693650e4 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_powered.json @@ -2,12 +2,9 @@ "parent": "create:block/belt_funnel/block_extended", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_powered", + "base": "create:block/funnel/brass_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_unpowered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_unpowered.json new file mode 100644 index 000000000..6dcc3453f --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_extended_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "particle": "create:block/brass_block", + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "base": "create:block/funnel/brass_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling.json deleted file mode 100644 index 2975e7830..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pulling", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_powered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_powered.json index b2afb7d4e..9cdb6c693 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_powered.json @@ -2,12 +2,9 @@ "parent": "create:block/belt_funnel/block_pulling", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_pull", + "redstone": "create:block/funnel/brass_funnel_powered", + "base": "create:block/funnel/brass_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_unpowered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_unpowered.json new file mode 100644 index 000000000..b99062b8b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pulling_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_pulling", + "textures": { + "particle": "create:block/brass_block", + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_pull", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "base": "create:block/funnel/brass_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing.json deleted file mode 100644 index a1130fb8e..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pushing", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_powered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_powered.json index 99b733775..b6b5df184 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_powered.json @@ -2,12 +2,9 @@ "parent": "create:block/belt_funnel/block_pushing", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_push", + "redstone": "create:block/funnel/brass_funnel_powered", + "base": "create:block/funnel/brass_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_unpowered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_unpowered.json new file mode 100644 index 000000000..1057b96af --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_pushing_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_pushing", + "textures": { + "particle": "create:block/brass_block", + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_push", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "base": "create:block/funnel/brass_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted.json deleted file mode 100644 index 693ec38e6..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_powered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_powered.json index 60060dfb5..c4355d82b 100644 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_powered.json @@ -2,12 +2,9 @@ "parent": "create:block/belt_funnel/block_retracted", "textures": { "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_powered", + "base": "create:block/funnel/brass_funnel" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_unpowered.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_unpowered.json new file mode 100644 index 000000000..e910fd46b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_belt_funnel_retracted_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "particle": "create:block/brass_block", + "block": "create:block/brass_block", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "base": "create:block/funnel/brass_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull.json deleted file mode 100644 index a971472b4..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_powered.json index 38c8a7e7a..5aa87848c 100644 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_powered.json @@ -1,11 +1,10 @@ { "parent": "create:block/funnel/block_horizontal", "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel_powered" + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_powered", + "direction": "create:block/funnel/brass_funnel_pull", + "block": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_unpowered.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_unpowered.json new file mode 100644 index 000000000..b90f575ce --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/funnel/block_horizontal", + "textures": { + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "direction": "create:block/funnel/brass_funnel_pull", + "block": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push.json deleted file mode 100644 index 85321b031..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_powered.json index 83a796536..4a9a5b9a0 100644 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_powered.json @@ -1,11 +1,10 @@ { "parent": "create:block/funnel/block_horizontal", "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel_powered" + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_powered", + "direction": "create:block/funnel/brass_funnel_push", + "block": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_unpowered.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_unpowered.json new file mode 100644 index 000000000..480a9e30d --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_unpowered.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/funnel/block_horizontal", + "textures": { + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "direction": "create:block/funnel/brass_funnel_push", + "block": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull.json deleted file mode 100644 index d2a1c6159..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_powered.json index e319cf39d..5695ef663 100644 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_powered.json @@ -1,13 +1,11 @@ { "parent": "create:block/funnel/block_vertical", "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed" + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_powered", + "direction": "create:block/funnel/brass_funnel_pull", + "frame": "create:block/funnel/brass_funnel_frame", + "open": "create:block/funnel/funnel_closed" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_unpowered.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_unpowered.json new file mode 100644 index 000000000..6c320b02f --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_unpowered.json @@ -0,0 +1,11 @@ +{ + "parent": "create:block/funnel/block_vertical", + "textures": { + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "direction": "create:block/funnel/brass_funnel_pull", + "frame": "create:block/funnel/brass_funnel_frame", + "open": "create:block/funnel/funnel_open" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push.json deleted file mode 100644 index f95cdf391..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_powered.json index 45ac7f48f..3fa002b8b 100644 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_powered.json +++ b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_powered.json @@ -1,13 +1,11 @@ { "parent": "create:block/funnel/block_vertical", "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed" + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_powered", + "direction": "create:block/funnel/brass_funnel_push", + "frame": "create:block/funnel/brass_funnel_frame", + "open": "create:block/funnel/funnel_closed" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_unpowered.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_unpowered.json new file mode 100644 index 000000000..1180fdd00 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_unpowered.json @@ -0,0 +1,11 @@ +{ + "parent": "create:block/funnel/block_vertical", + "textures": { + "particle": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "redstone": "create:block/funnel/brass_funnel_unpowered", + "direction": "create:block/funnel/brass_funnel_push", + "frame": "create:block/funnel/brass_funnel_frame", + "open": "create:block/funnel/funnel_open" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_alloy_block.json b/src/generated/resources/assets/create/models/item/andesite_alloy_block.json new file mode 100644 index 000000000..177e920a3 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/andesite_alloy_block.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/andesite_alloy_block" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_funnel.json b/src/generated/resources/assets/create/models/item/andesite_funnel.json index 6cb095db3..5aa85e5b5 100644 --- a/src/generated/resources/assets/create/models/item/andesite_funnel.json +++ b/src/generated/resources/assets/create/models/item/andesite_funnel.json @@ -1,11 +1,10 @@ { "parent": "create:block/funnel/item", "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "2": "create:block/andesite_funnel_neutral", - "6": "create:block/andesite_funnel", - "5": "create:block/andesite_funnel_tall", - "3": "create:block/andesite_funnel_back" + "particle": "create:block/andesite_block", + "block": "create:block/andesite_block", + "base": "create:block/funnel/andesite_funnel", + "direction": "create:block/funnel/andesite_funnel_neutral", + "redstone": "create:block/funnel/andesite_funnel_unpowered" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_funnel.json b/src/generated/resources/assets/create/models/item/brass_funnel.json index 5a1542acb..2450d2d13 100644 --- a/src/generated/resources/assets/create/models/item/brass_funnel.json +++ b/src/generated/resources/assets/create/models/item/brass_funnel.json @@ -1,11 +1,10 @@ { "parent": "create:block/funnel/item", "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "2": "create:block/brass_funnel_neutral", - "6": "create:block/brass_funnel", - "5": "create:block/brass_funnel_tall", - "3": "create:block/brass_funnel_back" + "particle": "create:block/brass_block", + "block": "create:block/brass_block", + "base": "create:block/funnel/brass_funnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "redstone": "create:block/funnel/brass_funnel_unpowered" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_alloy_block.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_alloy_block.json new file mode 100644 index 000000000..5fb5603d2 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/andesite_alloy_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:andesite_alloy_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json index 914bc595f..925cc51e0 100644 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json +++ b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json @@ -3,6 +3,7 @@ "values": [ "create:raw_zinc_block", "create:zinc_block", + "create:andesite_alloy_block", "create:brass_block" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks/andesite_alloy.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks/andesite_alloy.json new file mode 100644 index 000000000..49bf45975 --- /dev/null +++ b/src/generated/resources/data/forge/tags/blocks/storage_blocks/andesite_alloy.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "create:andesite_alloy_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks.json b/src/generated/resources/data/forge/tags/items/storage_blocks.json index 914bc595f..925cc51e0 100644 --- a/src/generated/resources/data/forge/tags/items/storage_blocks.json +++ b/src/generated/resources/data/forge/tags/items/storage_blocks.json @@ -3,6 +3,7 @@ "values": [ "create:raw_zinc_block", "create:zinc_block", + "create:andesite_alloy_block", "create:brass_block" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks/andesite_alloy.json b/src/generated/resources/data/forge/tags/items/storage_blocks/andesite_alloy.json new file mode 100644 index 000000000..49bf45975 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/storage_blocks/andesite_alloy.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "create:andesite_alloy_block" + ] +} \ No newline at end of file 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 7e19837c9..22156935c 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -170,6 +170,7 @@ "create:deepslate_zinc_ore", "create:raw_zinc_block", "create:zinc_block", + "create:andesite_alloy_block", "create:brass_block", "create:rose_quartz_block", "create:rose_quartz_tiles", diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 08fae398e..5ce68e72c 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -1746,7 +1746,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.STONE)) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new BeltFunnelGenerator("andesite", new ResourceLocation("block/polished_andesite"))::generate) + .blockstate(new BeltFunnelGenerator("andesite")::generate) .loot((p, b) -> p.dropOther(b, ANDESITE_FUNNEL.get())) .register(); @@ -1771,7 +1771,7 @@ public class AllBlocks { .properties(p -> p.color(MaterialColor.TERRACOTTA_YELLOW)) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new BeltFunnelGenerator("brass", Create.asResource("block/brass_block"))::generate) + .blockstate(new BeltFunnelGenerator("brass")::generate) .loot((p, b) -> p.dropOther(b, BRASS_FUNNEL.get())) .register(); @@ -2103,6 +2103,19 @@ public class AllBlocks { .build() .lang("Block of Zinc") .register(); + + public static final BlockEntry ANDESITE_ALLOY_BLOCK = REGISTRATE.block("andesite_alloy_block", Block::new) + .initialProperties(() -> Blocks.ANDESITE) + .properties(p -> p.color(MaterialColor.STONE)) + .properties(p -> p.requiresCorrectToolForDrops()) + .transform(pickaxeOnly()) + .blockstate(simpleCubeAll("andesite_block")) + .tag(Tags.Blocks.STORAGE_BLOCKS) + .transform(tagBlockAndItem("storage_blocks/andesite_alloy")) + .tag(Tags.Items.STORAGE_BLOCKS) + .build() + .lang("Block of Andesite Alloy") + .register(); public static final BlockEntry BRASS_BLOCK = REGISTRATE.block("brass_block", Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java index 8e0ccaaea..d3928b952 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/BeltFunnelGenerator.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.logistics.block.funnel; +import com.simibubi.create.Create; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.RegistrateBlockstateProvider; @@ -15,9 +17,9 @@ public class BeltFunnelGenerator extends SpecialBlockStateGen { private String type; private ResourceLocation materialBlockTexture; - public BeltFunnelGenerator(String type, ResourceLocation materialBlockTexture) { + public BeltFunnelGenerator(String type) { this.type = type; - this.materialBlockTexture = materialBlockTexture; + this.materialBlockTexture = Create.asResource("block/" + type + "_block"); } @Override @@ -33,22 +35,22 @@ public class BeltFunnelGenerator extends SpecialBlockStateGen { @Override public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, BlockState state) { - String shapeName = state.getValue(BeltFunnelBlock.SHAPE) - .getSerializedName(); - boolean powered = state.getOptionalValue(BlockStateProperties.POWERED).orElse(false); - String poweredSuffix = powered ? "_powered" : ""; + String prefix = "block/funnel/"; + Shape shape = state.getValue(BeltFunnelBlock.SHAPE); + String shapeName = shape.getSerializedName(); + boolean powered = state.getOptionalValue(BlockStateProperties.POWERED) + .orElse(false); + String poweredSuffix = powered ? "_powered" : "_unpowered"; + String shapeSuffix = shape == Shape.PULLING ? "_pull" : shape == Shape.PUSHING ? "_push" : "_neutral"; String name = ctx.getName() + "_" + shapeName + poweredSuffix; return prov.models() .withExistingParent(name, prov.modLoc("block/belt_funnel/block_" + shapeName)) .texture("particle", materialBlockTexture) - .texture("2", prov.modLoc("block/" + type + "_funnel_neutral")) - .texture("2_1", prov.modLoc("block/" + type + "_funnel_push")) - .texture("2_2", prov.modLoc("block/" + type + "_funnel_pull")) - .texture("3", prov.modLoc("block/" + type + "_funnel_back")) - .texture("5", prov.modLoc("block/" + type + "_funnel_tall" + poweredSuffix)) - .texture("6", prov.modLoc("block/" + type + "_funnel" + poweredSuffix)) - .texture("7", prov.modLoc("block/" + type + "_funnel_plating")); + .texture("block", materialBlockTexture) + .texture("direction", prov.modLoc(prefix + type + "_funnel" + shapeSuffix)) + .texture("redstone", prov.modLoc(prefix + type + "_funnel" + poweredSuffix)) + .texture("base", prov.modLoc(prefix + type + "_funnel")); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelGenerator.java index 1d5f390ce..59dcbff03 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelGenerator.java @@ -18,13 +18,13 @@ import net.minecraftforge.client.model.generators.ModelFile; public class FunnelGenerator extends SpecialBlockStateGen { private String type; - private ResourceLocation particleTexture; + private ResourceLocation blockTexture; private boolean hasFilter; public FunnelGenerator(String type, boolean hasFilter) { this.type = type; this.hasFilter = hasFilter; - this.particleTexture = Create.asResource("block/" + type + "_casing"); + this.blockTexture = Create.asResource("block/" + type + "_block"); } @Override @@ -40,7 +40,8 @@ public class FunnelGenerator extends SpecialBlockStateGen { @Override public ModelFile getModel(DataGenContext c, RegistrateBlockstateProvider p, BlockState s) { - String powered = s.getValue(FunnelBlock.POWERED) ? "_powered" : ""; + String prefix = "block/funnel/"; + String powered = s.getValue(FunnelBlock.POWERED) ? "_powered" : "_unpowered"; String closed = s.getValue(FunnelBlock.POWERED) ? "_closed" : "_open"; String extracting = s.getValue(FunnelBlock.EXTRACTING) ? "_push" : "_pull"; Direction facing = s.getValue(FunnelBlock.FACING); @@ -50,32 +51,30 @@ public class FunnelGenerator extends SpecialBlockStateGen { BlockModelBuilder model = p.models() .withExistingParent("block/" + type + "_funnel_" + parent + extracting + powered, - p.modLoc("block/funnel/block_" + parent)) - .texture("particle", particleTexture) - .texture("7", p.modLoc("block/" + type + "_funnel_plating")) - .texture("5", p.modLoc("block/" + type + "_funnel_tall" + powered)) - .texture("2_2", p.modLoc("block/" + type + "_funnel" + extracting)) - .texture("3", p.modLoc("block/" + type + "_funnel_back")); + p.modLoc(prefix + "block_" + parent)) + .texture("particle", blockTexture) + .texture("base", p.modLoc(prefix + type + "_funnel")) + .texture("redstone", p.modLoc(prefix + type + "_funnel" + powered)) + .texture("direction", p.modLoc(prefix + type + "_funnel" + extracting)); if (horizontal) - return model.texture("6", p.modLoc("block/" + type + "_funnel" + powered)); + return model.texture("block", blockTexture); - return model.texture("8", particleTexture) - .texture("9", p.modLoc("block/" + type + "_funnel_slope")) - .texture("10", p.modLoc("block/funnel" + closed)); + return model.texture("frame", p.modLoc(prefix + type + "_funnel_frame")) + .texture("open", p.modLoc(prefix + "funnel" + closed)); } public static NonNullBiConsumer, RegistrateItemModelProvider> itemModel( String type) { - ResourceLocation particleTexture = Create.asResource("block/" + type + "_casing"); + String prefix = "block/funnel/"; + ResourceLocation blockTexture = Create.asResource("block/" + type + "_block"); return (c, p) -> { p.withExistingParent("item/" + type + "_funnel", p.modLoc("block/funnel/item")) - .texture("particle", particleTexture) - .texture("7", p.modLoc("block/" + type + "_funnel_plating")) - .texture("2", p.modLoc("block/" + type + "_funnel_neutral")) - .texture("6", p.modLoc("block/" + type + "_funnel")) - .texture("5", p.modLoc("block/" + type + "_funnel_tall")) - .texture("3", p.modLoc("block/" + type + "_funnel_back")); + .texture("particle", blockTexture) + .texture("block", blockTexture) + .texture("base", p.modLoc(prefix + type + "_funnel")) + .texture("direction", p.modLoc(prefix + type + "_funnel_neutral")) + .texture("redstone", p.modLoc(prefix + type + "_funnel_unpowered")); }; } diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index ca4b4eb0a..d555c4931 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -3,10 +3,10 @@ "parent": "block/block", "textures": { "back": "create:block/funnel/funnel_back", + "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_neutral", "redstone": "create:block/funnel/brass_funnel_unpowered", - "particle": "create:block/brass_block", "block": "create:block/brass_block" }, "elements": [ diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json index e3dd34e56..dfc5d49bd 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json @@ -3,7 +3,7 @@ "parent": "block/block", "textures": { "back": "create:block/funnel/funnel_back", - "particle": "create:block/funnel/brass_funnel", + "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_pull", "redstone": "create:block/funnel/brass_funnel_unpowered" diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json index e098c5b1c..466ea15c5 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json @@ -3,7 +3,7 @@ "parent": "block/block", "textures": { "back": "create:block/funnel/funnel_back", - "particle": "create:block/funnel/brass_funnel", + "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_push", "redstone": "create:block/funnel/brass_funnel_unpowered" diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index da2a1b625..8d439c4e0 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -1,13 +1,12 @@ { "credit": "Made with Blockbench", "parent": "block/block", - "texture_size": [32, 32], "textures": { "back": "create:block/funnel/funnel_back", + "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_neutral", "redstone": "create:block/funnel/brass_funnel_unpowered", - "particle": "create:block/brass_block", "block": "create:block/brass_block" }, "elements": [ diff --git a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json index 184f3899c..20ace9c21 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json +++ b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json @@ -4,9 +4,9 @@ "textures": { "back": "create:block/funnel/funnel_back", "base": "create:block/funnel/brass_funnel", - "particle": "create:block/funnel/brass_funnel_pull", "direction": "create:block/funnel/brass_funnel_pull", "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block", "block": "create:block/brass_block" }, "elements": [ diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical.json b/src/main/resources/assets/create/models/block/funnel/block_vertical.json index e727afeeb..320aa0132 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical.json @@ -5,8 +5,8 @@ "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_pull", "redstone": "create:block/funnel/brass_funnel_unpowered", - "open": "create:block/funnel_closed", - "particle": "create:block/funnel/brass_funnel_frame", + "open": "create:block/funnel/funnel_closed", + "particle": "create:block/brass_block", "frame": "create:block/funnel/brass_funnel_frame" }, "elements": [ diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json index f5e0e2692..c2289d3ae 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json @@ -5,8 +5,8 @@ "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_pull", "redstone": "create:block/funnel/brass_funnel_unpowered", - "open": "create:block/funnel_closed", - "particle": "create:block/funnel/brass_funnel_frame", + "open": "create:block/funnel/funnel_closed", + "particle": "create:block/brass_block", "frame": "create:block/funnel/brass_funnel_frame" }, "elements": [ diff --git a/src/main/resources/assets/create/textures/block/funnel/andesite_funnel.png b/src/main/resources/assets/create/textures/block/funnel/andesite_funnel.png index d4887d1f2b0befa6095ecf4f8a02178270a13ad5..26a6e7a336347a4e064bbc3c7df95851c5205b6d 100644 GIT binary patch delta 2399 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 ATL1t6 From 61f8a23d207c8f92a26f03d4b9df56f86bfae8f3 Mon Sep 17 00:00:00 2001 From: Kryppers <65094918+Kryppers@users.noreply.github.com> Date: Sat, 22 Oct 2022 17:28:36 +0100 Subject: [PATCH 010/122] spit and shine part 2: tunnel vision Updated tunnel models introduced WIP tunnel textures WIP update to andesite Block Vault textures updated and re-organised --- .../models/block/belt_tunnel/cross.json | 208 +++++--------- .../create/models/block/belt_tunnel/flap.json | 14 +- .../create/models/block/belt_tunnel/item.json | 264 ++++++++---------- .../models/block/belt_tunnel/straight.json | 106 +++---- .../models/block/belt_tunnel/t_left.json | 172 +++++------- .../models/block/belt_tunnel/t_right.json | 180 +++++------- .../models/block/belt_tunnel/window.json | 105 +++---- .../create/textures/block/Vault/vault_1.png | Bin 0 -> 2648 bytes .../create/textures/block/Vault/vault_2.png | Bin 0 -> 1388 bytes .../create/textures/block/Vault/vault_3.png | Bin 0 -> 1685 bytes .../create/textures/block/Vault/vault_4.png | Bin 0 -> 1404 bytes .../create/textures/block/Vault/vault_5.png | Bin 0 -> 2204 bytes .../create/textures/block/Vault/vault_6.png | Bin 0 -> 1684 bytes .../create/textures/block/andesite_block.png | Bin 752 -> 6503 bytes .../textures/block/tunnel/andesite_tunnel.png | Bin 0 -> 7432 bytes .../block/tunnel/andesite_tunnel_top.png | Bin 0 -> 5442 bytes .../tunnel/andesite_tunnel_top_connected.png | Bin 0 -> 5708 bytes .../tunnel/andesite_tunnel_top_window.png | Bin 0 -> 5769 bytes .../textures/block/tunnel/brass_tunnel.png | Bin 0 -> 7255 bytes .../block/tunnel/brass_tunnel_top.png | Bin 0 -> 5398 bytes .../tunnel/brass_tunnel_top_connected.png | Bin 0 -> 5643 bytes .../block/tunnel/brass_tunnel_top_window.png | Bin 0 -> 5820 bytes 22 files changed, 404 insertions(+), 645 deletions(-) create mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_1.png create mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_2.png create mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_3.png create mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_4.png create mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_5.png create mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_6.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel_top.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel_top_connected.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel_top_window.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/brass_tunnel.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/brass_tunnel_top.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/brass_tunnel_top_connected.png create mode 100644 src/main/resources/assets/create/textures/block/tunnel/brass_tunnel_top_window.png diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json b/src/main/resources/assets/create/models/block/belt_tunnel/cross.json index 4f161e41a..6730269cd 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/cross.json @@ -2,175 +2,103 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", + "top": "create:block/tunnel/brass_tunnel_top", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", "particle": "create:block/brass_block" }, "elements": [ { - "name": "LeftWall", - "from": [2, 10, 0], - "to": [14, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "south": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "texture": "#2"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [0, -3, 14], - "to": [2, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [0, -3, 0], - "to": [2, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [14, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [14, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 2, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftTRail", - "from": [0, -5, 15], - "to": [1, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "LeftTRail", + "name": "outer", "from": [0, -5, 0], - "to": [1, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, + "to": [16, 16, 16], "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "east": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "west": {"uv": [0, 0, 8, 10.5], "texture": "#direction"} } }, { - "name": "RIghtTRail", - "from": [15, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, + "name": "inner X", + "from": [0, -5, 14], + "to": [16, 16, 2], "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} + "north": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "south": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "RIghtTRail", - "from": [15, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, + "name": "inner Z", + "from": [14, -5, 0], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} + "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "name": "inner rim", + "from": [0, 10, 0], + "to": [16, 12, 16], "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } }, { - "name": "TTop", - "from": [2, 10, 14], - "to": [14, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "name": "Top", + "from": [0, 13, 0], + "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "south": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} } } ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, "groups": [ { "name": "Cover", "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + "color": 0, + "children": [0, 1, 2, 3, 4] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json index a79b4102f..a6ff6c281 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json @@ -1,7 +1,7 @@ { "credit": "Made with Blockbench", "textures": { - "4": "create:block/brass_tunnel" + "4": "create:block/funnel/funnel_back" }, "elements": [ { @@ -10,12 +10,12 @@ "to": [14, 10, 2], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#4"}, - "east": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#4"}, - "south": {"uv": [9.5, 16, 16, 14.5], "rotation": 90, "texture": "#4"}, - "west": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [9.5, 14.5, 10, 16], "rotation": 270, "texture": "#4"} + "north": {"uv": [12.5, 8.5, 14, 15], "texture": "#4"}, + "east": {"uv": [12.5, 8.5, 13, 15], "texture": "#4"}, + "south": {"uv": [14, 8.5, 12.5, 15], "texture": "#4"}, + "west": {"uv": [13.5, 8.5, 14, 15], "texture": "#4"}, + "up": {"uv": [12.5, 8.5, 14, 9], "rotation": 180, "texture": "#4"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 180, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/item.json b/src/main/resources/assets/create/models/block/belt_tunnel/item.json index 387034dcc..fb9e9fb5b 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/item.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/item.json @@ -2,93 +2,59 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", + "tunnel": "create:block/tunnel/brass_tunnel", + "top": "create:block/tunnel/brass_tunnel_top", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", + "back": "create:block/funnel/funnel_back", "particle": "create:block/brass_block" }, "elements": [ { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "RightWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", + "name": "outer", "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, + "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "east": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "west": {"uv": [0, 0, 8, 10.5], "texture": "#direction"} } }, { - "name": "RightRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, + "name": "inner X", + "from": [0, -5, 14], + "to": [16, 16, 2], "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"} } }, { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "name": "inner Z", + "from": [14, -5, 0], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, + "name": "inner rim", + "from": [0, 10, 0], + "to": [16, 12, 16], "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} + } + }, + { + "name": "Top", + "from": [0, 13, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} } }, { @@ -97,110 +63,110 @@ "to": [1.5, 10.5, 5], "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 2]}, "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} + "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} } }, { "name": "F2", "from": [0.5, -2.5, 5], "to": [1.5, 10.5, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 5]}, + "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 2]}, "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} + "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} } }, { "name": "F3", "from": [0.5, -2.5, 8], "to": [1.5, 10.5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 8]}, + "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 2]}, "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} + "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} } }, { "name": "F4", "from": [0.5, -2.5, 11], "to": [1.5, 10.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 11]}, + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} + "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} + } + }, + { + "name": "F2", + "from": [14.5, -2.5, 2], + "to": [15.5, 10.5, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 3.5]}, + "faces": { + "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} + } + }, + { + "name": "F3", + "from": [14.5, -2.5, 5], + "to": [15.5, 10.5, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 6.5]}, + "faces": { + "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} + } + }, + { + "name": "F4", + "from": [14.5, -2.5, 8], + "to": [15.5, 10.5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 9.5]}, + "faces": { + "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} } }, { "name": "F5", "from": [14.5, -2.5, 11], "to": [15.5, 10.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 11]}, + "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 12.5]}, "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F6", - "from": [14.5, -2.5, 8], - "to": [15.5, 10.5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 8]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F7", - "from": [14.5, -2.5, 5], - "to": [15.5, 10.5, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 5]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F8", - "from": [14.5, -2.5, 2], - "to": [15.5, 10.5, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 2]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} + "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, + "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, + "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, + "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, + "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, + "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} } } ], @@ -228,7 +194,7 @@ "scale": [0.25, 0.25, 0.25] }, "gui": { - "rotation": [30, 135, 0], + "rotation": [30, 225, 0], "translation": [0, 1, 0], "scale": [0.5, 0.5, 0.5] }, @@ -245,12 +211,14 @@ { "name": "Cover", "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] + "color": 0, + "children": [0, 1, 2, 3, 4] }, { "name": "Flap", "origin": [8, 8, 8], - "children": [7, 8, 9, 10, 11, 12, 13, 14] + "color": 0, + "children": [5, 6, 7, 8, 9, 10, 11, 12] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json index bad0cdc8b..d2e89a95b 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json @@ -2,93 +2,58 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", + "tunnel": "create:block/tunnel/brass_tunnel", + "top": "create:block/tunnel/brass_tunnel_top", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", "particle": "create:block/brass_block" }, "elements": [ { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "RightWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", + "name": "outer", "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, + "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "east": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "west": {"uv": [0, 0, 8, 10.5], "texture": "#direction"} } }, { - "name": "RightRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, + "name": "inner X", + "from": [0, -5, 14], + "to": [16, 16, 2], "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"} } }, { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "name": "inner Z", + "from": [14, -5, 0], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, + "name": "inner rim", + "from": [0, 10, 0], + "to": [16, 12, 16], "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} + } + }, + { + "name": "Top", + "from": [0, 13, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} } } ], @@ -133,7 +98,8 @@ { "name": "Cover", "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] + "color": 0, + "children": [0, 1, 2, 3, 4] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json index c95cbabae..f482eaf7c 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json @@ -2,138 +2,104 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", + "tunnel": "create:block/tunnel/brass_tunnel", + "top": "create:block/tunnel/brass_tunnel_top", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", "particle": "create:block/brass_block" }, "elements": [ { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [0, -3, 14], - "to": [2, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [14, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", + "name": "outer", "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, + "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "east": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "west": {"uv": [0, 0, 8, 10.5], "texture": "#direction"} } }, { - "name": "LeftTRail", - "from": [0, -5, 15], - "to": [1, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, + "name": "inner X", + "from": [0, -5, 14], + "to": [16, 16, 2], "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"} } }, { - "name": "RIghtTRail", - "from": [15, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, + "name": "inner Z", + "from": [14, -5, 0], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} + "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "name": "inner rim", + "from": [0, 10, 0], + "to": [16, 12, 16], "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } }, { - "name": "TTop", - "from": [2, 10, 14], - "to": [14, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "name": "Top", + "from": [0, 13, 0], + "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "south": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} } } ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, "groups": [ { "name": "Cover", "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + "color": 0, + "children": [0, 1, 2, 3, 4] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json index 8946156e8..7d7bbbba6 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json @@ -2,138 +2,104 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", + "tunnel": "create:block/tunnel/brass_tunnel", + "top": "create:block/tunnel/brass_tunnel_top", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", "particle": "create:block/brass_block" }, "elements": [ { - "name": "LeftWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [14, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 2, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [0, -3, 0], - "to": [2, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "LeftTRail", - "from": [15, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "RIghtTRail", + "name": "outer", "from": [0, -5, 0], - "to": [1, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, + "to": [16, 16, 16], "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "east": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "west": {"uv": [0, 0, 8, 10.5], "texture": "#direction"} } }, { - "name": "FrontTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, + "name": "inner X", + "from": [0, -5, 14], + "to": [16, 16, 2], "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 90, "texture": "#2"} + "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, + "south": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "TTop", - "from": [2, 10, 0], - "to": [14, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, + "name": "inner Z", + "from": [14, -5, 0], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { - "north": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "south": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 180, "texture": "#2"} + "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "BackTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, + "name": "inner rim", + "from": [0, 10, 0], + "to": [16, 12, 16], "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 90, "texture": "#2"} + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} + } + }, + { + "name": "Top", + "from": [0, 13, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} } } ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, "groups": [ { "name": "Cover", "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + "color": 0, + "children": [0, 1, 2, 3, 4] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/window.json b/src/main/resources/assets/create/models/block/belt_tunnel/window.json index 670987e89..ca4473a56 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/window.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/window.json @@ -2,93 +2,57 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", + "tunnel": "create:block/tunnel/brass_tunnel", + "top": "create:block/tunnel/brass_tunnel_top_window", + "direction": "create:block/funnel/brass_funnel_neutral", "particle": "create:block/brass_block" }, "elements": [ { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [8, 0, 16, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 16, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "RightWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [8, 0, 16, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 16, 9.5], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "LeftRail", + "name": "outer", "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, + "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} + "north": {"uv": [8, 0, 16, 10.5], "texture": "#tunnel"}, + "east": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, + "south": {"uv": [8, 0, 16, 10.5], "texture": "#tunnel"}, + "west": {"uv": [0, 0, 8, 10.5], "texture": "#direction"} } }, { - "name": "RightRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, + "name": "inner X", + "from": [0, -5, 14], + "to": [16, 16, 2], "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} + "north": {"uv": [8, 0, 16, 10.5], "texture": "#tunnel"}, + "south": {"uv": [8, 0, 16, 10.5], "texture": "#tunnel"} } }, { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, + "name": "inner Z", + "from": [14, -5, 0], + "to": [2, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, + "west": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} } }, { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, + "name": "inner rim", + "from": [0, 10, 0], + "to": [16, 12, 16], "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} + "down": {"uv": [0, 4, 8, 12], "texture": "#direction"} + } + }, + { + "name": "Top", + "from": [0, 13, 0], + "to": [16, 16, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#top"} } } ], @@ -133,7 +97,8 @@ { "name": "Cover", "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] + "color": 0, + "children": [0, 1, 2, 3, 4] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/Vault/vault_1.png b/src/main/resources/assets/create/textures/block/Vault/vault_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fffde54e95375169ecf38d1316634c69ae755504 GIT binary patch literal 2648 zcmV-e3a9mnP)EX>4Tx04R}tkv&MmKpe$iTcuK36f7d*kfDl$1yK=4sbUc|m*bSxHxjr->u7qEfy$ z>#)pui?dRxvDQ8L3xj!eCCzo3!-!)E2_zvvLJeh9U?NJZN{WFL?Z;gFL$*IjE{R-a zFmf!Q3I(F=2mgcL-5Q0dNhc{71G--<>th7)?*h%bWqlu8R`Ue#Jp)&2+h1(}v!A5b z+gjuZ=-mb`uG^Zl2VCv|gHM{Mi?-yW=`9q1_cQvY9MFFY1lFA1TKhPC05a6o@(pls z2#gjfd)?*TJ)OP%d#2Uj4~yq=v91*Hxc~qF24YJ`L;#NfmH?5oWBaTC000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j&VE5ED1{e+4iA00>k`L_t(|+TB~*iyPM&|5=*b z?&`9uuuH`3Ix(fL!6o*(xm6FrB*um~v5EauLTX4M^dD#+8cIo^d1znzPy#J94}G&k z8arT}D4q1)0>=NBqJJO8YK1kounWHl!X?LWx_Q0T-IdjhUo$vDd zzH`wYY_lBBJo&$wL=3598~`wvn!){C*75}aK)zH#pbh&xzr5I^eoo$h3yLf02WLW z7vKL7x4*s%!4=P-u5d^9{00Y2VfByil{_5vgu`K-S z^Cf)w#od+wRD)qts1~3oY8OMlef>{3y!bF&r)8S2z40b9$6=IuH4gwdar_Wm$Hw`0 zFXG11w>bIiWBBrmyPZKRYPc@oCzMxy@d5zg@gs|{a#`rH6x2i#5yR*k^m-K@6xBo$ zPPqgCc=_B(4{g5^x&X-c{`$8|t;EQjz?!wmG~cvsG;JG|Hem69CPoHdUzY$V4}h1i zECX2f(DuWHp;^F*O+OHM#YWK|@8<(#v!%WY2@i%k}STIfI^MjhTpH&PZD4wn? z`h=PZ`hj4xUPHvzJtitM<$eZFb+T_|f+0+3)@y;`QyB&TiphzX1yXT}#jbaQXj#@i zC>!MYqc9j5rVH?l5Hl17oN@`j{^j#{>d`qCx*~?r*9D-fJ@qTn^K*frSO5VGB|cGo z(ia1qN&(mY{ZClAbu{ZWs7Q8cKhVVMHE(;4j>p}~-TYy*JRA%VU7%U70cCh*g~Xg1 zpTP$oea-HB`F-*xM#d@(l|Gqf@jttcWXc`>d zLb9`!+(0I1UhBLIj5G>RB=BQW^!K1Vzz-Kht&0(0WG)cZC*e9ai@m)DF4K6B_WkOp zUlIh-<@123KG`LNp-qOwJV2(Y=m5YMBosfN56S~}3_px|Nrh>;DO<~vrNe$E z+>bT%`c_6qHW>xj5rBxaq6IYTHIEQz z8Jm{Ldksu1VtbK>XaO?*LR}9~6iq7SX1&Ikq2GEnkKg^~6`VMJhz(@W!HeyA8q%ak z!k-eJ_8qvc(56V5S`vNJ)xO;~#d?{!6Mv+rkwpPAJJOD#8ZagjzTg#v-c%=R&ud>% zG+#^_Ng^a#0nd!<*q$pWP6rLrw;zFC5YHh;0mm106-D(iOKp2X@EIua!a}mZ+fXsU zbsbo_b(}qO6abj7cDaP0DOm*RC*1P=@#XZXjCbPW;V&C@6li$vuYGzG)r~41IkLYm zO9;~DV6;1$U%Gh<|M~nDVpB1H%N!Q)ojr4u`I&Vv%Phflofc~MsqI08K!ZPhD#K_$ zckF3cxh&3KxY~sQOE+%~HwwJ*hd*Qf2We#go5Q)6o@41KpEC?A4Hs#TbS^-CckI{` z0D!fX?-?fW5u=|YGyGJxpRn#dVs)CT zd7ej6M4Fn~0ZQUEQ~}H_Jb>bA#Xsk!LzA*>Op-wk8g}LVYQDUNE`U@rjl5s2^+#lYeD4n`A)3Y$s zv#@gOIIwSTKngnRNlxfl2BJary;5A#u$ZP3NUr4z$d@YEvt0quartp9g>n^p`1Ah# zp7kf`70OlI_~hCijB!zB5-}Xux3_J=^U~N%=l|)R%;>8--(lQ~(mLZ;bo18O3m`%% zCatji?D->X!2HG6854;uo&3IU1;Cd#|MIr)$3b;tEdYLk5uba=cPonjH^@%@Au4nX zkeRbg2>jmOu5tlhoBZxf>m-&Tt=laY5TW#t78=D}Tiz0=&UNg-KOu~r04QH>)@y8k z-S47x`Cd!m<7WZw>EhAM0^3^?ucMg-HnrSU7C`f9d$Wx57p_Xz=3U3e`3qNJZo#C-mOYp2HrjO#PM^xa%B>?`s_c$1NICtZkNuEMis;YB z0004nX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iTcuK36f7d*kfDl$1yK=4sbUc|m*bSxHxjr->u7qEfy$ z>#)pui?dRxvDQ8L3xj!eCCzo3!-!)E2_zvvLJeh9U?NJZN{WFL?Z;gFL$*IjE{R-a zFmf!Q3I(F=2mgcL-5Q0dNhc{71G--<>th7)?*h%bWqlu8R`Ue#Jp)&2+h1(}v!A5b z+gjuZ=-mb`uG^Zl2VCv|gHM{Mi?-yW=`9q1_cQvY9MFFY1lFA1TKhPC05a6o@(pls z2#gjfd)?*TJ)OP%d#2Uj4~yq=v91*Hxc~qF32;bRa{vGf6951U69E94oEQKA00(qQ zO+^Rh3KkF)6dPIMg#Z8pdPzh|HO;*h#2jY!itY1fZf9Hv=0Z|7lBqx}xi+Fs9NSDu+~ zHghjty_OUT05Mes07+G?^WV=l3r4B@;}@g3dmdu|&}0k%Jlkqi&j?WffXFHU#OS>((?-+J{2W}##FV*7)s-iRMlflYQM>Wk5CZ@3TZOt*%sP!ba+Y=*`{>`0ItIT zz;$iXEly6RJ|5KosGOt_05p+3Iy^l-uE<&jLV%>uckjQs4x@=|_fyjQ9aY7J38;f6 zvbc>QLDn)c+v;s9L>$5a;lPBLd$RFdy_1a5`Jq#r))l+1xvoQq3;-BRZ$g3G79WF1 z3j&Oo92h!p#;y$juImsjx8hF%aV_02t8pz2061uvRSZWGqq3H{u9W;nb6a^7>c|5a z(EMV%!4>&KUz0I8nQFE!J=;QEey<2oh-X`pLQ$p1SOco~i?Z<2pU7O-_OJa=;Ol;| zJ?C&mBf)iT@evCLgaduPs*ye^t6p);i}0*;%nPet3F?4TyL|iR<z?rd+Z_w-@z(dNc#A)m`;^!&mADMqP$Ub*;LEM=03Y)TtCKWv~q zl}nSX7V?iD+}HEV1zj&1MnTs*rsB<_VHl+oyu+>6^UDB$PjL{Exm-RDjM52TzR^kv z0H~XP2$2WW5#f~*-POd%r33(|EfN2|lt6WyQWBzwQsTc!WVb61jA8u@^MEw1sJ#FA zAiN#e|9oJS$~_;E$)(@MzR(yxh`!L6ARUd-xR!1}E0IAJFTGZqQc~zhNuVu}LH|V7 zQUs&41CbL)zm!;7Nd+(FzI^?j&E35X#T+k4BVSHO|05QBAZmPoT-Q2|m}^&T!DpW;o*+L$b&NGtUE)?*Po=d?1pf-hVzYeNvBdLL&A3 zxSk;O?Yt>OEBgxpcX`a&X%ju|V$vvPoN(OMi0004nX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iTcuK36f7d*kfDl$1yK=4sbUc|m*bSxHxjr->u7qEfy$ z>#)pui?dRxvDQ8L3xj!eCCzo3!-!)E2_zvvLJeh9U?NJZN{WFL?Z;gFL$*IjE{R-a zFmf!Q3I(F=2mgcL-5Q0dNhc{71G--<>th7)?*h%bWqlu8R`Ue#Jp)&2+h1(}v!A5b z+gjuZ=-mb`uG^Zl2VCv|gHM{Mi?-yW=`9q1_cQvY9MFFY1lFA1TKhPC05a6o@(pls z2#gjfd)?*TJ)OP%d#2Uj4~yq=v91*Hxc~qF32;bRa{vGf6951U69E94oEQKA00(qQ zO+^Rh3KkF)Bt3xADF6Tjqe(JL8#oGw=O=@4elLZ@#|~lNA7HQY$7aw|=_*^DnoPCr&r4Isp85 zy8fI(lOgf8jj{3;5oJnUnB&%vtJUoPXkx9ha`4en3spaMb zK3l6zWPqfogQ_MOvlDTrw$!GSQi7AZmlrXS@1EKed54pcILr;B{0TP1O?O<5^B$<< zwjKKxi7XZh4;&#F9i$VFVHAdJLgC*4cj#Wls_pE)e;eUlG0J_nn*uRe>B9#woIW!< zWeP|i?(UbC=cOsdQ-_I#m8EPZ<#Vn|wFUtG$44!dYK>$wsS9U6({d->hpijiT5d)+ zwsoVd3cqRTz^fcWl0|3sC?JiQ>*qXR<q6n^7LyeuGKWkGL`I0jnB6Lg zb{0lOA`=^8favbR$%&*g+ayG8msvZ@qe%J42A-EdDJAyDN|W{wN|@#@AyS(u_p1Gb z5}kMzs44+U?cCYv5f0`?J)9nWCm!bmqm~a4B8k8!f+^X5p(GxM*yVV|#z}n$NqrzE7L$5+K0cVF-r-k$CiOR0moKm6Z>}zj z`?z*>aiK8x)#ADOUM=+6a`^8D?%jW$*EDml%5~6kGf$tcp-T<1yxzryhzJV{g}IWh zpP8L1%%A5VaN+a0h|Ul5fuNJ{){{R=4XeI-U3>HT!_K>Pe0cFoD8Aa<`sd$7JmnKf zB1$O_TD`-Bq;yuqmZ_YpB>?UC2KQb*T%r6}Y^T*Nw6# zj27n4-~Hps5c9?^0NC~cEjROGZ8NWFZ(e_R^mzTz32LOt%HUnZva1`>(#MiDa zmULZ>XE==N#`dL4g+s&I0r0@#CiMH=X8-_D5=r3R{pT1|xv3KKlTIT f_X9(gO11Vsv5KqQkFgG200000NkvXXu0mjf{QDQm literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/Vault/vault_4.png b/src/main/resources/assets/create/textures/block/Vault/vault_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a6099f41de6305be45bda2b41a43d00a469c47d4 GIT binary patch literal 1404 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 g8e{u9w|RKhGX2IP*SM#J@LnO%s{^_W%F@ delta 667 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 UV*-Yj56l}x&^Oa7)p3pdAJTL8EdT%j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel_top.png b/src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6a2bf8342117a6493fbc69dc8737673997ac006d GIT binary patch literal 5442 zcmeHKYg7~077kVr0Uz{X#iGQZEh$VeYIejhk1-w$24k2aQXUQdj-)U5LEwA!n#3Rm;~7JG%zSe+YGoRXl!nw2 zOmmunU=lV`!(iCH+ci&D&>7&>yIXzDdv*PC@o=}F+S}t+hPb}mKA~unVmJ1kJ0AP| znwgHU|g0@)UVO47ZkO=C%wAPHNV#SzF+qTn`Q$-){Zi{@O z2st$&b_cRCxHx6q;EIi7?v!ttSN#5So~@Rj7F6s-FC5+Td=7u=m36KAsIfm!jox(T zjL(#gyfxWNdFx-2?wsa+`}J|ld^%qL=VxxaJ>2TND$%S4-SQReTg|)HL?F3yN4qt4 z?o3H)aS6@d|IA_LDe1w+G2*>5S-Czbf?Mj2M)@J_mZh@QZfh^T>fgxoN$xDFKQ%Yg zH|eXuk=}x&K|=AYj^>g*<1_L^msCT?EOsBC^L*eX)z)x7*}J@kIlVJZUQ$Q$O7Tf$ z@k#BOVKX)OnHdE;16GbdR=D?a;mjjjT{n5QbD#hsUn#0x#@3USY^s#CWXJB}qZ@b3 z`EtL2{7&`CYufFxExWGO_`jc8yIgvMtdia=_5b=n>Ur5JspUV_>+*#kW_`oGzT}%b zM>o#;Fb73q>&hpcTW~Aj71ZE%w4OgYD$8ZUKCk12AKwnmI&fq|OQza;a6lcitSipT ztEXt9d203DRn{V6|Y&$M&*W2Nb?m+#dnH~;!$?N#^tle!CB?u%3hG&wHX&`t)! zWf>`xsT4BVgWdxjSGZ)2G_r1*Z^Ikv(&#C}M|pdHp(+Y|=N<8k7god-?|b1j3sl|h zxlu4-5@%&*@{uE}8g^u@sH_-Xk;%N{a`DQgZC6+m?{O#Xd;8~(PyKG*kltu_3Efp6 zQ;7{y30orN{_#lV)ER-(BZ(gUm4ho0@Sj2Q98&Ci3&f2$6OSd}OA>G00| zVZDBS{Y&-y4+@T_Z5B6rb&zAtIp`p6S+ zZhJ4|MAxyViTUO3;VWI&7Ka*pJ2Gw^e4Q^6UVYh>HSLELx{P-jpDo<7X#e$_*x8EB zjP`_%8Oc2@!nj}ZyOY$OV_goNJ=|bX=igr1GB&P5vCgY$O^smLg5kE15~`W8q-tr# zm)CcFyz0~tX4pdZdB%|ChZ8sLJ$<(3VEO*4j8;LB*P`XN64l2(}@BKu4HSrcI~Sn-H6nW#>h}Z`#adG3^j@vXnJnsbb0~Bf%7K z1RRJRW+PK!)>IE>uo2fF(em&<3UDW7C7R6!gv+&BtsE<#Lm3meJc&fYg9feNrRcB^h}x)ji)STDT@WxnSJD76$`TgV_yLJ-cD~a<6H%} z5rF*w02hWJF&l!}u!QUE4_1}Res8_0Peq_7*M=InJPyRw=>~Y1%weey<2};D6a$_~ z+-Sl?S&SF~X20I-?;O;iwV0e^T1*6OvgfVEHC&LCJ+iY;ghHw6_n~D>Aaw@22aR?{ z;#fba#7#!mgT0#dBF#%@Y0KA#hJUpNQ`=M9kO3!xxBpC{z=Gy>F#N})HIQ9VY` zRDhgA0v?zrBv2UUu?bAXV+(kgge?i;i`ayij|y=O4)Jlwi6Y8Kf=)oS&RNk^IG_^o z#3G(Bh+sn+7-Yi}q3n3@VMF{N2oqw25J!b}D*7Cd=_-Yk1#=wac8f}jnl+SB2il9& z~P;R6S zO(3`ieS&>~J{SaS2S|(3-2s^GcCZ^nW+YHEWsIRHt&~OQ#-u6jO~nlEYZqh|h1nhL zU;?K*uCM1p(FCsjHkkW3@Sm8}iIi3UzwtbT_Onbknyr*EIm#FnpG08h$MZZ2+|LvZ zrk%-bOjG>Drv88nb`)$R@TH7tPVv=5isQ~PlC-2^7L5 zK}sd!tVb|CqYwpMh-!<$pd|_8K%E}c&40l;`S;c6U%5NO9Nsd@kOsOq(Hv#fKQ{a$ zfDVRPBu3~>)Z;EQ~$HP}{LJ$7$vw|1ur8BnnfS2*1hR9eGgW>rc zeYr3;7LEqSA!da#Y{>T>qlOLj>MVQt8ZZSalE_n=P*hjm!KU`C09* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel_top_connected.png b/src/main/resources/assets/create/textures/block/tunnel/andesite_tunnel_top_connected.png new file mode 100644 index 0000000000000000000000000000000000000000..4b18cd8cf78b88166dff0109d487fd1a9922a297 GIT binary patch literal 5708 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel.png b/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb1b3cb4de511619d1d2eb4f5cb72643cba305c GIT binary patch literal 7255 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel_top.png b/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8287ad0d8679fe6d1b770f6e64f87b0e523fc379 GIT binary patch literal 5398 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 Date: Sat, 22 Oct 2022 19:48:32 +0200 Subject: [PATCH 011/122] Firing up the tunnel generator --- src/generated/resources/.cache/cache | 28 +++++++++--------- .../create/blockstates/andesite_tunnel.json | 24 +++++++-------- .../create/blockstates/brass_tunnel.json | 24 +++++++-------- .../models/block/andesite_tunnel/cross.json | 9 ------ .../block/andesite_tunnel/straight.json | 9 ------ .../models/block/andesite_tunnel/t_left.json | 9 ------ .../models/block/andesite_tunnel/t_right.json | 9 ------ .../models/block/andesite_tunnel/window.json | 9 ------ .../models/block/brass_tunnel/cross.json | 9 ------ .../models/block/brass_tunnel/straight.json | 9 ------ .../models/block/brass_tunnel/t_left.json | 9 ------ .../models/block/brass_tunnel/t_right.json | 9 ------ .../models/block/brass_tunnel/window.json | 9 ------ .../block/tunnel/andesite_tunnel/cross.json | 10 +++++++ .../tunnel/andesite_tunnel/straight.json | 10 +++++++ .../block/tunnel/andesite_tunnel/t_left.json | 10 +++++++ .../block/tunnel/andesite_tunnel/t_right.json | 10 +++++++ .../block/tunnel/andesite_tunnel/window.json | 10 +++++++ .../block/tunnel/brass_tunnel/cross.json | 10 +++++++ .../block/tunnel/brass_tunnel/straight.json | 10 +++++++ .../block/tunnel/brass_tunnel/t_left.json | 10 +++++++ .../block/tunnel/brass_tunnel/t_right.json | 10 +++++++ .../block/tunnel/brass_tunnel/window.json | 10 +++++++ .../create/models/item/andesite_tunnel.json | 6 ++-- .../create/models/item/brass_tunnel.json | 6 ++-- .../com/simibubi/create/AllSpriteShifts.java | 26 ++++++++-------- .../belts/tunnel/BrassTunnelCTBehaviour.java | 5 ++++ .../foundation/data/BuilderTransformers.java | 25 +++++++++------- .../create/models/block/item_vault.json | 10 +++---- .../create/textures/block/Vault/vault_1.png | Bin 2648 -> 0 bytes .../create/textures/block/Vault/vault_2.png | Bin 1388 -> 0 bytes .../create/textures/block/Vault/vault_3.png | Bin 1685 -> 0 bytes .../create/textures/block/Vault/vault_4.png | Bin 1404 -> 0 bytes .../create/textures/block/Vault/vault_5.png | Bin 2204 -> 0 bytes .../create/textures/block/Vault/vault_6.png | Bin 1684 -> 0 bytes .../block/creative_casing_connected.png | Bin 599 -> 495 bytes .../block/creative_fluid_tank_connected.png | Bin 910 -> 973 bytes .../block/vault/vault_bottom_large.png | Bin 0 -> 884 bytes .../block/vault/vault_bottom_medium.png | Bin 0 -> 971 bytes .../block/vault/vault_bottom_small.png | Bin 0 -> 193 bytes .../block/vault/vault_front_large.png | Bin 0 -> 1299 bytes .../block/vault/vault_front_medium.png | Bin 0 -> 891 bytes .../block/vault/vault_front_small.png | Bin 0 -> 300 bytes .../textures/block/vault/vault_side_large.png | Bin 0 -> 866 bytes .../block/vault/vault_side_medium.png | Bin 0 -> 586 bytes .../textures/block/vault/vault_side_small.png | Bin 0 -> 221 bytes .../textures/block/vault/vault_top_large.png | Bin 0 -> 843 bytes .../textures/block/vault/vault_top_medium.png | Bin 0 -> 481 bytes .../textures/block/vault/vault_top_small.png | Bin 0 -> 220 bytes 49 files changed, 184 insertions(+), 160 deletions(-) delete mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json delete mode 100644 src/generated/resources/assets/create/models/block/andesite_tunnel/window.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/cross.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/straight.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json delete mode 100644 src/generated/resources/assets/create/models/block/brass_tunnel/window.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/cross.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/straight.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_left.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_right.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/window.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/cross.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/straight.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_left.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_right.json create mode 100644 src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/window.json delete mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_1.png delete mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_2.png delete mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_3.png delete mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_4.png delete mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_5.png delete mode 100644 src/main/resources/assets/create/textures/block/Vault/vault_6.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_bottom_large.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_bottom_medium.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_bottom_small.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_front_large.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_front_medium.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_front_small.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_side_large.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_side_medium.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_side_small.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_top_large.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_top_medium.png create mode 100644 src/main/resources/assets/create/textures/block/vault/vault_top_small.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 6c5b720b8..1f73f50f1 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -11,7 +11,7 @@ a891d5abbc133288a9ad377b3ea9adad8ee92972 assets/create/blockstates/andesite_allo 7c5ac6149a991dfe125be3ae3c27c0c841e11f6c assets/create/blockstates/andesite_funnel.json 73154ab9fe5463116d06d0732f9a1c2fa817dc3f assets/create/blockstates/andesite_ladder.json 3adca59d03198c273f13c21c6058348c9fa71735 assets/create/blockstates/andesite_pillar.json -1d2d8081581e07d9be4b382aede4f2de4401cc6b assets/create/blockstates/andesite_tunnel.json +98e95355fc7d45fc9d3706ed3912cd0bfb4a41c3 assets/create/blockstates/andesite_tunnel.json 70a2eff30918c6369fc90aaa6a56ffa5c959065a assets/create/blockstates/asurine.json bb61f3f336ebe0ff08d84cb6a83e86a823dac7aa assets/create/blockstates/asurine_pillar.json e555e3c2b2d3f01440e48db4ba88f7e00fd99b6f assets/create/blockstates/basin.json @@ -37,7 +37,7 @@ e69a71fdeb5855b2a59a31598f25eaea589c1748 assets/create/blockstates/brass_encased 288bad07593a8a2c8efaf44bba0ffb0011d36cd3 assets/create/blockstates/brass_encased_shaft.json bd8f3073f3208d0116719a25044a91dd46fc11ac assets/create/blockstates/brass_funnel.json f9234ab4324892587c4b0bf38523ee7770072f6b assets/create/blockstates/brass_ladder.json -672eedcd3520c6d39603449165a23be9c612c620 assets/create/blockstates/brass_tunnel.json +769e12a65262f79b57df9e3300df20d3fca6c3bb assets/create/blockstates/brass_tunnel.json ffe31d5ad0486949b049cf2060d1f34ef7ceaa82 assets/create/blockstates/brown_nixie_tube.json 11ebdd9bd0815833e62ec1bea03a4cdd86ce00f3 assets/create/blockstates/brown_sail.json e81608346d43406ee72cae0f78b8bcfb37ba2d75 assets/create/blockstates/brown_seat.json @@ -629,11 +629,6 @@ eeb2637590e8af1342c5494dea7faab0490f2f3e assets/create/models/block/andesite_fun ee665cf464ead6135de3f60c7e2ac475af6496d7 assets/create/models/block/andesite_ladder.json 882871d4cd7b4925f300c09d00ba58785b27119e assets/create/models/block/andesite_pillar.json 587491f19767bd682bbef00eaa890d4b8a320b7a assets/create/models/block/andesite_pillar_horizontal.json -2294f74b5c30430de89a345af60f6669c975f33a assets/create/models/block/andesite_tunnel/cross.json -17f860947f51e84a3f9b32b10cdf61f863db3afc assets/create/models/block/andesite_tunnel/straight.json -e74aa39f8142293c202e57dbd92e8660818b18b5 assets/create/models/block/andesite_tunnel/t_left.json -c93978d636fe70d456a6e1914b65527cbc18544c assets/create/models/block/andesite_tunnel/t_right.json -2a86780c6825edce8fbdaa118a267fc09ce410b0 assets/create/models/block/andesite_tunnel/window.json 7b2e3b7e9d72286b202bb38ab6e4d69465365d47 assets/create/models/block/asurine.json a9167990e3f894f92a9de24c8b77d040b1c1ff0a assets/create/models/block/asurine_pillar.json e40c3a7e6f7b895770f544d79536c744d18c462f assets/create/models/block/asurine_pillar_horizontal.json @@ -692,11 +687,6 @@ c76668b6b61a3f81a08a1eadaa34fa8bfe68f912 assets/create/models/block/brass_funnel 2d78db12acd90364658b36e8fe7dee7f24ea361b assets/create/models/block/brass_funnel_vertical_push_powered.json aa81eeb9771e59173ecf635f7c5334ac64c83b6d assets/create/models/block/brass_funnel_vertical_push_unpowered.json 5620cf6b033dbfb3c43d03ddad18c432eb821997 assets/create/models/block/brass_ladder.json -520087db8d479c66f85f3483af813fb668f27503 assets/create/models/block/brass_tunnel/cross.json -347ed67bf3426e323354e2d959fc9563dc7eeecd assets/create/models/block/brass_tunnel/straight.json -a959e03ca339badb49fe58ba53d86a84352e91f3 assets/create/models/block/brass_tunnel/t_left.json -0585fbe58da3a8ed0dc98cc7ed79ac067312078d assets/create/models/block/brass_tunnel/t_right.json -a0612a633756433e1b37ddc6d290aa1fc07839ef assets/create/models/block/brass_tunnel/window.json 71cd22dc2d847d317f19afb4b21802fbf5347e0b assets/create/models/block/brown_nixie_tube.json 8ab097caaa0db0915ae9254f7d65092d9171bc60 assets/create/models/block/brown_sail.json 4eed0ad902f5e84f2b6c160f3283e8028640e77d assets/create/models/block/brown_seat.json @@ -1541,6 +1531,16 @@ d257b024117a6003196c1feb85e759a3e1c180f7 assets/create/models/block/tiled_glass_ 6b1727111d9178162598b4ef7106da807d590bf0 assets/create/models/block/tiled_glass_pane_side_alt.json 6b44ab14b227f3c46ee99eecfe47a86c9fb0865c assets/create/models/block/tuff_pillar.json f0faeee9e124a25280fb58bd66045cfb2758b42e assets/create/models/block/tuff_pillar_horizontal.json +adfd211b3eb33497fad7e58de0d4784b8ce698b1 assets/create/models/block/tunnel/andesite_tunnel/cross.json +8765e95adeed03fa8203ca7a9f221392a6f038be assets/create/models/block/tunnel/andesite_tunnel/straight.json +429cd29a4c4781cf09e11c4e90451bdc61d455f6 assets/create/models/block/tunnel/andesite_tunnel/t_left.json +9c679b1033abfe4c44df69eeef60eb44efff47a2 assets/create/models/block/tunnel/andesite_tunnel/t_right.json +7cb18c3795d1481b588ce9d5dd013f45902aac47 assets/create/models/block/tunnel/andesite_tunnel/window.json +6eca538d20ccbc2974ed7c6f01dc6227d33ebc1d assets/create/models/block/tunnel/brass_tunnel/cross.json +ec2bf287791e891f85b71f97ee196002f9b03bf2 assets/create/models/block/tunnel/brass_tunnel/straight.json +37d15648b9358cb8bd4a3f20df40c36ddc07efd7 assets/create/models/block/tunnel/brass_tunnel/t_left.json +2f75336b25f5f0a008878488599e59b3e3504174 assets/create/models/block/tunnel/brass_tunnel/t_right.json +8ac0130f727696786141d7d61261072739c7f72e assets/create/models/block/tunnel/brass_tunnel/window.json dee64127644e7b09168be26b6665389885476e05 assets/create/models/block/veridium.json ebfad96e85ac6107642eaaf48b57315b268355ff assets/create/models/block/veridium_pillar.json c49bb21ef60ff10540952271c863415b4ad07aa0 assets/create/models/block/veridium_pillar_horizontal.json @@ -1641,7 +1641,7 @@ bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_enca 105a9946b9e4d5e949f6d557cfde750227463bff assets/create/models/item/andesite_funnel.json 4c9232a6249ad1ef51a7978a8e642a8c88dda0ab assets/create/models/item/andesite_ladder.json 75b8b00c2418b9660d35a7fabd0774925cf1c02f assets/create/models/item/andesite_pillar.json -795541cf7205d90531a23cd5b388f93a03bbf925 assets/create/models/item/andesite_tunnel.json +473be56fe1f44809ffecbb3eb86107af3ca7a569 assets/create/models/item/andesite_tunnel.json cc6471e712a6db7856e62a99b8ef7e378480fa27 assets/create/models/item/asurine.json 840a34731a823e185a180bef029dd16ee3f78541 assets/create/models/item/asurine_pillar.json cf9e35bfea0b0a324e1c6384990425b3d359792c assets/create/models/item/bar_of_chocolate.json @@ -1669,7 +1669,7 @@ d5e8b577aee56671e117a4a2ac93e58680b51949 assets/create/models/item/brass_ingot.j 1f93ec11bd28a3f063f27e8c53fc45d027218560 assets/create/models/item/brass_ladder.json 44565b9b2c227e99e336357e5caa588438e7076b assets/create/models/item/brass_nugget.json f7aca6aff65e1de269a99cf2a280d9841b7a0076 assets/create/models/item/brass_sheet.json -427bef12405e2a99fbf49e27ea5944add244252a assets/create/models/item/brass_tunnel.json +d8ee5b3cc82e5465f5c7ada88cfd444c62e3c84d assets/create/models/item/brass_tunnel.json 24df6f8391d8ba09cef46e69d65d32ea770745cd assets/create/models/item/brown_seat.json 9d66f8bdc2db7cacf52168d5a267d5f52a2b351c assets/create/models/item/brown_toolbox.json 54211d3bdbeba2ea4dbaed43daa740ae3331640f assets/create/models/item/brown_valve_handle.json diff --git a/src/generated/resources/assets/create/blockstates/andesite_tunnel.json b/src/generated/resources/assets/create/blockstates/andesite_tunnel.json index c38dbb250..108c92e75 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_tunnel.json +++ b/src/generated/resources/assets/create/blockstates/andesite_tunnel.json @@ -1,45 +1,45 @@ { "variants": { "axis=x,shape=straight": { - "model": "create:block/andesite_tunnel/straight" + "model": "create:block/tunnel/andesite_tunnel/straight" }, "axis=z,shape=straight": { - "model": "create:block/andesite_tunnel/straight", + "model": "create:block/tunnel/andesite_tunnel/straight", "y": 90 }, "axis=x,shape=window": { - "model": "create:block/andesite_tunnel/window" + "model": "create:block/tunnel/andesite_tunnel/window" }, "axis=z,shape=window": { - "model": "create:block/andesite_tunnel/window", + "model": "create:block/tunnel/andesite_tunnel/window", "y": 90 }, "axis=x,shape=closed": { - "model": "create:block/andesite_tunnel/straight" + "model": "create:block/tunnel/andesite_tunnel/straight" }, "axis=z,shape=closed": { - "model": "create:block/andesite_tunnel/straight", + "model": "create:block/tunnel/andesite_tunnel/straight", "y": 90 }, "axis=x,shape=t_left": { - "model": "create:block/andesite_tunnel/t_left" + "model": "create:block/tunnel/andesite_tunnel/t_left" }, "axis=z,shape=t_left": { - "model": "create:block/andesite_tunnel/t_left", + "model": "create:block/tunnel/andesite_tunnel/t_left", "y": 90 }, "axis=x,shape=t_right": { - "model": "create:block/andesite_tunnel/t_right" + "model": "create:block/tunnel/andesite_tunnel/t_right" }, "axis=z,shape=t_right": { - "model": "create:block/andesite_tunnel/t_right", + "model": "create:block/tunnel/andesite_tunnel/t_right", "y": 90 }, "axis=x,shape=cross": { - "model": "create:block/andesite_tunnel/cross" + "model": "create:block/tunnel/andesite_tunnel/cross" }, "axis=z,shape=cross": { - "model": "create:block/andesite_tunnel/cross", + "model": "create:block/tunnel/andesite_tunnel/cross", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/brass_tunnel.json b/src/generated/resources/assets/create/blockstates/brass_tunnel.json index 1566c2619..b457c51e8 100644 --- a/src/generated/resources/assets/create/blockstates/brass_tunnel.json +++ b/src/generated/resources/assets/create/blockstates/brass_tunnel.json @@ -1,45 +1,45 @@ { "variants": { "axis=x,shape=straight": { - "model": "create:block/brass_tunnel/straight" + "model": "create:block/tunnel/brass_tunnel/straight" }, "axis=z,shape=straight": { - "model": "create:block/brass_tunnel/straight", + "model": "create:block/tunnel/brass_tunnel/straight", "y": 90 }, "axis=x,shape=window": { - "model": "create:block/brass_tunnel/window" + "model": "create:block/tunnel/brass_tunnel/window" }, "axis=z,shape=window": { - "model": "create:block/brass_tunnel/window", + "model": "create:block/tunnel/brass_tunnel/window", "y": 90 }, "axis=x,shape=closed": { - "model": "create:block/brass_tunnel/straight" + "model": "create:block/tunnel/brass_tunnel/straight" }, "axis=z,shape=closed": { - "model": "create:block/brass_tunnel/straight", + "model": "create:block/tunnel/brass_tunnel/straight", "y": 90 }, "axis=x,shape=t_left": { - "model": "create:block/brass_tunnel/t_left" + "model": "create:block/tunnel/brass_tunnel/t_left" }, "axis=z,shape=t_left": { - "model": "create:block/brass_tunnel/t_left", + "model": "create:block/tunnel/brass_tunnel/t_left", "y": 90 }, "axis=x,shape=t_right": { - "model": "create:block/brass_tunnel/t_right" + "model": "create:block/tunnel/brass_tunnel/t_right" }, "axis=z,shape=t_right": { - "model": "create:block/brass_tunnel/t_right", + "model": "create:block/tunnel/brass_tunnel/t_right", "y": 90 }, "axis=x,shape=cross": { - "model": "create:block/brass_tunnel/cross" + "model": "create:block/tunnel/brass_tunnel/cross" }, "axis=z,shape=cross": { - "model": "create:block/brass_tunnel/cross", + "model": "create:block/tunnel/brass_tunnel/cross", "y": 90 } } diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json deleted file mode 100644 index 26d9a16a2..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/cross", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json deleted file mode 100644 index c09b27740..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/straight", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json deleted file mode 100644 index 2f3779c2d..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_left", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json deleted file mode 100644 index 52212c4a7..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_right", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json deleted file mode 100644 index 71fd705dc..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/window", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json b/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json deleted file mode 100644 index 35f563cc3..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/cross", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json b/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json deleted file mode 100644 index 219f22257..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/straight", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json deleted file mode 100644 index 62165f533..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_left", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json deleted file mode 100644 index a9da1c54a..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_right", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/window.json b/src/generated/resources/assets/create/models/block/brass_tunnel/window.json deleted file mode 100644 index 0c62dcab8..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/window.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/window", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/cross.json b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/cross.json new file mode 100644 index 000000000..af761a56e --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/cross.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/cross", + "textures": { + "top": "create:block/tunnel/andesite_tunnel_top", + "tunnel": "create:block/tunnel/andesite_tunnel", + "direction": "create:block/funnel/andesite_funnel_neutral", + "frame": "create:block/funnel/andesite_funnel_frame", + "particle": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/straight.json b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/straight.json new file mode 100644 index 000000000..673cdfd5c --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/straight.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/straight", + "textures": { + "top": "create:block/tunnel/andesite_tunnel_top", + "tunnel": "create:block/tunnel/andesite_tunnel", + "direction": "create:block/funnel/andesite_funnel_neutral", + "frame": "create:block/funnel/andesite_funnel_frame", + "particle": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_left.json new file mode 100644 index 000000000..d017afa30 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_left.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/t_left", + "textures": { + "top": "create:block/tunnel/andesite_tunnel_top", + "tunnel": "create:block/tunnel/andesite_tunnel", + "direction": "create:block/funnel/andesite_funnel_neutral", + "frame": "create:block/funnel/andesite_funnel_frame", + "particle": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_right.json new file mode 100644 index 000000000..c3de58242 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/t_right.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/t_right", + "textures": { + "top": "create:block/tunnel/andesite_tunnel_top", + "tunnel": "create:block/tunnel/andesite_tunnel", + "direction": "create:block/funnel/andesite_funnel_neutral", + "frame": "create:block/funnel/andesite_funnel_frame", + "particle": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/window.json b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/window.json new file mode 100644 index 000000000..8813af82e --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/andesite_tunnel/window.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/window", + "textures": { + "top": "create:block/tunnel/andesite_tunnel_top_window", + "tunnel": "create:block/tunnel/andesite_tunnel", + "direction": "create:block/funnel/andesite_funnel_neutral", + "frame": "create:block/funnel/andesite_funnel_frame", + "particle": "minecraft:block/polished_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/cross.json b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/cross.json new file mode 100644 index 000000000..0368020e0 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/cross.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/cross", + "textures": { + "top": "create:block/tunnel/brass_tunnel_top", + "tunnel": "create:block/tunnel/brass_tunnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/straight.json b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/straight.json new file mode 100644 index 000000000..c9a870d81 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/straight.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/straight", + "textures": { + "top": "create:block/tunnel/brass_tunnel_top", + "tunnel": "create:block/tunnel/brass_tunnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_left.json new file mode 100644 index 000000000..bf210e93b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_left.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/t_left", + "textures": { + "top": "create:block/tunnel/brass_tunnel_top", + "tunnel": "create:block/tunnel/brass_tunnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_right.json new file mode 100644 index 000000000..c9ce28061 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/t_right.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/t_right", + "textures": { + "top": "create:block/tunnel/brass_tunnel_top", + "tunnel": "create:block/tunnel/brass_tunnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/window.json b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/window.json new file mode 100644 index 000000000..5efd8ccaa --- /dev/null +++ b/src/generated/resources/assets/create/models/block/tunnel/brass_tunnel/window.json @@ -0,0 +1,10 @@ +{ + "parent": "create:block/belt_tunnel/window", + "textures": { + "top": "create:block/tunnel/brass_tunnel_top_window", + "tunnel": "create:block/tunnel/brass_tunnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_tunnel.json b/src/generated/resources/assets/create/models/item/andesite_tunnel.json index b8a1aa70a..99233d0e7 100644 --- a/src/generated/resources/assets/create/models/item/andesite_tunnel.json +++ b/src/generated/resources/assets/create/models/item/andesite_tunnel.json @@ -1,8 +1,10 @@ { "parent": "create:block/belt_tunnel/item", "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", + "top": "create:block/tunnel/andesite_tunnel_top", + "tunnel": "create:block/tunnel/andesite_tunnel", + "direction": "create:block/funnel/andesite_funnel_neutral", + "frame": "create:block/funnel/andesite_funnel_frame", "particle": "minecraft:block/polished_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_tunnel.json b/src/generated/resources/assets/create/models/item/brass_tunnel.json index b78dea50b..57ef723a1 100644 --- a/src/generated/resources/assets/create/models/item/brass_tunnel.json +++ b/src/generated/resources/assets/create/models/item/brass_tunnel.json @@ -1,8 +1,10 @@ { "parent": "create:block/belt_tunnel/item", "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", + "top": "create:block/tunnel/brass_tunnel_top", + "tunnel": "create:block/tunnel/brass_tunnel", + "direction": "create:block/funnel/brass_funnel_neutral", + "frame": "create:block/funnel/brass_funnel_frame", "particle": "create:block/brass_block" } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index b5efb3573..744f05f12 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -25,8 +25,7 @@ public class AllSpriteShifts { public static final SpriteShiftEntry BURNER_FLAME = get("block/blaze_burner_flame", "block/blaze_burner_flame_scroll"), - SUPER_BURNER_FLAME = - get("block/blaze_burner_flame", "block/blaze_burner_flame_superheated_scroll"); + SUPER_BURNER_FLAME = get("block/blaze_burner_flame", "block/blaze_burner_flame_superheated_scroll"); public static final CTSpriteShiftEntry FRAMED_GLASS = getCT(AllCTTypes.OMNIDIRECTIONAL, "palettes/framed_glass", "palettes/framed_glass"), @@ -35,8 +34,9 @@ public class AllSpriteShifts { VERTICAL_FRAMED_GLASS = getCT(AllCTTypes.VERTICAL, "palettes/framed_glass", "palettes/vertical_framed_glass"), ORNATE_IRON_WINDOW = vertical("palettes/ornate_iron_window"); - public static final CTSpriteShiftEntry CRAFTER_FRONT = getCT(AllCTTypes.OMNIDIRECTIONAL, "crafter_top", "brass_casing"), - CRAFTER_SIDE = vertical("crafter_side"), CRAFTER_OTHERSIDE = horizontal("crafter_side"), + public static final CTSpriteShiftEntry CRAFTER_FRONT = + getCT(AllCTTypes.OMNIDIRECTIONAL, "crafter_top", "brass_casing"), CRAFTER_SIDE = vertical("crafter_side"), + CRAFTER_OTHERSIDE = horizontal("crafter_side"), ANDESITE_ENCASED_COGWHEEL_SIDE = vertical("andesite_encased_cogwheel_side"), ANDESITE_ENCASED_COGWHEEL_OTHERSIDE = horizontal("andesite_encased_cogwheel_side"), BRASS_ENCASED_COGWHEEL_SIDE = vertical("brass_encased_cogwheel_side"), @@ -47,17 +47,17 @@ public class AllSpriteShifts { BRASS_CASING = omni("brass_casing"), COPPER_CASING = omni("copper_casing"), SHADOW_STEEL_CASING = omni("shadow_steel_casing"), REFINED_RADIANCE_CASING = omni("refined_radiance_casing"), RAILWAY_CASING = omni("railway_casing"), RAILWAY_CASING_SIDE = omni("railway_casing_side"), - CREATIVE_CASING = getCT(AllCTTypes.CROSS, "creative_casing"); + CREATIVE_CASING = getCT(AllCTTypes.RECTANGLE, "creative_casing"); public static final CTSpriteShiftEntry CHASSIS_SIDE = omni("linear_chassis_side"), SECONDARY_CHASSIS_SIDE = omni("secondary_linear_chassis_side"), CHASSIS = omni("linear_chassis_end"), CHASSIS_STICKY = omni("linear_chassis_end_sticky"); - public static final CTSpriteShiftEntry BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"), + public static final CTSpriteShiftEntry BRASS_TUNNEL_TOP = vertical("tunnel/brass_tunnel_top"), FLUID_TANK = getCT(AllCTTypes.RECTANGLE, "fluid_tank"), FLUID_TANK_TOP = getCT(AllCTTypes.RECTANGLE, "fluid_tank_top"), FLUID_TANK_INNER = getCT(AllCTTypes.RECTANGLE, "fluid_tank_inner"), - CREATIVE_FLUID_TANK = getCT(AllCTTypes.CROSS, "creative_fluid_tank"); + CREATIVE_FLUID_TANK = getCT(AllCTTypes.RECTANGLE, "creative_fluid_tank"); public static final Couple VAULT_TOP = vault("top"), VAULT_FRONT = vault("front"), VAULT_SIDE = vault("side"), VAULT_BOTTOM = vault("bottom"); @@ -86,14 +86,15 @@ public class AllSpriteShifts { String id = color.getSerializedName(); DYED_BELTS.put(color, get("block/belt", "block/belt/" + id + "_scroll")); DYED_OFFSET_BELTS.put(color, get("block/belt_offset", "block/belt/" + id + "_scroll")); - DYED_DIAGONAL_BELTS.put(color, - get("block/belt_diagonal", "block/belt/" + id + "_diagonal_scroll")); + DYED_DIAGONAL_BELTS.put(color, get("block/belt_diagonal", "block/belt/" + id + "_diagonal_scroll")); } } private static Couple vault(String name) { - final String prefixed = "vault_" + name; - return Couple.createWithContext(b -> getCT(AllCTTypes.CROSS, prefixed, b ? prefixed : prefixed + "_large")); + final String prefixed = "block/vault/vault_" + name; + return Couple.createWithContext( + medium -> CTSpriteShifter.getCT(AllCTTypes.RECTANGLE, Create.asResource(prefixed + "_small"), + Create.asResource(medium ? prefixed + "_medium" : prefixed + "_large"))); } // @@ -117,7 +118,8 @@ public class AllSpriteShifts { } private static CTSpriteShiftEntry getCT(CTType type, String blockTextureName, String connectedTextureName) { - return CTSpriteShifter.getCT(type, Create.asResource("block/" + blockTextureName), Create.asResource("block/" + connectedTextureName + "_connected")); + return CTSpriteShifter.getCT(type, Create.asResource("block/" + blockTextureName), + Create.asResource("block/" + connectedTextureName + "_connected")); } private static CTSpriteShiftEntry getCT(CTType type, String blockTextureName) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java index a903c7497..5c1001594 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BrassTunnelCTBehaviour.java @@ -19,6 +19,11 @@ public class BrassTunnelCTBehaviour extends ConnectedTextureBehaviour.Base { public CTSpriteShiftEntry getShift(BlockState state, Direction direction, @Nullable TextureAtlasSprite sprite) { return direction == Direction.UP ? AllSpriteShifts.BRASS_TUNNEL_TOP : null; } + + @Override + protected boolean reverseUVs(BlockState state, Direction face) { + return true; + } @Override public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos, BlockPos otherPos, 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 7c56ee9c9..dcb3c5922 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -292,33 +292,37 @@ public class BuilderTransformers { public static NonNullUnaryOperator> beltTunnel( String type, ResourceLocation particleTexture) { + String prefix = "block/tunnel/" + type + "_tunnel"; + String funnel_prefix = "block/funnel/" + type + "_funnel"; return b -> b.initialProperties(SharedProperties::stone) .addLayer(() -> RenderType::cutoutMipped) .properties(BlockBehaviour.Properties::noOcclusion) .transform(pickaxeOnly()) .blockstate((c, p) -> p.getVariantBuilder(c.get()) .forAllStates(state -> { - String id = "block/" + type + "_tunnel"; Shape shape = state.getValue(BeltTunnelBlock.SHAPE); + String window = shape == Shape.WINDOW ? "_window" : ""; if (shape == BeltTunnelBlock.Shape.CLOSED) shape = BeltTunnelBlock.Shape.STRAIGHT; String shapeName = shape.getSerializedName(); return ConfiguredModel.builder() .modelFile(p.models() - .withExistingParent(id + "/" + shapeName, p.modLoc("block/belt_tunnel/" + shapeName)) - .texture("1", p.modLoc(id + "_top")) - .texture("2", p.modLoc(id)) - .texture("3", p.modLoc(id + "_top_window")) + .withExistingParent(prefix + "/" + shapeName, p.modLoc("block/belt_tunnel/" + shapeName)) + .texture("top", p.modLoc(prefix + "_top" + window)) + .texture("tunnel", p.modLoc(prefix)) + .texture("direction", p.modLoc(funnel_prefix + "_neutral")) + .texture("frame", p.modLoc(funnel_prefix + "_frame")) .texture("particle", particleTexture)) .rotationY(state.getValue(BeltTunnelBlock.HORIZONTAL_AXIS) == Axis.X ? 0 : 90) .build(); })) .item(BeltTunnelItem::new) .model((c, p) -> { - String id = type + "_tunnel"; - p.withExistingParent("item/" + id, p.modLoc("block/belt_tunnel/item")) - .texture("1", p.modLoc("block/" + id + "_top")) - .texture("2", p.modLoc("block/" + id)) + p.withExistingParent("item/" + type + "_tunnel", p.modLoc("block/belt_tunnel/item")) + .texture("top", p.modLoc(prefix + "_top")) + .texture("tunnel", p.modLoc(prefix)) + .texture("direction", p.modLoc(funnel_prefix + "_neutral")) + .texture("frame", p.modLoc(funnel_prefix + "_frame")) .texture("particle", particleTexture); }) .build(); @@ -390,8 +394,7 @@ public class BuilderTransformers { } public static NonNullUnaryOperator> backtank(Supplier drop) { - return b -> b - .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + return b -> b.blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .transform(pickaxeOnly()) .addLayer(() -> RenderType::cutoutMipped) .transform(BlockStressDefaults.setImpact(4.0)) diff --git a/src/main/resources/assets/create/models/block/item_vault.json b/src/main/resources/assets/create/models/block/item_vault.json index a89cecfa0..2769d4993 100644 --- a/src/main/resources/assets/create/models/block/item_vault.json +++ b/src/main/resources/assets/create/models/block/item_vault.json @@ -2,11 +2,11 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/vault_bottom", - "1": "create:block/vault_front", - "2": "create:block/vault_side", - "3": "create:block/vault_top", - "particle": "create:block/vault_bottom" + "0": "create:block/vault/vault_bottom_small", + "1": "create:block/vault/vault_front_small", + "2": "create:block/vault/vault_side_small", + "3": "create:block/vault/vault_top_small", + "particle": "create:block/vault/vault_top_small" }, "elements": [ { diff --git a/src/main/resources/assets/create/textures/block/Vault/vault_1.png b/src/main/resources/assets/create/textures/block/Vault/vault_1.png deleted file mode 100644 index fffde54e95375169ecf38d1316634c69ae755504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2648 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 diff --git a/src/main/resources/assets/create/textures/block/Vault/vault_4.png b/src/main/resources/assets/create/textures/block/Vault/vault_4.png deleted file mode 100644 index a6099f41de6305be45bda2b41a43d00a469c47d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 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 delta 556 zcmV+{0@MBP1J?wQB#|){f3R+-uWhHFU7wy@o|aOVl~I;mHECQlXjCp;Q!QLXC{IHt zPADZfG8;S=6)6x8Bn}H61q2xZ02KfL5dZ)U000C4007Lb?z;d00li5?K~#9!-Ik4N z!!QhlFJ7l8-qK}D()WMV$$IMT5@B6yRTVp`f3>dbGHqX<4;|3R z$NF9h?x&Q?s<>T$9@-)6W$feQ?bu!_b;e<(@7f@>jD6IyKMP)Or3!k6L_RnZvtsOn zGHI5m{CigsZ{2$2eq90OQkXg zJ($76!Yq`T89c7ce_;>Wcl$rE!hRM4AMNx%*$Vr4kNjiv^KOORz3zPo`>;Z8-aSJi z24~7LD3fLxoGHu5WsZ9wS%%%wZoae3JHNrpz-lCIC}6 zEX-jK7M;be=eRP5J$ODqW?kCl-hHOX?;mMXyWG3a6#0HXe=xaspQ)Cy@Am_fz;on- zGcha1J~&gB!I_vP@WGj~455r!_WOY;%TUUcWhiCJvfmF(#BmSYK44;wdf@hhc9Zbh9!|Jb~&s8i&F3Z@0llohySR>=R;zt#i4ALR8f udT{PzMLlr)B7q&|ut#n`Xdlc`4}JmKtIO3B9*2(r0000Lb*6oQNug-QTHV*p!q1Z#lZOv|kr;=I6@-Btcy<79U;tZkk`o;O000SaNLh0L01m?d01m?e$8V@)0008O zNkl5=ff0)mpFhR<-J?)&KwJd}p{M5MZ+&{kEKhgxkYA1I%WH zXxet?Qrk8{N~O9cRFx9CHl0#Zie5{9V+Jt@F$~h^ex$Miqyq-X0J=^AbOF$7EoqFAQtKYcl@;32NnKoY9WG@2!sBqEJN2K$l$g-##twJJW>eb& z&jO~E4@dw3c5o5T%Zf?6%Tb305@$@a0!RXA23R*BdBfdp2?RiQ3t%TY1=D_i97kd_ zFaiJ|)_|SrFo_=ZIQFRtlQfD)L4hd&3;=kerIh5vNWsDfWI`5zCS7tO0Cp9e4?JLo z%mB$w^vg(>T?Om{v~B`qoH#FI46uW@0VFRYR^ga};DZH#_JQ5VIBPiovNa&T6Hiq@ zS8(FiRmdyI0_@-zP*M;q(B9~5_DZW-TKt57omSpZlCm3WW?EESYiA^X#22YZ0`!GDbhm6)iI7V&`GPNLmM*1iV; z2&%y>>N5Js!sJ|Sv>U${SC5}uKfQVO{KZS;uU=pIGS#4tpWL37U4L===I!;noA)2? zJ|h40`PP@I26g=8_O$GO`iuK7U%wr`|M+=$K>q9Zy)Sdk!@)kOJuSQbf8zs6vk(5o z$95DCcxPf}Ot$4)dA$=)2AuydWa0rTK!7K_3Maw6*u%&eI*h9yR{%PaAn~(u1b{{F zRsh5UR$u_ADu96;4j2%{g8;~yfII-a3Fmlljt6r311w&A*a;a92K)d3002ovPDHLk FV1kICkyZcz delta 869 zcmV-r1DgEJ2aX4jB#|){f3R+-&R56FQ^dwkzr#zrpIx7~KCPBgm$N#li%g7!N`{L? zjHWN0n>Lb~HIkh%l%Oe>d_RDkCz5nOe4Qnebv=8VBaxUQlWRJ2lN^kZ8i*V|H}p0 z$RWRdquIvRPqKd`88OfaJ4bam$0uD*m+|uCQr;=%&hk?+L@}IH!=_BAxG7Vyp{Pd$XRe<|-;0~AQzrc97izbVg(2#g{3$n<#g>Gb9K+xIU%mhbDUN8}!6 zM5c#d$EUB)-+X@cp?rV;@_=kc@O1zC$HmXvuNU9S_n*}hvOYFlILLMlaA5(@nhDty zP=h|#4SDyK*hI@dgp`=Q_rd27Lzy7=re8eb`2>5Ej87x1E zUEVPbkFCcUmi*L4FkUY>aEAi50zp~)aakb6@7dtW#N$= zJBJs{{I)=DFJR06Z(9%JBE}h>^K%F!e(L(1a*|BPJ7xlz2M+TZ#46yk2o$UW3<7y% zKNwU{*f$ZxBA^lE+zJ4LzY)+B)^~Sza*gKr98Uu4f9`HD#WExcEu2AZ=ntAL&dWCtjFz-MGEsxoU4^*kUuKzV&d9v)k01tzA#Y}No)o>$hI zU^6W>S8j7wRzd1vtt(^mXwI-w*%ZJOkO>E~ll$Z|{5Ab(sLa4Kza^k-3xuO1@5|f! z@ekbKTMR#wQ%n70)xZ?M5RX`G;5P*9qAm-#O$8jiYl~C{vKhg29;p3~Yzj>0f!hDb v<~o?p1GWE=t%bE~4IEix-@V{Wflc`@W5G9}jwtLk00000NkvXXu0mjf#^0Gf diff --git a/src/main/resources/assets/create/textures/block/vault/vault_bottom_large.png b/src/main/resources/assets/create/textures/block/vault/vault_bottom_large.png new file mode 100644 index 0000000000000000000000000000000000000000..96d89e9e0c9b10505bb3f6992900cb3aa2f6fa02 GIT binary patch literal 884 zcmV-)1B?8LP)4Tx04UFukxeK>Q5?m82GK;6Ns`4|APY)JmKq{OX^ir<@ZK9U)Vw#-do$Ts zD%&Xw9~*;(jWt^fTcwnblBJauv5}tteWPYlqujdPU+3O)y7ycNHK9Ti9yZfXMtE6xa6OY& zyek|sSM`|isc^R=7Zko%x>4X4#R;DSDl_CnBO}5gVJ%U@MhTm%jwL)G+#a)R$q&pG zIHq_*v6al4KlfBGtXr{XXOu3pjd3QJVj2yDENdjm&?BoYic3WH!)5%fzJFR=hPc)+ z#W6|>3*Gml{@{1FZoI#*kW?3j>L<^8>wubV_{w?S=b`6)9YN(IT-Zf_Di1^NqUVZQ z`vEj;!r5g}Gj`y73tAr1x}*D2rOZG)4zDNjP4m!n4Z+1iZ$JAS-$7Kmn!JL&edtU` z_EMR5*OvD7=NZ30!rzPMazt0*6}$HHjSIC6&qIZW0$~&<&y-u-Dii zJq7g>_I$!1KLn2)?09H^A3GsN(kvbt6euV_vTYt3R0Znl@z4Nm=9+hTXrKx_@px>2 zY-{cv9vWc2RJc4cK)qY$Y#te)-nDGm=8*yFjY#9RkoG(>K)n%DuwmDp`Gf&pSHYW` zNdZBN6f|g|f(9*Wx(<#}XP{#-MoWVOX9#@b6S~259@O?a53ch7udCq0&7@tcz}n92 zH8fz`1rE0i@Tq@s#o-9A0*AW>YZpx(wF(Ut1MVbo3U(6V-0t!d;5?eHW8Gl={{pL^ z&?G5r{!oBV6}{E3#l(v4HW}^GWhX%AaV!6qB6F8e-tzT0000< KMNUMnLSTZzG=RbY literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_bottom_medium.png b/src/main/resources/assets/create/textures/block/vault/vault_bottom_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..2897be1ba0831e32daf23de6ab8703b672285623 GIT binary patch literal 971 zcmV;+12p`JP)4Tx04UFukxeK>Q5?m82GK;6Ns`4|APY)JmKq{OX^ir<@ZK9U)Vw#-do$Ts zD%&Xw9~*;(jWt^fTcwnblBJauv5}tteWPYlqujdPU+3O)y7ycNHK9Ti9yZfXMtE6xa6OY& zyek|sSM`|isc^R=7Zko%x>4X4#R;DSDl_CnBO}5gVJ%U@MhTm%jwL)G+#a)R$q&pG zIHq_*v6al4KlfBGtXr{XXOu3pjd3QJVj2yDENdjm&?BoYic3WH!)5%fzJFR=hPc)+ z#W6|>3*Gml{@{1FZoI#*kW?3j>L<^8>wubV_{w?S=b`6)9YN(IT-Zf_Di1^NqUVZQ z`vEj;!r5g}Gj`y73tAr1x}*D2rOZG)4zDNjP4m!n4Z+1iZ$JAS-$7Kmn!JL&edtU` z_EMR5*OvD7=NZ30!rzPMa+s000McQchF<|NsC0{{R|G14aM<010qNS#tmY3ljhU3ljkVnw%H_00Fy6L_t(o zN9~r|a>F1DM8U}Y|4+`Yv{sxN$E36`9q)J&SxCnqE<-7$?u6G@NB#OHxkC}Y)J1~H z^rr(-UP^8XfrxL7lx7zHA)0zoUdo-j_F^kYtF3t4Xw8}xcA~&AQ(g+LUAq7l084;j zV1MWh*}R9?!R9*VFi;$#o{H9){s z4dR>c0QDTeAq)T*(*<}9E&+I!J^)2z`y~LcASf?oaAR;o04FFfh5FU4{StuR!#dy| z7ze|wgYB9}0P+ZM!vT4bJOO087ZKy0x$2@bQ7s7O z=a+3}JmqBBA?2my4te-AV0H-8MVy|-Us*^;0GH}Jz}9{P{u1!vG$N0HpDiRjT$OO= t>I~QDQl8#Sue;aDvO~&C$sH=CJOI!NIZLh{DV+cS002ovPDHLkV1l0=rrZDk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_bottom_small.png b/src/main/resources/assets/create/textures/block/vault/vault_bottom_small.png new file mode 100644 index 0000000000000000000000000000000000000000..2706fe389caa238132d6c8de1c3ba4a93f8e60f5 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv%n*=n1O-sFbFdq&tH)O z6twVkaSV~ToSXo(g^kV4RaHSiD8V2t!JsgWA!uFKs&$HvPKpj~tFt{gOeF%CABG*! fZMAToz{s#JQ2h9^H{NAHGZ;Kw{an^LB{Ts5+IKP_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_front_large.png b/src/main/resources/assets/create/textures/block/vault/vault_front_large.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6f30779834029660cf0d49a2cfa6f712f202b8 GIT binary patch literal 1299 zcmV+u1?>8XP)4Tx04UFukxeK>Q5?m82GK;6Ns`4|APY)JmKq{OX^ir<@ZK9U)Vw#-do$Ts zD%&Xw9~*;(jWt^fTcwnblBJauv5}tteWPYlqujdPU+3O)y7ycNHK9Ti9yZfXMtE6xa6OY& zyek|sSM`|isc^R=7Zko%x>4X4#R;DSDl_CnBO}5gVJ%U@MhTm%jwL)G+#a)R$q&pG zIHq_*v6al4KlfBGtXr{XXOu3pjd3QJVj2yDENdjm&?BoYic3WH!)5%fzJFR=hPc)+ z#W6|>3*Gml{@{1FZoI#*kW?3j>L<^8>wubV_{w?S=b`6)9YN(IT-Zf_Di1^NqUVZQ z`vEj;!r5g}Gj`y73tAr1x}*D2rOZG)4zDNjP4m!n4Z+1iZ$JAS-$7Kmn!JL&edtU` z_EMR5*OvD7=NZ30!rzPMa^LkI}oGA2Cy+DM^{RJ0et@|acHJ1Z{@nM?6 z6vptu3!FI+*x;>+F{PYx&T|J4Lz!YU)_Hp*m~4q@z5>g#d;#BI-whZ75K}v+SZtTT zM2(~r9nf14jq4DEl9;8W&qzl=p$4gRGpNv@kr}@o!q!-h^AsH7)E+^IAef>{Atg!l zfRuc4(Ssm%OCSLw`FYtj@BxUH*;73rz#=7!_^pd_e6ePL?r)pl!t0-PnZJ z83dyyPHi8~6Bly>689p;UYv$aeDolDmu1jW-{!*}Xa-WkHRo%KF5tYCAQ_AaG?akO zZAiQ!UN?;Abg4mKiU*gLO#wF-JcwNCKsN+5u^g#Ck&|D+|h05DL7!xcf zDL^qI@c1HcJvf%3QuY9L-Hil-XA>38w>cBq#6CeF0ZP!l{Id`y4^YPv(n$|cLf}Ui zhGI|b!b8fha)8;8fMI~S&G}s7!qM2q!(Lz93hDdOV@hT8pP$kAT4|PA<)X*3A{r86Fj9AMLt5 zK=4v-cFW-i7}#5(-6;XiZ{(nzdT?3zB3H*a?SjK=&GYi; zp>*z)U@f(*>&o9L!~kYp0<)#gcD;1+Ar%zUC9o?S{2ryO-HWDo)_~$YRzuqZfx#Y< zt2n?>yHvNgf@`eJ#C5&-ZMc{};dtHuD?S7t0^&pP9}wK{{{TH8**|TqfA|0Z002ov JPDHLkV1h*tQB?o{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_front_medium.png b/src/main/resources/assets/create/textures/block/vault/vault_front_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7e446fd7ba033fabae7b2098d021f0c3f478c0 GIT binary patch literal 891 zcmV->1BCpEP)Px#1ZP1_K>z@;j|==^1poj5IZ#YgMKC%zK}bYXS5awcVuXTspPQ4swyrriLOnc4 zK|xSNNLoftVM$hLOI~qSYk@U1JuxshD=RSo004sSJy`$%026dlPE-H?|NsC0|NsC0 z|NsC0|NsC00J44D2mk;832;bRa{vGi!vFvd!vV){sAK>D0<1|yK~z{r?U&(lqc9AF z!IqIRNr1lp!`@14)$7HyDL-%eO*@%c>_rl>P=>dE7{-+HUr-JxJ1LFBlfjszOw&}R zazHttY=~qyP!F&_jautWCDizp)z+5Va=YL0M>%j27njyllXMKGQQPck zIFy5eE1sXsO~@eYTEFF~F91{OiZV{CS>+p~eo4Uh2)gM#hI zz(b%McmT)&7BD!g0St}`^lRW%m@8^meMykQZRfW<-kS1d=`Nl7>5Vt;Mna8U{HD~ ztSa1YP!1@Yh3MLiU{!c1#-uvKhH`+dwiyf7a|78h!PtxfC)xTq?7#5{K zs$}dRy9Q~8LqIv8Z0vh?(9Dv?{R7GYWurgpj&N}Bk?~JCFbx@adfj1r7(YWfp#07- z;P(Nif6y`fj$zCktbKURPj~!|0fkT=eoQQqsK3mB27;j$11#pZhT}>7Wrj4(t@!YG zD{Y>x8R%hv9~xH-%KKPr^Y6tJj!tX6_F@Dcf{l-tB9QtKLA~@C;~ik*@0AF27H@R; zK%b}nGB8+m^Zr>k>$22e#?FE@ac8}97VI$MfP0^^<4FBwaGXE!!{hw+_6OoK?5_}) RjpG0S002ovPDHLkV1n*3k_!L; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_front_small.png b/src/main/resources/assets/create/textures/block/vault/vault_front_small.png new file mode 100644 index 0000000000000000000000000000000000000000..94cd2678a5b49b1438f642e95445a84599195071 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF(o{Zw_T)X=)>&FOIXVWoctpARC3=QsddC&o z+IX0n*cuv`C#pO>0MyG_;1OBOz`%DHgc*65w^~*IPLlu1-7l{UfkWi{hSAr(W>(I_xMs)l&!n9xB4m1 zgezJK4Bcm<_HwH%DiT&P5?}H6n2*8>)~=9>l9DZ3fJWH-zkRWA|G7@b8|!5_=1CZF oNbcU%)*_*8WWd$buz-Q#Yo>X?ho9RFfDU5tboFyt=akR{07{H$d;kCd literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_side_large.png b/src/main/resources/assets/create/textures/block/vault/vault_side_large.png new file mode 100644 index 0000000000000000000000000000000000000000..b492ffa407766e545a10604ff24a3aa92161db6f GIT binary patch literal 866 zcmV-o1D*VdP)4Tx04UFukxeK>Q5?m82GK;6Ns`4|APY)JmKq{OX^ir<@ZK9U)Vw#-do$Ts zD%&Xw9~*;(jWt^fTcwnblBJauv5}tteWPYlqujdPU+3O)y7ycNHK9Ti9yZfXMtE6xa6OY& zyek|sSM`|isc^R=7Zko%x>4X4#R;DSDl_CnBO}5gVJ%U@MhTm%jwL)G+#a)R$q&pG zIHq_*v6al4KlfBGtXr{XXOu3pjd3QJVj2yDENdjm&?BoYic3WH!)5%fzJFR=hPc)+ z#W6|>3*Gml{@{1FZoI#*kW?3j>L<^8>wubV_{w?S=b`6)9YN(IT-Zf_Di1^NqUVZQ z`vEj;!r5g}Gj`y73tAr1x}*D2rOZG)4zDNjP4m!n4Z+1iZ$JAS-$7Kmn!JL&edtU` z_EMR5*OvD7=NZ30!rzPMaJMR};`)b0QO zc5Q(yQbk>dF2);46zN$XfK0s-DZNXI0kpBUs<2Jvd#yF_-h8APpl(pkIcy~Ah^p%r z)pd^`254N58V0yPbkq0P>1iHVqY$(J7>03#3q&^ovJD^(;rt{zX%1k-d=-K*+DB{j zV-DbbNCCYRF!jJEVgWE8!qfvXAR7V#T$2Kl5V}0T*=Lgjv_^F+0J8$nd4Mk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0}1^9%x8dzC4dbng}Cbcw`&!0Wn(J{cqBg)dk$VAz4C2}Ee2KfTA%Jc-=Q?ajpN)C zJ71-F=M9gsEL?gpN?f)_;Edt39ZE$p7dVA~F%DL`Wi|#8T{Eb z7L5#SoNmvHVg${qrR@b7B$ZDnEj_^UI{+WTb3noEU@nS!Pt;1_?`I$&n?RXNoqFtdwoS4uJCVQ zZkJ8yyw1NX$fIGq*hkZbdm?wlKD__sm>;}%TWN$v!|Q~HOs6uEnSQmsHoA9mrscgt z;Z1k(=C)6m(EkS*KMbC( KelF{r5}E+GtMX6) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_side_small.png b/src/main/resources/assets/create/textures/block/vault/vault_side_small.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe9d492b9c9573b2840201705a13d56bc7e9d79 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF4nJ@ErzW#^d=bQh>WPK=1$n literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_top_large.png b/src/main/resources/assets/create/textures/block/vault/vault_top_large.png new file mode 100644 index 0000000000000000000000000000000000000000..1816a5ae02f92a7a3d126da363a47cb42ad2e4f6 GIT binary patch literal 843 zcmV-R1GM~!P)4Tx04UFukxeK>Q5?m82GK;6Ns`4|APY)JmKq{OX^ir<@ZK9U)Vw#-do$Ts zD%&Xw9~*;(jWt^fTcwnblBJauv5}tteWPYlqujdPU+3O)y7ycNHK9Ti9yZfXMtE6xa6OY& zyek|sSM`|isc^R=7Zko%x>4X4#R;DSDl_CnBO}5gVJ%U@MhTm%jwL)G+#a)R$q&pG zIHq_*v6al4KlfBGtXr{XXOu3pjd3QJVj2yDENdjm&?BoYic3WH!)5%fzJFR=hPc)+ z#W6|>3*Gml{@{1FZoI#*kW?3j>L<^8>wubV_{w?S=b`6)9YN(IT-Zf_Di1^NqUVZQ z`vEj;!r5g}Gj`y73tAr1x}*D2rOZG)4zDNjP4m!n4Z+1iZ$JAS-$7Kmn!JL&edtU` z_EMR5*OvD7=NZ30!rzPMaYV72Pk-d-H5hr`RD9a1ASw)@&0E#cm3PTiIm@vl8sS`|-{OCPx(e7%GlFaz%W;0#rW2Y?^}$Z-%L`gM+O zFwWQ~?rifyz_JP(0O|Y0VPCsH1b_?tFK{$WQyKsF({_Isl2#%5K}x?L?0cQ_>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e1o(uw8dzBbhX-b6Cbcw`&!0Vc&$e}z7EX?i0WKa^yL?RsJgvu1-MPcR@Bi(psM#kCCQXPv!J{7Y;Nur#kr&GhCok2q-a3Ebaks4f zDwVVDzHzZw*!enr&dTRo)_LW2ay)!?*z4Z??r+`_Dmr5$)5e(1W| zzSoagE0|UGGqD`4V^+Ap(6o31TSZYO{{)$zVh-C_BW|%z$Ys1cy&;3UVJEl47p9N{ zX>xbgRT>yMe9}H(%3oI~?#AX(d;aww_Gp>PCqJ^bvbS%qWD@9qtN6Y1?(M(!fA$yr zh;@*P-1#zRUb@^DzN?2{A7X#-Vb=ymo~?R7jm;*%Y-XGh-nMm(YpQ(6Hem2Ec)I$z JtaD0e0suS5%%cDR literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/vault/vault_top_small.png b/src/main/resources/assets/create/textures/block/vault/vault_top_small.png new file mode 100644 index 0000000000000000000000000000000000000000..d247fee23ed19bbf6921d51eb837071af9bf6dba GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF4nJ@ErzW#^d=bQh?bsFhRh%?F*lQ zM*57MS?A|nULJln<;9$>RbSV|YNrRBYLMpG&XlKlMAD6k;q@2i$p35?!ht3+c)I$z JtaD0e0sw6DMlJvV literal 0 HcmV?d00001 From 20d3d32cc71003b3252702a2ebe69748ad37a2c5 Mon Sep 17 00:00:00 2001 From: Kryppers <65094918+Kryppers@users.noreply.github.com> Date: Sun, 23 Oct 2022 00:38:16 +0100 Subject: [PATCH 012/122] Spit and Shine part 3: The Purge Replaced textures on models referencing redundant assets First batch of redundant assets removed Minor model optimisations. --- .../java/com/simibubi/create/AllBlocks.java | 2 + .../models/block/content_observer/block.json | 30 ++- .../models/block/creative_motor/block.json | 104 +++++----- .../block/creative_motor/block_vertical.json | 140 +++++++------ .../models/block/creative_motor/item.json | 89 +++++---- .../models/block/funnel/block_horizontal.json | 2 +- .../create/models/block/funnel/flap.json | 2 +- .../models/block/reinforced_rail/block.json | 136 ------------- .../models/block/reinforced_rail/block_n.json | 160 --------------- .../models/block/reinforced_rail/block_s.json | 160 --------------- .../block/reinforced_rail/block_s_n.json | 184 ------------------ .../rotation_speed_controller/block.json | 6 +- .../rotation_speed_controller/bracket.json | 41 ++-- .../block/rotation_speed_controller/item.json | 10 +- .../models/block/smart_chute/block.json | 86 +++----- .../block/smart_chute/block_powered.json | 3 +- .../create/models/block/stockpile_switch.json | 52 +++-- .../textures/block/andesite_alloy_mesh.png | Bin 289 -> 0 bytes .../create/textures/block/andesite_bricks.png | Bin 651 -> 0 bytes .../create/textures/block/andesite_frame.png | Bin 224 -> 0 bytes .../create/textures/block/andesite_funnel.png | Bin 286 -> 0 bytes .../textures/block/andesite_funnel_back.png | Bin 744 -> 0 bytes .../block/andesite_funnel_neutral.png | Bin 296 -> 0 bytes .../block/andesite_funnel_plating.png | Bin 492 -> 0 bytes .../block/andesite_funnel_powered.png | Bin 290 -> 0 bytes .../textures/block/andesite_funnel_pull.png | Bin 290 -> 0 bytes .../textures/block/andesite_funnel_push.png | Bin 288 -> 0 bytes .../textures/block/andesite_funnel_slope.png | Bin 239 -> 0 bytes .../textures/block/andesite_funnel_tall.png | Bin 280 -> 0 bytes .../block/andesite_funnel_tall_powered.png | Bin 287 -> 0 bytes .../create/textures/block/andesite_tunnel.png | Bin 898 -> 0 bytes .../textures/block/andesite_tunnel_top.png | Bin 242 -> 0 bytes .../block/andesite_tunnel_top_window.png | Bin 297 -> 0 bytes .../textures/block/brass_casing_inner.png | Bin 222 -> 0 bytes .../textures/block/brass_casing_side.png | Bin 266 -> 0 bytes .../create/textures/block/brass_funnel.png | Bin 254 -> 0 bytes .../textures/block/brass_funnel_back.png | Bin 692 -> 0 bytes .../textures/block/brass_funnel_neutral.png | Bin 236 -> 0 bytes .../textures/block/brass_funnel_plating.png | Bin 460 -> 0 bytes .../textures/block/brass_funnel_powered.png | Bin 256 -> 0 bytes .../textures/block/brass_funnel_pull.png | Bin 231 -> 0 bytes .../textures/block/brass_funnel_push.png | Bin 230 -> 0 bytes .../textures/block/brass_funnel_slope.png | Bin 254 -> 0 bytes .../textures/block/brass_funnel_tall.png | Bin 244 -> 0 bytes .../block/brass_funnel_tall_powered.png | Bin 249 -> 0 bytes .../create/textures/block/brass_tunnel.png | Bin 653 -> 0 bytes .../textures/block/brass_tunnel_top.png | Bin 246 -> 0 bytes .../block/brass_tunnel_top_connected.png | Bin 436 -> 0 bytes .../block/brass_tunnel_top_window.png | Bin 281 -> 0 bytes .../create/textures/block/crate_andesite.png | Bin 661 -> 0 bytes .../textures/block/crate_andesite_side.png | Bin 599 -> 0 bytes .../create/textures/block/crate_copper.png | Bin 509 -> 0 bytes .../textures/block/crate_copper_side.png | Bin 502 -> 0 bytes .../textures/block/incomplete_netherrack.png | Bin 681 -> 0 bytes .../textures/block/mineral/cinnabar.png | Bin 276 -> 0 bytes .../block/mineral/cinnabar_connected.png | Bin 2372 -> 0 bytes .../textures/block/mineral/cinnabar_ore.png | Bin 626 -> 0 bytes .../mineral/deepslate_cinnabar_connected.png | Bin 2454 -> 0 bytes .../block/mineral/deepslate_cinnabar_ore.png | Bin 618 -> 0 bytes .../mineral/deepslate_magnetite_connected.png | Bin 2217 -> 0 bytes .../block/mineral/deepslate_magnetite_ore.png | Bin 596 -> 0 bytes .../mineral/deepslate_malachite_connected.png | Bin 2280 -> 0 bytes .../block/mineral/deepslate_malachite_ore.png | Bin 621 -> 0 bytes .../deepslate_ochrestone_connected.png | Bin 2317 -> 0 bytes .../mineral/deepslate_ochrestone_ore.png | Bin 503 -> 0 bytes .../textures/block/mineral/magnetite.png | Bin 207 -> 0 bytes .../block/mineral/magnetite_connected.png | Bin 2027 -> 0 bytes .../textures/block/mineral/magnetite_ore.png | Bin 585 -> 0 bytes .../textures/block/mineral/malachite.png | Bin 215 -> 0 bytes .../block/mineral/malachite_connected.png | Bin 2164 -> 0 bytes .../textures/block/mineral/malachite_ore.png | Bin 600 -> 0 bytes .../textures/block/mineral/ochrestone.png | Bin 221 -> 0 bytes .../block/mineral/ochrestone_connected.png | Bin 2149 -> 0 bytes .../textures/block/mineral/ochrestone_ore.png | Bin 460 -> 0 bytes .../textures/block/noisy_iron_block.png | Bin 480 -> 0 bytes .../textures/block/reinforced_rail_top.png | Bin 392 -> 0 bytes 76 files changed, 300 insertions(+), 907 deletions(-) delete mode 100644 src/main/resources/assets/create/models/block/reinforced_rail/block.json delete mode 100644 src/main/resources/assets/create/models/block/reinforced_rail/block_n.json delete mode 100644 src/main/resources/assets/create/models/block/reinforced_rail/block_s.json delete mode 100644 src/main/resources/assets/create/models/block/reinforced_rail/block_s_n.json delete mode 100644 src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_bricks.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_frame.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_back.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_plating.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_powered.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_pull.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_push.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_slope.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_tall.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_tunnel.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_tunnel_top.png delete mode 100644 src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_casing_inner.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_casing_side.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_back.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_neutral.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_plating.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_powered.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_pull.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_push.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_slope.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_tall.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_tunnel.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_tunnel_top.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png delete mode 100644 src/main/resources/assets/create/textures/block/crate_andesite.png delete mode 100644 src/main/resources/assets/create/textures/block/crate_andesite_side.png delete mode 100644 src/main/resources/assets/create/textures/block/crate_copper.png delete mode 100644 src/main/resources/assets/create/textures/block/crate_copper_side.png delete mode 100644 src/main/resources/assets/create/textures/block/incomplete_netherrack.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/cinnabar.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/cinnabar_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/cinnabar_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_cinnabar_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_cinnabar_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_magnetite_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_magnetite_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_malachite_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_malachite_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_ochrestone_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/deepslate_ochrestone_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/magnetite.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/magnetite_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/magnetite_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/malachite.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/malachite_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/malachite_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/ochrestone.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/ochrestone_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/mineral/ochrestone_ore.png delete mode 100644 src/main/resources/assets/create/textures/block/noisy_iron_block.png delete mode 100644 src/main/resources/assets/create/textures/block/reinforced_rail_top.png diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 5ce68e72c..d86b9fbb4 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -716,6 +716,7 @@ public class AllBlocks { .register(); public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) + .addLayer(() -> RenderType::cutoutMipped) .initialProperties(SharedProperties::softMetal) .properties(p -> p.color(MaterialColor.COLOR_GRAY)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) @@ -727,6 +728,7 @@ public class AllBlocks { .register(); public static final BlockEntry SMART_CHUTE = REGISTRATE.block("smart_chute", SmartChuteBlock::new) + .addLayer(() -> RenderType::cutoutMipped) .initialProperties(SharedProperties::softMetal) .properties(p -> p.color(MaterialColor.COLOR_GRAY)) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) diff --git a/src/main/resources/assets/create/models/block/content_observer/block.json b/src/main/resources/assets/create/models/block/content_observer/block.json index 4e3ce8d38..8bfd5a621 100644 --- a/src/main/resources/assets/create/models/block/content_observer/block.json +++ b/src/main/resources/assets/create/models/block/content_observer/block.json @@ -2,13 +2,10 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "5": "create:block/brass_casing_inner", + "7": "create:block/brass_casing_connected", "8": "create:block/content_observer", "9": "create:block/content_observer_inner", "10": "create:block/filtered_detector_top", - "brass_casing": "create:block/brass_casing", - "particle": "create:block/brass_casing_side", - "1_brass_casing": "create:block/brass_casing_side", "end": "create:block/filtered_detector_front" }, "elements": [ @@ -22,7 +19,7 @@ "south": {"uv": [0, 10, 16, 16], "texture": "#8"}, "west": {"uv": [0, 10, 16, 16], "texture": "#8"}, "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#9"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#brass_casing"} + "down": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#7"} } }, { @@ -30,12 +27,12 @@ "from": [0.9, 2, 0.9], "to": [15.1, 14, 15.1], "faces": { - "north": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 0, 14, 14], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#5"} + "north": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#7"}, + "east": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#7"}, + "south": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#7"}, + "west": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#7"}, + "up": {"uv": [0, 0, 14, 14], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#missing"} } }, { @@ -55,12 +52,12 @@ "from": [0, 14, 0], "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, + "north": {"uv": [0, 6, 2.125, 6.25], "texture": "#7"}, + "east": {"uv": [0, 6, 2.125, 6.25], "texture": "#7"}, + "south": {"uv": [0, 6, 2.125, 6.25], "texture": "#7"}, + "west": {"uv": [0, 6, 2.125, 6.25], "texture": "#7"}, "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#brass_casing"} + "down": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#7"} } } ], @@ -74,6 +71,7 @@ { "name": "stockpile_switch", "origin": [8, 8, 8], + "color": 0, "children": [0, 1, 2, 3] } ] diff --git a/src/main/resources/assets/create/models/block/creative_motor/block.json b/src/main/resources/assets/create/models/block/creative_motor/block.json index 5c1420dae..a2322aad2 100644 --- a/src/main/resources/assets/create/models/block/creative_motor/block.json +++ b/src/main/resources/assets/create/models/block/creative_motor/block.json @@ -4,10 +4,9 @@ "textures": { "5": "create:block/creative_casing", "6": "create:block/creative_motor", - "7": "create:block/gearbox", - "8": "block/polished_andesite", - "9": "create:block/andesite_bricks", - "particle": "#5" + "7": "create:block/flap_display_front", + "particle": "create:block/creative_casing", + "1_0": "create:block/axis" }, "elements": [ { @@ -42,11 +41,11 @@ "to": [11, 11, 13], "faces": { "north": {"uv": [14, 4, 20, 10], "texture": "#6"}, - "east": {"uv": [10, 6, 16, 10], "rotation": 270, "texture": "#6"}, + "east": {"uv": [10, 6, 16, 10], "rotation": 90, "texture": "#6"}, "south": {"uv": [10, 0, 16, 6], "texture": "#6"}, - "west": {"uv": [10, 6, 16, 10], "rotation": 90, "texture": "#6"}, - "up": {"uv": [10, 6, 16, 10], "rotation": 180, "texture": "#6"}, - "down": {"uv": [10, 6, 16, 10], "texture": "#6"} + "west": {"uv": [10, 6, 16, 10], "rotation": 270, "texture": "#6"}, + "up": {"uv": [10, 6, 16, 10], "texture": "#6"}, + "down": {"uv": [10, 6, 16, 10], "rotation": 180, "texture": "#6"} } }, { @@ -66,78 +65,95 @@ "to": [12, 12, 11], "faces": { "north": {"uv": [0, 4, 8, 14], "rotation": 180, "texture": "#5"}, - "east": {"uv": [4, 3, 12, 12], "rotation": 270, "texture": "#5"}, + "east": {"uv": [4, 3, 12, 12], "rotation": 90, "texture": "#5"}, "south": {"uv": [3, 3, 11, 11], "rotation": 180, "texture": "#5"}, "west": {"uv": [4, 3, 12, 12], "rotation": 90, "texture": "#5"}, "up": {"uv": [4, 3, 12, 12], "rotation": 180, "texture": "#5"}, "down": {"uv": [4, 3, 12, 12], "rotation": 180, "texture": "#5"} } }, + { + "from": [12, 12, 0], + "to": [14, 14, 15], + "faces": { + "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, + "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} + } + }, { "from": [2, 12, 0], "to": [4, 14, 15], "faces": { - "north": {"uv": [14, 10, 16, 12], "texture": "#6"}, - "east": {"uv": [14, 0, 16, 15], "rotation": 270, "texture": "#7"}, - "south": {"uv": [14, 10, 16, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [0, 1, 2, 16], "rotation": 270, "texture": "#7"}, - "up": {"uv": [1, 0, 16, 2], "rotation": 90, "texture": "#7"}, - "down": {"uv": [0, 14, 15, 16], "rotation": 90, "texture": "#7"} + "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, + "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} } }, { "from": [2, 2, 0], "to": [4, 4, 15], - "faces": { - "north": {"uv": [14, 12, 16, 10], "texture": "#6"}, - "east": {"uv": [16, 0, 14, 15], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 10, 14, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [2, 1, 0, 16], "rotation": 270, "texture": "#7"}, - "up": {"uv": [15, 14, 0, 16], "rotation": 90, "texture": "#7"}, - "down": {"uv": [16, 0, 1, 2], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [12, 12, 0], - "to": [14, 14, 15], "faces": { "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, - "east": {"uv": [0, 16, 2, 1], "rotation": 270, "texture": "#7"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [14, 15, 16, 0], "rotation": 270, "texture": "#7"}, - "up": {"uv": [1, 2, 16, 0], "rotation": 90, "texture": "#7"}, - "down": {"uv": [0, 16, 15, 14], "rotation": 90, "texture": "#7"} + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} } }, { "from": [12, 2, 0], "to": [14, 4, 15], "faces": { - "north": {"uv": [16, 12, 14, 10], "texture": "#6"}, - "east": {"uv": [2, 16, 0, 1], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 12, 14, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [16, 15, 14, 0], "rotation": 270, "texture": "#7"}, - "up": {"uv": [15, 16, 0, 14], "rotation": 90, "texture": "#7"}, - "down": {"uv": [16, 2, 1, 0], "rotation": 90, "texture": "#7"} + "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, + "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} } }, { "from": [1, 0, 3], "to": [15, 3, 10], "faces": { - "north": {"uv": [0, 0, 14, 3], "texture": "#9"}, - "east": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#9"}, - "west": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "up": {"uv": [1, 4, 15, 11], "texture": "#8"}, - "down": {"uv": [1, 4, 15, 11], "texture": "#8"} + "north": {"uv": [0, 0, 14, 3], "texture": "#7"}, + "east": {"uv": [8, 0, 15, 3], "texture": "#7"}, + "south": {"uv": [1, 0, 15, 3], "texture": "#7"}, + "west": {"uv": [8, 0, 15, 3], "texture": "#7"}, + "up": {"uv": [1, 2, 8, 16], "rotation": 90, "texture": "#7"}, + "down": {"uv": [1, 4, 15, 11], "texture": "#7"} } } ], - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + "display": { + "gui": { + "rotation": [30, 45, 0], + "scale": [0.625, 0.625, 0.625] + } + }, + "groups": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, { "name": "shaft", "origin": [8, 8, 8], + "color": 0, "children": [] } ] diff --git a/src/main/resources/assets/create/models/block/creative_motor/block_vertical.json b/src/main/resources/assets/create/models/block/creative_motor/block_vertical.json index c76210cca..6e0468f40 100644 --- a/src/main/resources/assets/create/models/block/creative_motor/block_vertical.json +++ b/src/main/resources/assets/create/models/block/creative_motor/block_vertical.json @@ -4,12 +4,63 @@ "textures": { "5": "create:block/creative_casing", "6": "create:block/creative_motor", - "7": "create:block/gearbox", - "8": "block/polished_andesite", - "9": "create:block/andesite_bricks", - "particle": "#5" + "7": "create:block/flap_display_front", + "particle": "create:block/creative_casing", + "1_0": "create:block/axis" }, "elements": [ + { + "from": [12, 0, 2], + "to": [14, 15, 4], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 0, 7, 15], "rotation": 180, "texture": "#1_0"}, + "east": {"uv": [6, 15, 8, 0], "texture": "#1_0"}, + "south": {"uv": [8, 1, 6, 16], "texture": "#1_0"}, + "west": {"uv": [8, 16, 10, 1], "texture": "#1_0"}, + "up": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "down": {"uv": [16, 10, 14, 12], "rotation": 180, "texture": "#6"} + } + }, + { + "from": [2, 0, 2], + "to": [4, 15, 4], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 0, 7, 15], "rotation": 180, "texture": "#1_0"}, + "east": {"uv": [6, 15, 8, 0], "texture": "#1_0"}, + "south": {"uv": [8, 1, 6, 16], "texture": "#1_0"}, + "west": {"uv": [8, 16, 10, 1], "texture": "#1_0"}, + "up": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "down": {"uv": [16, 10, 14, 12], "rotation": 180, "texture": "#6"} + } + }, + { + "from": [2, 0, 12], + "to": [4, 15, 14], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 0, 7, 15], "rotation": 180, "texture": "#1_0"}, + "east": {"uv": [6, 15, 8, 0], "texture": "#1_0"}, + "south": {"uv": [8, 1, 6, 16], "texture": "#1_0"}, + "west": {"uv": [8, 16, 10, 1], "texture": "#1_0"}, + "up": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "down": {"uv": [16, 10, 14, 12], "rotation": 180, "texture": "#6"} + } + }, + { + "from": [12, 0, 12], + "to": [14, 15, 14], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [9, 0, 7, 15], "rotation": 180, "texture": "#1_0"}, + "east": {"uv": [6, 15, 8, 0], "texture": "#1_0"}, + "south": {"uv": [8, 1, 6, 16], "texture": "#1_0"}, + "west": {"uv": [8, 16, 10, 1], "texture": "#1_0"}, + "up": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "down": {"uv": [16, 10, 14, 12], "rotation": 180, "texture": "#6"} + } + }, { "name": "Back", "from": [3, 12, 3], @@ -61,65 +112,40 @@ "down": {"uv": [0, 4, 8, 14], "texture": "#5"} } }, - { - "from": [2, 0, 12], - "to": [4, 15, 14], - "faces": { - "north": {"uv": [1, 14, 16, 16], "rotation": 90, "texture": "#7"}, - "east": {"uv": [0, 0, 2, 15], "rotation": 180, "texture": "#7"}, - "south": {"uv": [0, 0, 15, 2], "rotation": 270, "texture": "#7"}, - "west": {"uv": [14, 1, 16, 16], "texture": "#7"}, - "up": {"uv": [16, 12, 14, 10], "texture": "#6"}, - "down": {"uv": [16, 12, 14, 10], "rotation": 270, "texture": "#6"} - } - }, - { - "from": [2, 0, 2], - "to": [4, 15, 4], - "faces": { - "north": {"uv": [0, 2, 15, 0], "rotation": 270, "texture": "#7"}, - "east": {"uv": [2, 0, 0, 15], "rotation": 180, "texture": "#7"}, - "south": {"uv": [1, 16, 16, 14], "rotation": 90, "texture": "#7"}, - "west": {"uv": [16, 1, 14, 16], "texture": "#7"}, - "up": {"uv": [16, 10, 14, 12], "texture": "#6"}, - "down": {"uv": [14, 12, 16, 10], "rotation": 270, "texture": "#6"} - } - }, - { - "from": [12, 0, 12], - "to": [14, 15, 14], - "faces": { - "north": {"uv": [1, 16, 16, 14], "rotation": 90, "texture": "#7"}, - "east": {"uv": [16, 1, 14, 16], "texture": "#7"}, - "south": {"uv": [0, 2, 15, 0], "rotation": 270, "texture": "#7"}, - "west": {"uv": [2, 0, 0, 15], "rotation": 180, "texture": "#7"}, - "up": {"uv": [14, 12, 16, 10], "texture": "#6"}, - "down": {"uv": [16, 10, 14, 12], "rotation": 270, "texture": "#6"} - } - }, - { - "from": [12, 0, 2], - "to": [14, 15, 4], - "faces": { - "north": {"uv": [0, 0, 15, 2], "rotation": 270, "texture": "#7"}, - "east": {"uv": [14, 1, 16, 16], "texture": "#7"}, - "south": {"uv": [1, 14, 16, 16], "rotation": 90, "texture": "#7"}, - "west": {"uv": [0, 0, 2, 15], "rotation": 180, "texture": "#7"}, - "up": {"uv": [14, 10, 16, 12], "texture": "#6"}, - "down": {"uv": [14, 10, 16, 12], "rotation": 270, "texture": "#6"} - } - }, { "from": [3, 0.2, 3], "to": [13, 4, 13], "faces": { - "north": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "east": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "south": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "west": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "up": {"uv": [11, 14, 1, 4], "rotation": 90, "texture": "#8"}, + "north": {"uv": [5, 0, 15, 4], "texture": "#7"}, + "east": {"uv": [5, 0, 15, 4], "texture": "#7"}, + "south": {"uv": [5, 0, 15, 4], "texture": "#7"}, + "west": {"uv": [3, 0, 13, 4], "rotation": 180, "texture": "#7"}, + "up": {"uv": [10, 10, 0, 0], "rotation": 90, "texture": "#6"}, "down": {"uv": [10, 10, 0, 0], "rotation": 180, "texture": "#6"} } } + ], + "display": { + "gui": { + "rotation": [30, 45, 0], + "scale": [0.625, 0.625, 0.625] + } + }, + "groups": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + { + "name": "shaft", + "origin": [8, 8, 8], + "color": 0, + "children": [] + } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/creative_motor/item.json b/src/main/resources/assets/create/models/block/creative_motor/item.json index 07f29fc7f..96da6b25b 100644 --- a/src/main/resources/assets/create/models/block/creative_motor/item.json +++ b/src/main/resources/assets/create/models/block/creative_motor/item.json @@ -4,12 +4,10 @@ "textures": { "5": "create:block/creative_casing", "6": "create:block/creative_motor", - "7": "create:block/gearbox", - "8": "block/polished_andesite", - "9": "create:block/andesite_bricks", + "7": "create:block/flap_display_front", + "particle": "create:block/creative_casing", "1_0": "create:block/axis", - "1_1": "create:block/axis_top", - "particle": "#5" + "1_1": "create:block/axis_top" }, "elements": [ { @@ -75,64 +73,64 @@ "down": {"uv": [4, 3, 12, 12], "rotation": 180, "texture": "#5"} } }, + { + "from": [12, 12, 0], + "to": [14, 14, 15], + "faces": { + "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, + "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} + } + }, { "from": [2, 12, 0], "to": [4, 14, 15], "faces": { - "north": {"uv": [14, 10, 16, 12], "texture": "#6"}, - "east": {"uv": [14, 1, 16, 16], "rotation": 270, "texture": "#7"}, - "south": {"uv": [14, 10, 16, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [0, 0, 2, 15], "rotation": 270, "texture": "#7"}, - "up": {"uv": [0, 0, 15, 2], "rotation": 90, "texture": "#7"}, - "down": {"uv": [1, 14, 16, 16], "rotation": 90, "texture": "#7"} + "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, + "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} } }, { "from": [2, 2, 0], "to": [4, 4, 15], - "faces": { - "north": {"uv": [14, 12, 16, 10], "texture": "#6"}, - "east": {"uv": [16, 1, 14, 16], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 10, 14, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [2, 0, 0, 15], "rotation": 270, "texture": "#7"}, - "up": {"uv": [16, 14, 1, 16], "rotation": 90, "texture": "#7"}, - "down": {"uv": [15, 0, 0, 2], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [12, 12, 0], - "to": [14, 14, 15], "faces": { "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, - "east": {"uv": [0, 15, 2, 0], "rotation": 270, "texture": "#7"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [14, 16, 16, 1], "rotation": 270, "texture": "#7"}, - "up": {"uv": [0, 2, 15, 0], "rotation": 90, "texture": "#7"}, - "down": {"uv": [1, 16, 16, 14], "rotation": 90, "texture": "#7"} + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} } }, { "from": [12, 2, 0], "to": [14, 4, 15], "faces": { - "north": {"uv": [16, 12, 14, 10], "texture": "#6"}, - "east": {"uv": [2, 15, 0, 0], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 12, 14, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [16, 16, 14, 1], "rotation": 270, "texture": "#7"}, - "up": {"uv": [16, 16, 1, 14], "rotation": 90, "texture": "#7"}, - "down": {"uv": [15, 2, 0, 0], "rotation": 90, "texture": "#7"} + "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, + "east": {"uv": [6, 15, 8, 0], "rotation": 270, "texture": "#1_0"}, + "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, + "west": {"uv": [8, 16, 10, 1], "rotation": 90, "texture": "#1_0"}, + "up": {"uv": [9, 0, 7, 15], "texture": "#1_0"}, + "down": {"uv": [8, 1, 6, 16], "texture": "#1_0"} } }, { "from": [1, 0, 3], "to": [15, 3, 10], "faces": { - "north": {"uv": [0, 0, 14, 3], "texture": "#9"}, - "east": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#9"}, - "west": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "up": {"uv": [1, 4, 15, 11], "texture": "#8"}, - "down": {"uv": [1, 4, 15, 11], "texture": "#8"} + "north": {"uv": [0, 0, 14, 3], "texture": "#7"}, + "east": {"uv": [8, 0, 15, 3], "texture": "#7"}, + "south": {"uv": [1, 0, 15, 3], "texture": "#7"}, + "west": {"uv": [8, 0, 15, 3], "texture": "#7"}, + "up": {"uv": [1, 2, 8, 16], "rotation": 90, "texture": "#7"}, + "down": {"uv": [1, 4, 15, 11], "texture": "#7"} } }, { @@ -156,10 +154,21 @@ "scale": [0.625, 0.625, 0.625] } }, - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + "groups": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, { "name": "shaft", "origin": [8, 8, 8], + "color": 0, "children": [10] } ] diff --git a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json index 20ace9c21..d4c8803dd 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json +++ b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json @@ -67,7 +67,7 @@ "east": {"uv": [11, 0, 14, 8], "rotation": 180, "texture": "#direction"}, "south": {"uv": [0, 8, 8, 16], "rotation": 180, "texture": "#direction"}, "west": {"uv": [11, 0, 14, 8], "texture": "#direction"}, - "up": {"uv": [11, 0, 14, 7.5], "rotation": 90, "texture": "#direction"}, + "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} } }, diff --git a/src/main/resources/assets/create/models/block/funnel/flap.json b/src/main/resources/assets/create/models/block/funnel/flap.json index 94b2a6bb9..7af138154 100644 --- a/src/main/resources/assets/create/models/block/funnel/flap.json +++ b/src/main/resources/assets/create/models/block/funnel/flap.json @@ -1,7 +1,7 @@ { "credit": "Made with Blockbench", "textures": { - "4": "create:block/brass_funnel_back" + "4": "create:block/funnel/funnel_back" }, "elements": [ { diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block.json b/src/main/resources/assets/create/models/block/reinforced_rail/block.json deleted file mode 100644 index 63746f266..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block_n.json b/src/main/resources/assets/create/models/block/reinforced_rail/block_n.json deleted file mode 100644 index 5454c0292..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block_n.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "connection_n", - "from": [ -1, 7, 0 ], - "to": [ 0, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 7 ] } - } - }, - { - "name": "connection_n", - "from": [ 16, 7, 0 ], - "to": [ 17, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block_s.json b/src/main/resources/assets/create/models/block/reinforced_rail/block_s.json deleted file mode 100644 index 75f76f222..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block_s.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "connection_s", - "from": [ -1, 7, 8 ], - "to": [ 0, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 10, 1 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 4, 7 ] } - } - }, - { - "name": "connection_s", - "from": [ 16, 7, 8 ], - "to": [ 17, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block_s_n.json b/src/main/resources/assets/create/models/block/reinforced_rail/block_s_n.json deleted file mode 100644 index 9d17be5be..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block_s_n.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "connection_n", - "from": [ -1, 7, 0 ], - "to": [ 0, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 7 ] } - } - }, - { - "name": "connection_s", - "from": [ -1, 7, 8 ], - "to": [ 0, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 10, 1 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 4, 7 ] } - } - }, - { - "name": "connection_s", - "from": [ 16, 7, 8 ], - "to": [ 17, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - }, - { - "name": "connection_n", - "from": [ 16, 7, 0 ], - "to": [ 17, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rotation_speed_controller/block.json b/src/main/resources/assets/create/models/block/rotation_speed_controller/block.json index d4da4d489..2243c2211 100644 --- a/src/main/resources/assets/create/models/block/rotation_speed_controller/block.json +++ b/src/main/resources/assets/create/models/block/rotation_speed_controller/block.json @@ -3,10 +3,10 @@ "parent": "create:block/large_wheels", "textures": { "0": "create:block/rotation_speed_controller", - "3": "create:block/brass_funnel_plating", "4": "create:block/brass_gearbox", "5": "create:block/rotation_speed_controller_top", "6": "create:block/brass_block", + "7": "create:block/funnel/brass_funnel_neutral", "particle": "create:block/brass_gearbox" }, "elements": [ @@ -30,7 +30,7 @@ "north": {"uv": [6, 6, 11, 0], "texture": "#0"}, "east": {"uv": [0, 10, 16, 16], "texture": "#4"}, "south": {"uv": [0, 0, 5, 6], "texture": "#0"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#3"}, + "west": {"uv": [0, 0, 8, 3], "texture": "#7"}, "up": {"uv": [0, 0, 5, 16], "texture": "#5"}, "down": {"uv": [0, 0, 5, 16], "texture": "#6"} } @@ -53,7 +53,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [19, 18, 8]}, "faces": { "north": {"uv": [0, 0, 5, 6], "texture": "#0"}, - "east": {"uv": [0, 0, 8, 3], "texture": "#3"}, + "east": {"uv": [0, 0, 8, 3], "texture": "#7"}, "south": {"uv": [6, 6, 11, 0], "texture": "#0"}, "west": {"uv": [0, 10, 16, 16], "texture": "#4"}, "up": {"uv": [11, 0, 16, 16], "texture": "#5"}, diff --git a/src/main/resources/assets/create/models/block/rotation_speed_controller/bracket.json b/src/main/resources/assets/create/models/block/rotation_speed_controller/bracket.json index 7ca552898..f155beab9 100644 --- a/src/main/resources/assets/create/models/block/rotation_speed_controller/bracket.json +++ b/src/main/resources/assets/create/models/block/rotation_speed_controller/bracket.json @@ -3,7 +3,6 @@ "parent": "block/block", "textures": { "2": "create:block/brass_casing", - "3": "create:block/brass_casing_side", "4": "create:block/brass_block", "5": "create:block/rotation_speed_controller_bracket", "6": "create:block/rotation_speed_controller", @@ -63,11 +62,11 @@ "to": [13.5, 14, 4.5], "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, -16]}, "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, + "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "up": {"uv": [13, 9, 14, 10], "texture": "#2"}, "down": {"uv": [0, 0, 0, 0], "texture": "#4"} } }, @@ -88,11 +87,11 @@ "to": [3.5, 14, 4.5], "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, -16]}, "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, + "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "up": {"uv": [13, 9, 14, 10], "texture": "#2"}, "down": {"uv": [0, 0, 0, 0], "texture": "#4"} } }, @@ -149,11 +148,11 @@ "to": [13.5, 14, 12.5], "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, -8]}, "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, + "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "up": {"uv": [13, 9, 14, 10], "texture": "#2"}, "down": {"uv": [0, 0, 0, 0], "texture": "#4"} } }, @@ -174,11 +173,11 @@ "to": [3.5, 14, 12.5], "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, -8]}, "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, + "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#2"}, + "up": {"uv": [13, 9, 14, 10], "texture": "#2"}, "down": {"uv": [0, 0, 0, 0], "texture": "#4"} } }, diff --git a/src/main/resources/assets/create/models/block/rotation_speed_controller/item.json b/src/main/resources/assets/create/models/block/rotation_speed_controller/item.json index 160965c86..43ee0d01e 100644 --- a/src/main/resources/assets/create/models/block/rotation_speed_controller/item.json +++ b/src/main/resources/assets/create/models/block/rotation_speed_controller/item.json @@ -5,10 +5,10 @@ "0": "create:block/axis", "3": "create:block/axis_top", "4": "create:block/brass_gearbox", + "7": "create:block/funnel/brass_funnel_neutral", "9": "create:block/brass_block", "particle": "create:block/brass_gearbox", "1_0": "create:block/rotation_speed_controller", - "1_3": "create:block/brass_funnel_plating", "1_5": "create:block/rotation_speed_controller_top" }, "elements": [ @@ -45,7 +45,7 @@ "north": {"uv": [6, 6, 11, 0], "texture": "#1_0"}, "east": {"uv": [0, 10, 16, 16], "texture": "#4"}, "south": {"uv": [0, 0, 5, 6], "texture": "#1_0"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#1_3"}, + "west": {"uv": [0, 0, 8, 3], "texture": "#7"}, "up": {"uv": [0, 0, 5, 16], "texture": "#1_5"}, "down": {"uv": [0, 0, 5, 16], "texture": "#9"} } @@ -68,7 +68,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [19, 18, 8]}, "faces": { "north": {"uv": [0, 0, 5, 6], "texture": "#1_0"}, - "east": {"uv": [0, 0, 8, 3], "texture": "#1_3"}, + "east": {"uv": [0, 0, 8, 3], "texture": "#7"}, "south": {"uv": [6, 6, 11, 0], "texture": "#1_0"}, "west": {"uv": [0, 10, 16, 16], "texture": "#4"}, "up": {"uv": [11, 0, 16, 16], "texture": "#1_5"}, @@ -100,10 +100,12 @@ } } ], - "groups": [0, + "groups": [ + 0, { "name": "block", "origin": [8, 8, 8], + "color": 0, "children": [1, 2, 3, 4, 5, 6] } ] diff --git a/src/main/resources/assets/create/models/block/smart_chute/block.json b/src/main/resources/assets/create/models/block/smart_chute/block.json index 8977344b6..6960b24d3 100644 --- a/src/main/resources/assets/create/models/block/smart_chute/block.json +++ b/src/main/resources/assets/create/models/block/smart_chute/block.json @@ -3,11 +3,11 @@ "parent": "block/block", "textures": { "1": "create:block/chute_diagonal", - "2": "create:block/brass_funnel_plating", - "3": "create:block/brass_block", - "5": "create:block/brass_funnel_tall", "13": "create:block/chute", - "particle": "block/hopper_outside" + "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/funnel/brass_funnel_frame", + "frame": "create:block/funnel/brass_funnel_frame", + "direction": "create:block/funnel/brass_funnel_pull" }, "elements": [ { @@ -119,64 +119,28 @@ "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"} } }, - { - "from": [0, 9, 0], - "to": [2, 15, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "north": {"uv": [7, 0, 8, 3], "texture": "#2"}, - "south": {"uv": [0, 0, 1, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#3"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#3"} - } - }, - { - "from": [2, 9, 0], - "to": [14, 15, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#2"}, - "east": {"uv": [7, 0, 8, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 3], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#3"} - } - }, - { - "from": [2, 9, 14], - "to": [14, 15, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "east": {"uv": [8, 0, 7, 3], "texture": "#2"}, - "south": {"uv": [7, 0, 1, 3], "texture": "#2"}, - "west": {"uv": [1, 0, 0, 3], "texture": "#2"}, - "up": {"uv": [2, 2, 0, 14], "rotation": 90, "texture": "#3"}, - "down": {"uv": [2, 2, 0, 14], "rotation": 270, "texture": "#3"} - } - }, - { - "from": [14, 9, 0], - "to": [16, 15, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "north": {"uv": [0, 0, 1, 3], "texture": "#2"}, - "east": {"uv": [8, 0, 0, 3], "texture": "#2"}, - "south": {"uv": [7, 0, 8, 3], "texture": "#2"}, - "up": {"uv": [2, 0, 0, 16], "texture": "#3"}, - "down": {"uv": [2, 0, 0, 16], "texture": "#3"} - } - }, { "from": [1, 7, 1], "to": [15, 9, 15], "rotation": {"angle": 0, "axis": "y", "origin": [21, 18, 9]}, "faces": { - "north": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "east": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "south": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "west": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "down": {"uv": [1, 1, 15, 15], "texture": "#3"} + "north": {"uv": [1, 1, 3, 15], "rotation": 270, "texture": "#redstone"}, + "east": {"uv": [1, 1, 3, 15], "rotation": 270, "texture": "#redstone"}, + "south": {"uv": [1, 1, 3, 15], "rotation": 270, "texture": "#redstone"}, + "west": {"uv": [1, 1, 3, 15], "rotation": 270, "texture": "#redstone"}, + "down": {"uv": [1, 1, 15, 15], "texture": "#frame"} + } + }, + { + "from": [0, 9, 0], + "to": [16, 15, 16], + "faces": { + "north": {"uv": [0, 0, 8, 3], "texture": "#direction"}, + "east": {"uv": [0, 0, 8, 3], "texture": "#direction"}, + "south": {"uv": [0, 0, 8, 3], "texture": "#direction"}, + "west": {"uv": [0, 0, 8, 3], "texture": "#direction"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#frame"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } } ], @@ -184,11 +148,17 @@ { "name": "ChuteTop", "origin": [9, 16, -7], + "color": 0, "children": [0, 1, 2, 3, 4] }, { "name": "ChuteBase", "origin": [8, 8, -7], + "color": 0, "children": [5, 6, 7, 8] - }, 9, 10, 11, 12, 13, 14] + }, + 9, + 10, + 11 + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/smart_chute/block_powered.json b/src/main/resources/assets/create/models/block/smart_chute/block_powered.json index 1a2636b1b..185076fd7 100644 --- a/src/main/resources/assets/create/models/block/smart_chute/block_powered.json +++ b/src/main/resources/assets/create/models/block/smart_chute/block_powered.json @@ -1,6 +1,7 @@ { + "credit": "Made with Blockbench", "parent": "create:block/smart_chute/block", "textures": { - "5": "create:block/brass_funnel_tall_powered" + "redstone": "create:block/funnel/brass_funnel_powered" } } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/stockpile_switch.json b/src/main/resources/assets/create/models/block/stockpile_switch.json index 9439bb80c..88ac8bbc3 100644 --- a/src/main/resources/assets/create/models/block/stockpile_switch.json +++ b/src/main/resources/assets/create/models/block/stockpile_switch.json @@ -2,12 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "5": "create:block/brass_casing_inner", - "6": "create:block/brass_casing", "7": "create:block/filtered_detector_top", + "8": "create:block/brass_casing_connected", "indicator": "create:block/indicator/0", - "particle": "create:block/brass_casing_side", - "brass_casing": "create:block/brass_casing_side", "end": "create:block/filtered_detector_front" }, "elements": [ @@ -16,12 +13,12 @@ "from": [0, 0, 0], "to": [16, 2, 16], "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#6"} + "north": {"uv": [0, 7.75, 2.125, 8], "texture": "#8"}, + "east": {"uv": [0, 7.75, 2.125, 8], "texture": "#8"}, + "south": {"uv": [0, 7.75, 2.125, 8], "texture": "#8"}, + "west": {"uv": [0, 7.75, 2.125, 8], "texture": "#8"}, + "up": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#8"}, + "down": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#8"} } }, { @@ -29,12 +26,12 @@ "from": [0, 14, 0], "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, + "north": {"uv": [0, 6, 2.125, 6.25], "texture": "#8"}, + "east": {"uv": [0, 6, 2.125, 6.25], "texture": "#8"}, + "south": {"uv": [0, 6, 2.125, 6.25], "texture": "#8"}, + "west": {"uv": [0, 6, 2.125, 6.25], "texture": "#8"}, "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#7"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#6"} + "down": {"uv": [0, 0, 2, 2], "rotation": 270, "texture": "#8"} } }, { @@ -42,12 +39,25 @@ "from": [0.9, 2, 0.9], "to": [15.1, 14, 15.1], "faces": { - "north": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 0, 14, 14], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#5"} + "north": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#8"}, + "east": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#8"}, + "south": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#8"}, + "west": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#8"}, + "up": {"uv": [0, 0, 14, 14], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#missing"} + } + }, + { + "name": "Center", + "from": [0.9, 2, 0.9], + "to": [15.1, 14, 15.1], + "faces": { + "north": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#missing"}, + "east": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#missing"}, + "south": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#missing"}, + "west": {"uv": [12, 12.125, 13.625, 13.875], "rotation": 90, "texture": "#missing"}, + "up": {"uv": [0, 0, 14, 14], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#missing"} } }, { diff --git a/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png b/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png deleted file mode 100644 index 6029dac92b6b549de04030726e61387a5564348e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$hffKP}k z5V*LwI6FH#IXO8xI@;UY+u7OK+S*!MTU%LKnVFfHnwpxJm>3%y8yOkt>FMd}>gwp| zXlrY0X=!O_Xw(}VeGN3K*VDx@q~extANwR0MIL5Xlj;PufB)C2?^JV~ew%Z*McUU- z;VyhPO#OBrPpxr1vHHxOA5{|`%ZU8hzd2cK)e{@nc?s#e>l9tTHH2E{uhMn;@vpRePJ^)ji<&bs_H3BzSV7et{a?FHn;0c1Uiht)78&qol`;+0JRffAOHXW diff --git a/src/main/resources/assets/create/textures/block/andesite_bricks.png b/src/main/resources/assets/create/textures/block/andesite_bricks.png deleted file mode 100644 index 6cef8fae12684af2bce71a607e275ac7aff1f1db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AX}P)U3P z#KgnH!@|PCz`(%1zP`M?yt})*y1Kf!xVX2sx3;#nwY9ahw6wFcv$3(UudlDJuCA@E zt*fi6s;a7~si~%>rlqB&q@<*yqobmtqM@OopP!$eo}QhZotvARnwpxKnVFcFn3k57 zm6es0l$4W`lai8>k&%&*kdTg!j*X3tjEszni;IeiiiwGdh=_=WhK7ZOg@lBJgM)*D zf`Wm8fq;O3e}8{|etvy@eSCa;dwY9&dU|OY;0_6Yinw1 zYH4X{XlQ6=W@cq&Wn^SzV`F1tVq#%oVPIfjUteEcU0qyUTw7aPT3T9JSy@wis_H=u^;(m@aF=IKgR_V2nobW$7f@(hK#R6(YA!;9ZfB3{UhVp z=9X2GUM?dJ%M)*Z{EPO=p`j!GHf>?ggx#k3c{T`x(RW~_=_SchX2oIj-aj_%!Okxs zk7Km!lx<)Oc!$C7m3-#;zM5OzGhfSm9#e7V!#8WrQAfiG)fSuX4TcW}$0w_sWxuZ{ zhD}#9&2cVOtdc(qU|8gHXzlUkQ`1zWbB9<`ed_8;;qK21b*&%E__HkWP{S002ovPDHLkV1mGoOqT!v diff --git a/src/main/resources/assets/create/textures/block/andesite_frame.png b/src/main/resources/assets/create/textures/block/andesite_frame.png deleted file mode 100644 index 26b27b3f4605cf060764fdd44ec0b8c011665f90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF^Ce_N0fgOM9X)v&0pHoEC#El4XvP1}n8Bl1+Vj z`3@^_IJ2#g(Ap$(szJNWaEWB!VIG^1IE^Js;+7oV@cYa=+w`*emdp%QHL~3gd04H1 PRxo(F`njxgN@xNA9gRy6 diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel.png b/src/main/resources/assets/create/textures/block/andesite_funnel.png deleted file mode 100644 index 0abae76cbbd4607ae4fbc1f9119f18cdb91de5e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$hNfKP}k zkY2KMPS=D9Z5{1R?QKo1E%hyJ^-WDR^$nFZmBr=7S-Hi@X~|KsQ9gdY-o8E&jEv!o zjNXilUW|^ir!I>MqrzGAn zlhFKnkYCTj{I-F`?uO)e$#rb=zFj?g_JYQtJ#HWB1;5@~x@U`Nv!2V051l*v=KT(l dJ+}Fz13t=Y`qJU0d@O1TaS?83{1OSe1XE^`> diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_back.png b/src/main/resources/assets/create/textures/block/andesite_funnel_back.png deleted file mode 100644 index dc0ba1a4c9fb7df56550e329f1a3b4826932537e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6wX}dSYTi zLPAt*RCIK7BoIVIgoTBLgoFeK2L}ZO1qKHC`}_O&`2vBruMfmzFHbP=0D(AXl~^Yg zH#avI7Z+z|XD25oJ6lIv5U>FPKT8>3AhM9Lwzl>$m$tI9vb40c00MJsQxgjl6BA<~ zFfubTGBPkQ(AU@3)6;X%64uoe~jgzcHX5~2C`M+q9&(_OV z8EWDI*2hWwi`p=&;Ap7El(!j+<}ySxH(k7vvp90ol?mlJ za`#ewx3QmnV`m@ySL^-v5U)aC$*#@M8GbffvaK@sD3vgi=heKte0j}Y=K@Iw?I$1d z7R@Wr_{0BxnU&0}Mt*ro{@XW8s$QMme4UGe`j$K%ZzJY5_^DsK6l zWo2SEQz1K< zzZ>-9rtN**f4%v$(C+2Z|dA8&E3I>L3B@T_pGiu_1ZeZ|q^>bP0l+XkK(S&Hi diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png deleted file mode 100644 index c958f8aec6786707d90c4dddeec226d9395a2f8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 492 zcmV_e|da)b9Zxc zc5-TMb7N*>Vr61yVPRTbT3J|FOioQpO-xBhNJKnI5RRfEiEy+m{RQk z0004WQchCN9)HMDO27xgV~ zZ&ZEDn;G>jZzSr7p&zGx({m1u)`JLkyOVmplT+)#S$$vfq3CN5lZ1=(E>XXR#x;TbNT<-1nW|x8a53nS=%&mG`x> zo-4zc9s6V>n;0XnKW}2qci>6cp*&};)m#R7?Wx=~%L|#eX8pMTAae@$36qwYZVjI| hDC|7{UG?o}e%9k0OZR&Q>;Srf!PC{xWt~$(696Z0XC?pu diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png b/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png deleted file mode 100644 index 00ed0b7ab07bec72e62fef82af6fbccfd07c877a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$hZfKP}k zke)YZde?*rZ5{1Rtu6H}Z8h}`l{J;c<;BTq$x*RUg+aPG{<{8w{%KyC9-ba?&MMK4 zDp3x~VKxe(Hu3@HGQJivo(2;3n!-^n-;M!|V=M{s3ubV5b|VeQDfM)545_%a_G~NT zVFwP@3&oC)w*6o7^g8>Aoebv#-=9rWU)1-osw337S5tJY;pD{yxu0JIe|o$pj*)*k z&+!+hD>lrj;Mh1t;L0O!N3K_Uvy&7x{`<8jZH!lUjGWdR&$r%MBu%g_`8SKISn;dd hjh9}YFEro6-nD}5(pLda3!noSJYD@<);T3K0RTZ0Xn+6! diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_push.png b/src/main/resources/assets/create/textures/block/andesite_funnel_push.png deleted file mode 100644 index 5ed71a133475a9088eec3c43a8f0ef926b3387d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$hZfKP}k zke)YZde?*rZ5{1Rtu6H}ZS_q}HT4aZHI-$R<;CU2$!W<^u~CIVx;g&3{(=4;o*r?| zD$$NAQ4Y#sHVUCO@&V>Do(2;3n!;s&_E-UpV=M{s3ubV5b|VeQDfV=645_%~bC#9q zfC2|=z>#m8&;6cXvgR$59A`j@lS=^~)9oit?{?)BZ;JD%h(ET?d}IFc%IBXGv%luu z{F1vnmVcV{wp%@UvzQ*Nt<)>h+S(kv@#5aT^5sUp`!~YaSW-rmF(f|U0m#~ubpmSXckly#8;Na!7IkbbUC2ylTmPD@Z&E< zZJ$0F7#m+M5>P&?qr-DXgWKD?-Qdyzo<$88cbAvn(`1&sv^%Y&B%j6Tk%N+dBTw-H d=Tnm<8D6ea;T9-9w-IO;gQu&X%Q~loCIHfYOpO2l diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png b/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png deleted file mode 100644 index e501791f9d44ba703a85b5532660a7b007587acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$hNfKP}k zkY2KMPS=D9Z5{1R?QKo1E%hyJ^-WDR^$nFZmBr=7S-Hi@X~|KsQ9gdY-o8E&jEv!o zjNXilUW|5qB1zwWc zYb+F73nG~OKRBt{C~_^UHslHUE~mIn=~wpjZ`ZErTBKPi`Tg#&?u~mMTD!A?Va7%F Vpj?5*Q$WiZJYD@<);T3K0RZH5T^9fV diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png b/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png deleted file mode 100644 index 8321619db1405c0bbbcf3af0593a2c8bf2c1bbab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g;fKP}k zkY2KMPS=D9Z5{1R?QKo1E%hyJ^-WDR^$nFZmBr=7S-Hi@X~|KsQ9gdY-o8F(85qtm zFsx%>SPIn0z%ZSGVHyKN8Uw?HJx8N}W-*oo`2{mLJi7rDVkq@=aSW-r)!OgMbVPy2 z^*@XEN3MeZldqMU^7pC>+&ML&-_-1E!MdL1Hd78-ax9WJ?0&mJpk+c(m%8E+j{MhG z_^)r03)8&Z>6hc7sI%$-cb){N{*jIx`>vjct0g8JweSD5cG5*VuIR*>nXWnMNAuP` cPp^>{n_j|hTQ%M8CeQ&4p00i_>zopr0IaZNegFUf diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel.png b/src/main/resources/assets/create/textures/block/andesite_tunnel.png deleted file mode 100644 index 6c296521d348ff4f7d500490793d6ceab3c951c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)pF0drDELIAGL9O(c60SHh`R7C&)0E@xR z(CX=^(AlTY*o(oz8Za8fRCQ7ms!D{N0KY)&m}O)O+gE@nz8VM{J$NhnNCO=L(YOHE8mOG`>hN=Zpc zTty{YMJ7l{NMA!ET0|sWLL^;6B3(iuMn*$T5Ci!h99y6alA|K`W(_Nu@M%8u>a35rF75qh?^{)rs~I`Ozp?gYWVL!dB~T zlCKmplVYc3$nj1ToFQ-wq$-z(<&(>k)Ar?21=;b!aN!sX7GHNR{9ym!A~nV7KPW36AB2xG)%9IrT3B-`{=lkBZ2`5ivNHBv1Vp-=6TYcUqJrmj+>L zcs>ta{NUjG!~SJXk?=eR;ooxLUqk$w1OFO=b?!WDbM@BYwy>#ytOsCJqS-7kZ~W&iyyXY;h_UV%XQh|0K!8ElrT!OL1mZh zV{Z?_LkR3hDYSAM8LYxX2ogY&mX{d9QwR)U3I20M@V^T6#DhgcB#EUV)Ds5U*x3At z>-NIs@lW^nPgZxgS^EQI&|q4n72@)Qdbi%}HJjaLuU~J%vP8qQG>nGh@n|@-&vZQg Y0d~G==?9xi_@% diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png b/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png deleted file mode 100644 index ff0e67138f04b001a9ce4bb27538257c1e67bd0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFab$Rn{Or>+gXEW`(`wq>lZA|s*aq~wPgAJ$8W5s{`u|X oELgVr@`>~XZSrp}ow{YOr)^^w*!mF1+#`5zwmMoo9y>5HggbCffbJ{xEYw8<{%Zsyei<8rmqhh1x%{Fua z>R~Pk@(X78_fN~``ZpkVs;7%%NCl(lK|`)X1`Mnh_^T8S?v=G^SRDR=K~72R;#J{} ze;#*SgjRG1A3ft#n6dnl*Dec>sV+7A=Pa|M5`%;`O5b6FMJKI~{d&tzs967x!1iGF%KRfLF|i?kl&*OI?n*F7Wg2cc23qJYD@<);T3K0RR|&cc}mX diff --git a/src/main/resources/assets/create/textures/block/brass_casing_inner.png b/src/main/resources/assets/create/textures/block/brass_casing_inner.png deleted file mode 100644 index 1f36fed4fed8dd9c0d9c264923681b2f8ab5a51b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFCfZmjzum2^+*hf3zVlLMy3VBh%@6-5 zd&ONdiCA`Ws}S>viQ3&$UWR<0s=-z&UwQN5hG0c?h7-?(89wj}#Opt8KD+D&&;<;h Lu6{1-oD!M<`eR%b diff --git a/src/main/resources/assets/create/textures/block/brass_funnel.png b/src/main/resources/assets/create/textures/block/brass_funnel.png deleted file mode 100644 index 37e12beb6b7f31886f90860c272267ecc019d025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$h5fKP}k zkiNV=`p9(eJ-u%0TI?3rSj;FhnUrtZkz&>qqEY0d9l^*L&dBJ^$mqq$=+4OG&dBJ% z$awwVk!YY!#*!evUp8$P8!lvI6;O6G$;^N}$?Cj*^ zWM}JWYiny`V`FV?ZDnO;X=!Nz1m@PJCKe_pCdNQuWM*V!WME*RudlDCr>CoHsHUc- zs;a7@q9P|JCo3x}C@2`uIae6ybmo#EzhH)c|FnFre`8=^oayP}7*cV|=fc6PBL+Mz z4>Oy64Xmd7u6*2m=KsI^i0;rc=QQsdLJvZ#~?#Zs7|Jj{d&{FJJa%hTW zg2A@U!k-x{cs$aUzm&eb`+H~B!ElXGyQkF#clGyAyDhOlTt3-E*Yebl>IR-`5(W>O zY!Bq;J#wl4`{!%ist3so#RbdD)%)1ln%{qUS2D-c?@(q~p4YAUe*MlLR|72z;hwn0 z%XhiT*6OA4>red3$~9Iw`J;x>d%1}EujAZ>k5=n1`*NSlQo)Ufm9Zr2*edBYg4R3# z@3i_HxVv`uM`^j8vz|)v&F%Mz4Hs#ZS14S)O?}p~3uit*c9v=O<66?qz_I+To7-iH zXO(l0el(kRwc1K$b+v-duXDV-toB{G_NM|)h{qUIX@0r>tWxaf##g^T?qm9CRH2*D zX0b>_GWh@Eu3ubV5 zb|VeQN%nMc45_%4d}C|Tvon#}>F3fSv{o#MTa)wV=!Pd(RyLbuU#l?8vE7`u@%qf* zn>?pa#~$`}KDAr&oCD(~J;kL(%8v!wRMW4m5wt6P#dG*t@N&PIYb-ajtbDY zR4rLpSaM7&Nk~XUL_|J4K{z)%H8eOgGBzzOF#t)*(EtDd0d!JMQvg8b*k%9#0VPR9 zK~#9!rIX=q!ypWV!Pt~~W=M8SaWVFRb^Bm@9&5fCt71KxWn zTY0@fDv-NWH8)ADz_OO_W!)RV;!YAahkaej*Rqsg5zi~|JFN0dxS{ufVqS zhz{f{Am-3ZzOa?N0D0&T{{*%MJSX7XA?i>vGskm>I3E<{HOwQ1aONOpJHk~u73cTTOB!`uS5a>0000qqEY0deU^dY389x$-_0zfT>LR-43>@FSt;^O6b7mMp678kP>f>-Nl1pCF=WKVNf+yD96= yFA}S|y!GX#|9qLavBD+F=75yOT6WXE{|q}tSaKG=$u$I8$l&Sf=d#Wzp$Pzrg;VEaktaVz=8)}m);BDK@crA27fTs(U9`pxddlQT<|4zBmBG|aIr zeYNoJEaRIzr%#_wUO#Pmx$&GvCY9JGErnb?huCa~Tjv-`=Q3tSGhbo7cCGJ%D+>d| YwscGP<3{FfKsy*bUHx3vIVCg!0Cc5N$N&HU diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_push.png b/src/main/resources/assets/create/textures/block/brass_funnel_push.png deleted file mode 100644 index 2ad0f81d22791fe1ad6dcdb5d176e73923335b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFEaktaVz=8)}m);BDK@crA271NU4szd80e=lq< z?Cj*^WNT}ywIlf|P(NcykY6x^!?PP{Ku&_Ei(^Q|t+l6)HZle9uv{=dsaLk>zt+wN zLVWvK7bRQvFdD8X+3RAUIN8=XQuoi_&vof4CBZL3qC6L`QQl;*MdNCK!_U;#{gz3~ v=6n(|WB)AqXQ$1diQ9y<&;K@3cy?BNx}m(^x>PQZ4;egN{an^LB{Ts5-OpB% diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_tall.png b/src/main/resources/assets/create/textures/block/brass_funnel_tall.png deleted file mode 100644 index 8e53222d059e3cc427c698a78ddb5b7c78a7ffb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$h5fKP}k zkiNV=`p9(eJ-u%0TI?3rSj;FhnUrtZkz&>qqEY0d9l^*L&dBJ^$mqq$=+4OG&dBJ% z$awwVk!YY!#*!evUm$1 zv>eDsgu;%8T_Wd}Co{(fNLF=Gb9f{D`wgsLjqH`j_ipYIy$ l+<0BMIZDChx!sy&a=Bkv=d-?bDFE8T;OXk;vd$@?2>`8!POty~ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png b/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png deleted file mode 100644 index 07db6a8f02803646c329f27476962d2381dc520a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$hHfKP}k zkiNV=`p9(eJ-u%0TI?3rSj;FhnUrtZkz&>qqEY0deU^dY3^AX-7mI3E@#w5yyXViHP2r7|$@<;fWR3PN`y(bMa8ADGm#2NjiZhLiD&{Z+R`NZu q*SeJ$ZurbWobix1i}K~i?|+B4Phy==RWAtg9D}E;pUXO@geCy`dsJiq diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel.png b/src/main/resources/assets/create/textures/block/brass_tunnel.png deleted file mode 100644 index 37d64aca736b5a7896411eb96c563d33dbe35412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)pF0drDELIAGL9O(c60E$pdR7C&)0E@xR ziCrwv>gn>qZK%-Mr_b1n!OhdJTf~=3z?4b6jYhhQMXrQCtbskFd^nhPG?Q>Ol5aJL zWHyLnHHlp;h+Qm*Tr7K6E`n4jfmA4XR4sT^EO%2Zbx$jDOe;%EOG-*gNl8gaNJvIT zMm#(`J3Bi%IyyNyIXE~tG&D3bGcz(WGB7YO)#)k}00003bW%=J0Qdg;j%>dG00DhT zL_t(|+J(@;P9#JS$KkL4T{8?U?g7IZ&%Xa-84o6`F`x)N)jAi&x$Lh`-=Qm&8jlpf zf-6_&D+LT+o?W?=AD%mx=l+Rn7hc{Xbe^-gc!AT4rEu2inc<9!*ZVxfF(eS#!$ty! zGYBb2VmRvtyaSr*MKah{Xv@bslwkKtK&1hYz@S$Z1Of7|2fHf(8USgqS7IQpiqdq& zaQz!e7IxY|w9*xf0 nq}9$?qw?Uo<38Atz322dNGh_rI_lf(00000NkvXXu0mjfBp4>q diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top.png deleted file mode 100644 index 267bb9ce4c6121251108704b21ae2ec4d9247ba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFoVzjbE~@ab9zTi=+6KJI_{si^Yqt$-D^sr~hr! zORhDJHGZY1j&GIl?tIlFvpN0H6wdG7{X&ANOEh+0zW+?^@QYWBs-Hha*>yGO@rW0O s|2UKK{*~9g1vZvC3A-n6{lgP~s!DA|-{J?tK!-4Ry85}Sb4q9e00_xpQ2+n{ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png deleted file mode 100644 index 5167a310f3a34c715e8e18b68d31696435a40b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)uUo{IOT3Lnu7p0Ld^nhPG>Bw2iCrv$R48~o1HhyHR(b8FUzvJ^dkN| z9XmY4)4a?JE#mWX^Sad_q6up_)gt;jp1Pd|6;1QHp+-gL=jECj_r;>(Y-U6A;&F^r}aKJ?L!@Jj6dv*ztwh0000NJIDRD|dj`Dky+UU&y+1anD{UogYJe_B4*zX7>ro-U3d6^yJ08MBxT1y~Hu-qPf3 zbo&4Qtk|KsZ`V$dXSy(BZoFDRTz1#{-Irfh)Xa$ZZMU`Zer9WN{A;P||E5|y3VA1F zv3$GWyOhzaWGkn_5*CIPTTB>YKQOQvuC$q)w0Db-WpV961M$tl^NkP0Ew4T$%Cgob~Df_#5~d3dCkSk%| z{8^J}S(a%ji_g9M6mb6W@%h2I=IQadcDnf7yTyR??if?t+)|Jd(l*^nd-4WU+l~Oo znR+SQ;|y#qhO4tH+SKtl%HD;DE2Hdv0AVPm3Eph_#i>~AZ-xh#WLSY8- zigwp_DjqI4_qvBxP+BeGK~1(^Jm9Q*5Ks!fh?yN-#6x+_4G;qKJdXjS;K0(Nm^`#o z0T^a907(EKYlqFDQeg2h-sJ0q+a`u2CBu0ULkGfpY@Cgob~Df_#5~d3* zBvm^fR68G4Iv-9p985PHMlu|sBR5$90004WQchC-{ z2NK&b49ngwQ^=CTY}xt$8w-jZI^|~R1^XZx0`cQt{bcd(Cm|0K7K`m_wc2cUi^X!W zSnT)f)oQUbOtc{3b%|3y^i%8yeJX3xA;f9ud4(4Vk9bl+r|3ofCyF47?wk-t65f34 zx-OxE?(H{wl@JpNDy731Bm<(-NyxW!yJ+nS17Z9c)Uhp&!FL$?^HJ{HHrHFYiFNR3)x%j9E{Ass>X8%!RG0Zdu z_o1Etr*_l`?ff5=qou>E&cTb$R*rfe>Ku$D&`@IgO^QLP&6oScT-*Ez&bnv z;2Hvi9U9fOh9KQ%_N}^E@U8lLn~4R$RksT~FfPhf`+|C#W21VkgHs4Fg2*4$V;!77 lKIn}`7=fa`0@GF#m|smTJ-<9FUy=X-002ovPDHLkV1m%@?<)WR diff --git a/src/main/resources/assets/create/textures/block/crate_copper.png b/src/main/resources/assets/create/textures/block/crate_copper.png deleted file mode 100644 index 822125d475206ed4abef1e57db35218fa63a6b80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmV35LuBRgzHl&Q)mwar3(2oSg9%4^P8IZ&Szm`m+ zqb+HH8k;Z~2#OU%8(Esa#S)rE6q+!Lw6+F+%~;|elv4I+fyY~J|H0IuDwiMAhoUaH z4%*A~_D-D*lTz*U+x(#7j0wQsneq25XwG5@y3b~QEAJQ21xSVuVj?8_m;vsGAR)@|LGbbbN!$+sJHdPyOBxz!JusJaADZy+09e}e zQ-2bj$iMRDLy+H%7Wb5>2=K1+6=6SX--EQ~WPx1QHh4UqIUGpcLFJ0KZ zr=&!4J)f^qjip?73tR3`!+_H?&kPKNJvR$$Mktz<@WAwer;QOMc)*6}w8FCg2x_&k z(Q-rUSQ#IKra%cI)dB=f1Oh-<6_nfiAxYwejrisv_iYs6^==g3@95%eyM^cF>fw)t z^2+7s{a;Pf+!1B>dHZtHaP^e975%RGOzyEL*jUgkq3}?^*CExFE3U$Jxw=3QZ+kfEiPm% zELbo!TrVv?IY(47FFZL%KR85PEi64aMOrN}JUB)^H$*@-LS-l@S}iMLDJf(qC|)Wm zVkjv-H9<}O$cFhMIaKr1pqDls`NHdi4bOeG^#ARsj?H8L$XLntIkB_l~BC`%(INF^dVDKRoE zHZd$VMkOLlAtXN~EIlV9O&=mVCM`TAD^DFCHYP1g9v@H}8%7@=O&l9EBp*!}8A2T! zNf{ea6%{=m8#x{&MHw4G8yPtqA}k{vDyA{;0p96=TqCn6j- z8X7bjAwv@tGZ`N_7Z)-a8YvYVClwtf6&)iJ8zB=LAQKxO5*r&76(1228WIy25D^y; z5g88<77q~q_{r7)008YtL_t(|0R_Q@LPIeO0Kg!DF+6y1cZWB8EVvXcu4`~DGWz@6 z!D*_lvt#3}k}E`2et#ekNlN`Y9*O!O1c8J!Ema(yJT#162>98F;hpWpe8!^okw$Y4 zT8?ZO0r**{gkM1GIkLsag|XP(_gFK2f={AxaS5+;J`5q8fuFa|w27y|zJy`O0!?*tn!~B3-rUJs@Z*@*-(#Y+t?s5vQ3bhvyqEPvYb~{W1(NU&Z;(6&n2SqM P00000NkvXXu0mjf#C*#p diff --git a/src/main/resources/assets/create/textures/block/mineral/cinnabar.png b/src/main/resources/assets/create/textures/block/mineral/cinnabar.png deleted file mode 100644 index 3588679d1cfcaac1970de00c22d2c895862bdf2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 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 B+d%*T diff --git a/src/main/resources/assets/create/textures/block/mineral/deepslate_cinnabar_ore.png b/src/main/resources/assets/create/textures/block/mineral/deepslate_cinnabar_ore.png deleted file mode 100644 index a060fd1d757cad9c17a41e8880d1be3ae06784e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`j)FbFd;%$g&?z`$q} z;1lAyp`l=NNk(O5Wkq>;Rasd@S=p+Xh>pzciu}SU@v%j@d8OI86B6Q@l2Th^!n2c; zdxOGKQd0VY0#lMxQj(KXlaf;slTs5Bk`fc=xcjBXCnU!wBqk)J#>OYb#wA6^#zsaZ zghj-JM^3i&i1iQXwsej34@ma%&2sk)3JeVM4+snl4D}BP_45z$^AGa#5AgR7^YLpo za}M(Hi}LW!wD$;c_lkFPPjGOrGIq$Zbg4FS@N@SpGj>R_aSe5HPquamb##lhbqRBD zO|@_evvVmnun)6!NjGtbwsi8bcg`@h53+K~)U(afwT&>fbFg!9vvzW{akjU0cDHnN zwQ{txb&k`scC&O0Hnz33bq+DIjnuaeGO~6txAic#@-(uv*S9b>03ve(eRF+%bM}n+ zzz}7)=jq}YQo+c2uw98cP=w{e>$a<>1x%}046{nQU&Kxk=(+m+?|*%Z<1#9mj0&z& zqD?A-OI#!$IBcA;EOS-X1fL^!vdWL2O^SD3wwZm)f}g!AUE7OxF7&CNX7qjO!@u39 zUcR_-*QK)2;P`=up_5cvHBN=sxiIT4@>hXN}{YE10UOy|;J+diM- z-dxPiq^9Z1`QhLCX>2F&FnT%i2^AExJF;0hF#Z4b)X-y= B-^Ty| diff --git a/src/main/resources/assets/create/textures/block/mineral/deepslate_magnetite_connected.png b/src/main/resources/assets/create/textures/block/mineral/deepslate_magnetite_connected.png deleted file mode 100644 index cc8e9c80731bf361118e9267a4f1e3cf749952ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2217 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 diff --git a/src/main/resources/assets/create/textures/block/mineral/deepslate_malachite_connected.png b/src/main/resources/assets/create/textures/block/mineral/deepslate_malachite_connected.png deleted file mode 100644 index 3b0cda5e7154f12ad0c5cbca59cb6042520b8a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2280 zcmah~XIN8N8om(5Ft%U~Doa2S46~Y`U?PUx6nY6wr4ETk#e!5Lgpx!T2ia#(n5Z-X z9Y@*ORTKpUOkwQw84Fkm3W6+wKmxg3Qtn)Lf9yUxKlXXfdCxiT_nz~;-}mPfhH?BB z&0jqq0DwgS{@xMjD)}<4F(^(Cl)wOBK@SVw;e#F-l|oi|7PCB)QJx8wq2riPC`=L` z^(jsROVVh?sh($2Xs4483sMiI9yyepbSNolmtZeD`v4>7z-IA5H}S#EqJwUt1AF)G z^~~DK=kufYaU&8FJOsNvj`GMydC|Q1C|>-=3@&&mE;>FoIxaRkCYG{)mupfqF)4Zj ziie{&9FAhgM^N^Jk@*opJHx`m!?(wCTzO%xyimXJU}r98+m2wrkbuomettm#?vVk0 z0RfJ&J`S3m?K-8N%}Lq7!`S9-dwvRIl|QbB#C6)swo6$zIA} z*=?uWFjzPSYcYx-i@3#|M4}MMTQ+*+Pof>PI2yr;1Q^4w_5%PmI>4K`BkN5=88&K= zYWFa6RDQX!`CeEg!)a*qbYHpo^1y=RxQ%A2d-zg0o^~^h!t$ZHl z1f2f+&Ii<5u5gt*(h?{(gakFl%Iv8UyO<(%SJ%dPF7o^u?r2pyQ4i}99f(DhOsTek zosynC0AxF7FRi!`T%cd9D0mQFbZhmGDuUggM4`?hcc!bt)VxPQIJ!a5Q+*A+*Z0!^;X!sgIlCvHmiY3a zNxsz;i!5)LSCt-bITi0Hey$l4EzG0N1{D)OWjfQv=g)rRZ)^12n79_M>RCy-urQaJ zCArzMg}(L9st7H`cmGb&;3DE~U0Zh(+#Hoo@vR&gu;5H+*lXhA>Wv|nOA6aL$!}!v zqulnNyE7)C);@Ubuz+;oM&|e37q2LFt+q0)S!A@n#47qH4XeUl?K4vqwfBsH?$Y@k z&+U4y9XYxDjRl$R)tkE=AI>HGggHglYH>LU7hmU;6}#M15tp^+*GEIs;6jx9 z@b$OXRA9wP3;Ud=T}44$wHe}#Wh|DL!;abeg5R}}84&E~vTaUv=D1}2r|vy0vgPFq z_`ra3dP5GPvn!?FHjk9U=b}Jg8>%1;@F+>uEAc^y(`b$rx;2qL2Z(m8bZN(~^7t`hiRTQ$4+=@&ff@27_LACv? zk0<}slEE#(giIAA(z&}30n|#~} z-p>VyfWO3zIegx=P=J3sCmkn<=nNb8K0nfB#Fu?Oq2)- z>whAjYn`>!KTt~vvyTj7EnTyF4p8t=B2&cERzk>7UjKt>i`-w-A6{!r0PLmtk7iO0 zi6q8q2o%=nC;wNY?joR<9@WSR4oaaWw7*tPo%kXbRia3v3}T)lBQgjx1b^3tZcsPX zl~Wc{Bvh!uKF!!dml(y}IUwV|$=kWD{7tjR6J@kEq|%V*Fe}bb;;fLA3F!C$(q*FC z7?sT`>T zozv9HXn&w}Lk1%0j7gz=YgQReXG@=mRB)H#afej{zlbk+aTnzVXFa@x=apJ4} zatP@nKFMJYjLAb4HR%exRW(FM%ZC$e${;gZ

&sqt>ZHxAiZuk8`-mKL+fFgo$dM*t}TSZx82c!69LW zS|{u&ppj1J(KT@K$fNq65if#PM%BZz5q34+`P~9mH8f1}SY7bVeqz%i^uq-Ld^p~9 IEZ&LV0ql#700000 diff --git a/src/main/resources/assets/create/textures/block/mineral/deepslate_malachite_ore.png b/src/main/resources/assets/create/textures/block/mineral/deepslate_malachite_ore.png deleted file mode 100644 index eefcacef5527ddd20c45a04f02c35d101f6f5189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`j)FbFd;%$g&?z`$r4 z;1l8+-&>j7Rp~Ih5(vB|mX=qP7gv>+Rg~LJC@L&2&Mz$Tsm*n+%&@OcF|5zDuS|~5 zNKHsj0fJ-@N={5oPD)8mNKN+1Pl!oNN=#0QO-+hVPE1Hjj7v_4PfCmhl8K42NeOWY z3DI%!u9>kx2~i=jQQq+p<{8l@>EU`=;pVB4Ch1{X*%2B!5%vk8zF|S$;X#2xKokfB z0fB+u!Tx@M0sa92K7syrVcwSEURGgV=HZ@B0X~ia-bN7~rlGzz0bb_*UUpvIwqD)} zkuGvkE=K0>h07Lbjr;B4q z1taUhb|t0&3DyVk;oG{CC+{`VFY@4=c~jXhET!cBf5DphmJ^n+G>Bw|^h|P@Ae7p` zY&7%M`}o+dNu4)5%1hTRVV^yjdG7+(r`MXl*HxHI_4yk3EGDle(^6!)dcXLe0Jdia zMG+dYVV{=AD_$(}XO_Pwzj|}7aB%Ab@$DHQ-`4)Bylho$wqMHcl*!BAPnCZ3ZT`8%Vl}?*v`s+_3q{Uoz-=>*nG79U*QM{ sH1v8VmdKI;Vst09&cs0RR91 diff --git a/src/main/resources/assets/create/textures/block/mineral/deepslate_ochrestone_connected.png b/src/main/resources/assets/create/textures/block/mineral/deepslate_ochrestone_connected.png deleted file mode 100644 index 266dcf3f4b9ee95c9ebca53a616432c1f3bbc1e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2317 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 diff --git a/src/main/resources/assets/create/textures/block/mineral/magnetite_connected.png b/src/main/resources/assets/create/textures/block/mineral/magnetite_connected.png deleted file mode 100644 index c6163a3e55052f96de88d446e4f330d6bf32cbb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2027 zcmY*ad03L!9tLTmTN+tS+nvx`lR8-sW^N@0x!iOzG;<@jvJ6un6_*r*@B7T0C~b^z zv@FCLw-%Q&l@x^MhZff|lzyLm&sOQ%D{oIjq<{N1irVJaq4U9AW+Zlw0TE()O0Z2N1^+utDn;S@}hUP z^vUK?o^4yMf5KqMJ6!3uktaiPOY$xW&YRr)D|@#sxtMHs(EKfh^q_CXeLbtFVlqMV z{RV;Da7~HtmGaOk$=sI@O!G=?dGbE_X4(({sW%yVP8JYs`HU~);xcuqh1|bgN|92> zk#8o^u4TRK)y@DQa^c8FF#nP^9XFTn31QI@;;P&`+Rq5{E`aD}KKh8Gys^@>#86!y zn2zU>GB^0V`}did!d_#ffsQ{@gIeIoYB~k>hCW-QPGzVMpn4GbK-FMz(N@Yl6F~K# ziASMrTYk~&**64M_={K#Kw7rB?3}z+b3&0o^-W)BW#C46lBdXhdWjl z*{*G+*V13WOWWvdml!Q8$MF4_WMQdI%tvr*!0?9f8C=v-;y|C?Yv`j8=mL4Qxedh& z%0cx6V6dwA9EH2tG%WkZLR@$SduEu@pJVYIVsv5oY^fQ{VNB=3SVxt7m&*L~6<=UU zHybKekmLXSBoxQ$G@sS`-yrWbS7{M%7L=;YF#pkIMD<-cnl-V4D$_zva6ne7Dk34_ zK2- zbgmP8cSplO=F9F2 z6zWdKhm((Iv!q( zdJS`AG?6|D9uo+A70S}1VS*UduLBFw1M&=b>YZRJ_nWWc$&qgkoh!V)+1lgq-?Hdb zSN`T{l_Tq7?xZI-NhZJgiYD%tep&Ps(x9bakypb5IXW=yX2+ zK)>pAig^QTSP6!Zl?Ed^dH-Htke(qx=F-`HFHYK@z7&KuvY&h$vCS?7|?28 zG_2pC1cf>vf=M`bqxQ=_kwf$}6QaKUph1k>YgHoK$XRk!cFnqB^aje#W{g$W(Gv2#jOYi~WEwd~wqc9^QGb1A-CA~B(wK+Jc zAvCcnHa^oero|^X*EcB9(=XoKCCkh?OT#o|#U|5!VCY@)ba4!+U}Qbm>ckW%;(D>V zR;}#xHrK!-eU?9R3>`KeJ0$V%zj4gzJ9j4rXfaA~FgncQlJtt7tm3(pi-9e7XX0%A z@~AFykpFPrUWM_3_u`lRM6yKjJ$@?N|Ax?wbNhi#gP4Q};(2 z9}{qrIhFiwF8|~F^2<9L1-`R=HhN*Pa^70KUK?|@>fN&5m6rMcwno`6zghib#fb%b zw%S^i?yjy7cDg@D+DhVfPW-y7V%>@{OO49E2~RlU<67j*#Bkv5T?U6kvMm2y@--sd Th0=6^zGLuo^>bP0l+XkKlw9-{ diff --git a/src/main/resources/assets/create/textures/block/mineral/malachite.png b/src/main/resources/assets/create/textures/block/mineral/malachite.png deleted file mode 100644 index f1787ed7b4816c8e1a32bace9909ddf7b00a6b11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHVEbxddW?)5S5Qf|2!LBjaHO4weJu%!y50u?w8U z0wNVozTfZlK0z$9MqO$8i-$)l?I+~teR$_<+Y#feb9ljR8$Wgv<@M6Mb)wl_3SCc3 zoad^_2|jpt!RCluhLp;*&I+-Mv#YLDHZ0q@vtHn%lI6dZ&%|dwF5hq%Xf1=MtDnm{ Hr-UW|OSDRL diff --git a/src/main/resources/assets/create/textures/block/mineral/malachite_connected.png b/src/main/resources/assets/create/textures/block/mineral/malachite_connected.png deleted file mode 100644 index c625c8bb30fe0bf78e20d3d6081575b2558ff63b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 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 diff --git a/src/main/resources/assets/create/textures/block/mineral/ochrestone.png b/src/main/resources/assets/create/textures/block/mineral/ochrestone.png deleted file mode 100644 index e59d793cb5037806c62d02b61b5431913c588e83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHVEbxddW?C}rHYaR81_V#sIYxi$lIg$O+(kGj* zm1ypKwzxX@U2FW83qMnJ;x0^_dgokFHqV`wg8mxC=?xoX!!90m{Ld&h-8zTGwe~pB OW(H4JKbLh*2~7Y`^in|p diff --git a/src/main/resources/assets/create/textures/block/mineral/ochrestone_connected.png b/src/main/resources/assets/create/textures/block/mineral/ochrestone_connected.png deleted file mode 100644 index a31db1e03a40ed9ee60212c45cc3ffbb77ed31fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2149 zcma)7c~Fx{9{nH%VFe~y&MG5LKycOz1RO`u1%oFdhzxfy5F&Cq7$8Up3HcIEks~4^ zs1QWOIDmk1$Pp%>awAbt0^taV2AwDoB7~gZMxCvi+P}7{ulIhh`gOnRs?KzGb241D zVHE%XhR(+hduV3bm#zoXjGw3TWB{P`y}PT|5e;m)72I5Qrl~Br>1J?U@tKD=PS+L$ z)D#3%<>M;z0xK>BR4`7J|3XT@4T{GNvPU*03IxHl zBqE(k&ZI=ssFVx}p&-F8l@y&qip`Jr&Pu?fpAP}!V{>Btb7K6HT z{=_Bx2@)ZO7#9;47ngO;`#d2wDLRaH4wHG-gBTT_7U7!_aWd{~I3eX& ze|>#UZjt3{;=F^;-l=N2S9|RB6D(2|r*;*VmuN}O98#5kEO>J9_An~MvU{PDI<_0( zTBqtRbsOIMd2++*WPuB|aeKlGPKCOof>hhWSI6J|bIjN-@)2W?kZ(*dz8gU$ULuY- ze|Id`C|w4V9UlU>CNAp^yiI$rjB9TC(Bdt?o6WHnw1Gy^$R(#1Z;O^!b`AvCGc+MI zl$zM~O0;x*GB~U!L2HlE=R|X+v8bnlsaoT=^VHRlN2cs%PP1rT*MO)xv@Rvl?V zbLJZ>sBF(zKW1|udqDPJ!9*2jc@DX$3+R9Bgp_%cLGvmU>@yEl<#qf+}m-4vf1 zFAqC1jGZv`y1`nsF^wTo{Sh_(a{T<{eA(k`#yyG1pes7r2QOm<(=%lZ68<9FDfdmA z8;gBf88W<4-eBmJ%gg`5IQDU``X8vE%I! zE9Zy3;yl9MZQ}F$4y@R68nqtj`8D>C3(ej0r29%Dm3-X|%(hlho6up`WC*>7Try}> zzIy~3lxUaNcWgcDy7=R@O+R-eI*f?hq-?-`yqp4skL>w$4Y0}+qpz`XQ7{Fqcl%q= z0!Dj$5lrg&oKqcj6OU8p^OU|n=&g~}Jp7cOhoar9j+%bpS=lQy=?1*sfLFXB{o7t6 z4Tj2iK4%`;+Tg6-!5%AI#NuYefjrR!^f-Ba*EAUwjwB1R?rqgW7z?UT2 zQ7$a`pJ02k=}oV99HqT!kv5>dvmfCq1P8>G_^<*(gjyg=u6hxos}1DNLi2?uW_Y%% zOQ0QjGJ)gBpUDq^OXh0nJlvwV$(nn1Zb*qIXxMF5M)LK6D!#6n1Y|Xs385hC>8e*c z!8W?ZA)451pbT4F!V9}K5^!}Y4u-DO7aG>u=z|wkj=mbWF# z6U@HTCetJb;_ChdYM1tgJL3rZfQfq+%UU>X-fPtXT1OS$^dX|@{e0)Atq|5)fZvDp zJ_^MYqx4orug9X?{XP8#!Ge61QobVTm%=isN4G&TE*FNE>IAP#9HKhDv5nmWqpd$ad1=;}e1Fz8$1j-}W!V;=hU2(oI(SwSqZ^pr1MO ziw_+smQ>IZ@f7!3%3J&|;Qb9?gv4kE#M7@7P5z^jV71aNW_^%q&*)Q8A)NJkTr%qa zTtJ}Ximzf8(&}2$SpjJ=Nm^=?APklU!Hsz9r~j9p9-aFrJ_Oz1jte@;92r~H$!nHo xamTTg95QExE$!qrX(0J8_^G$ekrJp-!zR(&`{Y#18qL25I3IC4TzxPo`9DCMc5(m! diff --git a/src/main/resources/assets/create/textures/block/mineral/ochrestone_ore.png b/src/main/resources/assets/create/textures/block/mineral/ochrestone_ore.png deleted file mode 100644 index e812365cdd6ba98dc49cff6a3dc49be450c479e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`j)FbFd;%$g$s6x;W=h(c$%#uQmoA-LG;dPvoQVy~CnQau(AMAIKc%m2a$m=! zzOIRV-BWv8rgoQ4?rNOUU9qeqVrfUzl8&fJT^0SEE%RGrds{0eH|Nc4NbYVb>uN0T zY^<156FjFTsH?7Mc6D$^U1>{wRYzS(bA9#n>d1!r`iAtX?cexB>56)B=IPr1$FtT>P|3NI)4-6-ka5=H!~Y_)-%;nD7c(&R zmHCyO&*Q6JeDU*kS-E)kDJRT5jaYV_J!56NefDh8XZybC>)x!ZZTj%&;rr$PswQo{ zrr1&v^WNz9^5~^gx;HZO?K*Sj>zTJ(YXx&Rg?pt{`@q2 zVH>xXC*$l{#l*vh*lu&>FfgcSG8}MYI?S~@PDON+*daZj2N*nE{an^LB{Ts5gg43b diff --git a/src/main/resources/assets/create/textures/block/noisy_iron_block.png b/src/main/resources/assets/create/textures/block/noisy_iron_block.png deleted file mode 100644 index 60e244bf9cc71cddb31728657327c8fcbb590050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!Q}P)yu7=+ySTWxrKP2$q@MTo0^)Mn3$NCmzR~5m6Vi}larH>kdTg!j*X3ti;Ihjii(MeiHC=WhK7cOgoJ~G zgMop8fPjF1e}8^{etms?dwY9&dU|+xcz1Vqb#--gbaZobb8&HTaBy&LZfQV>)eU7ac1CwXI2&} z1LdQqX(SkVndWrxd~`gi(E-}>uza+1$!V-K$$^(%zLC}q>?`h+;Z%`l#&b(urLEEp zGD#=>h`S-KJ*OAh2WscE&&ltrG6qrvC>Z WQWQOPQ$-N~0000honpS7U%i}PyqjH|oSeFsTDg^2wv$-1 zlUTNrRkM&+u#Q!(j#90SSFMdwr-@Idf=#1>Nuz;EqJc@GfJ>l&NS%O3n|w!_d_|dj zLz{X+F mS~(7W Date: Mon, 24 Oct 2022 14:04:48 +0100 Subject: [PATCH 013/122] Industrial Iron Block Industrial iron block texture continued model+texture improvements --- .../block/belt_funnel/block_extended.json | 24 +++++++------- .../block/belt_funnel/block_pulling.json | 20 ++++++------ .../block/belt_funnel/block_pushing.json | 16 +++++----- .../block/belt_funnel/block_retracted.json | 10 +++--- .../models/block/funnel/block_horizontal.json | 16 +++++----- .../models/block/funnel/block_vertical.json | 30 ++++++------------ .../create/models/block/funnel/item.json | 10 +++--- .../textures/block/funnel/brass_funnel.png | Bin 8280 -> 8718 bytes .../block/funnel/brass_funnel_frame.png | Bin 627 -> 6050 bytes .../block/funnel/brass_funnel_neutral.png | Bin 752 -> 8315 bytes .../block/funnel/brass_funnel_powered.png | Bin 734 -> 6250 bytes .../block/funnel/brass_funnel_pull.png | Bin 804 -> 8236 bytes .../block/funnel/brass_funnel_push.png | Bin 802 -> 7884 bytes .../textures/block/funnel/funnel_back.png | Bin 7565 -> 7679 bytes .../textures/block/industrial_iron_block.png | Bin 0 -> 901 bytes 15 files changed, 57 insertions(+), 69 deletions(-) create mode 100644 src/main/resources/assets/create/textures/block/industrial_iron_block.png diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index d555c4931..adca94f7c 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -3,10 +3,10 @@ "parent": "block/block", "textures": { "back": "create:block/funnel/funnel_back", - "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_neutral", "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block", "block": "create:block/brass_block" }, "elements": [ @@ -39,20 +39,20 @@ "to": [16, 16, 6], "faces": { "north": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, - "east": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "east": {"uv": [11, 0, 8, 9.5], "texture": "#direction"}, "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, - "up": {"uv": [0, 0, 8, 3], "texture": "#direction"}, - "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + "up": {"uv": [11, 8, 14, 16], "rotation": 90, "texture": "#direction"}, + "down": {"uv": [0, 6.5, 8, 9.5], "texture": "#direction"} } }, { "from": [2, -3, 6], "to": [14, 10, 0], "faces": { - "east": {"uv": [11, 8.5, 14, 16], "texture": "#base"}, + "east": {"uv": [11, 12.5, 14, 6], "texture": "#base"}, "west": {"uv": [13, 8.5, 16, 16], "texture": "#base"}, - "up": {"uv": [14, 9, 11, 15], "rotation": 90, "texture": "#base"} + "up": {"uv": [14, 8.5, 11, 14.5], "rotation": 90, "texture": "#base"} } }, { @@ -61,9 +61,9 @@ "to": [13, 13, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { - "east": {"uv": [8.5, 6, 16, 8], "rotation": 90, "texture": "#back"}, - "west": {"uv": [8.5, 6, 16, 8], "rotation": 270, "texture": "#back"}, - "up": {"uv": [0.5, 8.5, 5.5, 10.5], "texture": "#back"} + "east": {"uv": [8.5, 8, 16, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [8.5, 6, 16, 8], "rotation": 90, "texture": "#back"}, + "up": {"uv": [0.5, 8.5, 5.5, 10.5], "rotation": 180, "texture": "#back"} } }, { @@ -73,9 +73,9 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "north": {"uv": [0, 0, 8, 6], "rotation": 270, "texture": "#base"}, - "east": {"uv": [0.5, 6, 8.5, 8], "rotation": 90, "texture": "#back"}, + "east": {"uv": [0.5, 8, 8.5, 6], "rotation": 90, "texture": "#back"}, "south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [0.5, 8, 8.5, 6], "rotation": 90, "texture": "#back"}, + "west": {"uv": [0.5, 6, 8.5, 8], "rotation": 90, "texture": "#back"}, "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#back"} } }, @@ -88,7 +88,7 @@ "north": {"uv": [4, 0, 16, 16], "texture": "#redstone"}, "east": {"uv": [0, 0, 4, 16], "texture": "#redstone"}, "south": {"uv": [0, 8, 6, 16], "texture": "#base"}, - "west": {"uv": [0, 0, 4, 16], "rotation": 180, "texture": "#redstone"}, + "west": {"uv": [0, 16, 4, 0], "rotation": 180, "texture": "#redstone"}, "up": {"uv": [8, 2, 12, 14], "rotation": 270, "texture": "#redstone"}, "down": {"uv": [8, 2, 12, 14], "rotation": 90, "texture": "#redstone"} } diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json index dfc5d49bd..9f8699599 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json @@ -3,10 +3,10 @@ "parent": "block/block", "textures": { "back": "create:block/funnel/funnel_back", - "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_pull", - "redstone": "create:block/funnel/brass_funnel_unpowered" + "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block" }, "elements": [ { @@ -43,12 +43,12 @@ "to": [14, 11.9, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, "faces": { - "down": {"uv": [12, 9.5, 14, 15.5], "rotation": 90, "texture": "#base"} + "down": {"uv": [12, 9, 14, 15], "rotation": 90, "texture": "#base"} } }, { - "from": [1, 8, 11], - "to": [15, 14.95, 14], + "from": [0.95, 8, 11], + "to": [15.05, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, @@ -59,8 +59,8 @@ }, { "name": "External", - "from": [0, -3, 13], - "to": [16, 16, 19], + "from": [-0.05, -3, 13], + "to": [16.05, 16, 19], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, @@ -73,12 +73,12 @@ }, { "name": "Internal", - "from": [2, -3, 19], - "to": [14, 10, 13], + "from": [1.95, -3, 19], + "to": [14.05, 10, 13], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, - "west": {"uv": [13, 9.5, 16, 16], "texture": "#base"}, + "west": {"uv": [13, 12.5, 16, 6], "texture": "#base"}, "up": {"uv": [11, 9.5, 14, 15.5], "rotation": 270, "texture": "#base"} } } diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json index 466ea15c5..5c82f50f3 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json @@ -3,10 +3,10 @@ "parent": "block/block", "textures": { "back": "create:block/funnel/funnel_back", - "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_push", - "redstone": "create:block/funnel/brass_funnel_unpowered" + "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block" }, "elements": [ { @@ -47,8 +47,8 @@ } }, { - "from": [1, 8, 11], - "to": [15, 14.95, 14], + "from": [0.95, 8, 11], + "to": [15.05, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, @@ -59,8 +59,8 @@ }, { "name": "External", - "from": [0, -3, 13], - "to": [16, 16, 19], + "from": [-0.05, -3, 13], + "to": [16.05, 16, 19], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, @@ -73,8 +73,8 @@ }, { "name": "Internal", - "from": [2, -3, 19], - "to": [14, 10, 13], + "from": [1.95, -3, 19], + "to": [14.05, 10, 13], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 8d439c4e0..06f4d7e7a 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -3,10 +3,10 @@ "parent": "block/block", "textures": { "back": "create:block/funnel/funnel_back", - "particle": "create:block/brass_block", "base": "create:block/funnel/brass_funnel", "direction": "create:block/funnel/brass_funnel_neutral", "redstone": "create:block/funnel/brass_funnel_unpowered", + "particle": "create:block/brass_block", "block": "create:block/brass_block" }, "elements": [ @@ -39,11 +39,11 @@ "to": [16, 16, 14], "faces": { "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, - "east": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "east": {"uv": [8, 9.5, 11, 0], "rotation": 180, "texture": "#direction"}, "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, - "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + "down": {"uv": [0, 7, 8, 10], "texture": "#direction"} } }, { @@ -51,7 +51,7 @@ "to": [14, 10, 8], "faces": { "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, - "west": {"uv": [13, 9.5, 16, 16], "texture": "#base"}, + "west": {"uv": [13, 12.5, 16, 6], "texture": "#base"}, "up": {"uv": [14, 9, 11, 15], "rotation": 90, "texture": "#base"} } }, @@ -100,7 +100,7 @@ "east": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, "south": {"uv": [7.5, 0, 16, 6], "rotation": 90, "texture": "#back"}, "west": {"uv": [7.5, 5.5, 16, 6], "rotation": 90, "texture": "#back"}, - "up": {"uv": [7.5, 0, 8, 6], "rotation": 270, "texture": "#back"} + "up": {"uv": [7.5, 0, 8, 6], "rotation": 90, "texture": "#back"} } } ], diff --git a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json index d4c8803dd..8c6703f09 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json +++ b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json @@ -25,14 +25,14 @@ } }, { - "from": [1, 8, 11], - "to": [15, 14.95, 14], + "from": [0.95, 8, 11], + "to": [15.05, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { - "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, + "east": {"uv": [0.5, 7.5, 4, 6], "rotation": 90, "texture": "#back"}, "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#back"}, "west": {"uv": [0.5, 6, 4, 7.5], "rotation": 90, "texture": "#back"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#back"} + "up": {"uv": [6, 0, 7.5, 6], "rotation": 270, "texture": "#back"} } }, { @@ -59,16 +59,16 @@ } }, { - "from": [0, 0, 12], - "to": [16, 16, 18], + "from": [-0.05, 0, 12], + "to": [16.05, 16, 18], "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 0, 12]}, "faces": { "north": {"uv": [0, 0, 8, 8], "texture": "#direction"}, - "east": {"uv": [11, 0, 14, 8], "rotation": 180, "texture": "#direction"}, + "east": {"uv": [11, 8, 14, 0], "rotation": 180, "texture": "#direction"}, "south": {"uv": [0, 8, 8, 16], "rotation": 180, "texture": "#direction"}, "west": {"uv": [11, 0, 14, 8], "texture": "#direction"}, "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, - "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + "down": {"uv": [0, 7, 8, 10], "texture": "#direction"} } }, { diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical.json b/src/main/resources/assets/create/models/block/funnel/block_vertical.json index 320aa0132..482c84903 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical.json @@ -6,8 +6,8 @@ "direction": "create:block/funnel/brass_funnel_pull", "redstone": "create:block/funnel/brass_funnel_unpowered", "open": "create:block/funnel/funnel_closed", - "particle": "create:block/brass_block", - "frame": "create:block/funnel/brass_funnel_frame" + "frame": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_block" }, "elements": [ { @@ -88,39 +88,27 @@ } }, { - "from": [5.05, -0.95, 0.05], - "to": [10.95, 4, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, - "color": 5, - "faces": { - "north": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#missing"}, - "east": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#missing"}, - "west": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#missing"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "texture": "#missing"} - } - }, - { - "from": [0, -1, 5], - "to": [16, 4, 11], + "from": [0.05, -1, 5], + "to": [15.95, 4, 11], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, "faces": { "north": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, "east": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, "south": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, "west": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, - "down": {"uv": [8, 3, 0, 6], "texture": "#direction"} + "down": {"uv": [8, 6.5, 0, 9.5], "texture": "#direction"} } }, { - "from": [5, -1, 0], - "to": [11, 4, 16], + "from": [5, -1, 0.05], + "to": [11, 4, 15.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, "faces": { "north": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, "east": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, "south": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, "west": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, - "down": {"uv": [8, 3, 0, 6], "rotation": 90, "texture": "#direction"} + "down": {"uv": [8, 6.5, 0, 9.5], "rotation": 90, "texture": "#direction"} } } ], @@ -155,7 +143,7 @@ "name": "Item Filter", "origin": [8, 0, 8], "color": 0, - "children": [8, 9, 10] + "children": [8, 9] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/item.json b/src/main/resources/assets/create/models/block/funnel/item.json index 73e46d81c..48bac7242 100644 --- a/src/main/resources/assets/create/models/block/funnel/item.json +++ b/src/main/resources/assets/create/models/block/funnel/item.json @@ -50,11 +50,11 @@ "to": [16, 16, 14], "faces": { "north": {"uv": [0, 0, 8, 9.5], "texture": "#direction"}, - "east": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, + "east": {"uv": [8, 9.5, 11, 0], "rotation": 180, "texture": "#direction"}, "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, - "down": {"uv": [0, 8, 8, 11], "texture": "#direction"} + "down": {"uv": [0, 7, 8, 10], "texture": "#direction"} } }, { @@ -119,13 +119,13 @@ }, { "from": [1, -2, 14], - "to": [15, 14.95, 15], + "to": [15, 15, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, "faces": { "east": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, "south": {"uv": [7.5, 0, 16, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [7.5, 5.5, 16, 6], "rotation": 90, "texture": "#back"}, - "up": {"uv": [8, 0, 8.5, 6], "rotation": 90, "texture": "#back"} + "west": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, + "up": {"uv": [6, 0, 6.5, 6], "rotation": 90, "texture": "#back"} } }, { diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel.png index a49b74abe675160eb2787005674ff11de3aa35e1..9a5ad5cc7e8e674c7ec32acb167710f0d5c4897d 100644 GIT binary patch delta 4332 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 N002ovPDHLkV1g-W){g)H diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_frame.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_frame.png index d058c42b922dae243805292222a24d7a18604c49..a1b175f8fb63a81b4c50f88ba5b01030ff66900c 100644 GIT binary patch literal 6050 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 X=yEX>4Tx04R}tkv&MmP!xqvQ$;BihgJ|# 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 diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_pull.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_pull.png index 443a9aec79e2eb78efc38e16b428ba488cb777aa..3c120d38a2fb4424f953911840cbac1332e26289 100644 GIT binary patch literal 8236 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 ALI3~& delta 720 zcmV;>0x$inK%@qcBYy#fX+uL$Nkc;*aB^>EX>4Tx04R}tkv&MmP!xqvQ$;BihgJ|# z$WWauh>AE$6^me@v=v%)FnQ@8G-*guTpR`0f`dPcRRq&) z-|wP4%lqD+t53b4)iZ;tk@NO-tvzPaI|?Ng+Nb9yh2#;zzE_F28XuIxO(a zu#rj46Nib#Vh76|%u0qzJWU)?RE_e5tjh}LEzWAC##(*y7Y6g%N}B6b!-!)E2_zvx zMh#_DU?EDoMt_Ql6rIOB{6mgENiLaOWiWCqpb8a|;|KqP-?KFfQ$d%UY}?Hf!2b+fX>EVC0nC1qUT@*Z%x0}MXtk|8;gpGqhc zfcG={rW_Eu1p;gC+*;>2eE>2vtK}Qu;1C!qQueyXyCi!%=l1WN*8F||ZR2vK9POO% z00006VoOIv0RI600RN!9r<0Sv93Ti43>Fixg5X}0=Nu=00Q*TqK~z}7W1NIfD|ZA4s$szzH!K1SJErWyP>d}O@d1w0)V=c>!F@u>bWy@p@g$m7#8)KU>i;=6$IwvVSz8d2lWyZ{vM+OO0oYYIGFSQm1dJH$T{{eiHAJY9|}yBBQx{ zVM{EbNN}EKOaK=!H4*_GpgG;lsVtHXb<`U7tDUP&kBIA@?$~`6JKiKy^&7^Hk!Uhh zyj0Jl-+cwWF~59uki%FCTTQ{Ng(6%t&xci--zJ)G#*IFlOG=F*+q z|1zZ2X9@C!*!`@`!x!GKp%a}fTlqTpN%{PDud16B9d#~^K82gm60?bUM(U+SFUt!^ zrL%4!WnZ^oV!tcgpE?rB#|Xq=WtATYe|bdhJQZ}uv-4hLkEa%oJGO85B=cM(P#}|c zv5cME`%FRl!F-<*YM4@^G%{v2Vp}#cSkd_PoK+q@rhepO>x^=~-EXmTnIRpm35BzD z%)H=+y{VhDqh6Whtrw`wOT2Kqb8jg##mRlM!u-SU~d{vj3L%n^f zId7krOF?yW#Wp?j7Erx1(;{^ym`0F4{o=iONcY0~1awc=)*k5LE%!~%Yl{>p&jt6q zt{85@w+TUE=)DKb&$8zVz^0=v^X|-UsTCj^9w9_Xb_`rSW_9?AMPQECCPB#%{TLW} zaVPb~UW2B41IJHJaKuLhc+1_3Hj@oI=8)HIb1$XiV*>eBO-#bw?!!4^-=>?1CN|z< z>96|&RW54nBGuKUhGR$l4=cS;eH9(=7|%FZGH7Y#kuE8lU-bD>SHR~(ZM{*8+t6oj zeN;B>{kliRnI}vwqhO!(5k)q|EpowOFvzVN1W)@N7t9B?A0-a&x6q~QY!gYuizo{4 zys9W4xzrKxUvFp~;syx`R06iMNneQ+e2dbsv4t8m=G*0y zH%ieZAyJa9Qe5U<@jf#T%v>9d*+g8z(`#A+^BaX~TBI>D+WIyx#rOQyApXr?_^}C8 z%Tdxf5J%(qVpW;Nc>4U<$HPJ6133$!qo&XA^#<&7w-}?0M{x>#$-cN1H+hOhL&fIgH_B$6P z4Btgx4Qo~9F=(?EY`fje(R;O1?bNo+G?a5zi`=&8Hyqcjvx@wJho74ua&Ia4>h!aR zfBJBGN6lS|fw#GOUMi-SBdNAszu)C~+}vfO6Y{Uha^qi;DvM%Fb8qXuV|Jy4a!!VX zml0o#-Flk#>Cu~zT^8C^Rf7VlUecRi-5mKWX2y7vbUDhuON3Fc-U>)(AkdW;`Gc^7a&9{YUf)!k#CX&F`1V54mmRD_R(ivD?+y0J&r_h7pmw@tS+z z1$`v>_U^qBFGpt!0`63A$(%gaw{Dkg4*v;_QYtfMQ$Y0-UExuqOD>`s?%5ajw?B2o zw7CCvdLB(_H&fXO;-O@ zlC8Y(g->|0Vy05uEyK;Rg!k62hR=L;hkQhE#b+9Vo|lquw2m5wlx3vmG?;=L-|cS~ zIo|9SiywWj7mOuGqMgpYX~2G!Qphneckn8)9N{u)%Xz~AKegA!7L(iLcA)PwZ?>|Q zoth$ThE#ZY{)2{<96F;WsrEres(-XYle&{<@B-V*2Wg$U_^tkZcO2Uj-d3H`!COTe zxg;L#)yJ09*PGwVwQKAD(Eji-`yNwMVED6Uibk9!DJDnMK7JP72XiDTo`B>0EvU96K z5d$?%6v(zET1pnc0KZ1Yrb@nTDc5=+z%<_hwhg(D^#ASM9zZteY}l+DG}uQvl>?n=a|}yH~L1 zA;jc&O`m8BkS3(+J(Db%HRkm-BHGXFQmg*NW>tH3T6_1k&J#E4)b<@by>oo5_wMxF zIk^7!8RJHB-R%2>3WW=@7Q|=UB)RWsm9GOmh!COh2`3elfzr>d@{0vGY;` zohLTu^X|>M{K;1Z_TiPp_FTVF8!_H9A4og%A64%XMJ8)Dr+BSDaqQyB=%e+3S9@7h z$-4=ZSHzCCiss;>Y;#;{8#4yQj>DWEw-=N4zd$RD?$~wb7TZ8^@&Oo{q&U%S_tYbV zcX48&hCS_J+FbG6Vt|BM%`&@7eWQ}!se{=N$U1+LwzerwTl@F3BY0v=^odf}uQnA9 zFfrHNE5gYgO0P4$Atx;25xr0Ju@*`8?&njJt(s1)m($8sx$@XKeMNKl6q+iqms6(N(Yx1iMo1WbuKmK=8+)mY%Z$nGXt z&B#UwT4@RH4ZeKj5c^T9;MTk-0?cU0gMayUze$vVlqGxkPVUx<~yw=WTeQ|P{3ikNG#;x5P3VHhz?sJ|T zgNU0{*y~3OWD17rzW*NnU@t#U&w4*J(|wedr~$D~XrJVzP&S6g%AD!x@A=+CTbwgK zb567TDz#eJpZ7fk!ko)OoI!mMzwdqn(65Mpa7rL zVNP^91q+8WnM?(yk^-6P2v@{lFmMDCjzr3X2zlCRcRJon-km1SqFCk70cb=ji9#ol z-JvW_Jb}!htHWU6IP?cOI7-y@0*yZcu%1`wX>@xy4tzj?^8o>HBm$u-k3h;JG4Qqi z;HZ(&Pj7eH4;4W@;a+$OTu}i5cXRuL2aT@l`77R^deAJuD;3-fpph9=BB1LDxYNbg z2Bo+%Xlr9KXaLK!lDDh90~}0hCGuLILpUSTpFS)Z9Z7DK6%Q7AEz+L&6GvfCT~{#n zL^$9IxPgh#KxV~1;OQiXUkmhy`LIU*EfFx>PyRokf7fdzmla*HI%Fb)6%?nV4rAqu zwI>rv_Slu52nPVbU{Ff(_NvM%@+hLBl03m4K*`0h5nxe) z1VWyG!6W5S2sBC&0}ud|qQeRmYaOr$O>yclqyplX#ncr~ zcOX;U!1f}!+mo5JUqcooH^7{ZXUV3htgMViqm(eJ$`~ai0{IJc44~4$GH0|FY%Z=oQcLd-RcgGbM*1}-H>44JWS=|9Luh_xaV6~|Lo=&D(kjbv3_}hXW*YqX5el|qf<}g{==mH2TpCZVD&*?GWGPD_~wAe>eK3$2C#VIs{Ay(Ct$y_1fY(qLqsRMyCVSZw?CTgcRT4%3K_40!6>rI7YR6kg-k#K z@&siEJXnXS$^;bvO;A!;SRAVm%^4JmD+!?f zQK#SQ=6}Jh@&8ey|H*wVY}H$vOgRm9u@l{d>He4D{{*HBM=q1o-zZpY@+B}(;yH9 zan@&@SGuMrXyl~hjC46aa%~Y(kTUGKdjK?Tqw8AHwaIR*TNLESX&uTW(Vd{IqrIgc z-xdgD{Ue;tK?|$u_E=5*9Uj89no&wKg42RV!l8txq2(Lp%MTlH2E_2iL38JTZ;^pyWK4V*R7t`vA;+I1G`mE7b3a15N1eH)CC-P$y~yO>2AhBm zp0$xXx168_M_XBKXL~fQS=lwZb-hjow*m2mLSRjbt@F)r{;;9W zngS@X#%fu70$Lo_C+geqplG{GVcF3~m+*zBf*TWuqZgOBNh* z>XSRF3r7!g-phU5VH^O!*Uu?4k5|0vl!MeaK795p)iU;mGL7JpsU_v}e3JgCigW40 zwJb5R#t!?|Ofh0$u1kk(HzC(>RAwM7X?z>ib6Qg+Qar;vBY)fk7BrZXe<0IPeB!3` zrgz?tT&`Yg-#VWBk|71Ep-vtS{}huowAsqLhr64Q7@v@!hp`(PE@(cYE%9*Q`;5Sv z3y;4&<1s^prpcV`wye6=%r90TJM?&rbUnd#)4H5CP@xwgY1tfCvb)~O4R2XCb2eFj z5!DAS!|dDsy!2TKgual}QS|vP-R+ z5DYQg5d@>^(`}i?FPUHB5;|hfRtna={#<&`=fnJr-h*Si;~wpX7MYwFN~k;m7CZ!} MYpj!}b?U;u0O+UFIsgCw delta 718 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 diff --git a/src/main/resources/assets/create/textures/block/industrial_iron_block.png b/src/main/resources/assets/create/textures/block/industrial_iron_block.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8a6d62a08b2d3b52abca2e3ac87439b7bd98dd GIT binary patch literal 901 zcmV;01A6?4P)EX>4Tx04R}tkv&MmKpe$iTcuJff_5n4kfAzR5Eao)s#pXIrLEAagUO{|(4-+r zad8w}3l4rPRvlcNb#-tR1i=pwM<*vm7b)?7NufoI2gm(*ckglc4)8WAOfkB~0Yx?S zR6HhRbE|^?6#<0Ni&+ea%+M0)#SC1>*F8LZy^HcJ_j7-aJ~?kNz#|aPF-fnfRP|Os5MHKXP4i_>FVXW-reS>6z3#afnzbcCggJtfVW%Q^XNjQ7PY> zby()S#aXG;SnHnrg~7bKlIA+iVZ^b71d-jfDCoDd;=UD z0;5IBUUzwSPiJrco@w>>1G`jm#NcU|d?ri?F`HdKEEeN1q+6r4uar9& ztpQ+@rdOAj^Z8xte0rh!J^l3!0A8m}7>_XkD9V!3BL4vZ)$hH(eJ}tRhvCy|brb{! zaTEkj08My}W1sVvI35lL6@bW|*J~*yl`8ji=`Eti znE4~A)9niKz&Y7)VH=tmb!-84yWRdlYd_RPC8BG)vXoMA?&Lc4f^#XQeNAC5=xcPkwTEdGJua7|(jt;pQZMSQTf}J;-Q3={CX-{q5BlB~ bEdcxixYXEz26 Date: Mon, 24 Oct 2022 15:16:33 +0200 Subject: [PATCH 014/122] Industrial Iron Block, Part II --- src/generated/resources/.cache/cache | 42 ++++++++++--------- .../blockstates/industrial_iron_block.json | 7 ++++ .../resources/assets/create/lang/en_ud.json | 1 + .../resources/assets/create/lang/en_us.json | 1 + .../assets/create/lang/unfinished/de_de.json | 3 +- .../assets/create/lang/unfinished/es_cl.json | 3 +- .../assets/create/lang/unfinished/es_es.json | 3 +- .../assets/create/lang/unfinished/fr_fr.json | 3 +- .../assets/create/lang/unfinished/it_it.json | 3 +- .../assets/create/lang/unfinished/ja_jp.json | 3 +- .../assets/create/lang/unfinished/ko_kr.json | 3 +- .../assets/create/lang/unfinished/nl_nl.json | 3 +- .../assets/create/lang/unfinished/pl_pl.json | 3 +- .../assets/create/lang/unfinished/pt_br.json | 3 +- .../assets/create/lang/unfinished/pt_pt.json | 3 +- .../assets/create/lang/unfinished/ro_ro.json | 3 +- .../assets/create/lang/unfinished/ru_ru.json | 3 +- .../assets/create/lang/unfinished/uk_ua.json | 3 +- .../assets/create/lang/unfinished/zh_cn.json | 3 +- .../assets/create/lang/unfinished/zh_tw.json | 3 +- .../models/block/industrial_iron_block.json | 6 +++ .../models/item/industrial_iron_block.json | 3 ++ .../blocks/industrial_iron_block.json | 20 +++++++++ .../tags/blocks/mineable/pickaxe.json | 1 + .../java/com/simibubi/create/AllBlocks.java | 11 +++++ 25 files changed, 105 insertions(+), 35 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/industrial_iron_block.json create mode 100644 src/generated/resources/assets/create/models/block/industrial_iron_block.json create mode 100644 src/generated/resources/assets/create/models/item/industrial_iron_block.json create mode 100644 src/generated/resources/data/create/loot_tables/blocks/industrial_iron_block.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 1f73f50f1..50b298447 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -246,6 +246,7 @@ f1da8d16c9b0122bda60583a03d2b31ec1c70799 assets/create/blockstates/green_valve_h be3bef7e091d8b50bfc1c6b7275946d1f636aefd assets/create/blockstates/horizontal_framed_glass.json 18d9fdaa1352a7e2ec91135e46dae5c02ccd8f8f assets/create/blockstates/horizontal_framed_glass_pane.json 30ec347dfc827a9ae52cf3da964b828005acede1 assets/create/blockstates/hose_pulley.json +1625a5838bd891fe6950dcb7b4235b4a53976a7d assets/create/blockstates/industrial_iron_block.json 6651c84ea621777d572a3d7aa13b75d9f061191b assets/create/blockstates/item_drain.json 10ef455fd61ed1ca831d27bf2b533d05dec9c67d assets/create/blockstates/item_vault.json 5d851c90d23de5087ce546d4bbe509e112b84c49 assets/create/blockstates/jungle_window.json @@ -566,24 +567,24 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo 5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -e7d21b55946bb30c58e6b1cfd3518255833b5463 assets/create/lang/en_ud.json -09c3fa149383dbcb2c1070dd17c8ca4ccf1966e3 assets/create/lang/en_us.json -b7b7ebbf555289d17e847c0221c2227c7b042ffc assets/create/lang/unfinished/de_de.json -13d36e69e4a347dffe84479d363deb9915c71b26 assets/create/lang/unfinished/es_cl.json -0c62f87191d2c2faa2f8ce2a0c23fe522100e885 assets/create/lang/unfinished/es_es.json -983e8025fba6994405f371e3d126d9a319ac62db assets/create/lang/unfinished/fr_fr.json -52d4f689e99161f86690985b2fb70128a209458d assets/create/lang/unfinished/it_it.json -553a4e82130dbc5b87ad6caf1142c19f78876659 assets/create/lang/unfinished/ja_jp.json -032418e5388048fb7b3c1375bb4168f43b704d31 assets/create/lang/unfinished/ko_kr.json -eb8fa78d35ade6ee205dbfcce2553f74a77868a1 assets/create/lang/unfinished/nl_nl.json -df9eb70809f14a0a80bf076be73dd07bf8b34b60 assets/create/lang/unfinished/pl_pl.json -412b329284d6094525f3f68651fc8e3212d33ece assets/create/lang/unfinished/pt_br.json -548d153017ceeae9dd8af3627a24a942628fddcf assets/create/lang/unfinished/pt_pt.json -a9ca34eb5d8dffe035e869210acb791fd3c7f816 assets/create/lang/unfinished/ro_ro.json -c11347776986ac1b6554e0bae19baf5667e87b86 assets/create/lang/unfinished/ru_ru.json -323e79f90c5f7d5dc5e791f7c95798fa32df089b assets/create/lang/unfinished/uk_ua.json -fb7aa2f12a983e098de2422f3ed6a7584d888305 assets/create/lang/unfinished/zh_cn.json -dd1fa10817dab6ad0fc13775a2d21e2cf4214d27 assets/create/lang/unfinished/zh_tw.json +29e45653ed7266431ce30c6f3134dbda05866097 assets/create/lang/en_ud.json +b2c50021ee5a4b1a68d6b10a08bece1753639cbd assets/create/lang/en_us.json +74921e1d262d8476d3a4b12f4103e1839cdd4d66 assets/create/lang/unfinished/de_de.json +709d931d3aadb593dfe35ddfa271a7ea2ead5296 assets/create/lang/unfinished/es_cl.json +528d8d47ea9a8d8f6529acc9b87c8d7c6d5f8662 assets/create/lang/unfinished/es_es.json +560115e69c95179929903b22ac91b983accc05d3 assets/create/lang/unfinished/fr_fr.json +9b7dbe709e46b547f37cb7e0d55dea591782ef7a assets/create/lang/unfinished/it_it.json +c38f02c5f394c65d59a0792c8fa16d081e8253b6 assets/create/lang/unfinished/ja_jp.json +15aaecaccda3332030a08ce7d87e6b20c1d8cb9a assets/create/lang/unfinished/ko_kr.json +fa1b0967ae33e094d6f0dca43e289a84164ae0b3 assets/create/lang/unfinished/nl_nl.json +88b3d13a7efc5be92efd4c511d22634bd490cf17 assets/create/lang/unfinished/pl_pl.json +4d01373cba1a1ee9a2e525adbf48ac1881933138 assets/create/lang/unfinished/pt_br.json +25fed3f3f0017d1f510c827ea13418dc1ecb13e8 assets/create/lang/unfinished/pt_pt.json +b981e62b9a9f9710a585dcddc906d5849088591f assets/create/lang/unfinished/ro_ro.json +9cbc905c3f6d06a6a9a9e6912613660c717fe76d assets/create/lang/unfinished/ru_ru.json +0ea0e820b791fdfefc1efee7891696861298a114 assets/create/lang/unfinished/uk_ua.json +60c27baa072a7b53b2f19f9f3e7f7e83f9f1b91d assets/create/lang/unfinished/zh_cn.json +95277a91a822d0937324ef6d5fe60b087eee37ec 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 @@ -1103,6 +1104,7 @@ d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets/create/models/block/horizontal_f a5938ddd48109f067a19a90a0f9abab655c18821 assets/create/models/block/horizontal_framed_glass_pane_post.json 41645919ece236df5804a5a73ef682720194de34 assets/create/models/block/horizontal_framed_glass_pane_side.json 8bc0abaabdc62d0c27730dba7eb6da54607b7e96 assets/create/models/block/horizontal_framed_glass_pane_side_alt.json +07c1e1bcd87766cf324ac11ce1488856d1db86c3 assets/create/models/block/industrial_iron_block.json 35253c91ed72c7c2ce981c384d334c1113851469 assets/create/models/block/jungle_window.json 65da656d412d973865f50ab7f02e278fe5398bea assets/create/models/block/jungle_window_pane_noside.json 9f4144df2e6b35c1fad04e594be5adb3b107bdb8 assets/create/models/block/jungle_window_pane_noside_alt.json @@ -1903,6 +1905,7 @@ f0e3b2b8a553b6e61746c922c27302dabfff71b6 assets/create/models/item/horizontal_fr ff92f6a9dfb73a6ee1eaaed3279c89390ff04a80 assets/create/models/item/hose_pulley.json 153a185852af79654f0fb216c4b1b8e69c85ee8a assets/create/models/item/incomplete_precision_mechanism.json d4883a5c777abb6c5235563eadb70e2b1b3de17b assets/create/models/item/incomplete_track.json +0503eda6f4c3fa320a2d59ac4a454a6f5e9cd787 assets/create/models/item/industrial_iron_block.json 9d605ce0da83a73b535bce45c107e604364e2b20 assets/create/models/item/iron_sheet.json 52e435014cb03e93411666c4799ebff206e55fc9 assets/create/models/item/item_drain.json 76ab46c9b64faf5e94391579eec5115360dff73d assets/create/models/item/item_vault.json @@ -3639,6 +3642,7 @@ f3502cb946b3997856b3a9bdb2d9f4ce01e2013a data/create/loot_tables/blocks/haunted_ c8083116de11904c1c6d53e1b869e322d18c589a data/create/loot_tables/blocks/horizontal_framed_glass.json 5f5ffb0271b312e2696493b336653b4aeeb3dca2 data/create/loot_tables/blocks/horizontal_framed_glass_pane.json a58348cd828fb2b0f4bc116ebc14645a97ead843 data/create/loot_tables/blocks/hose_pulley.json +b9ec6580975279dcfd84a70d31e847fc0aee9d68 data/create/loot_tables/blocks/industrial_iron_block.json feed1cd9639de957c9b34212d1c4aef2044d1e31 data/create/loot_tables/blocks/item_drain.json af3042824de4aff38e27657ebb084077a7d4f925 data/create/loot_tables/blocks/item_vault.json db23fee08abdb61fe2f200a5016e41523159feef data/create/loot_tables/blocks/jungle_window.json @@ -5757,7 +5761,7 @@ e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/blocks/doors.json 69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json a8662d145a8b1b5faa263c2aac9d12e7727c8c3f data/minecraft/tags/blocks/mineable/axe.json -120c1793c3ef27f19c2e366754060b15ff602f8d data/minecraft/tags/blocks/mineable/pickaxe.json +2de961ad539234f259e62ff62c7cfb6fb41aa3b6 data/minecraft/tags/blocks/mineable/pickaxe.json 2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json diff --git a/src/generated/resources/assets/create/blockstates/industrial_iron_block.json b/src/generated/resources/assets/create/blockstates/industrial_iron_block.json new file mode 100644 index 000000000..c38604b94 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/industrial_iron_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "create:block/industrial_iron_block" + } + } +} \ 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 a048f129c..aef113ce6 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -247,6 +247,7 @@ "block.create.horizontal_framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0287uoz\u0131\u0279oH", "block.create.horizontal_framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0287uoz\u0131\u0279oH", "block.create.hose_pulley": "\u028E\u01DD\u05DF\u05DFn\u0500 \u01DDsoH", + "block.create.industrial_iron_block": "uo\u0279I \u05DF\u0250\u0131\u0279\u0287snpuI \u025Fo \u029E\u0254o\u05DF\u15FA", "block.create.item_drain": "u\u0131\u0250\u0279\u15E1 \u026F\u01DD\u0287I", "block.create.item_vault": "\u0287\u05DFn\u0250\u039B \u026F\u01DD\u0287I", "block.create.jungle_window": "\u028Dopu\u0131M \u01DD\u05DFbun\u017F", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index c38001908..fbfec9005 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -250,6 +250,7 @@ "block.create.horizontal_framed_glass": "Horizontal Framed Glass", "block.create.horizontal_framed_glass_pane": "Horizontal Framed Glass Pane", "block.create.hose_pulley": "Hose Pulley", + "block.create.industrial_iron_block": "Block of Industrial Iron", "block.create.item_drain": "Item Drain", "block.create.item_vault": "Item Vault", "block.create.jungle_window": "Jungle Window", 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 cedce75b7..88178d70d 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: 874", + "_": "Missing Localizations: 875", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Horizontal Gerahmtes Glas", "block.create.horizontal_framed_glass_pane": "Horizontal Gerahmte Glasscheibe", "block.create.hose_pulley": "Umlenkrolle", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Abfluss", "block.create.item_vault": "Gegenstandstresor", "block.create.jungle_window": "Tropenholzfenster", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_cl.json b/src/generated/resources/assets/create/lang/unfinished/es_cl.json index 97fdb4fe5..a50eee33c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_cl.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_cl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1020", + "_": "Missing Localizations: 1021", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Vidrio Enmarcado Horizontal", "block.create.horizontal_framed_glass_pane": "Panel de Vidrio Enmarcado Horizontal", "block.create.hose_pulley": "Polea Manguera", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Drenaje", "block.create.item_vault": "UNLOCALIZED: Item Vault", "block.create.jungle_window": "Ventana de Jungla", 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 6b399bd34..743924379 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: 41", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Cristal con marco horizontal", "block.create.horizontal_framed_glass_pane": "Panel de cristal con marco horizontal", "block.create.hose_pulley": "Polea de manguera", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Drenador de objetos", "block.create.item_vault": "Bóveda de objetos", "block.create.jungle_window": "Ventana de jungla", 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 50c639f33..5811103da 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: 2169", + "_": "Missing Localizations: 2170", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "UNLOCALIZED: Item Drain", "block.create.item_vault": "UNLOCALIZED: Item Vault", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", 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 e4fae59cc..a9f298a9d 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: 34", + "_": "Missing Localizations: 35", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Finestra di vetro orizzontale", "block.create.horizontal_framed_glass_pane": "Pannello di finestra di vetro orizzontale", "block.create.hose_pulley": "Carrucola per fluidi", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Prosciugatore di oggetti", "block.create.item_vault": "Container", "block.create.jungle_window": "Finestra della giungla", 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 541be6aaa..c3098fd2b 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: 36", + "_": "Missing Localizations: 37", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "横型ガラス窓", "block.create.horizontal_framed_glass_pane": "横型ガラス板窓", "block.create.hose_pulley": "ホースプーリー", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "アイテム排液口", "block.create.item_vault": "アイテム保管庫", "block.create.jungle_window": "ジャングルの窓", 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 ded4447f2..9f749ed87 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: 40", + "_": "Missing Localizations: 41", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "수평 유리", "block.create.horizontal_framed_glass_pane": "수평 유리판", "block.create.hose_pulley": "호스 도르래", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "아이템 배수구", "block.create.item_vault": "아이템 금고", "block.create.jungle_window": "정글나무 유리창", 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 745f04679..615d6c092 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: 2517", + "_": "Missing Localizations: 2518", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "UNLOCALIZED: Item Drain", "block.create.item_vault": "UNLOCALIZED: Item Vault", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", 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 8e6febe4e..aae4ab864 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: 44", + "_": "Missing Localizations: 45", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Poziome oprawione szkło", "block.create.horizontal_framed_glass_pane": "Pozioma oprawiona szyba", "block.create.hose_pulley": "Krążek z wężem", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Odpływ", "block.create.item_vault": "Kontener na przedmioty", "block.create.jungle_window": "Dżunglowe okno", 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 a9f64ff4f..756f5f03c 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: 1363", + "_": "Missing Localizations: 1364", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Vidro emoldurado horizontal", "block.create.horizontal_framed_glass_pane": "Vidraça emoldurada horizontal", "block.create.hose_pulley": "Polia de Mangueira", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Dreno de Item", "block.create.item_vault": "Cofre de itens", "block.create.jungle_window": "Janela da selva", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json index 5ad323b5d..81c9b01cf 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_pt.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_pt.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 2228", + "_": "Missing Localizations: 2229", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "Polia de Mangueira", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Dreno de Item", "block.create.item_vault": "Cofre de itens", "block.create.jungle_window": "UNLOCALIZED: Jungle Window", diff --git a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json index 12e72d4f6..f0b4c08ad 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ro_ro.json +++ b/src/generated/resources/assets/create/lang/unfinished/ro_ro.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 687", + "_": "Missing Localizations: 688", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Sticlă Înrămată Orizontală", "block.create.horizontal_framed_glass_pane": "Geam Înrămat Orizontal", "block.create.hose_pulley": "Scripete De Furtun", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Scurgere De Obiecte", "block.create.item_vault": "Seif De Obiecte", "block.create.jungle_window": "Sticlă De Junglă", 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 ce993862a..2e35114ac 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: 32", + "_": "Missing Localizations: 33", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Горизонтальное обрамлённое стекло", "block.create.horizontal_framed_glass_pane": "Горизонтальная обрамлённая стеклянная панель", "block.create.hose_pulley": "Шкив со шлангом", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Осушитель предметов", "block.create.item_vault": "Хранилище предметов", "block.create.jungle_window": "Окно из тропического дерева", diff --git a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json index d076effcd..07b41dfce 100644 --- a/src/generated/resources/assets/create/lang/unfinished/uk_ua.json +++ b/src/generated/resources/assets/create/lang/unfinished/uk_ua.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1018", + "_": "Missing Localizations: 1019", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "Скло в горизонтальній рамці", "block.create.horizontal_framed_glass_pane": "Склянна панель в горизонтальній рамі", "block.create.hose_pulley": "Шків шланга", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "Осушувач предметів", "block.create.item_vault": "UNLOCALIZED: Item Vault", "block.create.jungle_window": "Скло з тропічним деревом", 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 459223587..f812c2b9e 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: 32", + "_": "Missing Localizations: 33", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "水平边框玻璃", "block.create.horizontal_framed_glass_pane": "水平边框玻璃板", "block.create.hose_pulley": "软管滑轮", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "分液池", "block.create.item_vault": "物品保险库", "block.create.jungle_window": "丛林木窗户", 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 1e5339718..4f8e8f134 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: 40", + "_": "Missing Localizations: 41", "_": "->------------------------] Game Elements [------------------------<-", @@ -251,6 +251,7 @@ "block.create.horizontal_framed_glass": "豎直邊框玻璃", "block.create.horizontal_framed_glass_pane": "豎直邊框玻璃片", "block.create.hose_pulley": "軟管滑輪", + "block.create.industrial_iron_block": "UNLOCALIZED: Block of Industrial Iron", "block.create.item_drain": "分液池", "block.create.item_vault": "倉儲", "block.create.jungle_window": "叢林木窗戶", diff --git a/src/generated/resources/assets/create/models/block/industrial_iron_block.json b/src/generated/resources/assets/create/models/block/industrial_iron_block.json new file mode 100644 index 000000000..555454819 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/industrial_iron_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "create:block/industrial_iron_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/industrial_iron_block.json b/src/generated/resources/assets/create/models/item/industrial_iron_block.json new file mode 100644 index 000000000..5938f808e --- /dev/null +++ b/src/generated/resources/assets/create/models/item/industrial_iron_block.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/industrial_iron_block" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/industrial_iron_block.json b/src/generated/resources/data/create/loot_tables/blocks/industrial_iron_block.json new file mode 100644 index 000000000..be76eafc8 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/industrial_iron_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "create:industrial_iron_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file 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 22156935c..05b3abd53 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -171,6 +171,7 @@ "create:raw_zinc_block", "create:zinc_block", "create:andesite_alloy_block", + "create:industrial_iron_block", "create:brass_block", "create:rose_quartz_block", "create:rose_quartz_tiles", diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index d86b9fbb4..eba70c441 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -2118,6 +2118,17 @@ public class AllBlocks { .build() .lang("Block of Andesite Alloy") .register(); + + public static final BlockEntry INDUSTRIAL_IRON_BLOCK = REGISTRATE.block("industrial_iron_block", Block::new) + .initialProperties(SharedProperties::softMetal) + .properties(p -> p.color(MaterialColor.COLOR_GRAY)) + .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) + .properties(p -> p.requiresCorrectToolForDrops()) + .transform(pickaxeOnly()) + .blockstate(simpleCubeAll("industrial_iron_block")) + .lang("Block of Industrial Iron") + .simpleItem() + .register(); public static final BlockEntry BRASS_BLOCK = REGISTRATE.block("brass_block", Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) From 29a777653c6c93985e2fb8c1d64f48ec481df809 Mon Sep 17 00:00:00 2001 From: Kryppers <65094918+Kryppers@users.noreply.github.com> Date: Sat, 29 Oct 2022 00:41:39 +0100 Subject: [PATCH 015/122] Spit and Shine part 3: the curious case of encased curios. Continued work on brass assets Removed surplus Vault textures Adjusted the crushed aluminium compat asset to match xycraft set. --- .../java/com/simibubi/create/AllBlocks.java | 3 + .../models/block/belt/diagonal_end.json | 10 +- .../models/block/belt/diagonal_start.json | 4 +- .../assets/create/models/block/belt/end.json | 8 +- .../create/models/block/belt/start.json | 8 +- .../block/belt_casing/diagonal_end.json | 120 +++++++--------- .../block/belt_casing/diagonal_middle.json | 54 +++++-- .../block/belt_casing/diagonal_pulley.json | 129 +++++++++-------- .../block/belt_casing/diagonal_start.json | 136 +++++++----------- .../block/belt_casing/horizontal_end.json | 91 +++++------- .../block/belt_casing/horizontal_middle.json | 34 +++-- .../block/belt_casing/horizontal_pulley.json | 76 +++++----- .../block/belt_casing/horizontal_start.json | 99 +++++-------- .../block/belt_funnel/block_extended.json | 26 ++-- .../block/belt_funnel/block_pulling.json | 22 +-- .../block/belt_funnel/block_pushing.json | 22 +-- .../block/belt_funnel/block_retracted.json | 14 +- .../create/models/block/belt_funnel/flap.json | 14 +- .../create/models/block/belt_tunnel/flap.json | 14 +- .../create/models/block/belt_tunnel/item.json | 124 ++++++++-------- .../models/block/funnel/block_horizontal.json | 20 +-- .../models/block/funnel/block_vertical.json | 8 +- .../funnel/block_vertical_filterless.json | 12 +- .../create/models/block/funnel/flap.json | 14 +- .../create/models/block/funnel/item.json | 84 +++++------ .../models/block/smart_chute/block.json | 10 +- .../block/andesite_casing_connected.png | Bin 1891 -> 3986 bytes .../textures/block/belt/belt_casing.png | Bin 0 -> 3616 bytes .../textures/block/belt/belt_casing_2.png | Bin 0 -> 846 bytes .../textures/block/belt/belt_casing_3.png | Bin 0 -> 585 bytes .../create/textures/block/brass_block.png | Bin 6407 -> 6948 bytes .../textures/block/brass_casing_connected.png | Bin 1385 -> 4059 bytes .../textures/block/funnel/brass_funnel.png | Bin 8718 -> 9606 bytes .../block/funnel/brass_funnel_frame.png | Bin 6050 -> 6615 bytes .../block/funnel/brass_funnel_neutral.png | Bin 8315 -> 9090 bytes .../block/funnel/brass_funnel_powered.png | Bin 6250 -> 7126 bytes .../block/funnel/brass_funnel_pull.png | Bin 8236 -> 9247 bytes .../block/funnel/brass_funnel_push.png | Bin 7884 -> 8952 bytes .../block/funnel/brass_funnel_unpowered.png | Bin 725 -> 6783 bytes .../textures/block/funnel/funnel_back.png | Bin 7679 -> 8126 bytes .../textures/block/tunnel/brass_tunnel.png | Bin 7255 -> 3350 bytes .../block/tunnel/brass_tunnel_top.png | Bin 5398 -> 1801 bytes .../tunnel/brass_tunnel_top_connected.png | Bin 5643 -> 3531 bytes .../block/tunnel/brass_tunnel_top_window.png | Bin 5820 -> 6717 bytes .../create/textures/block/vault_bottom.png | Bin 152 -> 0 bytes .../textures/block/vault_bottom_connected.png | Bin 466 -> 0 bytes .../block/vault_bottom_large_connected.png | Bin 645 -> 0 bytes .../create/textures/block/vault_front.png | Bin 262 -> 0 bytes .../textures/block/vault_front_connected.png | Bin 739 -> 0 bytes .../block/vault_front_large_connected.png | Bin 963 -> 0 bytes .../create/textures/block/vault_side.png | Bin 191 -> 0 bytes .../textures/block/vault_side_connected.png | Bin 716 -> 0 bytes .../block/vault_side_large_connected.png | Bin 684 -> 0 bytes .../create/textures/block/vault_top.png | Bin 201 -> 0 bytes .../textures/block/vault_top_connected.png | Bin 575 -> 0 bytes .../block/vault_top_large_connected.png | Bin 612 -> 0 bytes .../textures/item/crushed_aluminum_ore.png | Bin 208 -> 1641 bytes 57 files changed, 545 insertions(+), 611 deletions(-) create mode 100644 src/main/resources/assets/create/textures/block/belt/belt_casing.png create mode 100644 src/main/resources/assets/create/textures/block/belt/belt_casing_2.png create mode 100644 src/main/resources/assets/create/textures/block/belt/belt_casing_3.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_bottom.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_bottom_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_bottom_large_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_front.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_front_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_front_large_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_side.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_side_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_side_large_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_top.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_top_connected.png delete mode 100644 src/main/resources/assets/create/textures/block/vault_top_large_connected.png diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index eba70c441..62e6ae72c 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -453,6 +453,7 @@ public class AllBlocks { public static final BlockEntry ENCASED_CHAIN_DRIVE = REGISTRATE.block("encased_chain_drive", EncasedBeltBlock::new) + .addLayer(() -> RenderType::cutoutMipped) .initialProperties(SharedProperties::stone) .properties(BlockBehaviour.Properties::noOcclusion) .properties(p -> p.color(MaterialColor.PODZOL)) @@ -460,6 +461,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> p.models() .getExistingFile(p.modLoc("block/" + c.getName() + "/" + suffix))).generate(c, p)) + .addLayer(() -> RenderType::cutoutMipped) .item() .transform(customItemModel()) .register(); @@ -486,6 +488,7 @@ public class AllBlocks { public static final BlockEntry BELT = REGISTRATE.block("belt", BeltBlock::new) .initialProperties(SharedProperties.BELT_MATERIAL, MaterialColor.COLOR_GRAY) + .addLayer(() -> RenderType::cutoutMipped) .properties(p -> p.sound(SoundType.WOOL)) .properties(p -> p.strength(0.8F)) .properties(p -> p.color(MaterialColor.COLOR_GRAY)) diff --git a/src/main/resources/assets/create/models/block/belt/diagonal_end.json b/src/main/resources/assets/create/models/block/belt/diagonal_end.json index 02bd2d2d7..94513f0f5 100644 --- a/src/main/resources/assets/create/models/block/belt/diagonal_end.json +++ b/src/main/resources/assets/create/models/block/belt/diagonal_end.json @@ -10,7 +10,6 @@ "name": "Bottom", "from": [0.9, 3, 1], "to": [15.1, 5, 6.8], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "north": {"uv": [1, 6, 15, 7], "rotation": 180, "texture": "#0"}, "east": {"uv": [14, 0, 16, 6], "rotation": 270, "texture": "#0"}, @@ -23,7 +22,6 @@ "name": "Bottom", "from": [2.9, 5, 2], "to": [13.1, 6, 6.8], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "east": {"uv": [3, 0, 4, 5], "rotation": 270, "texture": "#0"}, "west": {"uv": [12, 0, 13, 5], "rotation": 90, "texture": "#0"}, @@ -34,7 +32,6 @@ "name": "Top", "from": [0.9, 11, 1], "to": [15.1, 13, 10.1], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "north": {"uv": [1, 5, 15, 6], "rotation": 180, "texture": "#0"}, "east": {"uv": [14, 6, 16, 15], "rotation": 90, "texture": "#0"}, @@ -47,7 +44,6 @@ "name": "Top", "from": [2.9, 10, 2], "to": [13.1, 11, 10.1], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "east": {"uv": [3, 7, 4, 15], "rotation": 90, "texture": "#0"}, "west": {"uv": [12, 7, 13, 15], "rotation": 270, "texture": "#0"}, @@ -56,9 +52,8 @@ }, { "name": "Side", - "from": [1, 4, 0], - "to": [15, 12, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [1, 4, -0.05], + "to": [15, 12, 1.95], "faces": { "north": {"uv": [1, 8, 15, 16], "rotation": 180, "texture": "#0"}, "east": {"uv": [14, 8, 16, 16], "rotation": 180, "texture": "#0"}, @@ -72,7 +67,6 @@ "name": "Side", "from": [2.9, 6, 2], "to": [13.1, 10, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "east": {"uv": [3, 10, 4, 14], "rotation": 180, "texture": "#0"}, "south": {"uv": [3, 10, 13, 14], "rotation": 180, "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/belt/diagonal_start.json b/src/main/resources/assets/create/models/block/belt/diagonal_start.json index 0ae5d7615..b9da31066 100644 --- a/src/main/resources/assets/create/models/block/belt/diagonal_start.json +++ b/src/main/resources/assets/create/models/block/belt/diagonal_start.json @@ -52,8 +52,8 @@ }, { "name": "Side", - "from": [1, 4, 14], - "to": [15, 12, 16], + "from": [1, 4, 14.05], + "to": [15, 12, 16.05], "faces": { "north": {"uv": [1, 8, 15, 16], "texture": "#0"}, "east": {"uv": [14, 8, 16, 16], "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/belt/end.json b/src/main/resources/assets/create/models/block/belt/end.json index d8f167443..b96d53b9c 100644 --- a/src/main/resources/assets/create/models/block/belt/end.json +++ b/src/main/resources/assets/create/models/block/belt/end.json @@ -9,7 +9,6 @@ "name": "Top", "from": [1, 11, 0], "to": [15, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "east": {"uv": [0, 1, 2, 16], "rotation": 270, "texture": "#0"}, "south": {"uv": [1, 0, 15, 1], "rotation": 180, "texture": "#0"}, @@ -22,7 +21,6 @@ "name": "Top", "from": [3, 10, 0], "to": [13, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "east": {"uv": [3, 2, 4, 16], "rotation": 270, "texture": "#0"}, "west": {"uv": [12, 2, 13, 16], "rotation": 90, "texture": "#0"}, @@ -31,9 +29,8 @@ }, { "name": "Side", - "from": [1.1, 4, 14], - "to": [14.9, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [1.1, 4, 14.05], + "to": [14.9, 12, 16.05], "faces": { "north": {"uv": [1, 8, 15, 16], "rotation": 180, "texture": "#0"}, "east": {"uv": [0, 8, 2, 16], "rotation": 180, "texture": "#0"}, @@ -47,7 +44,6 @@ "name": "Side", "from": [3, 6, 13], "to": [13, 10, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "north": {"uv": [3, 10, 13, 14], "rotation": 180, "texture": "#0"}, "east": {"uv": [12, 10, 13, 14], "rotation": 180, "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/belt/start.json b/src/main/resources/assets/create/models/block/belt/start.json index c262e4bb5..c26c0cdd6 100644 --- a/src/main/resources/assets/create/models/block/belt/start.json +++ b/src/main/resources/assets/create/models/block/belt/start.json @@ -9,7 +9,6 @@ "name": "Top", "from": [3, 10, 2], "to": [13, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "east": {"uv": [3, 0, 4, 14], "rotation": 270, "texture": "#0"}, "west": {"uv": [12, 0, 13, 14], "rotation": 90, "texture": "#0"}, @@ -20,7 +19,6 @@ "name": "Top", "from": [1, 11, 1], "to": [15, 13, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "north": {"uv": [1, 15, 15, 16], "texture": "#0"}, "east": {"uv": [0, 0, 2, 15], "rotation": 270, "texture": "#0"}, @@ -31,9 +29,8 @@ }, { "name": "Side", - "from": [1.1, 4, 0], - "to": [14.9, 12, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, + "from": [1.1, 4, -0.05], + "to": [14.9, 12, 1.95], "faces": { "north": {"uv": [1, 0, 15, 8], "texture": "#0"}, "east": {"uv": [0, 0, 2, 8], "texture": "#0"}, @@ -47,7 +44,6 @@ "name": "Side", "from": [3, 6, 2], "to": [13, 10, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, "faces": { "east": {"uv": [3, 6, 4, 10], "texture": "#0"}, "south": {"uv": [3, 2, 13, 6], "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json index fba079751..e1f1fb6a9 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json @@ -2,98 +2,78 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "4": "create:block/brass_casing_belt", + "3": "create:block/belt/belt_casing", + "5": "create:block/brass_casing_connected", + "6": "create:block/belt/belt_casing_2", + "7": "create:block/belt/belt_casing_3", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { - "name": "Casing", - "from": [1.1, 4, 2], - "to": [14.9, 11, 12], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "from": [0, 0, 0], + "to": [16, 11, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "faces": { - "east": {"uv": [4, 5, 14, 12], "texture": "#8"}, - "west": {"uv": [2, 5, 12, 12], "texture": "#8"} + "north": {"uv": [8, 0, 16, 5.5], "texture": "#7"}, + "east": {"uv": [3, 0, 8, 5.5], "texture": "#3"}, + "west": {"uv": [0, 0, 5, 5.5], "texture": "#3"}, + "up": {"uv": [0, 8, 8, 13], "texture": "#3"}, + "down": {"uv": [2, 0.75, 4, 2], "texture": "#5"} } }, { - "name": "Casing", - "from": [1.1, 11, 6], - "to": [14.9, 13, 10], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, + "from": [1, 11, -0.01], + "to": [15, 3, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "faces": { - "east": {"uv": [6, 3, 10, 5], "texture": "#8"}, - "west": {"uv": [6, 3, 10, 5], "texture": "#8"} + "east": {"uv": [0, 0, 5, 4], "rotation": 180, "texture": "#3"}, + "west": {"uv": [3, 0, 8, 4], "rotation": 180, "texture": "#3"}, + "up": {"uv": [12.125, 12.75, 13.875, 14], "texture": "#5"} + } + }, + { + "from": [0, 5, 12], + "to": [16, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "south": {"uv": [8, 6, 16, 9.5], "rotation": 180, "texture": "#3"}, + "down": {"uv": [8, 6, 16, 10], "texture": "#3"} + } + }, + { + "from": [1, 5, 4], + "to": [15, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, + "faces": { + "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "west": {"uv": [4, 5, 12, 11], "texture": "#8"} } }, { "name": "Top Diagonal", "from": [-0.1, 2, 11.303], "to": [16.1, 11, 19.328], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "rotation": {"angle": 45, "axis": "x", "origin": [39, 8, 8]}, "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [8, 8, 12.025, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "up": {"uv": [12, 0, 16, 8], "rotation": 90, "texture": "#4"}, - "down": {"uv": [12, 0, 16, 8], "rotation": 90, "texture": "#4"} + "north": {"uv": [8, 5.5, 16, 10], "texture": "#3"}, + "east": {"uv": [11.975, 0, 16, 4.5], "texture": "#6"}, + "south": {"uv": [0, 4.5, 8, 9], "texture": "#6"}, + "west": {"uv": [0, 0, 4, 4.5], "texture": "#6"}, + "up": {"uv": [8, 5.5, 16, 9.5], "texture": "#3"}, + "down": {"uv": [6, 0, 8, 1], "texture": "#5"} } }, { - "name": "Left", - "from": [0, 0, 0], - "to": [16, 3, 4], + "name": "Top Diagonal", + "from": [13.05, 4, 11.303], + "to": [2.95, 11, 19.328], + "rotation": {"angle": 45, "axis": "x", "origin": [39, 8, 8]}, "faces": { - "north": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"} + "east": {"uv": [12, 12, 12.875, 13], "rotation": 270, "texture": "#5"}, + "west": {"uv": [12, 12, 12.875, 13], "rotation": 90, "texture": "#5"}, + "down": {"uv": [6.375, 0, 7.625, 1], "texture": "#5"} } - }, - { - "name": "Left", - "from": [0, 3, 0], - "to": [1, 11, 4], - "faces": { - "north": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "south": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [15, 3, 0], - "to": [16, 11, 4], - "faces": { - "north": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "east": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "south": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "west": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 5, 12], - "faces": { - "east": {"uv": [2, 11, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 90, "texture": "#4"} - } - } - ], - "groups": [0, 1, 2, - { - "name": "horizontal_start", - "origin": [8, 8, 8], - "children": [3, 4, 5, 6] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json index 30eacb4eb..3831da8db 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json @@ -2,34 +2,58 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "4": "create:block/brass_casing_belt", + "3": "create:block/belt/belt_casing_2", + "5": "create:block/belt/belt_casing", + "6": "create:block/brass_casing_connected", "particle": "create:block/brass_casing" }, "elements": [ { "name": "Top Diagonal", "from": [-0.1, 2, -3.325], - "to": [16.1, 11, 10], + "to": [16.1, 11, 7.9875], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [9.5, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [8, 8, 14.5, 12.5], "texture": "#4"}, - "up": {"uv": [9.5, 0, 16, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [9.5, 0, 16, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, + "east": {"uv": [8, 11.5, 13.5, 16], "texture": "#3"}, + "west": {"uv": [2.5, 11.5, 8, 16], "texture": "#3"}, + "up": {"uv": [8, 5.5, 16, 11], "texture": "#5"}, + "down": {"uv": [6, 0, 8, 1.375], "texture": "#6"} } }, { "name": "Top Diagonal", - "from": [-0.1, 2, 10], - "to": [16.1, 11, 19.3], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "from": [-0.1, 7.43588, 10.23912], + "to": [16.1, 16.43588, 21.55162], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, "faces": { - "east": {"uv": [8, 8, 13, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [11, 8, 16, 12.5], "texture": "#4"}, - "up": {"uv": [8, 0, 12.5, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 12.5, 8], "rotation": 270, "texture": "#4"} + "east": {"uv": [2.5, 11.5, 8, 16], "texture": "#3"}, + "south": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, + "west": {"uv": [8, 11.5, 13.5, 16], "texture": "#3"}, + "up": {"uv": [8, 5.5, 16, 11], "rotation": 180, "texture": "#5"}, + "down": {"uv": [6, 0.25, 8, 1.625], "texture": "#6"} + } + }, + { + "name": "Top Diagonal", + "from": [2.9, 14.16466, 23.51034], + "to": [13.1, 21.16466, 12.19784], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 18.16466, -2.16466]}, + "faces": { + "east": {"uv": [12, 12.375, 12.875, 13.75], "rotation": 270, "texture": "#6"}, + "west": {"uv": [12, 12.375, 12.875, 13.75], "rotation": 90, "texture": "#6"}, + "down": {"uv": [12.25, 12.375, 13.5, 13.75], "texture": "#6"} + } + }, + { + "name": "Top Diagonal", + "from": [2.9, 9.43588, 10.23912], + "to": [13.1, 16.43588, -1.07338], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, + "faces": { + "east": {"uv": [12, 12.25, 12.875, 13.625], "rotation": 270, "texture": "#6"}, + "west": {"uv": [12.125, 12.25, 13, 13.625], "rotation": 90, "texture": "#6"}, + "down": {"uv": [12.375, 12.25, 13.625, 13.625], "texture": "#6"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json index 51ce62cfd..3952aa129 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json @@ -2,80 +2,91 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "4": "create:block/brass_casing_belt", + "3": "create:block/belt/belt_casing_2", + "5": "create:block/belt/belt_casing", + "6": "create:block/brass_casing_connected", + "7": "create:block/belt/belt_casing_3", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ - { - "name": "Casing", - "from": [1.1, 5, 2], - "to": [14.9, 11, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Casing", - "from": [1.1, 11, 6], - "to": [14.9, 13, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [6, 3, 10, 5], "texture": "#8"}, - "west": {"uv": [6, 3, 10, 5], "texture": "#8"} - } - }, - { - "name": "Left", - "from": [0, 0, 0], - "to": [16, 10, 5], - "faces": { - "north": {"uv": [8, 0, 13, 8], "rotation": 90, "texture": "#4"}, - "east": {"uv": [5.5, 3, 8, 8], "texture": "#4"}, - "south": {"uv": [8, 1.5, 16, 6.5], "texture": "#4"}, - "west": {"uv": [0, 3, 2.5, 8], "texture": "#4"}, - "down": {"uv": [13.5, 0, 16, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 5], - "to": [16, 5, 11], - "faces": { - "east": {"uv": [2.5, 5.5, 5.5, 8], "texture": "#4"}, - "west": {"uv": [2.5, 5.5, 5.5, 8], "texture": "#4"}, - "up": {"uv": [8, 2.5, 16, 5.5], "texture": "#4"}, - "down": {"uv": [10.5, 0, 13.5, 8], "rotation": 90, "texture": "#4"} - } - }, { "name": "Top Diagonal", "from": [-0.1, 2, -3.325], - "to": [16.1, 11, 4.7], + "to": [16.1, 11, 7.9875], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, - "up": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, + "east": {"uv": [8, 0, 13.5, 4.5], "texture": "#3"}, + "west": {"uv": [2.5, 0, 8, 4.5], "texture": "#3"}, + "up": {"uv": [8, 4.5, 16, 10], "texture": "#3"}, + "down": {"uv": [6, 0, 8, 1.375], "texture": "#6"} } }, { "name": "Top Diagonal", - "from": [-0.1, 2, 11.275], - "to": [16.1, 11, 19.3], + "from": [-0.1, 7.43588, 10.23912], + "to": [16.1, 16.43588, 21.55162], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, + "faces": { + "east": {"uv": [2.5, 0, 8, 4.5], "texture": "#3"}, + "south": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, + "west": {"uv": [8, 0, 13.5, 4.5], "texture": "#3"}, + "up": {"uv": [8, 4.5, 16, 10], "rotation": 180, "texture": "#3"}, + "down": {"uv": [6, 0.25, 8, 1.625], "texture": "#6"} + } + }, + { + "name": "Top Diagonal", + "from": [-0.1, 11, 3.85], + "to": [16.1, 5, 12.15], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "up": {"uv": [8, 0, 12, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 12, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [8, 4.5, 16, 7.5], "texture": "#3"}, + "south": {"uv": [8, 4.5, 16, 7.5], "texture": "#3"}, + "up": {"uv": [8, 5.5, 16, 9.5], "texture": "#5"} + } + }, + { + "name": "Top Diagonal", + "from": [0.9, 5, 3.85], + "to": [15.1, 11, 12.15], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "west": {"uv": [4, 5, 12, 11], "texture": "#8"} + } + }, + { + "name": "Top Diagonal", + "from": [2.9, 9.43588, 10.23912], + "to": [13.1, 16.43588, -1.07338], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, + "faces": { + "east": {"uv": [11.875, 12.375, 12.75, 13.75], "rotation": 270, "texture": "#6"}, + "west": {"uv": [12.125, 12.375, 13, 13.75], "rotation": 90, "texture": "#6"}, + "down": {"uv": [12.375, 12.375, 13.625, 13.75], "texture": "#6"} + } + }, + { + "name": "Top Diagonal", + "from": [2.9, 14.16466, 23.51034], + "to": [13.1, 21.16466, 12.19784], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 18.16466, -2.16466]}, + "faces": { + "east": {"uv": [12, 12.5, 12.875, 13.875], "rotation": 270, "texture": "#6"}, + "west": {"uv": [12, 12.5, 12.875, 13.875], "rotation": 90, "texture": "#6"}, + "down": {"uv": [12.375, 12.5, 13.625, 13.875], "texture": "#6"} + } + }, + { + "from": [0, 0, 0], + "to": [16, 8, 8], + "faces": { + "north": {"uv": [6, 0.25, 8, 1.25], "texture": "#6"}, + "east": {"uv": [4, 0, 8, 4], "texture": "#7"}, + "west": {"uv": [0, 0, 4, 4], "texture": "#7"}, + "down": {"uv": [6, 0, 8, 1], "texture": "#6"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json index bbc8e8963..d28da5434 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json @@ -2,111 +2,81 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "4": "create:block/brass_casing_belt", + "3": "create:block/belt/belt_casing", + "5": "create:block/brass_casing_connected", + "6": "create:block/belt/belt_casing_2", + "7": "create:block/belt/belt_casing_3", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { - "name": "Casing", - "from": [1.1, 5, 2], - "to": [14.9, 11, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "from": [0, 0, 0], + "to": [16, 11, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} + "north": {"uv": [6, 0, 8, 1.375], "texture": "#5"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "south": {"uv": [8, 0, 16, 5.5], "texture": "#7"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, + "down": {"uv": [4, 0, 6, 2], "texture": "#5"} } }, { - "name": "Casing", - "from": [1.1, 11, 6], - "to": [14.9, 13, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "from": [1, 11, 0], + "to": [15, 3, 16.01], + "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, "faces": { - "east": {"uv": [6, 3, 10, 5], "texture": "#8"}, - "west": {"uv": [6, 3, 10, 5], "texture": "#8"} + "east": {"uv": [0, 0, 8, 4], "rotation": 180, "texture": "#3"}, + "west": {"uv": [0, 0, 8, 4], "rotation": 180, "texture": "#3"}, + "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} + } + }, + { + "from": [0, 5, 12], + "to": [16, 11, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, + "faces": { + "north": {"uv": [8, 5.5, 16, 8.5], "texture": "#3"}, + "south": {"uv": [8, 5.5, 16, 8.5], "texture": "#3"}, + "down": {"uv": [8, 5.5, 16, 10], "texture": "#3"} + } + }, + { + "from": [1, 5, 4], + "to": [15, 11, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, + "faces": { + "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "west": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "up": {"uv": [8.5, 4.5, 15.5, 8], "texture": "#6"} } }, { "name": "Top Diagonal", "from": [-0.1, 2, -3.325], "to": [16.1, 11, 4.7], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, + "rotation": {"angle": 45, "axis": "x", "origin": [-22, 8, 8]}, "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, - "up": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [0, 4.5, 8, 9], "texture": "#6"}, + "east": {"uv": [0, 0, 4, 4.5], "texture": "#6"}, + "south": {"uv": [8, 5.5, 16, 10], "texture": "#3"}, + "west": {"uv": [12, 0, 16, 4.5], "texture": "#6"}, + "up": {"uv": [8, 5.5, 16, 9.5], "rotation": 180, "texture": "#3"}, + "down": {"uv": [6, 0, 8, 1], "texture": "#5"} } }, { - "name": "Left", - "from": [0, 0, 12], - "to": [16, 3, 16], + "name": "Top Diagonal", + "from": [13.05, 4, -3.325], + "to": [2.95, 11, 4.7], + "rotation": {"angle": 45, "axis": "x", "origin": [24, 8, 8]}, "faces": { - "east": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "south": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "rotation": 180, "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"} + "east": {"uv": [12.125, 12.25, 13, 13.25], "rotation": 270, "texture": "#5"}, + "west": {"uv": [12, 12.25, 12.875, 13.25], "rotation": 90, "texture": "#5"}, + "down": {"uv": [6.375, 0.25, 7.625, 1.25], "texture": "#5"} } - }, - { - "name": "Left", - "from": [15, 3, 12], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "east": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "south": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "west": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 3, 12], - "to": [1, 11, 16], - "faces": { - "north": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "east": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "south": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "west": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 0], - "to": [16, 11, 5], - "faces": { - "north": {"uv": [8, 0, 13.5, 8], "rotation": 90, "texture": "#4"}, - "east": {"uv": [5.5, 2.5, 8, 8], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 8, 2.5, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 5], - "to": [16, 5, 12], - "faces": { - "east": {"uv": [2, 11, 5.5, 13.5], "texture": "#4"}, - "west": {"uv": [2.5, 11, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 5.5], "rotation": 180, "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} - } - } - ], - "groups": [0, 1, 2, - { - "name": "horizontal_start", - "origin": [8, 8, 8], - "children": [3, 4, 5, 6, 7] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json index 9e1bd4f0e..6d0dbfb51 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json @@ -2,78 +2,57 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "4": "create:block/brass_casing_belt", + "3": "create:block/belt/belt_casing", + "4": "create:block/belt/belt_casing_3", + "5": "create:block/brass_casing_connected", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { - "name": "Casing", - "from": [1, 5, 2], - "to": [15, 11, 14], - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Left", - "from": [0, 0, 12], - "to": [16, 3, 16], - "faces": { - "east": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "south": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "rotation": 180, "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [15, 3, 12], + "from": [0, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "east": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "south": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "west": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "south": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, + "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#5"} } }, { - "name": "Left", - "from": [0, 3, 12], - "to": [1, 11, 16], - "faces": { - "north": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "east": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "south": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "west": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 0], + "from": [0, 5, 12], "to": [16, 11, 4], "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [8, 13, 16, 16], "rotation": 180, "texture": "#3"}, + "south": {"uv": [8, 13, 16, 16], "rotation": 180, "texture": "#3"}, + "down": {"uv": [8, 8, 16, 12], "texture": "#3"} } }, { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 4, 12], + "from": [1, 5, 4], + "to": [15, 11, 12], "faces": { - "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "rotation": 180, "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} + "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "west": {"uv": [4, 5, 12, 11], "texture": "#8"} + } + }, + { + "from": [3, 5, 15.99], + "to": [13, 11, -0.03], + "faces": { + "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"}, + "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"} + } + }, + { + "from": [1, 11, -0.01], + "to": [15, 3, 16.01], + "faces": { + "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, + "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, + "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json index d72517e08..c9b86e512 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json @@ -2,21 +2,39 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/brass_casing_belt", + "2": "create:block/belt/belt_casing", + "4": "create:block/brass_casing_connected", + "5": "create:block/belt/belt_casing_3", "particle": "create:block/brass_casing" }, "elements": [ { - "name": "Casing", "from": [0, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "east": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "west": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "up": {"uv": [0, 0, 8, 8], "rotation": 90, "texture": "#3"}, - "down": {"uv": [8, 0, 16, 8], "rotation": 90, "texture": "#3"} + "north": {"uv": [8, 0, 16, 5.5], "texture": "#5"}, + "east": {"uv": [8, 0, 16, 5.5], "texture": "#2"}, + "south": {"uv": [8, 0, 16, 5.5], "texture": "#5"}, + "west": {"uv": [8, 0, 16, 5.5], "texture": "#2"}, + "up": {"uv": [8, 6, 16, 14], "texture": "#2"}, + "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#4"} + } + }, + { + "from": [1, 11, -0.01], + "to": [15, 3, 16.01], + "faces": { + "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#2"}, + "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#2"}, + "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#4"} + } + }, + { + "from": [3, 5, 15.99], + "to": [13, 11, -0.03], + "faces": { + "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#2"}, + "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#2"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json index a0d43fd8c..774cacce3 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json @@ -2,55 +2,57 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "4": "create:block/brass_casing_belt", + "3": "create:block/belt/belt_casing", + "4": "create:block/belt/belt_casing_3", + "5": "create:block/brass_casing_connected", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { - "name": "Casing", - "from": [1, 5, 2], - "to": [15, 11, 14], - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Right", "from": [0, 0, 0], - "to": [16, 11, 4], - "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 12], "to": [16, 11, 16], "faces": { - "north": {"uv": [8, 8, 0, 13.5], "texture": "#4"}, - "east": {"uv": [8, 8, 6, 13.5], "texture": "#4"}, - "south": {"uv": [8, 8, 0, 13.5], "texture": "#4"}, - "west": {"uv": [2, 8, 0, 13.5], "texture": "#4"}, - "up": {"uv": [8, 0, 6, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [10, 0, 8, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "south": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, + "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#5"} } }, { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 4, 12], + "from": [0, 5, 12], + "to": [16, 11, 4], "faces": { - "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "rotation": 180, "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} + "north": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, + "south": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, + "down": {"uv": [8, 6, 16, 10], "texture": "#3"} + } + }, + { + "from": [1, 5, 4], + "to": [15, 11, 12], + "faces": { + "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "west": {"uv": [4, 5, 12, 11], "texture": "#8"} + } + }, + { + "from": [3, 5, 15.99], + "to": [13, 11, -0.03], + "faces": { + "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"}, + "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"} + } + }, + { + "from": [1, 11, -0.01], + "to": [15, 3, 16.01], + "faces": { + "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, + "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, + "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json index 042448aab..774cacce3 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json @@ -2,78 +2,57 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "4": "create:block/brass_casing_belt", + "3": "create:block/belt/belt_casing", + "4": "create:block/belt/belt_casing_3", + "5": "create:block/brass_casing_connected", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { - "name": "Casing", - "from": [1, 5, 2], - "to": [15, 11, 14], - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Left", "from": [0, 0, 0], - "to": [16, 3, 4], - "faces": { - "north": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 3, 0], - "to": [1, 11, 4], - "faces": { - "north": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "south": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [15, 3, 0], - "to": [16, 11, 4], - "faces": { - "north": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "east": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "south": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "west": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 12], "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "east": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 90, "texture": "#4"} + "north": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "south": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, + "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#5"} } }, { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 4, 12], + "from": [0, 5, 12], + "to": [16, 11, 4], "faces": { - "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 90, "texture": "#4"} + "north": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, + "south": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, + "down": {"uv": [8, 6, 16, 10], "texture": "#3"} + } + }, + { + "from": [1, 5, 4], + "to": [15, 11, 12], + "faces": { + "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "west": {"uv": [4, 5, 12, 11], "texture": "#8"} + } + }, + { + "from": [3, 5, 15.99], + "to": [13, 11, -0.03], + "faces": { + "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"}, + "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"} + } + }, + { + "from": [1, 11, -0.01], + "to": [15, 3, 16.01], + "faces": { + "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, + "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, + "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index adca94f7c..e83a80ba4 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -18,7 +18,7 @@ "faces": { "north": {"uv": [8, 8, 9, 8.5], "rotation": 90, "texture": "#base"}, "east": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, - "west": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 13, 9, 16], "rotation": 90, "texture": "#base"}, "down": {"uv": [0, 0, 1, 6], "rotation": 180, "texture": "#block"} } }, @@ -30,7 +30,7 @@ "faces": { "north": {"uv": [8, 8, 9, 8.5], "rotation": 90, "texture": "#base"}, "east": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, - "west": {"uv": [8, 8, 9, 11], "rotation": 90, "texture": "#base"}, + "west": {"uv": [8, 13, 9, 16], "rotation": 90, "texture": "#base"}, "down": {"uv": [15, 0, 16, 6], "rotation": 180, "texture": "#block"} } }, @@ -42,7 +42,7 @@ "east": {"uv": [11, 0, 8, 9.5], "texture": "#direction"}, "south": {"uv": [0, 6.5, 8, 16], "rotation": 180, "texture": "#direction"}, "west": {"uv": [8, 0, 11, 9.5], "texture": "#direction"}, - "up": {"uv": [11, 8, 14, 16], "rotation": 90, "texture": "#direction"}, + "up": {"uv": [8, 10, 16, 13], "texture": "#direction"}, "down": {"uv": [0, 6.5, 8, 9.5], "texture": "#direction"} } }, @@ -50,9 +50,9 @@ "from": [2, -3, 6], "to": [14, 10, 0], "faces": { - "east": {"uv": [11, 12.5, 14, 6], "texture": "#base"}, + "east": {"uv": [13, 6, 16, 12.5], "rotation": 180, "texture": "#base"}, "west": {"uv": [13, 8.5, 16, 16], "texture": "#base"}, - "up": {"uv": [14, 8.5, 11, 14.5], "rotation": 90, "texture": "#base"} + "up": {"uv": [16, 8, 13, 14], "rotation": 270, "texture": "#base"} } }, { @@ -61,9 +61,9 @@ "to": [13, 13, 14], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { - "east": {"uv": [8.5, 8, 16, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [8.5, 6, 16, 8], "rotation": 90, "texture": "#back"}, - "up": {"uv": [0.5, 8.5, 5.5, 10.5], "rotation": 180, "texture": "#back"} + "east": {"uv": [0, 0, 7.5, 2], "rotation": 90, "texture": "#back"}, + "west": {"uv": [0, 2, 7.5, 0], "rotation": 90, "texture": "#back"}, + "up": {"uv": [10.5, 3.5, 15.5, 5.5], "rotation": 180, "texture": "#back"} } }, { @@ -73,10 +73,10 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "north": {"uv": [0, 0, 8, 6], "rotation": 270, "texture": "#base"}, - "east": {"uv": [0.5, 8, 8.5, 6], "rotation": 90, "texture": "#back"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [0.5, 6, 8.5, 8], "rotation": 90, "texture": "#back"}, - "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#back"} + "east": {"uv": [8, 0, 16, 2], "rotation": 90, "texture": "#back"}, + "south": {"uv": [10, 7.5, 16, 15.5], "texture": "#back"}, + "west": {"uv": [8, 2, 16, 0], "rotation": 90, "texture": "#back"}, + "up": {"uv": [10, 5.5, 16, 7.5], "rotation": 180, "texture": "#back"} } }, { @@ -102,7 +102,7 @@ "north": {"uv": [0, 3, 16, 6], "texture": "#block"}, "east": {"uv": [7.5, 11, 9, 16], "rotation": 90, "texture": "#base"}, "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, - "west": {"uv": [7.5, 10.5, 9, 16], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7.5, 8, 9, 13.5], "rotation": 90, "texture": "#base"}, "up": {"uv": [0, 6, 16, 16], "texture": "#block"}, "down": {"uv": [0, 6, 16, 16], "rotation": 180, "texture": "#block"} } diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json index 9f8699599..ac2f7d8d3 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json @@ -29,12 +29,12 @@ "to": [15.9, -2, 16], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "north": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, - "east": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, + "north": {"uv": [0, 10, 16, 13], "texture": "#particle"}, + "east": {"uv": [7.5, 14.5, 9, 16], "rotation": 90, "texture": "#base"}, "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, "west": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, - "up": {"uv": [6, 8, 7.5, 16], "texture": "#base"}, - "down": {"uv": [6, 8, 7.5, 16], "rotation": 90, "texture": "#base"} + "up": {"uv": [0, 7, 16, 10], "texture": "#particle"}, + "down": {"uv": [0, 13, 16, 16], "rotation": 180, "texture": "#particle"} } }, { @@ -43,7 +43,7 @@ "to": [14, 11.9, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, "faces": { - "down": {"uv": [12, 9, 14, 15], "rotation": 90, "texture": "#base"} + "down": {"uv": [13, 8, 15, 14], "rotation": 90, "texture": "#base"} } }, { @@ -51,10 +51,10 @@ "to": [15.05, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { - "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [0.5, 6, 4, 7.5], "rotation": 90, "texture": "#back"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#back"} + "east": {"uv": [0, 0.5, 3.5, 2], "rotation": 90, "texture": "#back"}, + "south": {"uv": [0, 7.5, 7, 11], "texture": "#back"}, + "west": {"uv": [0, 2, 3.5, 0.5], "rotation": 90, "texture": "#back"}, + "up": {"uv": [0, 5.5, 7, 7], "rotation": 180, "texture": "#back"} } }, { @@ -77,9 +77,9 @@ "to": [14.05, 10, 13], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { - "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, + "east": {"uv": [13, 16, 16, 9.5], "rotation": 180, "texture": "#base"}, "west": {"uv": [13, 12.5, 16, 6], "texture": "#base"}, - "up": {"uv": [11, 9.5, 14, 15.5], "rotation": 270, "texture": "#base"} + "up": {"uv": [13, 8, 16, 14], "rotation": 90, "texture": "#base"} } } ], diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json index 5c82f50f3..b57d9857a 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json @@ -29,12 +29,12 @@ "to": [15.9, -2, 16], "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, "faces": { - "north": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, + "north": {"uv": [0, 10, 16, 13], "texture": "#particle"}, "east": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, - "west": {"uv": [7.5, 8, 9, 9.5], "rotation": 90, "texture": "#base"}, - "up": {"uv": [6, 8, 7.5, 16], "texture": "#base"}, - "down": {"uv": [6, 8, 7.5, 16], "rotation": 90, "texture": "#base"} + "west": {"uv": [7.5, 14.5, 9, 16], "rotation": 90, "texture": "#base"}, + "up": {"uv": [0, 7, 16, 10], "texture": "#particle"}, + "down": {"uv": [0, 13, 16, 16], "rotation": 180, "texture": "#particle"} } }, { @@ -43,7 +43,7 @@ "to": [14, 11.9, 14], "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, "faces": { - "down": {"uv": [12, 9.5, 14, 15.5], "rotation": 90, "texture": "#base"} + "down": {"uv": [13, 8.5, 15, 14.5], "rotation": 90, "texture": "#base"} } }, { @@ -51,10 +51,10 @@ "to": [15.05, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { - "east": {"uv": [0.5, 6.5, 4, 8], "rotation": 90, "texture": "#back"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [0.5, 6, 4, 7.5], "rotation": 90, "texture": "#back"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#back"} + "east": {"uv": [0, 0.5, 3.5, 2], "rotation": 90, "texture": "#back"}, + "south": {"uv": [0, 7.5, 7, 11], "texture": "#back"}, + "west": {"uv": [0, 2, 3.5, 0.5], "rotation": 90, "texture": "#back"}, + "up": {"uv": [0, 5.5, 7, 7], "rotation": 180, "texture": "#back"} } }, { @@ -77,9 +77,9 @@ "to": [14.05, 10, 13], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { - "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, + "east": {"uv": [13, 6, 16, 12.5], "rotation": 180, "texture": "#base"}, "west": {"uv": [13, 9.5, 16, 16], "texture": "#base"}, - "up": {"uv": [11, 9.5, 14, 15.5], "rotation": 270, "texture": "#base"} + "up": {"uv": [13, 7.5, 16, 13.5], "rotation": 90, "texture": "#base"} } } ], diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 06f4d7e7a..c8f445ce4 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -50,9 +50,9 @@ "from": [2, -3, 14], "to": [14, 10, 8], "faces": { - "east": {"uv": [11, 9.5, 14, 16], "texture": "#base"}, + "east": {"uv": [13, 16, 16, 9.5], "rotation": 180, "texture": "#base"}, "west": {"uv": [13, 12.5, 16, 6], "texture": "#base"}, - "up": {"uv": [14, 9, 11, 15], "rotation": 90, "texture": "#base"} + "up": {"uv": [16, 7.5, 13, 13.5], "rotation": 270, "texture": "#base"} } }, { @@ -66,7 +66,7 @@ "south": {"uv": [0, 8, 6, 16], "texture": "#base"}, "west": {"uv": [0, 0, 6, 16], "rotation": 180, "texture": "#redstone"}, "up": {"uv": [8, 2, 14, 14], "rotation": 270, "texture": "#redstone"}, - "down": {"uv": [8, 2, 14, 14], "rotation": 90, "texture": "#redstone"} + "down": {"uv": [0, 2, 6, 14], "rotation": 90, "texture": "#redstone"} } }, { @@ -97,10 +97,10 @@ "to": [15, 15, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, "faces": { - "east": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, - "south": {"uv": [7.5, 0, 16, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [7.5, 5.5, 16, 6], "rotation": 90, "texture": "#back"}, - "up": {"uv": [7.5, 0, 8, 6], "rotation": 90, "texture": "#back"} + "east": {"uv": [7, 7.5, 7.5, 16], "texture": "#back"}, + "south": {"uv": [0, 7.5, 7, 16], "texture": "#back"}, + "west": {"uv": [7, 7.5, 7.5, 16], "texture": "#back"}, + "up": {"uv": [0, 5.5, 7, 6], "rotation": 180, "texture": "#back"} } } ], diff --git a/src/main/resources/assets/create/models/block/belt_funnel/flap.json b/src/main/resources/assets/create/models/block/belt_funnel/flap.json index 04fc536bb..5d4a2a5e7 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/flap.json @@ -1,7 +1,7 @@ { "credit": "Made with Blockbench", "textures": { - "4": "create:block/funnel/funnel_back" + "4": "create:block/funnel/brass_funnel" }, "elements": [ { @@ -10,12 +10,12 @@ "to": [14, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#4"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#4"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#4"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#4"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#4"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#4"} + "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#4"}, + "east": {"uv": [6, 8, 6.5, 14.5], "texture": "#4"}, + "south": {"uv": [7.5, 8, 6, 14.5], "texture": "#4"}, + "west": {"uv": [7, 8, 7.5, 14.5], "texture": "#4"}, + "up": {"uv": [6, 8, 7.5, 8.5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 180, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json index a6ff6c281..fe713b69a 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json @@ -1,7 +1,7 @@ { "credit": "Made with Blockbench", "textures": { - "4": "create:block/funnel/funnel_back" + "4": "create:block/funnel/brass_funnel" }, "elements": [ { @@ -10,12 +10,12 @@ "to": [14, 10, 2], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [12.5, 8.5, 14, 15], "texture": "#4"}, - "east": {"uv": [12.5, 8.5, 13, 15], "texture": "#4"}, - "south": {"uv": [14, 8.5, 12.5, 15], "texture": "#4"}, - "west": {"uv": [13.5, 8.5, 14, 15], "texture": "#4"}, - "up": {"uv": [12.5, 8.5, 14, 9], "rotation": 180, "texture": "#4"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 180, "texture": "#4"} + "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#4"}, + "east": {"uv": [6, 8, 6.5, 14.5], "texture": "#4"}, + "south": {"uv": [7.5, 8, 6, 14.5], "texture": "#4"}, + "west": {"uv": [7, 8, 7.5, 14.5], "texture": "#4"}, + "up": {"uv": [6, 8, 7.5, 8.5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 180, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/item.json b/src/main/resources/assets/create/models/block/belt_tunnel/item.json index fb9e9fb5b..2b74d31ec 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/item.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/item.json @@ -6,7 +6,7 @@ "top": "create:block/tunnel/brass_tunnel_top", "direction": "create:block/funnel/brass_funnel_neutral", "frame": "create:block/funnel/brass_funnel_frame", - "back": "create:block/funnel/funnel_back", + "back": "create:block/funnel/brass_funnel", "particle": "create:block/brass_block" }, "elements": [ @@ -63,12 +63,12 @@ "to": [1.5, 10.5, 5], "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 2]}, "faces": { - "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} + "north": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "south": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 90, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 270, "texture": "#back"} } }, { @@ -77,12 +77,12 @@ "to": [1.5, 10.5, 8], "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 2]}, "faces": { - "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} + "north": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "south": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 90, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 270, "texture": "#back"} } }, { @@ -91,82 +91,82 @@ "to": [1.5, 10.5, 11], "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 2]}, "faces": { - "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} + "north": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "south": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 90, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 270, "texture": "#back"} } }, { "name": "F4", "from": [0.5, -2.5, 11], "to": [1.5, 10.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "south": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 90, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 270, "texture": "#back"} + "north": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "south": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 90, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 270, "texture": "#back"} } }, { "name": "F2", - "from": [14.5, -2.5, 2], - "to": [15.5, 10.5, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 3.5]}, + "from": [14.5, -2.5, 11], + "to": [15.5, 10.5, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} + "north": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "south": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 270, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 90, "texture": "#back"} } }, { "name": "F3", - "from": [14.5, -2.5, 5], - "to": [15.5, 10.5, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 6.5]}, + "from": [14.5, -2.5, 8], + "to": [15.5, 10.5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} + "north": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "south": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 270, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 90, "texture": "#back"} } }, { "name": "F4", - "from": [14.5, -2.5, 8], - "to": [15.5, 10.5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 9.5]}, + "from": [14.5, -2.5, 5], + "to": [15.5, 10.5, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} + "north": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "south": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 270, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 90, "texture": "#back"} } }, { "name": "F5", - "from": [14.5, -2.5, 11], - "to": [15.5, 10.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [15, 4, 12.5]}, + "from": [14.5, -2.5, 2], + "to": [15.5, 10.5, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "east": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 14, 15], "rotation": 180, "texture": "#back"}, - "up": {"uv": [12.5, 9, 14, 8.5], "rotation": 270, "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "rotation": 90, "texture": "#back"} + "north": {"uv": [7, 8, 7.5, 14.5], "texture": "#back"}, + "east": {"uv": [6, 8, 7.5, 14.5], "texture": "#back"}, + "south": {"uv": [6, 8, 6.5, 14.5], "texture": "#back"}, + "west": {"uv": [6, 8, 7.5, 14.5], "rotation": 180, "texture": "#back"}, + "up": {"uv": [6, 8.5, 7.5, 8], "rotation": 270, "texture": "#back"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 90, "texture": "#back"} } } ], diff --git a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json index 8c6703f09..384ee32de 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json +++ b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json @@ -17,9 +17,9 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 4]}, "faces": { "north": {"uv": [0, 9, 16, 12], "texture": "#block"}, - "east": {"uv": [9, 8, 7.5, 10], "rotation": 270, "texture": "#base"}, + "east": {"uv": [9, 16, 7.5, 14], "rotation": 270, "texture": "#base"}, "south": {"uv": [7.5, 8, 9, 16], "rotation": 90, "texture": "#base"}, - "west": {"uv": [9, 8, 7.5, 10], "rotation": 270, "texture": "#base"}, + "west": {"uv": [9, 10, 7.5, 8], "rotation": 270, "texture": "#base"}, "up": {"uv": [0, 5, 16, 9], "rotation": 180, "texture": "#block"}, "down": {"uv": [0, 12, 16, 16], "rotation": 180, "texture": "#block"} } @@ -29,10 +29,10 @@ "to": [15.05, 14.95, 14], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, "faces": { - "east": {"uv": [0.5, 7.5, 4, 6], "rotation": 90, "texture": "#back"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [0.5, 6, 4, 7.5], "rotation": 90, "texture": "#back"}, - "up": {"uv": [6, 0, 7.5, 6], "rotation": 270, "texture": "#back"} + "east": {"uv": [0, 0.5, 3.5, 2], "rotation": 90, "texture": "#back"}, + "south": {"uv": [0, 7.5, 7, 11], "texture": "#back"}, + "west": {"uv": [0, 2, 3.5, 0.5], "rotation": 90, "texture": "#back"}, + "up": {"uv": [0, 5.5, 7, 7], "rotation": 180, "texture": "#back"} } }, { @@ -64,9 +64,9 @@ "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 0, 12]}, "faces": { "north": {"uv": [0, 0, 8, 8], "texture": "#direction"}, - "east": {"uv": [11, 8, 14, 0], "rotation": 180, "texture": "#direction"}, + "east": {"uv": [11, 16, 14, 8], "rotation": 180, "texture": "#direction"}, "south": {"uv": [0, 8, 8, 16], "rotation": 180, "texture": "#direction"}, - "west": {"uv": [11, 0, 14, 8], "texture": "#direction"}, + "west": {"uv": [11, 8, 14, 16], "texture": "#direction"}, "up": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, "down": {"uv": [0, 7, 8, 10], "texture": "#direction"} } @@ -76,9 +76,9 @@ "to": [14, 10, 12], "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 0, 12]}, "faces": { - "east": {"uv": [11, 11, 14, 16], "texture": "#base"}, + "east": {"uv": [13, 6, 16, 11], "rotation": 180, "texture": "#base"}, "west": {"uv": [13, 11, 16, 16], "texture": "#base"}, - "up": {"uv": [11, 9, 14, 15], "rotation": 270, "texture": "#base"} + "up": {"uv": [13, 8, 16, 14], "rotation": 90, "texture": "#base"} } } ], diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical.json b/src/main/resources/assets/create/models/block/funnel/block_vertical.json index 482c84903..00e28abdb 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical.json @@ -92,9 +92,9 @@ "to": [15.95, 4, 11], "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, "faces": { - "north": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "north": {"uv": [0, 7, 8, 9.5], "texture": "#direction"}, "east": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, - "south": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "south": {"uv": [0, 7, 8, 9.5], "texture": "#direction"}, "west": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, "down": {"uv": [8, 6.5, 0, 9.5], "texture": "#direction"} } @@ -105,9 +105,9 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, "faces": { "north": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, - "east": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "east": {"uv": [0, 7, 8, 9.5], "texture": "#direction"}, "south": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#direction"}, - "west": {"uv": [0, 3, 8, 5.5], "texture": "#direction"}, + "west": {"uv": [0, 7, 8, 9.5], "texture": "#direction"}, "down": {"uv": [8, 6.5, 0, 9.5], "rotation": 90, "texture": "#direction"} } } diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json index c2289d3ae..613405f69 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json @@ -6,8 +6,8 @@ "direction": "create:block/funnel/brass_funnel_pull", "redstone": "create:block/funnel/brass_funnel_unpowered", "open": "create:block/funnel/funnel_closed", - "particle": "create:block/brass_block", - "frame": "create:block/funnel/brass_funnel_frame" + "frame": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_block" }, "elements": [ { @@ -66,10 +66,10 @@ "from": [0, 4, 0], "to": [16, 10, 16], "faces": { - "north": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, - "east": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, - "south": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, - "west": {"uv": [11, 0, 14, 8], "rotation": 90, "texture": "#direction"}, + "north": {"uv": [11, 8, 14, 16], "rotation": 90, "texture": "#direction"}, + "east": {"uv": [11, 8, 14, 16], "rotation": 90, "texture": "#direction"}, + "south": {"uv": [11, 8, 14, 16], "rotation": 90, "texture": "#direction"}, + "west": {"uv": [11, 8, 14, 16], "rotation": 90, "texture": "#direction"}, "up": {"uv": [0, 0, 16, 16], "texture": "#frame"}, "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } diff --git a/src/main/resources/assets/create/models/block/funnel/flap.json b/src/main/resources/assets/create/models/block/funnel/flap.json index 7af138154..3179cbdac 100644 --- a/src/main/resources/assets/create/models/block/funnel/flap.json +++ b/src/main/resources/assets/create/models/block/funnel/flap.json @@ -1,7 +1,7 @@ { "credit": "Made with Blockbench", "textures": { - "4": "create:block/funnel/funnel_back" + "4": "create:block/funnel/brass_funnel" }, "elements": [ { @@ -10,12 +10,12 @@ "to": [14, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 13.5], "texture": "#4"}, - "east": {"uv": [13.5, 8.5, 14, 13.5], "texture": "#4"}, - "south": {"uv": [12.5, 8.5, 14, 13.5], "texture": "#4"}, - "west": {"uv": [12.5, 8.5, 13, 13.5], "texture": "#4"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#4"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#4"} + "north": {"uv": [6, 9.5, 7.5, 14.5], "texture": "#4"}, + "east": {"uv": [6, 9.5, 6.5, 14.5], "texture": "#4"}, + "south": {"uv": [7.5, 9.5, 6, 14.5], "texture": "#4"}, + "west": {"uv": [7, 9.5, 7.5, 14.5], "texture": "#4"}, + "up": {"uv": [6, 8, 7.5, 8.5], "rotation": 180, "texture": "#4"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 180, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/funnel/item.json b/src/main/resources/assets/create/models/block/funnel/item.json index 48bac7242..efae6bf87 100644 --- a/src/main/resources/assets/create/models/block/funnel/item.json +++ b/src/main/resources/assets/create/models/block/funnel/item.json @@ -112,7 +112,7 @@ "faces": { "east": {"uv": [8, 14.5, 7, 16], "texture": "#missing"}, "south": {"uv": [7.5, 15.5, 9, 16], "rotation": 90, "texture": "#base"}, - "west": {"uv": [7.5, 9, 9, 8], "rotation": 90, "texture": "#base"}, + "west": {"uv": [7.5, 8, 9, 9], "rotation": 90, "texture": "#base"}, "up": {"uv": [1, 14, 0, 16], "texture": "#block"}, "down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#block"} } @@ -122,10 +122,10 @@ "to": [15, 15, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, "faces": { - "east": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, - "south": {"uv": [7.5, 0, 16, 6], "rotation": 90, "texture": "#back"}, - "west": {"uv": [7.5, 0, 16, 0.5], "rotation": 90, "texture": "#back"}, - "up": {"uv": [6, 0, 6.5, 6], "rotation": 90, "texture": "#back"} + "east": {"uv": [7, 7.5, 7.5, 16], "texture": "#back"}, + "south": {"uv": [0, 7.5, 7, 16], "texture": "#back"}, + "west": {"uv": [7, 7.5, 7.5, 16], "texture": "#back"}, + "up": {"uv": [0, 7, 7, 7.5], "rotation": 180, "texture": "#back"} } }, { @@ -134,54 +134,54 @@ "to": [14, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} + "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#base"}, + "east": {"uv": [6, 8, 6.5, 14.5], "texture": "#base"}, + "south": {"uv": [7.5, 8, 6, 14.5], "texture": "#base"}, + "west": {"uv": [7, 8, 7.5, 14.5], "texture": "#base"}, + "up": {"uv": [6, 8, 7.5, 8.5], "rotation": 180, "texture": "#base"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 180, "texture": "#base"} } }, { "name": "F5", "from": [8, -3, 9], "to": [11, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-27.5, -7.5, 9]}, + "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} + "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#base"}, + "east": {"uv": [6, 8, 6.5, 14.5], "texture": "#base"}, + "south": {"uv": [7.5, 8, 6, 14.5], "texture": "#base"}, + "west": {"uv": [7, 8, 7.5, 14.5], "texture": "#base"}, + "up": {"uv": [6, 8, 7.5, 8.5], "rotation": 180, "texture": "#base"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 180, "texture": "#base"} } }, { "name": "F6", "from": [5, -3, 9], "to": [8, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-30.5, -7.5, 9]}, + "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} + "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#base"}, + "east": {"uv": [6, 8, 6.5, 14.5], "texture": "#base"}, + "south": {"uv": [7.5, 8, 6, 14.5], "texture": "#base"}, + "west": {"uv": [7, 8, 7.5, 14.5], "texture": "#base"}, + "up": {"uv": [6, 8, 7.5, 8.5], "rotation": 180, "texture": "#base"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 180, "texture": "#base"} } }, { "name": "F7", "from": [2, -3, 9], "to": [5, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-33.5, -7.5, 9]}, + "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#back"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#back"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#back"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#back"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#back"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#back"} + "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#base"}, + "east": {"uv": [6, 8, 6.5, 14.5], "texture": "#base"}, + "south": {"uv": [7.5, 8, 6, 14.5], "texture": "#base"}, + "west": {"uv": [7, 8, 7.5, 14.5], "texture": "#base"}, + "up": {"uv": [6, 8, 7.5, 8.5], "rotation": 180, "texture": "#base"}, + "down": {"uv": [6, 14, 7.5, 14.5], "rotation": 180, "texture": "#base"} } } ], @@ -246,25 +246,7 @@ "name": "flap", "origin": [8, 8, 8], "color": 0, - "children": [10] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "color": 0, - "children": [11] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "color": 0, - "children": [12] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "color": 0, - "children": [13] + "children": [10, 11, 12, 13] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/smart_chute/block.json b/src/main/resources/assets/create/models/block/smart_chute/block.json index 6960b24d3..42a168fe6 100644 --- a/src/main/resources/assets/create/models/block/smart_chute/block.json +++ b/src/main/resources/assets/create/models/block/smart_chute/block.json @@ -7,7 +7,7 @@ "redstone": "create:block/funnel/brass_funnel_unpowered", "particle": "create:block/funnel/brass_funnel_frame", "frame": "create:block/funnel/brass_funnel_frame", - "direction": "create:block/funnel/brass_funnel_pull" + "direction": "create:block/funnel/brass_funnel_neutral" }, "elements": [ { @@ -135,10 +135,10 @@ "from": [0, 9, 0], "to": [16, 15, 16], "faces": { - "north": {"uv": [0, 0, 8, 3], "texture": "#direction"}, - "east": {"uv": [0, 0, 8, 3], "texture": "#direction"}, - "south": {"uv": [0, 0, 8, 3], "texture": "#direction"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#direction"}, + "north": {"uv": [8, 13, 16, 16], "texture": "#direction"}, + "east": {"uv": [8, 13, 16, 16], "texture": "#direction"}, + "south": {"uv": [8, 13, 16, 16], "texture": "#direction"}, + "west": {"uv": [8, 13, 16, 16], "texture": "#direction"}, "up": {"uv": [0, 0, 16, 16], "texture": "#frame"}, "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_connected.png b/src/main/resources/assets/create/textures/block/andesite_casing_connected.png index 0b763678038b5bfebe5e077556686a6568bd0f96..40d01e0af0e453f556ef393549daca50d8f74e1f 100644 GIT binary patch literal 3986 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 literal 1891 zcmZuxX;f2Z8onV!7*mASVNsTZb&w@t-z6kKV^Hob9&D6J@5BE-*e8p{P-@0 zvFJLx_wNP(K!b?UuSXk;^5%TaHX1a)pdO(DKzkK_CkY1t7@II=WH72%R99cD zswyonD=8}#mX#KlmIzCV`NgGtp)j8>;O294dAT`xITyG&**V$er@YHfdI^(!gh}2- z9Pbk;Cj^OJ`~=U!cu!uedtQti_qc2BF^}A1E;%ToT`ojB$Hd2+k8;jpld{;3nQT&K zxI;!bDI?r5BiueMl#~|gn8tEUMRCO8B$JeK_&`z!=@i5Ey(Bi1Z~K^&v#~n1y+nvb;^hJWY;xnXo)en4TybGu%w*t|p(mm@u4;7*0lk zWCI%6fa<7EIk4B?_Ol(y$^^P8%%9k-2q0i_Dg^*=(~KZ$WbT``NlfL0lhLkud+Ogm zWf~g~FejN2`{H@0^(9fR;4htLL7iN6~Cw8^}~NwU+^2^)uc0vzSa!sp+IqF___Xotv?#k={Q;6LcOF#k^|h zXx*UWw}eM4j9DP>GyLRsPgm6BZAe^sSVy*i^*X;lKfbv#_sVE$K>1fCkv1mq4?2^N zlVNM!rnQi@$NBj{Bx$zz9RKP%x7F}(OwQ2q9Bp5E6V|ZBzI_jIxu>*TkUj2uXQXqy z=+?B~;)~Qx9pdb{%g~ohGL1~B5@U{i@AhMD-os*Rj&{_immB?g_d+^dra%AP3A>g;%Zm&5 z?T-iTegE@h`;+nEG-HfGW&A^??9sceH{*DhnvCGfyZ%d|AMzK#g7-TPE%)D zNZYh>^?uJ3@J~*7%L=VPt#q~jW>n}|N4aYH=*KYw4M6+m0#HEI6zE(l>EW)w;OG8S zk<7uH5-*wdcFq!vjqGk3p5x~U`$wqAGz}1{J5zVYZymY`UEe(=kb-^S z>z?Drd0>m+)w3Bekt{Z8l6G`YjqxP7#?eq$G36TM`2Ju+>y|VE+#i$QZyaGxlNd(t_TcScDo)Szmtf9 z5c*RnS>dg}u5^YF9J1vwj?}yrvC=(cDVpl4oqtUy-e^KB7kKqb$591$9+rNguDS#c zM4lbOHxu5;i$<}PSLfkaxX5u8G4|1QI8y5KYN>~uLgUl&-(ig_LxFaznjtfBpu!)j`J;s=4xPDST=QXtijcGcH|RDWi&KN|aO zKj?fTo4Y9_q7p+vvS?ox^tGFJK+)QD5QYE_w(I_pJovMSxo}t2XTY7)%AYld=0aQ@ z1Ti17^}Q+!*|_w}MUu#v7bU(xFHUFUg7sb+#+&feFuW2f7jEh$}naDKtmTZvh-mb4M3EWY>eQ&FCEqb|x&2&NgK zlO)(SgnmzgMeiSZbg^htL~PLd0TQN}9g^bjbBP7yL0Qp`h8GY)<$QJ;L~*ix~Y0TyPRIbOL;P0(J%sO$j0UQCioqp`Jkl44-c+OR8(UEX8ZDyhu?OTI*K%sQY&k0=(p~9DKF0ARYm6#RHLF zi>1Rm2)0^9aL^7@{uFma&ji6lfU#w^<_pZb*q6VX2(U<9**?$J2H Fe*>i^pu_+G diff --git a/src/main/resources/assets/create/textures/block/belt/belt_casing.png b/src/main/resources/assets/create/textures/block/belt/belt_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..26bfbb10e1187f9faf8143bee8f170d0a6da3c7e GIT binary patch literal 3616 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/block/belt/belt_casing_3.png b/src/main/resources/assets/create/textures/block/belt/belt_casing_3.png new file mode 100644 index 0000000000000000000000000000000000000000..914327bdba2da1fa6e2c0f1abf2c0fa05fdfcc9c GIT binary patch literal 585 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 A7ytkO diff --git a/src/main/resources/assets/create/textures/block/brass_casing_connected.png b/src/main/resources/assets/create/textures/block/brass_casing_connected.png index f7b9f17c3f97c547e28ff95f6e00ec1955aa2de0..2fe2f01898772508a247376bd870fb943febde20 100644 GIT binary patch literal 4059 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 M4=>kZm*9*41H)+q(*OVf delta 1377 zcmYk6X;70_6o!)t5G6ve6aumYt+I*_M=6a|LZK{1vjgmDRbKq`yD1RWrQ0X`%fNl4O<&UD&8&w1}T?>+b4^W%!K^OjYP z00IVsDW`8~pAp(k{?31rq}P$*Aqn~KpR$1B8+{cS zGOr}f$O=X*p_|6)?Y55sBAFTxN5;X)hB zk+cTyr7xQvcAglYoj6+GR8HGd)uF67^SPmJ3UUc|6JL=wf5P49G;q%~b6(m{t*}yF zhpZlWI5%pwrU16}bTAC^TSvakTX^%Zm$P}A6&5{7m5E?q8q+(qRmpj`V|TYmD8wW= zZ_1)iCFy5h3zok`SP|d-BB`l*tFNQ?n&mnXrBR^W?uq^b(9VHm>4A2sprl82+OL?$ zJ!1U#e?6h ztj&uM9M@SLDcf>T09nw}WkQXK`(-z}e_}ic7E}W!py{J~ z%<1#x1sj_AgIGbd-^ORM%h{Ol+6r(zwf8uqyv+#vSia+=$}2{T zh@|r9Z%8Cy17U?e(~H*A?yBeVGHQur=Ik6@h|>vt9FFAeC!*1pqc_F0g>Nt|$LQ zLkx7dX!5Akz#)n>@bmxbuIK1lHC(|EEJG;LFuN6u#;0fp5YdOMlIe@o@EI+kkpU~< zqt9ZA4Itt@vWmvPw_^0o{{$e$WHSw5lXJB1q_!wIbVt5!^Vg<56IX!rmJY&EH zNs#|%#hO6C5U9*uu2V?UYPcAaA3#NO%eI^fH2j$#>oa z>XmT1gwZ{1z$b@6tv_I#t*>YpIv4=}`O{hWgKQN&Pfs*RkcCm#wVCSTC0n!-UK{Tx z9V8s_VidE$bnGMU0?Jz<#V7-s#r(!y`jS@eXOzDWPG2IVkcNTM3nY9G_THq)d=X{F z)-z4qp*x0cXGv}xW35m`{fNpLV{|FDBr@BLOk!5_RVmW5Vt!el414Y8GDL$w>&i?IEn#5B8 diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel.png index 9a5ad5cc7e8e674c7ec32acb167710f0d5c4897d..67f4636cf3968736c000194f627106303203189d 100644 GIT binary patch delta 4835 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 Q4*&oF07*qoM6N<$f)yv;SpWb4 delta 4282 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 diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_powered.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_powered.png index 7abb6fcc960b5da976dbd1b9d7671616c01cd6d7..0c55e9ce90d4f56bd414b3099f8ea4de5136b9c8 100644 GIT binary patch delta 2790 zcmV_`$@I7v z76DZyAx!`4&td++AA4(!^BO}6!Q#&)mpJ1k+WnW;ovd5;^I@--mvVDgFp30E*`G0- z_E$OC7fY1!=AR73dMe6mMRLb}{9@<~By&cLmv#)LV@P;c&@qtrvTR6yQJkPJv$YC=}){Bo=oT-V>1dVx&2j47+pGKB?kNi>|`Bv8p$n!Twi)M_zSC?G? zq~R>;TFQDu!ve@t4b)q~PP5e(T$K_r&>!TeQKmtCJu6jA(Q#+R zlex02vM9=lt5~ym!bO8sk~E3nuYz7dDc^IUHEvqNRf-t65n3|A7;XCb|G7RI8e>YH z$i^Eh%!{W8F^$RGyrUHep>gTRFMzM>>)+&6z@T3+M=UVgvP~3!Pe)r*N3w_(H1v3G zw;*lD03gEH9+M#f12&L&3S^a8iGX7SKN*H1i{kB|DJ-a-bZHjXp}NEqmU@ zh*==QOArM$Niw){2yD=gx(E$rFW!0YgI6DY@;OLw!G{nu%;1+*)T!5?s!@~XDA7e9 zL(~{eOfe@;g5c*uV|#TqZBW<$MM zLs!+y1kG^bCud-c9f5J33_#F4IkS79noY}4pzPzI>e3CH!%bB5BR~=%F}Lz zM$JiwBKIdm&uK%%A>II0cLr{nOoxOI9K-R(qcin?mihq_j@1+O(;rTN{3P4cQX}Go zpY)@lPs4Y2V1}xXIg2=xuX#YW3DewPa}>Vm=!1@-SRr`L`Lq%U>(<-deDJY9JiIF3 z%WHNE%)r&O1WjQ#b679IP1Z+FgDw2*jDWqS(?P}4$TmF*&^#+pvm6TqNBZZbJXS*O zxCo+umDYZM&Gjqs^)Lx46Whk_qbhAuaQ6TA3OO{s@+p^g;gxL(%;SG3LSuSl;7sOfYnK&#tNO7mm& z5b4##o)7eK#47E`d?0f}Zgho<;b@9sQ(4)6A17leaX8&hTO0rZBwBXmgwEZdwtfs# zL{J*;gs58CVVgLxIRI=NRIsFKs=$ozPJ zL2^`|zmB7%CyW%QJ-D~PaK(iq=!E^y(oBmN4PZ>`Q-Cuw!aYJm2+!+yRz^P|h~b3K zvHA+tX2oiaM`uCWgzj3BO+ew)HGU@PjU)3*lHNEnza;66BlCeINcwcaj51E~t12S3 zibo|a!E(5bnYU2)%SdP5LftPTox#q3cUmPRe^}P3Oj8TN-Ks&vj>oMPo6DQ*%&ohf z!#GToCFeakp&T!b^lW?GkYwrJ#Nm&ItKLc7l~v&o!v`w0xAAYE=2OKF zp76d)+&Hh{{pdd7m~y+$gU5Mr-T4LId9BoZ(hN6n9&u|%oNbH$mX3eT#_bgoa1h$# zn6R>dN#M=jO&CrZ$@~qrm(4GKl>YEF0001GdQ@0+Qek%>aB^>EX>4U6ba`-PAZc)P zV*mhn+C54!5`Zua+VcvZkU*;TIlb1w&B6blTn6C+9K`PDowgNnH=c>?xje-mKuiY@ z#X-<@z+%v)V5@a%z0@TKn<>cH>#Zt=efAj_XCp37rvLx}g=s@WP)S3R5C$86J6LhZ zP@OD@iaJUai(sL&6gO1v*A zw21M+<$av@&f&iM0HIM~s@XLTsG4P@;xRFsTNQg=5kQz~24RVrdLq4;f#>?VhmY@f zQJ&>}@6Xkzk+gL!Qw&2_3_#Ib|~k`N)I zhB7L!5T#us#YBqEV;=q?$DbsZOs+B*ITlcb3d!+<|H1FsnuW;;Hz^o@1G-;q`(p&? z*#(+)+x|Yb?dA#Ke+I6!w!hi{WoO54hX`2A_1vkQ~WRB@_z4 z`x$*x4j8xv0&DKvTIV=@05UYI=3GT z5n5?fSaeuTOgdw4Z7yN6rw8!@Bw;pWFfuu1FfA})IWR3WWMpP7I5lE6EiyG@G%`6b zHeoa}IFq~zkqb94H90XkH#IjoII~y_i~^Gd4O}EQHaBB4V=*)>W-~H5Ei^e}WG!K4 zH!&?TVm3E9F)=Y^W@9*$g$+#%G*mJ%Iy5#qG&CYFlm852BxN)*VKz8nH!WdeVl*u@ zFlI6>VqrBjEi*JSVq!NnFl1vgFq4H1O$s$sF*G_gF*-Flv)m0{2^RadRnGtb00v@9 zM??U;0JZ?G+{scWlTa5Re;ExkJ0{Rg%m4rZVM#ld($zaTLct#wkgh2`3%8 z=uqI`VndF$g_HOP)FMc8n}e+`K}!$~{R1r`4bHVmkYf%G>QGpBU>tGb4Zjvo?tXb? zec{LB_ul)x_kG_VFLYeUiSvtn08GQ?;obnC(`-`&vcL#Pdu$g-f7Z(YDCyJ&reR}Q z4qlYz31c86*`znISt*F8nG6mFgkGe zlLix@AE1Gjh_ctIa@wf|GjKaxNsk`~udHV>=sPL&os=)u1wzeAK^)d{i&^`A!z(ubkQbsM6X|(Pov#@?twl!H@P}rScnKM zt)YZH|BxGf(_|8Q{-Q|Aev$7lqTBlAMbS1y!y}7M-HPH?M0UL}TR~dO(jf|eUzd>E zYU{BQS+^Pw;;H*o@;Y{m=v5CPS=-2v#?z8r4$!!*qBLIMX^HF-Cvp^~gtsRM$h$b{ zi&yFum9u9aXHix zY1oT8mNI*om=SWCp9Nfu+oR8a^NP4cfxQLjR9$q&RZKJ%(eK8YYLe-u&9;~V7oBaE z(OO$9O_>neXbWit%-pz4w@i^L3D7ElmmsyLFJ{_}(_AqE!_{D>HBe?2{PxdWkBWL9 zls87p87uf@2MOWEKyExS3xJq@@W{^qAJ^+|;7UNy&oB!Xm~>t$vNxN5TZ2b5fhJ7! zXjfVou3G^@1lu0Y7y<%181g0<&DOFph@$|X1Vv)W*$fDb_qM`I>xcrt5j$+-8#Z&U z^>&F-vjBug8Zn@Wlz^2(VFQ2I2{@EIdFQ5{xEjPWU=uLQ2_Y$}amHGH1y#rvmyES9}SDi>MMy zsBnhE} zK2gJ`%!djy%84JC0Ws?g5a)pa2yF*uT8wj64d@1DI-;_XxA4+`4{)j(hyg*@jP>1| z*nJ^)!%aE&zi_h$a%w>LCy-MEx(DRG=qdc8}oqAsZ=?A9G$^dOb?z;)JmdgBHF3D5PyBQTkk+%X%UmZCb4DHUSl zqp2nE>Q~FsI0Zj{M@?qEoS%<9Z?&PXxvG?)zrECcD+=wH_-@{{RZlP8wO0dgJz_~~ z2AmJg?;tXjxVoaLwzOj0Bd`p-rsUFSPf=q|_zb2VW1HR9Ny;frVRRM5nzHWNFU`~h zOvwkb*p{xkyO9&nTqVbiQZWuYd07hqyhH$fTxRpox4 z)rzvg?XLqDgoh3SgIYf+cIquex3j<{bo_M&yX{4N{Nwk-z3Aycpx&Mce) zjw*&7?kgkGalqimq)|_Yf}frV)GW|`2T^xX9Iqzh&}{L9 zZ2$lPgp)7_A%6>sbjVPhEEE-Slqwd%LTM|s>R|HHKWNgBq_{W=t_25w7OM^}&bm6d z3WDGdh@+E}qKlMxUs7lhiFjW{a ziJ5vbvzUeF`nrdY?{`t2<$dqZHJ}ts2KYqcIi?#H@qY&K%%-Jt-X{*RvZN576Hge_ zAn_yDWtZPLmmC&&X2{5<=ZQnaVyTPeE@ovzC7vdZD5^&JLe6D{^A=~dT4(J(`3r*u zZ6(8XsxT5*LJ}#6kWohkRal79u90FQP3LhB|ES|nkxM351&kaEs6mC~_`(0+_iWAL z)TEmfjDG{YFSh+L2K4O$t%hxXAKP~81n@rtS6atkYXY;Mq>RG z?f@fCx@1U>H92KvW@R=lHaTTEEi^eb zG%aBdH1WMVm!;|q}sH8nIdI5#pgI5#r0e+-NQv&j%v2^M8r+r0n) z00v@9M??UJ08s!pFGeff>eya7M{QZFu@6l8JL2S3d&TGQX;76QE2RNL`Ot~#Ba_%+y9;|U$S+s&5D$$ zYjp?UEJ6tsKm*KGJOVfez!XDSk+KpGKpk>AW~x|caB~|@VZ0L0+HDemdp=>z@5Q%g zk(WUVEJOTOrM`l`Yi(@Sg!;@RPV_@riiBE?HqftZsQ~g`Za#**7KpX)J P00000NkvXXu0mjf|Ar^) diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_pull.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_pull.png index 3c120d38a2fb4424f953911840cbac1332e26289..bf202962a79765eab4b3ca1f495ed91f553c451c 100644 GIT binary patch delta 4920 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 KMNUMnLSTZ%PkcTA diff --git a/src/main/resources/assets/create/textures/block/funnel/brass_funnel_unpowered.png b/src/main/resources/assets/create/textures/block/funnel/brass_funnel_unpowered.png index c339a57942194b2321e842cdd3426e0fd2de1f91..a7d372db0440c26f3ea3e4cb85a5175ba091496e 100644 GIT binary patch literal 6783 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 diff --git a/src/main/resources/assets/create/textures/block/funnel/funnel_back.png b/src/main/resources/assets/create/textures/block/funnel/funnel_back.png index 7ee7092dfaaa2280cde858e5b228d030939665fc..50ee51cf8327fee6e4c2af17de2748ad89dea456 100644 GIT binary patch delta 3365 zcmV+=4chYmJH9`VB!8uPR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}typV%BP$O5 z&njjK2oQqhh}ZYs9nA9Q2+Eb%ak_JR+7+8B9+J?Jj;Of#-+z|-4?ZD>{Qr3A{HLoiT(N zDSG^d7>)tazQIMc0sMx@m`E|g{wdUEKrVN+nYg3P{>^n?saCzLzGA_ZF zaWDI-xQavccAztS_YGI4N&((qlxUFBqPg2n9VVtQgP;wehq(Jnlu$#D-ff(4(Fzi4 z9I*hg4tOJa!)*&~y>+YWRG@eeW(I;VI`D_TbA2mlEq@DnB42J_!LDGD1v3me`^78( zLhBJnydC_wUO$Fw1cJQXT(Cj)?TBbhS8Q1v#SL`CL`Hkkf@E9*;3DW|7()>V_)L*0 zla~;L2!1TUMt#2f~!3@OG8a7r-USR=IO1`ekioCP2_<|u%sMg>+zY=|F8 z1u>)?Ie#&8X5qq>HOHJX=bR-Q`Kd%n!jeU#NEI!yq{1Z^DaDmqw1yf%j$Ctj>d;9Op)}LvnWxM$ z>(qr%TXChuD=%4P)ulIT>CIwz}WA}mF6K*c0{|mS9K+YL-e*-yZ(0zm4 zSKQv9HmuroAKgaC($JjhBhs&nhL&?HRl80ODT9%?RcxDjkBv%AoE2J=&d1|$gA&8Q z9Df*-B{7M&G2~sIjJe!7N3(C{=CMQRo#5l#I?px>sTl_AU21V?C^{;hvSK@_^az_I zz&R1+F-Nj-hLNAE(W`iHm&5Z3&d1z``>*xvCU_BOR zi(9f=?|<34-%a>w`zlCAUa7X`M`(2g4Dd>0Ag?wYtELsr=Obk$YvaeTax15G!}2V+d`6b<7N8V#vo0 zD3;PZi^7D`hbWjZxzeyQS=xq%Lw_VzHu(@yE2XmhK=2}qixy}ZrR&ZWbBa73-JLt2 zijpl=!^u=>Al%2EEkN1$-ormWH^eP6yXLvG4x9o(ItIczfu288*0(7OGqzqoZBZ-h zPzK-^kOCO=@v0E5YZRO8PD4v#nGMu`F|01G88kY zd7PZK6#vf559(SBB#^Y*RvbsbBGT8`E&=u&#L$B>0iA*_!Tj)T^GmR;i#_1`2S2!1 z68|k<+;oA;g7bh`qKy`kNoi2h_Ef-Q$_qx)*) z7aI}M+eoWQ_`~C><6D8uv=5>Uxms5o@s6oQ%F(3@$6YAm($0j@Yy>q7;# zPGlS^9NeUVkUnSY&t@1j;fUR;NX(`y+kWx7&i%IYVHXZlMqfC7fOq;F zwkL0U>SbE^!LCX<^MBUIDWJ<)Ao?@*wcWeJZKaARpF9rn=9=tO>F=yY>+tn{PTdQp z;7CvBew6yH{CwntS?(_P`(Qmhwd%IpR0ywGPZs{Mf$qh^KQ_?4Sop^Vx?j8S z=LWiWE(~Z%dFK%UmkL=*7=tXj}zqP!+(_XJ}rEtlSi?|rmTJ6JIx}4IIUgh5M>zRTgQjGhTRc0InKz1Dzw)v>*Z=tqSv9(CqI>A5NM7%%8 zO#yfttFHNr**_VZ?YurMbr5 zV{=rqemu-&boTPw)a>T1Iq6KV&sM0Fp}#yrJJiM^eL4vN&L!9#MO zOdCz8hHF&s-Twdt<0(FMOqiVj003utR9JLUVRs;Ka&Km7Y-J#Hd2nSQX>fF7004N} zJ&L;xfItjG`%J+IIXlN^oal~%j)MJ#Nr5d#(X;KkpEY4iDOTeih$E(l{0nHq!A)-x zbOo4fbX~AlJJggO1v*Aw21M+<$av@ z&f&iM0HIM~s@XLTsG4P@;xRFsTNQg=5kQz~24RVrdLq4;f#>?VhmY@fQJ&>}@6Xkz zk+gL!Qw&2_3_#Ib|~k`N)IhB7L!5T#us z#YBqEV;=q?$DbsZOs+B*ITlcb3d!+<|H1FsnuW;;Hz^o@1G-;q`(p&?*#(+)+x|Yb z?dA#Ke+I6!w!hi{WoO54hX`2A_1vkQ~WRB@_z4`x$*x4j8xv z0&DKvTIV=@05UYI=3GT6Bub!SaeuT zOgdw4Z7yN6S_$z2BsMcOF=96`Wi2#iH)1U`Wo0-mVlZT5Ej4ClVK8PmH#s&jFq3Z# zkqb94H90aeHZ?OhHM0v1N(7Ua4_zZ-GGs7jW??NeIAvxnG&N*nEnzu1FfC&-I5=T7 zG-fe1VmFgG4^0X*R5CF-H8(miGLw%FWFs;&Wi~f4Ff%P;V>L1@G%__gEn#IeGA%GT zIA%03HDP8rHj_6GP6{)@oK2|8rzCWZ5a+DdoMS! z5QHAca_;$l-pTpCbDuFcce@Gj{#_D)eZc^3f3aPw190~I6adlaqA`fxi6O$FF;!~kHOtt{JdN+m$hsJsKEsGft+7poV2GcX+I}PaTofrb( z#?33NEGM-mp#HrI9eqE>UW_aZfTcvNnYJw6#9ui2D5V5odgeL@!(lF7nl-$jUOXvf ze;3E6M3MOgQkep2D^IRaCT->0zg(eADpMdbztHorJGZVimlCn2J@3Y|a|A%zvN(1) z1mHRWl}}q%*MlnMQcuo{r>3bi0>H{|W?Z2HPI{osx%T?$0_dwPgZ2b7?=)czl6i0mg^tr1r zD1NzYck5i$KYVbvdGG!sqgt)uGq>7RoxB#Sn->&5Y7Kw8P5@-rR)@aHwyIV9e*tr7 zy-*L&70Q~DR{ifv5rFkv(I8iBpX&2g|4v|-aQo!CTj*Tp8@2)UCjV;)-Hz>@yG>xw z@G;`pYvBKFVAr;w*6UrGI(SQA(7Y5)D4*$i82idxu00000NkvXXu0mjfV}wXo delta 3255 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 diff --git a/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel.png b/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel.png index 2bb1b3cb4de511619d1d2eb4f5cb72643cba305c..1c4c696eaf5b0892ee6fe44a9484e574e7e4d355 100644 GIT binary patch delta 3319 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 BYN7xD literal 7255 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 diff --git a/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel_top.png b/src/main/resources/assets/create/textures/block/tunnel/brass_tunnel_top.png index 8287ad0d8679fe6d1b770f6e64f87b0e523fc379..3aac741537174f0e0dc82ef84747928c341184d8 100644 GIT binary patch delta 1775 zcmVaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvlIu1M z{O2ih1OniC9IjQlL5`p1CdnR8-n=AI*_0`O0J;H?R_(7pyZQqcYjMh0A6#@!<1*1i zPIw6VzSDadkwv}6gX57@-OOz@>SPC~0F-rLIg{Iv&?G*~J zTnVB~Sd5_ZkAJuNmB3H#-iroCM2Ma?R`82?@IV7b8Q%~CA=Ec-b^?6v>rxM51q|8= zb3lMe=e0z(bmx}L1Q5tsj4Qv$*TEXkEHSWc;S32V(2m5CBkh?zkr56cD8X|U!x;>a zwOrvO8xaR?0`ds9q2p=FvgI|8QUO0!oOo~(C4nqsEPwLHn}8fjR;;nsI_qt)(I(}@ z8E2hy-i?||UcB+vJMVq)(WfB61RGrNA%qxG9)J> zd+4#Ji+{Dv>X-XBSfkAvPo{>PzgWYp_hX^C1dTpp2WMc64S{h#7(hbv;7kWHh6i(l zGaVUKVHr-^!A&Kd6gg068nNwkad$KKW8M_7{uOWh6Xw*Q?tfs8Rg*W~KCo6tCoGe( zRfPjnEvUYRC=v%~snT7je*741pXckprvlOmRMR~ zICT8HqBm$HE2@f3)2@Y4CZ+B2fcll$-G9^Od(?H~vR6ZNN5~jxOJCy=2S8=q6jqFL+WXpNA98WjP zX;*`}q;5`628MEzu+u^zFGQBHYINI9H1iJT#?tM8i^mx!%HoXPAesED2t>=U4JZwH{5pA z>QNMTY?t1r+PQ*zK~a5%v9#@B!@l;pZ@d+PdQ`%O4XB~{?W}lYgG&ebN0T^d;M9-N z`~>C}kEj~;qk@oh60Oo9;&LFkNq_%LaC;&N$LT=WOy^_?A|)qM&}F5&LOn-t69u(^B)hMW&?ZE;9YhyBM0mAz_?k_cms~t%%ITz>-|Z;k#u$LA}_s&-h0vexU^oB;(vq<)n7y^ zUrDDw?mcxwSjNA@e(=8cn!0-S=yS=Q-2;CLcKVrb{n|$WR7dA=I-^y2=hyOZ$yU@dW$0;(ZzX1?<(=>LtXqNy000v@9M??U;0JZ?G+{scW z00009a7bBm000XU000XU0h7BF4}Tj05h6w!lEVN10YXVcK~yNujgql$gD?<=|3*g? zkf_15A|o9UOSe2npQ>-uxv#*+f-=TZm!Jj&K{6<2=x~vtN``nl-{-sk|K+F8k6pYC z@Yt!2Eydg5eHW#fq%b5Q08Cv6fP|R3j)WMM+9b)S)V^$r90VZE9`&Z zdIHcjhNlYYxQ8=iMP3sC3PYxow`Z-*QiJOe0N;1|{(8US?MwsUMq6Jj9mgJkK~ME* zxIW;X)~2fTUApg0*O=(V1wibQbz3@!)~p0TRcY?>23jiS#x2d;_z-)rnJnqPH%xOm zo95teb+`4!^~jq3m(pE2h-B8b1i+?O07j*RbS%xfEzM=unA!9uN!-KP_Z_XxQnxKx z%pB{el(lHxTaItq-^-lRzHHJ=a?)ugd9|Hdp9Y@2FB|KU)nEkE R5Rd=>002ovPDHLkV1kDQXKMfe literal 5398 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 literal 5643 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 delta 1855 zcmV-F2f+BfG`ua4BYy-*dQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+O=0(mg^`C z{AU%j1SIhg%fUR(xjUHUPhqe-anhZ1_ni=1SYT0931ge~@1Jh|!H+4haXxBDAz1ue za)~o4YUeNSXR>ZTuM2xr?)>I#V7LTU=B0+!|L~K&i$obUe}5B5%WBx}8k5=sAmQ0SD?pypvLR`_ox;|pt;bAs9%h`J-ot*lj$p5Pj3dlVNG#4QJORi! z*hn4?IO75x2{wxtx1WzGfskiB*&9^ms>)fTPy82ABuu}7i7)0w@h@QpZ&G8ai&ET=v@nO2pw&k9$cdYLLAJl2=>o zhEgaIgZ)m9DrM@_c3Y?bqT|L9mbtL(K9$Ici&z7l+$hvJN|GuH-3sItc=^Oa`?zTz zu8?BjO6bXiU^M0Dzf(R9)cZ(zBC97?z{Mj80b?jP&VT3yL8u>j1+tMj5`jmBJ{f_O#qkCS z$a}6p$xb9d9OW@K?uoSbWzW-%XBLF;5+p*JBpF&cJlK#w(J68$d-2YDAAI!clg~kd z3qFJp!+&`Ar=u=2BX-X+)44M%+vTsy6e7& z9=rC`^Qjt{DeFUdUo|>Z<6WuIF`la7))IWwgD8_Jm>-6zUD>h?snI(D04 z#q0`=WjIK+g5?Le8UNzCE3-Oww^!D@+wq%$Y9E%jgbnz6!OYK56gvmau9g$g&yoBB z(SJRX1BiKzq-|lZ_28gsE%OdSQrosSRNP!mJ^gba?03sbsVf3@r|=4(xgh);;61Re zE$^4jV+%tpa}S~wzX;HQV6DrH-dJk7PR#<*h3#7+ z&$%o@zv9z;gU~Q%-=pm*<59KfRYgWj`QKO5~TK<5zUVtKOa!b0bA7! ztSciod)O&;^Mfxh}i>#yRh> zz%zqJDltzSBo^~6EVnQ#7%K5JaY#`$$`{fuE1b7DtECES+>^gBkkwX_T&FpND3%aI z93o^?P(%q9!nA6nm`Komq>X>j@yE#}ldA|ujs=vVLUR1ze}C}1TQfH`=_UmtKO0<$*{RtbNh>usL^000JJOGiWij{ueck+fs`tN;K2 z32;bRa{vGf6951U69E94oEQKA00(qQO+^Rh3Kk1CHxB=qMgRZ+yGcYrR5;6HoR*XG zpMe6v!oa}5AgaMfmgd(tJ~1#cPzYGC3I4T-XHb{qXSn(NBZG#N09^d`s)>XR_-lU? z&k$jt&IseLxN!47jDO+P%m3(xVDkb>phg&|GhTT05@$eT81VSx7Ys!PV&XUrAvzEZ z#KajXGJt3=P;7uKKM%z&V8o^P#=|&w^Ju_@)`Ol0 tPI$UTG8`!=3JP2}rO`kjk9FBw28IH`!-sq2t^&0(c)I$ztaD0e0s!^tDC__L diff --git a/src/main/resources/assets/create/textures/block/vault_bottom_connected.png b/src/main/resources/assets/create/textures/block/vault_bottom_connected.png deleted file mode 100644 index 8c9cc78e285ac337e7fd819c0a1924f4b798a1fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)g}^jMgAn5WDa6CjH~Z}ap@O@J(dHIRQ62FfwY z@o>ULez)ULIMZ2*&f#G6|NaYG3@!{;jVs5;GX7qOQ5&?D?Ns)Pxe0tS!RJuc59as1 zE~FQjMJTzuHMm#7WfioskO`JSSUHi;d8(os(xJ2 zi!@>mRsWt|$fsitYJOj&v0!#W$3n{=8j_2jDpaz)Y8e}1Si(Ib#j>CNB1Hq z4Z*x49<)U%%T1^&FPnPhkodjJ3c07*qo IM6N<$f~{-9rT_o{ diff --git a/src/main/resources/assets/create/textures/block/vault_bottom_large_connected.png b/src/main/resources/assets/create/textures/block/vault_bottom_large_connected.png deleted file mode 100644 index 5f08ee07315494c73e6292ae977edc247f5b42a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmV;00($+4P)ZEN~98%hon`=)g5GCSr8cLJ`<|)tPiATh@Za)3v56d2#JddRe=ir&fnjT!{EVO8} zQ0B$q_+!2P{@{!6Qi1r-dj0X>y`Kc)zi_|e1YRdW^MF+rD7?tTh+Ybodzdi&5% zVQ|}7tF6UnP!c}T%`Yo6>{JMEG!u|nu?p2`65xHB<16(Iu`BZ;%nCP@dBIoNd zx8LItKG7s8e)0Pht5&848!%-mPZY(gm# zDNP7|zI5i-D|n+Fvp8OpSVvl;j3QjTa_`AnJ#R5qi33)4S(z$~t+H?Jx{GW6nYma_ zqh%UnAy__XHX$@pxV4sR&C{bj9xh(r1F>#)@4GR*2Vy-Q;k9o*K{?C!p*f?A0)^Cj z`95G5g+X(VvB8`EHybH1LIvT_r+nA^BwT`A4j>bN=9xgDQuejJhftlEO)$zHx|9=5 zD3?y$JPBlUq4Jq0vSS)=808%(YqCZe<-4%=Mr(C$@fkFJBdmnAyoY5m+)jki3+u@L f1n6cVtRw#crvS6z?NvZ}00000NkvXXu0mjf?G6zY diff --git a/src/main/resources/assets/create/textures/block/vault_front.png b/src/main/resources/assets/create/textures/block/vault_front.png deleted file mode 100644 index 17e9186fcd7879cb02f654a023e626fa8896c350..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHVEbxddW?WJgF^MMG0UK~F$I zOg} zpakajPYEt1i16fU0&ovbMZ|buye~kHzft_{9q$VS+pX$YAU zB-^%e-gm~5*q|~@oF}zD2%S^Xf&2Zw+{@wS0iH|1yX@Rba2y3lB?!=*0CZzH5-f?k z%d$+)i(EHr-`9Qb3F9#+q5D(`Oq@V^uHSbY0(NmWbDt3G2Ys;bBY~=du#hJcCG;Qc z0_ecqja1wAmLPKgk_jHgd1_CVPzVn}8VbrMGXf?qz(;%QNxM}Ex0eF>#ae=bv`r-- z-p04vxvs9M0l=s;a$fM2Tm(;eFtJZ;t!dt!2q0_tftk$+T$S6mKqAbR;4pMst?lVT$mBC?BAr|+-Z-=FuC0`xFEh&f}0jof>nNTcIQjMhYue<{0F8e VFTnnXOLhPN002ovPDHLkV1oTuJdXeX diff --git a/src/main/resources/assets/create/textures/block/vault_front_large_connected.png b/src/main/resources/assets/create/textures/block/vault_front_large_connected.png deleted file mode 100644 index d47ae123a75814797c6b4f69dd74c6aa1c61418f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 963 zcmV;!13dhRP)B0BFNKwYjr6wEBFb=UyLW@ zK!6gPAk+o?oCM?vqF_3zFNA3#A`qxTfB^3JUI=`WEbtCo%|tqAJ~At)8@$6wz%;G` z#W(YADj;9q3i)mnfi7B{1soLy7d9}6VbOo0GsH#;wySV0$OFNg!Wp36c0s+u2SKH+ za0+M&FxCMom>C3f70v=WAUNVcFhiM05W?=AAy9Qeca{lUV52gDLM~8=1EF7c0RoK@ z>jd*KNb=e(!i8HVu&9t7Rsyamn7BY7P}N7lRGb7A9l%Kt(_mieYGGIls2(?_0AW*c zyVNZlC&6AB5K~ZSUi-Q2fMS+35jzX^`alUm5lIEjHJA;IPJ&{19K`c#@F!0r%XwJ>?DZwz`@JUWQau#G{WG)%`CP+nZ$>o*c zcp~O}az==g^<9E-kBxEPAQA*=>EOKp#GHRk^2)sNvBK?xlL&Y#c=_Q=n#rW&OBUxr lePVksv~9B(MhXG8{RhqkU^oo$a902T002ovPDHLkV1jSfl@0&^ diff --git a/src/main/resources/assets/create/textures/block/vault_side.png b/src/main/resources/assets/create/textures/block/vault_side.png deleted file mode 100644 index 9e3965bbb07a3fe9599eb0bc85c146724a1a7ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHVEbxddW?}1 zdxWJ32nYn3IUAfh?W}DTw)WoH0I63(arX?1O`TV2b0v$l1Tu=RZ0Kk?bajEzDd&T` g1e6N24RYBT)MF0Q*o|BM+d~3GBzh7D=9BBCLJj!FDWN2BO)pu9VQzbB^VhZ z6c!!1cU}qr0004WQchCK{DDtt-+){di{CTQdaa6fbpV+K9IA{O|sOMoK@Mr}p#Lq`pRoDYew7=&HW zn_dj?Ukvpngxp|G3341lrNo&MU{Zn%OJquru%0m{${Ysv=zt%{c`=kqkpNZh2?CW^ zikz1i8zmMKP^ny^$n#yuF%*LHZ57-|kl{ZG)4}2;P~`g2rX`dk}6YqBZ z%m9-FEncA$FP99$Eh3Oh1Wp*@{mu)Qcy&A=Kat$UY~W9^W8Uw$ZNN(;UU4bFiLI81 zA%o6*JfBw*IGJy097g@y_wSX+GQP;G3;XW5M3-T8x3rTI-KpT30Y$7uW?pgRi%Y=o yhGXn6pVsVFbV*h9=bE#`?;+E0000v% diff --git a/src/main/resources/assets/create/textures/block/vault_side_large_connected.png b/src/main/resources/assets/create/textures/block/vault_side_large_connected.png deleted file mode 100644 index 49f32419c5746dda5492add03a0c08495f0e8e6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 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 Date: Tue, 1 Nov 2022 13:11:28 +0000 Subject: [PATCH 016/122] spit and shine part 4: tech support added scaffolding models and textures continued texture tweaks --- .../block/belt_casing/diagonal_end.json | 53 ++++------- .../block/belt_casing/diagonal_middle.json | 37 ++------ .../block/belt_casing/diagonal_pulley.json | 49 +++------- .../block/belt_casing/diagonal_start.json | 89 +++++++----------- .../block/belt_casing/horizontal_end.json | 39 +++----- .../block/belt_casing/horizontal_middle.json | 33 ++----- .../block/belt_casing/horizontal_pulley.json | 41 +++----- .../block/belt_casing/horizontal_start.json | 41 +++----- .../block/scaffold/block_horizontal_end.json | 30 ++++++ .../scaffold/block_horizontal_middle.json | 28 ++++++ .../scaffold/block_horizontal_single.json | 32 +++++++ .../scaffold/block_horizontal_start.json | 30 ++++++ .../models/block/scaffold/block_vertical.json | 32 +++++++ .../textures/block/belt/belt_casing.png | Bin 3616 -> 3105 bytes .../textures/block/belt/belt_casing_2.png | Bin 846 -> 3265 bytes .../textures/block/belt/belt_casing_3.png | Bin 585 -> 1919 bytes .../block/belt/brass_belt_casing_diagonal.png | Bin 0 -> 3441 bytes .../belt/brass_belt_casing_horizontal.png | Bin 0 -> 797 bytes .../block/belt/brass_belt_casing_sideways.png | Bin 0 -> 1818 bytes .../block/funnel/andesite_funnel_frame.png | Bin 5725 -> 399 bytes .../block/funnel/copper_funnel_frame.png | Bin 0 -> 418 bytes .../block/scaffold/andesite_scaffold.png | Bin 0 -> 660 bytes .../block/scaffold/brass_scaffold.png | Bin 0 -> 520 bytes .../block/scaffold/copper_scaffold.png | Bin 0 -> 550 bytes .../textures/block/tunnel/brass_tunnel.png | Bin 3350 -> 3275 bytes 25 files changed, 269 insertions(+), 265 deletions(-) create mode 100644 src/main/resources/assets/create/models/block/scaffold/block_horizontal_end.json create mode 100644 src/main/resources/assets/create/models/block/scaffold/block_horizontal_middle.json create mode 100644 src/main/resources/assets/create/models/block/scaffold/block_horizontal_single.json create mode 100644 src/main/resources/assets/create/models/block/scaffold/block_horizontal_start.json create mode 100644 src/main/resources/assets/create/models/block/scaffold/block_vertical.json create mode 100644 src/main/resources/assets/create/textures/block/belt/brass_belt_casing_diagonal.png create mode 100644 src/main/resources/assets/create/textures/block/belt/brass_belt_casing_horizontal.png create mode 100644 src/main/resources/assets/create/textures/block/belt/brass_belt_casing_sideways.png create mode 100644 src/main/resources/assets/create/textures/block/funnel/copper_funnel_frame.png create mode 100644 src/main/resources/assets/create/textures/block/scaffold/andesite_scaffold.png create mode 100644 src/main/resources/assets/create/textures/block/scaffold/brass_scaffold.png create mode 100644 src/main/resources/assets/create/textures/block/scaffold/copper_scaffold.png diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json index e1f1fb6a9..8722f1477 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json @@ -2,48 +2,40 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt/belt_casing", + "3": "create:block/belt/brass_belt_casing_horizontal", "5": "create:block/brass_casing_connected", - "6": "create:block/belt/belt_casing_2", - "7": "create:block/belt/belt_casing_3", + "6": "create:block/belt/brass_belt_casing_diagonal", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { + "name": "1", "from": [0, 0, 0], - "to": [16, 11, 10], + "to": [16, 11, 12], "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "faces": { - "north": {"uv": [8, 0, 16, 5.5], "texture": "#7"}, - "east": {"uv": [3, 0, 8, 5.5], "texture": "#3"}, - "west": {"uv": [0, 0, 5, 5.5], "texture": "#3"}, - "up": {"uv": [0, 8, 8, 13], "texture": "#3"}, + "north": {"uv": [8, 10.5, 16, 16], "texture": "#3"}, + "east": {"uv": [2, 0, 8, 5.5], "texture": "#3"}, + "west": {"uv": [0, 0, 6, 5.5], "texture": "#3"}, + "up": {"uv": [0, 8, 8, 14], "texture": "#3"}, "down": {"uv": [2, 0.75, 4, 2], "texture": "#5"} } }, { - "from": [1, 11, -0.01], - "to": [15, 3, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, - "faces": { - "east": {"uv": [0, 0, 5, 4], "rotation": 180, "texture": "#3"}, - "west": {"uv": [3, 0, 8, 4], "rotation": 180, "texture": "#3"}, - "up": {"uv": [12.125, 12.75, 13.875, 14], "texture": "#5"} - } - }, - { + "name": "2", "from": [0, 5, 12], "to": [16, 11, 4], "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "faces": { - "south": {"uv": [8, 6, 16, 9.5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 6, 16, 10], "texture": "#3"} + "south": {"uv": [8, 6.5, 16, 9.5], "texture": "#3"}, + "down": {"uv": [0, 5.5, 8, 9.5], "texture": "#3"} } }, { - "from": [1, 5, 4], - "to": [15, 11, 12], + "name": "3", + "from": [1.1, 5, 4], + "to": [14.9, 11, 12], "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, "faces": { "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, @@ -51,29 +43,18 @@ } }, { - "name": "Top Diagonal", + "name": "4", "from": [-0.1, 2, 11.303], "to": [16.1, 11, 19.328], "rotation": {"angle": 45, "axis": "x", "origin": [39, 8, 8]}, "faces": { - "north": {"uv": [8, 5.5, 16, 10], "texture": "#3"}, + "north": {"uv": [8, 4.5, 16, 9], "texture": "#6"}, "east": {"uv": [11.975, 0, 16, 4.5], "texture": "#6"}, "south": {"uv": [0, 4.5, 8, 9], "texture": "#6"}, "west": {"uv": [0, 0, 4, 4.5], "texture": "#6"}, - "up": {"uv": [8, 5.5, 16, 9.5], "texture": "#3"}, + "up": {"uv": [8, 4.5, 16, 8.5], "texture": "#6"}, "down": {"uv": [6, 0, 8, 1], "texture": "#5"} } - }, - { - "name": "Top Diagonal", - "from": [13.05, 4, 11.303], - "to": [2.95, 11, 19.328], - "rotation": {"angle": 45, "axis": "x", "origin": [39, 8, 8]}, - "faces": { - "east": {"uv": [12, 12, 12.875, 13], "rotation": 270, "texture": "#5"}, - "west": {"uv": [12, 12, 12.875, 13], "rotation": 90, "texture": "#5"}, - "down": {"uv": [6.375, 0, 7.625, 1], "texture": "#5"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json index 3831da8db..39f6306af 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json @@ -2,8 +2,7 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt/belt_casing_2", - "5": "create:block/belt/belt_casing", + "3": "create:block/belt/brass_belt_casing_diagonal", "6": "create:block/brass_casing_connected", "particle": "create:block/brass_casing" }, @@ -15,9 +14,9 @@ "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, - "east": {"uv": [8, 11.5, 13.5, 16], "texture": "#3"}, - "west": {"uv": [2.5, 11.5, 8, 16], "texture": "#3"}, - "up": {"uv": [8, 5.5, 16, 11], "texture": "#5"}, + "east": {"uv": [14, 11.5, 8.5, 16], "texture": "#3"}, + "west": {"uv": [0.5, 11.5, 6, 16], "texture": "#3"}, + "up": {"uv": [8, 4.5, 16, 10], "texture": "#3"}, "down": {"uv": [6, 0, 8, 1.375], "texture": "#6"} } }, @@ -27,34 +26,12 @@ "to": [16.1, 16.43588, 21.55162], "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, "faces": { - "east": {"uv": [2.5, 11.5, 8, 16], "texture": "#3"}, + "east": {"uv": [6, 11.5, 0.5, 16], "texture": "#3"}, "south": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, - "west": {"uv": [8, 11.5, 13.5, 16], "texture": "#3"}, - "up": {"uv": [8, 5.5, 16, 11], "rotation": 180, "texture": "#5"}, + "west": {"uv": [8.5, 11.5, 14, 16], "texture": "#3"}, + "up": {"uv": [8, 4.5, 16, 10], "texture": "#3"}, "down": {"uv": [6, 0.25, 8, 1.625], "texture": "#6"} } - }, - { - "name": "Top Diagonal", - "from": [2.9, 14.16466, 23.51034], - "to": [13.1, 21.16466, 12.19784], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 18.16466, -2.16466]}, - "faces": { - "east": {"uv": [12, 12.375, 12.875, 13.75], "rotation": 270, "texture": "#6"}, - "west": {"uv": [12, 12.375, 12.875, 13.75], "rotation": 90, "texture": "#6"}, - "down": {"uv": [12.25, 12.375, 13.5, 13.75], "texture": "#6"} - } - }, - { - "name": "Top Diagonal", - "from": [2.9, 9.43588, 10.23912], - "to": [13.1, 16.43588, -1.07338], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, - "faces": { - "east": {"uv": [12, 12.25, 12.875, 13.625], "rotation": 270, "texture": "#6"}, - "west": {"uv": [12.125, 12.25, 13, 13.625], "rotation": 90, "texture": "#6"}, - "down": {"uv": [12.375, 12.25, 13.625, 13.625], "texture": "#6"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json index 3952aa129..27ca25189 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json @@ -2,16 +2,16 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt/belt_casing_2", - "5": "create:block/belt/belt_casing", + "3": "create:block/belt/brass_belt_casing_diagonal", "6": "create:block/brass_casing_connected", - "7": "create:block/belt/belt_casing_3", + "7": "create:block/belt/brass_belt_casing_sideways", "8": "create:block/gearbox", + "9": "create:block/belt/brass_belt_casing_horizontal", "particle": "create:block/brass_casing" }, "elements": [ { - "name": "Top Diagonal", + "name": "1", "from": [-0.1, 2, -3.325], "to": [16.1, 11, 7.9875], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, @@ -19,12 +19,12 @@ "north": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, "east": {"uv": [8, 0, 13.5, 4.5], "texture": "#3"}, "west": {"uv": [2.5, 0, 8, 4.5], "texture": "#3"}, - "up": {"uv": [8, 4.5, 16, 10], "texture": "#3"}, + "up": {"uv": [0, 6.5, 8, 12], "texture": "#9"}, "down": {"uv": [6, 0, 8, 1.375], "texture": "#6"} } }, { - "name": "Top Diagonal", + "name": "2", "from": [-0.1, 7.43588, 10.23912], "to": [16.1, 16.43588, 21.55162], "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, @@ -32,23 +32,23 @@ "east": {"uv": [2.5, 0, 8, 4.5], "texture": "#3"}, "south": {"uv": [0, 4.5, 8, 9], "texture": "#3"}, "west": {"uv": [8, 0, 13.5, 4.5], "texture": "#3"}, - "up": {"uv": [8, 4.5, 16, 10], "rotation": 180, "texture": "#3"}, + "up": {"uv": [0, 6.5, 8, 12], "rotation": 180, "texture": "#9"}, "down": {"uv": [6, 0.25, 8, 1.625], "texture": "#6"} } }, { - "name": "Top Diagonal", + "name": "3", "from": [-0.1, 11, 3.85], "to": [16.1, 5, 12.15], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [8, 4.5, 16, 7.5], "texture": "#3"}, - "south": {"uv": [8, 4.5, 16, 7.5], "texture": "#3"}, - "up": {"uv": [8, 5.5, 16, 9.5], "texture": "#5"} + "north": {"uv": [8, 6.5, 16, 9.5], "rotation": 180, "texture": "#9"}, + "south": {"uv": [8, 6.5, 16, 9.5], "rotation": 180, "texture": "#9"}, + "up": {"uv": [0, 5.5, 8, 9.5], "texture": "#9"} } }, { - "name": "Top Diagonal", + "name": "4", "from": [0.9, 5, 3.85], "to": [15.1, 11, 12.15], "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, @@ -58,32 +58,11 @@ } }, { - "name": "Top Diagonal", - "from": [2.9, 9.43588, 10.23912], - "to": [13.1, 16.43588, -1.07338], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 13.43588, 2.56412]}, - "faces": { - "east": {"uv": [11.875, 12.375, 12.75, 13.75], "rotation": 270, "texture": "#6"}, - "west": {"uv": [12.125, 12.375, 13, 13.75], "rotation": 90, "texture": "#6"}, - "down": {"uv": [12.375, 12.375, 13.625, 13.75], "texture": "#6"} - } - }, - { - "name": "Top Diagonal", - "from": [2.9, 14.16466, 23.51034], - "to": [13.1, 21.16466, 12.19784], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 18.16466, -2.16466]}, - "faces": { - "east": {"uv": [12, 12.5, 12.875, 13.875], "rotation": 270, "texture": "#6"}, - "west": {"uv": [12, 12.5, 12.875, 13.875], "rotation": 90, "texture": "#6"}, - "down": {"uv": [12.375, 12.5, 13.625, 13.875], "texture": "#6"} - } - }, - { + "name": "5", "from": [0, 0, 0], "to": [16, 8, 8], "faces": { - "north": {"uv": [6, 0.25, 8, 1.25], "texture": "#6"}, + "north": {"uv": [6, 0.125, 8, 1.125], "rotation": 180, "texture": "#6"}, "east": {"uv": [4, 0, 8, 4], "texture": "#7"}, "west": {"uv": [0, 0, 4, 4], "texture": "#7"}, "down": {"uv": [6, 0, 8, 1], "texture": "#6"} diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json index d28da5434..c07da2016 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json +++ b/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json @@ -2,80 +2,57 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt/belt_casing", + "4": "create:block/belt/brass_belt_casing_horizontal", "5": "create:block/brass_casing_connected", - "6": "create:block/belt/belt_casing_2", - "7": "create:block/belt/belt_casing_3", + "6": "create:block/belt/brass_belt_casing_diagonal", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { - "from": [0, 0, 0], - "to": [16, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, - "faces": { - "north": {"uv": [6, 0, 8, 1.375], "texture": "#5"}, - "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "south": {"uv": [8, 0, 16, 5.5], "texture": "#7"}, - "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, - "down": {"uv": [4, 0, 6, 2], "texture": "#5"} - } - }, - { - "from": [1, 11, 0], - "to": [15, 3, 16.01], - "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, - "faces": { - "east": {"uv": [0, 0, 8, 4], "rotation": 180, "texture": "#3"}, - "west": {"uv": [0, 0, 8, 4], "rotation": 180, "texture": "#3"}, - "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} - } - }, - { - "from": [0, 5, 12], - "to": [16, 11, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, - "faces": { - "north": {"uv": [8, 5.5, 16, 8.5], "texture": "#3"}, - "south": {"uv": [8, 5.5, 16, 8.5], "texture": "#3"}, - "down": {"uv": [8, 5.5, 16, 10], "texture": "#3"} - } - }, - { - "from": [1, 5, 4], - "to": [15, 11, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, - "faces": { - "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, - "west": {"uv": [4, 5, 12, 11], "texture": "#8"}, - "up": {"uv": [8.5, 4.5, 15.5, 8], "texture": "#6"} - } - }, - { - "name": "Top Diagonal", + "name": "1", "from": [-0.1, 2, -3.325], "to": [16.1, 11, 4.7], "rotation": {"angle": 45, "axis": "x", "origin": [-22, 8, 8]}, "faces": { "north": {"uv": [0, 4.5, 8, 9], "texture": "#6"}, "east": {"uv": [0, 0, 4, 4.5], "texture": "#6"}, - "south": {"uv": [8, 5.5, 16, 10], "texture": "#3"}, + "south": {"uv": [0, 5.5, 8, 10], "rotation": 180, "texture": "#4"}, "west": {"uv": [12, 0, 16, 4.5], "texture": "#6"}, - "up": {"uv": [8, 5.5, 16, 9.5], "rotation": 180, "texture": "#3"}, + "up": {"uv": [0, 6, 8, 10], "texture": "#4"}, "down": {"uv": [6, 0, 8, 1], "texture": "#5"} } }, { - "name": "Top Diagonal", - "from": [13.05, 4, -3.325], - "to": [2.95, 11, 4.7], - "rotation": {"angle": 45, "axis": "x", "origin": [24, 8, 8]}, + "name": "2", + "from": [0, 0, 0], + "to": [16, 11, 16], "faces": { - "east": {"uv": [12.125, 12.25, 13, 13.25], "rotation": 270, "texture": "#5"}, - "west": {"uv": [12, 12.25, 12.875, 13.25], "rotation": 90, "texture": "#5"}, - "down": {"uv": [6.375, 0.25, 7.625, 1.25], "texture": "#5"} + "north": {"uv": [6, 0, 8, 1.375], "texture": "#5"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#4"}, + "south": {"uv": [8, 10.5, 16, 16], "texture": "#4"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#4"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#4"}, + "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#5"} + } + }, + { + "name": "3", + "from": [0, 5, 12], + "to": [16, 11, 4], + "faces": { + "north": {"uv": [8, 6.5, 16, 9.5], "texture": "#4"}, + "south": {"uv": [8, 6.5, 16, 9.5], "texture": "#4"}, + "down": {"uv": [0, 5.5, 8, 9.5], "texture": "#4"} + } + }, + { + "name": "4", + "from": [1, 5, 4], + "to": [15, 11, 12], + "faces": { + "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, + "west": {"uv": [4, 5, 12, 11], "texture": "#8"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json index 6d0dbfb51..0911bb362 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json @@ -2,58 +2,43 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt/belt_casing", - "4": "create:block/belt/belt_casing_3", "5": "create:block/brass_casing_connected", + "6": "create:block/belt/brass_belt_casing_horizontal", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { + "name": "1", "from": [0, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, - "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "south": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, - "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, + "north": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#6"}, + "south": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#6"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#6"}, "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#5"} } }, { + "name": "2", "from": [0, 5, 12], "to": [16, 11, 4], "faces": { - "north": {"uv": [8, 13, 16, 16], "rotation": 180, "texture": "#3"}, - "south": {"uv": [8, 13, 16, 16], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 8, 16, 12], "texture": "#3"} + "north": {"uv": [8, 6.5, 16, 9.5], "texture": "#6"}, + "south": {"uv": [8, 6.5, 16, 9.5], "texture": "#6"}, + "down": {"uv": [0, 5.5, 8, 9.5], "texture": "#6"} } }, { + "name": "3", "from": [1, 5, 4], "to": [15, 11, 12], "faces": { "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, "west": {"uv": [4, 5, 12, 11], "texture": "#8"} } - }, - { - "from": [3, 5, 15.99], - "to": [13, 11, -0.03], - "faces": { - "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"}, - "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"} - } - }, - { - "from": [1, 11, -0.01], - "to": [15, 3, 16.01], - "faces": { - "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, - "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, - "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json index c9b86e512..1fd369885 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json @@ -2,39 +2,22 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/belt/belt_casing", "4": "create:block/brass_casing_connected", - "5": "create:block/belt/belt_casing_3", + "6": "create:block/belt/brass_belt_casing_horizontal", "particle": "create:block/brass_casing" }, "elements": [ { + "name": "1", "from": [0, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [8, 0, 16, 5.5], "texture": "#5"}, - "east": {"uv": [8, 0, 16, 5.5], "texture": "#2"}, - "south": {"uv": [8, 0, 16, 5.5], "texture": "#5"}, - "west": {"uv": [8, 0, 16, 5.5], "texture": "#2"}, - "up": {"uv": [8, 6, 16, 14], "texture": "#2"}, - "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#4"} - } - }, - { - "from": [1, 11, -0.01], - "to": [15, 3, 16.01], - "faces": { - "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#2"}, - "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#2"}, - "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#4"} - } - }, - { - "from": [3, 5, 15.99], - "to": [13, 11, -0.03], - "faces": { - "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#2"}, - "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#2"} + "north": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "east": {"uv": [8, 0, 16, 5.5], "texture": "#6"}, + "south": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "west": {"uv": [8, 0, 16, 5.5], "texture": "#6"}, + "up": {"uv": [0, 5.5, 8, 9.5], "texture": "#6"}, + "down": {"uv": [6, 0, 8, 2], "rotation": 180, "texture": "#4"} } } ] diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json index 774cacce3..e4654ff4f 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json @@ -2,58 +2,43 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt/belt_casing", - "4": "create:block/belt/belt_casing_3", "5": "create:block/brass_casing_connected", + "6": "create:block/belt/brass_belt_casing_horizontal", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { + "name": "1", "from": [0, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, - "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "south": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, - "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, - "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#5"} + "north": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#6"}, + "south": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#6"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#6"}, + "down": {"uv": [6, 0, 8, 2], "rotation": 180, "texture": "#5"} } }, { + "name": "2", "from": [0, 5, 12], "to": [16, 11, 4], "faces": { - "north": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, - "south": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 6, 16, 10], "texture": "#3"} + "north": {"uv": [8, 6.5, 16, 9.5], "texture": "#6"}, + "south": {"uv": [8, 6.5, 16, 9.5], "texture": "#6"}, + "down": {"uv": [0, 5.5, 8, 9.5], "texture": "#6"} } }, { + "name": "3", "from": [1, 5, 4], "to": [15, 11, 12], "faces": { "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, "west": {"uv": [4, 5, 12, 11], "texture": "#8"} } - }, - { - "from": [3, 5, 15.99], - "to": [13, 11, -0.03], - "faces": { - "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"}, - "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"} - } - }, - { - "from": [1, 11, -0.01], - "to": [15, 3, 16.01], - "faces": { - "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, - "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, - "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json index 774cacce3..a00cdfe53 100644 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json +++ b/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json @@ -2,58 +2,43 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "3": "create:block/belt/belt_casing", - "4": "create:block/belt/belt_casing_3", "5": "create:block/brass_casing_connected", + "6": "create:block/belt/brass_belt_casing_horizontal", "8": "create:block/gearbox", "particle": "create:block/brass_casing" }, "elements": [ { + "name": "1", "from": [0, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, - "east": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "south": {"uv": [8, 0, 16, 5.5], "texture": "#4"}, - "west": {"uv": [0, 0, 8, 5.5], "texture": "#3"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#3"}, - "down": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#5"} + "north": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "east": {"uv": [0, 0, 8, 5.5], "texture": "#6"}, + "south": {"uv": [8, 10.5, 16, 16], "texture": "#6"}, + "west": {"uv": [0, 0, 8, 5.5], "texture": "#6"}, + "up": {"uv": [0, 8, 8, 16], "texture": "#6"}, + "down": {"uv": [4, 0, 6, 2], "rotation": 180, "texture": "#5"} } }, { + "name": "2", "from": [0, 5, 12], "to": [16, 11, 4], "faces": { - "north": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, - "south": {"uv": [8, 6, 16, 9], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 6, 16, 10], "texture": "#3"} + "north": {"uv": [8, 6.5, 16, 9.5], "texture": "#6"}, + "south": {"uv": [8, 6.5, 16, 9.5], "texture": "#6"}, + "down": {"uv": [0, 5.5, 8, 9.5], "texture": "#6"} } }, { + "name": "3", "from": [1, 5, 4], "to": [15, 11, 12], "faces": { "east": {"uv": [4, 5, 12, 11], "texture": "#8"}, "west": {"uv": [4, 5, 12, 11], "texture": "#8"} } - }, - { - "from": [3, 5, 15.99], - "to": [13, 11, -0.03], - "faces": { - "east": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"}, - "west": {"uv": [8, 1.5, 16, 4.5], "texture": "#3"} - } - }, - { - "from": [1, 11, -0.01], - "to": [15, 3, 16.01], - "faces": { - "east": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, - "west": {"uv": [8, 0, 16, 4], "rotation": 180, "texture": "#3"}, - "up": {"uv": [12.125, 12, 13.875, 14], "texture": "#5"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/scaffold/block_horizontal_end.json b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_end.json new file mode 100644 index 000000000..60cbff8af --- /dev/null +++ b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_end.json @@ -0,0 +1,30 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "side": "create:block/scaffold/brass_scaffold", + "top": "create:block/brass_casing_connected", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "from": [0, 8, 0], + "to": [16, 16, 16], + "faces": { + "east": {"uv": [16, 8, 8, 12], "texture": "#side"}, + "south": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "west": {"uv": [8, 8, 16, 12], "texture": "#side"}, + "up": {"uv": [2, 0, 4, 2], "texture": "#top"} + } + }, + { + "from": [16, 8, 0], + "to": [0, 16, 16], + "faces": { + "east": {"uv": [16, 8, 8, 12], "texture": "#side"}, + "south": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "west": {"uv": [8, 8, 16, 12], "texture": "#side"}, + "up": {"uv": [2, 0, 4, 2], "texture": "#top"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/scaffold/block_horizontal_middle.json b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_middle.json new file mode 100644 index 000000000..3fb72922e --- /dev/null +++ b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_middle.json @@ -0,0 +1,28 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "side": "create:block/scaffold/brass_scaffold", + "top": "create:block/brass_casing_connected", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "from": [0, 8, 0], + "to": [16, 16, 16], + "faces": { + "east": {"uv": [8, 8, 0, 12], "texture": "#side"}, + "west": {"uv": [0, 8, 8, 12], "texture": "#side"}, + "up": {"uv": [6, 0, 8, 2], "texture": "#top"} + } + }, + { + "from": [16, 8, 0], + "to": [0, 16, 16], + "faces": { + "east": {"uv": [8, 8, 0, 12], "texture": "#side"}, + "west": {"uv": [0, 8, 8, 12], "texture": "#side"}, + "up": {"uv": [6, 0, 8, 2], "texture": "#top"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/scaffold/block_horizontal_single.json b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_single.json new file mode 100644 index 000000000..485a62b67 --- /dev/null +++ b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_single.json @@ -0,0 +1,32 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "side": "create:block/scaffold/brass_scaffold", + "top": "create:block/brass_casing_connected", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "from": [0, 8, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "east": {"uv": [8, 0, 0, 4], "texture": "#side"}, + "south": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "west": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#top"} + } + }, + { + "from": [16, 8, 0], + "to": [0, 16, 16], + "faces": { + "north": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "east": {"uv": [8, 0, 0, 4], "texture": "#side"}, + "south": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "west": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#top"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/scaffold/block_horizontal_start.json b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_start.json new file mode 100644 index 000000000..e99e64d0a --- /dev/null +++ b/src/main/resources/assets/create/models/block/scaffold/block_horizontal_start.json @@ -0,0 +1,30 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "side": "create:block/scaffold/brass_scaffold", + "top": "create:block/brass_casing_connected", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "from": [0, 8, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "east": {"uv": [16, 0, 8, 4], "texture": "#side"}, + "west": {"uv": [8, 0, 16, 4], "texture": "#side"}, + "up": {"uv": [4, 0, 6, 2], "texture": "#top"} + } + }, + { + "from": [16, 8, 0], + "to": [0, 16, 16], + "faces": { + "north": {"uv": [0, 0, 8, 4], "texture": "#side"}, + "east": {"uv": [16, 0, 8, 4], "texture": "#side"}, + "west": {"uv": [8, 0, 16, 4], "texture": "#side"}, + "up": {"uv": [4, 0, 6, 2], "texture": "#top"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/scaffold/block_vertical.json b/src/main/resources/assets/create/models/block/scaffold/block_vertical.json new file mode 100644 index 000000000..9e826d9ca --- /dev/null +++ b/src/main/resources/assets/create/models/block/scaffold/block_vertical.json @@ -0,0 +1,32 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "side": "create:block/scaffold/brass_scaffold", + "top": "create:block/funnel/brass_funnel_frame", + "particle": "create:block/brass_casing" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "east": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "south": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "west": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#top"} + } + }, + { + "from": [0, 0, 16], + "to": [16, 16, 0], + "faces": { + "north": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "east": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "south": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "west": {"uv": [0, 0, 8, 8], "texture": "#side"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#top"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/belt/belt_casing.png b/src/main/resources/assets/create/textures/block/belt/belt_casing.png index 26bfbb10e1187f9faf8143bee8f170d0a6da3c7e..3048721d54cc6dcbb460c1e1fe22a979345fdb24 100644 GIT binary patch delta 3038 zcmV<43nBEN9HAJHBYz1DdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+O?Qzk|Vnf zg#YstJ_0vzIS$td-@wQB2Ubby>1}%E*{YCO3yTDiKqe@&{`2o`{>3NQY)zD0QccP7 zi8WT=I4Sn^S$BKgb2gse$H(2j&V2g7(+1jb-OTZR8t(g#{(tG&GSDXvoVJg4z* zC(iA@@2&sEqC9Q4Z$IVr-Fue3*R{G96K+V?qOK{-V;DLzNDSw-#F6<5=lL9!qu6GL zi+0+j?}rcPUJ2P(KY|S|L_OU0In*#i2|f(J zLI}|W|Fp%Od4KDfZ@9wD)6vyC26Mdf?O}e`;U~x5!{Q_7SiQS_g8P5=b@3GEeM4zxkdpD2mUEg0hh5ZL5` zxa4g1K06nKF96iA+=u8p2sjZxG1A8n64(^th`D(uyMNQyi@)xZD&Qj_g$y<|G{A~c zh@Tt_G1MeT6pbaL*dmDt$h(ksid6ZE{n|_8Fr_40-EVItG+#;0B zic3~nd4H8vSKGwe4m)nyY3E&b-R+6mjp~Qv4^VSAYW^Ul{qhqv?&homogtj^j3{Ox z=A#4gtOyX$UNN)9#po3|#mrVuR*1()QEaBO&A0@FaXByBJ+XTs_hZ})zWyC<{wK&8 zh3A7tvkCmQrmUaq%;AY=k3BwEv=Q|G$(6? z2ykuYYWr*^SLH_xY(t!cEn}}$8@BEHX3R5(-J87!=q`%8`W5%=W`5Z3x82N#enTCY zDu3oJZYgQEr0Ccx%L=~hGD4ZVhaEz0tY)LH#T>^ayCIt6L|}Q>Zla>E+||Fn58FCn z0GZ)Ix2k}4#5yA#fArpKSw!rZ&G$$|gsi9| zE7{M7rgPToSgmMYP8XXQAr0T>PRD3%OMiELr@T_yF|@kv?A&&m3Ctuve4 z%f%6&_;zd}F)Vw|%Z{xxmSE1P*wu-cL2^w`{;>dGx~<*Msa6?&0