Playtest V
- Reduced minimum break speed of drills on trains - Rollers no longer break blocks beneath the track when no pave material is set or present - Belts printed instantly or via cannon now retain the correct type of casing - Scheduled trains no longer slow down for slight ascends/descents on a straight track - Fixed saplings and other non-collidables sticking to chassis or super glue - Encased Fluid Pipes no longer z-fight on open pipe faces - Fixed brass encased cogwheels using andesite particle and gearbox texture - Fixed filter items having unusual item camera transforms - Tweaked placement assist of rollers and copycat steps to match shafts and piston poles - Valve handles now turn twice as quickly - Bearings no longer have the angle-indicating nook on their block - Steam engines no longer have their value input on all faces - Adjusted weighted ejector value slots to match the model - Depot hitbox is now a simple cuboid - Fixed Gearshift and Clutch models looking a little toasted - Fixed belts encased with andesite briefly showing brass textures
This commit is contained in:
parent
98a08d667e
commit
c7b0c11abc
59 changed files with 307 additions and 319 deletions
|
@ -607,14 +607,14 @@ eddf206f5fffbf9446461538da9fea70f5d22f0e assets/create/models/block/andesite_bel
|
||||||
8d53939d0e5fbeaace7800ac055719fd24b8314f assets/create/models/block/andesite_cap.json
|
8d53939d0e5fbeaace7800ac055719fd24b8314f assets/create/models/block/andesite_cap.json
|
||||||
d497453840a05b0b958890676b819215f3a118b3 assets/create/models/block/andesite_cap_alt.json
|
d497453840a05b0b958890676b819215f3a118b3 assets/create/models/block/andesite_cap_alt.json
|
||||||
4e44ccdc5e396c4380a7e59408db50553fa25226 assets/create/models/block/andesite_casing.json
|
4e44ccdc5e396c4380a7e59408db50553fa25226 assets/create/models/block/andesite_casing.json
|
||||||
762509cfb8602c6d0d3f959c08ad4934c2b5d8fa assets/create/models/block/andesite_encased_cogwheel.json
|
27d6d8f523a2f3bc4ee44c8529d7dff216ec6903 assets/create/models/block/andesite_encased_cogwheel.json
|
||||||
314489582d1cde98bc5e4fd4d2f0c9ab3cb731d3 assets/create/models/block/andesite_encased_cogwheel_bottom.json
|
33e2a5d0e63bf02af40d4e4de75e907f40e21f3b assets/create/models/block/andesite_encased_cogwheel_bottom.json
|
||||||
650fa63c126652c8501a657e1b89d0ef42a8b4be assets/create/models/block/andesite_encased_cogwheel_top.json
|
73c54c91549d06ebf1fe766ad43b5bc22874f8d7 assets/create/models/block/andesite_encased_cogwheel_top.json
|
||||||
c8f215c191f46ff1ea6f098ab32c7d27d04cb017 assets/create/models/block/andesite_encased_cogwheel_top_bottom.json
|
53a57b61452de201f27b5414584f79d77ddc7f63 assets/create/models/block/andesite_encased_cogwheel_top_bottom.json
|
||||||
41d4e8fd8ccdf915bd4d00b97cb87be87de33486 assets/create/models/block/andesite_encased_large_cogwheel.json
|
692a529fd4aa2a5efa00461ea650ae92ceb6a994 assets/create/models/block/andesite_encased_large_cogwheel.json
|
||||||
f8f131a53664faa5bd84b61e83d62ed5b367bf1d assets/create/models/block/andesite_encased_large_cogwheel_bottom.json
|
62ec35ed30bff5be9897dbc09eb251aceddac708 assets/create/models/block/andesite_encased_large_cogwheel_bottom.json
|
||||||
77b3bbcb47e83f985d68b0ed0344e9f79999e797 assets/create/models/block/andesite_encased_large_cogwheel_top.json
|
4f220c0c6a904434a92816653217facea53ee8ed assets/create/models/block/andesite_encased_large_cogwheel_top.json
|
||||||
01189fb179863ce1ef524bd5ddd5b4bebd5bbc6b assets/create/models/block/andesite_encased_large_cogwheel_top_bottom.json
|
2d0a835ed0ad9f8cfc20c6c43eb3a0126e1817cb assets/create/models/block/andesite_encased_large_cogwheel_top_bottom.json
|
||||||
a51ef8eb258251ecd4313d6997ce607b79a23850 assets/create/models/block/andesite_funnel_horizontal_pull_powered.json
|
a51ef8eb258251ecd4313d6997ce607b79a23850 assets/create/models/block/andesite_funnel_horizontal_pull_powered.json
|
||||||
fd19670a4504617fcd0ee0a1fb6ebeca9b30cc82 assets/create/models/block/andesite_funnel_horizontal_pull_unpowered.json
|
fd19670a4504617fcd0ee0a1fb6ebeca9b30cc82 assets/create/models/block/andesite_funnel_horizontal_pull_unpowered.json
|
||||||
aa22be9799a91810fa0068e525dd6961d7af4900 assets/create/models/block/andesite_funnel_horizontal_push_powered.json
|
aa22be9799a91810fa0068e525dd6961d7af4900 assets/create/models/block/andesite_funnel_horizontal_push_powered.json
|
||||||
|
@ -678,14 +678,14 @@ e0958b94c40e4aabbcbabd70be8a368eb877dcf9 assets/create/models/block/brass_belt_f
|
||||||
a094db3862d765e185c4849ce0a50967ee95d7c1 assets/create/models/block/brass_cap.json
|
a094db3862d765e185c4849ce0a50967ee95d7c1 assets/create/models/block/brass_cap.json
|
||||||
2dbb68d4917cac90fd6fe05abf5f7432288fdbed assets/create/models/block/brass_cap_alt.json
|
2dbb68d4917cac90fd6fe05abf5f7432288fdbed assets/create/models/block/brass_cap_alt.json
|
||||||
2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json
|
2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json
|
||||||
8cb0039684377c27a7fe20bdcacf24f871221478 assets/create/models/block/brass_encased_cogwheel.json
|
e174c6cafde3bee9722b5eb641951fa403e2aeec assets/create/models/block/brass_encased_cogwheel.json
|
||||||
c735917634c87b3d289bd912c7ceb465a3cc65b6 assets/create/models/block/brass_encased_cogwheel_bottom.json
|
056576d83c9948e48841dd8f0009f00012473826 assets/create/models/block/brass_encased_cogwheel_bottom.json
|
||||||
c2199a633597a73a1c2d508e5dfe0a7589b02329 assets/create/models/block/brass_encased_cogwheel_top.json
|
682fa110a8ba91952d070d7ef58289f7d9a9f7ca assets/create/models/block/brass_encased_cogwheel_top.json
|
||||||
69ea566328350c282878de2ef6aa197037c5e5de assets/create/models/block/brass_encased_cogwheel_top_bottom.json
|
439d3612159957f39de24d33b86edd32a0a4dc97 assets/create/models/block/brass_encased_cogwheel_top_bottom.json
|
||||||
7ab46e52da9ef474f38e5b9eefbed9ba9dc53b78 assets/create/models/block/brass_encased_large_cogwheel.json
|
78699147c95a250cf1d58b57823a53e84be79893 assets/create/models/block/brass_encased_large_cogwheel.json
|
||||||
ed150a9e18889217b7f010412e4317af04af7dc1 assets/create/models/block/brass_encased_large_cogwheel_bottom.json
|
675ca543c06b48de9d9b4cb43cfb937c6e1f2e4a assets/create/models/block/brass_encased_large_cogwheel_bottom.json
|
||||||
bb4155627c1f189e2e3bc07822d227bb0fc64bc4 assets/create/models/block/brass_encased_large_cogwheel_top.json
|
86f692c36bbf12b5f53178f0d761a5c4ba75656c assets/create/models/block/brass_encased_large_cogwheel_top.json
|
||||||
421cbc9bcb6511c66ff7122d1800bcd8ab866b2b assets/create/models/block/brass_encased_large_cogwheel_top_bottom.json
|
6d33641780f18d9915695e6e9789f7058b362aec assets/create/models/block/brass_encased_large_cogwheel_top_bottom.json
|
||||||
68f57bccd8a7ec0a997ab65aab74103338b0ade0 assets/create/models/block/brass_funnel_horizontal_pull_powered.json
|
68f57bccd8a7ec0a997ab65aab74103338b0ade0 assets/create/models/block/brass_funnel_horizontal_pull_powered.json
|
||||||
327643126b6b4a93523354ac70b0148d36176c75 assets/create/models/block/brass_funnel_horizontal_pull_unpowered.json
|
327643126b6b4a93523354ac70b0148d36176c75 assets/create/models/block/brass_funnel_horizontal_pull_unpowered.json
|
||||||
49c2cf87fb273d7e557cfde908e319f7810e333d assets/create/models/block/brass_funnel_horizontal_push_powered.json
|
49c2cf87fb273d7e557cfde908e319f7810e333d assets/create/models/block/brass_funnel_horizontal_push_powered.json
|
||||||
|
@ -709,7 +709,7 @@ a276726447e4c22a259d224f8124ea863cb36b3c assets/create/models/block/brass_scaffo
|
||||||
3fd5c08a6fe54d38383c8bd92ff7331218ca396c assets/create/models/block/calcite_pillar.json
|
3fd5c08a6fe54d38383c8bd92ff7331218ca396c assets/create/models/block/calcite_pillar.json
|
||||||
c4d1e1b6e195c0b71c0b96546978cd24c4a4bfc4 assets/create/models/block/calcite_pillar_horizontal.json
|
c4d1e1b6e195c0b71c0b96546978cd24c4a4bfc4 assets/create/models/block/calcite_pillar_horizontal.json
|
||||||
4156227e18c0896ce83f260f71b939abbbf4f01e assets/create/models/block/chocolate.json
|
4156227e18c0896ce83f260f71b939abbbf4f01e assets/create/models/block/chocolate.json
|
||||||
30fe120af3cb32faf0729df4d2cdf868f804be17 assets/create/models/block/clockwork_bearing.json
|
f9a3f0939ea43b404eb2826b94211a25fca5ebc2 assets/create/models/block/clockwork_bearing.json
|
||||||
4db08101a5d03303506e89adc9ff394ed26cd2e6 assets/create/models/block/copper_cap.json
|
4db08101a5d03303506e89adc9ff394ed26cd2e6 assets/create/models/block/copper_cap.json
|
||||||
06447f3c1e3f6d53d3887cedc20c322b146bdb1f assets/create/models/block/copper_cap_alt.json
|
06447f3c1e3f6d53d3887cedc20c322b146bdb1f assets/create/models/block/copper_cap_alt.json
|
||||||
1f01a4b6608f75145734b60ddf4a33ce318425ff assets/create/models/block/copper_casing.json
|
1f01a4b6608f75145734b60ddf4a33ce318425ff assets/create/models/block/copper_casing.json
|
||||||
|
@ -1176,7 +1176,7 @@ ec6b5f636e163ff5e361d486cf628ca1af4849a1 assets/create/models/block/magenta_sail
|
||||||
cbee001cd1bb1125a97d1bb2d1e6e5a68f129303 assets/create/models/block/magenta_seat.json
|
cbee001cd1bb1125a97d1bb2d1e6e5a68f129303 assets/create/models/block/magenta_seat.json
|
||||||
fa56f9bec902e6fea9cc25e6f474ee00c3dc558d assets/create/models/block/magenta_toolbox.json
|
fa56f9bec902e6fea9cc25e6f474ee00c3dc558d assets/create/models/block/magenta_toolbox.json
|
||||||
bc5a03a5552eb4a518abefe5e8615f14ee13ca29 assets/create/models/block/magenta_valve_handle.json
|
bc5a03a5552eb4a518abefe5e8615f14ee13ca29 assets/create/models/block/magenta_valve_handle.json
|
||||||
2e67f27a895c9163a5d1be62897d5e66b119767a assets/create/models/block/mechanical_bearing.json
|
0492070642fda75b943080022368505f2d065730 assets/create/models/block/mechanical_bearing.json
|
||||||
71cd22dc2d847d317f19afb4b21802fbf5347e0b assets/create/models/block/nixie_tube.json
|
71cd22dc2d847d317f19afb4b21802fbf5347e0b assets/create/models/block/nixie_tube.json
|
||||||
e3cd8b33b8c5f0543e4f6728a5b3e05642f9efe1 assets/create/models/block/oak_window.json
|
e3cd8b33b8c5f0543e4f6728a5b3e05642f9efe1 assets/create/models/block/oak_window.json
|
||||||
54a3b3158f8c914788812aa44515b798b2a9e2f3 assets/create/models/block/oak_window_pane_noside.json
|
54a3b3158f8c914788812aa44515b798b2a9e2f3 assets/create/models/block/oak_window_pane_noside.json
|
||||||
|
@ -1652,7 +1652,7 @@ ef1e719dc94d0b3ab37239467631be3aa877173b assets/create/models/block/weathered_co
|
||||||
1377e12f56dce1466ce44078d7154870c5cf7b2a assets/create/models/block/white_seat.json
|
1377e12f56dce1466ce44078d7154870c5cf7b2a assets/create/models/block/white_seat.json
|
||||||
94f882c4bf1664a9acfe57e1eccfd8129134aaaa assets/create/models/block/white_toolbox.json
|
94f882c4bf1664a9acfe57e1eccfd8129134aaaa assets/create/models/block/white_toolbox.json
|
||||||
899f33d51cf36cb1c283bc7e6363f9d451e5736e assets/create/models/block/white_valve_handle.json
|
899f33d51cf36cb1c283bc7e6363f9d451e5736e assets/create/models/block/white_valve_handle.json
|
||||||
f2bee22fe03ac047fbe73ca2c5c759f09bf646df assets/create/models/block/windmill_bearing.json
|
0b9bfba48d1f249d70508df8c51fa9f9f3003dd7 assets/create/models/block/windmill_bearing.json
|
||||||
71cd22dc2d847d317f19afb4b21802fbf5347e0b assets/create/models/block/yellow_nixie_tube.json
|
71cd22dc2d847d317f19afb4b21802fbf5347e0b assets/create/models/block/yellow_nixie_tube.json
|
||||||
071ca07daceea4d0db7ed41e815d47589fdb14b7 assets/create/models/block/yellow_sail.json
|
071ca07daceea4d0db7ed41e815d47589fdb14b7 assets/create/models/block/yellow_sail.json
|
||||||
0a0e2cc973e35586ae00ed17b919383868e992e8 assets/create/models/block/yellow_seat.json
|
0a0e2cc973e35586ae00ed17b919383868e992e8 assets/create/models/block/yellow_seat.json
|
||||||
|
@ -1668,8 +1668,8 @@ e7759d9b3cd64d2719a58dc35fc75ca65b9e14fa assets/create/models/item/analog_lever.
|
||||||
2e7cf267efb66404721ac8bf08802de0eb134159 assets/create/models/item/andesite_alloy_block.json
|
2e7cf267efb66404721ac8bf08802de0eb134159 assets/create/models/item/andesite_alloy_block.json
|
||||||
946756a1a498ccd2e61b33ef317c5ec9e30afebf assets/create/models/item/andesite_bars.json
|
946756a1a498ccd2e61b33ef317c5ec9e30afebf assets/create/models/item/andesite_bars.json
|
||||||
174c9705d25f149052835fdcf7c85626afead90b assets/create/models/item/andesite_casing.json
|
174c9705d25f149052835fdcf7c85626afead90b assets/create/models/item/andesite_casing.json
|
||||||
420020284d01c72a7fb3387750fe1dd2dcfb9550 assets/create/models/item/andesite_encased_cogwheel.json
|
7d421377a50b4986626bedbd517aebe39a81247d assets/create/models/item/andesite_encased_cogwheel.json
|
||||||
6e246e91b4ebffd5c45311057feb5d26d1cb8aec assets/create/models/item/andesite_encased_large_cogwheel.json
|
1a18f605be05b9031f3a4bdbd3de8103b2783e0c assets/create/models/item/andesite_encased_large_cogwheel.json
|
||||||
bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_encased_shaft.json
|
bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_encased_shaft.json
|
||||||
105a9946b9e4d5e949f6d557cfde750227463bff assets/create/models/item/andesite_funnel.json
|
105a9946b9e4d5e949f6d557cfde750227463bff assets/create/models/item/andesite_funnel.json
|
||||||
4c9232a6249ad1ef51a7978a8e642a8c88dda0ab assets/create/models/item/andesite_ladder.json
|
4c9232a6249ad1ef51a7978a8e642a8c88dda0ab assets/create/models/item/andesite_ladder.json
|
||||||
|
@ -1678,6 +1678,7 @@ bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_enca
|
||||||
473be56fe1f44809ffecbb3eb86107af3ca7a569 assets/create/models/item/andesite_tunnel.json
|
473be56fe1f44809ffecbb3eb86107af3ca7a569 assets/create/models/item/andesite_tunnel.json
|
||||||
bbe56a2eb84835f26ed3beb0313ddd8be7a53ead assets/create/models/item/asurine.json
|
bbe56a2eb84835f26ed3beb0313ddd8be7a53ead assets/create/models/item/asurine.json
|
||||||
840a34731a823e185a180bef029dd16ee3f78541 assets/create/models/item/asurine_pillar.json
|
840a34731a823e185a180bef029dd16ee3f78541 assets/create/models/item/asurine_pillar.json
|
||||||
|
c0beeec7ae0ac2f8dcef6c704935c9fef3c47836 assets/create/models/item/attribute_filter.json
|
||||||
cf9e35bfea0b0a324e1c6384990425b3d359792c assets/create/models/item/bar_of_chocolate.json
|
cf9e35bfea0b0a324e1c6384990425b3d359792c assets/create/models/item/bar_of_chocolate.json
|
||||||
421e481b7fbca4c4a1080ed703401eb25375e087 assets/create/models/item/basin.json
|
421e481b7fbca4c4a1080ed703401eb25375e087 assets/create/models/item/basin.json
|
||||||
ffdb36349fa2e50451c208585162b6a8386ec494 assets/create/models/item/belt_connector.json
|
ffdb36349fa2e50451c208585162b6a8386ec494 assets/create/models/item/belt_connector.json
|
||||||
|
@ -1695,8 +1696,8 @@ bec96ebf3369d3cffa9bb1b8bf9f2a5cd5d0ef96 assets/create/models/item/blue_valve_ha
|
||||||
5afa91abed387b3dfa39c39c7feae5f8f02a4bd9 assets/create/models/item/brass_bars.json
|
5afa91abed387b3dfa39c39c7feae5f8f02a4bd9 assets/create/models/item/brass_bars.json
|
||||||
17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json
|
17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json
|
||||||
f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json
|
f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json
|
||||||
099179a466a2f370dd2c4fea0d841517fa3a558b assets/create/models/item/brass_encased_cogwheel.json
|
e462012b46bb628a17874abc75282849f6511211 assets/create/models/item/brass_encased_cogwheel.json
|
||||||
6e60b5939747835b2247cbc4907d633b017abc79 assets/create/models/item/brass_encased_large_cogwheel.json
|
4c3e5e94a4c4027246f09c5a0c7ed6d020cde565 assets/create/models/item/brass_encased_large_cogwheel.json
|
||||||
c723011e09203821b6b59cff9de22454c5e4395a assets/create/models/item/brass_encased_shaft.json
|
c723011e09203821b6b59cff9de22454c5e4395a assets/create/models/item/brass_encased_shaft.json
|
||||||
8de90ceb9997f61efc544304fcd919a54db47d41 assets/create/models/item/brass_funnel.json
|
8de90ceb9997f61efc544304fcd919a54db47d41 assets/create/models/item/brass_funnel.json
|
||||||
965f3f992fde899719506fd584f3fbbbf69af93c assets/create/models/item/brass_hand.json
|
965f3f992fde899719506fd584f3fbbbf69af93c assets/create/models/item/brass_hand.json
|
||||||
|
@ -1913,6 +1914,7 @@ d455c713ef442632db1556a1c84d56b09b23754f assets/create/models/item/exposed_coppe
|
||||||
2b1de143ed0dfb42f4414d085ded1e0d3154866a assets/create/models/item/exposed_copper_tile_stairs.json
|
2b1de143ed0dfb42f4414d085ded1e0d3154866a assets/create/models/item/exposed_copper_tile_stairs.json
|
||||||
492e6b68180bc2a7be052b9a1acb2b685d8295aa assets/create/models/item/exposed_copper_tiles.json
|
492e6b68180bc2a7be052b9a1acb2b685d8295aa assets/create/models/item/exposed_copper_tiles.json
|
||||||
68833e2a7836c73776551565783a1d175b715c66 assets/create/models/item/extendo_grip.json
|
68833e2a7836c73776551565783a1d175b715c66 assets/create/models/item/extendo_grip.json
|
||||||
|
088032cabf5f93606fbdf76625f16e4d5b0f166c assets/create/models/item/filter.json
|
||||||
e5e6fb6eb182b85b977e1025a7fe84d46de59320 assets/create/models/item/fluid_pipe.json
|
e5e6fb6eb182b85b977e1025a7fe84d46de59320 assets/create/models/item/fluid_pipe.json
|
||||||
e7d2097256fed545064a37d233e7b810b04c26a4 assets/create/models/item/fluid_tank.json
|
e7d2097256fed545064a37d233e7b810b04c26a4 assets/create/models/item/fluid_tank.json
|
||||||
f4727119b75ab632c3ad295be4d398b1919d782f assets/create/models/item/fluid_valve.json
|
f4727119b75ab632c3ad295be4d398b1919d782f assets/create/models/item/fluid_valve.json
|
||||||
|
@ -2262,7 +2264,7 @@ c6253e0f8db3c3992d3f78fe5045e276d39d5b22 assets/create/models/item/white_sail.js
|
||||||
69328eb4f91c4407fbcad5e3c4b88363f1a9572c assets/create/models/item/white_seat.json
|
69328eb4f91c4407fbcad5e3c4b88363f1a9572c assets/create/models/item/white_seat.json
|
||||||
29d8e92edf11c79091e49689a97ab700121cdeb3 assets/create/models/item/white_toolbox.json
|
29d8e92edf11c79091e49689a97ab700121cdeb3 assets/create/models/item/white_toolbox.json
|
||||||
be7a2d59d43083d7f2427193dcb9d68004224dd3 assets/create/models/item/white_valve_handle.json
|
be7a2d59d43083d7f2427193dcb9d68004224dd3 assets/create/models/item/white_valve_handle.json
|
||||||
d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bearing.json
|
49b0ba1bb71e244f7de23f3a6fb322c77cd3be03 assets/create/models/item/windmill_bearing.json
|
||||||
500abf752654a904d78a967f6c6d29a75a4821ab assets/create/models/item/wooden_bracket.json
|
500abf752654a904d78a967f6c6d29a75a4821ab assets/create/models/item/wooden_bracket.json
|
||||||
2527b52413965a3e84b4718e08a9b8bb30a741ea assets/create/models/item/wrench.json
|
2527b52413965a3e84b4718e08a9b8bb30a741ea assets/create/models/item/wrench.json
|
||||||
4b49bc2418410cded5f0b7da3430f1a22e049f18 assets/create/models/item/yellow_seat.json
|
4b49bc2418410cded5f0b7da3430f1a22e049f18 assets/create/models/item/yellow_seat.json
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block",
|
"parent": "create:block/encased_cogwheel/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side"
|
"side": "create:block/andesite_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block_bottom",
|
"parent": "create:block/encased_cogwheel/block_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side"
|
"side": "create:block/andesite_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block_top",
|
"parent": "create:block/encased_cogwheel/block_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side"
|
"side": "create:block/andesite_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block_top_bottom",
|
"parent": "create:block/encased_cogwheel/block_top_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side"
|
"side": "create:block/andesite_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block",
|
"parent": "create:block/encased_large_cogwheel/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block_bottom",
|
"parent": "create:block/encased_large_cogwheel/block_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block_top",
|
"parent": "create:block/encased_large_cogwheel/block_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block_top_bottom",
|
"parent": "create:block/encased_large_cogwheel/block_top_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
|
"4": "create:block/gearbox",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block",
|
"parent": "create:block/encased_cogwheel/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side"
|
"side": "create:block/brass_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block_bottom",
|
"parent": "create:block/encased_cogwheel/block_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side"
|
"side": "create:block/brass_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block_top",
|
"parent": "create:block/encased_cogwheel/block_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side"
|
"side": "create:block/brass_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_cogwheel/block_top_bottom",
|
"parent": "create:block/encased_cogwheel/block_top_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side"
|
"side": "create:block/brass_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block",
|
"parent": "create:block/encased_large_cogwheel/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side_connected"
|
"side": "create:block/brass_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block_bottom",
|
"parent": "create:block/encased_large_cogwheel/block_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side_connected"
|
"side": "create:block/brass_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block_top",
|
"parent": "create:block/encased_large_cogwheel/block_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side_connected"
|
"side": "create:block/brass_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/block_top_bottom",
|
"parent": "create:block/encased_large_cogwheel/block_top_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
|
"4": "create:block/brass_gearbox",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side_connected"
|
"side": "create:block/brass_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
"parent": "create:block/bearing/block",
|
"parent": "create:block/bearing/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"side": "create:block/clockwork_bearing_side",
|
"side": "create:block/clockwork_bearing_side",
|
||||||
"nook": "create:block/brass_casing",
|
|
||||||
"back": "create:block/brass_gearbox"
|
"back": "create:block/brass_gearbox"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,7 +2,6 @@
|
||||||
"parent": "create:block/bearing/block",
|
"parent": "create:block/bearing/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"side": "create:block/mechanical_bearing_side",
|
"side": "create:block/mechanical_bearing_side",
|
||||||
"nook": "create:block/brass_casing",
|
|
||||||
"back": "create:block/gearbox"
|
"back": "create:block/gearbox"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,7 +2,6 @@
|
||||||
"parent": "create:block/bearing/block",
|
"parent": "create:block/bearing/block",
|
||||||
"textures": {
|
"textures": {
|
||||||
"side": "create:block/windmill_bearing_side",
|
"side": "create:block/windmill_bearing_side",
|
||||||
"nook": "create:block/andesite_casing",
|
|
||||||
"back": "create:block/gearbox"
|
"back": "create:block/gearbox"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "create:block/encased_cogwheel/item",
|
"parent": "create:block/encased_cogwheel/item",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side"
|
"side": "create:block/andesite_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/item",
|
"parent": "create:block/encased_large_cogwheel/item",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
|
"particle": "create:block/andesite_casing",
|
||||||
"1": "minecraft:block/stripped_spruce_log_top",
|
"1": "minecraft:block/stripped_spruce_log_top",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "create:item/attribute_filter"
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "create:block/encased_cogwheel/item",
|
"parent": "create:block/encased_cogwheel/item",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side"
|
"side": "create:block/brass_encased_cogwheel_side"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "create:block/encased_large_cogwheel/item",
|
"parent": "create:block/encased_large_cogwheel/item",
|
||||||
"textures": {
|
"textures": {
|
||||||
"casing": "create:block/brass_casing",
|
"casing": "create:block/brass_casing",
|
||||||
|
"particle": "create:block/brass_casing",
|
||||||
"1": "minecraft:block/stripped_dark_oak_log_top",
|
"1": "minecraft:block/stripped_dark_oak_log_top",
|
||||||
"side": "create:block/brass_encased_cogwheel_side_connected"
|
"side": "create:block/brass_encased_cogwheel_side_connected"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "create:item/filter"
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"parent": "create:block/bearing/item",
|
"parent": "create:block/bearing/item",
|
||||||
"textures": {
|
"textures": {
|
||||||
"top": "create:block/bearing_top_wooden",
|
"top": "create:block/bearing_top",
|
||||||
"side": "create:block/windmill_bearing_side",
|
"side": "create:block/windmill_bearing_side",
|
||||||
"back": "create:block/gearbox"
|
"back": "create:block/gearbox"
|
||||||
}
|
}
|
||||||
|
|
|
@ -443,9 +443,9 @@ public class AllBlocks {
|
||||||
|
|
||||||
public static final BlockEntry<ClutchBlock> CLUTCH = REGISTRATE.block("clutch", ClutchBlock::new)
|
public static final BlockEntry<ClutchBlock> CLUTCH = REGISTRATE.block("clutch", ClutchBlock::new)
|
||||||
.initialProperties(SharedProperties::stone)
|
.initialProperties(SharedProperties::stone)
|
||||||
.addLayer(() -> RenderType::cutoutMipped)
|
|
||||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||||
|
.addLayer(() -> RenderType::cutoutMipped)
|
||||||
.transform(BlockStressDefaults.setNoImpact())
|
.transform(BlockStressDefaults.setNoImpact())
|
||||||
.transform(axeOrPickaxe())
|
.transform(axeOrPickaxe())
|
||||||
.blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p)))
|
.blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p)))
|
||||||
|
@ -455,9 +455,9 @@ public class AllBlocks {
|
||||||
|
|
||||||
public static final BlockEntry<GearshiftBlock> GEARSHIFT = REGISTRATE.block("gearshift", GearshiftBlock::new)
|
public static final BlockEntry<GearshiftBlock> GEARSHIFT = REGISTRATE.block("gearshift", GearshiftBlock::new)
|
||||||
.initialProperties(SharedProperties::stone)
|
.initialProperties(SharedProperties::stone)
|
||||||
.addLayer(() -> RenderType::cutoutMipped)
|
|
||||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||||
|
.addLayer(() -> RenderType::cutoutMipped)
|
||||||
.transform(BlockStressDefaults.setNoImpact())
|
.transform(BlockStressDefaults.setNoImpact())
|
||||||
.transform(axeOrPickaxe())
|
.transform(axeOrPickaxe())
|
||||||
.blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p)))
|
.blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p)))
|
||||||
|
@ -467,7 +467,6 @@ public class AllBlocks {
|
||||||
|
|
||||||
public static final BlockEntry<EncasedBeltBlock> ENCASED_CHAIN_DRIVE =
|
public static final BlockEntry<EncasedBeltBlock> ENCASED_CHAIN_DRIVE =
|
||||||
REGISTRATE.block("encased_chain_drive", EncasedBeltBlock::new)
|
REGISTRATE.block("encased_chain_drive", EncasedBeltBlock::new)
|
||||||
.addLayer(() -> RenderType::cutoutMipped)
|
|
||||||
.initialProperties(SharedProperties::stone)
|
.initialProperties(SharedProperties::stone)
|
||||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||||
|
@ -475,7 +474,6 @@ public class AllBlocks {
|
||||||
.transform(axeOrPickaxe())
|
.transform(axeOrPickaxe())
|
||||||
.blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> p.models()
|
.blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> p.models()
|
||||||
.getExistingFile(p.modLoc("block/" + c.getName() + "/" + suffix))).generate(c, p))
|
.getExistingFile(p.modLoc("block/" + c.getName() + "/" + suffix))).generate(c, p))
|
||||||
.addLayer(() -> RenderType::cutoutMipped)
|
|
||||||
.item()
|
.item()
|
||||||
.transform(customItemModel())
|
.transform(customItemModel())
|
||||||
.register();
|
.register();
|
||||||
|
@ -1139,7 +1137,7 @@ public class AllBlocks {
|
||||||
REGISTRATE.block("windmill_bearing", WindmillBearingBlock::new)
|
REGISTRATE.block("windmill_bearing", WindmillBearingBlock::new)
|
||||||
.transform(axeOrPickaxe())
|
.transform(axeOrPickaxe())
|
||||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||||
.transform(BuilderTransformers.bearing("windmill", "gearbox", true))
|
.transform(BuilderTransformers.bearing("windmill", "gearbox"))
|
||||||
.transform(BlockStressDefaults.setCapacity(512.0))
|
.transform(BlockStressDefaults.setCapacity(512.0))
|
||||||
.transform(BlockStressDefaults.setGeneratorSpeed(WindmillBearingBlock::getSpeedRange))
|
.transform(BlockStressDefaults.setGeneratorSpeed(WindmillBearingBlock::getSpeedRange))
|
||||||
.tag(AllBlockTags.SAFE_NBT.tag)
|
.tag(AllBlockTags.SAFE_NBT.tag)
|
||||||
|
@ -1149,7 +1147,7 @@ public class AllBlocks {
|
||||||
REGISTRATE.block("mechanical_bearing", MechanicalBearingBlock::new)
|
REGISTRATE.block("mechanical_bearing", MechanicalBearingBlock::new)
|
||||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||||
.transform(axeOrPickaxe())
|
.transform(axeOrPickaxe())
|
||||||
.transform(BuilderTransformers.bearing("mechanical", "gearbox", false))
|
.transform(BuilderTransformers.bearing("mechanical", "gearbox"))
|
||||||
.transform(BlockStressDefaults.setImpact(4.0))
|
.transform(BlockStressDefaults.setImpact(4.0))
|
||||||
.tag(AllBlockTags.SAFE_NBT.tag)
|
.tag(AllBlockTags.SAFE_NBT.tag)
|
||||||
.onRegister(movementBehaviour(new StabilizedBearingMovementBehaviour()))
|
.onRegister(movementBehaviour(new StabilizedBearingMovementBehaviour()))
|
||||||
|
@ -1159,7 +1157,7 @@ public class AllBlocks {
|
||||||
REGISTRATE.block("clockwork_bearing", ClockworkBearingBlock::new)
|
REGISTRATE.block("clockwork_bearing", ClockworkBearingBlock::new)
|
||||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
|
.properties(p -> p.color(MaterialColor.TERRACOTTA_BROWN))
|
||||||
.transform(axeOrPickaxe())
|
.transform(axeOrPickaxe())
|
||||||
.transform(BuilderTransformers.bearing("clockwork", "brass_gearbox", false))
|
.transform(BuilderTransformers.bearing("clockwork", "brass_gearbox"))
|
||||||
.transform(BlockStressDefaults.setImpact(4.0))
|
.transform(BlockStressDefaults.setImpact(4.0))
|
||||||
.tag(AllBlockTags.SAFE_NBT.tag)
|
.tag(AllBlockTags.SAFE_NBT.tag)
|
||||||
.register();
|
.register();
|
||||||
|
|
|
@ -340,13 +340,9 @@ public class AllItems {
|
||||||
// Logistics
|
// Logistics
|
||||||
|
|
||||||
public static final ItemEntry<FilterItem> FILTER = REGISTRATE.item("filter", FilterItem::regular)
|
public static final ItemEntry<FilterItem> FILTER = REGISTRATE.item("filter", FilterItem::regular)
|
||||||
.model(AssetLookup.existingItemModel())
|
.register(), ATTRIBUTE_FILTER =
|
||||||
.register();
|
REGISTRATE.item("attribute_filter", FilterItem::attribute)
|
||||||
|
.register();
|
||||||
public static final ItemEntry<FilterItem> ATTRIBUTE_FILTER =
|
|
||||||
REGISTRATE.item("attribute_filter", FilterItem::attribute)
|
|
||||||
.model(AssetLookup.existingItemModel())
|
|
||||||
.register();
|
|
||||||
|
|
||||||
public static final ItemEntry<ScheduleItem> SCHEDULE = REGISTRATE.item("schedule", ScheduleItem::new)
|
public static final ItemEntry<ScheduleItem> SCHEDULE = REGISTRATE.item("schedule", ScheduleItem::new)
|
||||||
.lang("Train Schedule")
|
.lang("Train Schedule")
|
||||||
|
|
|
@ -225,7 +225,7 @@ public class BlockBreakingMovementBehaviour implements MovementBehaviour {
|
||||||
if (context.contraption instanceof MountedContraption)
|
if (context.contraption instanceof MountedContraption)
|
||||||
lowerLimit = 1f;
|
lowerLimit = 1f;
|
||||||
if (context.contraption instanceof CarriageContraption)
|
if (context.contraption instanceof CarriageContraption)
|
||||||
lowerLimit = 4f;
|
lowerLimit = 2f;
|
||||||
return Mth.clamp(Math.abs(context.getAnimationSpeed()) / 500f, lowerLimit, 16f);
|
return Mth.clamp(Math.abs(context.getAnimationSpeed()) / 500f, lowerLimit, 16f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,10 @@ import java.util.function.Predicate;
|
||||||
import com.simibubi.create.AllBlockEntityTypes;
|
import com.simibubi.create.AllBlockEntityTypes;
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.content.curiosities.tools.ExtendoGripItem;
|
|
||||||
import com.simibubi.create.foundation.block.IBE;
|
import com.simibubi.create.foundation.block.IBE;
|
||||||
import com.simibubi.create.foundation.config.AllConfigs;
|
|
||||||
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
||||||
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
||||||
import com.simibubi.create.foundation.utility.placement.PlacementOffset;
|
import com.simibubi.create.foundation.utility.placement.util.PoleHelper;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
|
@ -18,7 +16,6 @@ import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.damagesource.DamageSource;
|
import net.minecraft.world.damagesource.DamageSource;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.ai.attributes.AttributeInstance;
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -31,7 +28,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import net.minecraftforge.common.ForgeMod;
|
|
||||||
|
|
||||||
public class RollerBlock extends AttachedActorBlock implements IBE<RollerBlockEntity> {
|
public class RollerBlock extends AttachedActorBlock implements IBE<RollerBlockEntity> {
|
||||||
|
|
||||||
|
@ -93,68 +89,19 @@ public class RollerBlock extends AttachedActorBlock implements IBE<RollerBlockEn
|
||||||
return InteractionResult.PASS;
|
return InteractionResult.PASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class PlacementHelper implements IPlacementHelper {
|
private static class PlacementHelper extends PoleHelper<Direction> {
|
||||||
|
|
||||||
|
public PlacementHelper() {
|
||||||
|
super(AllBlocks.MECHANICAL_ROLLER::has, state -> state.getValue(FACING)
|
||||||
|
.getClockWise()
|
||||||
|
.getAxis(), FACING);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Predicate<ItemStack> getItemPredicate() {
|
public Predicate<ItemStack> getItemPredicate() {
|
||||||
return AllBlocks.MECHANICAL_ROLLER::isIn;
|
return AllBlocks.MECHANICAL_ROLLER::isIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Predicate<BlockState> getStatePredicate() {
|
|
||||||
return AllBlocks.MECHANICAL_ROLLER::has;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int attachedSteps(Level world, BlockPos pos, Direction direction) {
|
|
||||||
BlockPos checkPos = pos.relative(direction);
|
|
||||||
BlockState state = world.getBlockState(checkPos);
|
|
||||||
int count = 0;
|
|
||||||
while (getStatePredicate().test(state)) {
|
|
||||||
count++;
|
|
||||||
checkPos = checkPos.relative(direction);
|
|
||||||
state = world.getBlockState(checkPos);
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
|
|
||||||
BlockHitResult ray) {
|
|
||||||
|
|
||||||
Direction dir = null;
|
|
||||||
Direction facing = state.getValue(FACING);
|
|
||||||
|
|
||||||
for (Direction nearest : Direction.orderedByNearest(player)) {
|
|
||||||
if (nearest.getAxis() != facing.getClockWise()
|
|
||||||
.getAxis())
|
|
||||||
continue;
|
|
||||||
dir = nearest;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
int range = AllConfigs.server().curiosities.placementAssistRange.get();
|
|
||||||
if (player != null) {
|
|
||||||
AttributeInstance reach = player.getAttribute(ForgeMod.REACH_DISTANCE.get());
|
|
||||||
if (reach != null && reach.hasModifier(ExtendoGripItem.singleRangeAttributeModifier))
|
|
||||||
range += 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
int row = attachedSteps(world, pos, dir);
|
|
||||||
if (row >= range)
|
|
||||||
return PlacementOffset.fail();
|
|
||||||
|
|
||||||
BlockPos newPos = pos.relative(dir, row + 1);
|
|
||||||
BlockState newState = world.getBlockState(newPos);
|
|
||||||
|
|
||||||
if (!state.canSurvive(world, newPos))
|
|
||||||
return PlacementOffset.fail();
|
|
||||||
|
|
||||||
if (newState.getMaterial()
|
|
||||||
.isReplaceable())
|
|
||||||
return PlacementOffset.success(newPos, bState -> bState.setValue(FACING, facing));
|
|
||||||
return PlacementOffset.fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockPos argMax = null;
|
BlockPos argMax = null;
|
||||||
double max = Double.MIN_VALUE;
|
double max = -1;
|
||||||
for (BlockPos toBreak : positionsToBreak) {
|
for (BlockPos toBreak : positionsToBreak) {
|
||||||
float hardness = context.world.getBlockState(toBreak)
|
float hardness = context.world.getBlockState(toBreak)
|
||||||
.getDestroySpeed(world, toBreak);
|
.getDestroySpeed(world, toBreak);
|
||||||
|
@ -137,6 +137,11 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
|
||||||
argMax = toBreak;
|
argMax = toBreak;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argMax == null) {
|
||||||
|
triggerPaver(context, pos);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
context.data.put("ReferencePos", NbtUtils.writeBlockPos(pos));
|
context.data.put("ReferencePos", NbtUtils.writeBlockPos(pos));
|
||||||
context.data.put("BreakingPos", NbtUtils.writeBlockPos(argMax));
|
context.data.put("BreakingPos", NbtUtils.writeBlockPos(argMax));
|
||||||
context.stall = true;
|
context.stall = true;
|
||||||
|
@ -181,6 +186,16 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
|
||||||
if (mode != RollingMode.TUNNEL_PAVE)
|
if (mode != RollingMode.TUNNEL_PAVE)
|
||||||
return positions;
|
return positions;
|
||||||
|
|
||||||
|
int startingY = 1;
|
||||||
|
if (!getStateToPaveWith(context).isAir()) {
|
||||||
|
ItemStack filter = ItemStack.of(context.blockEntityData.getCompound("Filter"));
|
||||||
|
if (!ItemHelper
|
||||||
|
.extract(context.contraption.getSharedInventory(),
|
||||||
|
stack -> FilterItem.test(context.world, stack, filter), 1, true)
|
||||||
|
.isEmpty())
|
||||||
|
startingY = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Train
|
// Train
|
||||||
PaveTask profileForTracks = createHeightProfileForTracks(context);
|
PaveTask profileForTracks = createHeightProfileForTracks(context);
|
||||||
if (profileForTracks != null) {
|
if (profileForTracks != null) {
|
||||||
|
@ -188,7 +203,11 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
|
||||||
float height = profileForTracks.get(coords);
|
float height = profileForTracks.get(coords);
|
||||||
BlockPos targetPosition = new BlockPos(coords.getFirst(), height, coords.getSecond());
|
BlockPos targetPosition = new BlockPos(coords.getFirst(), height, coords.getSecond());
|
||||||
boolean shouldPlaceSlab = height > Math.floor(height) + .45;
|
boolean shouldPlaceSlab = height > Math.floor(height) + .45;
|
||||||
for (int i = 0; i <= (shouldPlaceSlab ? 3 : 2); i++)
|
if (startingY == 1 && shouldPlaceSlab && context.world.getBlockState(targetPosition.above())
|
||||||
|
.getOptionalValue(SlabBlock.TYPE)
|
||||||
|
.orElse(SlabType.DOUBLE) == SlabType.BOTTOM)
|
||||||
|
startingY = 2;
|
||||||
|
for (int i = startingY; i <= (shouldPlaceSlab ? 3 : 2); i++)
|
||||||
if (testBreakerTarget(context, targetPosition.above(i), i))
|
if (testBreakerTarget(context, targetPosition.above(i), i))
|
||||||
positions.add(targetPosition.above(i));
|
positions.add(targetPosition.above(i));
|
||||||
}
|
}
|
||||||
|
@ -196,7 +215,7 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise
|
// Otherwise
|
||||||
for (int i = 0; i <= 2; i++)
|
for (int i = startingY; i <= 2; i++)
|
||||||
if (testBreakerTarget(context, visitedPos.above(i), i))
|
if (testBreakerTarget(context, visitedPos.above(i), i))
|
||||||
positions.add(visitedPos.above(i));
|
positions.add(visitedPos.above(i));
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class ValveHandleBlock extends HandCrankBlock {
|
||||||
}
|
}
|
||||||
|
|
||||||
onBlockEntityUse(level, pos,
|
onBlockEntityUse(level, pos,
|
||||||
hcbe -> (hcbe instanceof ValveHandleBlockEntity vhbe) && vhbe.activate(player.isCrouching())
|
hcbe -> (hcbe instanceof ValveHandleBlockEntity vhbe) && vhbe.activate(player.isSteppingCarefully())
|
||||||
? InteractionResult.SUCCESS
|
? InteractionResult.SUCCESS
|
||||||
: InteractionResult.PASS);
|
: InteractionResult.PASS);
|
||||||
return true;
|
return true;
|
||||||
|
@ -115,11 +115,11 @@ public class ValveHandleBlock extends HandCrankBlock {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getRotationSpeed() {
|
public int getRotationSpeed() {
|
||||||
return 16;
|
return 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Couple<Integer> getSpeedRange() {
|
public static Couple<Integer> getSpeedRange() {
|
||||||
return Couple.create(16, 16);
|
return Couple.create(32, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,7 +133,7 @@ public class ValveHandleBlockEntity extends HandCrankBlockEntity {
|
||||||
|
|
||||||
sequenceContext = SequenceContext.fromGearshift(SequencerInstructions.TURN_ANGLE, rotationSpeed, target);
|
sequenceContext = SequenceContext.fromGearshift(SequencerInstructions.TURN_ANGLE, rotationSpeed, target);
|
||||||
updateGeneratedRotation();
|
updateGeneratedRotation();
|
||||||
cooldown = 5;
|
cooldown = 4;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,24 @@ import net.minecraft.world.phys.Vec3;
|
||||||
public class SteamEngineValueBox extends ValueBoxTransform.Sided {
|
public class SteamEngineValueBox extends ValueBoxTransform.Sided {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isSideActive(BlockState state, Direction direction) {
|
protected boolean isSideActive(BlockState state, Direction side) {
|
||||||
return SteamEngineBlock.getFacing(state)
|
Direction engineFacing = SteamEngineBlock.getFacing(state);
|
||||||
.getAxis() != direction.getAxis();
|
if (engineFacing.getAxis() == side.getAxis())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
float roll = 0;
|
||||||
|
for (Pointing p : Pointing.values())
|
||||||
|
if (p.getCombinedDirection(engineFacing) == side)
|
||||||
|
roll = p.getXRotation();
|
||||||
|
if (engineFacing == Direction.UP)
|
||||||
|
roll += 180;
|
||||||
|
|
||||||
|
boolean recessed = roll % 180 == 0;
|
||||||
|
if (engineFacing.getAxis() == Axis.Y)
|
||||||
|
recessed ^= state.getValue(SteamEngineBlock.FACING)
|
||||||
|
.getAxis() == Axis.X;
|
||||||
|
|
||||||
|
return !recessed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -26,21 +41,15 @@ public class SteamEngineValueBox extends ValueBoxTransform.Sided {
|
||||||
Direction engineFacing = SteamEngineBlock.getFacing(state);
|
Direction engineFacing = SteamEngineBlock.getFacing(state);
|
||||||
|
|
||||||
float roll = 0;
|
float roll = 0;
|
||||||
for (Pointing p : Pointing.values()) {
|
for (Pointing p : Pointing.values())
|
||||||
if (p.getCombinedDirection(engineFacing) == side)
|
if (p.getCombinedDirection(engineFacing) == side)
|
||||||
roll = p.getXRotation();
|
roll = p.getXRotation();
|
||||||
}
|
|
||||||
if (engineFacing == Direction.UP)
|
if (engineFacing == Direction.UP)
|
||||||
roll += 180;
|
roll += 180;
|
||||||
|
|
||||||
float horizontalAngle = AngleHelper.horizontalAngle(engineFacing);
|
float horizontalAngle = AngleHelper.horizontalAngle(engineFacing);
|
||||||
float verticalAngle = AngleHelper.verticalAngle(engineFacing);
|
float verticalAngle = AngleHelper.verticalAngle(engineFacing);
|
||||||
|
Vec3 local = VecHelper.voxelSpace(8, 14.5, 9);
|
||||||
boolean recessed = roll % 180 == 0;
|
|
||||||
if (engineFacing.getAxis() == Axis.Y)
|
|
||||||
recessed ^= state.getValue(SteamEngineBlock.FACING).getAxis() == Axis.X;
|
|
||||||
|
|
||||||
Vec3 local = VecHelper.voxelSpace(8, recessed ? 12.5 : 14.5, 9);
|
|
||||||
|
|
||||||
local = VecHelper.rotateCentered(local, roll, Axis.Z);
|
local = VecHelper.rotateCentered(local, roll, Axis.Z);
|
||||||
local = VecHelper.rotateCentered(local, horizontalAngle, Axis.Y);
|
local = VecHelper.rotateCentered(local, horizontalAngle, Axis.Y);
|
||||||
|
@ -59,10 +68,9 @@ public class SteamEngineValueBox extends ValueBoxTransform.Sided {
|
||||||
}
|
}
|
||||||
|
|
||||||
float roll = 0;
|
float roll = 0;
|
||||||
for (Pointing p : Pointing.values()) {
|
for (Pointing p : Pointing.values())
|
||||||
if (p.getCombinedDirection(facing) == getSide())
|
if (p.getCombinedDirection(facing) == getSide())
|
||||||
roll = p.getXRotation();
|
roll = p.getXRotation();
|
||||||
}
|
|
||||||
|
|
||||||
float yRot = AngleHelper.horizontalAngle(facing) + (facing == Direction.DOWN ? 180 : 0);
|
float yRot = AngleHelper.horizontalAngle(facing) + (facing == Direction.DOWN ? 180 : 0);
|
||||||
TransformStack.cast(ms)
|
TransformStack.cast(ms)
|
||||||
|
|
|
@ -173,13 +173,15 @@ public class BlockMovementChecks {
|
||||||
private static boolean isMovementNecessaryFallback(BlockState state, Level world, BlockPos pos) {
|
private static boolean isMovementNecessaryFallback(BlockState state, Level world, BlockPos pos) {
|
||||||
if (isBrittle(state))
|
if (isBrittle(state))
|
||||||
return true;
|
return true;
|
||||||
if (!state.getMaterial()
|
if (AllBlockTags.MOVABLE_EMPTY_COLLIDER.matches(state))
|
||||||
.isReplaceable())
|
|
||||||
return true;
|
return true;
|
||||||
if (!state.getCollisionShape(world, pos)
|
if (state.getCollisionShape(world, pos)
|
||||||
.isEmpty())
|
.isEmpty())
|
||||||
return true;
|
return false;
|
||||||
return AllBlockTags.MOVABLE_EMPTY_COLLIDER.matches(state);
|
if (state.getMaterial()
|
||||||
|
.isReplaceable())
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isMovementAllowedFallback(BlockState state, Level world, BlockPos pos) {
|
private static boolean isMovementAllowedFallback(BlockState state, Level world, BlockPos pos) {
|
||||||
|
|
|
@ -62,6 +62,9 @@ public class FluidPipeBlockEntity extends SmartBlockEntity implements ITransform
|
||||||
BlockPos offsetPos = pos.relative(direction);
|
BlockPos offsetPos = pos.relative(direction);
|
||||||
BlockState otherState = world.getBlockState(offsetPos);
|
BlockState otherState = world.getBlockState(offsetPos);
|
||||||
|
|
||||||
|
if (state.getBlock() instanceof EncasedPipeBlock && attachment != AttachmentTypes.DRAIN)
|
||||||
|
return AttachmentTypes.NONE;
|
||||||
|
|
||||||
if (attachment == AttachmentTypes.RIM && !FluidPipeBlock.isPipe(otherState)
|
if (attachment == AttachmentTypes.RIM && !FluidPipeBlock.isPipe(otherState)
|
||||||
&& !AllBlocks.MECHANICAL_PUMP.has(otherState) && !AllBlocks.ENCASED_FLUID_PIPE.has(otherState)) {
|
&& !AllBlocks.MECHANICAL_PUMP.has(otherState) && !AllBlocks.ENCASED_FLUID_PIPE.has(otherState)) {
|
||||||
FluidTransportBehaviour pipeBehaviour =
|
FluidTransportBehaviour pipeBehaviour =
|
||||||
|
|
|
@ -298,15 +298,11 @@ public class BeltBlock extends HorizontalKineticBlock implements IBE<BeltBlockEn
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AllBlocks.BRASS_CASING.isIn(heldItem)) {
|
if (AllBlocks.BRASS_CASING.isIn(heldItem)) {
|
||||||
if (world.isClientSide)
|
|
||||||
return InteractionResult.SUCCESS;
|
|
||||||
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.BRASS));
|
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.BRASS));
|
||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AllBlocks.ANDESITE_CASING.isIn(heldItem)) {
|
if (AllBlocks.ANDESITE_CASING.isIn(heldItem)) {
|
||||||
if (world.isClientSide)
|
|
||||||
return InteractionResult.SUCCESS;
|
|
||||||
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.ANDESITE));
|
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.ANDESITE));
|
||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -429,16 +429,26 @@ public class BeltBlockEntity extends KineticBlockEntity {
|
||||||
public void setCasingType(CasingType type) {
|
public void setCasingType(CasingType type) {
|
||||||
if (casing == type)
|
if (casing == type)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
BlockState blockState = getBlockState();
|
||||||
|
boolean shouldBlockHaveCasing = type != CasingType.NONE;
|
||||||
|
|
||||||
|
if (level.isClientSide) {
|
||||||
|
casing = type;
|
||||||
|
level.setBlock(worldPosition, blockState.setValue(BeltBlock.CASING, shouldBlockHaveCasing), 0);
|
||||||
|
requestModelDataUpdate();
|
||||||
|
level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), 16);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (casing != CasingType.NONE)
|
if (casing != CasingType.NONE)
|
||||||
level.levelEvent(2001, worldPosition,
|
level.levelEvent(2001, worldPosition,
|
||||||
Block.getId(casing == CasingType.ANDESITE ? AllBlocks.ANDESITE_CASING.getDefaultState()
|
Block.getId(casing == CasingType.ANDESITE ? AllBlocks.ANDESITE_CASING.getDefaultState()
|
||||||
: AllBlocks.BRASS_CASING.getDefaultState()));
|
: AllBlocks.BRASS_CASING.getDefaultState()));
|
||||||
casing = type;
|
|
||||||
boolean shouldBlockHaveCasing = type != CasingType.NONE;
|
|
||||||
BlockState blockState = getBlockState();
|
|
||||||
if (blockState.getValue(BeltBlock.CASING) != shouldBlockHaveCasing)
|
if (blockState.getValue(BeltBlock.CASING) != shouldBlockHaveCasing)
|
||||||
KineticBlockEntity.switchToBlockState(level, worldPosition,
|
KineticBlockEntity.switchToBlockState(level, worldPosition,
|
||||||
blockState.setValue(BeltBlock.CASING, shouldBlockHaveCasing));
|
blockState.setValue(BeltBlock.CASING, shouldBlockHaveCasing));
|
||||||
|
casing = type;
|
||||||
setChanged();
|
setChanged();
|
||||||
sendData();
|
sendData();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,20 +4,17 @@ import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.content.curiosities.tools.ExtendoGripItem;
|
|
||||||
import com.simibubi.create.foundation.config.AllConfigs;
|
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
import com.simibubi.create.foundation.utility.VoxelShaper;
|
import com.simibubi.create.foundation.utility.VoxelShaper;
|
||||||
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
||||||
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
||||||
import com.simibubi.create.foundation.utility.placement.PlacementOffset;
|
import com.simibubi.create.foundation.utility.placement.util.PoleHelper;
|
||||||
|
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Direction;
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.core.Direction.Axis;
|
import net.minecraft.core.Direction.Axis;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.entity.ai.attributes.AttributeInstance;
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -38,7 +35,6 @@ import net.minecraft.world.level.pathfinder.PathComputationType;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import net.minecraftforge.common.ForgeMod;
|
|
||||||
|
|
||||||
public class CopycatStepBlock extends WaterloggedCopycatBlock {
|
public class CopycatStepBlock extends WaterloggedCopycatBlock {
|
||||||
|
|
||||||
|
@ -217,71 +213,19 @@ public class CopycatStepBlock extends WaterloggedCopycatBlock {
|
||||||
return pState.rotate(pMirror.getRotation(pState.getValue(FACING)));
|
return pState.rotate(pMirror.getRotation(pState.getValue(FACING)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class PlacementHelper implements IPlacementHelper {
|
private static class PlacementHelper extends PoleHelper<Direction> {
|
||||||
|
|
||||||
|
public PlacementHelper() {
|
||||||
|
super(AllBlocks.COPYCAT_STEP::has, state -> state.getValue(FACING)
|
||||||
|
.getClockWise()
|
||||||
|
.getAxis(), FACING);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Predicate<ItemStack> getItemPredicate() {
|
public Predicate<ItemStack> getItemPredicate() {
|
||||||
return AllBlocks.COPYCAT_STEP::isIn;
|
return AllBlocks.COPYCAT_STEP::isIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Predicate<BlockState> getStatePredicate() {
|
|
||||||
return AllBlocks.COPYCAT_STEP::has;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int attachedSteps(Level world, BlockPos pos, Direction direction) {
|
|
||||||
BlockPos checkPos = pos.relative(direction);
|
|
||||||
BlockState state = world.getBlockState(checkPos);
|
|
||||||
int count = 0;
|
|
||||||
while (getStatePredicate().test(state)) {
|
|
||||||
count++;
|
|
||||||
checkPos = checkPos.relative(direction);
|
|
||||||
state = world.getBlockState(checkPos);
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PlacementOffset getOffset(Player player, Level world, BlockState state, BlockPos pos,
|
|
||||||
BlockHitResult ray) {
|
|
||||||
|
|
||||||
Direction dir = null;
|
|
||||||
Direction facing = state.getValue(FACING);
|
|
||||||
|
|
||||||
for (Direction nearest : Direction.orderedByNearest(player)) {
|
|
||||||
if (nearest.getAxis() != facing.getClockWise()
|
|
||||||
.getAxis())
|
|
||||||
continue;
|
|
||||||
dir = nearest;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
int range = AllConfigs.server().curiosities.placementAssistRange.get();
|
|
||||||
if (player != null) {
|
|
||||||
AttributeInstance reach = player.getAttribute(ForgeMod.REACH_DISTANCE.get());
|
|
||||||
if (reach != null && reach.hasModifier(ExtendoGripItem.singleRangeAttributeModifier))
|
|
||||||
range += 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
int row = attachedSteps(world, pos, dir);
|
|
||||||
if (row >= range)
|
|
||||||
return PlacementOffset.fail();
|
|
||||||
|
|
||||||
BlockPos newPos = pos.relative(dir, row + 1);
|
|
||||||
BlockState newState = world.getBlockState(newPos);
|
|
||||||
|
|
||||||
if (!state.canSurvive(world, newPos))
|
|
||||||
return PlacementOffset.fail();
|
|
||||||
|
|
||||||
if (newState.getMaterial()
|
|
||||||
.isReplaceable())
|
|
||||||
return PlacementOffset.success(newPos, bState -> {
|
|
||||||
return bState.setValue(FACING, facing)
|
|
||||||
.setValue(HALF, state.getValue(HALF));
|
|
||||||
});
|
|
||||||
return PlacementOffset.fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import com.simibubi.create.foundation.block.IBE;
|
||||||
|
|
||||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
@ -34,7 +35,7 @@ public class DepotBlock extends Block implements IBE<DepotBlockEntity>, IWrencha
|
||||||
@Override
|
@Override
|
||||||
public VoxelShape getShape(BlockState p_220053_1_, BlockGetter p_220053_2_, BlockPos p_220053_3_,
|
public VoxelShape getShape(BlockState p_220053_1_, BlockGetter p_220053_2_, BlockPos p_220053_3_,
|
||||||
CollisionContext p_220053_4_) {
|
CollisionContext p_220053_4_) {
|
||||||
return AllShapes.DEPOT;
|
return AllShapes.CASING_13PX.get(Direction.UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class EjectorBlock extends HorizontalKineticBlock implements IBE<EjectorB
|
||||||
@Override
|
@Override
|
||||||
public VoxelShape getShape(BlockState p_220053_1_, BlockGetter p_220053_2_, BlockPos p_220053_3_,
|
public VoxelShape getShape(BlockState p_220053_1_, BlockGetter p_220053_2_, BlockPos p_220053_3_,
|
||||||
CollisionContext p_220053_4_) {
|
CollisionContext p_220053_4_) {
|
||||||
return AllShapes.DEPOT;
|
return AllShapes.CASING_13PX.get(Direction.UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -102,10 +102,10 @@ public class EjectorBlockEntity extends KineticBlockEntity {
|
||||||
super.addBehaviours(behaviours);
|
super.addBehaviours(behaviours);
|
||||||
behaviours.add(depotBehaviour = new DepotBehaviour(this));
|
behaviours.add(depotBehaviour = new DepotBehaviour(this));
|
||||||
|
|
||||||
maxStackSize = new ScrollValueBehaviour(Lang.translateDirect("weighted_ejector.stack_size"), this, new EjectorSlot())
|
maxStackSize =
|
||||||
.between(0, 64)
|
new ScrollValueBehaviour(Lang.translateDirect("weighted_ejector.stack_size"), this, new EjectorSlot())
|
||||||
.withFormatter(i -> i == 0 ? "*" : String.valueOf(i))
|
.between(0, 64)
|
||||||
.onlyActiveWhen(() -> state == State.CHARGED);
|
.withFormatter(i -> i == 0 ? "*" : String.valueOf(i));
|
||||||
behaviours.add(maxStackSize);
|
behaviours.add(maxStackSize);
|
||||||
|
|
||||||
depotBehaviour.maxStackSize = () -> maxStackSize.getValue();
|
depotBehaviour.maxStackSize = () -> maxStackSize.getValue();
|
||||||
|
@ -167,7 +167,8 @@ public class EjectorBlockEntity extends KineticBlockEntity {
|
||||||
|
|
||||||
if (launcher.getHorizontalDistance() * launcher.getHorizontalDistance()
|
if (launcher.getHorizontalDistance() * launcher.getHorizontalDistance()
|
||||||
+ launcher.getVerticalDistance() * launcher.getVerticalDistance() >= 25 * 25)
|
+ launcher.getVerticalDistance() * launcher.getVerticalDistance() >= 25 * 25)
|
||||||
AllPackets.getChannel().sendToServer(new EjectorAwardPacket(worldPosition));
|
AllPackets.getChannel()
|
||||||
|
.sendToServer(new EjectorAwardPacket(worldPosition));
|
||||||
|
|
||||||
if (!(playerEntity.getItemBySlot(EquipmentSlot.CHEST)
|
if (!(playerEntity.getItemBySlot(EquipmentSlot.CHEST)
|
||||||
.getItem() instanceof ElytraItem))
|
.getItem() instanceof ElytraItem))
|
||||||
|
@ -178,7 +179,8 @@ public class EjectorBlockEntity extends KineticBlockEntity {
|
||||||
playerEntity.setDeltaMovement(playerEntity.getDeltaMovement()
|
playerEntity.setDeltaMovement(playerEntity.getDeltaMovement()
|
||||||
.scale(.75f));
|
.scale(.75f));
|
||||||
deployElytra(playerEntity);
|
deployElytra(playerEntity);
|
||||||
AllPackets.getChannel().sendToServer(new EjectorElytraPacket(worldPosition));
|
AllPackets.getChannel()
|
||||||
|
.sendToServer(new EjectorElytraPacket(worldPosition));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doLogic) {
|
if (doLogic) {
|
||||||
|
@ -613,15 +615,21 @@ public class EjectorBlockEntity extends KineticBlockEntity {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class EjectorSlot extends ValueBoxTransform.Sided {
|
private class EjectorSlot extends ValueBoxTransform.Sided {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Vec3 getLocalOffset(BlockState state) {
|
protected Vec3 getLocalOffset(BlockState state) {
|
||||||
return new Vec3(.5, 13 / 16f, .5).add(VecHelper.rotate(new Vec3(0, 0, -.3), angle(state), Axis.Y));
|
if (direction != Direction.UP)
|
||||||
|
return super.getLocalOffset(state);
|
||||||
|
return new Vec3(.5, 10.5 / 16f, .5).add(VecHelper.rotate(VecHelper.voxelSpace(0, 0, -5), angle(state), Axis.Y));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void rotate(BlockState state, PoseStack ms) {
|
protected void rotate(BlockState state, PoseStack ms) {
|
||||||
|
if (direction != Direction.UP) {
|
||||||
|
super.rotate(state, ms);
|
||||||
|
return;
|
||||||
|
}
|
||||||
TransformStack.cast(ms)
|
TransformStack.cast(ms)
|
||||||
.rotateY(angle(state))
|
.rotateY(angle(state))
|
||||||
.rotateX(90);
|
.rotateX(90);
|
||||||
|
@ -636,17 +644,14 @@ public class EjectorBlockEntity extends KineticBlockEntity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isSideActive(BlockState state, Direction direction) {
|
protected boolean isSideActive(BlockState state, Direction direction) {
|
||||||
return direction == Direction.UP;
|
return direction.getAxis() == state.getValue(EjectorBlock.HORIZONTAL_FACING)
|
||||||
}
|
.getAxis()
|
||||||
|
|| direction == Direction.UP && EjectorBlockEntity.this.state != EjectorBlockEntity.State.CHARGED;
|
||||||
@Override
|
|
||||||
protected float getScale() {
|
|
||||||
return 0.2f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Vec3 getSouthLocation() {
|
protected Vec3 getSouthLocation() {
|
||||||
return Vec3.ZERO;
|
return direction == Direction.UP ? Vec3.ZERO : VecHelper.voxelSpace(8, 6, 15.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import org.apache.commons.lang3.mutable.MutableDouble;
|
||||||
import org.apache.commons.lang3.mutable.MutableObject;
|
import org.apache.commons.lang3.mutable.MutableObject;
|
||||||
|
|
||||||
import com.simibubi.create.Create;
|
import com.simibubi.create.Create;
|
||||||
|
import com.simibubi.create.content.logistics.trains.BezierConnection;
|
||||||
import com.simibubi.create.content.logistics.trains.DimensionPalette;
|
import com.simibubi.create.content.logistics.trains.DimensionPalette;
|
||||||
import com.simibubi.create.content.logistics.trains.TrackEdge;
|
import com.simibubi.create.content.logistics.trains.TrackEdge;
|
||||||
import com.simibubi.create.content.logistics.trains.TrackGraph;
|
import com.simibubi.create.content.logistics.trains.TrackGraph;
|
||||||
|
@ -200,6 +201,20 @@ public class Navigation {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}, (distance, edge) -> {
|
}, (distance, edge) -> {
|
||||||
|
BezierConnection turn = edge.getTurn();
|
||||||
|
double vDistance = Math.abs(turn.starts.getFirst().y - turn.starts.getSecond().y);
|
||||||
|
|
||||||
|
// ignore turn if its a straight & mild slope
|
||||||
|
if (turn != null && vDistance > 1 / 16f) {
|
||||||
|
if (turn.axes.getFirst()
|
||||||
|
.multiply(1, 0, 1)
|
||||||
|
.distanceTo(turn.axes.getSecond()
|
||||||
|
.multiply(1, 0, 1)
|
||||||
|
.scale(-1)) < 1 / 64f
|
||||||
|
&& vDistance / turn.getLength() < .225f)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
float current = curveDistanceTracker.floatValue();
|
float current = curveDistanceTracker.floatValue();
|
||||||
if (current == -1 || distance < current)
|
if (current == -1 || distance < current)
|
||||||
curveDistanceTracker.setValue(distance);
|
curveDistanceTracker.setValue(distance);
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
package com.simibubi.create.content.schematics.block;
|
package com.simibubi.create.content.schematics.block;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
||||||
|
import com.simibubi.create.content.contraptions.relays.belt.BeltBlockEntity;
|
||||||
|
import com.simibubi.create.content.contraptions.relays.belt.BeltBlockEntity.CasingType;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltPart;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltPart;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltSlope;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltSlope;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem;
|
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem;
|
||||||
|
@ -15,6 +18,7 @@ import net.minecraft.core.Direction.Axis;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.nbt.NbtUtils;
|
import net.minecraft.nbt.NbtUtils;
|
||||||
import net.minecraft.nbt.Tag;
|
import net.minecraft.nbt.Tag;
|
||||||
|
import net.minecraft.util.Mth;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -126,6 +130,7 @@ public abstract class LaunchedItem {
|
||||||
|
|
||||||
public static class ForBelt extends ForBlockState {
|
public static class ForBelt extends ForBlockState {
|
||||||
public int length;
|
public int length;
|
||||||
|
public CasingType[] casings;
|
||||||
|
|
||||||
public ForBelt() {}
|
public ForBelt() {}
|
||||||
|
|
||||||
|
@ -133,18 +138,27 @@ public abstract class LaunchedItem {
|
||||||
public CompoundTag serializeNBT() {
|
public CompoundTag serializeNBT() {
|
||||||
CompoundTag serializeNBT = super.serializeNBT();
|
CompoundTag serializeNBT = super.serializeNBT();
|
||||||
serializeNBT.putInt("Length", length);
|
serializeNBT.putInt("Length", length);
|
||||||
|
serializeNBT.putIntArray("Casing", Arrays.stream(casings)
|
||||||
|
.map(CasingType::ordinal)
|
||||||
|
.toList());
|
||||||
return serializeNBT;
|
return serializeNBT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void readNBT(CompoundTag nbt) {
|
void readNBT(CompoundTag nbt) {
|
||||||
length = nbt.getInt("Length");
|
length = nbt.getInt("Length");
|
||||||
|
int[] intArray = nbt.getIntArray("Casing");
|
||||||
|
casings = new CasingType[length];
|
||||||
|
for (int i = 0; i < casings.length; i++)
|
||||||
|
casings[i] = i >= intArray.length ? CasingType.NONE
|
||||||
|
: CasingType.values()[Mth.clamp(intArray[i], 0, CasingType.values().length - 1)];
|
||||||
super.readNBT(nbt);
|
super.readNBT(nbt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ForBelt(BlockPos start, BlockPos target, ItemStack stack, BlockState state, int length) {
|
public ForBelt(BlockPos start, BlockPos target, ItemStack stack, BlockState state, CasingType[] casings) {
|
||||||
super(start, target, stack, state, null);
|
super(start, target, stack, state, null);
|
||||||
this.length = length;
|
this.casings = casings;
|
||||||
|
this.length = casings.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -160,6 +174,15 @@ public abstract class LaunchedItem {
|
||||||
.setValue(AbstractSimpleShaftBlock.AXIS, axis));
|
.setValue(AbstractSimpleShaftBlock.AXIS, axis));
|
||||||
BeltConnectorItem.createBelts(world, target,
|
BeltConnectorItem.createBelts(world, target,
|
||||||
target.offset(offset.getX() * i, offset.getY() * i, offset.getZ() * i));
|
target.offset(offset.getX() * i, offset.getY() * i, offset.getZ() * i));
|
||||||
|
|
||||||
|
for (int segment = 0; segment < length; segment++) {
|
||||||
|
if (casings[segment] == CasingType.NONE)
|
||||||
|
continue;
|
||||||
|
BlockPos casingTarget =
|
||||||
|
target.offset(offset.getX() * segment, offset.getY() * segment, offset.getZ() * segment);
|
||||||
|
if (world.getBlockEntity(casingTarget) instanceof BeltBlockEntity bbe)
|
||||||
|
bbe.setCasingType(casings[segment]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.simibubi.create.content.schematics.block;
|
package com.simibubi.create.content.schematics.block;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -12,6 +13,8 @@ import com.simibubi.create.AllSoundEvents;
|
||||||
import com.simibubi.create.AllTags.AllBlockTags;
|
import com.simibubi.create.AllTags.AllBlockTags;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltBlockEntity;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltBlockEntity;
|
||||||
|
import com.simibubi.create.content.contraptions.relays.belt.BeltBlockEntity.CasingType;
|
||||||
|
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltPart;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltPart;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltSlope;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltSlope;
|
||||||
import com.simibubi.create.content.contraptions.relays.elementary.AbstractSimpleShaftBlock;
|
import com.simibubi.create.content.contraptions.relays.elementary.AbstractSimpleShaftBlock;
|
||||||
|
@ -741,38 +744,55 @@ public class SchematicannonBlockEntity extends SmartBlockEntity implements MenuP
|
||||||
return blockState;
|
return blockState;
|
||||||
|
|
||||||
return AllBlocks.SHAFT.getDefaultState()
|
return AllBlocks.SHAFT.getDefaultState()
|
||||||
.setValue(AbstractSimpleShaftBlock.AXIS, slope == BeltSlope.SIDEWAYS ? Axis.Y :
|
.setValue(AbstractSimpleShaftBlock.AXIS, slope == BeltSlope.SIDEWAYS ? Axis.Y
|
||||||
facing.getClockWise()
|
: facing.getClockWise()
|
||||||
.getAxis());
|
.getAxis());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void launchBlockOrBelt(BlockPos target, ItemStack icon, BlockState blockState, BlockEntity blockEntity) {
|
protected void launchBlockOrBelt(BlockPos target, ItemStack icon, BlockState blockState, BlockEntity blockEntity) {
|
||||||
if (AllBlocks.BELT.has(blockState)) {
|
if (AllBlocks.BELT.has(blockState)) {
|
||||||
blockState = stripBeltIfNotLast(blockState);
|
blockState = stripBeltIfNotLast(blockState);
|
||||||
if (blockEntity instanceof BeltBlockEntity && AllBlocks.BELT.has(blockState))
|
if (blockEntity instanceof BeltBlockEntity bbe && AllBlocks.BELT.has(blockState)) {
|
||||||
launchBelt(target, blockState, ((BeltBlockEntity) blockEntity).beltLength);
|
CasingType[] casings = new CasingType[bbe.beltLength];
|
||||||
else if (blockState != Blocks.AIR.defaultBlockState())
|
Arrays.fill(casings, CasingType.NONE);
|
||||||
launchBlock(target, icon, blockState, null);
|
BlockPos currentPos = target;
|
||||||
} else {
|
for (int i = 0; i < bbe.beltLength; i++) {
|
||||||
CompoundTag data = null;
|
BlockState currentState = bbe.getLevel()
|
||||||
if (blockEntity != null) {
|
.getBlockState(currentPos);
|
||||||
if (AllBlockTags.SAFE_NBT.matches(blockState)) {
|
if (!(currentState.getBlock() instanceof BeltBlock))
|
||||||
data = blockEntity.saveWithFullMetadata();
|
break;
|
||||||
data = NBTProcessors.process(blockEntity, data, true);
|
if (!(bbe.getLevel()
|
||||||
} else if (blockEntity instanceof IPartialSafeNBT) {
|
.getBlockEntity(currentPos) instanceof BeltBlockEntity beltAtSegment))
|
||||||
data = new CompoundTag();
|
break;
|
||||||
((IPartialSafeNBT) blockEntity).writeSafe(data);
|
casings[i] = beltAtSegment.casing;
|
||||||
data = NBTProcessors.process(blockEntity, data, true);
|
currentPos = BeltBlock.nextSegmentPosition(currentState, currentPos,
|
||||||
|
blockState.getValue(BeltBlock.PART) != BeltPart.END);
|
||||||
}
|
}
|
||||||
}
|
launchBelt(target, blockState, bbe.beltLength, casings);
|
||||||
launchBlock(target, icon, blockState, data);
|
} else if (blockState != Blocks.AIR.defaultBlockState())
|
||||||
|
launchBlock(target, icon, blockState, null);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CompoundTag data = null;
|
||||||
|
if (blockEntity != null) {
|
||||||
|
if (AllBlockTags.SAFE_NBT.matches(blockState)) {
|
||||||
|
data = blockEntity.saveWithFullMetadata();
|
||||||
|
data = NBTProcessors.process(blockEntity, data, true);
|
||||||
|
} else if (blockEntity instanceof IPartialSafeNBT) {
|
||||||
|
data = new CompoundTag();
|
||||||
|
((IPartialSafeNBT) blockEntity).writeSafe(data);
|
||||||
|
data = NBTProcessors.process(blockEntity, data, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
launchBlock(target, icon, blockState, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void launchBelt(BlockPos target, BlockState state, int length) {
|
protected void launchBelt(BlockPos target, BlockState state, int length, CasingType[] casings) {
|
||||||
blocksPlaced++;
|
blocksPlaced++;
|
||||||
ItemStack connector = AllItems.BELT_CONNECTOR.asStack();
|
ItemStack connector = AllItems.BELT_CONNECTOR.asStack();
|
||||||
flyingBlocks.add(new LaunchedItem.ForBelt(this.getBlockPos(), target, connector, state, length));
|
flyingBlocks.add(new LaunchedItem.ForBelt(this.getBlockPos(), target, connector, state, casings));
|
||||||
playFiringSound();
|
playFiringSound();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -180,6 +180,7 @@ public class BuilderTransformers {
|
||||||
String encasedSuffix = "_encased_cogwheel_side" + (large ? "_connected" : "");
|
String encasedSuffix = "_encased_cogwheel_side" + (large ? "_connected" : "");
|
||||||
String blockFolder = large ? "encased_large_cogwheel" : "encased_cogwheel";
|
String blockFolder = large ? "encased_large_cogwheel" : "encased_cogwheel";
|
||||||
String wood = casing.equals("brass") ? "dark_oak" : "spruce";
|
String wood = casing.equals("brass") ? "dark_oak" : "spruce";
|
||||||
|
String gearbox = casing.equals("brass") ? "brass_gearbox" : "gearbox";
|
||||||
return encasedBase(b, drop).addLayer(() -> RenderType::cutoutMipped)
|
return encasedBase(b, drop).addLayer(() -> RenderType::cutoutMipped)
|
||||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(),
|
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(),
|
||||||
(s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS)
|
(s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS)
|
||||||
|
@ -192,12 +193,15 @@ public class BuilderTransformers {
|
||||||
return p.models()
|
return p.models()
|
||||||
.withExistingParent(modelName, p.modLoc("block/" + blockFolder + "/block" + suffix))
|
.withExistingParent(modelName, p.modLoc("block/" + blockFolder + "/block" + suffix))
|
||||||
.texture("casing", Create.asResource("block/" + casing + "_casing"))
|
.texture("casing", Create.asResource("block/" + casing + "_casing"))
|
||||||
|
.texture("particle", Create.asResource("block/" + casing + "_casing"))
|
||||||
|
.texture("4", Create.asResource("block/" + gearbox))
|
||||||
.texture("1", new ResourceLocation("block/stripped_" + wood + "_log_top"))
|
.texture("1", new ResourceLocation("block/stripped_" + wood + "_log_top"))
|
||||||
.texture("side", Create.asResource("block/" + casing + encasedSuffix));
|
.texture("side", Create.asResource("block/" + casing + encasedSuffix));
|
||||||
}, false))
|
}, false))
|
||||||
.item()
|
.item()
|
||||||
.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + blockFolder + "/item"))
|
.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + blockFolder + "/item"))
|
||||||
.texture("casing", Create.asResource("block/" + casing + "_casing"))
|
.texture("casing", Create.asResource("block/" + casing + "_casing"))
|
||||||
|
.texture("particle", Create.asResource("block/" + casing + "_casing"))
|
||||||
.texture("1", new ResourceLocation("block/stripped_" + wood + "_log_top"))
|
.texture("1", new ResourceLocation("block/stripped_" + wood + "_log_top"))
|
||||||
.texture("side", Create.asResource("block/" + casing + encasedSuffix)))
|
.texture("side", Create.asResource("block/" + casing + encasedSuffix)))
|
||||||
.build();
|
.build();
|
||||||
|
@ -365,12 +369,10 @@ public class BuilderTransformers {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <B extends Block, P> NonNullUnaryOperator<BlockBuilder<B, P>> bearing(String prefix,
|
public static <B extends Block, P> NonNullUnaryOperator<BlockBuilder<B, P>> bearing(String prefix,
|
||||||
String backTexture, boolean woodenTop) {
|
String backTexture) {
|
||||||
ResourceLocation baseBlockModelLocation = Create.asResource("block/bearing/block");
|
ResourceLocation baseBlockModelLocation = Create.asResource("block/bearing/block");
|
||||||
ResourceLocation baseItemModelLocation = Create.asResource("block/bearing/item");
|
ResourceLocation baseItemModelLocation = Create.asResource("block/bearing/item");
|
||||||
ResourceLocation topTextureLocation = Create.asResource("block/bearing_top" + (woodenTop ? "_wooden" : ""));
|
ResourceLocation topTextureLocation = Create.asResource("block/bearing_top");
|
||||||
ResourceLocation nookTextureLocation =
|
|
||||||
Create.asResource("block/" + (woodenTop ? "andesite" : "brass") + "_casing");
|
|
||||||
ResourceLocation sideTextureLocation = Create.asResource("block/" + prefix + "_bearing_side");
|
ResourceLocation sideTextureLocation = Create.asResource("block/" + prefix + "_bearing_side");
|
||||||
ResourceLocation backTextureLocation = Create.asResource("block/" + backTexture);
|
ResourceLocation backTextureLocation = Create.asResource("block/" + backTexture);
|
||||||
return b -> b.initialProperties(SharedProperties::stone)
|
return b -> b.initialProperties(SharedProperties::stone)
|
||||||
|
@ -378,7 +380,6 @@ public class BuilderTransformers {
|
||||||
.blockstate((c, p) -> p.directionalBlock(c.get(), p.models()
|
.blockstate((c, p) -> p.directionalBlock(c.get(), p.models()
|
||||||
.withExistingParent(c.getName(), baseBlockModelLocation)
|
.withExistingParent(c.getName(), baseBlockModelLocation)
|
||||||
.texture("side", sideTextureLocation)
|
.texture("side", sideTextureLocation)
|
||||||
.texture("nook", nookTextureLocation)
|
|
||||||
.texture("back", backTextureLocation)))
|
.texture("back", backTextureLocation)))
|
||||||
.item()
|
.item()
|
||||||
.model((c, p) -> p.withExistingParent(c.getName(), baseItemModelLocation)
|
.model((c, p) -> p.withExistingParent(c.getName(), baseItemModelLocation)
|
||||||
|
|
|
@ -245,10 +245,7 @@ public class BlockHelper {
|
||||||
if (state.hasProperty(BlockStateProperties.WATERLOGGED))
|
if (state.hasProperty(BlockStateProperties.WATERLOGGED))
|
||||||
state = state.setValue(BlockStateProperties.WATERLOGGED, Boolean.FALSE);
|
state = state.setValue(BlockStateProperties.WATERLOGGED, Boolean.FALSE);
|
||||||
|
|
||||||
if (AllBlocks.BELT.has(state)) {
|
if (state.getBlock() == Blocks.COMPOSTER)
|
||||||
world.setBlock(target, state, 2);
|
|
||||||
return;
|
|
||||||
} else if (state.getBlock() == Blocks.COMPOSTER)
|
|
||||||
state = Blocks.COMPOSTER.defaultBlockState();
|
state = Blocks.COMPOSTER.defaultBlockState();
|
||||||
else if (state.getBlock() != Blocks.SEA_PICKLE && state.getBlock() instanceof IPlantable)
|
else if (state.getBlock() != Blocks.SEA_PICKLE && state.getBlock() instanceof IPlantable)
|
||||||
state = ((IPlantable) state.getBlock()).getPlant(world, target);
|
state = ((IPlantable) state.getBlock()).getPlant(world, target);
|
||||||
|
@ -273,6 +270,8 @@ public class BlockHelper {
|
||||||
|
|
||||||
if (state.getBlock() instanceof BaseRailBlock) {
|
if (state.getBlock() instanceof BaseRailBlock) {
|
||||||
placeRailWithoutUpdate(world, state, target);
|
placeRailWithoutUpdate(world, state, target);
|
||||||
|
} else if (AllBlocks.BELT.has(state)) {
|
||||||
|
world.setBlock(target, state, 2);
|
||||||
} else {
|
} else {
|
||||||
world.setBlock(target, state, 18);
|
world.setBlock(target, state, 18);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,23 +2,9 @@
|
||||||
"textures": {
|
"textures": {
|
||||||
"particle": "#side",
|
"particle": "#side",
|
||||||
"gearbox": "#back",
|
"gearbox": "#back",
|
||||||
"bearing_side": "#side",
|
"bearing_side": "#side"
|
||||||
"brass_casing": "#nook"
|
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
|
||||||
"name": "Indicator",
|
|
||||||
"from": [ 6, 10, 16 ],
|
|
||||||
"to": [ 10, 12, 17 ],
|
|
||||||
"faces": {
|
|
||||||
"north": { "texture": "#brass_casing", "uv": [ 3, 0, 7, 2 ] },
|
|
||||||
"east": { "texture": "#brass_casing", "uv": [ 7, 14, 8, 16 ] },
|
|
||||||
"south": { "texture": "#brass_casing", "uv": [ 6, 14, 10, 16 ] },
|
|
||||||
"west": { "texture": "#brass_casing", "uv": [ 8, 14, 9, 16 ] },
|
|
||||||
"up": { "texture": "#brass_casing", "uv": [ 6, 1, 10, 2 ] },
|
|
||||||
"down": { "texture": "#brass_casing", "uv": [ 6, 0, 10, 1 ] }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Side",
|
"name": "Side",
|
||||||
"from": [ 0, 0, 0 ],
|
"from": [ 0, 0, 0 ],
|
||||||
|
|
|
@ -3,22 +3,9 @@
|
||||||
"textures": {
|
"textures": {
|
||||||
"bearing_top": "create:block/bearing_top",
|
"bearing_top": "create:block/bearing_top",
|
||||||
"particle": "create:block/mechanical_bearing_side",
|
"particle": "create:block/mechanical_bearing_side",
|
||||||
"bearing_side": "create:block/mechanical_bearing_side",
|
"bearing_side": "create:block/mechanical_bearing_side"
|
||||||
"brass_casing": "create:block/brass_block"
|
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
|
||||||
"name": "Cube",
|
|
||||||
"from": [6, 12, 16],
|
|
||||||
"to": [10, 14, 17],
|
|
||||||
"faces": {
|
|
||||||
"east": {"uv": [10, 9, 11, 11], "texture": "#brass_casing"},
|
|
||||||
"south": {"uv": [6, 9, 10, 11], "texture": "#brass_casing"},
|
|
||||||
"west": {"uv": [5, 9, 6, 11], "texture": "#brass_casing"},
|
|
||||||
"up": {"uv": [6, 8, 10, 9], "texture": "#brass_casing"},
|
|
||||||
"down": {"uv": [6, 11, 10, 12], "texture": "#brass_casing"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Top",
|
"name": "Top",
|
||||||
"from": [0, 12, 0],
|
"from": [0, 12, 0],
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
"textures": {
|
"textures": {
|
||||||
"bearing_top": "create:block/bearing_top",
|
"bearing_top": "create:block/bearing_top",
|
||||||
"particle": "create:block/windmill_bearing_side",
|
"particle": "create:block/windmill_bearing_side",
|
||||||
"bearing_side": "create:block/windmill_bearing_side",
|
"bearing_side": "create:block/windmill_bearing_side"
|
||||||
"brass_casing": "create:block/andesite_casing"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
"credit": "Made with Blockbench",
|
"credit": "Made with Blockbench",
|
||||||
"textures": {
|
"textures": {
|
||||||
"1": "block/stripped_spruce_log_top",
|
"1": "block/stripped_spruce_log_top",
|
||||||
"3": "create:block/gearbox",
|
"4": "create:block/gearbox",
|
||||||
"particle": "create:block/andesite_casing",
|
"particle": "create:block/andesite_casing",
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
"south": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
"south": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
||||||
"west": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
"west": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
||||||
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
|
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
|
||||||
"down": {"uv": [0, 0, 16, 16], "texture": "#3"}
|
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"credit": "Made with Blockbench",
|
"credit": "Made with Blockbench",
|
||||||
"textures": {
|
"textures": {
|
||||||
"1": "block/stripped_spruce_log_top",
|
"1": "block/stripped_spruce_log_top",
|
||||||
"3": "create:block/gearbox",
|
"4": "create:block/gearbox",
|
||||||
"particle": "create:block/andesite_casing",
|
"particle": "create:block/andesite_casing",
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
"east": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
"east": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
||||||
"south": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
"south": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
||||||
"west": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
"west": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
||||||
"up": {"uv": [0, 0, 16, 16], "texture": "#3"},
|
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"credit": "Made with Blockbench",
|
"credit": "Made with Blockbench",
|
||||||
"textures": {
|
"textures": {
|
||||||
"1": "block/stripped_spruce_log_top",
|
"1": "block/stripped_spruce_log_top",
|
||||||
"3": "create:block/gearbox",
|
"4": "create:block/gearbox",
|
||||||
"particle": "create:block/andesite_casing",
|
"particle": "create:block/andesite_casing",
|
||||||
"casing": "create:block/andesite_casing",
|
"casing": "create:block/andesite_casing",
|
||||||
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
"side": "create:block/andesite_encased_cogwheel_side_connected"
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
"south": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
"south": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
||||||
"west": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
"west": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
|
||||||
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
|
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
|
||||||
"down": {"uv": [0, 0, 16, 16], "texture": "#3"}
|
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
"east": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
"east": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
||||||
"south": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
"south": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
||||||
"west": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
"west": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
|
||||||
"up": {"uv": [0, 0, 16, 16], "texture": "#3"},
|
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -8,10 +8,21 @@
|
||||||
"particle": "create:block/gearshift_off"
|
"particle": "create:block/gearshift_off"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 16, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#2"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#2"}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"from": [1.95, 16, 1.95],
|
"from": [1.95, 16, 1.95],
|
||||||
"to": [14.05, 15, 14.05],
|
"to": [14.05, 15, 14.05],
|
||||||
"rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 8]},
|
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [2, 15, 14, 16], "texture": "#1"},
|
"north": {"uv": [2, 15, 14, 16], "texture": "#1"},
|
||||||
"east": {"uv": [0, 2, 1, 14], "rotation": 270, "texture": "#1"},
|
"east": {"uv": [0, 2, 1, 14], "rotation": 270, "texture": "#1"},
|
||||||
|
@ -23,7 +34,6 @@
|
||||||
{
|
{
|
||||||
"from": [1.95, 1, 1.95],
|
"from": [1.95, 1, 1.95],
|
||||||
"to": [14.05, 0, 14.05],
|
"to": [14.05, 0, 14.05],
|
||||||
"rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 8]},
|
|
||||||
"faces": {
|
"faces": {
|
||||||
"north": {"uv": [2, 15, 14, 16], "rotation": 180, "texture": "#1"},
|
"north": {"uv": [2, 15, 14, 16], "rotation": 180, "texture": "#1"},
|
||||||
"east": {"uv": [15, 2, 16, 14], "rotation": 270, "texture": "#1"},
|
"east": {"uv": [15, 2, 16, 14], "rotation": 270, "texture": "#1"},
|
||||||
|
@ -31,19 +41,6 @@
|
||||||
"west": {"uv": [0, 2, 1, 14], "rotation": 90, "texture": "#1"},
|
"west": {"uv": [0, 2, 1, 14], "rotation": 90, "texture": "#1"},
|
||||||
"down": {"uv": [2, 2, 14, 14], "texture": "#1"}
|
"down": {"uv": [2, 2, 14, 14], "texture": "#1"}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": [0, 0, 0],
|
|
||||||
"to": [16, 16, 16],
|
|
||||||
"rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 8]},
|
|
||||||
"faces": {
|
|
||||||
"north": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
|
||||||
"east": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
|
||||||
"south": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
|
||||||
"west": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
|
||||||
"up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#2"},
|
|
||||||
"down": {"uv": [0, 0, 16, 16], "texture": "#2"}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"parent": "create:item/filter",
|
|
||||||
"textures": {
|
|
||||||
"layer0": "create:item/brass_filter",
|
|
||||||
"particle": "create:item/brass_filter"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"credit": "Made with Blockbench",
|
|
||||||
"parent": "builtin/generated",
|
|
||||||
"textures": {
|
|
||||||
"particle": "create:item/andesite_filter",
|
|
||||||
"layer0": "create:item/andesite_filter"
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 298 B After Width: | Height: | Size: 298 B |
Loading…
Reference in a new issue