What are wheels?
- Added the Large Water Wheel - Water wheel fins are no longer directional - Water wheels now only have two speed levels - Liquid can no longer spread perpendicularly on top of water wheels (experimental) - New crushing wheel model
This commit is contained in:
parent
0ad875bb74
commit
70964165d5
64 changed files with 13431 additions and 492 deletions
|
@ -77,7 +77,7 @@ f0031f5e970b3d5695472ed384950b8631b015ed assets/create/blockstates/creative_moto
|
|||
f7c283460879e70ed0fa112a24caa06a7122358f assets/create/blockstates/crimsite_pillar.json
|
||||
24ee16e3dadb3e0221afce7af37643494f471fb0 assets/create/blockstates/crimson_window.json
|
||||
3e6cd0945390b390b963474f7cf708e2dcba631c assets/create/blockstates/crimson_window_pane.json
|
||||
fe2f78b94c20944399101e7369e2d43324297fb6 assets/create/blockstates/crushing_wheel.json
|
||||
644cc650c49602e654e85b3b05073748c6cd42e5 assets/create/blockstates/crushing_wheel.json
|
||||
a1dd6cb3daa97ea871290ef7b178d28b564ee2a2 assets/create/blockstates/crushing_wheel_controller.json
|
||||
b1126c191877cff86b4e2de83e1fcbd151451cb7 assets/create/blockstates/cuckoo_clock.json
|
||||
7b4147b215d676a528ee8782a4528d42dac02198 assets/create/blockstates/cut_andesite.json
|
||||
|
@ -256,6 +256,7 @@ be3bef7e091d8b50bfc1c6b7275946d1f636aefd assets/create/blockstates/horizontal_fr
|
|||
b15bea757ef981e0ca60f740ca234ee2014eb7b7 assets/create/blockstates/jungle_window_pane.json
|
||||
a922b31bc4a91f5825b643ba5fa2c9a836d612cd assets/create/blockstates/large_bogey.json
|
||||
f651091db216b009b3379b2f48d56d03481c8675 assets/create/blockstates/large_cogwheel.json
|
||||
9554c8d14271a2b85df7eadeceaa8b31849415e4 assets/create/blockstates/large_water_wheel.json
|
||||
a38184e035c2ebca7471e1714494fea213af259e assets/create/blockstates/layered_andesite.json
|
||||
2409f04042380a8ad086f9c4f98032e85771c3f3 assets/create/blockstates/layered_asurine.json
|
||||
ca1648840d9f5786f85e4214a0951306c1247c73 assets/create/blockstates/layered_calcite.json
|
||||
|
@ -525,6 +526,7 @@ c4db76b9d36cfb098df0d158cb6f8b82768ebe14 assets/create/blockstates/vertical_fram
|
|||
3a5da54d9763e9512cfaa47b25226b79738b25f3 assets/create/blockstates/warped_window.json
|
||||
19ef7a16c82f07d304fb60d121845185d189aecf assets/create/blockstates/warped_window_pane.json
|
||||
d31fce8315c8715521d66b5dcc166c84e949dd1d assets/create/blockstates/water_wheel.json
|
||||
f4d185b9eb086e5024a9818bad57d524267d6e13 assets/create/blockstates/water_wheel_structure.json
|
||||
97a8f4cf45776b1fb5249fe1a9314b5c615fb130 assets/create/blockstates/waxed_copper_shingle_slab.json
|
||||
d31a8ad9ffa09cbabfb284d44c9c44d036072083 assets/create/blockstates/waxed_copper_shingle_stairs.json
|
||||
e7be350dd2fd80357c56a0fbad3e000818b822c9 assets/create/blockstates/waxed_copper_shingles.json
|
||||
|
@ -570,24 +572,24 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
|
|||
5616dda664dd106d576848124fc0fc1de18d0fd3 assets/create/blockstates/yellow_valve_handle.json
|
||||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||
6f48c5bb5b0a00ed692330c78e46366c92023cf2 assets/create/lang/en_ud.json
|
||||
a443edd357467dacda00c40358a3933c633078f2 assets/create/lang/en_us.json
|
||||
245e6a527f4e866df5763a589d63f19183ba59f4 assets/create/lang/unfinished/de_de.json
|
||||
d8e0bfab611fe154641e2a8a34f4c9d682d86fd4 assets/create/lang/unfinished/es_cl.json
|
||||
bf3c212b924f822ae6b6606b4d1182ae1e50d38c assets/create/lang/unfinished/es_es.json
|
||||
a667b67cd82970545f5738d7e5f196630779350a assets/create/lang/unfinished/fr_fr.json
|
||||
ee2306a105bb9e78d3a18769f4538a81d57f34a4 assets/create/lang/unfinished/it_it.json
|
||||
b2afee31be5c95277dd11fc11237c6786d4f4621 assets/create/lang/unfinished/ja_jp.json
|
||||
18f0b32499050a5f538d0e9aaac09287c9babb26 assets/create/lang/unfinished/ko_kr.json
|
||||
b5921f0aeaf4554809c4e3c90c4fca4205132437 assets/create/lang/unfinished/nl_nl.json
|
||||
8e2edbbf4a6597ca5f6da51ec8a8c719c46e4ba8 assets/create/lang/unfinished/pl_pl.json
|
||||
3f5d2c7b80b865327c3e20621a1d418d07c63075 assets/create/lang/unfinished/pt_br.json
|
||||
cabcafe00fe908f86da28ae83ddd8f6d45a81337 assets/create/lang/unfinished/pt_pt.json
|
||||
d334a2745c94642644719c98f36bd0947b5ff28d assets/create/lang/unfinished/ro_ro.json
|
||||
095cde1dcaf51ca9d951779d8a267c570b54076b assets/create/lang/unfinished/ru_ru.json
|
||||
4726ad8297dd08781ba2bf477dff5c3361f91bb3 assets/create/lang/unfinished/uk_ua.json
|
||||
c45fa0de470ef40a2eaa99057fa01d124a89e903 assets/create/lang/unfinished/zh_cn.json
|
||||
cd4b05e87dd85cf9d6e270770c7ce069e01156c5 assets/create/lang/unfinished/zh_tw.json
|
||||
f7ccfdfb562774ed479b0eb4428b01c9370a0e82 assets/create/lang/en_ud.json
|
||||
a687bb0e852475b0767811d1ed312cea575c8d67 assets/create/lang/en_us.json
|
||||
24ac91b8858450b43759a28f4e723770ff830f3e assets/create/lang/unfinished/de_de.json
|
||||
03d654aa6010284357870c7182b09b0f3c002a36 assets/create/lang/unfinished/es_cl.json
|
||||
5cc92870004fc51c4161e18fe47584c3ed007d95 assets/create/lang/unfinished/es_es.json
|
||||
777b19874e306ff7cf15680daa09cb96f6932bac assets/create/lang/unfinished/fr_fr.json
|
||||
6195558d5fab2313cbecdf6700cac56ba6cc01bc assets/create/lang/unfinished/it_it.json
|
||||
ec44c15168f39ddef731a63c381334648d2c43ec assets/create/lang/unfinished/ja_jp.json
|
||||
a748f9aa8e1a2e46a767534d108f45106d9ba1cd assets/create/lang/unfinished/ko_kr.json
|
||||
f2b869014a5a09bb6afde268bca429d30678b513 assets/create/lang/unfinished/nl_nl.json
|
||||
06ab4f23425ecdabd0f6d448cd4f3cce9c4b6340 assets/create/lang/unfinished/pl_pl.json
|
||||
8e3c503979b094574aa63bfed38c49d8a89a38a2 assets/create/lang/unfinished/pt_br.json
|
||||
1d0aaae3e650b5c0b5331b12fb65c0b9287510b3 assets/create/lang/unfinished/pt_pt.json
|
||||
f9446a1fe1546c679553b6ae06afc52b77c1d249 assets/create/lang/unfinished/ro_ro.json
|
||||
140a5ac56c031fe47aaedb1c3ee1e7d8ff363240 assets/create/lang/unfinished/ru_ru.json
|
||||
3bc54c7c305a6f33e9c1eb84bfd7d4282c6e635d assets/create/lang/unfinished/uk_ua.json
|
||||
7096c87595fa806088e0602cb165cc6c68336c96 assets/create/lang/unfinished/zh_cn.json
|
||||
994886a932bc8cc19c8203273e2b0d5852c86fd5 assets/create/lang/unfinished/zh_tw.json
|
||||
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
|
||||
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
|
||||
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
|
||||
|
@ -1742,7 +1744,7 @@ cecee6daf2619dcf035c7aea5fff1bd892f6ff06 assets/create/models/item/crushed_silve
|
|||
a8d3f330d312f82b0de59940581910090b2bd012 assets/create/models/item/crushed_tin_ore.json
|
||||
b359064405d189e2802969715cd5f682ddbf0bb1 assets/create/models/item/crushed_uranium_ore.json
|
||||
2bb791db62dce6bf2e2227f9b607c131828471fd assets/create/models/item/crushed_zinc_ore.json
|
||||
823c91f63565db54ec3944a1e90e7aee18e41062 assets/create/models/item/crushing_wheel.json
|
||||
f9a158bd5bbbf60310e8f3d4f10911e8baf03579 assets/create/models/item/crushing_wheel.json
|
||||
dae5cffa4e1263d6a113469f79fba8695fa8232a assets/create/models/item/cuckoo_clock.json
|
||||
120cb6f4fc6b28d86117dbe059b990c1303c46ee assets/create/models/item/cut_andesite.json
|
||||
9c94151d18e0201e1e1967713f2ab86ebc9c647b assets/create/models/item/cut_andesite_brick_slab.json
|
||||
|
@ -1924,6 +1926,7 @@ d4883a5c777abb6c5235563eadb70e2b1b3de17b assets/create/models/item/incomplete_tr
|
|||
83fa8699318e51f838b483b40b3e897c34ed53d1 assets/create/models/item/jungle_window.json
|
||||
766323f6026c3505a75db2dee2996d342370d9c2 assets/create/models/item/jungle_window_pane.json
|
||||
bcaaf60d9a853cce90169dabcb36d29a3ce19e18 assets/create/models/item/large_cogwheel.json
|
||||
7418fb83e9b4ad6cab8e0a28aff7f615fbfb20b4 assets/create/models/item/large_water_wheel.json
|
||||
281e2b055c6eb6994ca306c8957fc80a98fb5473 assets/create/models/item/layered_andesite.json
|
||||
ad814f2eef3415c44e1df73a84011fbe801a0de3 assets/create/models/item/layered_asurine.json
|
||||
d188923db1e37aeac3b24ee2e6f0a4a13a794da9 assets/create/models/item/layered_calcite.json
|
||||
|
@ -2450,6 +2453,7 @@ a9f2c8a0b0b322741575ef833a461006ef2f0421 data/create/advancements/recipes/create
|
|||
2ccfaf572456e8642a0070ea6928a082f98c63af data/create/advancements/recipes/create.base/crafting/kinetics/item_vault.json
|
||||
73433a5cd400ed392796a4e543f15c42dd499fe8 data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json
|
||||
1c9e9888ccc51ddf76b9df0c186e74efaefb1256 data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheelfrom_little.json
|
||||
5a1df5831fe5d2e2a6cbedcbc67216dd566e7fa0 data/create/advancements/recipes/create.base/crafting/kinetics/large_water_wheel.json
|
||||
eb007bb079bbe6b6aaad2ca90f5af84261e3f8ea data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat.json
|
||||
571da50fbf5f2fcd3363b3dab91e7233e0ebffa0 data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat_from_other_seat.json
|
||||
ddd80e84a7d595bbb3cf405a902ebbfd4ea5263c data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json
|
||||
|
@ -3666,6 +3670,7 @@ db23fee08abdb61fe2f200a5016e41523159feef data/create/loot_tables/blocks/jungle_w
|
|||
67f7d9162d3b86e198ab7faa1ddcfdfce605d10c data/create/loot_tables/blocks/jungle_window_pane.json
|
||||
7ed68e33a8c488242a2d9039797498068797c5a6 data/create/loot_tables/blocks/large_bogey.json
|
||||
a70fcfe474ba023adc9c326218c5664fbd7b58f8 data/create/loot_tables/blocks/large_cogwheel.json
|
||||
9edccdfed011fdbac3a8911684b73fd029df87b4 data/create/loot_tables/blocks/large_water_wheel.json
|
||||
81013913c3cc88e2390608420a2911d57414bd2c data/create/loot_tables/blocks/layered_andesite.json
|
||||
a89d357d3b8d7633bffe12a4197ab19cba891005 data/create/loot_tables/blocks/layered_asurine.json
|
||||
93950e03d141e59948c4aadca09ecd8b898a5276 data/create/loot_tables/blocks/layered_calcite.json
|
||||
|
@ -3935,6 +3940,7 @@ f74bc454bda585bc5ab0b5b3e0b4d345a6ff039b data/create/loot_tables/blocks/train_tr
|
|||
183444f27542a3a7ab933243b61c2714357f7361 data/create/loot_tables/blocks/warped_window.json
|
||||
2fa711af9d00bd47f256fe6b0cc83a303644b1c0 data/create/loot_tables/blocks/warped_window_pane.json
|
||||
e6c1f19127a3fcf010ed6fb004a40a69458c54e3 data/create/loot_tables/blocks/water_wheel.json
|
||||
5c1df8443043b3fe3b665dba348e2ff188bcbe31 data/create/loot_tables/blocks/water_wheel_structure.json
|
||||
815cddd9fb217a69b3a0ac4554d830c04d0ef173 data/create/loot_tables/blocks/waxed_copper_shingle_slab.json
|
||||
b28ea9be9de982b6561839c61f4a7264c8ba4171 data/create/loot_tables/blocks/waxed_copper_shingle_stairs.json
|
||||
b26f12b81e4f801cc107b5c6316ad9006c5ea391 data/create/loot_tables/blocks/waxed_copper_shingles.json
|
||||
|
@ -4130,6 +4136,7 @@ f4fbb11ef55f3431bd387f3f6f258513bfbc8011 data/create/recipes/crafting/kinetics/i
|
|||
8f7110447f039f80a6f5b1d854bc760c3d77da82 data/create/recipes/crafting/kinetics/item_vault.json
|
||||
7f105694e02d4ce69a02740edfa4a0d0bc4f4eac data/create/recipes/crafting/kinetics/large_cogwheel.json
|
||||
197c174c28f294b23ae6496b7a31c35e7e8b4771 data/create/recipes/crafting/kinetics/large_cogwheelfrom_little.json
|
||||
5609b12dde7127965c70da2760038c456ba3cfd6 data/create/recipes/crafting/kinetics/large_water_wheel.json
|
||||
0397b107ab380cd23390c96f298971a70e9bceef data/create/recipes/crafting/kinetics/light_blue_seat.json
|
||||
aa06f0594e1b2d31aa41bace309ed95a16529498 data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json
|
||||
bb8759b51aef768fa841962b9ad49676a6096a1c data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json
|
||||
|
@ -4207,7 +4214,7 @@ c38984c432bd410261aaf6a6f30744c58481b325 data/create/recipes/crafting/kinetics/t
|
|||
5e2af5ce3957d5ce4f54ceb667dcfed5cffafb32 data/create/recipes/crafting/kinetics/train_trapdoor.json
|
||||
8494f5fcd85a740fa0f0384e3522d8cdd905ce49 data/create/recipes/crafting/kinetics/turntable.json
|
||||
057c889b0a306f44b8835c896663154ccd9ff12f data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json
|
||||
4fb009b86a51b2e259bd1f73848803f6276dd820 data/create/recipes/crafting/kinetics/water_wheel.json
|
||||
152e63ade2759d01a07b9e71a3c60dfe5ea15ba8 data/create/recipes/crafting/kinetics/water_wheel.json
|
||||
06b5b371ae9dd81df8fd3dee6d3559b1ed0db35c data/create/recipes/crafting/kinetics/weighted_ejector.json
|
||||
f508d510576c93712e7f5265345a32e8818bbf0d data/create/recipes/crafting/kinetics/whisk.json
|
||||
98546e5e5f1fe111e84c4a17569c8e7b57f8cc8d data/create/recipes/crafting/kinetics/white_sail.json
|
||||
|
@ -5779,8 +5786,8 @@ e16d74571ae10007f06f3b86ddf05d3ca9b73559 data/minecraft/tags/blocks/doors.json
|
|||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json
|
||||
69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json
|
||||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json
|
||||
a8662d145a8b1b5faa263c2aac9d12e7727c8c3f data/minecraft/tags/blocks/mineable/axe.json
|
||||
8d1b001e56bf81a9b314200a43bafa5210d2594d data/minecraft/tags/blocks/mineable/pickaxe.json
|
||||
f4a1cdc4ffe7dd8412e8be369a48d19cf31a7f77 data/minecraft/tags/blocks/mineable/axe.json
|
||||
a7eb0e379696c39c6f5a4603e29d3d8cc4fbf50c data/minecraft/tags/blocks/mineable/pickaxe.json
|
||||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/moss_replaceable.json
|
||||
e157c1d3af30e409e34bbefbe15a037e6e1c8daa data/minecraft/tags/blocks/needs_iron_tool.json
|
||||
a08f67865337f62601c5e333b4011382d10020e4 data/minecraft/tags/blocks/needs_stone_tool.json
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
{
|
||||
"variants": {
|
||||
"axis=x": {
|
||||
"model": "create:block/crushing_wheel",
|
||||
"model": "create:block/crushing_wheel/block",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"axis=y": {
|
||||
"model": "create:block/crushing_wheel"
|
||||
"model": "create:block/crushing_wheel/block"
|
||||
},
|
||||
"axis=z": {
|
||||
"model": "create:block/crushing_wheel",
|
||||
"model": "create:block/crushing_wheel/block",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
}
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"variants": {
|
||||
"axis=x,extension=false": {
|
||||
"model": "create:block/large_water_wheel/block",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"axis=y,extension=false": {
|
||||
"model": "create:block/large_water_wheel/block"
|
||||
},
|
||||
"axis=z,extension=false": {
|
||||
"model": "create:block/large_water_wheel/block",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
},
|
||||
"axis=x,extension=true": {
|
||||
"model": "create:block/large_water_wheel/block_extension",
|
||||
"x": 90,
|
||||
"y": 90
|
||||
},
|
||||
"axis=y,extension=true": {
|
||||
"model": "create:block/large_water_wheel/block_extension"
|
||||
},
|
||||
"axis=z,extension=true": {
|
||||
"model": "create:block/large_water_wheel/block_extension",
|
||||
"x": 90,
|
||||
"y": 180
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "minecraft:block/air"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -257,6 +257,7 @@
|
|||
"block.create.jungle_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u01DD\u05DFbun\u017F",
|
||||
"block.create.large_bogey": "\u028E\u01DDbo\u15FA \u01DDb\u0279\u0250\uA780",
|
||||
"block.create.large_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 \u01DDb\u0279\u0250\uA780",
|
||||
"block.create.large_water_wheel": "\u05DF\u01DD\u01DD\u0265M \u0279\u01DD\u0287\u0250M \u01DDb\u0279\u0250\uA780",
|
||||
"block.create.layered_andesite": "\u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u0279\u01DD\u028E\u0250\uA780",
|
||||
"block.create.layered_asurine": "\u01DDu\u0131\u0279ns\u2C6F p\u01DD\u0279\u01DD\u028E\u0250\uA780",
|
||||
"block.create.layered_calcite": "\u01DD\u0287\u0131\u0254\u05DF\u0250\u0186 p\u01DD\u0279\u01DD\u028E\u0250\uA780",
|
||||
|
@ -526,6 +527,7 @@
|
|||
"block.create.warped_window": "\u028Dopu\u0131M p\u01DDd\u0279\u0250M",
|
||||
"block.create.warped_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M p\u01DDd\u0279\u0250M",
|
||||
"block.create.water_wheel": "\u05DF\u01DD\u01DD\u0265M \u0279\u01DD\u0287\u0250M",
|
||||
"block.create.water_wheel_structure": "\u05DF\u01DD\u01DD\u0265M \u0279\u01DD\u0287\u0250M \u01DDb\u0279\u0250\uA780",
|
||||
"block.create.waxed_copper_shingle_slab": "q\u0250\u05DFS \u01DD\u05DFbu\u0131\u0265S \u0279\u01DDddo\u0186 p\u01DDx\u0250M",
|
||||
"block.create.waxed_copper_shingle_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u05DFbu\u0131\u0265S \u0279\u01DDddo\u0186 p\u01DDx\u0250M",
|
||||
"block.create.waxed_copper_shingles": "s\u01DD\u05DFbu\u0131\u0265S \u0279\u01DDddo\u0186 p\u01DDx\u0250M",
|
||||
|
|
|
@ -260,6 +260,7 @@
|
|||
"block.create.jungle_window_pane": "Jungle Window Pane",
|
||||
"block.create.large_bogey": "Large Bogey",
|
||||
"block.create.large_cogwheel": "Large Cogwheel",
|
||||
"block.create.large_water_wheel": "Large Water Wheel",
|
||||
"block.create.layered_andesite": "Layered Andesite",
|
||||
"block.create.layered_asurine": "Layered Asurine",
|
||||
"block.create.layered_calcite": "Layered Calcite",
|
||||
|
@ -529,6 +530,7 @@
|
|||
"block.create.warped_window": "Warped Window",
|
||||
"block.create.warped_window_pane": "Warped Window Pane",
|
||||
"block.create.water_wheel": "Water Wheel",
|
||||
"block.create.water_wheel_structure": "Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Waxed Copper Shingle Slab",
|
||||
"block.create.waxed_copper_shingle_stairs": "Waxed Copper Shingle Stairs",
|
||||
"block.create.waxed_copper_shingles": "Waxed Copper Shingles",
|
||||
|
@ -1044,6 +1046,8 @@
|
|||
"create.terrainzapper.usingBlock": "Using: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Minecarts cannot have more than two couplings each",
|
||||
"create.minecart_coupling.unloaded": "Parts of your train seem to be in unloaded chunks",
|
||||
"create.minecart_coupling.no_loops": "Couplings cannot form a loop",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 878",
|
||||
"_": "Missing Localizations: 881",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Tropenholzfensterscheibe",
|
||||
"block.create.large_bogey": "Großes Drehgestell",
|
||||
"block.create.large_cogwheel": "Großes Zahnrad",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Geschichteter Andesit",
|
||||
"block.create.layered_asurine": "Geschichtetes Asurin",
|
||||
"block.create.layered_calcite": "Geschichtetes Kalzit",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Wirrfenster",
|
||||
"block.create.warped_window_pane": "Wirrfensterscheibe",
|
||||
"block.create.water_wheel": "Wasserrad",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Gewachste Kupferschindelstufe",
|
||||
"block.create.waxed_copper_shingle_stairs": "Gewachste Kupferschindeltreppe",
|
||||
"block.create.waxed_copper_shingles": "Gewachste Kupferschindel",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Nutze: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Linksklicke einen Block, um ein Material auszuwählen",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Jede Lore kann nicht mehr als zwei Kupplungen haben",
|
||||
"create.minecart_coupling.unloaded": "Teile des Zuges scheinen in nicht geladenen Chunks zu sein",
|
||||
"create.minecart_coupling.no_loops": "Kupplungen können keine Schleife bilden",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1024",
|
||||
"_": "Missing Localizations: 1027",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Panel de Ventana de Jungla",
|
||||
"block.create.large_bogey": "UNLOCALIZED: Large Bogey",
|
||||
"block.create.large_cogwheel": "Engranaje Grande",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Capa de Andesita",
|
||||
"block.create.layered_asurine": "UNLOCALIZED: Layered Asurine",
|
||||
"block.create.layered_calcite": "UNLOCALIZED: Layered Calcite",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Ventana Distorsionada",
|
||||
"block.create.warped_window_pane": "Panel de Ventana Distorsionada",
|
||||
"block.create.water_wheel": "Rueda de Agua",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab",
|
||||
"block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs",
|
||||
"block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Usando: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Click Izquierdo a un Bloque para elegir Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Las vagonetas no pueden tener mas de dos uniones cada una",
|
||||
"create.minecart_coupling.unloaded": "Partes de tu tren parecen estar en chunks no cargados",
|
||||
"create.minecart_coupling.no_loops": "Las uniones no puede formar un ciclo",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 44",
|
||||
"_": "Missing Localizations: 47",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Panel de ventana de jungla",
|
||||
"block.create.large_bogey": "Vagón grande",
|
||||
"block.create.large_cogwheel": "Engranaje grande",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Andesita estratificada",
|
||||
"block.create.layered_asurine": "Azurina estratificada",
|
||||
"block.create.layered_calcite": "Calcita estratificada",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Ventana distorsionada",
|
||||
"block.create.warped_window_pane": "Panel de ventana distorsionada",
|
||||
"block.create.water_wheel": "Rueda hidráulica mecánica",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Losa de tejas de cobre encerado",
|
||||
"block.create.waxed_copper_shingle_stairs": "Escaleras de tejas de cobre encerado",
|
||||
"block.create.waxed_copper_shingles": "Bloque de tejas de cobre encerado",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Usando: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Clic izquierdo a un bloque para establecer el material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Las vagonetas no pueden tener más de dos enganches cada una",
|
||||
"create.minecart_coupling.unloaded": "Algunas partes de su tren parecen estar en chunks no cargados",
|
||||
"create.minecart_coupling.no_loops": "Los acoplamientos no pueden formar un bucle",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2173",
|
||||
"_": "Missing Localizations: 2176",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane",
|
||||
"block.create.large_bogey": "UNLOCALIZED: Large Bogey",
|
||||
"block.create.large_cogwheel": "Grande roue dentée",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "UNLOCALIZED: Layered Andesite",
|
||||
"block.create.layered_asurine": "UNLOCALIZED: Layered Asurine",
|
||||
"block.create.layered_calcite": "UNLOCALIZED: Layered Calcite",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "UNLOCALIZED: Warped Window",
|
||||
"block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane",
|
||||
"block.create.water_wheel": "Roue à eau",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab",
|
||||
"block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs",
|
||||
"block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each",
|
||||
"create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks",
|
||||
"create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 38",
|
||||
"_": "Missing Localizations: 41",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Pannello di finestra della giungla",
|
||||
"block.create.large_bogey": "Carrello grande",
|
||||
"block.create.large_cogwheel": "Ingranaggio grande",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Andesite stratificata",
|
||||
"block.create.layered_asurine": "Azurite stratificata",
|
||||
"block.create.layered_calcite": "Calcite stratificata",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Finestra distorta",
|
||||
"block.create.warped_window_pane": "Pannello di finestra distorta",
|
||||
"block.create.water_wheel": "Mulino ad acqua",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Lastra di tegole di rame cerato",
|
||||
"block.create.waxed_copper_shingle_stairs": "Scalini di tegole di rame cerato",
|
||||
"block.create.waxed_copper_shingles": "Tegole di rame cerato",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Blocco in uso: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Fai click sinistro su un blocco per scegliere il materiale",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "I carrelli da miniera non possono avere più di due agganci ciascuno",
|
||||
"create.minecart_coupling.unloaded": "Parti del tuo Macchinario sembrano essere in mezzo a chunk non caricati",
|
||||
"create.minecart_coupling.no_loops": "Gli agganci non possono creare un loop",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 40",
|
||||
"_": "Missing Localizations: 43",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "ジャングルの板窓",
|
||||
"block.create.large_bogey": "大きな台車",
|
||||
"block.create.large_cogwheel": "大きな歯車",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "安山岩の組石",
|
||||
"block.create.layered_asurine": "瑠璃岩の組石",
|
||||
"block.create.layered_calcite": "方解石の組石",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "歪んだ窓",
|
||||
"block.create.warped_window_pane": "歪んだ板窓",
|
||||
"block.create.water_wheel": "水車",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "錆止めされた銅の屋根板のハーフブロック",
|
||||
"block.create.waxed_copper_shingle_stairs": "錆止めされた銅の屋根板の階段",
|
||||
"block.create.waxed_copper_shingles": "錆止めされた銅の屋根板",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "使用中: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "ブロックをスニークせず右クリックでブロックを選択",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません",
|
||||
"create.minecart_coupling.unloaded": "列車の一部があるチャンクがロードされていません",
|
||||
"create.minecart_coupling.no_loops": "ループ状に連結させることはできません",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 44",
|
||||
"_": "Missing Localizations: 47",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "정글나무 유리판",
|
||||
"block.create.large_bogey": "큰 대차",
|
||||
"block.create.large_cogwheel": "큰 톱니바퀴",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "단층 안산암",
|
||||
"block.create.layered_asurine": "단층 담청암",
|
||||
"block.create.layered_calcite": "단층 방해석",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "뒤틀린 유리창",
|
||||
"block.create.warped_window_pane": "뒤틀린 유리판",
|
||||
"block.create.water_wheel": "물레바퀴",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "밀랍칠한 구리 판자 반 블록",
|
||||
"block.create.waxed_copper_shingle_stairs": "밀랍칠한 구리 판자 계단",
|
||||
"block.create.waxed_copper_shingles": "밀랍칠한 구리 판자",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "사용 중: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "좌클릭으로 재료로 쓸 블록을 선택하세요",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "광산 수레는 최대 2개의 커플링만 가질 수 있습니다",
|
||||
"create.minecart_coupling.unloaded": "열차 일부분이 로딩되지 않은 청크에 있는 것 같습니다",
|
||||
"create.minecart_coupling.no_loops": "커플링은 반복할 수 없습니다",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2521",
|
||||
"_": "Missing Localizations: 2524",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane",
|
||||
"block.create.large_bogey": "UNLOCALIZED: Large Bogey",
|
||||
"block.create.large_cogwheel": "Groot Tandwiel",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "UNLOCALIZED: Layered Andesite",
|
||||
"block.create.layered_asurine": "UNLOCALIZED: Layered Asurine",
|
||||
"block.create.layered_calcite": "UNLOCALIZED: Layered Calcite",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "UNLOCALIZED: Warped Window",
|
||||
"block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane",
|
||||
"block.create.water_wheel": "Waterrad",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab",
|
||||
"block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs",
|
||||
"block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each",
|
||||
"create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks",
|
||||
"create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 48",
|
||||
"_": "Missing Localizations: 51",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Dżunglowa szyba okienna",
|
||||
"block.create.large_bogey": "Duży wózek",
|
||||
"block.create.large_cogwheel": "Duże koło zębate",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Warstwowy andezyt",
|
||||
"block.create.layered_asurine": "Warstwowy azuryn",
|
||||
"block.create.layered_calcite": "Warstwowy kalcyt",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Spaczone okno",
|
||||
"block.create.warped_window_pane": "Spaczona szyba okienna",
|
||||
"block.create.water_wheel": "Koło wodne",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Woskowana płyta z miedzianych dachówek",
|
||||
"block.create.waxed_copper_shingle_stairs": "Woskowane schody z miedzianych dachówek",
|
||||
"block.create.waxed_copper_shingles": "Woskowane miedziane dachówki",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Używając: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Kliknij LPM na blok aby ustawić materiał",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Wagoniki nie mogą mieć więcej niż dwa łączniki każdy",
|
||||
"create.minecart_coupling.unloaded": "Część twojego pociągu wydaje się być w niezaładowanych Chunkach.",
|
||||
"create.minecart_coupling.no_loops": "Łączniki nie mogą tworzyć pętli",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1367",
|
||||
"_": "Missing Localizations: 1370",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Vidraça da selva",
|
||||
"block.create.large_bogey": "Roda grande do trem",
|
||||
"block.create.large_cogwheel": "Roda dentada grande",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Andesito estratificado",
|
||||
"block.create.layered_asurine": "Asurino estratificado",
|
||||
"block.create.layered_calcite": "Calcita estratificada",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Janela distorcida",
|
||||
"block.create.warped_window_pane": "Vidraça distorcida",
|
||||
"block.create.water_wheel": "Roda de Água",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Laje de telha de cobre encerada",
|
||||
"block.create.waxed_copper_shingle_stairs": "Escada de telha de cobre encerada",
|
||||
"block.create.waxed_copper_shingles": "Telha de cobre encerada",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Carrinhos de mina não podem ter mais de dois acoplamentos cada",
|
||||
"create.minecart_coupling.unloaded": "Partes do seu trem aparentam estar em um chunk descarregado",
|
||||
"create.minecart_coupling.no_loops": "Acoplamentos não podem formar um loop",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2232",
|
||||
"_": "Missing Localizations: 2235",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane",
|
||||
"block.create.large_bogey": "UNLOCALIZED: Large Bogey",
|
||||
"block.create.large_cogwheel": "UNLOCALIZED: Large Cogwheel",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "UNLOCALIZED: Layered Andesite",
|
||||
"block.create.layered_asurine": "UNLOCALIZED: Layered Asurine",
|
||||
"block.create.layered_calcite": "UNLOCALIZED: Layered Calcite",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "UNLOCALIZED: Warped Window",
|
||||
"block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane",
|
||||
"block.create.water_wheel": "Roda de Água",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab",
|
||||
"block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs",
|
||||
"block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each",
|
||||
"create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks",
|
||||
"create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 691",
|
||||
"_": "Missing Localizations: 694",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Geam De Junglă",
|
||||
"block.create.large_bogey": "UNLOCALIZED: Large Bogey",
|
||||
"block.create.large_cogwheel": "Roată Dințată Mare",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Andezit Stratificat",
|
||||
"block.create.layered_asurine": "Asurină Stratificată",
|
||||
"block.create.layered_calcite": "Calcit Stratificat",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Sticlă Deformată",
|
||||
"block.create.warped_window_pane": "Geam Deformat",
|
||||
"block.create.water_wheel": "Roată De Apă",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Lespede De Șindrilă De Cupru Ceruit",
|
||||
"block.create.waxed_copper_shingle_stairs": "Scări De Șindrilă De Cupru Ceruit",
|
||||
"block.create.waxed_copper_shingles": "Șindrile De Cupru Ceruite",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Folosing: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Click-Stânga pe un Bloc pentru a seta Materialul",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Vagonetele nu pot avea nu mai mult de două cuplaje fiecare",
|
||||
"create.minecart_coupling.unloaded": "Părți din trenul tău par să fie în chunkuri neîncărcate",
|
||||
"create.minecart_coupling.no_loops": "Cuplajele nu pot forma o buclă",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 36",
|
||||
"_": "Missing Localizations: 39",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Панель окна из тропического дерева",
|
||||
"block.create.large_bogey": "Большая вагонная тележка",
|
||||
"block.create.large_cogwheel": "Большая шестерня",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Слоистый андезит",
|
||||
"block.create.layered_asurine": "Слоистый азурин",
|
||||
"block.create.layered_calcite": "Слоистый кальцит",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Искажённое окно",
|
||||
"block.create.warped_window_pane": "Панель из искажённого окна",
|
||||
"block.create.water_wheel": "Водяное колесо",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "Вощёная плита из медной черепицы",
|
||||
"block.create.waxed_copper_shingle_stairs": "Вощёные ступеньки из медной черепицы",
|
||||
"block.create.waxed_copper_shingles": "Вощёная медная черепица",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Используется: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Нажмите ЛКМ по блоку, что бы использовать материал",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только два соединения",
|
||||
"create.minecart_coupling.unloaded": "Кажется, в данный момент часть вашей вагонеточной штуковины в незагруженных чанках",
|
||||
"create.minecart_coupling.no_loops": "Соединители не могут образовывать петлю",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1022",
|
||||
"_": "Missing Localizations: 1025",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "Склянна панель з тропічним деревом",
|
||||
"block.create.large_bogey": "UNLOCALIZED: Large Bogey",
|
||||
"block.create.large_cogwheel": "Велика шестірня",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "Багатошаровий андезит",
|
||||
"block.create.layered_asurine": "UNLOCALIZED: Layered Asurine",
|
||||
"block.create.layered_calcite": "UNLOCALIZED: Layered Calcite",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "Скло з багряного дерева",
|
||||
"block.create.warped_window_pane": "Склянна панель з багряного дерева",
|
||||
"block.create.water_wheel": "Водяне колесо",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "UNLOCALIZED: Waxed Copper Shingle Slab",
|
||||
"block.create.waxed_copper_shingle_stairs": "UNLOCALIZED: Waxed Copper Shingle Stairs",
|
||||
"block.create.waxed_copper_shingles": "UNLOCALIZED: Waxed Copper Shingles",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "Використовується: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Вагонетки можуть мати лише два зв'язки",
|
||||
"create.minecart_coupling.unloaded": "Здається, частина вашого поїзда у незавантажених чанках",
|
||||
"create.minecart_coupling.no_loops": "З'єднувачі не можуть утворювати петлю",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 36",
|
||||
"_": "Missing Localizations: 39",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "丛林木窗户板",
|
||||
"block.create.large_bogey": "大转向架",
|
||||
"block.create.large_cogwheel": "大齿轮",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "层叠安山岩",
|
||||
"block.create.layered_asurine": "层叠皓蓝石",
|
||||
"block.create.layered_calcite": "层叠方解石",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "诡异木窗户",
|
||||
"block.create.warped_window_pane": "诡异木窗户板",
|
||||
"block.create.water_wheel": "水车",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "涂蜡铜砖瓦台阶",
|
||||
"block.create.waxed_copper_shingle_stairs": "涂蜡铜砖瓦楼梯",
|
||||
"block.create.waxed_copper_shingles": "涂蜡铜砖瓦",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "使用:%1$s",
|
||||
"create.terrainzapper.leftClickToSet": "鼠标左击一个方块以设置填充材料",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "矿车无法被连接两个以上的矿车连轴器",
|
||||
"create.minecart_coupling.unloaded": "有一部分列车存在于未加载区块中",
|
||||
"create.minecart_coupling.no_loops": "矿车连轴器不能连成一个环",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 44",
|
||||
"_": "Missing Localizations: 47",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -261,6 +261,7 @@
|
|||
"block.create.jungle_window_pane": "叢林木窗戶片",
|
||||
"block.create.large_bogey": "大轉向架",
|
||||
"block.create.large_cogwheel": "大齒輪",
|
||||
"block.create.large_water_wheel": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.layered_andesite": "疊層安山岩",
|
||||
"block.create.layered_asurine": "疊層皓藍石",
|
||||
"block.create.layered_calcite": "疊層方解石",
|
||||
|
@ -530,6 +531,7 @@
|
|||
"block.create.warped_window": "扭曲蕈木窗戶",
|
||||
"block.create.warped_window_pane": "扭曲蕈木窗戶片",
|
||||
"block.create.water_wheel": "水車",
|
||||
"block.create.water_wheel_structure": "UNLOCALIZED: Large Water Wheel",
|
||||
"block.create.waxed_copper_shingle_slab": "上蠟的銅屋瓦半磚",
|
||||
"block.create.waxed_copper_shingle_stairs": "上蠟的銅屋瓦階梯",
|
||||
"block.create.waxed_copper_shingles": "上蠟的銅屋瓦",
|
||||
|
@ -1045,6 +1047,8 @@
|
|||
"create.terrainzapper.usingBlock": "使用:%1$s",
|
||||
"create.terrainzapper.leftClickToSet": "左鍵點擊方塊可以設定材質",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "UNLOCALIZED: Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "礦車無法被連接兩個以上的礦車連結器",
|
||||
"create.minecart_coupling.unloaded": "有一部份礦車存在於未讀取區塊中",
|
||||
"create.minecart_coupling.no_loops": "礦車連結器不能連成一個環",
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/crushing_wheel"
|
||||
"parent": "create:block/crushing_wheel/item"
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/large_water_wheel/item"
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/kinetics/large_water_wheel"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_item": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": [
|
||||
"create:water_wheel"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/kinetics/large_water_wheel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_item",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:large_water_wheel"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:air"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"SSS",
|
||||
"SCS",
|
||||
"SSS"
|
||||
],
|
||||
"key": {
|
||||
"S": {
|
||||
"tag": "minecraft:planks"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:water_wheel"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:large_water_wheel"
|
||||
}
|
||||
}
|
|
@ -7,10 +7,10 @@
|
|||
],
|
||||
"key": {
|
||||
"S": {
|
||||
"tag": "minecraft:wooden_slabs"
|
||||
"tag": "minecraft:planks"
|
||||
},
|
||||
"C": {
|
||||
"item": "create:large_cogwheel"
|
||||
"item": "create:shaft"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
"create:adjustable_chain_gearshift",
|
||||
"create:belt",
|
||||
"create:water_wheel",
|
||||
"create:large_water_wheel",
|
||||
"create:water_wheel_structure",
|
||||
"create:encased_fan",
|
||||
"create:nozzle",
|
||||
"create:turntable",
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
"create:belt",
|
||||
"create:creative_motor",
|
||||
"create:water_wheel",
|
||||
"create:large_water_wheel",
|
||||
"create:water_wheel_structure",
|
||||
"create:encased_fan",
|
||||
"create:nozzle",
|
||||
"create:turntable",
|
||||
|
|
|
@ -85,7 +85,10 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pul
|
|||
import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock;
|
||||
import com.simibubi.create.content.contraptions.components.tracks.ControllerRailGenerator;
|
||||
import com.simibubi.create.content.contraptions.components.turntable.TurntableBlock;
|
||||
import com.simibubi.create.content.contraptions.components.waterwheel.LargeWaterWheelBlock;
|
||||
import com.simibubi.create.content.contraptions.components.waterwheel.LargeWaterWheelBlockItem;
|
||||
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock;
|
||||
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelStructuralBlock;
|
||||
import com.simibubi.create.content.contraptions.fluids.PipeAttachmentModel;
|
||||
import com.simibubi.create.content.contraptions.fluids.PumpBlock;
|
||||
import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyBlock;
|
||||
|
@ -526,6 +529,32 @@ public class AllBlocks {
|
|||
.simpleItem()
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<LargeWaterWheelBlock> LARGE_WATER_WHEEL =
|
||||
REGISTRATE.block("large_water_wheel", LargeWaterWheelBlock::new)
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.transform(axeOrPickaxe())
|
||||
.blockstate((c, p) -> axisBlock(c, p,
|
||||
s -> s.getValue(LargeWaterWheelBlock.EXTENSION) ? AssetLookup.partialBaseModel(c, p, "extension")
|
||||
: AssetLookup.partialBaseModel(c, p)))
|
||||
.transform(BlockStressDefaults.setCapacity(64.0))
|
||||
.transform(BlockStressDefaults.setGeneratorSpeed(WaterWheelBlock::getSpeedRange))
|
||||
.item(LargeWaterWheelBlockItem::new)
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<WaterWheelStructuralBlock> WATER_WHEEL_STRUCTURAL =
|
||||
REGISTRATE.block("water_wheel_structure", WaterWheelStructuralBlock::new)
|
||||
.initialProperties(SharedProperties::wooden)
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.get())
|
||||
.forAllStatesExcept(BlockStateGen.mapToAir(p), WaterWheelStructuralBlock.FACING))
|
||||
.properties(p -> p.color(MaterialColor.DIRT))
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.transform(axeOrPickaxe())
|
||||
.lang("Large Water Wheel")
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<EncasedFanBlock> ENCASED_FAN = REGISTRATE.block("encased_fan", EncasedFanBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
.properties(p -> p.color(MaterialColor.PODZOL))
|
||||
|
@ -604,10 +633,11 @@ public class AllBlocks {
|
|||
.initialProperties(SharedProperties::stone)
|
||||
.properties(BlockBehaviour.Properties::noOcclusion)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.axisBlockProvider(false))
|
||||
.blockstate((c, p) -> BlockStateGen.axisBlock(c, p, s -> AssetLookup.partialBaseModel(c, p)))
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(BlockStressDefaults.setImpact(8.0))
|
||||
.simpleItem()
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<CrushingWheelControllerBlock> CRUSHING_WHEEL_CONTROLLER =
|
||||
|
@ -618,10 +648,7 @@ public class AllBlocks {
|
|||
.noDrops()
|
||||
.air())
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.get())
|
||||
.forAllStatesExcept(state -> ConfiguredModel.builder()
|
||||
.modelFile(p.models()
|
||||
.getExistingFile(p.mcLoc("block/air")))
|
||||
.build(), CrushingWheelControllerBlock.FACING))
|
||||
.forAllStatesExcept(BlockStateGen.mapToAir(p), CrushingWheelControllerBlock.FACING))
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<MechanicalPressBlock> MECHANICAL_PRESS =
|
||||
|
|
|
@ -81,6 +81,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pul
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.RopePulleyInstance;
|
||||
import com.simibubi.create.content.contraptions.components.turntable.TurntableTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.waterwheel.LargeWaterWheelTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelTileEntity;
|
||||
import com.simibubi.create.content.contraptions.fluids.PumpCogInstance;
|
||||
import com.simibubi.create.content.contraptions.fluids.PumpRenderer;
|
||||
|
@ -602,6 +603,13 @@ public class AllTileEntities {
|
|||
.validBlocks(AllBlocks.WATER_WHEEL)
|
||||
.renderer(() -> KineticTileEntityRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<LargeWaterWheelTileEntity> LARGE_WATER_WHEEL = Create.registrate()
|
||||
.tileEntity("large_water_wheel", LargeWaterWheelTileEntity::new)
|
||||
.instance(() -> CutoutRotatingInstance::new, false)
|
||||
.validBlocks(AllBlocks.LARGE_WATER_WHEEL)
|
||||
.renderer(() -> KineticTileEntityRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<MechanicalPressTileEntity> MECHANICAL_PRESS = Create.registrate()
|
||||
.tileEntity("mechanical_press", MechanicalPressTileEntity::new)
|
||||
|
|
|
@ -0,0 +1,173 @@
|
|||
package com.simibubi.create.content.contraptions.components.waterwheel;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.core.Direction.AxisDirection;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.RenderShape;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
public class LargeWaterWheelBlock extends RotatedPillarKineticBlock implements ITE<LargeWaterWheelTileEntity> {
|
||||
|
||||
public static final BooleanProperty EXTENSION = BooleanProperty.create("extension");
|
||||
|
||||
public LargeWaterWheelBlock(Properties properties) {
|
||||
super(properties);
|
||||
registerDefaultState(defaultBlockState().setValue(EXTENSION, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(Builder<Block, BlockState> builder) {
|
||||
super.createBlockStateDefinition(builder.add(EXTENSION));
|
||||
}
|
||||
|
||||
public Axis getAxisForPlacement(BlockPlaceContext context) {
|
||||
return super.getStateForPlacement(context).getValue(AXIS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext context) {
|
||||
BlockState stateForPlacement = super.getStateForPlacement(context);
|
||||
BlockPos pos = context.getClickedPos();
|
||||
Axis axis = stateForPlacement.getValue(AXIS);
|
||||
|
||||
for (int x = -1; x <= 1; x++) {
|
||||
for (int y = -1; y <= 1; y++) {
|
||||
for (int z = -1; z <= 1; z++) {
|
||||
if (axis.choose(x, y, z) != 0)
|
||||
continue;
|
||||
BlockPos offset = new BlockPos(x, y, z);
|
||||
if (offset.equals(BlockPos.ZERO))
|
||||
continue;
|
||||
BlockState occupiedState = context.getLevel()
|
||||
.getBlockState(pos.offset(offset));
|
||||
if (!occupiedState.getMaterial()
|
||||
.isReplaceable())
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (context.getLevel()
|
||||
.getBlockState(pos.relative(Direction.fromAxisAndDirection(axis, AxisDirection.NEGATIVE)))
|
||||
.is(this))
|
||||
stateForPlacement = stateForPlacement.setValue(EXTENSION, true);
|
||||
|
||||
return stateForPlacement;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
|
||||
BlockHitResult pHit) {
|
||||
return onTileEntityUse(pLevel, pPos, wwt -> wwt.applyMaterialIfValid(pPlayer.getItemInHand(pHand)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState,
|
||||
LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) {
|
||||
if (pDirection != Direction.fromAxisAndDirection(pState.getValue(AXIS), AxisDirection.NEGATIVE))
|
||||
return pState;
|
||||
return pState.setValue(EXTENSION, pNeighborState.is(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) {
|
||||
super.onPlace(state, level, pos, oldState, isMoving);
|
||||
if (!level.getBlockTicks()
|
||||
.hasScheduledTick(pos, this))
|
||||
level.scheduleTick(pos, this, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, Random pRandom) {
|
||||
Axis axis = pState.getValue(AXIS);
|
||||
for (Direction side : Iterate.directions) {
|
||||
if (side.getAxis() == axis)
|
||||
continue;
|
||||
for (boolean secondary : Iterate.falseAndTrue) {
|
||||
Direction targetSide = secondary ? side.getClockWise(axis) : side;
|
||||
BlockPos structurePos = (secondary ? pPos.relative(side) : pPos).relative(targetSide);
|
||||
BlockState occupiedState = pLevel.getBlockState(structurePos);
|
||||
BlockState requiredStructure = AllBlocks.WATER_WHEEL_STRUCTURAL.getDefaultState()
|
||||
.setValue(WaterWheelStructuralBlock.FACING, targetSide.getOpposite());
|
||||
if (occupiedState == requiredStructure)
|
||||
continue;
|
||||
if (!occupiedState.getMaterial()
|
||||
.isReplaceable()) {
|
||||
pLevel.destroyBlock(pPos, false);
|
||||
return;
|
||||
}
|
||||
pLevel.setBlockAndUpdate(structurePos, requiredStructure);
|
||||
}
|
||||
}
|
||||
withTileEntityDo(pLevel, pPos, WaterWheelTileEntity::determineAndApplyFlowScore);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderShape getRenderShape(BlockState pState) {
|
||||
return RenderShape.ENTITYBLOCK_ANIMATED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntityType<? extends LargeWaterWheelTileEntity> getTileEntityType() {
|
||||
return AllTileEntities.LARGE_WATER_WHEEL.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<LargeWaterWheelTileEntity> getTileEntityClass() {
|
||||
return LargeWaterWheelTileEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
|
||||
return face.getAxis() == getRotationAxis(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Axis getRotationAxis(BlockState state) {
|
||||
return state.getValue(AXIS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getParticleTargetRadius() {
|
||||
return 2.5f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getParticleInitialRadius() {
|
||||
return 2.25f;
|
||||
}
|
||||
|
||||
public static Couple<Integer> getSpeedRange() {
|
||||
return Couple.create(4, 8);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package com.simibubi.create.content.contraptions.components.waterwheel;
|
||||
|
||||
import com.simibubi.create.CreateClient;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.Pair;
|
||||
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.core.Direction.AxisDirection;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
|
||||
public class LargeWaterWheelBlockItem extends BlockItem {
|
||||
|
||||
public LargeWaterWheelBlockItem(Block pBlock, Properties pProperties) {
|
||||
super(pBlock, pProperties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult place(BlockPlaceContext ctx) {
|
||||
InteractionResult result = super.place(ctx);
|
||||
if (result != InteractionResult.FAIL)
|
||||
return result;
|
||||
Direction clickedFace = ctx.getClickedFace();
|
||||
if (clickedFace.getAxis() != ((LargeWaterWheelBlock) getBlock()).getAxisForPlacement(ctx))
|
||||
result = super.place(BlockPlaceContext.at(ctx, ctx.getClickedPos()
|
||||
.relative(clickedFace), clickedFace));
|
||||
if (result == InteractionResult.FAIL && ctx.getLevel()
|
||||
.isClientSide())
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> showBounds(ctx));
|
||||
return result;
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void showBounds(BlockPlaceContext context) {
|
||||
BlockPos pos = context.getClickedPos();
|
||||
Axis axis = ((LargeWaterWheelBlock) getBlock()).getAxisForPlacement(context);
|
||||
Vec3 contract = Vec3.atLowerCornerOf(Direction.get(AxisDirection.POSITIVE, axis)
|
||||
.getNormal());
|
||||
if (!(context.getPlayer()instanceof LocalPlayer localPlayer))
|
||||
return;
|
||||
CreateClient.OUTLINER.showAABB(Pair.of("waterwheel", pos), new AABB(pos).inflate(1)
|
||||
.deflate(contract.x, contract.y, contract.z))
|
||||
.colored(0xFF_ff5d6c);
|
||||
Lang.translate("large_water_wheel.not_enough_space")
|
||||
.color(0xFF_ff5d6c)
|
||||
.sendStatus(localPlayer);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package com.simibubi.create.content.contraptions.components.waterwheel;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class LargeWaterWheelTileEntity extends WaterWheelTileEntity {
|
||||
|
||||
public LargeWaterWheelTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSize() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,38 +1,32 @@
|
|||
package com.simibubi.create.content.contraptions.components.waterwheel;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.Random;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock;
|
||||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.fluid.FluidHelper;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld;
|
||||
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.core.Direction.AxisDirection;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.BubbleColumnBlock;
|
||||
import net.minecraft.world.level.block.RenderShape;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
@MethodsReturnNonnullByDefault
|
||||
public class WaterWheelBlock extends DirectionalKineticBlock implements ITE<WaterWheelTileEntity> {
|
||||
|
||||
public WaterWheelBlock(Properties properties) {
|
||||
|
@ -51,132 +45,55 @@ public class WaterWheelBlock extends DirectionalKineticBlock implements ITE<Wate
|
|||
BlockState neighbourState = worldIn.getBlockState(neighbourPos);
|
||||
if (!AllBlocks.WATER_WHEEL.has(neighbourState))
|
||||
continue;
|
||||
Axis axis = state.getValue(FACING)
|
||||
.getAxis();
|
||||
if (neighbourState.getValue(FACING)
|
||||
.getAxis() != state.getValue(FACING)
|
||||
.getAxis()
|
||||
|| state.getValue(FACING)
|
||||
.getAxis() != direction.getAxis())
|
||||
.getAxis() != axis || axis != direction.getAxis())
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
|
||||
BlockHitResult pHit) {
|
||||
return onTileEntityUse(pLevel, pPos, wwt -> wwt.applyMaterialIfValid(pPlayer.getItemInHand(pHand)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, LevelAccessor worldIn,
|
||||
BlockPos currentPos, BlockPos facingPos) {
|
||||
if (worldIn instanceof WrappedWorld)
|
||||
return stateIn;
|
||||
updateFlowAt(stateIn, worldIn, currentPos, facing);
|
||||
updateWheelSpeed(worldIn, currentPos);
|
||||
if (worldIn.isClientSide())
|
||||
return stateIn;
|
||||
if (!worldIn.getBlockTicks()
|
||||
.hasScheduledTick(currentPos, this))
|
||||
worldIn.scheduleTick(currentPos, this, 1);
|
||||
return stateIn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace(BlockState state, Level worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
|
||||
super.onPlace(state, worldIn, pos, oldState, isMoving);
|
||||
updateAllSides(state, worldIn, pos);
|
||||
}
|
||||
|
||||
public void updateAllSides(BlockState state, Level worldIn, BlockPos pos) {
|
||||
for (Direction d : Iterate.directions)
|
||||
updateFlowAt(state, worldIn, pos, d);
|
||||
updateWheelSpeed(worldIn, pos);
|
||||
}
|
||||
|
||||
private void updateFlowAt(BlockState state, LevelAccessor world, BlockPos pos, Direction side) {
|
||||
if (side.getAxis() == state.getValue(FACING)
|
||||
.getAxis())
|
||||
if (worldIn.isClientSide())
|
||||
return;
|
||||
|
||||
FluidState fluid = world.getFluidState(pos.relative(side));
|
||||
Direction wf = state.getValue(FACING);
|
||||
boolean clockwise = wf.getAxisDirection() == AxisDirection.POSITIVE;
|
||||
int clockwiseMultiplier = 2;
|
||||
|
||||
Vec3 vec = fluid.getFlow(world, pos.relative(side));
|
||||
if (side.getAxis()
|
||||
.isHorizontal()) {
|
||||
BlockState adjacentBlock = world.getBlockState(pos.relative(side));
|
||||
if (adjacentBlock.getBlock() == Blocks.BUBBLE_COLUMN)
|
||||
vec = new Vec3(0, adjacentBlock.getValue(BubbleColumnBlock.DRAG_DOWN) ? -1 : 1, 0);
|
||||
}
|
||||
|
||||
vec = vec.scale(side.getAxisDirection()
|
||||
.getStep());
|
||||
vec = new Vec3(Math.signum(vec.x), Math.signum(vec.y), Math.signum(vec.z));
|
||||
Vec3 flow = vec;
|
||||
|
||||
withTileEntityDo(world, pos, te -> {
|
||||
double flowStrength = 0;
|
||||
|
||||
if (wf.getAxis() == Axis.Z) {
|
||||
if (side.getAxis() == Axis.Y)
|
||||
flowStrength = flow.x > 0 ^ !clockwise ? -flow.x * clockwiseMultiplier : -flow.x;
|
||||
if (side.getAxis() == Axis.X)
|
||||
flowStrength = flow.y < 0 ^ !clockwise ? flow.y * clockwiseMultiplier : flow.y;
|
||||
}
|
||||
|
||||
if (wf.getAxis() == Axis.X) {
|
||||
if (side.getAxis() == Axis.Y)
|
||||
flowStrength = flow.z < 0 ^ !clockwise ? flow.z * clockwiseMultiplier : flow.z;
|
||||
if (side.getAxis() == Axis.Z)
|
||||
flowStrength = flow.y > 0 ^ !clockwise ? -flow.y * clockwiseMultiplier : -flow.y;
|
||||
}
|
||||
|
||||
if (wf.getAxis() == Axis.Y) {
|
||||
if (side.getAxis() == Axis.Z)
|
||||
flowStrength = flow.x < 0 ^ !clockwise ? flow.x * clockwiseMultiplier : flow.x;
|
||||
if (side.getAxis() == Axis.X)
|
||||
flowStrength = flow.z > 0 ^ !clockwise ? -flow.z * clockwiseMultiplier : -flow.z;
|
||||
}
|
||||
|
||||
if (te.getSpeed() == 0 && flowStrength != 0 && !world.isClientSide())
|
||||
te.award(
|
||||
FluidHelper.isLava(fluid.getType()) ? AllAdvancements.LAVA_WHEEL : AllAdvancements.WATER_WHEEL);
|
||||
|
||||
Integer flowModifier = AllConfigs.SERVER.kinetics.waterWheelFlowSpeed.get();
|
||||
te.setFlow(side, (float) (flowStrength * flowModifier / 2f));
|
||||
});
|
||||
if (!worldIn.getBlockTicks()
|
||||
.hasScheduledTick(pos, this))
|
||||
worldIn.scheduleTick(pos, this, 1);
|
||||
}
|
||||
|
||||
private void updateWheelSpeed(LevelAccessor world, BlockPos pos) {
|
||||
withTileEntityDo(world, pos, WaterWheelTileEntity::updateGeneratedRotation);
|
||||
@Override
|
||||
public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, Random pRandom) {
|
||||
withTileEntityDo(pLevel, pPos, WaterWheelTileEntity::determineAndApplyFlowScore);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext context) {
|
||||
Direction face = context.getClickedFace();
|
||||
Direction horizontalFacing = context.getHorizontalDirection();
|
||||
BlockPos pos = context.getClickedPos();
|
||||
Level world = context.getLevel();
|
||||
Player player = context.getPlayer();
|
||||
|
||||
BlockState placedOn = world.getBlockState(pos.relative(face.getOpposite()));
|
||||
if (AllBlocks.WATER_WHEEL.has(placedOn))
|
||||
return defaultBlockState().setValue(FACING, placedOn.getValue(FACING));
|
||||
|
||||
Direction facing = face;
|
||||
boolean sneaking = player != null && player.isShiftKeyDown();
|
||||
if (player != null) {
|
||||
|
||||
Vec3 lookVec = player.getLookAngle();
|
||||
double tolerance = 0.985;
|
||||
|
||||
if (!canSurvive(defaultBlockState().setValue(FACING, Direction.UP), world, pos))
|
||||
facing = horizontalFacing;
|
||||
else if (Vec3.atLowerCornerOf(Direction.DOWN.getNormal())
|
||||
.dot(lookVec.normalize()) > tolerance)
|
||||
facing = Direction.DOWN;
|
||||
else if (Vec3.atLowerCornerOf(Direction.UP.getNormal())
|
||||
.dot(lookVec.normalize()) > tolerance)
|
||||
facing = Direction.UP;
|
||||
else
|
||||
facing = horizontalFacing;
|
||||
|
||||
}
|
||||
|
||||
return defaultBlockState().setValue(FACING, sneaking ? facing.getOpposite() : facing);
|
||||
BlockState state = super.getStateForPlacement(context);
|
||||
state.setValue(FACING, Direction.get(AxisDirection.POSITIVE, state.getValue(FACING)
|
||||
.getAxis()));
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -217,9 +134,7 @@ public class WaterWheelBlock extends DirectionalKineticBlock implements ITE<Wate
|
|||
}
|
||||
|
||||
public static Couple<Integer> getSpeedRange() {
|
||||
Integer base = AllConfigs.SERVER.kinetics.waterWheelBaseSpeed.get();
|
||||
Integer flow = AllConfigs.SERVER.kinetics.waterWheelFlowSpeed.get();
|
||||
return Couple.create(base, base + 4 * flow);
|
||||
return Couple.create(8, 16);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package com.simibubi.create.content.contraptions.components.waterwheel;
|
||||
|
||||
import com.jozufozu.flywheel.api.MaterialManager;
|
||||
import com.simibubi.create.content.contraptions.base.CutoutRotatingInstance;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
|
||||
public class WaterWheelInstance extends CutoutRotatingInstance {
|
||||
|
||||
public WaterWheelInstance(MaterialManager modelManager, KineticTileEntity tile) {
|
||||
super(modelManager, tile);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,195 @@
|
|||
package com.simibubi.create.content.contraptions.components.waterwheel;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.goggles.IProxyHoveringInformation;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.render.DestroyProgressRenderingHandler;
|
||||
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.particle.ParticleEngine;
|
||||
import net.minecraft.client.renderer.LevelRenderer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.RenderShape;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||
import net.minecraft.world.level.material.PushReaction;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.IBlockRenderProperties;
|
||||
|
||||
public class WaterWheelStructuralBlock extends DirectionalBlock implements IWrenchable, IProxyHoveringInformation {
|
||||
|
||||
public WaterWheelStructuralBlock(Properties p_52591_) {
|
||||
super(p_52591_);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(Builder<Block, BlockState> pBuilder) {
|
||||
super.createBlockStateDefinition(pBuilder.add(FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderShape getRenderShape(BlockState pState) {
|
||||
return RenderShape.INVISIBLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PushReaction getPistonPushReaction(BlockState pState) {
|
||||
return PushReaction.BLOCK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getCloneItemStack(BlockGetter pLevel, BlockPos pPos, BlockState pState) {
|
||||
return AllBlocks.LARGE_WATER_WHEEL.asStack();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) {
|
||||
BlockPos clickedPos = context.getClickedPos();
|
||||
Level level = context.getLevel();
|
||||
|
||||
if (stillValid(level, clickedPos, state, false)) {
|
||||
BlockPos masterPos = getMaster(level, clickedPos, state);
|
||||
context = new UseOnContext(level, context.getPlayer(), context.getHand(), context.getItemInHand(),
|
||||
new BlockHitResult(context.getClickLocation(), context.getClickedFace(), masterPos,
|
||||
context.isInside()));
|
||||
state = level.getBlockState(masterPos);
|
||||
}
|
||||
|
||||
return IWrenchable.super.onSneakWrenched(state, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
|
||||
if (stillValid(pLevel, pPos, pState, false))
|
||||
pLevel.destroyBlock(getMaster(pLevel, pPos, pState), true);
|
||||
}
|
||||
|
||||
public void playerWillDestroy(Level pLevel, BlockPos pPos, BlockState pState, Player pPlayer) {
|
||||
if (stillValid(pLevel, pPos, pState, false)) {
|
||||
BlockPos masterPos = getMaster(pLevel, pPos, pState);
|
||||
pLevel.destroyBlockProgress(masterPos.hashCode(), masterPos, -1);
|
||||
if (!pLevel.isClientSide() && pPlayer.isCreative())
|
||||
pLevel.destroyBlock(masterPos, false);
|
||||
}
|
||||
super.playerWillDestroy(pLevel, pPos, pState, pPlayer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel,
|
||||
BlockPos pCurrentPos, BlockPos pFacingPos) {
|
||||
if (stillValid(pLevel, pCurrentPos, pState, false)) {
|
||||
BlockPos masterPos = getMaster(pLevel, pCurrentPos, pState);
|
||||
if (!pLevel.getBlockTicks()
|
||||
.hasScheduledTick(masterPos, AllBlocks.LARGE_WATER_WHEEL.get()))
|
||||
pLevel.scheduleTick(masterPos, AllBlocks.LARGE_WATER_WHEEL.get(), 1);
|
||||
return pState;
|
||||
}
|
||||
if (!(pLevel instanceof Level level) || level.isClientSide())
|
||||
return pState;
|
||||
if (!level.getBlockTicks()
|
||||
.hasScheduledTick(pCurrentPos, this))
|
||||
level.scheduleTick(pCurrentPos, this, 1);
|
||||
return pState;
|
||||
}
|
||||
|
||||
public static BlockPos getMaster(BlockGetter level, BlockPos pos, BlockState state) {
|
||||
Direction direction = state.getValue(FACING);
|
||||
BlockPos targetedPos = pos.relative(direction);
|
||||
BlockState targetedState = level.getBlockState(targetedPos);
|
||||
if (targetedState.is(AllBlocks.WATER_WHEEL_STRUCTURAL.get()))
|
||||
return getMaster(level, targetedPos, targetedState);
|
||||
return targetedPos;
|
||||
}
|
||||
|
||||
public boolean stillValid(BlockGetter level, BlockPos pos, BlockState state, boolean directlyAdjacent) {
|
||||
if (!state.is(this))
|
||||
return false;
|
||||
|
||||
Direction direction = state.getValue(FACING);
|
||||
BlockPos targetedPos = pos.relative(direction);
|
||||
BlockState targetedState = level.getBlockState(targetedPos);
|
||||
|
||||
if (!directlyAdjacent && stillValid(level, targetedPos, targetedState, true))
|
||||
return true;
|
||||
return targetedState.getBlock() instanceof LargeWaterWheelBlock
|
||||
&& targetedState.getValue(LargeWaterWheelBlock.AXIS) != direction.getAxis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, Random pRandom) {
|
||||
if (!stillValid(pLevel, pPos, pState, false))
|
||||
pLevel.setBlockAndUpdate(pPos, Blocks.AIR.defaultBlockState());
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void initializeClient(Consumer<IBlockRenderProperties> consumer) {
|
||||
consumer.accept(new RenderProperties());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addLandingEffects(BlockState state1, ServerLevel level, BlockPos pos, BlockState state2,
|
||||
LivingEntity entity, int numberOfParticles) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static class RenderProperties implements IBlockRenderProperties, DestroyProgressRenderingHandler {
|
||||
|
||||
@Override
|
||||
public boolean addDestroyEffects(BlockState state, Level Level, BlockPos pos, ParticleEngine manager) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addHitEffects(BlockState state, Level level, HitResult target, ParticleEngine manager) {
|
||||
if (target instanceof BlockHitResult bhr) {
|
||||
BlockPos targetPos = bhr.getBlockPos();
|
||||
WaterWheelStructuralBlock waterWheelStructuralBlock = AllBlocks.WATER_WHEEL_STRUCTURAL.get();
|
||||
if (waterWheelStructuralBlock.stillValid(level, targetPos, state, false))
|
||||
manager.crack(WaterWheelStructuralBlock.getMaster(level, targetPos, state), bhr.getDirection());
|
||||
return true;
|
||||
}
|
||||
return DestroyProgressRenderingHandler.super.addHitEffects(state, level, target, manager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderDestroyProgress(ClientLevel level, LevelRenderer renderer, int breakerId,
|
||||
BlockPos targetPos, int progress, BlockState blockState) {
|
||||
WaterWheelStructuralBlock waterWheelStructuralBlock = AllBlocks.WATER_WHEEL_STRUCTURAL.get();
|
||||
if (!waterWheelStructuralBlock.stillValid(level, targetPos, blockState, false))
|
||||
return true;
|
||||
BlockPos masterPos = WaterWheelStructuralBlock.getMaster(level, targetPos, blockState);
|
||||
renderer.destroyBlockProgress(masterPos.hashCode(), masterPos, progress);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockPos getInformationSource(Level level, BlockPos pos, BlockState state) {
|
||||
return stillValid(level, pos, state, false) ? getMaster(level, pos, state) : pos;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,33 +1,158 @@
|
|||
package com.simibubi.create.content.contraptions.components.waterwheel;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.mojang.serialization.JsonOps;
|
||||
import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.foundation.advancement.AllAdvancements;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.fluid.FluidHelper;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.core.Direction.AxisDirection;
|
||||
import net.minecraft.core.Vec3i;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.BubbleColumnBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.client.model.data.IModelData;
|
||||
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
|
||||
public class WaterWheelTileEntity extends GeneratingKineticTileEntity {
|
||||
|
||||
private Map<Direction, Float> flows;
|
||||
public static Map<Axis, Set<BlockPos>> SMALL_OFFSETS = new IdentityHashMap<>();
|
||||
public static Map<Axis, Set<BlockPos>> LARGE_OFFSETS = new IdentityHashMap<>();
|
||||
|
||||
static {
|
||||
for (Axis axis : Iterate.axes) {
|
||||
HashSet<BlockPos> offsets = new HashSet<>();
|
||||
for (Direction d : Iterate.directions)
|
||||
if (d.getAxis() != axis)
|
||||
offsets.add(BlockPos.ZERO.relative(d));
|
||||
SMALL_OFFSETS.put(axis, offsets);
|
||||
|
||||
offsets = new HashSet<>();
|
||||
for (Direction d : Iterate.directions) {
|
||||
if (d.getAxis() == axis)
|
||||
continue;
|
||||
BlockPos centralOffset = BlockPos.ZERO.relative(d, 2);
|
||||
offsets.add(centralOffset);
|
||||
for (Direction d2 : Iterate.directions) {
|
||||
if (d2.getAxis() == axis)
|
||||
continue;
|
||||
if (d2.getAxis() == d.getAxis())
|
||||
continue;
|
||||
offsets.add(centralOffset.relative(d2));
|
||||
}
|
||||
}
|
||||
LARGE_OFFSETS.put(axis, offsets);
|
||||
}
|
||||
}
|
||||
|
||||
public int flowScore;
|
||||
public BlockState baseBlock; // <-- TODO use planks/corresponding logs in rendered instance
|
||||
|
||||
public WaterWheelTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
flows = new HashMap<>();
|
||||
for (Direction d : Iterate.directions)
|
||||
setFlow(d, 0);
|
||||
setLazyTickRate(20);
|
||||
baseBlock = Blocks.SPRUCE_PLANKS.defaultBlockState();
|
||||
}
|
||||
|
||||
protected int getSize() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
protected Set<BlockPos> getOffsetsToCheck() {
|
||||
return (getSize() == 1 ? SMALL_OFFSETS : LARGE_OFFSETS).get(getAxis());
|
||||
}
|
||||
|
||||
public InteractionResult applyMaterialIfValid(ItemStack item) {
|
||||
if (!(item.getItem() instanceof BlockItem blockItem))
|
||||
return InteractionResult.PASS;
|
||||
BlockState material = blockItem.getBlock().defaultBlockState();
|
||||
if (material == this.baseBlock)
|
||||
return InteractionResult.PASS;
|
||||
if (!material.is(BlockTags.PLANKS))
|
||||
return InteractionResult.PASS;
|
||||
baseBlock = material;
|
||||
notifyUpdate();
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
protected Axis getAxis() {
|
||||
Axis axis = Axis.X;
|
||||
BlockState blockState = getBlockState();
|
||||
if (blockState.getBlock()instanceof IRotate irotate)
|
||||
axis = irotate.getRotationAxis(blockState);
|
||||
return axis;
|
||||
}
|
||||
|
||||
public void determineAndApplyFlowScore() {
|
||||
Vec3 wheelPlane =
|
||||
Vec3.atLowerCornerOf(new Vec3i(1, 1, 1).subtract(Direction.get(AxisDirection.POSITIVE, getAxis())
|
||||
.getNormal()));
|
||||
|
||||
int flowScore = 0;
|
||||
boolean lava = false;
|
||||
for (BlockPos blockPos : getOffsetsToCheck()) {
|
||||
BlockPos targetPos = blockPos.offset(worldPosition);
|
||||
Vec3 flowAtPos = getFlowVectorAtPosition(targetPos).multiply(wheelPlane);
|
||||
lava |= FluidHelper.isLava(level.getFluidState(targetPos)
|
||||
.getType());
|
||||
|
||||
if (flowAtPos.lengthSqr() == 0)
|
||||
continue;
|
||||
|
||||
flowAtPos = flowAtPos.normalize();
|
||||
Vec3 normal = Vec3.atLowerCornerOf(blockPos)
|
||||
.normalize();
|
||||
|
||||
Vec3 positiveMotion = VecHelper.rotate(normal, 90, getAxis());
|
||||
double dot = flowAtPos.dot(positiveMotion);
|
||||
if (Math.abs(dot) > .5)
|
||||
flowScore += Math.signum(dot);
|
||||
}
|
||||
|
||||
if (flowScore != 0 && !level.isClientSide())
|
||||
award(lava ? AllAdvancements.LAVA_WHEEL : AllAdvancements.WATER_WHEEL);
|
||||
|
||||
setFlowScoreAndUpdate(flowScore);
|
||||
}
|
||||
|
||||
public Vec3 getFlowVectorAtPosition(BlockPos pos) {
|
||||
FluidState fluid = level.getFluidState(pos);
|
||||
Vec3 vec = fluid.getFlow(level, pos);
|
||||
BlockState blockState = level.getBlockState(pos);
|
||||
if (blockState.getBlock() == Blocks.BUBBLE_COLUMN)
|
||||
vec = new Vec3(0, blockState.getValue(BubbleColumnBlock.DRAG_DOWN) ? -1 : 1, 0);
|
||||
return vec;
|
||||
}
|
||||
|
||||
public void setFlowScoreAndUpdate(int score) {
|
||||
if (flowScore == score)
|
||||
return;
|
||||
flowScore = score;
|
||||
updateGeneratedRotation();
|
||||
setChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -35,52 +160,63 @@ public class WaterWheelTileEntity extends GeneratingKineticTileEntity {
|
|||
super.addBehaviours(behaviours);
|
||||
registerAwardables(behaviours, AllAdvancements.LAVA_WHEEL, AllAdvancements.WATER_WHEEL);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag compound, boolean clientPacket) {
|
||||
super.read(compound, clientPacket);
|
||||
if (compound.contains("Flows")) {
|
||||
for (Direction d : Iterate.directions)
|
||||
setFlow(d, compound.getCompound("Flows")
|
||||
.getFloat(d.getSerializedName()));
|
||||
flowScore = compound.getInt("FlowScore");
|
||||
|
||||
BlockState prevMaterial = baseBlock;
|
||||
if (!compound.contains("Material"))
|
||||
return;
|
||||
|
||||
JsonOps ops = JsonOps.INSTANCE;
|
||||
BlockState.CODEC.decode(ops, JsonParser.parseString(compound.getString("Material")))
|
||||
.result()
|
||||
.ifPresent(p -> baseBlock = p.getFirst());
|
||||
|
||||
if (clientPacket && prevMaterial != baseBlock)
|
||||
redraw();
|
||||
}
|
||||
|
||||
private void redraw() {
|
||||
if (!isVirtual())
|
||||
requestModelDataUpdate();
|
||||
if (hasLevel()) {
|
||||
level.sendBlockUpdated(getBlockPos(), getBlockState(), getBlockState(), 16);
|
||||
level.getChunkSource()
|
||||
.getLightEngine()
|
||||
.checkBlock(worldPosition);
|
||||
}
|
||||
}
|
||||
|
||||
public static final ModelProperty<BlockState> MATERIAL_PROPERTY = new ModelProperty<>();
|
||||
|
||||
@Override
|
||||
protected AABB createRenderBoundingBox() {
|
||||
return new AABB(worldPosition).inflate(1);
|
||||
public IModelData getModelData() {
|
||||
return new ModelDataMap.Builder().withInitial(MATERIAL_PROPERTY, baseBlock)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(CompoundTag compound, boolean clientPacket) {
|
||||
CompoundTag flows = new CompoundTag();
|
||||
for (Direction d : Iterate.directions)
|
||||
flows.putFloat(d.getSerializedName(), this.flows.get(d));
|
||||
compound.put("Flows", flows);
|
||||
|
||||
super.write(compound, clientPacket);
|
||||
compound.putInt("FlowScore", flowScore);
|
||||
JsonOps ops = JsonOps.INSTANCE;
|
||||
BlockState.CODEC.encode(baseBlock, ops, ops.empty())
|
||||
.result()
|
||||
.map(je -> je.toString())
|
||||
.ifPresent(s -> compound.putString("Material", s));
|
||||
}
|
||||
|
||||
public void setFlow(Direction direction, float speed) {
|
||||
flows.put(direction, speed);
|
||||
setChanged();
|
||||
@Override
|
||||
protected AABB createRenderBoundingBox() {
|
||||
return new AABB(worldPosition).inflate(getSize());
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getGeneratedSpeed() {
|
||||
float speed = 0;
|
||||
for (Float f : flows.values())
|
||||
speed += f;
|
||||
if (speed != 0)
|
||||
speed += AllConfigs.SERVER.kinetics.waterWheelBaseSpeed.get() * Math.signum(speed);
|
||||
return speed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lazyTick() {
|
||||
super.lazyTick();
|
||||
AllBlocks.WATER_WHEEL.get()
|
||||
.updateAllSides(getBlockState(), level, worldPosition);
|
||||
return Mth.clamp(flowScore / getSize(), -2, 2) * 8 / getSize();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import net.minecraft.network.chat.FormattedText;
|
|||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.GameType;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
@ -74,7 +75,6 @@ public class GoggleOverlayRenderer {
|
|||
BlockHitResult result = (BlockHitResult) objectMouseOver;
|
||||
ClientLevel world = mc.level;
|
||||
BlockPos pos = result.getBlockPos();
|
||||
BlockEntity te = world.getBlockEntity(pos);
|
||||
|
||||
int prevHoverTicks = hoverTicks;
|
||||
if (lastHovered == null || lastHovered.equals(pos))
|
||||
|
@ -83,6 +83,9 @@ public class GoggleOverlayRenderer {
|
|||
hoverTicks = 0;
|
||||
lastHovered = pos;
|
||||
|
||||
pos = proxiedOverlayPosition(world, pos);
|
||||
|
||||
BlockEntity te = world.getBlockEntity(pos);
|
||||
boolean wearingGoggles = GogglesItem.isWearingGoggles(mc.player);
|
||||
|
||||
boolean hasGoggleInformation = te instanceof IHaveGoggleInformation;
|
||||
|
@ -203,5 +206,12 @@ public class GoggleOverlayRenderer {
|
|||
.render(poseStack);
|
||||
poseStack.popPose();
|
||||
}
|
||||
|
||||
public static BlockPos proxiedOverlayPosition(Level level, BlockPos pos) {
|
||||
BlockState targetedState = level.getBlockState(pos);
|
||||
if (targetedState.getBlock() instanceof IProxyHoveringInformation proxy)
|
||||
return proxy.getInformationSource(level, pos, targetedState);
|
||||
return pos;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package com.simibubi.create.content.contraptions.goggles;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public interface IProxyHoveringInformation {
|
||||
|
||||
public BlockPos getInformationSource(Level level, BlockPos pos, BlockState state);
|
||||
|
||||
}
|
|
@ -8,8 +8,6 @@ public class CKinetics extends ConfigBase {
|
|||
public final ConfigInt maxBeltLength = i(20, 5, "maxBeltLength", Comments.maxBeltLength);
|
||||
public final ConfigInt crushingDamage = i(4, 0, "crushingDamage", Comments.crushingDamage);
|
||||
public final ConfigInt maxMotorSpeed = i(256, 64, "maxMotorSpeed", Comments.rpm, Comments.maxMotorSpeed, ConfigAnnotations.RequiresRestart.BOTH.asComment());
|
||||
public final ConfigInt waterWheelBaseSpeed = i(4, 1, "waterWheelBaseSpeed", Comments.rpm, Comments.waterWheelBaseSpeed);
|
||||
public final ConfigInt waterWheelFlowSpeed = i(4, 1, "waterWheelFlowSpeed", Comments.rpm, Comments.waterWheelFlowSpeed);
|
||||
public final ConfigInt maxRotationSpeed = i(256, 64, "maxRotationSpeed", Comments.rpm, Comments.maxRotationSpeed);
|
||||
public final ConfigEnum<DeployerAggroSetting> ignoreDeployerAttacks =
|
||||
e(DeployerAggroSetting.CREEPERS, "ignoreDeployerAttacks", Comments.ignoreDeployerAttacks);
|
||||
|
@ -93,9 +91,6 @@ public class CKinetics extends ConfigBase {
|
|||
static String highCapacity = "Minimum added Capacity by sources to be considered 'high'";
|
||||
static String stress = "Fine tune the kinetic stats of individual components";
|
||||
static String ignoreDeployerAttacks = "Select what mobs should ignore Deployers when attacked by them.";
|
||||
static String waterWheelBaseSpeed = "Added rotation speed by a water wheel when at least one flow is present.";
|
||||
static String waterWheelFlowSpeed =
|
||||
"Rotation speed gained by a water wheel for each side with running fluids. (halved if not against blades)";
|
||||
static String disableStress = "Disable the Stress mechanic altogether.";
|
||||
static String kineticValidationFrequency =
|
||||
"Game ticks between Kinetic Blocks checking whether their source is still valid.";
|
||||
|
|
|
@ -30,6 +30,7 @@ import com.simibubi.create.foundation.utility.Pointing;
|
|||
import com.tterrag.registrate.providers.DataGenContext;
|
||||
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
|
||||
import com.tterrag.registrate.util.nullness.NonNullBiConsumer;
|
||||
import com.tterrag.registrate.util.nullness.NonnullType;
|
||||
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
|
@ -522,4 +523,11 @@ public class BlockStateGen {
|
|||
.end();
|
||||
}
|
||||
|
||||
public static Function<BlockState, ConfiguredModel[]> mapToAir(@NonnullType RegistrateBlockstateProvider p) {
|
||||
return state -> ConfiguredModel.builder()
|
||||
.modelFile(p.models()
|
||||
.getExistingFile(p.mcLoc("block/air")))
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -247,8 +247,15 @@ public class StandardRecipeGen extends CreateRecipeProvider {
|
|||
.requires(I.planks())),
|
||||
|
||||
WATER_WHEEL = create(AllBlocks.WATER_WHEEL).unlockedBy(I::andesite)
|
||||
.viaShaped(b -> b.define('S', ItemTags.WOODEN_SLABS)
|
||||
.define('C', AllBlocks.LARGE_COGWHEEL.get())
|
||||
.viaShaped(b -> b.define('S', I.planks())
|
||||
.define('C', I.shaft())
|
||||
.pattern("SSS")
|
||||
.pattern("SCS")
|
||||
.pattern("SSS")),
|
||||
|
||||
LARGE_WATER_WHEEL = create(AllBlocks.LARGE_WATER_WHEEL).unlockedBy(AllBlocks.WATER_WHEEL::get)
|
||||
.viaShaped(b -> b.define('S', I.planks())
|
||||
.define('C', AllBlocks.WATER_WHEEL.get())
|
||||
.pattern("SSS")
|
||||
.pattern("SCS")
|
||||
.pattern("SSS")),
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
package com.simibubi.create.foundation.mixin;
|
||||
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelStructuralBlock;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.FlowingFluid;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
|
||||
@Mixin(FlowingFluid.class)
|
||||
public class WaterWheelFluidSpreadMixin {
|
||||
|
||||
@Inject(at = @At("HEAD"), cancellable = true, method = "canSpreadTo(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;Lnet/minecraft/world/level/material/Fluid;)Z")
|
||||
protected void canSpreadToOnWaterWheel(BlockGetter pLevel, BlockPos pFromPos, BlockState pFromBlockState,
|
||||
Direction pDirection, BlockPos pToPos, BlockState pToBlockState, FluidState pToFluidState, Fluid pFluid,
|
||||
CallbackInfoReturnable<Boolean> cir) {
|
||||
|
||||
if (pDirection.getAxis() == Axis.Y)
|
||||
return;
|
||||
|
||||
BlockPos belowPos = pFromPos.below();
|
||||
BlockState belowState = pLevel.getBlockState(belowPos);
|
||||
|
||||
if (AllBlocks.WATER_WHEEL_STRUCTURAL.has(belowState)) {
|
||||
if (AllBlocks.WATER_WHEEL_STRUCTURAL.get()
|
||||
.stillValid(pLevel, belowPos, belowState, false))
|
||||
belowState = pLevel.getBlockState(WaterWheelStructuralBlock.getMaster(pLevel, belowPos, belowState));
|
||||
} else if (!AllBlocks.WATER_WHEEL.has(belowState))
|
||||
return;
|
||||
|
||||
if (belowState.getBlock()instanceof IRotate irotate
|
||||
&& irotate.getRotationAxis(belowState) == pDirection.getAxis())
|
||||
cir.setReturnValue(false);
|
||||
}
|
||||
|
||||
}
|
|
@ -172,6 +172,8 @@
|
|||
"create.terrainzapper.usingBlock": "Using: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material",
|
||||
|
||||
"create.large_water_wheel.not_enough_space": "Clear Blocks for Placement",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Minecarts cannot have more than two couplings each",
|
||||
"create.minecart_coupling.unloaded": "Parts of your train seem to be in unloaded chunks",
|
||||
"create.minecart_coupling.no_loops": "Couplings cannot form a loop",
|
||||
|
|
|
@ -1,281 +0,0 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "create:block/large_wheels",
|
||||
"textures": {
|
||||
"6": "create:block/crushing_wheel_body",
|
||||
"spruce_log_top": "create:block/smooth_dark_log_top",
|
||||
"axis_top": "create:block/axis_top",
|
||||
"axis": "create:block/axis",
|
||||
"crushing_wheel": "create:block/crushing_wheel",
|
||||
"particle": "block/polished_andesite"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Axis",
|
||||
"from": [6, 0, 6],
|
||||
"to": [10, 16, 10],
|
||||
"faces": {
|
||||
"north": {"uv": [6, 0, 10, 16], "texture": "#axis"},
|
||||
"east": {"uv": [6, 0, 10, 16], "texture": "#axis"},
|
||||
"south": {"uv": [6, 0, 10, 16], "texture": "#axis"},
|
||||
"west": {"uv": [6, 0, 10, 16], "texture": "#axis"},
|
||||
"up": {"uv": [6, 6, 10, 10], "texture": "#axis_top"},
|
||||
"down": {"uv": [6, 6, 10, 10], "texture": "#axis_top"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B1",
|
||||
"from": [2, 1.95, -8],
|
||||
"to": [9, 14.05, 7],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 6, 11, 12], "texture": "#6"},
|
||||
"east": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"south": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"up": {"uv": [0, 9.5, 7.5, 13], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [0, 9.5, 7.5, 13], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B2",
|
||||
"from": [2, 1.9, -8],
|
||||
"to": [10, 14.1, 7],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"south": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B3",
|
||||
"from": [2, 1.95, -8],
|
||||
"to": [9, 14.05, 7],
|
||||
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [11, 0, 14.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"south": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"up": {"uv": [0, 6, 7.5, 9.5], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B4",
|
||||
"from": [2, 1.9, -8],
|
||||
"to": [10, 14.1, 7],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 8.05, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"south": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [8.5, 12.5, 16, 16], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B5",
|
||||
"from": [-8, 1.95, 7],
|
||||
"to": [7, 14.05, 14],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"west": {"uv": [7.5, 6, 11, 12], "texture": "#6"},
|
||||
"up": {"uv": [0, 9.5, 7.5, 13], "rotation": 180, "texture": "#6"},
|
||||
"down": {"uv": [0, 9.5, 7.5, 13], "rotation": 180, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B6",
|
||||
"from": [-8, 1.9, 6],
|
||||
"to": [7, 14.1, 14],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"west": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 180, "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "rotation": 180, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B7",
|
||||
"from": [-8, 1.95, 7],
|
||||
"to": [7, 14.05, 14],
|
||||
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"west": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 6, 7.5, 9.5], "rotation": 180, "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "rotation": 180, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B8",
|
||||
"from": [-8, 1.9, 6],
|
||||
"to": [7, 14.1, 14],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"west": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 180, "texture": "#6"},
|
||||
"down": {"uv": [8.5, 12.5, 16, 16], "rotation": 180, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B9",
|
||||
"from": [7, 1.95, 9],
|
||||
"to": [14, 14.05, 24],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"south": {"uv": [7.5, 6, 11, 12], "texture": "#6"},
|
||||
"west": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 9.5, 7.5, 13], "rotation": 90, "texture": "#6"},
|
||||
"down": {"uv": [0, 9.5, 7.5, 13], "rotation": 270, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B10",
|
||||
"from": [6, 1.9, 9],
|
||||
"to": [14, 14.1, 24],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"south": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"west": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 6, 7.5, 10], "rotation": 90, "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "rotation": 270, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B11",
|
||||
"from": [7, 1.95, 9],
|
||||
"to": [14, 14.05, 24],
|
||||
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"south": {"uv": [7.5, 6, 11, 12], "texture": "#6"},
|
||||
"west": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"up": {"uv": [8.5, 12.5, 16, 16], "rotation": 90, "texture": "#6"},
|
||||
"down": {"uv": [8.5, 12.5, 16, 16], "rotation": 270, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B12",
|
||||
"from": [6, 1.9, 9],
|
||||
"to": [14, 14.1, 24],
|
||||
"rotation": {"angle": 45, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"south": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"west": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 90, "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "rotation": 270, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B13",
|
||||
"from": [9, 1.95, 2],
|
||||
"to": [24, 14.05, 9],
|
||||
"rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"east": {"uv": [7.5, 6, 11, 12], "texture": "#6"},
|
||||
"south": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"west": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 9.5, 7.5, 13], "texture": "#6"},
|
||||
"down": {"uv": [0, 9.5, 7.5, 13], "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B14",
|
||||
"from": [9, 1.9, 2],
|
||||
"to": [24, 14.1, 10],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"east": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"south": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"west": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"up": {"uv": [0, 7.5, 7.5, 11.5], "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B15",
|
||||
"from": [9, 1.95, 2],
|
||||
"to": [24, 14.05, 9],
|
||||
"rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"east": {"uv": [11, 0, 14.5, 6], "texture": "#6"},
|
||||
"south": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"west": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"up": {"uv": [8.5, 12.5, 16, 16], "texture": "#6"},
|
||||
"down": {"uv": [8.5, 12.5, 16, 16], "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "B16",
|
||||
"from": [2, 1.9, -8],
|
||||
"to": [10, 14.1, 7],
|
||||
"rotation": {"angle": -45, "axis": "y", "origin": [8, 7.95, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"},
|
||||
"east": {"uv": [0, 0, 7.5, 6], "texture": "#6"},
|
||||
"south": {"uv": [7.5, 0, 11, 6], "texture": "#6"},
|
||||
"west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"},
|
||||
"up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 270, "texture": "#6"},
|
||||
"down": {"uv": [0, 6, 7.5, 9.5], "rotation": 90, "texture": "#6"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "AxisCoat",
|
||||
"from": [4, 1, 4],
|
||||
"to": [12, 15, 12],
|
||||
"shade": false,
|
||||
"faces": {
|
||||
"north": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"},
|
||||
"east": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"},
|
||||
"south": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"},
|
||||
"west": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"},
|
||||
"up": {"uv": [4, 4, 12, 12], "texture": "#spruce_log_top"},
|
||||
"down": {"uv": [4, 4, 12, 12], "texture": "#spruce_log_top"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cover",
|
||||
"from": [-4, 1.85, -4],
|
||||
"to": [20, 14.15, 20],
|
||||
"faces": {
|
||||
"up": {"uv": [2, 2, 14, 14], "texture": "#crushing_wheel"},
|
||||
"down": {"uv": [2, 2, 14, 14], "texture": "#crushing_wheel"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "crushing_wheel",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/crushing_wheel/textures",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/crushing_wheel/crushing_wheel.obj"
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
# Blender 3.4.1 MTL File: 'crushing wheel.blend'
|
||||
# www.blender.org
|
||||
|
||||
newmtl crushing_wheel_insert
|
||||
Ns 250.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd #insert
|
||||
|
||||
newmtl crushing_wheel_plates
|
||||
Ns 250.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd #plates
|
||||
|
||||
newmtl m_axis
|
||||
Ns 0.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 1
|
||||
map_Kd #axis
|
||||
|
||||
newmtl m_axis_top
|
||||
Ns 0.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 1
|
||||
map_Kd #axis_top
|
||||
|
||||
newmtl m_spruce_log_top.001
|
||||
Ns 0.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 1
|
||||
map_Kd #spruce_log_top
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"parent": "create:block/crushing_wheel/textures",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/crushing_wheel/crushing_wheel.obj",
|
||||
"display": {
|
||||
"gui": {
|
||||
"rotation": [ 30, 225, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.45, 0.45, 0.45 ]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [ 90, 0, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.45, 0.45, 0.45 ]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"ambientocclusion": false,
|
||||
"textures": {
|
||||
"axis": "create:block/axis",
|
||||
"axis_top": "create:block/axis_top",
|
||||
"plates": "create:block/crushing_wheel_plates",
|
||||
"insert": "create:block/crushing_wheel_insert",
|
||||
"spruce_log_top": "block/spruce_log_top",
|
||||
"particle": "create:block/palettes/stone_types/cut/andesite_cut"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/large_water_wheel/textures",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/large_water_wheel/waterwheel_large.obj"
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/large_water_wheel/textures",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/large_water_wheel/waterwheel_large_extension.obj"
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"parent": "create:block/large_water_wheel/textures",
|
||||
"loader": "forge:obj",
|
||||
"flip-v": true,
|
||||
"model": "create:models/block/large_water_wheel/waterwheel_large.obj",
|
||||
"display": {
|
||||
"gui": {
|
||||
"rotation": [ 30, 225, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.25, 0.25, 0.25 ]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [ 90, 0, 0 ],
|
||||
"translation": [ 0, 0, 0],
|
||||
"scale":[ 0.4, 0.4, 0.4 ]
|
||||
},
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [75, 45, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.2, 0.2, 0.2]
|
||||
},
|
||||
"thirdperson_lefthand": {
|
||||
"rotation": [75, 45, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.2, 0.2, 0.2]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [0, 45, 0],
|
||||
"scale": [0.2, 0.2, 0.2]
|
||||
},
|
||||
"firstperson_lefthand": {
|
||||
"rotation": [0, 225, 0],
|
||||
"scale": [0.2, 0.2, 0.2]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"ambientocclusion": false,
|
||||
"textures": {
|
||||
"axis": "create:block/axis",
|
||||
"axis_top": "create:block/axis_top",
|
||||
"log": "block/oak_log",
|
||||
"planks": "block/oak_planks",
|
||||
"metal": "create:block/waterwheel_metal",
|
||||
"stripped_log_top": "block/stripped_oak_log_top",
|
||||
"particle": "#planks"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
# Blender 3.4.1 MTL File: 'waterwheel.blend'
|
||||
# www.blender.org
|
||||
|
||||
newmtl axis
|
||||
Ns 0.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 1
|
||||
map_Kd #axis
|
||||
|
||||
newmtl axis_top
|
||||
Ns 0.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 1
|
||||
map_Kd #axis_top
|
||||
|
||||
newmtl waterwheel_log
|
||||
Ns 250.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd #log
|
||||
|
||||
newmtl waterwheel_metal
|
||||
Ns 250.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd #metal
|
||||
|
||||
newmtl waterwheel_plank
|
||||
Ns 250.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd #planks
|
||||
|
||||
newmtl waterwheel_stripped_log
|
||||
Ns 250.000000
|
||||
Ka 1.000000 1.000000 1.000000
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 1.450000
|
||||
d 1.000000
|
||||
illum 2
|
||||
map_Kd #stripped_log_top
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -10,6 +10,7 @@
|
|||
"HumanoidArmorLayerMixin",
|
||||
"MapItemSavedDataMixin",
|
||||
"ContraptionDriverInteractMixin",
|
||||
"WaterWheelFluidSpreadMixin",
|
||||
"accessor.AbstractProjectileDispenseBehaviorAccessor",
|
||||
"accessor.DispenserBlockAccessor",
|
||||
"accessor.FallingBlockEntityAccessor",
|
||||
|
|
Loading…
Reference in a new issue