TankState

- Added blockstates and dynamic models for the fluid tank
- "Copper Pipe" -> "Fluid Pipe"
- BlockPartials are no longer an enum
This commit is contained in:
simibubi 2020-06-15 19:14:03 +02:00
parent 0a9816504b
commit dc1ccb6741
81 changed files with 1065 additions and 287 deletions

View file

@ -36,7 +36,6 @@ e5e3757e99c139d67b2a70288466d8a74d818841 assets\create\blockstates\cogwheel.json
f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets\create\blockstates\copper_block.json f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets\create\blockstates\copper_block.json
cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets\create\blockstates\copper_casing.json cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets\create\blockstates\copper_casing.json
3355a852cdc717e257ca19b3db836068964733e3 assets\create\blockstates\copper_ore.json 3355a852cdc717e257ca19b3db836068964733e3 assets\create\blockstates\copper_ore.json
bc3bceb50a42599ace49c26240767afd02df565f assets\create\blockstates\copper_pipe.json
dc76bca1fdd41c8e6ada27fd59a2b73d7adc9596 assets\create\blockstates\copper_shingles.json dc76bca1fdd41c8e6ada27fd59a2b73d7adc9596 assets\create\blockstates\copper_shingles.json
3df0d5d5170a2f6cbab0f8a9bc8f2d64229589af assets\create\blockstates\creative_crate.json 3df0d5d5170a2f6cbab0f8a9bc8f2d64229589af assets\create\blockstates\creative_crate.json
f0031f5e970b3d5695472ed384950b8631b015ed assets\create\blockstates\creative_motor.json f0031f5e970b3d5695472ed384950b8631b015ed assets\create\blockstates\creative_motor.json
@ -115,6 +114,8 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets\create\blockstates\fancy_scoria_
fc9ac0a7e7191b93516719455a17177fa6524ecc assets\create\blockstates\fancy_weathered_limestone_bricks_slab.json fc9ac0a7e7191b93516719455a17177fa6524ecc assets\create\blockstates\fancy_weathered_limestone_bricks_slab.json
b2a7c321b1795f20e7433f81a55ce4683de081b8 assets\create\blockstates\fancy_weathered_limestone_bricks_stairs.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets\create\blockstates\fancy_weathered_limestone_bricks_stairs.json
6372fe02ba0065acb0758121c45a15a1a8fdc5de assets\create\blockstates\fancy_weathered_limestone_bricks_wall.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets\create\blockstates\fancy_weathered_limestone_bricks_wall.json
1f290b70c7cdd53e336081ee5707fd25d08c0e2c assets\create\blockstates\fluid_pipe.json
9d0e78a4d6d0ccac37c06d0f5810a800a04844b2 assets\create\blockstates\fluid_tank.json
e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets\create\blockstates\flywheel.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets\create\blockstates\flywheel.json
ac00d40e1ef50a37041c0481afa1a23a14dea78e assets\create\blockstates\framed_glass.json ac00d40e1ef50a37041c0481afa1a23a14dea78e assets\create\blockstates\framed_glass.json
61df7769fa61f6dd2868a4377e54320fdd473b4e assets\create\blockstates\framed_glass_pane.json 61df7769fa61f6dd2868a4377e54320fdd473b4e assets\create\blockstates\framed_glass_pane.json
@ -275,7 +276,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor
e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json
3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json
469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json
5c1df061eb5efe49beee7219e113206fc31a4733 assets\create\blockstates\radial_chassis.json 4e1fb033316e9230d2f024d67c27940ea731643a assets\create\blockstates\radial_chassis.json
8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json
c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json
1eac804cba08aebb5f4646758ae1ef9b32e01365 assets\create\blockstates\reinforced_rail.json 1eac804cba08aebb5f4646758ae1ef9b32e01365 assets\create\blockstates\reinforced_rail.json
@ -327,8 +328,8 @@ c60c3115fd6eeaa3a696428a87a74d184ab7d62d assets\create\blockstates\weathered_lim
c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json
7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json
3afe2434c36e1af9b04d5adda313f31db68c5040 assets\create\lang\en_ud.json 05ddd800cd29517673ff1fd9c1a7822fa1dc90b4 assets\create\lang\en_ud.json
d3bec6b99c6fee4728ed4a49e01ccc4715273d06 assets\create\lang\en_us.json 11587273ab49f31954226f5230da941c31463460 assets\create\lang\en_us.json
846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json
1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json
1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json
@ -401,27 +402,6 @@ ac07568fa7b2d3fa84d0fe89a498514d30514291 assets\create\models\block\chiseled_sco
ecb2b85ee210dce329d2be66b98d0f0d4e6fc223 assets\create\models\block\chiseled_weathered_limestone.json ecb2b85ee210dce329d2be66b98d0f0d4e6fc223 assets\create\models\block\chiseled_weathered_limestone.json
f9a3f0939ea43b404eb2826b94211a25fca5ebc2 assets\create\models\block\clockwork_bearing.json f9a3f0939ea43b404eb2826b94211a25fca5ebc2 assets\create\models\block\clockwork_bearing.json
70406933cc4fa5471af6e562fd84a397347dba17 assets\create\models\block\copper_casing.json 70406933cc4fa5471af6e562fd84a397347dba17 assets\create\models\block\copper_casing.json
84d3ba609f4d977977ebb44b46a1623879b9f30d assets\create\models\block\copper_pipe\ld_x.json
a185744cb718e72b8ccd4cdf7b9f85dfed62227b assets\create\models\block\copper_pipe\ld_y.json
ce12231c7d40f242cbb2e4a789c01777e8c2e189 assets\create\models\block\copper_pipe\ld_z.json
ad91bc4b916fb0445f051680b1710f20c7e818c3 assets\create\models\block\copper_pipe\lr_x.json
a4d8803d7ced28ba0c5c40cc694914ca344bb9cc assets\create\models\block\copper_pipe\lr_y.json
33cf12086e8362cd84da0fc684156323537ac31a assets\create\models\block\copper_pipe\lr_z.json
c5c636b16425d7fa827361512f9233c6cb054945 assets\create\models\block\copper_pipe\lu_x.json
0e5f387899a23902d84c27277665a221f29afb1f assets\create\models\block\copper_pipe\lu_y.json
cbf217c4971622a70d151623ff9f6edfd7f881a4 assets\create\models\block\copper_pipe\lu_z.json
86fbb2a8d0475044394137a7a7aec2c58bff9a3b assets\create\models\block\copper_pipe\none_x.json
d8bc59c2a86253715c8e4160115d9b1ba7e536c9 assets\create\models\block\copper_pipe\none_y.json
718305fffa1b9e78bf03690fbe655b86bae40ae1 assets\create\models\block\copper_pipe\none_z.json
1d99c2889d06401b98207a924489337b0c77026f assets\create\models\block\copper_pipe\rd_x.json
521ddedf28ed1a1fed78d12f505e22cd45120caa assets\create\models\block\copper_pipe\rd_y.json
bd774fb0ab18e94c1c8969acfaca4d7b7b9a8564 assets\create\models\block\copper_pipe\rd_z.json
d8e06415a5f05fcd86004cb45207144f5ae74afe assets\create\models\block\copper_pipe\ru_x.json
d6c91e3025c48fee267c10acb9d0f77036f178e4 assets\create\models\block\copper_pipe\ru_y.json
df11c86477a785f7c61b2e0b491996fb49527a76 assets\create\models\block\copper_pipe\ru_z.json
d29742ac5c34f856adf29e3c4ce6e5abf5c17e0e assets\create\models\block\copper_pipe\ud_x.json
40b288882daf5a47759f8d9db27f90b17ad1d8e0 assets\create\models\block\copper_pipe\ud_y.json
657ae1d3a5de431ee852eb12006a1ce211944607 assets\create\models\block\copper_pipe\ud_z.json
1ef7060b0ca7e9c0bfc8151f98ca08da31862cda assets\create\models\block\crate\brass\bottom.json 1ef7060b0ca7e9c0bfc8151f98ca08da31862cda assets\create\models\block\crate\brass\bottom.json
4ef2c7c3018f2d219f159a3ce58ceb00610b9c5d assets\create\models\block\crate\brass\left.json 4ef2c7c3018f2d219f159a3ce58ceb00610b9c5d assets\create\models\block\crate\brass\left.json
c76cfec1279d307c52f9502fdba3425f38219168 assets\create\models\block\crate\brass\right.json c76cfec1279d307c52f9502fdba3425f38219168 assets\create\models\block\crate\brass\right.json
@ -563,6 +543,27 @@ fff01c45f01d2b1c4c0555f2ab4d66442c90148e assets\create\models\block\fancy_weathe
1ea72b0ca54c8237351b4be0a7b44b94a8b0bb87 assets\create\models\block\fancy_weathered_limestone_bricks_stairs_outer.json 1ea72b0ca54c8237351b4be0a7b44b94a8b0bb87 assets\create\models\block\fancy_weathered_limestone_bricks_stairs_outer.json
d7385af6e7c8124fda4d391c2e7fba55cdc9977e assets\create\models\block\fancy_weathered_limestone_bricks_wall_post.json d7385af6e7c8124fda4d391c2e7fba55cdc9977e assets\create\models\block\fancy_weathered_limestone_bricks_wall_post.json
215671ac8e468015e8d52054c863110465c33fc9 assets\create\models\block\fancy_weathered_limestone_bricks_wall_side.json 215671ac8e468015e8d52054c863110465c33fc9 assets\create\models\block\fancy_weathered_limestone_bricks_wall_side.json
71f74388319567d4ab13c508bf3b4d59f1a19b2f assets\create\models\block\fluid_pipe\ld_x.json
bd6b0c6d773e3996d949de55873d20b0e192499d assets\create\models\block\fluid_pipe\ld_y.json
ddba92d010016a0147ceecc30a30c9c1622d3daa assets\create\models\block\fluid_pipe\ld_z.json
451b1d6934cb5dfe24b8adcc3b4a03a0d2be854c assets\create\models\block\fluid_pipe\lr_x.json
0276dc98fdac701d6dd8759325bbb9cab1fd4e9d assets\create\models\block\fluid_pipe\lr_y.json
c7b8990a135f7c85f4c746b9d65ccd12f1c91682 assets\create\models\block\fluid_pipe\lr_z.json
4613bc343fa2989234cca21d407bf23131856729 assets\create\models\block\fluid_pipe\lu_x.json
596ac821bce7ce390ff7db9a8f4e33504b657e78 assets\create\models\block\fluid_pipe\lu_y.json
693cdb2c8673161b2c12a05826ef881293db43d1 assets\create\models\block\fluid_pipe\lu_z.json
05159abc175a1fc9f4909ffa13090d0e142fa526 assets\create\models\block\fluid_pipe\none_x.json
e96e9c244b9392a0b328caa6084dc78bebca8b03 assets\create\models\block\fluid_pipe\none_y.json
85129ba2b9b8794e4e9424ad4428a5d7a5b56c41 assets\create\models\block\fluid_pipe\none_z.json
9d99fcd87fddfdf6f525e4d81cf08f1abfd3c749 assets\create\models\block\fluid_pipe\rd_x.json
4d823bc466fc21d080e2fcac3c8fdeb8f74a5f98 assets\create\models\block\fluid_pipe\rd_y.json
26d9d1c0f249a301d03497a1455335d1654f6db3 assets\create\models\block\fluid_pipe\rd_z.json
7cd3f00c05a2beb1b438c8daa415db258095bf2b assets\create\models\block\fluid_pipe\ru_x.json
c09f2f36e3df4642b48f9e331d5000c4f58047ca assets\create\models\block\fluid_pipe\ru_y.json
690c9c3dd5ad31a5f885ecaac4aa6d3a1ccbf7fe assets\create\models\block\fluid_pipe\ru_z.json
2635da812f9dec0c408fed329b3962bd14972d95 assets\create\models\block\fluid_pipe\ud_x.json
4a0d4fb1aaf05b8f388e4add0f45d2a22dde2ce6 assets\create\models\block\fluid_pipe\ud_y.json
f7d3a9ff5a0d050f5822dba9ec6cb68a2e4cdecf assets\create\models\block\fluid_pipe\ud_z.json
9730fcb02f679087e81e24c836751e625be6a298 assets\create\models\block\framed_glass.json 9730fcb02f679087e81e24c836751e625be6a298 assets\create\models\block\framed_glass.json
d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets\create\models\block\framed_glass_pane_noside.json d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets\create\models\block\framed_glass_pane_noside.json
3e975bec02e2670ce2b1868cebcbd780a5ebf3f8 assets\create\models\block\framed_glass_pane_noside_alt.json 3e975bec02e2670ce2b1868cebcbd780a5ebf3f8 assets\create\models\block\framed_glass_pane_noside_alt.json
@ -963,7 +964,6 @@ dcb09deae110077bcddf090996b51cc66e9a7de3 assets\create\models\item\cogwheel.json
c5bcfba46f5824654dedaa2c5d5f42deb29e3baf assets\create\models\item\copper_ingot.json c5bcfba46f5824654dedaa2c5d5f42deb29e3baf assets\create\models\item\copper_ingot.json
3cdb321193355af630ee0e0b18bf24a9469aabad assets\create\models\item\copper_nugget.json 3cdb321193355af630ee0e0b18bf24a9469aabad assets\create\models\item\copper_nugget.json
51be7da59368681522de870f1e09036dac55aa77 assets\create\models\item\copper_ore.json 51be7da59368681522de870f1e09036dac55aa77 assets\create\models\item\copper_ore.json
e950d4812c3488ca86f58260638208e8f64042f2 assets\create\models\item\copper_pipe.json
200ef8378a9c014571c414433d4aef73a204dc01 assets\create\models\item\copper_sheet.json 200ef8378a9c014571c414433d4aef73a204dc01 assets\create\models\item\copper_sheet.json
d7cb2f7bac8fae893fc5179af8140786a908f3f5 assets\create\models\item\copper_shingles.json d7cb2f7bac8fae893fc5179af8140786a908f3f5 assets\create\models\item\copper_shingles.json
4e9126b349d55c65aa5407f05700579e52101c1f assets\create\models\item\crafter_slot_cover.json 4e9126b349d55c65aa5407f05700579e52101c1f assets\create\models\item\crafter_slot_cover.json
@ -1053,6 +1053,8 @@ ce6ee1fe4a92e26af75c2eaebd5055efdbdff169 assets\create\models\item\fancy_scoria_
8fc219b471382cf67d2271edda14d173d40ae661 assets\create\models\item\fancy_weathered_limestone_bricks_slab.json 8fc219b471382cf67d2271edda14d173d40ae661 assets\create\models\item\fancy_weathered_limestone_bricks_slab.json
7c1ed1241d55b105f7acb997d7c0e24b4b945293 assets\create\models\item\fancy_weathered_limestone_bricks_stairs.json 7c1ed1241d55b105f7acb997d7c0e24b4b945293 assets\create\models\item\fancy_weathered_limestone_bricks_stairs.json
7bdb3d8a59586654df0c2a84d73a346b898d247b assets\create\models\item\fancy_weathered_limestone_bricks_wall.json 7bdb3d8a59586654df0c2a84d73a346b898d247b assets\create\models\item\fancy_weathered_limestone_bricks_wall.json
e5e6fb6eb182b85b977e1025a7fe84d46de59320 assets\create\models\item\fluid_pipe.json
04b679a9342b0b5164c9fc8026b8fce5a067d511 assets\create\models\item\fluid_tank.json
8707332c0cb6ee123e7962d08536a60725c64ce8 assets\create\models\item\flywheel.json 8707332c0cb6ee123e7962d08536a60725c64ce8 assets\create\models\item\flywheel.json
d62b93d3c274d280f3eec22a28b5175943411d25 assets\create\models\item\framed_glass.json d62b93d3c274d280f3eec22a28b5175943411d25 assets\create\models\item\framed_glass.json
1041d462c6e856f7f3f2365c299c0599703d1ed7 assets\create\models\item\framed_glass_pane.json 1041d462c6e856f7f3f2365c299c0599703d1ed7 assets\create\models\item\framed_glass_pane.json
@ -1737,7 +1739,6 @@ d76113310fc56eca6382d44df174096f2210d416 data\create\loot_tables\blocks\clutch.j
f38802b919c49f162f102d6e5d94113f05bf4ab1 data\create\loot_tables\blocks\copper_block.json f38802b919c49f162f102d6e5d94113f05bf4ab1 data\create\loot_tables\blocks\copper_block.json
5a65a18ea787130ac7b8f5652bfa5ed187446649 data\create\loot_tables\blocks\copper_casing.json 5a65a18ea787130ac7b8f5652bfa5ed187446649 data\create\loot_tables\blocks\copper_casing.json
31a51237763c374b7cdf39b9b62c14e965871047 data\create\loot_tables\blocks\copper_ore.json 31a51237763c374b7cdf39b9b62c14e965871047 data\create\loot_tables\blocks\copper_ore.json
f5930a4583844c3fc52b515131d54946dc6b24e0 data\create\loot_tables\blocks\copper_pipe.json
a5a7ba88a1d38da83b37bbe842dc7cc0544f37be data\create\loot_tables\blocks\copper_shingles.json a5a7ba88a1d38da83b37bbe842dc7cc0544f37be data\create\loot_tables\blocks\copper_shingles.json
b160899aa785dc54d8c6cc095337f70b81f3e44f data\create\loot_tables\blocks\creative_crate.json b160899aa785dc54d8c6cc095337f70b81f3e44f data\create\loot_tables\blocks\creative_crate.json
d8f2f8921b9200b1d9476a77ee1be32c25308ac3 data\create\loot_tables\blocks\creative_motor.json d8f2f8921b9200b1d9476a77ee1be32c25308ac3 data\create\loot_tables\blocks\creative_motor.json
@ -1816,6 +1817,8 @@ a919a7333a2309392ba6908cd2330d014c0b44da data\create\loot_tables\blocks\fancy_li
e4d0fe35d3441a5815bd4e1357329b284e63ecd8 data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_slab.json e4d0fe35d3441a5815bd4e1357329b284e63ecd8 data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_slab.json
1be3aae5c0aa8b3c3750db79699e9350adb12231 data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_stairs.json 1be3aae5c0aa8b3c3750db79699e9350adb12231 data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_stairs.json
6bb505bad78cbb01a5cb5a069435bf4ed0e62adf data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_wall.json 6bb505bad78cbb01a5cb5a069435bf4ed0e62adf data\create\loot_tables\blocks\fancy_weathered_limestone_bricks_wall.json
c8aa9bbed8fd703eb1853de0b7c9e04dffb7a511 data\create\loot_tables\blocks\fluid_pipe.json
108d27b697d2ea0719d74a704c6e344a8d63375b data\create\loot_tables\blocks\fluid_tank.json
f37526c092c645045c22674dea6c7b1ec503c9c3 data\create\loot_tables\blocks\flywheel.json f37526c092c645045c22674dea6c7b1ec503c9c3 data\create\loot_tables\blocks\flywheel.json
ce0bb978b11935bc2d1218445f8ab18099af6b8a data\create\loot_tables\blocks\framed_glass.json ce0bb978b11935bc2d1218445f8ab18099af6b8a data\create\loot_tables\blocks\framed_glass.json
89bd90ecd7a1ce1f75bd873989cc58a84c8dcef9 data\create\loot_tables\blocks\framed_glass_pane.json 89bd90ecd7a1ce1f75bd873989cc58a84c8dcef9 data\create\loot_tables\blocks\framed_glass_pane.json

View file

@ -5,7 +5,7 @@
"down": "true" "down": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/block_end", "model": "create:block/fluid_pipe/block_end",
"x": 180, "x": 180,
"y": 90 "y": 90
} }
@ -15,7 +15,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/block_end", "model": "create:block/fluid_pipe/block_end",
"y": 90 "y": 90
} }
}, },
@ -24,7 +24,7 @@
"north": "true" "north": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/block_end", "model": "create:block/fluid_pipe/block_end",
"x": 90 "x": 90
} }
}, },
@ -33,7 +33,7 @@
"south": "true" "south": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/block_end", "model": "create:block/fluid_pipe/block_end",
"x": 90, "x": 90,
"y": 180 "y": 180
} }
@ -43,7 +43,7 @@
"west": "true" "west": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/block_end", "model": "create:block/fluid_pipe/block_end",
"x": 90, "x": 90,
"y": 270 "y": 270
} }
@ -53,7 +53,7 @@
"east": "true" "east": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/block_end", "model": "create:block/fluid_pipe/block_end",
"x": 90, "x": 90,
"y": 90 "y": 90
} }
@ -66,7 +66,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lu_x" "model": "create:block/fluid_pipe/lu_x"
} }
}, },
{ {
@ -77,7 +77,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ru_x" "model": "create:block/fluid_pipe/ru_x"
} }
}, },
{ {
@ -88,7 +88,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ld_x" "model": "create:block/fluid_pipe/ld_x"
} }
}, },
{ {
@ -99,7 +99,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/rd_x" "model": "create:block/fluid_pipe/rd_x"
} }
}, },
{ {
@ -110,7 +110,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_x" "model": "create:block/fluid_pipe/ud_x"
} }
}, },
{ {
@ -121,7 +121,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_x" "model": "create:block/fluid_pipe/ud_x"
} }
}, },
{ {
@ -132,7 +132,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_x" "model": "create:block/fluid_pipe/ud_x"
} }
}, },
{ {
@ -143,7 +143,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_x" "model": "create:block/fluid_pipe/lr_x"
} }
}, },
{ {
@ -154,7 +154,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_x" "model": "create:block/fluid_pipe/lr_x"
} }
}, },
{ {
@ -165,7 +165,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_x" "model": "create:block/fluid_pipe/lr_x"
} }
}, },
{ {
@ -176,7 +176,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/none_x" "model": "create:block/fluid_pipe/none_x"
} }
}, },
{ {
@ -187,7 +187,7 @@
"west": "true" "west": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lu_y" "model": "create:block/fluid_pipe/lu_y"
} }
}, },
{ {
@ -198,7 +198,7 @@
"west": "false" "west": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ru_y" "model": "create:block/fluid_pipe/ru_y"
} }
}, },
{ {
@ -209,7 +209,7 @@
"west": "true" "west": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ld_y" "model": "create:block/fluid_pipe/ld_y"
} }
}, },
{ {
@ -220,7 +220,7 @@
"west": "false" "west": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/rd_y" "model": "create:block/fluid_pipe/rd_y"
} }
}, },
{ {
@ -231,7 +231,7 @@
"west": "false" "west": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_y" "model": "create:block/fluid_pipe/ud_y"
} }
}, },
{ {
@ -242,7 +242,7 @@
"west": "false" "west": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_y" "model": "create:block/fluid_pipe/ud_y"
} }
}, },
{ {
@ -253,7 +253,7 @@
"west": "false" "west": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_y" "model": "create:block/fluid_pipe/ud_y"
} }
}, },
{ {
@ -264,7 +264,7 @@
"west": "true" "west": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_y" "model": "create:block/fluid_pipe/lr_y"
} }
}, },
{ {
@ -275,7 +275,7 @@
"west": "true" "west": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_y" "model": "create:block/fluid_pipe/lr_y"
} }
}, },
{ {
@ -286,7 +286,7 @@
"west": "false" "west": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_y" "model": "create:block/fluid_pipe/lr_y"
} }
}, },
{ {
@ -297,7 +297,7 @@
"west": "false" "west": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/none_y" "model": "create:block/fluid_pipe/none_y"
} }
}, },
{ {
@ -308,7 +308,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lu_z" "model": "create:block/fluid_pipe/lu_z"
} }
}, },
{ {
@ -319,7 +319,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ru_z" "model": "create:block/fluid_pipe/ru_z"
} }
}, },
{ {
@ -330,7 +330,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ld_z" "model": "create:block/fluid_pipe/ld_z"
} }
}, },
{ {
@ -341,7 +341,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/rd_z" "model": "create:block/fluid_pipe/rd_z"
} }
}, },
{ {
@ -352,7 +352,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_z" "model": "create:block/fluid_pipe/ud_z"
} }
}, },
{ {
@ -363,7 +363,7 @@
"up": "true" "up": "true"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_z" "model": "create:block/fluid_pipe/ud_z"
} }
}, },
{ {
@ -374,7 +374,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/ud_z" "model": "create:block/fluid_pipe/ud_z"
} }
}, },
{ {
@ -385,7 +385,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_z" "model": "create:block/fluid_pipe/lr_z"
} }
}, },
{ {
@ -396,7 +396,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_z" "model": "create:block/fluid_pipe/lr_z"
} }
}, },
{ {
@ -407,7 +407,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/lr_z" "model": "create:block/fluid_pipe/lr_z"
} }
}, },
{ {
@ -418,7 +418,7 @@
"up": "false" "up": "false"
}, },
"apply": { "apply": {
"model": "create:block/copper_pipe/none_z" "model": "create:block/fluid_pipe/none_z"
} }
} }
] ]

View file

@ -0,0 +1,25 @@
{
"multipart": [
{
"when": {
"top": "true"
},
"apply": {
"model": "create:block/fluid_tank/block_top"
}
},
{
"apply": {
"model": "create:block/fluid_tank/block_windows"
}
},
{
"when": {
"bottom": "true"
},
"apply": {
"model": "create:block/fluid_tank/block_bottom"
}
}
]
}

View file

@ -29,8 +29,8 @@
}, },
{ {
"when": { "when": {
"sticky_south": "true", "axis": "x",
"axis": "x" "sticky_south": "true"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky", "model": "create:block/radial_chassis_side_x_sticky",
@ -39,8 +39,8 @@
}, },
{ {
"when": { "when": {
"sticky_south": "true", "axis": "y",
"axis": "y" "sticky_south": "true"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y_sticky" "model": "create:block/radial_chassis_side_y_sticky"
@ -48,8 +48,8 @@
}, },
{ {
"when": { "when": {
"sticky_south": "true", "axis": "z",
"axis": "z" "sticky_south": "true"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x_sticky", "model": "create:block/radial_chassis_side_x_sticky",
@ -59,8 +59,8 @@
}, },
{ {
"when": { "when": {
"sticky_south": "false", "axis": "x",
"axis": "x" "sticky_south": "false"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x", "model": "create:block/radial_chassis_side_x",
@ -69,8 +69,8 @@
}, },
{ {
"when": { "when": {
"sticky_south": "false", "axis": "y",
"axis": "y" "sticky_south": "false"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_y" "model": "create:block/radial_chassis_side_y"
@ -78,8 +78,8 @@
}, },
{ {
"when": { "when": {
"sticky_south": "false", "axis": "z",
"axis": "z" "sticky_south": "false"
}, },
"apply": { "apply": {
"model": "create:block/radial_chassis_side_x", "model": "create:block/radial_chassis_side_x",

View file

@ -37,7 +37,6 @@
"block.create.copper_block": "\u029E\u0254o\u05DF\u15FA \u0279\u01DDddo\u0186", "block.create.copper_block": "\u029E\u0254o\u05DF\u15FA \u0279\u01DDddo\u0186",
"block.create.copper_casing": "bu\u0131s\u0250\u0186 \u0279\u01DDddo\u0186", "block.create.copper_casing": "bu\u0131s\u0250\u0186 \u0279\u01DDddo\u0186",
"block.create.copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186", "block.create.copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186",
"block.create.copper_pipe": "\u01DDd\u0131\u0500 \u0279\u01DDddo\u0186",
"block.create.copper_shingles": "s\u01DD\u05DFbu\u0131\u0265S \u0279\u01DDddo\u0186", "block.create.copper_shingles": "s\u01DD\u05DFbu\u0131\u0265S \u0279\u01DDddo\u0186",
"block.create.creative_crate": "\u01DD\u0287\u0250\u0279\u0186 \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", "block.create.creative_crate": "\u01DD\u0287\u0250\u0279\u0186 \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186",
"block.create.creative_motor": "\u0279o\u0287oW \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", "block.create.creative_motor": "\u0279o\u0287oW \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186",
@ -116,6 +115,8 @@
"block.create.fancy_weathered_limestone_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132", "block.create.fancy_weathered_limestone_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132",
"block.create.fancy_weathered_limestone_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132", "block.create.fancy_weathered_limestone_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132",
"block.create.fancy_weathered_limestone_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132", "block.create.fancy_weathered_limestone_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132",
"block.create.fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132",
"block.create.fluid_tank": "\u029Eu\u0250\u27D8 p\u0131n\u05DF\u2132",
"block.create.flywheel": "\u05DF\u01DD\u01DD\u0265\u028D\u028E\u05DF\u2132", "block.create.flywheel": "\u05DF\u01DD\u01DD\u0265\u028D\u028E\u05DF\u2132",
"block.create.framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132", "block.create.framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132",
"block.create.framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132", "block.create.framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132",

View file

@ -40,7 +40,6 @@
"block.create.copper_block": "Copper Block", "block.create.copper_block": "Copper Block",
"block.create.copper_casing": "Copper Casing", "block.create.copper_casing": "Copper Casing",
"block.create.copper_ore": "Copper Ore", "block.create.copper_ore": "Copper Ore",
"block.create.copper_pipe": "Copper Pipe",
"block.create.copper_shingles": "Copper Shingles", "block.create.copper_shingles": "Copper Shingles",
"block.create.creative_crate": "Creative Crate", "block.create.creative_crate": "Creative Crate",
"block.create.creative_motor": "Creative Motor", "block.create.creative_motor": "Creative Motor",
@ -119,6 +118,8 @@
"block.create.fancy_weathered_limestone_bricks_slab": "Fancy Weathered Limestone Bricks Slab", "block.create.fancy_weathered_limestone_bricks_slab": "Fancy Weathered Limestone Bricks Slab",
"block.create.fancy_weathered_limestone_bricks_stairs": "Fancy Weathered Limestone Bricks Stairs", "block.create.fancy_weathered_limestone_bricks_stairs": "Fancy Weathered Limestone Bricks Stairs",
"block.create.fancy_weathered_limestone_bricks_wall": "Fancy Weathered Limestone Bricks Wall", "block.create.fancy_weathered_limestone_bricks_wall": "Fancy Weathered Limestone Bricks Wall",
"block.create.fluid_pipe": "Fluid Pipe",
"block.create.fluid_tank": "Fluid Tank",
"block.create.flywheel": "Flywheel", "block.create.flywheel": "Flywheel",
"block.create.framed_glass": "Framed Glass", "block.create.framed_glass": "Framed Glass",
"block.create.framed_glass_pane": "Framed Glass Pane", "block.create.framed_glass_pane": "Framed Glass Pane",

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_x", "parent": "create:block/fluid_pipe/core_x",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_y", "parent": "create:block/fluid_pipe/core_y",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_z", "parent": "create:block/fluid_pipe/core_z",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_x", "parent": "create:block/fluid_pipe/core_x",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_y", "parent": "create:block/fluid_pipe/core_y",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_z", "parent": "create:block/fluid_pipe/core_z",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_x", "parent": "create:block/fluid_pipe/core_x",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_y", "parent": "create:block/fluid_pipe/core_y",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_z", "parent": "create:block/fluid_pipe/core_z",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_x", "parent": "create:block/fluid_pipe/core_x",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_y", "parent": "create:block/fluid_pipe/core_y",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_z", "parent": "create:block/fluid_pipe/core_z",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_x", "parent": "create:block/fluid_pipe/core_x",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_y", "parent": "create:block/fluid_pipe/core_y",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_z", "parent": "create:block/fluid_pipe/core_z",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_x", "parent": "create:block/fluid_pipe/core_x",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_y", "parent": "create:block/fluid_pipe/core_y",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_z", "parent": "create:block/fluid_pipe/core_z",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_x", "parent": "create:block/fluid_pipe/core_x",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_y", "parent": "create:block/fluid_pipe/core_y",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/copper_pipe/core_z", "parent": "create:block/fluid_pipe/core_z",
"elements": [ "elements": [
{ {
"from": [ "from": [

View file

@ -1,3 +0,0 @@
{
"parent": "create:block/copper_pipe/item"
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/fluid_pipe/item"
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/fluid_tank/item"
}

View file

@ -6,7 +6,7 @@
"entries": [ "entries": [
{ {
"type": "minecraft:item", "type": "minecraft:item",
"name": "create:copper_pipe" "name": "create:fluid_pipe"
} }
], ],
"conditions": [ "conditions": [

View file

@ -0,0 +1,19 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "create:fluid_tank"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}

View file

@ -3,11 +3,16 @@ package com.simibubi.create;
import static net.minecraft.state.properties.BlockStateProperties.FACING; import static net.minecraft.state.properties.BlockStateProperties.FACING;
import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.foundation.utility.AngleHelper; import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.MatrixStacker; import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.SuperByteBuffer; import com.simibubi.create.foundation.utility.SuperByteBuffer;
@ -19,101 +24,124 @@ import net.minecraftforge.client.event.ModelBakeEvent;
import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoader;
public enum AllBlockPartials { public class AllBlockPartials {
SCHEMATICANNON_CONNECTOR("schematicannon/connector"), private static List<AllBlockPartials> all = new ArrayList<>();
SCHEMATICANNON_PIPE("schematicannon/pipe"),
SHAFTLESS_COGWHEEL("cogwheel_shaftless"),
BELT_PULLEY,
SHAFT_HALF,
ENCASED_FAN_INNER("encased_fan/propeller"),
HAND_CRANK_HANDLE("hand_crank/handle"),
MECHANICAL_PRESS_HEAD("mechanical_press/head"),
MECHANICAL_MIXER_POLE("mechanical_mixer/pole"),
MECHANICAL_MIXER_HEAD("mechanical_mixer/head"),
MECHANICAL_CRAFTER_LID("mechanical_crafter/lid"),
MECHANICAL_CRAFTER_ARROW("mechanical_crafter/arrow"),
MECHANICAL_CRAFTER_BELT_FRAME("mechanical_crafter/belt"),
MECHANICAL_CRAFTER_BELT("mechanical_crafter/belt_animated"),
GAUGE_DIAL("gauge/dial"),
GAUGE_INDICATOR("gauge/indicator"),
GAUGE_HEAD_SPEED("gauge/speedometer/head"),
GAUGE_HEAD_STRESS("gauge/stressometer/head"),
BEARING_TOP("bearing/top"),
DRILL_HEAD("mechanical_drill/head"),
HARVESTER_BLADE("mechanical_harvester/blade"),
DEPLOYER_POLE("deployer/pole"),
DEPLOYER_HAND_POINTING("deployer/hand_pointing"),
DEPLOYER_HAND_PUNCHING("deployer/hand_punching"),
DEPLOYER_HAND_HOLDING("deployer/hand_holding"),
ANALOG_LEVER_HANDLE("analog_lever/handle"),
ANALOG_LEVER_INDICATOR("analog_lever/indicator"),
BELT_TUNNEL_FLAP("belt_tunnel/flap"),
BELT_TUNNEL_INDICATOR("belt_tunnel/indicator"),
FLEXPEATER_INDICATOR("diodes/indicator"),
FLYWHEEL("flywheel/wheel"),
FLYWHEEL_UPPER_ROTATING("flywheel/upper_rotating_connector"),
FLYWHEEL_LOWER_ROTATING("flywheel/lower_rotating_connector"),
FLYWHEEL_UPPER_SLIDING("flywheel/upper_sliding_connector"),
FLYWHEEL_LOWER_SLIDING("flywheel/lower_sliding_connector"),
FURNACE_GENERATOR_FRAME("furnace_engine/frame"),
CUCKOO_MINUTE_HAND("cuckoo_clock/minute_hand"),
CUCKOO_HOUR_HAND("cuckoo_clock/hour_hand"),
CUCKOO_LEFT_DOOR("cuckoo_clock/left_door"),
CUCKOO_RIGHT_DOOR("cuckoo_clock/right_door"),
CUCKOO_PIG("cuckoo_clock/pig"),
CUCKOO_CREEPER("cuckoo_clock/creeper"),
ROPE_COIL("rope_pulley/rope_coil"),
ROPE_HALF("rope_pulley/rope_half"),
ROPE_HALF_MAGNET("rope_pulley/rope_half_magnet"),
MILLSTONE_COG("millstone/inner"),
SYMMETRY_PLANE("symmetry_effect/plane"),
SYMMETRY_CROSSPLANE("symmetry_effect/crossplane"),
SYMMETRY_TRIPLEPLANE("symmetry_effect/tripleplane"),
COPPER_PIPE_CASING("copper_pipe/casing"), public static final AllBlockPartials
COPPER_PIPE_RIM_UP("copper_pipe/rim/up"), SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"),
COPPER_PIPE_RIM_DOWN("copper_pipe/rim/down"), SCHEMATICANNON_PIPE = get("schematicannon/pipe"),
COPPER_PIPE_RIM_EAST("copper_pipe/rim/east"),
COPPER_PIPE_RIM_WEST("copper_pipe/rim/west"), SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"),
COPPER_PIPE_RIM_NORTH("copper_pipe/rim/north"), BELT_PULLEY = get("belt_pulley"),
COPPER_PIPE_RIM_SOUTH("copper_pipe/rim/south"), SHAFT_HALF = get("shaft_half"),
MECHANICAL_PUMP_ARROW("mechanical_pump/arrow"), ENCASED_FAN_INNER = get("encased_fan/propeller"),
MECHANICAL_PUMP_COG("mechanical_pump/cog"), HAND_CRANK_HANDLE = get("hand_crank/handle"),
MECHANICAL_PRESS_HEAD = get("mechanical_press/head"),
MECHANICAL_MIXER_POLE = get("mechanical_mixer/pole"),
MECHANICAL_MIXER_HEAD = get("mechanical_mixer/head"),
MECHANICAL_CRAFTER_LID = get("mechanical_crafter/lid"),
MECHANICAL_CRAFTER_ARROW = get("mechanical_crafter/arrow"),
MECHANICAL_CRAFTER_BELT_FRAME = get("mechanical_crafter/belt"),
MECHANICAL_CRAFTER_BELT = get("mechanical_crafter/belt_animated"),
GAUGE_DIAL = get("gauge/dial"),
GAUGE_INDICATOR = get("gauge/indicator"),
GAUGE_HEAD_SPEED = get("gauge/speedometer/head"),
GAUGE_HEAD_STRESS = get("gauge/stressometer/head"),
BEARING_TOP = get("bearing/top"),
DRILL_HEAD = get("mechanical_drill/head"),
HARVESTER_BLADE = get("mechanical_harvester/blade"),
DEPLOYER_POLE = get("deployer/pole"),
DEPLOYER_HAND_POINTING = get("deployer/hand_pointing"),
DEPLOYER_HAND_PUNCHING = get("deployer/hand_punching"),
DEPLOYER_HAND_HOLDING = get("deployer/hand_holding"),
ANALOG_LEVER_HANDLE = get("analog_lever/handle"),
ANALOG_LEVER_INDICATOR = get("analog_lever/indicator"),
BELT_TUNNEL_FLAP = get("belt_tunnel/flap"),
BELT_TUNNEL_INDICATOR = get("belt_tunnel/indicator"),
FLEXPEATER_INDICATOR = get("diodes/indicator"),
FLYWHEEL = get("flywheel/wheel"),
FLYWHEEL_UPPER_ROTATING = get("flywheel/upper_rotating_connector"),
FLYWHEEL_LOWER_ROTATING = get("flywheel/lower_rotating_connector"),
FLYWHEEL_UPPER_SLIDING = get("flywheel/upper_sliding_connector"),
FLYWHEEL_LOWER_SLIDING = get("flywheel/lower_sliding_connector"),
FURNACE_GENERATOR_FRAME = get("furnace_engine/frame"),
CUCKOO_MINUTE_HAND = get("cuckoo_clock/minute_hand"),
CUCKOO_HOUR_HAND = get("cuckoo_clock/hour_hand"),
CUCKOO_LEFT_DOOR = get("cuckoo_clock/left_door"),
CUCKOO_RIGHT_DOOR = get("cuckoo_clock/right_door"),
CUCKOO_PIG = get("cuckoo_clock/pig"),
CUCKOO_CREEPER = get("cuckoo_clock/creeper"),
ROPE_COIL = get("rope_pulley/rope_coil"),
ROPE_HALF = get("rope_pulley/rope_half"),
ROPE_HALF_MAGNET = get("rope_pulley/rope_half_magnet"),
MILLSTONE_COG = get("millstone/inner"),
SYMMETRY_PLANE = get("symmetry_effect/plane"),
SYMMETRY_CROSSPLANE = get("symmetry_effect/crossplane"),
SYMMETRY_TRIPLEPLANE = get("symmetry_effect/tripleplane"),
MECHANICAL_PUMP_ARROW = get("mechanical_pump/arrow"),
MECHANICAL_PUMP_COG = get("mechanical_pump/cog"),
FLUID_PIPE_CASING = get("fluid_pipe/casing");
public static final Map<Direction, AllBlockPartials> PIPE_RIMS = map();
public static final Map<Pair<Boolean, Direction>, AllBlockPartials> TANK_LID_FILLERS = map();
public static final Map<Pair<Boolean, Boolean>, AllBlockPartials> TANK_DIAGONAL_FILLERS = map();
static {
populateMaps();
}
; ;
private ResourceLocation modelLocation; private ResourceLocation modelLocation;
private IBakedModel bakedModel; private IBakedModel bakedModel;
private AllBlockPartials() {} private AllBlockPartials() {
}
private AllBlockPartials(String path) { private static void populateMaps() {
modelLocation = new ResourceLocation(Create.ID, "block/" + path); for (Direction d : Iterate.directions) {
boolean horizontal = d.getAxis()
.isHorizontal();
PIPE_RIMS.put(d, get("fluid_pipe/rim/" + d.getName()));
if (horizontal) {
for (boolean top : Iterate.trueAndFalse)
TANK_LID_FILLERS.put(Pair.of(top, d),
get("fluid_tank/lid_fillers/" + (top ? "top" : "bottom") + "_" + d.getName()));
}
}
for (boolean north : Iterate.trueAndFalse)
for (boolean east : Iterate.trueAndFalse)
TANK_DIAGONAL_FILLERS.put(Pair.of(north, east),
get("fluid_tank/diagonal_fillers/" + (north ? "north" : "south") + "_" + (east ? "east" : "west")));
}
private static <T, U> Map<T, U> map() {
return new HashMap<>();
}
private static AllBlockPartials get(String path) {
AllBlockPartials partials = new AllBlockPartials();
partials.modelLocation = new ResourceLocation(Create.ID, "block/" + path);
all.add(partials);
return partials;
} }
public static void onModelRegistry(ModelRegistryEvent event) { public static void onModelRegistry(ModelRegistryEvent event) {
for (AllBlockPartials partial : AllBlockPartials.values()) { for (AllBlockPartials partial : all)
partial.createModelLocation();
ModelLoader.addSpecialModel(partial.modelLocation); ModelLoader.addSpecialModel(partial.modelLocation);
}
} }
public static void onModelBake(ModelBakeEvent event) { public static void onModelBake(ModelBakeEvent event) {
Map<ResourceLocation, IBakedModel> modelRegistry = event.getModelRegistry(); Map<ResourceLocation, IBakedModel> modelRegistry = event.getModelRegistry();
for (AllBlockPartials partial : AllBlockPartials.values()) { for (AllBlockPartials partial : all)
partial.createModelLocation();
partial.bakedModel = modelRegistry.get(partial.modelLocation); partial.bakedModel = modelRegistry.get(partial.modelLocation);
}
}
private void createModelLocation() {
if (modelLocation == null)
modelLocation = new ResourceLocation(Create.ID, "block/" + Lang.asId(name()));
} }
public IBakedModel get() { public IBakedModel get() {

View file

@ -49,8 +49,10 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pul
import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock; import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock;
import com.simibubi.create.content.contraptions.components.turntable.TurntableBlock; import com.simibubi.create.content.contraptions.components.turntable.TurntableBlock;
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock; import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock;
import com.simibubi.create.content.contraptions.fluids.PipeBlock; import com.simibubi.create.content.contraptions.fluids.FluidPipeBlock;
import com.simibubi.create.content.contraptions.fluids.PipeModel; import com.simibubi.create.content.contraptions.fluids.FluidPipeModel;
import com.simibubi.create.content.contraptions.fluids.FluidTankBlock;
import com.simibubi.create.content.contraptions.fluids.FluidTankModel;
import com.simibubi.create.content.contraptions.fluids.PumpBlock; import com.simibubi.create.content.contraptions.fluids.PumpBlock;
import com.simibubi.create.content.contraptions.processing.BasinBlock; import com.simibubi.create.content.contraptions.processing.BasinBlock;
import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock;
@ -389,27 +391,34 @@ public class AllBlocks {
.register(); .register();
// Fluids // Fluids
public static final BlockEntry<PipeBlock> COPPER_PIPE = public static final BlockEntry<FluidPipeBlock> FLUID_PIPE = REGISTRATE.block("fluid_pipe", FluidPipeBlock::new)
REGISTRATE.block("copper_pipe", PipeBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.blockstate(BlockStateGen.pipe()) .blockstate(BlockStateGen.pipe())
.onRegister(CreateRegistrate.blockModel(() -> PipeModel::new)) .onRegister(CreateRegistrate.blockModel(() -> FluidPipeModel::new))
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
public static final BlockEntry<PumpBlock> MECHANICAL_PUMP = public static final BlockEntry<PumpBlock> MECHANICAL_PUMP = REGISTRATE.block("mechanical_pump", PumpBlock::new)
REGISTRATE.block("mechanical_pump", PumpBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.blockstate(BlockStateGen.directionalBlockProvider(true)) .blockstate(BlockStateGen.directionalBlockProvider(true))
.transform(StressConfigDefaults.setImpact(4.0)) .transform(StressConfigDefaults.setImpact(4.0))
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
public static final BlockEntry<FluidTankBlock> FLUID_TANK = REGISTRATE.block("fluid_tank", FluidTankBlock::new)
.initialProperties(SharedProperties::softMetal)
.blockstate(BlockStateGen.tank())
.onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::new))
.addLayer(() -> RenderType::getCutoutMipped)
.item()
.transform(customItemModel())
.register();
// Contraptions // Contraptions
public static final BlockEntry<MechanicalPistonBlock> MECHANICAL_PISTON = public static final BlockEntry<MechanicalPistonBlock> MECHANICAL_PISTON =
REGISTRATE.block("mechanical_piston", MechanicalPistonBlock::normal) REGISTRATE.block("mechanical_piston", MechanicalPistonBlock::normal)
.transform(BuilderTransformers.mechanicalPiston(PistonType.DEFAULT)) .transform(BuilderTransformers.mechanicalPiston(PistonType.DEFAULT))
@ -480,19 +489,19 @@ public class AllBlocks {
.item(CartAssemblerBlockItem::new) .item(CartAssemblerBlockItem::new)
.transform(customItemModel()) .transform(customItemModel())
.register(); .register();
public static final BlockEntry<ReinforcedRailBlock> REINFORCED_RAIL = public static final BlockEntry<ReinforcedRailBlock> REINFORCED_RAIL =
REGISTRATE.block("reinforced_rail", ReinforcedRailBlock::new) REGISTRATE.block("reinforced_rail", ReinforcedRailBlock::new)
.initialProperties(SharedProperties::stone) .initialProperties(SharedProperties::stone)
.properties(p -> p.nonOpaque()) .properties(p -> p.nonOpaque())
.blockstate(BlockStateGen.reinforcedRail()) .blockstate(BlockStateGen.reinforcedRail())
.addLayer(() -> RenderType::getCutoutMipped) .addLayer(() -> RenderType::getCutoutMipped)
.tag(BlockTags.RAILS) .tag(BlockTags.RAILS)
.item() .item()
.model((c, p) -> p.blockItem(() -> c.getEntry() .model((c, p) -> p.blockItem(() -> c.getEntry()
.getBlock(), "/block")) .getBlock(), "/block"))
.build() .build()
.register(); .register();
public static final BlockEntry<MinecartAnchorBlock> MINECART_ANCHOR = public static final BlockEntry<MinecartAnchorBlock> MINECART_ANCHOR =
REGISTRATE.block("minecart_anchor", MinecartAnchorBlock::new) REGISTRATE.block("minecart_anchor", MinecartAnchorBlock::new)

View file

@ -71,6 +71,27 @@ public class AllShapes {
; ;
// Internally Shared Shapes
private static final VoxelShape
PISTON_HEAD = Blocks.PISTON_HEAD.getDefaultState()
.with(DirectionalBlock.FACING, UP)
.with(PistonHeadBlock.SHORT, true)
.getShape(null, null), PISTON_EXTENDED =
shape(CASING_12PX.get(UP)).add(FOUR_VOXEL_POLE.get(Axis.Y))
.build(),
SMALL_GEAR_SHAPE = cuboid(2, 6, 2, 14, 10, 14), LARGE_GEAR_SHAPE = cuboid(0, 6, 0, 16, 10, 16),
VERTICAL_TABLET_SHAPE = cuboid(3, 1, -1, 13, 15, 3), SQUARE_TABLET_SHAPE = cuboid(2, 2, -1, 14, 14, 3),
LOGISTICS_TABLE_SLOPE = shape(0, 10, 15, 16, 14, 10.667).add(0, 12, 10.667, 16, 16, 6.333)
.add(0, 14, 6.333, 16, 18, 2)
.build(),
SCHEMATICS_TABLE_SLOPE = shape(0, 10, 16, 16, 14, 11).add(0, 12, 11, 16, 16, 6)
.add(0, 14, 6, 16, 18, 1)
.build(),
TANK_BOTTOM_LID = shape(0, 0, 0, 16, 4, 16).build(), TANK_TOP_LID = shape(0, 12, 0, 16, 16, 16).build()
;
// Static Block Shapes // Static Block Shapes
public static final VoxelShape public static final VoxelShape
@ -95,26 +116,13 @@ public class AllShapes {
.build(), .build(),
CUCKOO_CLOCK = shape(1, 0, 1, 15, 19, 15).build(), CUCKOO_CLOCK = shape(1, 0, 1, 15, 19, 15).build(),
GAUGE_SHAPE_UP = shape(1, 0, 0, 15, 2, 16).add(2, 2, 1, 14, 14, 15) GAUGE_SHAPE_UP = shape(1, 0, 0, 15, 2, 16).add(2, 2, 1, 14, 14, 15)
.build()
;
// Internally Shared Shapes
private static final VoxelShape
PISTON_HEAD = Blocks.PISTON_HEAD.getDefaultState()
.with(DirectionalBlock.FACING, UP)
.with(PistonHeadBlock.SHORT, true)
.getShape(null, null), PISTON_EXTENDED =
shape(CASING_12PX.get(UP)).add(FOUR_VOXEL_POLE.get(Axis.Y))
.build(),
SMALL_GEAR_SHAPE = cuboid(2, 6, 2, 14, 10, 14), LARGE_GEAR_SHAPE = cuboid(0, 6, 0, 16, 10, 16),
VERTICAL_TABLET_SHAPE = cuboid(3, 1, -1, 13, 15, 3), SQUARE_TABLET_SHAPE = cuboid(2, 2, -1, 14, 14, 3),
LOGISTICS_TABLE_SLOPE = shape(0, 10, 15, 16, 14, 10.667).add(0, 12, 10.667, 16, 16, 6.333)
.add(0, 14, 6.333, 16, 18, 2)
.build(), .build(),
SCHEMATICS_TABLE_SLOPE = shape(0, 10, 16, 16, 14, 11).add(0, 12, 11, 16, 16, 6) TANK = shape(1, 0, 1, 15, 16, 15).build(), TANK_TOP = shape(TANK_TOP_LID).add(TANK)
.add(0, 14, 6, 16, 18, 1) .build(),
TANK_BOTTOM = shape(TANK_BOTTOM_LID).add(TANK)
.build(),
TANK_TOP_BOTTOM = shape(TANK_BOTTOM_LID).add(TANK_TOP_LID)
.add(TANK)
.build() .build()
; ;

View file

@ -45,6 +45,9 @@ public class AllSpriteShifts {
public static final CTSpriteShiftEntry public static final CTSpriteShiftEntry
CHASSIS = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end"), CHASSIS = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end"),
CHASSIS_STICKY = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end_sticky"); CHASSIS_STICKY = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end_sticky");
public static final CTSpriteShiftEntry
FLUID_TANK = getCT(CTType.OMNIDIRECTIONAL, "fluid_tank");
public static final SpriteShiftEntry public static final SpriteShiftEntry
BELT = SpriteShifter.get("block/belt", "block/belt_animated"), BELT = SpriteShifter.get("block/belt", "block/belt_animated"),

View file

@ -16,9 +16,9 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader; import net.minecraft.world.ILightReader;
import net.minecraft.world.IWorld; import net.minecraft.world.IWorld;
public class PipeBlock extends SixWayBlock { public class FluidPipeBlock extends SixWayBlock {
public PipeBlock(Properties properties) { public FluidPipeBlock(Properties properties) {
super(4 / 16f, properties); super(4 / 16f, properties);
} }
@ -67,7 +67,7 @@ public class PipeBlock extends SixWayBlock {
} }
public static boolean isPipe(BlockState state) { public static boolean isPipe(BlockState state) {
return state.getBlock() instanceof PipeBlock; return state.getBlock() instanceof FluidPipeBlock;
} }
// TODO: more generic pipe connection handling. Ideally without marker interface // TODO: more generic pipe connection handling. Ideally without marker interface

View file

@ -2,10 +2,8 @@ package com.simibubi.create.content.contraptions.fluids;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Random; import java.util.Random;
import com.google.common.collect.ImmutableMap;
import com.simibubi.create.AllBlockPartials; import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.block.render.WrappedBakedModel; import com.simibubi.create.foundation.block.render.WrappedBakedModel;
import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Iterate;
@ -20,20 +18,11 @@ import net.minecraftforge.client.model.data.IModelData;
import net.minecraftforge.client.model.data.ModelDataMap; import net.minecraftforge.client.model.data.ModelDataMap;
import net.minecraftforge.client.model.data.ModelProperty; import net.minecraftforge.client.model.data.ModelProperty;
public class PipeModel extends WrappedBakedModel { public class FluidPipeModel extends WrappedBakedModel {
public static Map<Direction, AllBlockPartials> RIMS = ImmutableMap.<Direction, AllBlockPartials>builder()
.put(Direction.UP, AllBlockPartials.COPPER_PIPE_RIM_UP)
.put(Direction.DOWN, AllBlockPartials.COPPER_PIPE_RIM_DOWN)
.put(Direction.EAST, AllBlockPartials.COPPER_PIPE_RIM_EAST)
.put(Direction.WEST, AllBlockPartials.COPPER_PIPE_RIM_WEST)
.put(Direction.NORTH, AllBlockPartials.COPPER_PIPE_RIM_NORTH)
.put(Direction.SOUTH, AllBlockPartials.COPPER_PIPE_RIM_SOUTH)
.build();
private static ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>(); private static ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
public PipeModel(IBakedModel template) { public FluidPipeModel(IBakedModel template) {
super(template); super(template);
} }
@ -41,8 +30,8 @@ public class PipeModel extends WrappedBakedModel {
public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) { public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) {
PipeModelData data = new PipeModelData(); PipeModelData data = new PipeModelData();
for (Direction d : Iterate.directions) for (Direction d : Iterate.directions)
data.putRim(d, PipeBlock.shouldDrawRim(world, pos, state, d)); data.putRim(d, FluidPipeBlock.shouldDrawRim(world, pos, state, d));
data.setEncased(PipeBlock.shouldDrawCasing(world, pos, state)); data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
return new ModelDataMap.Builder().withInitial(PIPE_PROPERTY, data) return new ModelDataMap.Builder().withInitial(PIPE_PROPERTY, data)
.build(); .build();
} }
@ -62,11 +51,11 @@ public class PipeModel extends WrappedBakedModel {
PipeModelData pipeData) { PipeModelData pipeData) {
for (Direction d : Iterate.directions) for (Direction d : Iterate.directions)
if (pipeData.getRim(d)) if (pipeData.getRim(d))
quads.addAll(RIMS.get(d) quads.addAll(AllBlockPartials.PIPE_RIMS.get(d)
.get() .get()
.getQuads(state, side, rand, data)); .getQuads(state, side, rand, data));
if (pipeData.isEncased()) if (pipeData.isEncased())
quads.addAll(AllBlockPartials.COPPER_PIPE_CASING.get() quads.addAll(AllBlockPartials.FLUID_PIPE_CASING.get()
.getQuads(state, side, rand, data)); .getQuads(state, side, rand, data));
} }

View file

@ -0,0 +1,116 @@
package com.simibubi.create.content.contraptions.fluids;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllShapes;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.state.BooleanProperty;
import net.minecraft.state.StateContainer.Builder;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.ILightReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class FluidTankBlock extends Block {
public static final BooleanProperty TOP = BooleanProperty.create("top");
public static final BooleanProperty BOTTOM = BooleanProperty.create("bottom");
public FluidTankBlock(Properties p_i48440_1_) {
super(p_i48440_1_);
setDefaultState(getDefaultState().with(TOP, true)
.with(BOTTOM, true));
}
@Override
protected void fillStateContainer(Builder<Block, BlockState> p_206840_1_) {
p_206840_1_.add(TOP, BOTTOM);
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) {
World world = p_196258_1_.getWorld();
BlockPos pos = p_196258_1_.getPos();
BlockState state = super.getStateForPlacement(p_196258_1_);
state = updateState(state, world, pos, Direction.UP);
state = updateState(state, world, pos, Direction.DOWN);
return state;
}
@Override
public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_,
ISelectionContext p_220053_4_) {
boolean top = state.get(TOP);
boolean bottom = state.get(BOTTOM);
return top ? bottom ? AllShapes.TANK_TOP_BOTTOM : AllShapes.TANK_TOP
: bottom ? AllShapes.TANK_BOTTOM : AllShapes.TANK;
}
@Override
public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState p_196271_3_, IWorld world,
BlockPos pos, BlockPos p_196271_6_) {
return updateState(state, world, pos, direction);
}
private BlockState updateState(BlockState state, ILightReader reader, BlockPos pos, Direction direction) {
if (direction.getAxis()
.isHorizontal())
return state;
return state.with(direction == Direction.UP ? TOP : BOTTOM,
!AllBlocks.FLUID_TANK.has(reader.getBlockState(pos.offset(direction))));
}
@Override
@OnlyIn(Dist.CLIENT)
public boolean isSideInvisible(BlockState state, BlockState adjacentBlockState, Direction side) {
return adjacentBlockState.getBlock() == this;
}
public static boolean shouldDrawDiagonalFiller(ILightReader world, BlockPos pos, BlockState state, boolean north,
boolean east) {
if (!isTank(state))
return false;
int northOffset = north ? 1 : -1;
int eastOffset = east ? 1 : -1;
if (!isTank(world.getBlockState(pos.north(northOffset))))
return false;
if (!isTank(world.getBlockState(pos.east(eastOffset))))
return false;
if (isTank(world.getBlockState(pos.east(eastOffset)
.north(northOffset))))
return false;
return true;
}
public static boolean shouldDrawCapFiller(ILightReader world, BlockPos pos, BlockState state, Direction direction,
boolean top) {
if (!isTank(state))
return false;
if (top && !state.get(TOP))
return false;
if (!top && !state.get(BOTTOM))
return false;
BlockPos adjacentPos = pos.offset(direction);
BlockState adjacentState = world.getBlockState(adjacentPos);
if (!isTank(adjacentState))
return false;
if (top && adjacentState.get(TOP))
return false;
if (!top && adjacentState.get(BOTTOM))
return false;
return true;
}
public static boolean isTank(BlockState state) {
return state.getBlock() instanceof FluidTankBlock;
}
}

View file

@ -0,0 +1,28 @@
package com.simibubi.create.content.contraptions.fluids;
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour;
import net.minecraft.block.BlockState;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader;
public class FluidTankCTBehaviour extends HorizontalCTBehaviour {
public FluidTankCTBehaviour(CTSpriteShiftEntry layerShift, CTSpriteShiftEntry topShift) {
super(layerShift, topShift);
}
@Override
public boolean buildContextForOccludedDirections() {
return true;
}
@Override
public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos,
Direction face) {
// TODO only if TEs are actually connected
return state.getBlock() == other.getBlock();
}
}

View file

@ -0,0 +1,105 @@
package com.simibubi.create.content.contraptions.fluids;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllSpriteShifts;
import com.simibubi.create.foundation.block.connected.CTModel;
import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader;
import net.minecraftforge.client.model.data.IModelData;
import net.minecraftforge.client.model.data.ModelDataMap;
import net.minecraftforge.client.model.data.ModelProperty;
public class FluidTankModel extends CTModel {
private static ModelProperty<TankModelData> TANK_PROPERTY = new ModelProperty<>();
private static ConnectedTextureBehaviour ctBehaviour =
new FluidTankCTBehaviour(AllSpriteShifts.FLUID_TANK, AllSpriteShifts.COPPER_CASING);
public FluidTankModel(IBakedModel model) {
super(model, ctBehaviour);
}
@Override
public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) {
TankModelData data = new TankModelData();
for (boolean top : Iterate.trueAndFalse)
for (Direction d : Iterate.horizontalDirections)
data.setCapFiller(d, top, FluidTankBlock.shouldDrawCapFiller(world, pos, state, d, top));
for (boolean north : Iterate.trueAndFalse)
for (boolean east : Iterate.trueAndFalse)
data.setDiagonalFiller(north, east,
FluidTankBlock.shouldDrawDiagonalFiller(world, pos, state, north, east));
return new ModelDataMap.Builder().withInitial(CT_PROPERTY, createCTData(world, pos, state))
.withInitial(TANK_PROPERTY, data)
.build();
}
@Override
public List<BakedQuad> getQuads(BlockState state, Direction side, Random rand, IModelData data) {
List<BakedQuad> quads = super.getQuads(state, side, rand, data);
if (data instanceof ModelDataMap) {
ModelDataMap modelDataMap = (ModelDataMap) data;
if (modelDataMap.hasProperty(TANK_PROPERTY))
addQuads(quads, state, side, rand, modelDataMap, modelDataMap.getData(TANK_PROPERTY));
}
return quads;
}
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, Random rand, IModelData data,
TankModelData pipeData) {
for (boolean top : Iterate.trueAndFalse)
for (Direction d : Iterate.horizontalDirections)
if (pipeData.getCapFiller(d, top))
quads.addAll(AllBlockPartials.TANK_LID_FILLERS.get(Pair.of(top, d))
.get()
.getQuads(state, side, rand, data));
for (boolean north : Iterate.trueAndFalse)
for (boolean east : Iterate.trueAndFalse)
if (pipeData.getDiagonalFiller(north, east))
quads.addAll(AllBlockPartials.TANK_DIAGONAL_FILLERS.get(Pair.of(north, east))
.get()
.getQuads(state, side, rand, data));
}
private class TankModelData {
boolean[] capFillers;
boolean[] diagonalFillers;
public TankModelData() {
capFillers = new boolean[2 * 4];
diagonalFillers = new boolean[2 * 2];
Arrays.fill(capFillers, false);
Arrays.fill(diagonalFillers, false);
}
public void setCapFiller(Direction face, boolean top, boolean filler) {
capFillers[(top ? 0 : 4) + face.getHorizontalIndex()] = filler;
}
public void setDiagonalFiller(boolean north, boolean east, boolean filler) {
diagonalFillers[(north ? 0 : 2) + (east ? 0 : 1)] = filler;
}
public boolean getCapFiller(Direction face, boolean top) {
return capFillers[(top ? 0 : 4) + face.getHorizontalIndex()];
}
public boolean getDiagonalFiller(boolean north, boolean east) {
return diagonalFillers[(north ? 0 : 2) + (east ? 0 : 1)];
}
}
}

View file

@ -9,7 +9,6 @@ import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour.
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.PaneBlock;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@ -24,7 +23,7 @@ import net.minecraftforge.client.model.data.ModelProperty;
public class CTModel extends BakedModelWrapper<IBakedModel> { public class CTModel extends BakedModelWrapper<IBakedModel> {
private static ModelProperty<CTData> CT_PROPERTY = new ModelProperty<>(); protected static ModelProperty<CTData> CT_PROPERTY = new ModelProperty<>();
private ConnectedTextureBehaviour behaviour; private ConnectedTextureBehaviour behaviour;
private class CTData { private class CTData {
@ -51,9 +50,14 @@ public class CTModel extends BakedModelWrapper<IBakedModel> {
@Override @Override
public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) { public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) {
return new ModelDataMap.Builder().withInitial(CT_PROPERTY, createCTData(world, pos, state))
.build();
}
protected CTData createCTData(ILightReader world, BlockPos pos, BlockState state) {
CTData data = new CTData(); CTData data = new CTData();
for (Direction face : Direction.values()) { for (Direction face : Direction.values()) {
if (!Block.shouldSideBeRendered(state, world, pos, face) && !(state.getBlock() instanceof PaneBlock)) if (!Block.shouldSideBeRendered(state, world, pos, face) && !behaviour.buildContextForOccludedDirections())
continue; continue;
CTSpriteShiftEntry spriteShift = behaviour.get(state, face); CTSpriteShiftEntry spriteShift = behaviour.get(state, face);
if (spriteShift == null) if (spriteShift == null)
@ -61,7 +65,7 @@ public class CTModel extends BakedModelWrapper<IBakedModel> {
CTContext ctContext = behaviour.buildContext(world, pos, state, face); CTContext ctContext = behaviour.buildContext(world, pos, state, face);
data.put(face, spriteShift.getTextureIndex(ctContext)); data.put(face, spriteShift.getTextureIndex(ctContext));
} }
return new ModelDataMap.Builder().withInitial(CT_PROPERTY, data).build(); return data;
} }
@Override @Override
@ -83,9 +87,8 @@ public class CTModel extends BakedModelWrapper<IBakedModel> {
if (index == -1) if (index == -1)
continue; continue;
BakedQuad newQuad = BakedQuad newQuad = new BakedQuad(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length),
new BakedQuad(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length), quad.getTintIndex(), quad.getTintIndex(), quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting());
quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting());
VertexFormat format = DefaultVertexFormats.BLOCK; VertexFormat format = DefaultVertexFormats.BLOCK;
int[] vertexData = newQuad.getVertexData(); int[] vertexData = newQuad.getVertexData();

View file

@ -30,6 +30,10 @@ public abstract class ConnectedTextureBehaviour {
return reverseUVs(state, face); return reverseUVs(state, face);
} }
public boolean buildContextForOccludedDirections() {
return false;
}
public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos, public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos,
Direction face) { Direction face) {

View file

@ -11,6 +11,11 @@ public class GlassPaneCTBehaviour extends StandardCTBehaviour {
public GlassPaneCTBehaviour(CTSpriteShiftEntry shift) { public GlassPaneCTBehaviour(CTSpriteShiftEntry shift) {
super(shift); super(shift);
} }
@Override
public boolean buildContextForOccludedDirections() {
return true;
}
@Override @Override
public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos, public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos,

View file

@ -19,7 +19,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.cha
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssembleRailType; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssembleRailType;
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock;
import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock; import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock;
import com.simibubi.create.content.contraptions.fluids.PipeBlock; import com.simibubi.create.content.contraptions.fluids.FluidPipeBlock;
import com.simibubi.create.content.contraptions.fluids.FluidTankBlock;
import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverBlock; import com.simibubi.create.content.logistics.block.belts.observer.BeltObserverBlock;
import com.simibubi.create.content.palettes.PavedBlock; import com.simibubi.create.content.palettes.PavedBlock;
import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.Iterate;
@ -348,7 +349,7 @@ public class BlockStateGen {
}; };
} }
public static <P extends PipeBlock> NonNullBiConsumer<DataGenContext<Block, P>, RegistrateBlockstateProvider> pipe() { public static <P extends FluidPipeBlock> NonNullBiConsumer<DataGenContext<Block, P>, RegistrateBlockstateProvider> pipe() {
return (c, p) -> { return (c, p) -> {
String path = "block/" + c.getName(); String path = "block/" + c.getName();
@ -415,7 +416,7 @@ public class BlockStateGen {
.rotationX(d == Direction.UP ? 0 : d == Direction.DOWN ? 180 : 90) .rotationX(d == Direction.UP ? 0 : d == Direction.DOWN ? 180 : 90)
.rotationY((int) (d.getHorizontalAngle() + 180) % 360) .rotationY((int) (d.getHorizontalAngle() + 180) % 360)
.addModel() .addModel()
.condition(PipeBlock.FACING_TO_PROPERTY_MAP.get(d), true) .condition(FluidPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true)
.end(); .end();
for (Axis axis : Iterate.axes) { for (Axis axis : Iterate.axes) {
@ -437,7 +438,7 @@ public class BlockStateGen {
private static void putPart(Map<Pair<String, Axis>, ModelFile> coreModels, MultiPartBlockStateBuilder builder, private static void putPart(Map<Pair<String, Axis>, ModelFile> coreModels, MultiPartBlockStateBuilder builder,
Axis axis, String s, boolean up, boolean down, boolean left, boolean right) { Axis axis, String s, boolean up, boolean down, boolean left, boolean right) {
Direction positiveAxis = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); Direction positiveAxis = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis);
Map<Direction, BooleanProperty> propertyMap = PipeBlock.FACING_TO_PROPERTY_MAP; Map<Direction, BooleanProperty> propertyMap = FluidPipeBlock.FACING_TO_PROPERTY_MAP;
builder.part() builder.part()
.modelFile(coreModels.get(Pair.of(s, axis))) .modelFile(coreModels.get(Pair.of(s, axis)))
.addModel() .addModel()
@ -448,4 +449,23 @@ public class BlockStateGen {
.end(); .end();
} }
public static <P extends FluidTankBlock> NonNullBiConsumer<DataGenContext<Block, P>, RegistrateBlockstateProvider> tank() {
return (c, p) -> {
p.getMultipartBuilder(c.get())
.part()
.modelFile(AssetLookup.partialBaseModel(c, p, "top"))
.addModel()
.condition(FluidTankBlock.TOP, true)
.end()
.part()
.modelFile(AssetLookup.partialBaseModel(c, p, "windows"))
.addModel()
.end()
.part()
.modelFile(AssetLookup.partialBaseModel(c, p, "bottom"))
.addModel()
.condition(FluidTankBlock.BOTTOM, true)
.end();
};
}
} }

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -2,8 +2,8 @@
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"parent": "block/block", "parent": "block/block",
"textures": { "textures": {
"1": "create:block/copper_pipe", "1": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,8 +1,8 @@
{ {
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"textures": { "textures": {
"0": "create:block/copper_pipe", "0": "create:block/fluid_pipe",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -0,0 +1,25 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "create:block/copper_casing",
"2": "create:block/fluid_tank",
"3": "create:block/oxidized/copper_block_0",
"particle": "create:block/copper_casing"
},
"elements": [
{
"name": "bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#2"},
"east": {"uv": [0, 12, 16, 16], "texture": "#2"},
"south": {"uv": [0, 12, 16, 16], "texture": "#2"},
"west": {"uv": [0, 12, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#3"}
}
}
]
}

View file

@ -0,0 +1,26 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "create:block/copper_casing",
"2": "create:block/fluid_tank",
"3": "create:block/oxidized/copper_block_0",
"particle": "create:block/copper_casing"
},
"elements": [
{
"name": "top",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#2"},
"east": {"uv": [0, 0, 16, 4], "texture": "#2"},
"south": {"uv": [0, 0, 16, 4], "texture": "#2"},
"west": {"uv": [0, 0, 16, 4], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#3"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,27 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"2": "create:block/fluid_tank",
"particle": "create:block/copper_casing"
},
"elements": [
{
"from": [1, 0, 0],
"to": [15, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 12, 9]},
"faces": {
"east": {"uv": [0, 0, 16, 16], "texture": "#2", "cullface": "east"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2", "cullface": "west"}
}
},
{
"from": [0, 0, 1],
"to": [16, 16, 15],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2", "cullface": "north"},
"south": {"uv": [0, 0, 16, 16], "texture": "#2", "cullface": "south"}
}
}
]
}

View file

@ -0,0 +1,25 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [15, 0, 1],
"to": [16, 16, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]},
"faces": {
"north": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
},
{
"from": [14, 0, 0],
"to": [15, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 8]},
"faces": {
"east": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,25 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [1, 0, 0],
"to": [2, 16, 1],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]},
"faces": {
"west": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
},
{
"from": [0, 0, 1],
"to": [1, 16, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]},
"faces": {
"north": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,24 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [14, 0, 15],
"to": [15, 16, 16],
"faces": {
"east": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
},
{
"from": [15, 0, 14],
"to": [16, 16, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
"faces": {
"south": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,24 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [0, 0, 14],
"to": [1, 16, 15],
"faces": {
"south": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
},
{
"from": [1, 0, 15],
"to": [2, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]},
"faces": {
"west": {"uv": [14, 0, 15, 16], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,56 @@
{
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"0": "create:block/copper_casing",
"2": "create:block/fluid_tank",
"3": "create:block/oxidized/copper_block_0",
"particle": "create:block/copper_casing"
},
"elements": [
{
"name": "bottom",
"from": [0, 0, 0],
"to": [16, 4, 16],
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#2"},
"east": {"uv": [0, 12, 16, 16], "texture": "#2"},
"south": {"uv": [0, 12, 16, 16], "texture": "#2"},
"west": {"uv": [0, 12, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#0"},
"down": {"uv": [0, 0, 16, 16], "texture": "#3"}
}
},
{
"name": "top",
"from": [0, 12, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#2"},
"east": {"uv": [0, 0, 16, 4], "texture": "#2"},
"south": {"uv": [0, 0, 16, 4], "texture": "#2"},
"west": {"uv": [0, 0, 16, 4], "texture": "#2"},
"up": {"uv": [0, 0, 16, 16], "texture": "#3"},
"down": {"uv": [0, 0, 16, 16], "texture": "#0"}
}
},
{
"from": [1, 0, 0],
"to": [15, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 12, 9]},
"faces": {
"east": {"uv": [0, 0, 16, 16], "texture": "#2"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2"}
}
},
{
"from": [0, 0, 1],
"to": [16, 16, 15],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2"},
"south": {"uv": [0, 0, 16, 16], "texture": "#2"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [16, 0, 0],
"to": [17, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]},
"faces": {
"north": {"uv": [15, 12, 16, 16], "texture": "#0"},
"east": {"uv": [0, 12, 16, 16], "texture": "#0"},
"south": {"uv": [0, 12, 1, 16], "texture": "#0"},
"west": {"uv": [0, 12, 16, 16], "texture": "#0"},
"up": {"uv": [0, 12, 16, 13], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 15, 16, 16], "rotation": 270, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [0, 0, -1],
"to": [16, 4, 0],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#0"},
"east": {"uv": [0, 12, 1, 16], "texture": "#0"},
"south": {"uv": [0, 12, 16, 16], "texture": "#0"},
"west": {"uv": [15, 12, 16, 16], "texture": "#0"},
"up": {"uv": [0, 12, 16, 13], "texture": "#0"},
"down": {"uv": [0, 15, 16, 16], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [0, 0, 16],
"to": [16, 4, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]},
"faces": {
"north": {"uv": [0, 12, 16, 16], "texture": "#0"},
"east": {"uv": [15, 12, 16, 16], "texture": "#0"},
"south": {"uv": [0, 12, 16, 16], "texture": "#0"},
"west": {"uv": [0, 12, 1, 16], "texture": "#0"},
"up": {"uv": [0, 12, 16, 13], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [-1, 0, 0],
"to": [0, 4, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 8]},
"faces": {
"north": {"uv": [0, 12, 1, 16], "texture": "#0"},
"east": {"uv": [0, 12, 16, 16], "texture": "#0"},
"south": {"uv": [15, 12, 16, 16], "texture": "#0"},
"west": {"uv": [0, 12, 16, 16], "texture": "#0"},
"up": {"uv": [0, 12, 16, 13], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 15, 16, 16], "rotation": 90, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [16, 12, 0],
"to": [17, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 20, 8]},
"faces": {
"north": {"uv": [15, 0, 16, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 1, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 3, 16, 4], "rotation": 270, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [0, 12, -1],
"to": [16, 16, 0],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 7]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#0"},
"east": {"uv": [0, 0, 1, 4], "texture": "#0"},
"south": {"uv": [0, 0, 16, 4], "texture": "#0"},
"west": {"uv": [15, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "texture": "#0"},
"down": {"uv": [0, 3, 16, 4], "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [0, 12, 16],
"to": [16, 16, 17],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 9]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#0"},
"east": {"uv": [15, 0, 16, 4], "texture": "#0"},
"south": {"uv": [0, 0, 16, 4], "texture": "#0"},
"west": {"uv": [0, 0, 1, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 3, 16, 4], "rotation": 180, "texture": "#0"}
}
}
]
}

View file

@ -0,0 +1,22 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "create:block/fluid_tank",
"particle": "create:block/fluid_tank"
},
"elements": [
{
"from": [-1, 12, 0],
"to": [0, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 20, 8]},
"faces": {
"north": {"uv": [0, 0, 1, 4], "texture": "#0"},
"east": {"uv": [0, 0, 16, 4], "texture": "#0"},
"south": {"uv": [15, 0, 16, 4], "texture": "#0"},
"west": {"uv": [0, 0, 16, 4], "texture": "#0"},
"up": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#0"},
"down": {"uv": [0, 3, 16, 4], "rotation": 90, "texture": "#0"}
}
}
]
}

View file

@ -3,7 +3,7 @@
"parent": "create:block/large_wheels", "parent": "create:block/large_wheels",
"textures": { "textures": {
"4": "create:block/pump", "4": "create:block/pump",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -2,9 +2,9 @@
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"parent": "create:block/large_wheels", "parent": "create:block/large_wheels",
"textures": { "textures": {
"3": "create:block/copper_pipe", "3": "create:block/fluid_pipe",
"4": "create:block/pump", "4": "create:block/pump",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -3,7 +3,7 @@
"parent": "create:block/large_wheels", "parent": "create:block/large_wheels",
"textures": { "textures": {
"5": "create:block/millstone", "5": "create:block/millstone",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

@ -2,10 +2,10 @@
"credit": "Made with Blockbench", "credit": "Made with Blockbench",
"parent": "create:block/block", "parent": "create:block/block",
"textures": { "textures": {
"3": "create:block/copper_pipe", "3": "create:block/fluid_pipe",
"4": "create:block/pump", "4": "create:block/pump",
"5": "create:block/millstone", "5": "create:block/millstone",
"particle": "create:block/copper_pipe" "particle": "create:block/fluid_pipe"
}, },
"elements": [ "elements": [
{ {

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 B