Blocks of Cogs

- Slightly tweaked cogwheel models
- Added Encased Cogwheels and Encased Large Cogwheels
This commit is contained in:
simibubi 2021-11-10 02:41:49 +01:00
parent e8cddfdfea
commit 91e03de96b
71 changed files with 1793 additions and 301 deletions

View File

@ -13,6 +13,8 @@ da63a8be3191d6d72afef6c79e3aea3f607631f9 assets/create/blockstates/andesite_bric
97adf53a7cb99d7652fb39adc957e9e34cbaca47 assets/create/blockstates/andesite_cobblestone_slab.json
96b5284693da168ab8e0809d86515b5f1a7e763f assets/create/blockstates/andesite_cobblestone_stairs.json
a92c395c57209141d4cf78ad62facbaf3878a120 assets/create/blockstates/andesite_cobblestone_wall.json
b657c1b88620a6baf98a70f43d74e8b67edfa0e5 assets/create/blockstates/andesite_encased_cogwheel.json
fa2c7368f738ada9bd0e05c3c61b096e6dce61cc assets/create/blockstates/andesite_encased_large_cogwheel.json
9639b901ffdd2ecccab5575c5c9e6c7b5c901e02 assets/create/blockstates/andesite_encased_shaft.json
ca9a629472625abf741f02b94ce4578292fb14a7 assets/create/blockstates/andesite_funnel.json
398922758a6219544e5b85c91c9cf8a543b437e5 assets/create/blockstates/andesite_pillar.json
@ -35,6 +37,8 @@ dea175335c5db0abe758cd208dc984c22506a176 assets/create/blockstates/blue_toolbox.
ee1299a15fca849eb42bf81507f85a54c167bbfe assets/create/blockstates/brass_belt_funnel.json
8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json
b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json
5ae1af0842f3c5954cb40f232f642268d4fd6f08 assets/create/blockstates/brass_encased_cogwheel.json
9d74bfe4e343fec771197b4d575cccdbc7ec0fba assets/create/blockstates/brass_encased_large_cogwheel.json
288bad07593a8a2c8efaf44bba0ffb0011d36cd3 assets/create/blockstates/brass_encased_shaft.json
adfbd6cc5e44a0f431180aedbe65a19428299d8e assets/create/blockstates/brass_funnel.json
672eedcd3520c6d39603449165a23be9c612c620 assets/create/blockstates/brass_tunnel.json
@ -439,20 +443,20 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
1e39bdca154552acc83fe98a110c02fd06638c01 assets/create/lang/en_ud.json
d9e8e6dc6859a714ecc72ef798db566a46cda77c assets/create/lang/en_us.json
7e200ff83aafe896b1fbe708ab20a726a85807e8 assets/create/lang/unfinished/de_de.json
2b125053c9de03b5faeac24e08c02aac03d3f552 assets/create/lang/unfinished/es_es.json
66f04487d7d22a80ca76881ecb36cba080f1d96e assets/create/lang/unfinished/fr_fr.json
f82aa35e79729d273a92ab1bca2130714ea54cd4 assets/create/lang/unfinished/it_it.json
1d7c7ac3b5ab8ac8add7daf2d44433d8acc7e1d1 assets/create/lang/unfinished/ja_jp.json
c815a0036f7390a4b5ae509a8c565fa23a2216ad assets/create/lang/unfinished/ko_kr.json
462b591336337b89dcf57c371a87e58dbe52083f assets/create/lang/unfinished/nl_nl.json
b5f4311465343c8b1deda440db1d4f64676560b9 assets/create/lang/unfinished/pl_pl.json
794ad4ae225ec6f999b6c7d75f488b3bcaa77528 assets/create/lang/unfinished/pt_br.json
5cf94714252bdf8ca30bcfb25d1c91ef9edc79c2 assets/create/lang/unfinished/ru_ru.json
5900ce619dbe682a52ba9bf23b1b5bae5ba7a9d0 assets/create/lang/unfinished/zh_cn.json
b1d760c5782865bf1178544b48a65d7342ec3675 assets/create/lang/unfinished/zh_tw.json
fbbed20d6dedfde8c78d5d62848d98cb510d8dd4 assets/create/lang/en_ud.json
6b44f48cf4d1533cb01ddf82a38a519536822c11 assets/create/lang/en_us.json
c5a66fe2d67dc993ca9141eed8dba846736d8196 assets/create/lang/unfinished/de_de.json
d7bb5f4cfb4823339cd724fdde5c90e19dd7d27c assets/create/lang/unfinished/es_es.json
2937455238cf3938868cb29f214d8cc6fde3a177 assets/create/lang/unfinished/fr_fr.json
b634af1f37a60ac3399b38088859ddc455003eab assets/create/lang/unfinished/it_it.json
d6d614579c94e24471798058b51a827e4afb01b7 assets/create/lang/unfinished/ja_jp.json
f582da6fd78221a03c40978a799e29239ada6660 assets/create/lang/unfinished/ko_kr.json
25ca96301989075b16728c647397b46342a5ac28 assets/create/lang/unfinished/nl_nl.json
b757c697a8ffb16e6ef88c787a031ad2291ede4b assets/create/lang/unfinished/pl_pl.json
0c765991101a752eed7f80ab68e662df82e209b5 assets/create/lang/unfinished/pt_br.json
f3b9816718a30fea39ed34c133dd2c55e5a3b00b assets/create/lang/unfinished/ru_ru.json
59f45830446bb9e544b43f76a33ca7304d9aceed assets/create/lang/unfinished/zh_cn.json
dedec8adbbf24bd0152725441ec397e615fd1fc1 assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -496,6 +500,8 @@ ce05c7fe01f1d491359f4db7914d9dfe44146c90 assets/create/models/block/andesite_bri
ea94d40df307d5792934bc532fc2d24d50efe756 assets/create/models/block/andesite_cobblestone_wall_post.json
aa5b45c6c657436bd38621344f6728d44ea974ad assets/create/models/block/andesite_cobblestone_wall_side.json
7c0e71f479aeef7bf02f0fb76c4333fa2227b83e assets/create/models/block/andesite_cobblestone_wall_side_tall.json
a239719fd2b985b95e686bbd76acf04a6a08b714 assets/create/models/block/andesite_encased_cogwheel.json
d401506fda2771ac5696d65b747a5a570a003ad3 assets/create/models/block/andesite_encased_large_cogwheel.json
8d4e4a7c6ad6d45c7aa7ca3105a025511571ff26 assets/create/models/block/andesite_funnel_horizontal_pull.json
9841d6a09a09bf4d5d6a39bdc4904d86b3a825f8 assets/create/models/block/andesite_funnel_horizontal_pull_powered.json
86d5df6e365d9b2e9682f0839f61058360828ba2 assets/create/models/block/andesite_funnel_horizontal_push.json
@ -548,6 +554,8 @@ dfc6250e28e12ff193a45891978ec50c406fc0c2 assets/create/models/block/brass_belt_f
97410a12b7c1461f88fb633f26ff566a0636b627 assets/create/models/block/brass_belt_funnel__retracted.json
5adb8b446817eee3a31971d708320c7104d6bbd8 assets/create/models/block/brass_block.json
2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json
8cb0039684377c27a7fe20bdcacf24f871221478 assets/create/models/block/brass_encased_cogwheel.json
7ab46e52da9ef474f38e5b9eefbed9ba9dc53b78 assets/create/models/block/brass_encased_large_cogwheel.json
f7fd1f49857eca94e4135e65c85127510d666e4f assets/create/models/block/brass_funnel_horizontal_pull.json
45a23298ad03fd3b5dc2757dcd7edc18b8cce222 assets/create/models/block/brass_funnel_horizontal_pull_powered.json
a9fc7210d44b47202438668f11b31099e82c9ebd assets/create/models/block/brass_funnel_horizontal_push.json
@ -1284,6 +1292,8 @@ d283f86cd05ed378efd82ce46cf49bc83783069b assets/create/models/item/andesite_bric
1ceb0e49f2c46f1d5414d5fd6edfc2bdd3afa6f7 assets/create/models/item/andesite_cobblestone_slab.json
b0f664dd6de3d0ee9afcb6223fbcd53b97fa0d65 assets/create/models/item/andesite_cobblestone_stairs.json
8861d656eb6f61320b4d80eb079105705c762079 assets/create/models/item/andesite_cobblestone_wall.json
c8c65b126c2ff1284acedc69a2470a551431bd24 assets/create/models/item/andesite_encased_cogwheel.json
03122ac6e0823ebea9844f4d87fb73440f9e35c4 assets/create/models/item/andesite_encased_large_cogwheel.json
bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_encased_shaft.json
a3866ea9f44e80b64989f2b5f8a9f344da959c87 assets/create/models/item/andesite_funnel.json
75b8b00c2418b9660d35a7fabd0774925cf1c02f assets/create/models/item/andesite_pillar.json
@ -1304,6 +1314,8 @@ c637be1586260cf91e6da57c71c33f4515008227 assets/create/models/item/blue_toolbox.
bec96ebf3369d3cffa9bb1b8bf9f2a5cd5d0ef96 assets/create/models/item/blue_valve_handle.json
17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json
f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json
099179a466a2f370dd2c4fea0d841517fa3a558b assets/create/models/item/brass_encased_cogwheel.json
6e60b5939747835b2247cbc4907d633b017abc79 assets/create/models/item/brass_encased_large_cogwheel.json
c723011e09203821b6b59cff9de22454c5e4395a assets/create/models/item/brass_encased_shaft.json
12781f22d9b91df903d38bc55c4fe9f75dba8867 assets/create/models/item/brass_funnel.json
965f3f992fde899719506fd584f3fbbbf69af93c assets/create/models/item/brass_hand.json
@ -1741,7 +1753,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
58880e397902f8ca5b3b59ed4423e626109ddc4c assets/create/sounds.json
5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
613e64b44bed959da899fdd54c1cacb227fb33f2 data/create/advancements/andesite_alloy.json
81885c6bfb85792c88aaa7c9b70f58832945d31f data/create/advancements/andesite_casing.json
83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json
@ -2491,6 +2503,8 @@ f2a65149c02a3077f7fb594cc05917e1a5ee9144 data/create/loot_tables/blocks/andesite
bd00f2d80d80e0ca0e2af43ba969648175c309b0 data/create/loot_tables/blocks/andesite_cobblestone_slab.json
854e348e18862bbd177f373288b9ffce8f0b1316 data/create/loot_tables/blocks/andesite_cobblestone_stairs.json
cc954daff893576280abb6c243f1c1a5ddd1c1b0 data/create/loot_tables/blocks/andesite_cobblestone_wall.json
5c65653d6b806650bbef5330778eb4b4f92c1cdd data/create/loot_tables/blocks/andesite_encased_cogwheel.json
7935444e5cef99d58c2dc26d72f234732b6b5632 data/create/loot_tables/blocks/andesite_encased_large_cogwheel.json
185094cb127cd72a31173a53fdd80592747d3b32 data/create/loot_tables/blocks/andesite_encased_shaft.json
d9ca3622cca3b9515133257610aa3b8f6941cd61 data/create/loot_tables/blocks/andesite_funnel.json
8917bac21dba4040013731f142a51a012411469b data/create/loot_tables/blocks/andesite_pillar.json
@ -2513,6 +2527,8 @@ f6e1a4c33cd44d25b9af9509177cce8f735fb910 data/create/loot_tables/blocks/blue_val
092f12d362fab918511350de65f74e5b49f40aa8 data/create/loot_tables/blocks/brass_belt_funnel.json
55930a4ba12c077c616f46fc6aa152d16f0ec889 data/create/loot_tables/blocks/brass_block.json
6be71963a401c7bf1cf4431d33ca42f9d29ff543 data/create/loot_tables/blocks/brass_casing.json
5c65653d6b806650bbef5330778eb4b4f92c1cdd data/create/loot_tables/blocks/brass_encased_cogwheel.json
7935444e5cef99d58c2dc26d72f234732b6b5632 data/create/loot_tables/blocks/brass_encased_large_cogwheel.json
185094cb127cd72a31173a53fdd80592747d3b32 data/create/loot_tables/blocks/brass_encased_shaft.json
092f12d362fab918511350de65f74e5b49f40aa8 data/create/loot_tables/blocks/brass_funnel.json
8b1598dc5d4894d1543d94d2118d229505942b90 data/create/loot_tables/blocks/brass_tunnel.json
@ -3861,8 +3877,8 @@ f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/co
2072c51afc5bbc6c9d64fd086803193d8a3c40de data/minecraft/tags/blocks/base_stone_overworld.json
508730d3822c54d355329bf6a33d58071653afad data/minecraft/tags/blocks/beacon_base_blocks.json
69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json
f47cf9ce96ca87d559a38e718c633a9eb68b18e8 data/minecraft/tags/blocks/mineable/axe.json
f0ba598ef6119fdb403b50139ac9b4bc08360483 data/minecraft/tags/blocks/mineable/pickaxe.json
492323734dfc7824d751b0b4afeaaa65ed205d65 data/minecraft/tags/blocks/mineable/axe.json
cc2a55f4113093544d519f3618469acae5d671b3 data/minecraft/tags/blocks/mineable/pickaxe.json
f937a7166c62cd33927297d47f1c338c507c6989 data/minecraft/tags/blocks/needs_iron_tool.json
6bcabbc1c0479caa80a0ebc676bb34ce0052efb0 data/minecraft/tags/blocks/rails.json
29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/blocks/slabs.json

View File

@ -0,0 +1,17 @@
{
"variants": {
"axis=x": {
"model": "create:block/andesite_encased_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"model": "create:block/andesite_encased_cogwheel"
},
"axis=z": {
"model": "create:block/andesite_encased_cogwheel",
"x": 90,
"y": 180
}
}
}

View File

@ -0,0 +1,17 @@
{
"variants": {
"axis=x": {
"model": "create:block/andesite_encased_large_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"model": "create:block/andesite_encased_large_cogwheel"
},
"axis=z": {
"model": "create:block/andesite_encased_large_cogwheel",
"x": 90,
"y": 180
}
}
}

View File

@ -0,0 +1,17 @@
{
"variants": {
"axis=x": {
"model": "create:block/brass_encased_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"model": "create:block/brass_encased_cogwheel"
},
"axis=z": {
"model": "create:block/brass_encased_cogwheel",
"x": 90,
"y": 180
}
}
}

View File

@ -0,0 +1,17 @@
{
"variants": {
"axis=x": {
"model": "create:block/brass_encased_large_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"model": "create:block/brass_encased_large_cogwheel"
},
"axis=z": {
"model": "create:block/brass_encased_large_cogwheel",
"x": 90,
"y": 180
}
}
}

View File

@ -14,6 +14,8 @@
"block.create.andesite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"block.create.andesite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"block.create.andesite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"block.create.andesite_encased_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"block.create.andesite_encased_large_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 \u01DDb\u0279\u0250\uA780 p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"block.create.andesite_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"block.create.andesite_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287\u0131s\u01DDpu\u2C6F",
"block.create.andesite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131s\u01DDpu\u2C6F",
@ -36,6 +38,8 @@
"block.create.brass_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA ss\u0250\u0279\u15FA",
"block.create.brass_block": "ss\u0250\u0279\u15FA \u025Fo \u029E\u0254o\u05DF\u15FA",
"block.create.brass_casing": "bu\u0131s\u0250\u0186 ss\u0250\u0279\u15FA",
"block.create.brass_encased_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA",
"block.create.brass_encased_large_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 \u01DDb\u0279\u0250\uA780 p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA",
"block.create.brass_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA",
"block.create.brass_funnel": "\u05DF\u01DDuun\u2132 ss\u0250\u0279\u15FA",
"block.create.brass_tunnel": "\u05DF\u01DDuun\u27D8 ss\u0250\u0279\u15FA",

View File

@ -17,6 +17,8 @@
"block.create.andesite_cobblestone_slab": "Andesite Cobblestone Slab",
"block.create.andesite_cobblestone_stairs": "Andesite Cobblestone Stairs",
"block.create.andesite_cobblestone_wall": "Andesite Cobblestone Wall",
"block.create.andesite_encased_cogwheel": "Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "Andesite Encased Shaft",
"block.create.andesite_funnel": "Andesite Funnel",
"block.create.andesite_pillar": "Andesite Pillar",
@ -39,6 +41,8 @@
"block.create.brass_belt_funnel": "Brass Belt Funnel",
"block.create.brass_block": "Block of Brass",
"block.create.brass_casing": "Brass Casing",
"block.create.brass_encased_cogwheel": "Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Brass Encased Shaft",
"block.create.brass_funnel": "Brass Funnel",
"block.create.brass_tunnel": "Brass Tunnel",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1162",
"_": "Missing Localizations: 1166",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "Andesitbruchsteinstufe",
"block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe",
"block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "Andesitummantelte Welle",
"block.create.andesite_funnel": "Andesit Trichter",
"block.create.andesite_pillar": "Andesitsäule",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "Riementrichter aus Messing",
"block.create.brass_block": "Messing Block",
"block.create.brass_casing": "Messingrahmen",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Messingummantelte Welle",
"block.create.brass_funnel": "Messingtrichter",
"block.create.brass_tunnel": "Messingtunnel",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 40",
"_": "Missing Localizations: 44",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "Losa de adoquín de andesita",
"block.create.andesite_cobblestone_stairs": "Escaleras de adoquines de andesita",
"block.create.andesite_cobblestone_wall": "Muro de adoquines de andesita",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "Eje revestido de andesita",
"block.create.andesite_funnel": "Embudo de andesita",
"block.create.andesite_pillar": "Poste de andesita",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "Embudo de cinta de latón",
"block.create.brass_block": "Bloque de latón",
"block.create.brass_casing": "Revestidor de latón",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Eje revestido de latón",
"block.create.brass_funnel": "Embudo de latón",
"block.create.brass_tunnel": "Túnel de latón",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1413",
"_": "Missing Localizations: 1417",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "Dalles en pierres d'andésite",
"block.create.andesite_cobblestone_stairs": "Escaliers en pierres d'andésite",
"block.create.andesite_cobblestone_wall": "Mur en pierres d'andésite",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "Rotor dans un revêtement en andésite",
"block.create.andesite_funnel": "Entonnoir en andésite",
"block.create.andesite_pillar": "Pilier en andésite",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "Entonnoir en laiton pour tapis roulant",
"block.create.brass_block": "Bloc de laiton",
"block.create.brass_casing": "Revêtement en laiton",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Rotor dans un revêtement en laiton",
"block.create.brass_funnel": "Entonnoir en laiton",
"block.create.brass_tunnel": "Tunnel en laiton",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 942",
"_": "Missing Localizations: 946",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "Lastra di pietrisco di andesite",
"block.create.andesite_cobblestone_stairs": "Scalini di pietrisco di andesite",
"block.create.andesite_cobblestone_wall": "Muretto di pietrisco di andesite",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "Albero incassato di andesite",
"block.create.andesite_funnel": "Imbuto di andesite",
"block.create.andesite_pillar": "Pilastro di andesite",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "Imbuto per nastro di ottone",
"block.create.brass_block": "Blocco di ottone",
"block.create.brass_casing": "Involucro di ottone",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Albero incassato di ottone",
"block.create.brass_funnel": "Imbuto di ottone",
"block.create.brass_tunnel": "Tunnel di ottone",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 49",
"_": "Missing Localizations: 53",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "安山岩の丸石のハーフブロック",
"block.create.andesite_cobblestone_stairs": "安山岩の丸石の階段",
"block.create.andesite_cobblestone_wall": "安山岩の丸石の塀",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "安山岩のケース入りシャフト",
"block.create.andesite_funnel": "安山岩ファンネル",
"block.create.andesite_pillar": "安山岩の柱",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "真鍮のベルトファンネル",
"block.create.brass_block": "真鍮ブロック",
"block.create.brass_casing": "真鍮ケーシング",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "真鍮のケース入りシャフト",
"block.create.brass_funnel": "真鍮ファンネル",
"block.create.brass_tunnel": "真鍮トンネル",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 64",
"_": "Missing Localizations: 68",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "안산암 조약돌 반 블록",
"block.create.andesite_cobblestone_stairs": "안산암 조약돌 계단",
"block.create.andesite_cobblestone_wall": "안산암 조약돌 담장",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "안산암 케이스를 씌운 축",
"block.create.andesite_funnel": "안산암 퍼널",
"block.create.andesite_pillar": "안산암 기둥",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "황동 퍼널",
"block.create.brass_block": "황동 블록",
"block.create.brass_casing": "황동 케이스",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "황동 케이스를 씌운 축",
"block.create.brass_funnel": "황동 퍼널",
"block.create.brass_tunnel": "황동 터널",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1792",
"_": "Missing Localizations: 1796",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab",
"block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs",
"block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft",
"block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel",
"block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
"block.create.brass_block": "UNLOCALIZED: Block of Brass",
"block.create.brass_casing": "UNLOCALIZED: Brass Casing",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft",
"block.create.brass_funnel": "UNLOCALIZED: Brass Funnel",
"block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 40",
"_": "Missing Localizations: 44",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "Andezytowa brukowa płyta",
"block.create.andesite_cobblestone_stairs": "Andezytowe brukowe schody",
"block.create.andesite_cobblestone_wall": "Andezytowy brukowy murek",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "Andezytowy izolowany wał",
"block.create.andesite_funnel": "Andezytowy lejek",
"block.create.andesite_pillar": "Andezytowy filar",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "Mosiężny lejek taśmowy",
"block.create.brass_block": "Blok mosiądzu",
"block.create.brass_casing": "Mosiężna obudowa",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Mosiężny izolowany wał",
"block.create.brass_funnel": "Mosiężny lejek",
"block.create.brass_tunnel": "Mosiężny tunel",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1640",
"_": "Missing Localizations: 1644",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab",
"block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs",
"block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft",
"block.create.andesite_funnel": "Funil de Andesito",
"block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "Funil de Esteira de Latão",
"block.create.brass_block": "Bloco de Latão",
"block.create.brass_casing": "Revestimento de Latão",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Eixo Revestido com Latão",
"block.create.brass_funnel": "Funil de Latão",
"block.create.brass_tunnel": "Tunel de Latão",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 45",
"_": "Missing Localizations: 49",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "Андезит-булыжниковая плита",
"block.create.andesite_cobblestone_stairs": "Андезит-булыжниковые ступени",
"block.create.andesite_cobblestone_wall": "Андезит-булыжниковая стена",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "Вал в андезитовом корпусе",
"block.create.andesite_funnel": "Андезитовая воронка",
"block.create.andesite_pillar": "Андезитовая колонна",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "Латунная конвейерная воронка",
"block.create.brass_block": "Латунный блок",
"block.create.brass_casing": "Латунный корпус",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "Вал в латунном корпусе",
"block.create.brass_funnel": "Латунная воронка",
"block.create.brass_tunnel": "Латунный туннель",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 44",
"_": "Missing Localizations: 48",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "安山岩圆石台阶",
"block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯",
"block.create.andesite_cobblestone_wall": "安山岩圆石墙",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "安山传动杆箱",
"block.create.andesite_funnel": "安山岩漏斗",
"block.create.andesite_pillar": "竖纹安山岩",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "黄铜传送带漏斗",
"block.create.brass_block": "黄铜块",
"block.create.brass_casing": "黄铜机壳",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "黄铜传动杆箱",
"block.create.brass_funnel": "黄铜漏斗",
"block.create.brass_tunnel": "黄铜隧道",

View File

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 59",
"_": "Missing Localizations: 63",
"_": "->------------------------] Game Elements [------------------------<-",
@ -18,6 +18,8 @@
"block.create.andesite_cobblestone_slab": "碎安山岩半磚",
"block.create.andesite_cobblestone_stairs": "碎安山岩樓梯",
"block.create.andesite_cobblestone_wall": "碎安山岩牆",
"block.create.andesite_encased_cogwheel": "UNLOCALIZED: Andesite Encased Cogwheel",
"block.create.andesite_encased_large_cogwheel": "UNLOCALIZED: Andesite Encased Large Cogwheel",
"block.create.andesite_encased_shaft": "安山傳動軸箱",
"block.create.andesite_funnel": "安山岩漏斗",
"block.create.andesite_pillar": "豎紋安山岩",
@ -40,6 +42,8 @@
"block.create.brass_belt_funnel": "黃銅輸送帶漏斗",
"block.create.brass_block": "黃銅磚",
"block.create.brass_casing": "黃銅機殼",
"block.create.brass_encased_cogwheel": "UNLOCALIZED: Brass Encased Cogwheel",
"block.create.brass_encased_large_cogwheel": "UNLOCALIZED: Brass Encased Large Cogwheel",
"block.create.brass_encased_shaft": "黃銅傳動軸箱",
"block.create.brass_funnel": "黃銅漏斗",
"block.create.brass_tunnel": "黃銅物品隧道",

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/andesite_encased_cogwheel_side"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side_connected"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/item",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/andesite_encased_cogwheel_side"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/item",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/item",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/item",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side_connected"
}
}

View File

@ -28,8 +28,8 @@
"trigger": "create:bracket_apply",
"conditions": {
"accepted_entries": [
"create:large_cogwheel",
"create:cogwheel"
"create:cogwheel",
"create:large_cogwheel"
]
}
},

View File

@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "create:cogwheel"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"functions": []
}
]
}

View File

@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "create:large_cogwheel"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"functions": []
}
]
}

View File

@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "create:cogwheel"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"functions": []
}
]
}

View File

@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
"name": "create:large_cogwheel"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"functions": []
}
]
}

View File

@ -6,6 +6,10 @@
"create:large_cogwheel",
"create:andesite_encased_shaft",
"create:brass_encased_shaft",
"create:andesite_encased_cogwheel",
"create:brass_encased_cogwheel",
"create:andesite_encased_large_cogwheel",
"create:brass_encased_large_cogwheel",
"create:gearbox",
"create:clutch",
"create:gearshift",

View File

@ -8,6 +8,10 @@
"create:large_cogwheel",
"create:andesite_encased_shaft",
"create:brass_encased_shaft",
"create:andesite_encased_cogwheel",
"create:brass_encased_cogwheel",
"create:andesite_encased_large_cogwheel",
"create:brass_encased_large_cogwheel",
"create:gearbox",
"create:clutch",
"create:gearshift",

View File

@ -17,7 +17,8 @@ public class AllBlockPartials {
public static final PartialModel SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"),
SCHEMATICANNON_PIPE = get("schematicannon/pipe"),
SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), SHAFT_HALF = get("shaft_half"),
SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), SHAFTLESS_LARGE_COGWHEEL = get("large_cogwheel_shaftless"),
SHAFT_HALF = get("shaft_half"),
BELT_PULLEY = get("belt_pulley"), BELT_START = get("belt/start"), BELT_MIDDLE = get("belt/middle"),
BELT_END = get("belt/end"), BELT_START_BOTTOM = get("belt/start_bottom"),

View File

@ -111,6 +111,8 @@ import com.simibubi.create.content.contraptions.relays.encased.ClutchBlock;
import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock;
import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltGenerator;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCTBehaviour;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogCTBehaviour;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogwheelBlock;
import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock;
import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock;
import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock;
@ -172,6 +174,7 @@ import com.simibubi.create.foundation.data.ModelGen;
import com.simibubi.create.foundation.data.SharedProperties;
import com.simibubi.create.foundation.item.TooltipHelper;
import com.simibubi.create.foundation.utility.ColorHandlers;
import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.DyeHelper;
import com.simibubi.create.foundation.worldgen.OxidizingBlock;
import com.tterrag.registrate.providers.RegistrateRecipeProvider;
@ -296,6 +299,36 @@ public class AllBlocks {
.transform(axeOrPickaxe())
.register();
public static final BlockEntry<EncasedCogwheelBlock> ANDESITE_ENCASED_COGWHEEL =
REGISTRATE.block("andesite_encased_cogwheel", p -> EncasedCogwheelBlock.andesite(false, p))
.transform(BuilderTransformers.encasedCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING))
.onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.ANDESITE_CASING,
Couple.create(AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_SIDE,
AllSpriteShifts.ANDESITE_ENCASED_COGWHEEL_OTHERSIDE))))
.transform(axeOrPickaxe())
.register();
public static final BlockEntry<EncasedCogwheelBlock> BRASS_ENCASED_COGWHEEL =
REGISTRATE.block("brass_encased_cogwheel", p -> EncasedCogwheelBlock.brass(false, p))
.transform(BuilderTransformers.encasedCogwheel("brass", AllSpriteShifts.BRASS_CASING))
.onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(AllSpriteShifts.BRASS_CASING,
Couple.create(AllSpriteShifts.BRASS_ENCASED_COGWHEEL_SIDE,
AllSpriteShifts.BRASS_ENCASED_COGWHEEL_OTHERSIDE))))
.transform(axeOrPickaxe())
.register();
public static final BlockEntry<EncasedCogwheelBlock> ANDESITE_ENCASED_LARGE_COGWHEEL =
REGISTRATE.block("andesite_encased_large_cogwheel", p -> EncasedCogwheelBlock.andesite(true, p))
.transform(BuilderTransformers.encasedLargeCogwheel("andesite", AllSpriteShifts.ANDESITE_CASING))
.transform(axeOrPickaxe())
.register();
public static final BlockEntry<EncasedCogwheelBlock> BRASS_ENCASED_LARGE_COGWHEEL =
REGISTRATE.block("brass_encased_large_cogwheel", p -> EncasedCogwheelBlock.brass(true, p))
.transform(BuilderTransformers.encasedLargeCogwheel("brass", AllSpriteShifts.BRASS_CASING))
.transform(axeOrPickaxe())
.register();
public static final BlockEntry<GearboxBlock> GEARBOX = REGISTRATE.block("gearbox", GearboxBlock::new)
.initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion)

View File

@ -38,7 +38,11 @@ public class AllSpriteShifts {
public static final CTSpriteShiftEntry CRAFTER_FRONT = getCT(CTType.OMNIDIRECTIONAL, "crafter_top", "brass_casing"),
CRAFTER_SIDE = getCT(CTType.VERTICAL, "crafter_side"),
CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side");
CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side"),
ANDESITE_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "andesite_encased_cogwheel_side"),
ANDESITE_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "andesite_encased_cogwheel_side"),
BRASS_ENCASED_COGWHEEL_SIDE = getCT(CTType.VERTICAL, "brass_encased_cogwheel_side"),
BRASS_ENCASED_COGWHEEL_OTHERSIDE = getCT(CTType.HORIZONTAL, "brass_encased_cogwheel_side");
public static final CTSpriteShiftEntry ANDESITE_CASING = omni("andesite_casing"),
BRASS_CASING = omni("brass_casing"), COPPER_CASING = omni("copper_casing"),
@ -78,10 +82,8 @@ public class AllSpriteShifts {
//
private static void populateMaps() {
WoodType[] supportedWoodTypes = new WoodType[] {
WoodType.OAK, WoodType.SPRUCE, WoodType.BIRCH, WoodType.ACACIA, WoodType.JUNGLE, WoodType.DARK_OAK,
WoodType.CRIMSON, WoodType.WARPED
};
WoodType[] supportedWoodTypes = new WoodType[] { WoodType.OAK, WoodType.SPRUCE, WoodType.BIRCH, WoodType.ACACIA,
WoodType.JUNGLE, WoodType.DARK_OAK, WoodType.CRIMSON, WoodType.WARPED };
Arrays.stream(supportedWoodTypes)
.forEach(woodType -> WOODEN_WINDOWS.put(woodType, vertical("palettes/" + woodType.name() + "_window")));

View File

@ -3,7 +3,9 @@ package com.simibubi.create;
import com.simibubi.create.content.contraptions.base.CutoutRotatingInstance;
import com.simibubi.create.content.contraptions.base.HalfShaftInstance;
import com.simibubi.create.content.contraptions.base.HorizontalHalfShaftInstance;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance;
import com.simibubi.create.content.contraptions.base.SingleRotatingInstance;
import com.simibubi.create.content.contraptions.components.actors.DrillInstance;
import com.simibubi.create.content.contraptions.components.actors.DrillRenderer;
@ -101,12 +103,13 @@ import com.simibubi.create.content.contraptions.relays.advanced.sequencer.Sequen
import com.simibubi.create.content.contraptions.relays.belt.BeltInstance;
import com.simibubi.create.content.contraptions.relays.belt.BeltRenderer;
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
import com.simibubi.create.content.contraptions.relays.elementary.BracketedKineticTileEntity;
import com.simibubi.create.content.contraptions.relays.elementary.SimpleKineticTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.ClutchTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftRenderer;
import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
import com.simibubi.create.content.contraptions.relays.encased.ShaftRenderer;
import com.simibubi.create.content.contraptions.relays.encased.ShaftlessCogRenderer;
import com.simibubi.create.content.contraptions.relays.encased.SplitShaftInstance;
import com.simibubi.create.content.contraptions.relays.encased.SplitShaftRenderer;
import com.simibubi.create.content.contraptions.relays.gauge.GaugeInstance;
@ -138,10 +141,10 @@ import com.simibubi.create.content.logistics.block.depot.DepotTileEntity;
import com.simibubi.create.content.logistics.block.depot.EjectorInstance;
import com.simibubi.create.content.logistics.block.depot.EjectorRenderer;
import com.simibubi.create.content.logistics.block.depot.EjectorTileEntity;
import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterTileEntity;
import com.simibubi.create.content.logistics.block.diodes.BrassDiodeInstance;
import com.simibubi.create.content.logistics.block.diodes.BrassDiodeRenderer;
import com.simibubi.create.content.logistics.block.diodes.PulseExtenderTileEntity;
import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterTileEntity;
import com.simibubi.create.content.logistics.block.funnel.FunnelInstance;
import com.simibubi.create.content.logistics.block.funnel.FunnelRenderer;
import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity;
@ -183,8 +186,8 @@ public class AllTileEntities {
.register();
// Kinetics
public static final TileEntityEntry<SimpleKineticTileEntity> SIMPLE_KINETIC = Create.registrate()
.tileEntity("simple_kinetic", SimpleKineticTileEntity::new)
public static final TileEntityEntry<BracketedKineticTileEntity> BRACKETED_KINETIC = Create.registrate()
.tileEntity("simple_kinetic", BracketedKineticTileEntity::new)
.instance(() -> SingleRotatingInstance::new)
.validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL)
.renderer(() -> KineticTileEntityRenderer::new)
@ -204,18 +207,32 @@ public class AllTileEntities {
.renderer(() -> GearboxRenderer::new)
.register();
public static final TileEntityEntry<EncasedShaftTileEntity> ENCASED_SHAFT = Create.registrate()
.tileEntity("encased_shaft", EncasedShaftTileEntity::new)
public static final TileEntityEntry<KineticTileEntity> ENCASED_SHAFT = Create.registrate()
.tileEntity("encased_shaft", KineticTileEntity::new)
.instance(() -> ShaftInstance::new)
.validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_CHAIN_DRIVE)
.renderer(() -> EncasedShaftRenderer::new)
.renderer(() -> ShaftRenderer::new)
.register();
public static final TileEntityEntry<SimpleKineticTileEntity> ENCASED_COGWHEEL = Create.registrate()
.tileEntity("encased_cogwheel", SimpleKineticTileEntity::new)
.instance(() -> ShaftlessCogInstance::small)
.validBlocks(AllBlocks.ANDESITE_ENCASED_COGWHEEL, AllBlocks.BRASS_ENCASED_COGWHEEL)
.renderer(() -> ShaftlessCogRenderer::small)
.register();
public static final TileEntityEntry<SimpleKineticTileEntity> ENCASED_LARGE_COGWHEEL = Create.registrate()
.tileEntity("encased_large_cogwheel", SimpleKineticTileEntity::new)
.instance(() -> ShaftlessCogInstance::large)
.validBlocks(AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL, AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL)
.renderer(() -> ShaftlessCogRenderer::large)
.register();
public static final TileEntityEntry<AdjustablePulleyTileEntity> ADJUSTABLE_PULLEY = Create.registrate()
.tileEntity("adjustable_pulley", AdjustablePulleyTileEntity::new)
.instance(() -> ShaftInstance::new)
.validBlocks(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT)
.renderer(() -> EncasedShaftRenderer::new)
.renderer(() -> ShaftRenderer::new)
.register();
public static final TileEntityEntry<EncasedFanTileEntity> ENCASED_FAN = Create.registrate()

View File

@ -48,7 +48,7 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.DistExecutor;
public abstract class KineticTileEntity extends SmartTileEntity
public class KineticTileEntity extends SmartTileEntity
implements IHaveGoggleInformation, IHaveHoveringInformation, IInstanceRendered {
public @Nullable Long network;

View File

@ -2,19 +2,49 @@ package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
public class ShaftlessCogInstance extends SingleRotatingInstance {
public ShaftlessCogInstance(MaterialManager modelManager, KineticTileEntity tile) {
super(modelManager, tile);
}
private boolean large;
@Override
protected Instancer<RotatingData> getModel() {
return materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING)
.getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState());
public static ShaftlessCogInstance small(MaterialManager modelManager, KineticTileEntity tile) {
return new ShaftlessCogInstance(modelManager, tile, false);
}
public static ShaftlessCogInstance large(MaterialManager modelManager, KineticTileEntity tile) {
return new ShaftlessCogInstance(modelManager, tile, true);
}
public ShaftlessCogInstance(MaterialManager modelManager, KineticTileEntity tile, boolean large) {
super(modelManager, tile);
this.large = large;
}
@Override
protected Instancer<RotatingData> getModel() {
BlockState referenceState = tile.getBlockState();
Direction facing =
Direction.fromAxisAndDirection(referenceState.getValue(BlockStateProperties.AXIS), AxisDirection.POSITIVE);
PartialModel partial = large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL;
return getRotatingMaterial().getModel(partial, referenceState, facing, () -> {
PoseStack poseStack = new PoseStack();
new MatrixTransformStack(poseStack).centre()
.rotateToFace(facing)
.multiply(Vector3f.XN.rotationDegrees(90))
.unCentre();
return poseStack;
});
}
}

View File

@ -0,0 +1,20 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
public class ShaftlessLargeCogInstance extends SingleRotatingInstance {
public ShaftlessLargeCogInstance(MaterialManager modelManager, KineticTileEntity tile) {
super(modelManager, tile);
}
@Override
protected Instancer<RotatingData> getModel() {
return materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING)
.getModel(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, tile.getBlockState());
}
}

View File

@ -7,12 +7,15 @@ import net.minecraft.world.level.block.state.BlockState;
public class SingleRotatingInstance extends KineticTileInstance<KineticTileEntity> {
protected final RotatingData rotatingModel;
protected RotatingData rotatingModel;
public SingleRotatingInstance(MaterialManager modelManager, KineticTileEntity tile) {
super(modelManager, tile);
rotatingModel = setup(getModel().createInstance());
super(modelManager, tile);
}
@Override
public void init() {
rotatingModel = setup(getModel().createInstance());
}
@Override

View File

@ -1,11 +1,13 @@
package com.simibubi.create.content.contraptions.components.mixer;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.RotatingData;
import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.core.Direction;
@ -17,7 +19,7 @@ public class MixerInstance extends ShaftlessCogInstance implements IDynamicInsta
private final MechanicalMixerTileEntity mixer;
public MixerInstance(MaterialManager dispatcher, MechanicalMixerTileEntity tile) {
super(dispatcher, tile);
super(dispatcher, tile, false);
this.mixer = tile;
mixerHead = getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_MIXER_HEAD, blockState)
@ -35,6 +37,13 @@ public class MixerInstance extends ShaftlessCogInstance implements IDynamicInsta
transformPole(renderedHeadOffset);
transformHead(renderedHeadOffset);
}
@Override
protected Instancer<RotatingData> getModel() {
return materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING)
.getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState());
}
@Override
public void beginFrame() {

View File

@ -123,7 +123,7 @@ public abstract class AbstractShaftBlock extends RotatedPillarKineticBlock
@Override
public BlockEntityType<? extends SimpleKineticTileEntity> getTileEntityType() {
return AllTileEntities.SIMPLE_KINETIC.get();
return AllTileEntities.BRACKETED_KINETIC.get();
}
}

View File

@ -0,0 +1,25 @@
package com.simibubi.create.content.contraptions.relays.elementary;
import java.util.List;
import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class BracketedKineticTileEntity extends SimpleKineticTileEntity {
public BracketedKineticTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
@Override
public void addBehaviours(List<TileEntityBehaviour> behaviours) {
behaviours.add(new BracketedTileEntityBehaviour(this, state -> state.getBlock() instanceof AbstractShaftBlock)
.withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock())));
super.addBehaviours(behaviours);
}
}

View File

@ -5,13 +5,19 @@ import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllShapes;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogwheelBlock;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
@ -20,12 +26,14 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class CogWheelBlock extends AbstractShaftBlock implements ICogWheel {
boolean isLarge;
protected CogWheelBlock(boolean large, Properties properties) {
@ -61,6 +69,35 @@ public class CogWheelBlock extends AbstractShaftBlock implements ICogWheel {
return isValidCogwheelPosition(ICogWheel.isLargeCog(state), worldIn, pos, state.getValue(AXIS));
}
@Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult ray) {
if (player.isShiftKeyDown() || !player.mayBuild())
return InteractionResult.PASS;
ItemStack heldItem = player.getItemInHand(hand);
EncasedCogwheelBlock[] encasedBlocks = isLarge
? new EncasedCogwheelBlock[] { AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL.get(),
AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL.get() }
: new EncasedCogwheelBlock[] { AllBlocks.ANDESITE_ENCASED_COGWHEEL.get(),
AllBlocks.BRASS_ENCASED_COGWHEEL.get() };
for (EncasedCogwheelBlock encasedCog : encasedBlocks) {
if (!encasedCog.getCasing()
.isIn(heldItem))
continue;
if (world.isClientSide)
return InteractionResult.SUCCESS;
KineticTileEntity.switchToBlockState(world, pos, encasedCog.defaultBlockState()
.setValue(AXIS, state.getValue(AXIS)));
return InteractionResult.SUCCESS;
}
return InteractionResult.PASS;
}
public static boolean isValidCogwheelPosition(boolean large, LevelReader worldIn, BlockPos pos, Axis cogAxis) {
for (Direction facing : Iterate.directions) {
if (facing.getAxis() == cogAxis)

View File

@ -8,6 +8,8 @@ import java.util.function.Predicate;
import com.simibubi.create.AllShapes;
import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock;
import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
@ -41,7 +43,8 @@ public class CogwheelBlockItem extends BlockItem {
large = block.isLarge;
placementHelperId = PlacementHelpers.register(large ? new LargeCogHelper() : new SmallCogHelper());
integratedCogHelperId = PlacementHelpers.register(large ? new IntegratedLargeCogHelper() : new IntegratedSmallCogHelper());
integratedCogHelperId =
PlacementHelpers.register(large ? new IntegratedLargeCogHelper() : new IntegratedSmallCogHelper());
}
@Override
@ -54,14 +57,16 @@ public class CogwheelBlockItem extends BlockItem {
Player player = context.getPlayer();
BlockHitResult ray = new BlockHitResult(context.getClickLocation(), context.getClickedFace(), pos, true);
if (helper.matchesState(state) && player != null && !player.isShiftKeyDown()) {
return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, this, player, context.getHand(), ray);
return helper.getOffset(player, world, state, pos, ray)
.placeInWorld(world, this, player, context.getHand(), ray);
}
if (integratedCogHelperId != -1) {
helper = PlacementHelpers.get(integratedCogHelperId);
if (helper.matchesState(state) && player != null && !player.isShiftKeyDown()) {
return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, this, player, context.getHand(), ray);
return helper.getOffset(player, world, state, pos, ray)
.placeInWorld(world, this, player, context.getHand(), ray);
}
}
@ -93,7 +98,7 @@ public class CogwheelBlockItem extends BlockItem {
for (int offset1 : Iterate.positiveAndNegative) {
for (int offset2 : Iterate.positiveAndNegative) {
BlockPos connectedPos = pos.relative(d1, offset1)
.relative(d2, offset2);
.relative(d2, offset2);
BlockState blockState = world.getBlockState(connectedPos);
if (!(blockState.getBlock() instanceof CogWheelBlock))
continue;
@ -117,26 +122,27 @@ public class CogwheelBlockItem extends BlockItem {
}
@Override
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) {
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
BlockHitResult ray) {
if (hitOnShaft(state, ray))
return PlacementOffset.fail();
if (!((CogWheelBlock) state.getBlock()).isLarge) {
List<Direction> directions =
IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), state.getValue(AXIS));
if (!ICogWheel.isLargeCog(state)) {
Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state);
List<Direction> directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis);
for (Direction dir : directions) {
BlockPos newPos = pos.relative(dir);
if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, state.getValue(AXIS)))
if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, axis))
continue;
if (!world.getBlockState(newPos)
.getMaterial()
.isReplaceable())
.getMaterial()
.isReplaceable())
continue;
return PlacementOffset.success(newPos, s -> s.setValue(AXIS, state.getValue(AXIS)));
return PlacementOffset.success(newPos, s -> s.setValue(AXIS, axis));
}
@ -156,25 +162,26 @@ public class CogwheelBlockItem extends BlockItem {
}
@Override
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) {
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
BlockHitResult ray) {
if (hitOnShaft(state, ray))
return PlacementOffset.fail();
if (((CogWheelBlock) state.getBlock()).isLarge) {
Direction side = IPlacementHelper.orderedByDistanceOnlyAxis(pos, ray.getLocation(), state.getValue(AXIS))
.get(0);
List<Direction> directions =
IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), state.getValue(AXIS));
if (ICogWheel.isLargeCog(state)) {
Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state);
Direction side = IPlacementHelper.orderedByDistanceOnlyAxis(pos, ray.getLocation(), axis)
.get(0);
List<Direction> directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis);
for (Direction dir : directions) {
BlockPos newPos = pos.relative(dir)
.relative(side);
.relative(side);
if (!CogWheelBlock.isValidCogwheelPosition(true, world, newPos, dir.getAxis()))
continue;
if (!world.getBlockState(newPos)
.getMaterial()
.isReplaceable())
.getMaterial()
.isReplaceable())
continue;
return PlacementOffset.success(newPos, s -> s.setValue(AXIS, dir.getAxis()));
@ -192,41 +199,43 @@ public class CogwheelBlockItem extends BlockItem {
@Override
public Predicate<BlockState> getStatePredicate() {
return s -> s.getBlock() instanceof CogWheelBlock;
return s -> ICogWheel.isSmallCog(s) || ICogWheel.isLargeCog(s);
}
@Override
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) {
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
BlockHitResult ray) {
// diagonal gears of different size
Direction closest = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), state.getValue(AXIS))
.get(0);
List<Direction> directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(),
state.getValue(AXIS), d -> d.getAxis() != closest.getAxis());
Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state);
Direction closest = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis)
.get(0);
List<Direction> directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), axis,
d -> d.getAxis() != closest.getAxis());
for (Direction dir : directions) {
BlockPos newPos = pos.relative(dir)
.relative(closest);
.relative(closest);
if (!world.getBlockState(newPos)
.getMaterial()
.isReplaceable())
.getMaterial()
.isReplaceable())
continue;
if (!CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), world, newPos, state.getValue(AXIS)))
if (!CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), world, newPos, axis))
continue;
return PlacementOffset.success(newPos, s -> s.setValue(AXIS, state.getValue(AXIS)));
return PlacementOffset.success(newPos, s -> s.setValue(AXIS, axis));
}
return PlacementOffset.fail();
}
protected boolean hitOnShaft(BlockState state, BlockHitResult ray) {
return AllShapes.SIX_VOXEL_POLE.get(state.getValue(AXIS))
.bounds()
.inflate(0.001)
.contains(ray.getLocation()
.subtract(ray.getLocation()
.align(Iterate.axisSet)));
return AllShapes.SIX_VOXEL_POLE.get(((IRotate) state.getBlock()).getRotationAxis(state))
.bounds()
.inflate(0.001)
.contains(ray.getLocation()
.subtract(ray.getLocation()
.align(Iterate.axisSet)));
}
}
@ -244,16 +253,19 @@ public class CogwheelBlockItem extends BlockItem {
}
@Override
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) {
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
BlockHitResult ray) {
Direction face = ray.getDirection();
Axis newAxis;
if (state.hasProperty(HorizontalKineticBlock.HORIZONTAL_FACING))
newAxis = state.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)
.getAxis();
.getAxis();
else if (state.hasProperty(DirectionalKineticBlock.FACING))
newAxis = state.getValue(DirectionalKineticBlock.FACING)
.getAxis();
.getAxis();
else if (state.hasProperty(RotatedPillarKineticBlock.AXIS))
newAxis = state.getValue(RotatedPillarKineticBlock.AXIS);
else
newAxis = Axis.Y;
@ -261,15 +273,15 @@ public class CogwheelBlockItem extends BlockItem {
return PlacementOffset.fail();
List<Direction> directions =
IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), face.getAxis(), newAxis);
IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getLocation(), face.getAxis(), newAxis);
for (Direction d : directions) {
BlockPos newPos = pos.relative(face)
.relative(d);
.relative(d);
if (!world.getBlockState(newPos)
.getMaterial()
.isReplaceable())
.getMaterial()
.isReplaceable())
continue;
if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis))
@ -297,16 +309,19 @@ public class CogwheelBlockItem extends BlockItem {
}
@Override
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos, BlockHitResult ray) {
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
BlockHitResult ray) {
Direction face = ray.getDirection();
Axis newAxis;
if (state.hasProperty(HorizontalKineticBlock.HORIZONTAL_FACING))
newAxis = state.getValue(HorizontalKineticBlock.HORIZONTAL_FACING)
.getAxis();
.getAxis();
else if (state.hasProperty(DirectionalKineticBlock.FACING))
newAxis = state.getValue(DirectionalKineticBlock.FACING)
.getAxis();
.getAxis();
else if (state.hasProperty(RotatedPillarKineticBlock.AXIS))
newAxis = state.getValue(RotatedPillarKineticBlock.AXIS);
else
newAxis = Axis.Y;
@ -319,16 +334,16 @@ public class CogwheelBlockItem extends BlockItem {
BlockPos newPos = pos.relative(d);
if (!world.getBlockState(newPos)
.getMaterial()
.isReplaceable())
.getMaterial()
.isReplaceable())
continue;
if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis))
return PlacementOffset.fail();
return PlacementOffset.success()
.at(newPos)
.withTransform(s -> s.setValue(CogWheelBlock.AXIS, newAxis));
.at(newPos)
.withTransform(s -> s.setValue(CogWheelBlock.AXIS, newAxis));
}
return PlacementOffset.fail();

View File

@ -4,8 +4,6 @@ import java.util.List;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.entity.BlockEntityType;
@ -18,13 +16,6 @@ public class SimpleKineticTileEntity extends KineticTileEntity {
super(type, pos, state);
}
@Override
public void addBehaviours(List<TileEntityBehaviour> behaviours) {
behaviours.add(new BracketedTileEntityBehaviour(this, state -> state.getBlock() instanceof AbstractShaftBlock)
.withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock())));
super.addBehaviours(behaviours);
}
@Override
public AABB makeRenderBoundingBox() {
return new AABB(worldPosition).inflate(1);

View File

@ -0,0 +1,90 @@
package com.simibubi.create.content.contraptions.relays.encased;
import static com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock.AXIS;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel;
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
import com.simibubi.create.foundation.utility.Couple;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
public class EncasedCogCTBehaviour extends EncasedCTBehaviour {
private Couple<CTSpriteShiftEntry> sideShifts;
private boolean large;
public EncasedCogCTBehaviour(CTSpriteShiftEntry shift) {
this(shift, null);
}
public EncasedCogCTBehaviour(CTSpriteShiftEntry shift, Couple<CTSpriteShiftEntry> sideShifts) {
super(shift);
large = sideShifts == null;
this.sideShifts = sideShifts;
}
@Override
public boolean connectsTo(BlockState state, BlockState other, BlockAndTintGetter reader, BlockPos pos,
BlockPos otherPos, Direction face) {
Axis axis = state.getValue(AXIS);
if (large || axis == face.getAxis())
return super.connectsTo(state, other, reader, pos, otherPos, face);
if (other == state)
return true;
BlockState blockState = reader.getBlockState(otherPos.relative(face));
if (!ICogWheel.isLargeCog(blockState))
return false;
return ((IRotate) blockState.getBlock()).getRotationAxis(blockState) == axis;
}
@Override
protected boolean reverseUVs(BlockState state, Direction face) {
return state.getValue(AXIS)
.isHorizontal()
&& face.getAxis()
.isHorizontal()
&& face.getAxisDirection() == AxisDirection.POSITIVE;
}
@Override
protected boolean reverseUVsVertically(BlockState state, Direction face) {
if (!large && state.getValue(AXIS) == Axis.X && face.getAxis() == Axis.Z)
return face != Direction.SOUTH;
return super.reverseUVsVertically(state, face);
}
@Override
protected boolean reverseUVsHorizontally(BlockState state, Direction face) {
if (large)
return super.reverseUVsHorizontally(state, face);
if (state.getValue(AXIS)
.isVertical()
&& face.getAxis()
.isHorizontal())
return true;
if (state.getValue(AXIS) == Axis.Z && face == Direction.DOWN)
return true;
return super.reverseUVsHorizontally(state, face);
}
@Override
public CTSpriteShiftEntry get(BlockState state, Direction direction) {
Axis axis = state.getValue(AXIS);
if (large || axis == direction.getAxis())
return super.get(state, direction);
return sideShifts.get(axis == Axis.X || axis == Axis.Z && direction.getAxis() == Axis.X);
}
}

View File

@ -0,0 +1,124 @@
package com.simibubi.create.content.contraptions.relays.encased;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.contraptions.base.CasingBlock;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock;
import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel;
import com.simibubi.create.content.contraptions.relays.elementary.SimpleKineticTileEntity;
import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement;
import com.simibubi.create.content.schematics.ItemRequirement;
import com.simibubi.create.foundation.block.ITE;
import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
implements ICogWheel, ITE<SimpleKineticTileEntity>, ISpecialBlockItemRequirement {
boolean isLarge;
private BlockEntry<CasingBlock> casing;
public static EncasedCogwheelBlock andesite(boolean large, Properties properties) {
return new EncasedCogwheelBlock(large, properties, AllBlocks.ANDESITE_CASING);
}
public static EncasedCogwheelBlock brass(boolean large, Properties properties) {
return new EncasedCogwheelBlock(large, properties, AllBlocks.BRASS_CASING);
}
public EncasedCogwheelBlock(boolean large, Properties properties, BlockEntry<CasingBlock> casing) {
super(properties);
isLarge = large;
this.casing = casing;
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
BlockState placedOn = context.getLevel()
.getBlockState(context.getClickedPos()
.relative(context.getClickedFace()
.getOpposite()));
BlockState stateForPlacement = super.getStateForPlacement(context);
if (ICogWheel.isSmallCog(placedOn))
stateForPlacement =
stateForPlacement.setValue(AXIS, ((IRotate) placedOn.getBlock()).getRotationAxis(placedOn));
return stateForPlacement;
}
public BlockEntry<CasingBlock> getCasing() {
return casing;
}
@Override
public boolean skipRendering(BlockState pState, BlockState pAdjacentBlockState, Direction pDirection) {
return pState == pAdjacentBlockState;
}
@Override
public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) {
if (context.getLevel().isClientSide)
return InteractionResult.SUCCESS;
context.getLevel()
.levelEvent(2001, context.getClickedPos(), Block.getId(state));
KineticTileEntity.switchToBlockState(context.getLevel(), context.getClickedPos(),
(isLarge ? AllBlocks.LARGE_COGWHEEL : AllBlocks.COGWHEEL).getDefaultState()
.setValue(AXIS, state.getValue(AXIS)));
return InteractionResult.SUCCESS;
}
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return false;
}
@Override
public boolean isSmallCog() {
return !isLarge;
}
@Override
public boolean isLargeCog() {
return isLarge;
}
@Override
public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) {
return CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), worldIn, pos, state.getValue(AXIS));
}
@Override
public Axis getRotationAxis(BlockState state) {
return state.getValue(AXIS);
}
@Override
public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) {
return ItemRequirement
.of(isLarge ? AllBlocks.LARGE_COGWHEEL.getDefaultState() : AllBlocks.COGWHEEL.getDefaultState(), te);
}
@Override
public Class<SimpleKineticTileEntity> getTileEntityClass() {
return SimpleKineticTileEntity.class;
}
@Override
public BlockEntityType<? extends SimpleKineticTileEntity> getTileEntityType() {
return isLarge ? AllTileEntities.ENCASED_LARGE_COGWHEEL.get() : AllTileEntities.ENCASED_COGWHEEL.get();
}
}

View File

@ -16,7 +16,8 @@ import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class EncasedShaftBlock extends AbstractEncasedShaftBlock implements ITE<EncasedShaftTileEntity>, ISpecialBlockItemRequirement {
public class EncasedShaftBlock extends AbstractEncasedShaftBlock
implements ITE<KineticTileEntity>, ISpecialBlockItemRequirement {
private BlockEntry<CasingBlock> casing;
@ -41,8 +42,11 @@ public class EncasedShaftBlock extends AbstractEncasedShaftBlock implements ITE<
public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) {
if (context.getLevel().isClientSide)
return InteractionResult.SUCCESS;
context.getLevel().levelEvent(2001, context.getClickedPos(), Block.getId(state));
KineticTileEntity.switchToBlockState(context.getLevel(), context.getClickedPos(), AllBlocks.SHAFT.getDefaultState().setValue(AXIS, state.getValue(AXIS)));
context.getLevel()
.levelEvent(2001, context.getClickedPos(), Block.getId(state));
KineticTileEntity.switchToBlockState(context.getLevel(), context.getClickedPos(),
AllBlocks.SHAFT.getDefaultState()
.setValue(AXIS, state.getValue(AXIS)));
return InteractionResult.SUCCESS;
}
@ -50,14 +54,14 @@ public class EncasedShaftBlock extends AbstractEncasedShaftBlock implements ITE<
public ItemRequirement getRequiredItems(BlockState state, BlockEntity te) {
return ItemRequirement.of(AllBlocks.SHAFT.getDefaultState(), te);
}
@Override
public Class<EncasedShaftTileEntity> getTileEntityClass() {
return EncasedShaftTileEntity.class;
public Class<KineticTileEntity> getTileEntityClass() {
return KineticTileEntity.class;
}
@Override
public BlockEntityType<? extends EncasedShaftTileEntity> getTileEntityType() {
public BlockEntityType<? extends KineticTileEntity> getTileEntityType() {
return AllTileEntities.ENCASED_SHAFT.get();
}

View File

@ -1,15 +0,0 @@
package com.simibubi.create.content.contraptions.relays.encased;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class EncasedShaftTileEntity extends KineticTileEntity {
public EncasedShaftTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
}

View File

@ -6,9 +6,9 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.world.level.block.state.BlockState;
public class EncasedShaftRenderer extends KineticTileEntityRenderer {
public class ShaftRenderer extends KineticTileEntityRenderer {
public EncasedShaftRenderer(BlockEntityRendererProvider.Context context) {
public ShaftRenderer(BlockEntityRendererProvider.Context context) {
super(context);
}

View File

@ -0,0 +1,38 @@
package com.simibubi.create.content.contraptions.relays.encased;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.foundation.render.PartialBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.AxisDirection;
public class ShaftlessCogRenderer extends KineticTileEntityRenderer {
private boolean large;
public static ShaftlessCogRenderer small(BlockEntityRendererProvider.Context context) {
return new ShaftlessCogRenderer(context, false);
}
public static ShaftlessCogRenderer large(BlockEntityRendererProvider.Context context) {
return new ShaftlessCogRenderer(context, true);
}
public ShaftlessCogRenderer(BlockEntityRendererProvider.Context context, boolean large) {
super(context);
this.large = large;
}
@Override
protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
return PartialBufferer.getFacingVertical(
large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL, te.getBlockState(),
Direction.fromAxisAndDirection(te.getBlockState()
.getValue(EncasedCogwheelBlock.AXIS), AxisDirection.POSITIVE));
}
}

View File

@ -8,6 +8,7 @@ import static com.simibubi.create.foundation.data.CreateRegistrate.connectedText
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;
import javax.annotation.Nullable;
@ -19,6 +20,8 @@ import com.simibubi.create.content.contraptions.base.CasingBlock;
import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock;
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonGenerator;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCTBehaviour;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogCTBehaviour;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogwheelBlock;
import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock;
import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock;
import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape;
@ -36,6 +39,7 @@ import net.minecraft.core.Direction.Axis;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
@ -61,8 +65,8 @@ public class BuilderTransformers {
return builder -> builder.initialProperties(SharedProperties::stone)
.properties(BlockBehaviour.Properties::noOcclusion)
.onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(casingShift)))
.onRegister(CreateRegistrate.casingConnectivity(
(block, cc) -> cc.make(block, casingShift, (s, f) -> f.getAxis() != s.getValue(EncasedShaftBlock.AXIS))))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift,
(s, f) -> f.getAxis() != s.getValue(EncasedShaftBlock.AXIS))))
.blockstate((c, p) -> axisBlock(c, p, blockState -> p.models()
.getExistingFile(p.modLoc("block/encased_shaft/block_" + casing)), true))
.transform(BlockStressDefaults.setNoImpact())
@ -72,6 +76,51 @@ public class BuilderTransformers {
.build();
}
public static <B extends EncasedCogwheelBlock, P> NonNullUnaryOperator<BlockBuilder<B, P>> encasedCogwheel(
String casing, CTSpriteShiftEntry casingShift) {
return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.COGWHEEL.get())
.blockstate((c, p) -> axisBlock(c, p, blockState -> p.models()
.withExistingParent(c.getName(), p.modLoc("block/encased_cogwheel/block"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side")), false))
.item()
.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_cogwheel/item"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side")))
.build();
}
public static <B extends EncasedCogwheelBlock, P> NonNullUnaryOperator<BlockBuilder<B, P>> encasedLargeCogwheel(
String casing, CTSpriteShiftEntry casingShift) {
return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.LARGE_COGWHEEL.get())
.onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(casingShift)))
.blockstate((c, p) -> axisBlock(c, p, blockState -> p.models()
.withExistingParent(c.getName(), p.modLoc("block/encased_large_cogwheel/block"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side_connected")), false))
.item()
.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_large_cogwheel/item"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side_connected")))
.build();
}
private static <B extends EncasedCogwheelBlock, P> BlockBuilder<B, P> encasedCogwheelBase(BlockBuilder<B, P> b,
String casing, CTSpriteShiftEntry casingShift, Supplier<ItemLike> drop) {
return b.initialProperties(SharedProperties::stone)
.addLayer(() -> RenderType::cutoutMipped)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(BlockStressDefaults.setNoImpact())
.loot((p, lb) -> p.dropOther(lb, drop.get()))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift,
(s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS))));
}
public static <B extends ValveHandleBlock> NonNullUnaryOperator<BlockBuilder<B, CreateRegistrate>> valveHandle(
@Nullable DyeColor color) {
return b -> b.initialProperties(SharedProperties::softMetal)

View File

@ -25,17 +25,35 @@ public class PartialBufferer {
}
public static SuperByteBuffer getFacing(PartialModel partial, BlockState referenceState, Direction facing) {
return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing, rotateToFace(facing));
return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing,
rotateToFace(facing));
}
public static SuperByteBuffer getFacingVertical(PartialModel partial, BlockState referenceState, Direction facing) {
return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing,
rotateToFaceVertical(facing));
}
public static Supplier<PoseStack> rotateToFace(Direction facing) {
return () -> {
PoseStack stack = new PoseStack();
MatrixTransformStack.of(stack)
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing))
.unCentre();
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing))
.unCentre();
return stack;
};
}
public static Supplier<PoseStack> rotateToFaceVertical(Direction facing) {
return () -> {
PoseStack stack = new PoseStack();
MatrixTransformStack.of(stack)
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing) + 90)
.unCentre();
return stack;
};
}

View File

@ -3,10 +3,10 @@
"parent": "create:block/large_wheels",
"texture_size": [32, 32],
"textures": {
"0": "create:block/axis",
"0": "create:block/cogwheel_axis",
"3": "create:block/axis_top",
"particle": "block/stripped_spruce_log",
"1_2": "create:block/cogwheel"
"1_2": "create:block/cogwheel",
"particle": "block/stripped_spruce_log_top"
},
"elements": [
{
@ -28,10 +28,10 @@
"from": [-1, 6.5, 6.5],
"to": [17, 9.5, 9.5],
"faces": {
"north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
@ -42,10 +42,10 @@
"to": [17, 9.5, 9.5],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
@ -56,10 +56,10 @@
"to": [17, 9.5, 9.5],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
@ -69,23 +69,23 @@
"from": [6.5, 6.5, -1],
"to": [9.5, 9.5, 17],
"faces": {
"north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"north": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"east": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"south": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"west": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}
}
},
{
"name": "GearCaseInner",
"from": [2, 7, 2],
"to": [14, 9, 14],
"from": [2, 6.55, 2],
"to": [14, 9.45, 14],
"faces": {
"north": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"east": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"south": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"west": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"north": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"east": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"south": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"west": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"up": {"uv": [4, 0, 10, 6], "texture": "#1_2"},
"down": {"uv": [4, 0, 10, 6], "texture": "#1_2"}
}

View File

@ -3,8 +3,8 @@
"parent": "create:block/large_wheels",
"texture_size": [32, 32],
"textures": {
"particle": "create:block/cogwheel",
"1_2": "create:block/cogwheel"
"1_2": "create:block/cogwheel",
"particle": "block/stripped_spruce_log_top"
},
"elements": [
{
@ -12,10 +12,10 @@
"from": [-1, 6.5, 6.5],
"to": [17, 9.5, 9.5],
"faces": {
"north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
@ -26,10 +26,10 @@
"to": [17, 9.5, 9.5],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
@ -40,10 +40,10 @@
"to": [17, 9.5, 9.5],
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"north": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
@ -53,23 +53,23 @@
"from": [6.5, 6.5, -1],
"to": [9.5, 9.5, 17],
"faces": {
"north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"},
"west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"},
"north": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"east": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"south": {"uv": [5, 8, 6.5, 9.5], "texture": "#1_2"},
"west": {"uv": [7, 8, 16, 9.5], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}
}
},
{
"name": "GearCaseInner",
"from": [2, 7, 2],
"to": [14, 9, 14],
"from": [2, 6.55, 2],
"to": [14, 9.45, 14],
"faces": {
"north": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"east": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"south": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"west": {"uv": [0, 6, 6, 7], "texture": "#1_2"},
"north": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"east": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"south": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"west": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"up": {"uv": [4, 0, 10, 6], "texture": "#1_2"},
"down": {"uv": [4, 0, 10, 6], "texture": "#1_2"}
}

View File

@ -0,0 +1,55 @@
{
"credit": "Made with Blockbench",
"textures": {
"casing": "create:block/andesite_casing",
"1": "block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side",
"particle": "#casing"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [0, 10, 16, 16], "texture": "#side"},
"east": {"uv": [0, 10, 16, 16], "texture": "#side"},
"south": {"uv": [0, 10, 16, 16], "texture": "#side"},
"west": {"uv": [0, 10, 16, 16], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 6, 0],
"to": [16, 10, 16],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"}
}
},
{
"from": [15.95, 6, 0.05],
"to": [0.05, 10, 15.95],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"}
}
},
{
"from": [0, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 6], "texture": "#side"},
"east": {"uv": [0, 0, 16, 6], "texture": "#side"},
"south": {"uv": [0, 0, 16, 6], "texture": "#side"},
"west": {"uv": [0, 0, 16, 6], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
}
]
}

View File

@ -0,0 +1,153 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"casing": "create:block/andesite_casing",
"1": "block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side",
"1_2": "create:block/cogwheel",
"particle": "#casing"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [0, 10, 16, 16], "texture": "#side"},
"east": {"uv": [0, 10, 16, 16], "texture": "#side"},
"south": {"uv": [0, 10, 16, 16], "texture": "#side"},
"west": {"uv": [0, 10, 16, 16], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 6, 0],
"to": [16, 10, 16],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side"}
}
},
{
"from": [15.95, 6, 0.05],
"to": [0.05, 10, 15.95],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side"}
}
},
{
"from": [0, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 6], "texture": "#side"},
"east": {"uv": [0, 0, 16, 6], "texture": "#side"},
"south": {"uv": [0, 0, 16, 6], "texture": "#side"},
"west": {"uv": [0, 0, 16, 6], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"name": "Gear",
"from": [-1, 6.025, 6.5],
"to": [17, 9.975, 9.5],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
},
{
"name": "Gear2",
"from": [-1, 6.025, 6.5],
"to": [17, 9.975, 9.5],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"east": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"south": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"west": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}
}
},
{
"name": "Gear3",
"from": [6.5, 6.025, -1],
"to": [9.5, 9.975, 17],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"east": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"south": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"west": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#1_2"}
}
},
{
"name": "Gear4",
"from": [6.5, 6.025, -1],
"to": [9.5, 9.975, 17],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"east": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"south": {"uv": [5, 8, 6.5, 10], "texture": "#1_2"},
"west": {"uv": [7, 8, 16, 10], "texture": "#1_2"},
"up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"},
"down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}
}
},
{
"name": "GearCaseInner",
"from": [2, 6.5, 2],
"to": [14, 9.5, 14],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"east": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"south": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"west": {"uv": [0, 6, 6, 7.5], "texture": "#1_2"},
"up": {"uv": [4, 0, 10, 6], "texture": "#1_2"},
"down": {"uv": [4, 0, 10, 6], "texture": "#1_2"}
}
},
{
"name": "GearCaseOuter",
"from": [4, 6, 4],
"to": [12, 10, 12],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 4, 4, 6], "texture": "#1_2"},
"east": {"uv": [0, 4, 4, 6], "texture": "#1_2"},
"south": {"uv": [0, 4, 4, 6], "texture": "#1_2"},
"west": {"uv": [0, 4, 4, 6], "texture": "#1_2"},
"up": {"uv": [0, 0, 4, 4], "texture": "#1_2"},
"down": {"uv": [0, 0, 4, 4], "texture": "#1_2"}
}
}
],
"groups": [
0,
1,
2,
3,
{
"name": "cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [4, 5, 6, 7, 8, 9]
}
]
}

View File

@ -0,0 +1,35 @@
{
"credit": "Made with Blockbench",
"textures": {
"casing": "create:block/andesite_casing",
"1": "block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected",
"particle": "#casing"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [8, 13, 16, 16], "texture": "#side"},
"east": {"uv": [8, 13, 16, 16], "texture": "#side"},
"south": {"uv": [8, 13, 16, 16], "texture": "#side"},
"west": {"uv": [8, 13, 16, 16], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [8, 8, 16, 11], "texture": "#side"},
"east": {"uv": [8, 8, 16, 11], "texture": "#side"},
"south": {"uv": [8, 8, 16, 11], "texture": "#side"},
"west": {"uv": [8, 8, 16, 11], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
}
]
}

View File

@ -0,0 +1,249 @@
{
"credit": "Made with Blockbench",
"parent": "create:block/large_wheels",
"textures": {
"casing": "create:block/andesite_casing",
"1": "block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected",
"4": "create:block/large_cogwheel",
"particle": "#casing"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [8, 13, 16, 16], "texture": "#side"},
"east": {"uv": [8, 13, 16, 16], "texture": "#side"},
"south": {"uv": [8, 13, 16, 16], "texture": "#side"},
"west": {"uv": [8, 13, 16, 16], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [8, 8, 16, 11], "texture": "#side"},
"east": {"uv": [8, 8, 16, 11], "texture": "#side"},
"south": {"uv": [8, 8, 16, 11], "texture": "#side"},
"west": {"uv": [8, 8, 16, 11], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"name": "GearCaseInnerRotated",
"from": [-2, 6.525, -2],
"to": [18, 9.475, 18],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"up": {"uv": [0, 0, 10, 10], "texture": "#4"},
"down": {"uv": [0, 0, 10, 10], "texture": "#4"}
}
},
{
"name": "Gear2",
"from": [-7, 6.025, 6.5],
"to": [23, 9.975, 9.5],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 13, 15, 15], "texture": "#4"},
"east": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 15], "texture": "#4"},
"west": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear3",
"from": [-7, 6.025, 6.5],
"to": [23, 9.975, 9.5],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 13, 15, 15], "texture": "#4"},
"east": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 15], "texture": "#4"},
"west": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear4",
"from": [6.5, 6.025, -7],
"to": [9.5, 9.975, 23],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 15], "texture": "#4"},
"south": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 15], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "GearCaseInner",
"from": [-2, 6.5, -2],
"to": [18, 9.5, 18],
"faces": {
"north": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"up": {"uv": [0, 0, 10, 10], "texture": "#4"},
"down": {"uv": [0, 0, 10, 10], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.975, 1],
"to": [15, 10.025, 15],
"faces": {
"north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"},
"down": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [-1, 5.975, 1],
"to": [1, 10.025, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [12, 0, 13, 7], "rotation": 180, "texture": "#4"},
"down": {"uv": [13, 0, 14, 7], "rotation": 180, "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.975, -1],
"to": [15, 10.025, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [13, 0, 14, 7], "rotation": 270, "texture": "#4"},
"down": {"uv": [12, 0, 13, 7], "rotation": 90, "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [15, 5.975, 1],
"to": [17, 10.025, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"up": {"uv": [15, 0, 16, 7], "texture": "#4"},
"down": {"uv": [14, 0, 15, 7], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.975, 15],
"to": [15, 10.025, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"up": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#4"},
"down": {"uv": [15, 0, 16, 7], "rotation": 270, "texture": "#4"}
}
},
{
"name": "Gear",
"from": [6.5, 6.025, -7],
"to": [9.5, 9.975, 23],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 15], "texture": "#4"},
"south": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 15], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "Gear5",
"from": [-7, 6.025, 6.5],
"to": [23, 9.975, 9.5],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 13, 15, 15], "texture": "#4"},
"east": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 15], "texture": "#4"},
"west": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear6",
"from": [6.5, 6.025, -7],
"to": [9.5, 9.975, 23],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 15], "texture": "#4"},
"south": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 15], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "Gear7",
"from": [-7, 6.025, 6.5],
"to": [23, 9.975, 9.5],
"faces": {
"north": {"uv": [0, 13, 15, 15], "texture": "#4"},
"east": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 15], "texture": "#4"},
"west": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear8",
"from": [6.5, 6.025, -7],
"to": [9.5, 9.975, 23],
"faces": {
"north": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 15], "texture": "#4"},
"south": {"uv": [10, 9, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 15], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
}
],
"groups": [
0,
1,
{
"name": "large_cogwheel",
"origin": [8, 8, 8],
"color": 0,
"children": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
}
]
}

View File

@ -3,22 +3,22 @@
"parent": "create:block/large_wheels",
"texture_size": [32, 32],
"textures": {
"0": "create:block/axis",
"0": "create:block/cogwheel_axis",
"3": "create:block/axis_top",
"particle": "block/stripped_spruce_log",
"4": "create:block/large_cogwheel"
"4": "create:block/large_cogwheel",
"particle": "block/stripped_spruce_log"
},
"elements": [
{
"name": "GearCaseInnerRotated",
"from": [-2, 6.9, -2],
"to": [18, 8.9, 18],
"from": [-2, 6.625, -2],
"to": [18, 9.375, 18],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 10, 10, 11], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11], "texture": "#4"},
"north": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"up": {"uv": [0, 0, 10, 10], "texture": "#4"},
"down": {"uv": [0, 0, 10, 10], "texture": "#4"}
}
@ -39,63 +39,63 @@
},
{
"name": "Gear2",
"from": [-7, 6.5, 6.5],
"to": [23, 9.5, 9.5],
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "texture": "#4"}
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear3",
"from": [-7, 6.5, 6.5],
"to": [23, 9.5, 9.5],
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "texture": "#4"}
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear4",
"from": [6.5, 6.5, -7],
"to": [9.5, 9.5, 23],
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "GearCaseInner",
"from": [-2, 7, -2],
"to": [18, 9, 18],
"from": [-2, 6.6, -2],
"to": [18, 9.4, 18],
"faces": {
"north": {"uv": [0, 10, 10, 11], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11], "texture": "#4"},
"north": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"up": {"uv": [0, 0, 10, 10], "texture": "#4"},
"down": {"uv": [0, 0, 10, 10], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.5, 1],
"to": [15, 10.5, 15],
"from": [1, 5.975, 1],
"to": [15, 10.025, 15],
"faces": {
"north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
@ -107,122 +107,122 @@
},
{
"name": "GearCaseOuter",
"from": [-1, 5.5, 1],
"to": [1, 10.5, 15],
"from": [-1, 5.975, 1],
"to": [1, 10.025, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [7, 15, 14, 16], "rotation": 90, "texture": "#4"},
"down": {"uv": [7, 15, 14, 16], "rotation": 90, "texture": "#4"}
"north": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [12, 0, 13, 7], "rotation": 180, "texture": "#4"},
"down": {"uv": [13, 0, 14, 7], "rotation": 180, "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [15, 5.5, 1],
"to": [17, 10.5, 15],
"from": [1, 5.975, -1],
"to": [15, 10.025, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [0, 15, 7, 16], "rotation": 270, "texture": "#4"},
"down": {"uv": [0, 15, 7, 16], "rotation": 270, "texture": "#4"}
"north": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [13, 0, 14, 7], "rotation": 270, "texture": "#4"},
"down": {"uv": [12, 0, 13, 7], "rotation": 90, "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.5, -1],
"to": [15, 10.5, 1],
"from": [15, 5.975, 1],
"to": [17, 10.025, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [7, 14, 14, 15], "rotation": 180, "texture": "#4"},
"down": {"uv": [0, 14, 7, 15], "texture": "#4"}
"north": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"up": {"uv": [15, 0, 16, 7], "texture": "#4"},
"down": {"uv": [14, 0, 15, 7], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.5, 15],
"to": [15, 10.5, 17],
"from": [1, 5.975, 15],
"to": [15, 10.025, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"},
"up": {"uv": [0, 14, 7, 15], "texture": "#4"},
"down": {"uv": [7, 14, 14, 15], "rotation": 180, "texture": "#4"}
"east": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"up": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#4"},
"down": {"uv": [15, 0, 16, 7], "rotation": 270, "texture": "#4"}
}
},
{
"name": "Gear",
"from": [6.5, 6.5, -7],
"to": [9.5, 9.5, 23],
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "Gear5",
"from": [-7, 6.5, 6.5],
"to": [23, 9.5, 9.5],
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "texture": "#4"}
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear6",
"from": [6.5, 6.5, -7],
"to": [9.5, 9.5, 23],
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "Gear7",
"from": [-7, 6.5, 6.5],
"to": [23, 9.5, 9.5],
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"faces": {
"north": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "texture": "#4"}
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear8",
"from": [6.5, 6.5, -7],
"to": [9.5, 9.5, 23],
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 12.5, 15, 14], "texture": "#4"},
"up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
}
]

View File

@ -0,0 +1,213 @@
{
"credit": "Made with Blockbench",
"parent": "create:block/large_wheels",
"texture_size": [32, 32],
"textures": {
"4": "create:block/large_cogwheel",
"particle": "block/stripped_spruce_log"
},
"elements": [
{
"name": "GearCaseInnerRotated",
"from": [-2, 6.625, -2],
"to": [18, 9.375, 18],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"up": {"uv": [0, 0, 10, 10], "texture": "#4"},
"down": {"uv": [0, 0, 10, 10], "texture": "#4"}
}
},
{
"name": "Gear2",
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear3",
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear4",
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "GearCaseInner",
"from": [-2, 6.6, -2],
"to": [18, 9.4, 18],
"faces": {
"north": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"east": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"south": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"west": {"uv": [0, 10, 10, 11.5], "texture": "#4"},
"up": {"uv": [0, 0, 10, 10], "texture": "#4"},
"down": {"uv": [0, 0, 10, 10], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.975, 1],
"to": [15, 10.025, 15],
"faces": {
"north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"},
"down": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [-1, 5.975, 1],
"to": [1, 10.025, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [12, 0, 13, 7], "rotation": 180, "texture": "#4"},
"down": {"uv": [13, 0, 14, 7], "rotation": 180, "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.975, -1],
"to": [15, 10.025, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"up": {"uv": [13, 0, 14, 7], "rotation": 270, "texture": "#4"},
"down": {"uv": [12, 0, 13, 7], "rotation": 90, "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [15, 5.975, 1],
"to": [17, 10.025, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"east": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"up": {"uv": [15, 0, 16, 7], "texture": "#4"},
"down": {"uv": [14, 0, 15, 7], "texture": "#4"}
}
},
{
"name": "GearCaseOuter",
"from": [1, 5.975, 15],
"to": [15, 10.025, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"east": {"uv": [10, 6, 11, 7], "rotation": 90, "texture": "#4"},
"south": {"uv": [10, 0, 11, 7], "rotation": 90, "texture": "#4"},
"west": {"uv": [10, 0, 11, 1], "rotation": 90, "texture": "#4"},
"up": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#4"},
"down": {"uv": [15, 0, 16, 7], "rotation": 270, "texture": "#4"}
}
},
{
"name": "Gear",
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "Gear5",
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear6",
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
},
{
"name": "Gear7",
"from": [-7, 6.525, 6.5],
"to": [23, 9.475, 9.5],
"faces": {
"north": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"south": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "texture": "#4"}
}
},
{
"name": "Gear8",
"from": [6.5, 6.525, -7],
"to": [9.5, 9.475, 23],
"faces": {
"north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"east": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"},
"west": {"uv": [0, 13, 15, 14.5], "texture": "#4"},
"up": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"},
"down": {"uv": [0, 11.5, 15, 13], "rotation": 90, "texture": "#4"}
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

After

Width:  |  Height:  |  Size: 519 B