mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-27 23:47:38 +01:00
Choo Choo, Part I
- Added Steam Whistles
This commit is contained in:
parent
0745e44518
commit
76c57e4695
70 changed files with 2626 additions and 74 deletions
|
@ -478,6 +478,8 @@ e815bfd854c2653f10828bb11950f7fb991d7efc assets/create/blockstates/speedometer.j
|
|||
d62b7908119fa4f51715a186d0882b388bb25cab assets/create/blockstates/spruce_window.json
|
||||
8d7dfa60630a8b4bae4e8eca5c66e1cfa34dda1f assets/create/blockstates/spruce_window_pane.json
|
||||
0378b27d9ad698b37d72cd958e15112f9ca418d3 assets/create/blockstates/steam_engine.json
|
||||
9419d87b17175a5177854a2a508a0ffe0b43b018 assets/create/blockstates/steam_whistle.json
|
||||
442d959d019088d9dbe04c530f5fcabbbb65819f assets/create/blockstates/steam_whistle_extension.json
|
||||
5d7385d28a23dcfc95a221d36d82337908582726 assets/create/blockstates/sticker.json
|
||||
3d93eabbb327aecc526beae9c62283f1d43eb710 assets/create/blockstates/sticky_mechanical_piston.json
|
||||
f385988cb6fa9c48b5d59a6942ec50ed2b60c8bf assets/create/blockstates/stockpile_switch.json
|
||||
|
@ -541,23 +543,23 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
|
|||
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
|
||||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||
d4cdc38cd19460fd9ba866f3ad3b2e4bd014cb98 assets/create/lang/en_ud.json
|
||||
4111057d7de305bffb7133afbaea0aea45f7ce79 assets/create/lang/en_us.json
|
||||
818f913210c5d3e21189a092759b4927ee032564 assets/create/lang/unfinished/de_de.json
|
||||
23cb78876cf0892edc3b5b11d772d27969773b1c assets/create/lang/unfinished/es_cl.json
|
||||
8d15c0a8f7d996667c6e38b2f84ed88542344929 assets/create/lang/unfinished/es_es.json
|
||||
17ae724dfe4ca23b2e39157a9361b38094445e64 assets/create/lang/unfinished/fr_fr.json
|
||||
c4a51cbb988e18ca1379eeb7256b70743df49bc2 assets/create/lang/unfinished/it_it.json
|
||||
04d821a172dabdecc6d20eb44f409e9409e5066a assets/create/lang/unfinished/ja_jp.json
|
||||
816a0b1dbc98a5ebdc013a19c1827dcff0f60461 assets/create/lang/unfinished/ko_kr.json
|
||||
5ee0cf289312ad91cae5d3bf8e50b1aacb7e6508 assets/create/lang/unfinished/nl_nl.json
|
||||
f35b613037e9d99dbeee151c1835222c26ce7b74 assets/create/lang/unfinished/pl_pl.json
|
||||
436da9779b9e9cb943f88999fd77dad71f80779c assets/create/lang/unfinished/pt_br.json
|
||||
80778b15cf9c92fd1baac3577d791ef7254aa080 assets/create/lang/unfinished/pt_pt.json
|
||||
9175aa77343034a6cb50203d7ed26513ea1938b0 assets/create/lang/unfinished/ro_ro.json
|
||||
95f7979d258cd2ddfc4166cae526b3571d17c630 assets/create/lang/unfinished/ru_ru.json
|
||||
e0e311ce6878a910e9a14eef36c9d5faa6ff780b assets/create/lang/unfinished/zh_cn.json
|
||||
bbdeb59c2b294eb6ef98aa75b610795f75a4dd7b assets/create/lang/unfinished/zh_tw.json
|
||||
875f9aff979888b9d63d6a425cbf544431f1af5a assets/create/lang/en_ud.json
|
||||
9920f89987afa7a5a534f913f930affb5fadaa33 assets/create/lang/en_us.json
|
||||
13c213be9595e8fe1ad165a14cdd0ec16a092204 assets/create/lang/unfinished/de_de.json
|
||||
687b9acd091e4222219057ac647402aab2f05ca2 assets/create/lang/unfinished/es_cl.json
|
||||
20984bb318badfb2a49d1a5467de0aef5fa4a14f assets/create/lang/unfinished/es_es.json
|
||||
3ef90285ab19e24ff80354849a253a5caf5062f4 assets/create/lang/unfinished/fr_fr.json
|
||||
af40251171a29093bb6d4f99172af15a734a47f7 assets/create/lang/unfinished/it_it.json
|
||||
98304b8aebf8db14d0a764140f2e4703bbcffb29 assets/create/lang/unfinished/ja_jp.json
|
||||
4d7f1ba7e3ced59666d9113577d2e20af54d00ef assets/create/lang/unfinished/ko_kr.json
|
||||
3530e4d047cf4a654a95d069d874ac73306cbac3 assets/create/lang/unfinished/nl_nl.json
|
||||
3a82a8398f74ece7d5f6440613fecc14d7056b30 assets/create/lang/unfinished/pl_pl.json
|
||||
5723fa37dbdd24e31bfd14f71586f67e3a23047f assets/create/lang/unfinished/pt_br.json
|
||||
f394d6ff13e89051f7582a789ab1cf81905620b4 assets/create/lang/unfinished/pt_pt.json
|
||||
01ccdd4a7c1beaa84cc6bdc7cd0cc912440fb0c7 assets/create/lang/unfinished/ro_ro.json
|
||||
d0b58764408454fc6df71e0a340e210c0bc5f70b assets/create/lang/unfinished/ru_ru.json
|
||||
bf4a93e64419cdacf1636e1a283086e33f853bf5 assets/create/lang/unfinished/zh_cn.json
|
||||
6a615c911ea01faac6c52f58e98904aef5660dc5 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
|
||||
|
@ -1473,6 +1475,12 @@ f6096d529b8f97f0bfdec75c13e4b31958346c58 assets/create/models/block/spruce_windo
|
|||
ea7952f49c78f0d7b95f3ed34df35a44a921ce15 assets/create/models/block/spruce_window_pane_post.json
|
||||
04b92ecb2aea4264c58e2d3df0d77ab9fcdcf2d7 assets/create/models/block/spruce_window_pane_side.json
|
||||
a5bb90cb3f5353bbfe767b3d42f4d1dbac3b498a assets/create/models/block/spruce_window_pane_side_alt.json
|
||||
c45b9d390c3119503209c0a950d4499116fbf828 assets/create/models/block/steam_whistle/block_large_floor_powered.json
|
||||
76b70be89147d94471e3b36884dae2cfc51b35a5 assets/create/models/block/steam_whistle/block_large_wall_powered.json
|
||||
b18fd30c44895bc993db27b6516addd2ad75fe55 assets/create/models/block/steam_whistle/block_medium_floor_powered.json
|
||||
7820c8787d56b3f9beb283512a01ac8fc44dfc57 assets/create/models/block/steam_whistle/block_medium_wall_powered.json
|
||||
d144085e04718356d8b1fec7a4f46650b943e180 assets/create/models/block/steam_whistle/block_small_floor_powered.json
|
||||
1fae9dd3da45f35b63ea9282d24723b2794869d0 assets/create/models/block/steam_whistle/block_small_wall_powered.json
|
||||
3bda065e24a71b82b92b9c805790ba6d1791ef6a assets/create/models/block/stockpile_switch_0.json
|
||||
335d6bc2b19d3cdbc9ed8b344142e2e3aa397994 assets/create/models/block/stockpile_switch_1.json
|
||||
655d5cd249291a550bb3508c97f5a7a3606a7848 assets/create/models/block/stockpile_switch_2.json
|
||||
|
@ -2076,6 +2084,7 @@ b9abe1331d49871838231f3a8e5d2973634e9325 assets/create/models/item/spout.json
|
|||
b305e81f1dc5272634745b6e822af40955a2ef28 assets/create/models/item/spruce_window.json
|
||||
f3ec8df2ee1690353ae1ec687b822d0fd962160e assets/create/models/item/spruce_window_pane.json
|
||||
6c0693011f4104999c03328ba5e3bb25ffcf6359 assets/create/models/item/steam_engine.json
|
||||
ba37dbd2da76713468312b2fe66a3706ffb2ae3e assets/create/models/item/steam_whistle.json
|
||||
bb546e5342c6d1a6b4040cf7ccdd2f10c6f79965 assets/create/models/item/sticker.json
|
||||
891abc24593d53d282773eca5534065056d89b4c assets/create/models/item/sticky_mechanical_piston.json
|
||||
bbb5773adc23128c70174bfc531af936e6e063e3 assets/create/models/item/stockpile_switch.json
|
||||
|
@ -3769,6 +3778,8 @@ e257576e224e673ecf3aadc32d145e489c86349e data/create/loot_tables/blocks/small_ve
|
|||
8f52215e5954a5a14b14db0304cb8471ad26f9fd data/create/loot_tables/blocks/spruce_window.json
|
||||
ad771358ecd71e2f0c4b71f7244947fc2dc2a1c9 data/create/loot_tables/blocks/spruce_window_pane.json
|
||||
e3f024bb8366efe8a8b4335a769a93595adcdb18 data/create/loot_tables/blocks/steam_engine.json
|
||||
de42002e7b77c3bdc8e69407f6dcab57bf5fa96e data/create/loot_tables/blocks/steam_whistle.json
|
||||
5c1df8443043b3fe3b665dba348e2ff188bcbe31 data/create/loot_tables/blocks/steam_whistle_extension.json
|
||||
1ab6f4764b93da0e78494dd2deb3a4fff0ed9553 data/create/loot_tables/blocks/sticker.json
|
||||
94f516dd7e6fd4bd4ee26fad2d2d84b79f40de0b data/create/loot_tables/blocks/sticky_mechanical_piston.json
|
||||
69cc8ce9ff7b905b62f52d9ac4819e79f3235f58 data/create/loot_tables/blocks/stockpile_switch.json
|
||||
|
@ -5294,7 +5305,7 @@ ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/br
|
|||
69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json
|
||||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json
|
||||
02f7a9df2f9e154749266e7ac59c37aa076a3390 data/minecraft/tags/blocks/mineable/axe.json
|
||||
5782184ce3d612e9cd747fa606f5cb87bd4d67ef data/minecraft/tags/blocks/mineable/pickaxe.json
|
||||
85cae90448e40527a084352bd8283627213e7ba3 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
|
||||
|
|
|
@ -0,0 +1,184 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=north,powered=false,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=false,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor"
|
||||
},
|
||||
"facing=west,powered=false,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=false,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=true,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor_powered",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=true,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor_powered"
|
||||
},
|
||||
"facing=west,powered=true,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor_powered",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=true,size=small,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_small_floor_powered",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=false,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=false,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor"
|
||||
},
|
||||
"facing=west,powered=false,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=false,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=true,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor_powered",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=true,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor_powered"
|
||||
},
|
||||
"facing=west,powered=true,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor_powered",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=true,size=medium,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_medium_floor_powered",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=false,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=false,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor"
|
||||
},
|
||||
"facing=west,powered=false,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=false,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=true,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor_powered",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=true,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor_powered"
|
||||
},
|
||||
"facing=west,powered=true,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor_powered",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=true,size=large,wall=false": {
|
||||
"model": "create:block/steam_whistle/block_large_floor_powered",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=false,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=false,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall"
|
||||
},
|
||||
"facing=west,powered=false,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=false,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=true,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall_powered",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=true,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall_powered"
|
||||
},
|
||||
"facing=west,powered=true,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall_powered",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=true,size=small,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_small_wall_powered",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=false,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=false,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall"
|
||||
},
|
||||
"facing=west,powered=false,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=false,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=true,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall_powered",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=true,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall_powered"
|
||||
},
|
||||
"facing=west,powered=true,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall_powered",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=true,size=medium,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_medium_wall_powered",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=false,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=false,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall"
|
||||
},
|
||||
"facing=west,powered=false,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=false,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,powered=true,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall_powered",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,powered=true,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall_powered"
|
||||
},
|
||||
"facing=west,powered=true,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall_powered",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,powered=true,size=large,wall=true": {
|
||||
"model": "create:block/steam_whistle/block_large_wall_powered",
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
{
|
||||
"multipart": [
|
||||
{
|
||||
"when": {
|
||||
"size": "small",
|
||||
"shape": "double"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/small_top_rim"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "small",
|
||||
"shape": "single"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/small_single"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "small",
|
||||
"shape": "double|double_connected"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/small_double"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "medium",
|
||||
"shape": "double"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/medium_top_rim"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "medium",
|
||||
"shape": "single"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/medium_single"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "medium",
|
||||
"shape": "double|double_connected"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/medium_double"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "large",
|
||||
"shape": "double"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/large_top_rim"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "large",
|
||||
"shape": "single"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/large_single"
|
||||
}
|
||||
},
|
||||
{
|
||||
"when": {
|
||||
"size": "large",
|
||||
"shape": "double|double_connected"
|
||||
},
|
||||
"apply": {
|
||||
"model": "create:block/steam_whistle/extension/large_double"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -479,6 +479,8 @@
|
|||
"block.create.spruce_window": "\u028Dopu\u0131M \u01DD\u0254n\u0279dS",
|
||||
"block.create.spruce_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u01DD\u0254n\u0279dS",
|
||||
"block.create.steam_engine": "\u01DDu\u0131bu\u018E \u026F\u0250\u01DD\u0287S",
|
||||
"block.create.steam_whistle": "\u01DD\u05DF\u0287s\u0131\u0265M \u026F\u0250\u01DD\u0287S",
|
||||
"block.create.steam_whistle_extension": "uo\u0131su\u01DD\u0287x\u018E \u01DD\u05DF\u0287s\u0131\u0265M \u026F\u0250\u01DD\u0287S",
|
||||
"block.create.sticker": "\u0279\u01DD\u029E\u0254\u0131\u0287S",
|
||||
"block.create.sticky_mechanical_piston": "uo\u0287s\u0131\u0500 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW \u028E\u029E\u0254\u0131\u0287S",
|
||||
"block.create.stockpile_switch": "\u0265\u0254\u0287\u0131\u028DS \u01DD\u05DF\u0131d\u029E\u0254o\u0287S",
|
||||
|
|
|
@ -482,6 +482,8 @@
|
|||
"block.create.spruce_window": "Spruce Window",
|
||||
"block.create.spruce_window_pane": "Spruce Window Pane",
|
||||
"block.create.steam_engine": "Steam Engine",
|
||||
"block.create.steam_whistle": "Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "Steam Whistle Extension",
|
||||
"block.create.sticker": "Sticker",
|
||||
"block.create.sticky_mechanical_piston": "Sticky Mechanical Piston",
|
||||
"block.create.stockpile_switch": "Stockpile Switch",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1529",
|
||||
"_": "Missing Localizations: 1531",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Fichtenfenster",
|
||||
"block.create.spruce_window_pane": "Fichtenfensterscheibe",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Ankleber",
|
||||
"block.create.sticky_mechanical_piston": "Klebriger Mechanischer Kolben",
|
||||
"block.create.stockpile_switch": "Vorratssensor",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 551",
|
||||
"_": "Missing Localizations: 553",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Ventana de Abeto",
|
||||
"block.create.spruce_window_pane": "Panel de Ventana de Abeto",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Pegador",
|
||||
"block.create.sticky_mechanical_piston": "Pistón Mecánico Pegajoso",
|
||||
"block.create.stockpile_switch": "Interruptor de Reservas",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 222",
|
||||
"_": "Missing Localizations: 224",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Ventana de abeto",
|
||||
"block.create.spruce_window_pane": "Panel de ventana de abeto",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Pegatina",
|
||||
"block.create.sticky_mechanical_piston": "Pistón mecánico pegajoso",
|
||||
"block.create.stockpile_switch": "Interruptor de acopio",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1791",
|
||||
"_": "Missing Localizations: 1793",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "UNLOCALIZED: Spruce Window",
|
||||
"block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "UNLOCALIZED: Sticker",
|
||||
"block.create.sticky_mechanical_piston": "Piston mécanique collant",
|
||||
"block.create.stockpile_switch": "Détecteur de stockage",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1480",
|
||||
"_": "Missing Localizations: 1482",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Finestra di abete",
|
||||
"block.create.spruce_window_pane": "Pannello di finestra di abete",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "UNLOCALIZED: Sticker",
|
||||
"block.create.sticky_mechanical_piston": "Pistone meccanico appiccicoso",
|
||||
"block.create.stockpile_switch": "Interruttore accumulatore",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 217",
|
||||
"_": "Missing Localizations: 219",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "マツの窓",
|
||||
"block.create.spruce_window_pane": "マツの板窓",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "スティッカー",
|
||||
"block.create.sticky_mechanical_piston": "メカニカル粘着ピストン",
|
||||
"block.create.stockpile_switch": "在庫スイッチ",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 217",
|
||||
"_": "Missing Localizations: 219",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "가문비나무 유리창",
|
||||
"block.create.spruce_window_pane": "가문비나무 유리판",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "부착기",
|
||||
"block.create.sticky_mechanical_piston": "기계식 끈끈이 피스톤",
|
||||
"block.create.stockpile_switch": "수량 스위치",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2143",
|
||||
"_": "Missing Localizations: 2145",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "UNLOCALIZED: Spruce Window",
|
||||
"block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "UNLOCALIZED: Sticker",
|
||||
"block.create.sticky_mechanical_piston": "Mechanische Zuiger",
|
||||
"block.create.stockpile_switch": "Voorraad Schakelaar",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 590",
|
||||
"_": "Missing Localizations: 592",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Świerkowe okno",
|
||||
"block.create.spruce_window_pane": "Świerkowa szyba okienna",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Przyklejacz",
|
||||
"block.create.sticky_mechanical_piston": "Lepki mechaniczny tłok",
|
||||
"block.create.stockpile_switch": "Przełącznik zawartościowy",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1391",
|
||||
"_": "Missing Localizations: 1393",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Janela de pinheiro",
|
||||
"block.create.spruce_window_pane": "Vidraça de pinheiro",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Adesivo",
|
||||
"block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento",
|
||||
"block.create.stockpile_switch": "Disjuntor de Armazenamento",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1763",
|
||||
"_": "Missing Localizations: 1765",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "UNLOCALIZED: Spruce Window",
|
||||
"block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Adesivo",
|
||||
"block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento",
|
||||
"block.create.stockpile_switch": "Disjuntor de Armazenamento",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 218",
|
||||
"_": "Missing Localizations: 220",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Sticlă De Molid",
|
||||
"block.create.spruce_window_pane": "Geam De Molid",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Abțipild",
|
||||
"block.create.sticky_mechanical_piston": "Piston Mecanic Lipicios",
|
||||
"block.create.stockpile_switch": "Comutator De Depozitare",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 595",
|
||||
"_": "Missing Localizations: 597",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "Еловое окно",
|
||||
"block.create.spruce_window_pane": "Панель из елового окна",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "Блок-липучка",
|
||||
"block.create.sticky_mechanical_piston": "Липкий механический поршень",
|
||||
"block.create.stockpile_switch": "Настраиваемый компаратор",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 217",
|
||||
"_": "Missing Localizations: 219",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "云杉木窗户",
|
||||
"block.create.spruce_window_pane": "云杉木窗户板",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "黏着器",
|
||||
"block.create.sticky_mechanical_piston": "黏性动力活塞",
|
||||
"block.create.stockpile_switch": "存量转换器",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 609",
|
||||
"_": "Missing Localizations: 611",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -483,6 +483,8 @@
|
|||
"block.create.spruce_window": "雲杉木窗戶",
|
||||
"block.create.spruce_window_pane": "雲杉木窗戶片",
|
||||
"block.create.steam_engine": "UNLOCALIZED: Steam Engine",
|
||||
"block.create.steam_whistle": "UNLOCALIZED: Steam Whistle",
|
||||
"block.create.steam_whistle_extension": "UNLOCALIZED: Steam Whistle Extension",
|
||||
"block.create.sticker": "方塊黏著器",
|
||||
"block.create.sticky_mechanical_piston": "黏性機械活塞",
|
||||
"block.create.stockpile_switch": "存量偵測器",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/steam_whistle/block_large_floor",
|
||||
"textures": {
|
||||
"2": "create:block/copper_redstone_plate_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/steam_whistle/block_large_wall",
|
||||
"textures": {
|
||||
"2": "create:block/copper_redstone_plate_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/steam_whistle/block_medium_floor",
|
||||
"textures": {
|
||||
"2": "create:block/copper_redstone_plate_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/steam_whistle/block_medium_wall",
|
||||
"textures": {
|
||||
"2": "create:block/copper_redstone_plate_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/steam_whistle/block_small_floor",
|
||||
"textures": {
|
||||
"2": "create:block/copper_redstone_plate_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/steam_whistle/block_small_wall",
|
||||
"textures": {
|
||||
"2": "create:block/copper_redstone_plate_powered"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/steam_whistle/item"
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:steam_whistle"
|
||||
}
|
||||
],
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -73,6 +73,8 @@
|
|||
"create:spout",
|
||||
"create:portable_fluid_interface",
|
||||
"create:steam_engine",
|
||||
"create:steam_whistle",
|
||||
"create:steam_whistle_extension",
|
||||
"create:powered_shaft",
|
||||
"create:mechanical_piston",
|
||||
"create:sticky_mechanical_piston",
|
||||
|
|
|
@ -137,6 +137,10 @@ public class AllBlockPartials {
|
|||
SIGNAL_RED = block("track_signal/red_tube"), SIGNAL_YELLOW_CUBE = block("track_signal/yellow_cube"),
|
||||
SIGNAL_YELLOW_GLOW = block("track_signal/yellow_glow"), SIGNAL_YELLOW = block("track_signal/yellow_tube"),
|
||||
|
||||
WHISTLE_MOUTH_LARGE = block("steam_whistle/large_mouth"),
|
||||
WHISTLE_MOUTH_MEDIUM = block("steam_whistle/medium_mouth"),
|
||||
WHISTLE_MOUTH_SMALL = block("steam_whistle/small_mouth"),
|
||||
|
||||
CRAFTING_BLUEPRINT_1x1 = entity("crafting_blueprint_small"),
|
||||
CRAFTING_BLUEPRINT_2x2 = entity("crafting_blueprint_medium"),
|
||||
CRAFTING_BLUEPRINT_3x3 = entity("crafting_blueprint_large"),
|
||||
|
|
|
@ -52,6 +52,9 @@ import com.simibubi.create.content.contraptions.components.saw.SawBlock;
|
|||
import com.simibubi.create.content.contraptions.components.saw.SawGenerator;
|
||||
import com.simibubi.create.content.contraptions.components.steam.PoweredShaftBlock;
|
||||
import com.simibubi.create.content.contraptions.components.steam.SteamEngineBlock;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleBlock;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleExtenderBlock;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleGenerator;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BlankSailBlockItem;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock;
|
||||
|
@ -877,6 +880,21 @@ public class AllBlocks {
|
|||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<WhistleBlock> STEAM_WHISTLE = REGISTRATE.block("steam_whistle", WhistleBlock::new)
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new WhistleGenerator()::generate)
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<WhistleExtenderBlock> STEAM_WHISTLE_EXTENSION =
|
||||
REGISTRATE.block("steam_whistle_extension", WhistleExtenderBlock::new)
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.whistleExtender())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<PoweredShaftBlock> POWERED_SHAFT =
|
||||
REGISTRATE.block("powered_shaft", PoweredShaftBlock::new)
|
||||
.initialProperties(SharedProperties::stone)
|
||||
|
|
|
@ -147,7 +147,10 @@ public class AllShapes {
|
|||
|
||||
TRACK_ORTHO = shape(TrackVoxelShapes.orthogonal()).forHorizontal(NORTH),
|
||||
TRACK_ASC = shape(TrackVoxelShapes.ascending()).forHorizontal(SOUTH),
|
||||
TRACK_DIAG = shape(TrackVoxelShapes.diagonal()).forHorizontal(SOUTH)
|
||||
TRACK_DIAG = shape(TrackVoxelShapes.diagonal()).forHorizontal(SOUTH),
|
||||
|
||||
WHISTLE_BASE = shape(1, 0, 1, 15, 3, 15).add(5, 0, 5, 11, 8, 11)
|
||||
.forDirectional(UP)
|
||||
|
||||
;
|
||||
|
||||
|
@ -165,7 +168,10 @@ public class AllShapes {
|
|||
LOGISTICS_TABLE_SLOPE = shape(0, 10, 10.667, 16, 14, 15).add(0, 12, 6.333, 16, 16, 10.667)
|
||||
.add(0, 14, 2, 16, 18, 6.333)
|
||||
.build(),
|
||||
TANK_BOTTOM_LID = shape(0, 0, 0, 16, 4, 16).build(), TANK_TOP_LID = shape(0, 12, 0, 16, 16, 16).build()
|
||||
TANK_BOTTOM_LID = shape(0, 0, 0, 16, 4, 16).build(), TANK_TOP_LID = shape(0, 12, 0, 16, 16, 16).build(),
|
||||
|
||||
WHISTLE_SMALL = shape(4, 3, 4, 12, 16, 12).build(), WHISTLE_MEDIUM = shape(3, 3, 3, 13, 16, 13).build(),
|
||||
WHISTLE_LARGE = shape(2, 3, 2, 14, 16, 14).build()
|
||||
|
||||
;
|
||||
|
||||
|
@ -250,7 +256,24 @@ public class AllShapes {
|
|||
DEPOT = shape(CASING_11PX.get(Direction.UP)).add(1, 11, 1, 15, 13, 15)
|
||||
.build(),
|
||||
STATION = shape(0, 0, 0, 16, 2, 16).add(1, 0, 1, 15, 13, 15)
|
||||
.build()
|
||||
.build(),
|
||||
|
||||
WHISTLE_SMALL_FLOOR = shape(WHISTLE_SMALL).add(WHISTLE_BASE.get(UP))
|
||||
.build(),
|
||||
WHISTLE_MEDIUM_FLOOR = shape(WHISTLE_MEDIUM).add(WHISTLE_BASE.get(UP))
|
||||
.build(),
|
||||
WHISTLE_LARGE_FLOOR = shape(WHISTLE_LARGE).add(WHISTLE_BASE.get(UP))
|
||||
.build(),
|
||||
|
||||
WHISTLE_EXTENDER_SMALL = shape(4, 0, 4, 12, 10, 12).build(),
|
||||
WHISTLE_EXTENDER_MEDIUM = shape(3, 0, 3, 13, 10, 13).build(),
|
||||
WHISTLE_EXTENDER_LARGE = shape(2, 0, 2, 14, 10, 14).build(),
|
||||
WHISTLE_EXTENDER_SMALL_DOUBLE = shape(4, 0, 4, 12, 18, 12).build(),
|
||||
WHISTLE_EXTENDER_MEDIUM_DOUBLE = shape(3, 0, 3, 13, 18, 13).build(),
|
||||
WHISTLE_EXTENDER_LARGE_DOUBLE = shape(2, 0, 2, 14, 18, 14).build(),
|
||||
WHISTLE_EXTENDER_SMALL_DOUBLE_CONNECTED = shape(4, 0, 4, 12, 16, 12).build(),
|
||||
WHISTLE_EXTENDER_MEDIUM_DOUBLE_CONNECTED = shape(3, 0, 3, 13, 16, 13).build(),
|
||||
WHISTLE_EXTENDER_LARGE_DOUBLE_CONNECTED = shape(2, 0, 2, 14, 16, 14).build()
|
||||
|
||||
;
|
||||
|
||||
|
@ -275,7 +298,14 @@ public class AllShapes {
|
|||
.forHorizontal(SOUTH),
|
||||
SCHEMATICS_TABLE = shape(4, 0, 4, 12, 12, 12).add(0, 11, 2, 16, 14, 14)
|
||||
.forDirectional(SOUTH),
|
||||
CHUTE_SLOPE = shape(ChuteShapes.createSlope()).forHorizontal(SOUTH)
|
||||
CHUTE_SLOPE = shape(ChuteShapes.createSlope()).forHorizontal(SOUTH),
|
||||
|
||||
WHISTLE_SMALL_WALL = shape(WHISTLE_SMALL).add(WHISTLE_BASE.get(NORTH))
|
||||
.forHorizontal(SOUTH),
|
||||
WHISTLE_MEDIUM_WALL = shape(WHISTLE_MEDIUM).add(WHISTLE_BASE.get(NORTH))
|
||||
.forHorizontal(SOUTH),
|
||||
WHISTLE_LARGE_WALL = shape(WHISTLE_LARGE).add(WHISTLE_BASE.get(NORTH))
|
||||
.forHorizontal(SOUTH)
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -54,6 +54,8 @@ import com.simibubi.create.content.contraptions.components.saw.SawTileEntity;
|
|||
import com.simibubi.create.content.contraptions.components.steam.PoweredShaftTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.steam.SteamEngineRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.steam.SteamEngineTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingInstance;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingRenderer;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingTileEntity;
|
||||
|
@ -522,6 +524,12 @@ public class AllTileEntities {
|
|||
.renderer(() -> SteamEngineRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<WhistleTileEntity> STEAM_WHISTLE = Create.registrate()
|
||||
.tileEntity("steam_whistle", WhistleTileEntity::new)
|
||||
.validBlocks(AllBlocks.STEAM_WHISTLE)
|
||||
.renderer(() -> WhistleRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<PoweredShaftTileEntity> POWERED_SHAFT = Create.registrate()
|
||||
.tileEntity("powered_shaft", PoweredShaftTileEntity::new)
|
||||
.instance(() -> SingleRotatingInstance::new, false)
|
||||
|
|
|
@ -8,8 +8,6 @@ import com.simibubi.create.AllBlocks;
|
|||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock;
|
||||
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankConnectivityHandler;
|
||||
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity;
|
||||
import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
|
@ -98,7 +96,7 @@ public class SteamEngineBlock extends FaceAttachedHorizontalDirectionalBlock
|
|||
|
||||
@Override
|
||||
public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pIsMoving) {
|
||||
updateAttachedTank(pState, pLevel, pPos);
|
||||
FluidTankBlock.updateBoilerState(pState, pLevel, pPos.relative(getFacing(pState).getOpposite()));
|
||||
BlockPos shaftPos = getShaftPos(pState, pPos);
|
||||
BlockState shaftState = pLevel.getBlockState(shaftPos);
|
||||
if (isShaftValid(pState, shaftState))
|
||||
|
@ -109,28 +107,13 @@ public class SteamEngineBlock extends FaceAttachedHorizontalDirectionalBlock
|
|||
public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
|
||||
if (pState.hasBlockEntity() && (!pState.is(pNewState.getBlock()) || !pNewState.hasBlockEntity()))
|
||||
pLevel.removeBlockEntity(pPos);
|
||||
updateAttachedTank(pState, pLevel, pPos);
|
||||
|
||||
FluidTankBlock.updateBoilerState(pState, pLevel, pPos.relative(getFacing(pState).getOpposite()));
|
||||
BlockPos shaftPos = getShaftPos(pState, pPos);
|
||||
BlockState shaftState = pLevel.getBlockState(shaftPos);
|
||||
if (AllBlocks.POWERED_SHAFT.has(shaftState))
|
||||
pLevel.scheduleTick(shaftPos, shaftState.getBlock(), 1);
|
||||
}
|
||||
|
||||
private void updateAttachedTank(BlockState pState, Level pLevel, BlockPos pPos) {
|
||||
BlockPos tankPos = pPos.relative(getFacing(pState).getOpposite());
|
||||
BlockState tankState = pLevel.getBlockState(tankPos);
|
||||
if (!FluidTankBlock.isTank(tankState))
|
||||
return;
|
||||
FluidTankTileEntity tankTE = FluidTankConnectivityHandler.anyTankAt(pLevel, tankPos);
|
||||
if (tankTE == null)
|
||||
return;
|
||||
FluidTankTileEntity controllerTE = tankTE.getControllerTE();
|
||||
if (controllerTE == null)
|
||||
return;
|
||||
controllerTE.updateBoilerState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) {
|
||||
AttachFace face = pState.getValue(FACE);
|
||||
|
|
|
@ -0,0 +1,232 @@
|
|||
package com.simibubi.create.content.contraptions.components.steam.whistle;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleExtenderBlock.WhistleExtenderShape;
|
||||
import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.util.StringRepresentable;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
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.Blocks;
|
||||
import net.minecraft.world.level.block.Mirror;
|
||||
import net.minecraft.world.level.block.Rotation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.level.block.state.properties.DirectionProperty;
|
||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
import net.minecraft.world.level.pathfinder.PathComputationType;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
|
||||
public class WhistleBlock extends Block implements ITE<WhistleTileEntity>, IWrenchable {
|
||||
|
||||
public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING;
|
||||
public static final BooleanProperty WALL = BooleanProperty.create("wall");
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
public static final EnumProperty<WhistleSize> SIZE = EnumProperty.create("size", WhistleSize.class);
|
||||
|
||||
public static enum WhistleSize implements StringRepresentable {
|
||||
|
||||
SMALL, MEDIUM, LARGE;
|
||||
|
||||
@Override
|
||||
public String getSerializedName() {
|
||||
return Lang.asId(name());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public WhistleBlock(Properties p_49795_) {
|
||||
super(p_49795_);
|
||||
registerDefaultState(defaultBlockState().setValue(POWERED, false)
|
||||
.setValue(WALL, false)
|
||||
.setValue(SIZE, WhistleSize.MEDIUM));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) {
|
||||
return FluidTankBlock.isTank(pLevel.getBlockState(pPos.relative(getAttachedDirection(pState))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) {
|
||||
return originalState.cycle(SIZE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(Builder<Block, BlockState> pBuilder) {
|
||||
super.createBlockStateDefinition(pBuilder.add(FACING, POWERED, SIZE, WALL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
|
||||
Level level = pContext.getLevel();
|
||||
BlockPos clickedPos = pContext.getClickedPos();
|
||||
Direction face = pContext.getClickedFace();
|
||||
boolean wall = true;
|
||||
if (face.getAxis() == Axis.Y) {
|
||||
face = pContext.getHorizontalDirection()
|
||||
.getOpposite();
|
||||
wall = false;
|
||||
}
|
||||
|
||||
BlockState state = super.getStateForPlacement(pContext).setValue(FACING, face.getOpposite())
|
||||
.setValue(POWERED, level.hasNeighborSignal(clickedPos))
|
||||
.setValue(WALL, wall);
|
||||
if (!canSurvive(state, level, clickedPos))
|
||||
return null;
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
|
||||
BlockHitResult pHit) {
|
||||
if (pPlayer == null)
|
||||
return InteractionResult.PASS;
|
||||
|
||||
ItemStack heldItem = pPlayer.getItemInHand(pHand);
|
||||
if (AllBlocks.STEAM_WHISTLE.isIn(heldItem)) {
|
||||
incrementSize(pLevel, pPos);
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
|
||||
public static void incrementSize(LevelAccessor pLevel, BlockPos pPos) {
|
||||
BlockState base = pLevel.getBlockState(pPos);
|
||||
if (!base.hasProperty(SIZE))
|
||||
return;
|
||||
WhistleSize size = base.getValue(SIZE);
|
||||
BlockPos currentPos = pPos.above();
|
||||
for (int i = 1; i <= 12; i++) {
|
||||
BlockState blockState = pLevel.getBlockState(currentPos);
|
||||
|
||||
if (AllBlocks.STEAM_WHISTLE_EXTENSION.has(blockState)) {
|
||||
if (blockState.getValue(WhistleExtenderBlock.SHAPE) == WhistleExtenderShape.SINGLE) {
|
||||
pLevel.setBlock(currentPos,
|
||||
blockState.setValue(WhistleExtenderBlock.SHAPE, WhistleExtenderShape.DOUBLE), 3);
|
||||
return;
|
||||
}
|
||||
currentPos = currentPos.above();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!blockState.getMaterial()
|
||||
.isReplaceable())
|
||||
return;
|
||||
|
||||
pLevel.setBlock(currentPos, AllBlocks.STEAM_WHISTLE_EXTENSION.getDefaultState()
|
||||
.setValue(SIZE, size), 3);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public static void queuePitchUpdate(LevelAccessor level, BlockPos pos) {
|
||||
BlockState blockState = level.getBlockState(pos);
|
||||
if (blockState.getBlock()instanceof WhistleBlock whistle && !level.getBlockTicks()
|
||||
.hasScheduledTick(pos, whistle))
|
||||
level.scheduleTick(pos, whistle, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, Random pRandom) {
|
||||
withTileEntityDo(pLevel, pPos, WhistleTileEntity::updatePitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pIsMoving) {
|
||||
FluidTankBlock.updateBoilerState(pState, pLevel, pPos.relative(getAttachedDirection(pState)));
|
||||
if (pOldState.getBlock() != this || pOldState.getValue(SIZE) != pState.getValue(SIZE))
|
||||
queuePitchUpdate(pLevel, pPos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
|
||||
if (pState.hasBlockEntity() && (!pState.is(pNewState.getBlock()) || !pNewState.hasBlockEntity()))
|
||||
pLevel.removeBlockEntity(pPos);
|
||||
FluidTankBlock.updateBoilerState(pState, pLevel, pPos.relative(getAttachedDirection(pState)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos,
|
||||
boolean isMoving) {
|
||||
if (worldIn.isClientSide)
|
||||
return;
|
||||
boolean previouslyPowered = state.getValue(POWERED);
|
||||
if (previouslyPowered != worldIn.hasNeighborSignal(pos))
|
||||
worldIn.setBlock(pos, state.cycle(POWERED), 2);
|
||||
}
|
||||
|
||||
public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel,
|
||||
BlockPos pCurrentPos, BlockPos pFacingPos) {
|
||||
return getAttachedDirection(pState) == pFacing && !pState.canSurvive(pLevel, pCurrentPos)
|
||||
? Blocks.AIR.defaultBlockState()
|
||||
: pState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) {
|
||||
WhistleSize size = pState.getValue(SIZE);
|
||||
if (!pState.getValue(WALL))
|
||||
return size == WhistleSize.SMALL ? AllShapes.WHISTLE_SMALL_FLOOR
|
||||
: size == WhistleSize.MEDIUM ? AllShapes.WHISTLE_MEDIUM_FLOOR : AllShapes.WHISTLE_LARGE_FLOOR;
|
||||
Direction direction = pState.getValue(FACING);
|
||||
return (size == WhistleSize.SMALL ? AllShapes.WHISTLE_SMALL_WALL
|
||||
: size == WhistleSize.MEDIUM ? AllShapes.WHISTLE_MEDIUM_WALL : AllShapes.WHISTLE_LARGE_WALL).get(direction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPathfindable(BlockState state, BlockGetter reader, BlockPos pos, PathComputationType type) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Direction getAttachedDirection(BlockState state) {
|
||||
return state.getValue(WALL) ? state.getValue(FACING) : Direction.DOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<WhistleTileEntity> getTileEntityClass() {
|
||||
return WhistleTileEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntityType<? extends WhistleTileEntity> getTileEntityType() {
|
||||
return AllTileEntities.STEAM_WHISTLE.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState rotate(BlockState pState, Rotation pRotation) {
|
||||
return pState.setValue(FACING, pRotation.rotate(pState.getValue(FACING)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public BlockState mirror(BlockState pState, Mirror pMirror) {
|
||||
return pMirror == Mirror.NONE ? pState : pState.rotate(pMirror.getRotation(pState.getValue(FACING)));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,186 @@
|
|||
package com.simibubi.create.content.contraptions.components.steam.whistle;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleBlock.WhistleSize;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.util.StringRepresentable;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelAccessor;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
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.EnumProperty;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
|
||||
public class WhistleExtenderBlock extends Block implements IWrenchable {
|
||||
|
||||
public static final EnumProperty<WhistleExtenderShape> SHAPE =
|
||||
EnumProperty.create("shape", WhistleExtenderShape.class);
|
||||
public static final EnumProperty<WhistleSize> SIZE = WhistleBlock.SIZE;
|
||||
|
||||
public static enum WhistleExtenderShape implements StringRepresentable {
|
||||
SINGLE, DOUBLE, DOUBLE_CONNECTED;
|
||||
|
||||
@Override
|
||||
public String getSerializedName() {
|
||||
return Lang.asId(name());
|
||||
}
|
||||
}
|
||||
|
||||
public WhistleExtenderBlock(Properties p_49795_) {
|
||||
super(p_49795_);
|
||||
registerDefaultState(defaultBlockState().setValue(SHAPE, WhistleExtenderShape.SINGLE)
|
||||
.setValue(SIZE, WhistleSize.MEDIUM));
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) {
|
||||
Level world = context.getLevel();
|
||||
BlockPos pos = context.getClickedPos();
|
||||
|
||||
if (context.getClickLocation().y < context.getClickedPos()
|
||||
.getY() + .5f || state.getValue(SHAPE) == WhistleExtenderShape.SINGLE)
|
||||
return IWrenchable.super.onSneakWrenched(state, context);
|
||||
if (!(world instanceof ServerLevel))
|
||||
return InteractionResult.SUCCESS;
|
||||
world.setBlock(pos, state.setValue(SHAPE, WhistleExtenderShape.SINGLE), 3);
|
||||
playRemoveSound(world, pos);
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
protected UseOnContext relocateContext(UseOnContext context, BlockPos target) {
|
||||
return new UseOnContext(context.getPlayer(), context.getHand(),
|
||||
new BlockHitResult(context.getClickLocation(), context.getClickedFace(), target, context.isInside()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
|
||||
BlockHitResult pHit) {
|
||||
if (pPlayer == null || !AllBlocks.STEAM_WHISTLE.isIn(pPlayer.getItemInHand(pHand)))
|
||||
return InteractionResult.PASS;
|
||||
Level level = pLevel;
|
||||
BlockPos findRoot = findRoot(level, pPos);
|
||||
BlockState blockState = level.getBlockState(findRoot);
|
||||
if (blockState.getBlock()instanceof WhistleBlock whistle)
|
||||
return whistle.use(blockState, pLevel, findRoot, pPlayer, pHand,
|
||||
new BlockHitResult(pHit.getLocation(), pHit.getDirection(), findRoot, pHit.isInside()));
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
|
||||
Level level = context.getLevel();
|
||||
BlockPos findRoot = findRoot(level, context.getClickedPos());
|
||||
BlockState blockState = level.getBlockState(findRoot);
|
||||
if (blockState.getBlock()instanceof WhistleBlock whistle)
|
||||
return whistle.onWrenched(blockState, relocateContext(context, findRoot));
|
||||
return IWrenchable.super.onWrenched(state, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter level, BlockPos pos,
|
||||
Player player) {
|
||||
return AllBlocks.STEAM_WHISTLE.asStack();
|
||||
}
|
||||
|
||||
public static BlockPos findRoot(LevelAccessor pLevel, BlockPos pPos) {
|
||||
BlockPos currentPos = pPos.below();
|
||||
while (true) {
|
||||
BlockState blockState = pLevel.getBlockState(currentPos);
|
||||
if (AllBlocks.STEAM_WHISTLE_EXTENSION.has(blockState)) {
|
||||
currentPos = currentPos.below();
|
||||
continue;
|
||||
}
|
||||
return currentPos;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) {
|
||||
BlockState below = pLevel.getBlockState(pPos.below());
|
||||
return below.is(this) && below.getValue(SHAPE) != WhistleExtenderShape.SINGLE
|
||||
|| AllBlocks.STEAM_WHISTLE.has(below);
|
||||
}
|
||||
|
||||
public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel,
|
||||
BlockPos pCurrentPos, BlockPos pFacingPos) {
|
||||
if (pFacing.getAxis() != Axis.Y)
|
||||
return pState;
|
||||
|
||||
if (pFacing == Direction.UP) {
|
||||
boolean connected = pState.getValue(SHAPE) == WhistleExtenderShape.DOUBLE_CONNECTED;
|
||||
boolean shouldConnect = pLevel.getBlockState(pCurrentPos.above())
|
||||
.is(this);
|
||||
if (!connected && shouldConnect)
|
||||
return pState.setValue(SHAPE, WhistleExtenderShape.DOUBLE_CONNECTED);
|
||||
if (connected && !shouldConnect)
|
||||
return pState.setValue(SHAPE, WhistleExtenderShape.DOUBLE);
|
||||
return pState;
|
||||
}
|
||||
|
||||
return !pState.canSurvive(pLevel, pCurrentPos) ? Blocks.AIR.defaultBlockState()
|
||||
: pState.setValue(SIZE, pLevel.getBlockState(pCurrentPos.below())
|
||||
.getValue(SIZE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pIsMoving) {
|
||||
if (pOldState.getBlock() != this || pOldState.getValue(SHAPE) != pState.getValue(SHAPE))
|
||||
WhistleBlock.queuePitchUpdate(pLevel, findRoot(pLevel, pPos));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) {
|
||||
if (pNewState.getBlock() != this)
|
||||
WhistleBlock.queuePitchUpdate(pLevel, findRoot(pLevel, pPos));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(Builder<Block, BlockState> pBuilder) {
|
||||
super.createBlockStateDefinition(pBuilder.add(SHAPE, SIZE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) {
|
||||
WhistleSize size = pState.getValue(SIZE);
|
||||
switch (pState.getValue(SHAPE)) {
|
||||
case DOUBLE:
|
||||
return size == WhistleSize.LARGE ? AllShapes.WHISTLE_EXTENDER_LARGE_DOUBLE
|
||||
: size == WhistleSize.MEDIUM ? AllShapes.WHISTLE_EXTENDER_MEDIUM_DOUBLE
|
||||
: AllShapes.WHISTLE_EXTENDER_SMALL_DOUBLE;
|
||||
case DOUBLE_CONNECTED:
|
||||
return size == WhistleSize.LARGE ? AllShapes.WHISTLE_EXTENDER_LARGE_DOUBLE_CONNECTED
|
||||
: size == WhistleSize.MEDIUM ? AllShapes.WHISTLE_EXTENDER_MEDIUM_DOUBLE_CONNECTED
|
||||
: AllShapes.WHISTLE_EXTENDER_SMALL_DOUBLE_CONNECTED;
|
||||
case SINGLE:
|
||||
default:
|
||||
return size == WhistleSize.LARGE ? AllShapes.WHISTLE_EXTENDER_LARGE
|
||||
: size == WhistleSize.MEDIUM ? AllShapes.WHISTLE_EXTENDER_MEDIUM : AllShapes.WHISTLE_EXTENDER_SMALL;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hidesNeighborFace(BlockGetter level, BlockPos pos, BlockState state, BlockState neighborState,
|
||||
Direction dir) {
|
||||
return AllBlocks.STEAM_WHISTLE.has(neighborState) && dir == Direction.DOWN;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package com.simibubi.create.content.contraptions.components.steam.whistle;
|
||||
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.data.AssetLookup;
|
||||
import com.simibubi.create.foundation.data.SpecialBlockStateGen;
|
||||
import com.tterrag.registrate.providers.DataGenContext;
|
||||
import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
|
||||
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.generators.ModelFile;
|
||||
|
||||
public class WhistleGenerator extends SpecialBlockStateGen {
|
||||
|
||||
@Override
|
||||
protected int getXRotation(BlockState state) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getYRotation(BlockState state) {
|
||||
return horizontalAngle(state.getValue(WhistleBlock.FACING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
|
||||
BlockState state) {
|
||||
String wall = state.getValue(WhistleBlock.WALL) ? "wall" : "floor";
|
||||
String size = state.getValue(WhistleBlock.SIZE)
|
||||
.getSerializedName();
|
||||
boolean powered = state.getValue(WhistleBlock.POWERED);
|
||||
ModelFile model = AssetLookup.partialBaseModel(ctx, prov, size, wall);
|
||||
if (!powered)
|
||||
return model;
|
||||
ResourceLocation parentLocation = model.getLocation();
|
||||
return prov.models()
|
||||
.withExistingParent(parentLocation.getPath() + "_powered", parentLocation)
|
||||
.texture("2", Create.asResource("block/copper_redstone_plate_powered"));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package com.simibubi.create.content.contraptions.components.steam.whistle;
|
||||
|
||||
import com.jozufozu.flywheel.core.PartialModel;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleBlock.WhistleSize;
|
||||
import com.simibubi.create.foundation.render.CachedBufferer;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class WhistleRenderer extends SafeTileEntityRenderer<WhistleTileEntity> {
|
||||
|
||||
public WhistleRenderer(BlockEntityRendererProvider.Context context) {}
|
||||
|
||||
@Override
|
||||
protected void renderSafe(WhistleTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
int light, int overlay) {
|
||||
BlockState blockState = te.getBlockState();
|
||||
if (!(blockState.getBlock() instanceof WhistleBlock))
|
||||
return;
|
||||
|
||||
Direction direction = blockState.getValue(WhistleBlock.FACING);
|
||||
WhistleSize size = blockState.getValue(WhistleBlock.SIZE);
|
||||
|
||||
PartialModel mouth = size == WhistleSize.LARGE ? AllBlockPartials.WHISTLE_MOUTH_LARGE
|
||||
: size == WhistleSize.MEDIUM ? AllBlockPartials.WHISTLE_MOUTH_MEDIUM : AllBlockPartials.WHISTLE_MOUTH_SMALL;
|
||||
|
||||
float offset = 0;
|
||||
CachedBufferer.partial(mouth, blockState)
|
||||
.centre()
|
||||
.rotateY(AngleHelper.horizontalAngle(direction))
|
||||
.unCentre()
|
||||
.translate(0, offset * 4 / 16f, 0)
|
||||
.light(light)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.solid()));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package com.simibubi.create.content.contraptions.components.steam.whistle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleExtenderBlock.WhistleExtenderShape;
|
||||
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class WhistleTileEntity extends SmartTileEntity implements IHaveGoggleInformation {
|
||||
|
||||
protected int pitch = 0;
|
||||
|
||||
public WhistleTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<TileEntityBehaviour> behaviours) {}
|
||||
|
||||
public void updatePitch() {
|
||||
BlockPos currentPos = worldPosition.above();
|
||||
int prevPitch = pitch;
|
||||
for (pitch = 0; pitch <= 24; pitch += 2) {
|
||||
BlockState blockState = level.getBlockState(currentPos);
|
||||
if (!AllBlocks.STEAM_WHISTLE_EXTENSION.has(blockState))
|
||||
break;
|
||||
if (blockState.getValue(WhistleExtenderBlock.SHAPE) == WhistleExtenderShape.SINGLE) {
|
||||
pitch++;
|
||||
break;
|
||||
}
|
||||
currentPos = currentPos.above();
|
||||
}
|
||||
if (prevPitch == pitch)
|
||||
return;
|
||||
notifyUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write(CompoundTag tag, boolean clientPacket) {
|
||||
tag.putInt("Pitch", pitch);
|
||||
super.write(tag, clientPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundTag tag, boolean clientPacket) {
|
||||
pitch = tag.getInt("Pitch");
|
||||
super.read(tag, clientPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||
tooltip.add(new TextComponent(spacing + "Pitch: " + pitch));
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -6,6 +6,7 @@ import java.util.List;
|
|||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.steam.SteamEngineBlock;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleBlock;
|
||||
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.block.BlockStressValues;
|
||||
import com.simibubi.create.foundation.fluid.FluidHelper;
|
||||
|
@ -48,6 +49,7 @@ public class BoilerData {
|
|||
|
||||
public float waterSupply;
|
||||
public int attachedEngines;
|
||||
public int attachedWhistles;
|
||||
|
||||
public LerpedFloat gauge = LerpedFloat.linear();
|
||||
|
||||
|
@ -142,14 +144,6 @@ public class BoilerData {
|
|||
Component w = levelComponent("Water ... ", forWaterSupply, minValue, maxValue);
|
||||
Component s = levelComponent("Size ....... ", forBoilerSize, minValue, maxValue);
|
||||
|
||||
double totalSU = getEngineEfficiency(boilerSize) * 16 * Math.max(boilerLevel, attachedEngines)
|
||||
* BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get());
|
||||
Component capacity =
|
||||
new TextComponent(IHaveGoggleInformation.format(totalSU)).append(Lang.translate("generic.unit.stress"))
|
||||
.withStyle(ChatFormatting.AQUA);
|
||||
Component engines =
|
||||
new TextComponent(" via " + attachedEngines + " engine(s)").withStyle(ChatFormatting.DARK_GRAY);
|
||||
|
||||
Component indent = new TextComponent(spacing);
|
||||
Component indent2 = new TextComponent(spacing + " ");
|
||||
|
||||
|
@ -159,6 +153,17 @@ public class BoilerData {
|
|||
.append(w));
|
||||
tooltip.add(indent2.plainCopy()
|
||||
.append(h));
|
||||
|
||||
if (attachedEngines == 0)
|
||||
return true;
|
||||
|
||||
double totalSU = getEngineEfficiency(boilerSize) * 16 * Math.max(boilerLevel, attachedEngines)
|
||||
* BlockStressValues.getCapacity(AllBlocks.STEAM_ENGINE.get());
|
||||
Component capacity =
|
||||
new TextComponent(IHaveGoggleInformation.format(totalSU)).append(Lang.translate("generic.unit.stress"))
|
||||
.withStyle(ChatFormatting.AQUA);
|
||||
Component engines =
|
||||
new TextComponent(" via " + attachedEngines + " engine(s)").withStyle(ChatFormatting.DARK_GRAY);
|
||||
|
||||
tooltip.add(indent);
|
||||
tooltip.add(indent.plainCopy()
|
||||
|
@ -194,8 +199,10 @@ public class BoilerData {
|
|||
public boolean evaluate(FluidTankTileEntity controller) {
|
||||
BlockPos controllerPos = controller.getBlockPos();
|
||||
Level level = controller.getLevel();
|
||||
int prev = attachedEngines;
|
||||
int prevEngines = attachedEngines;
|
||||
int prevWhistles = attachedWhistles;
|
||||
attachedEngines = 0;
|
||||
attachedWhistles = 0;
|
||||
|
||||
for (int yOffset = 0; yOffset < controller.height; yOffset++) {
|
||||
for (int xOffset = 0; xOffset < controller.width; xOffset++) {
|
||||
|
@ -206,20 +213,21 @@ public class BoilerData {
|
|||
if (!FluidTankBlock.isTank(blockState))
|
||||
continue;
|
||||
for (Direction d : Iterate.directions) {
|
||||
BlockPos enginePos = pos.relative(d);
|
||||
BlockState engineState = level.getBlockState(enginePos);
|
||||
if (!AllBlocks.STEAM_ENGINE.has(engineState))
|
||||
continue;
|
||||
if (SteamEngineBlock.getFacing(engineState) != d)
|
||||
continue;
|
||||
attachedEngines++;
|
||||
BlockPos attachedPos = pos.relative(d);
|
||||
BlockState attachedState = level.getBlockState(attachedPos);
|
||||
if (AllBlocks.STEAM_ENGINE.has(attachedState) && SteamEngineBlock.getFacing(attachedState) == d)
|
||||
attachedEngines++;
|
||||
if (AllBlocks.STEAM_WHISTLE.has(attachedState)
|
||||
&& WhistleBlock.getAttachedDirection(attachedState)
|
||||
.getOpposite() == d)
|
||||
attachedWhistles++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
needsHeatLevelUpdate = true;
|
||||
return prev != attachedEngines;
|
||||
return prevEngines != attachedEngines || prevWhistles != attachedWhistles;
|
||||
}
|
||||
|
||||
public boolean updateTemperature(FluidTankTileEntity controller) {
|
||||
|
@ -251,7 +259,7 @@ public class BoilerData {
|
|||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return attachedEngines > 0;
|
||||
return attachedEngines > 0 || attachedWhistles > 0;
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
|
@ -268,6 +276,7 @@ public class BoilerData {
|
|||
nbt.putInt("ActiveHeat", activeHeat);
|
||||
nbt.putBoolean("PassiveHeat", passiveHeat);
|
||||
nbt.putInt("Engines", attachedEngines);
|
||||
nbt.putInt("Whistles", attachedWhistles);
|
||||
nbt.putBoolean("Update", needsHeatLevelUpdate);
|
||||
return nbt;
|
||||
}
|
||||
|
@ -277,6 +286,7 @@ public class BoilerData {
|
|||
activeHeat = nbt.getInt("ActiveHeat");
|
||||
passiveHeat = nbt.getBoolean("PassiveHeat");
|
||||
attachedEngines = nbt.getInt("Engines");
|
||||
attachedWhistles = nbt.getInt("Whistles");
|
||||
needsHeatLevelUpdate = nbt.getBoolean("Update");
|
||||
Arrays.fill(supplyOverTime, (int) waterSupply);
|
||||
|
||||
|
|
|
@ -329,5 +329,18 @@ public class FluidTankBlock extends Block implements IWrenchable, ITE<FluidTankT
|
|||
.map(te -> ComparatorUtil.fractionToRedstoneLevel(te.getFillState()))
|
||||
.orElse(0);
|
||||
}
|
||||
|
||||
public static void updateBoilerState(BlockState pState, Level pLevel, BlockPos tankPos) {
|
||||
BlockState tankState = pLevel.getBlockState(tankPos);
|
||||
if (!FluidTankBlock.isTank(tankState))
|
||||
return;
|
||||
FluidTankTileEntity tankTE = FluidTankConnectivityHandler.anyTankAt(pLevel, tankPos);
|
||||
if (tankTE == null)
|
||||
return;
|
||||
FluidTankTileEntity controllerTE = tankTE.getControllerTE();
|
||||
if (controllerTE == null)
|
||||
return;
|
||||
controllerTE.updateBoilerState();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,7 +13,11 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleBlock.WhistleSize;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleExtenderBlock;
|
||||
import com.simibubi.create.content.contraptions.components.steam.whistle.WhistleExtenderBlock.WhistleExtenderShape;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssembleRailType;
|
||||
|
@ -36,8 +40,10 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.level.block.state.properties.RailShape;
|
||||
import net.minecraftforge.client.model.generators.BlockModelProvider;
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel;
|
||||
import net.minecraftforge.client.model.generators.ModelFile;
|
||||
import net.minecraftforge.client.model.generators.ModelFile.ExistingModelFile;
|
||||
import net.minecraftforge.client.model.generators.MultiPartBlockStateBuilder;
|
||||
|
||||
public class BlockStateGen {
|
||||
|
@ -339,6 +345,41 @@ public class BlockStateGen {
|
|||
};
|
||||
}
|
||||
|
||||
public static <P extends WhistleExtenderBlock> NonNullBiConsumer<DataGenContext<Block, P>, RegistrateBlockstateProvider> whistleExtender() {
|
||||
return (c, p) -> {
|
||||
BlockModelProvider models = p.models();
|
||||
String basePath = "block/steam_whistle/extension/";
|
||||
MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get());
|
||||
|
||||
for (WhistleSize size : WhistleSize.values()) {
|
||||
String basePathSize = basePath + size.getSerializedName() + "_";
|
||||
ExistingModelFile topRim = models.getExistingFile(Create.asResource(basePathSize + "top_rim"));
|
||||
ExistingModelFile single = models.getExistingFile(Create.asResource(basePathSize + "single"));
|
||||
ExistingModelFile double_ = models.getExistingFile(Create.asResource(basePathSize + "double"));
|
||||
|
||||
builder.part()
|
||||
.modelFile(topRim)
|
||||
.addModel()
|
||||
.condition(WhistleExtenderBlock.SIZE, size)
|
||||
.condition(WhistleExtenderBlock.SHAPE, WhistleExtenderShape.DOUBLE)
|
||||
.end()
|
||||
.part()
|
||||
.modelFile(single)
|
||||
.addModel()
|
||||
.condition(WhistleExtenderBlock.SIZE, size)
|
||||
.condition(WhistleExtenderBlock.SHAPE, WhistleExtenderShape.SINGLE)
|
||||
.end()
|
||||
.part()
|
||||
.modelFile(double_)
|
||||
.addModel()
|
||||
.condition(WhistleExtenderBlock.SIZE, size)
|
||||
.condition(WhistleExtenderBlock.SHAPE, WhistleExtenderShape.DOUBLE,
|
||||
WhistleExtenderShape.DOUBLE_CONNECTED)
|
||||
.end();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static <P extends FluidPipeBlock> NonNullBiConsumer<DataGenContext<Block, P>, RegistrateBlockstateProvider> pipe() {
|
||||
return (c, p) -> {
|
||||
String path = "block/" + c.getName();
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"1": "create:block/engine",
|
||||
"2": "create:block/copper_redstone_plate",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Base",
|
||||
"from": [1, 0, 1],
|
||||
"to": [15, 3, 15],
|
||||
"faces": {
|
||||
"north": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"east": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"south": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"west": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"up": {"uv": [1, 0, 15, 14], "texture": "#2"},
|
||||
"down": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pipe Large",
|
||||
"from": [4, 3, 4],
|
||||
"to": [12, 12, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [2, 2, 6, 6.5], "texture": "#1"},
|
||||
"east": {"uv": [2, 2, 6, 6.5], "texture": "#1"},
|
||||
"south": {"uv": [2, 2, 6, 6.5], "texture": "#1"},
|
||||
"west": {"uv": [2, 2, 6, 6.5], "texture": "#1"},
|
||||
"up": {"uv": [7, 0.5, 11, 4.5], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Large Base",
|
||||
"from": [3, 4, 3],
|
||||
"to": [13, 16, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [4.75, 0.5, 7.25, 3.5], "texture": "#0"},
|
||||
"east": {"uv": [8.75, 0.5, 11.25, 3.5], "texture": "#0"},
|
||||
"south": {"uv": [8.75, 0.5, 11.25, 3.5], "texture": "#0"},
|
||||
"west": {"uv": [8.75, 0.5, 11.25, 3.5], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Large Cap",
|
||||
"from": [2, 16, 2],
|
||||
"to": [14, 18, 14],
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [0.5, 12.5, 3.5, 15.5], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [12.5, 12.5, 15.5, 15.5], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Bases",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Base Flat",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 3,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [2]
|
||||
},
|
||||
{
|
||||
"name": "large_top_rim",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"1": "create:block/engine",
|
||||
"2": "create:block/copper_redstone_plate",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Base",
|
||||
"from": [1, 1, 13],
|
||||
"to": [15, 15, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 0, 15, 14], "rotation": 180, "texture": "#2"},
|
||||
"east": {"uv": [1, 13, 15, 16], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"},
|
||||
"west": {"uv": [1, 13, 15, 16], "rotation": 270, "texture": "#2"},
|
||||
"up": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"down": {"uv": [1, 13, 15, 16], "rotation": 180, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pipe Large",
|
||||
"from": [4, 5, 4],
|
||||
"to": [12, 13, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [7, 0.5, 11, 4.5], "rotation": 180, "texture": "#1"},
|
||||
"east": {"uv": [2, 2, 6, 6.5], "rotation": 90, "texture": "#1"},
|
||||
"west": {"uv": [2, 2, 6, 6.5], "rotation": 270, "texture": "#1"},
|
||||
"up": {"uv": [2, 2, 6, 6.5], "texture": "#1"},
|
||||
"down": {"uv": [2, 2, 6, 6.5], "rotation": 180, "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Large Base",
|
||||
"from": [3, 4, 3],
|
||||
"to": [13, 16, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [4.75, 0.5, 7.25, 3.5], "texture": "#0"},
|
||||
"east": {"uv": [8.75, 0.5, 11.25, 3.5], "texture": "#0"},
|
||||
"south": {"uv": [8.75, 0.5, 11.25, 3.5], "texture": "#0"},
|
||||
"west": {"uv": [8.75, 0.5, 11.25, 3.5], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Large Cap",
|
||||
"from": [2, 16, 2],
|
||||
"to": [14, 18, 14],
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [0.5, 12.5, 3.5, 15.5], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [12.5, 12.5, 15.5, 15.5], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Bases",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Base Wall",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [2]
|
||||
},
|
||||
{
|
||||
"name": "large_top_rim",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"1": "create:block/engine",
|
||||
"2": "create:block/copper_redstone_plate",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Base",
|
||||
"from": [1, 0, 1],
|
||||
"to": [15, 3, 15],
|
||||
"faces": {
|
||||
"north": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"east": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"south": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"west": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"up": {"uv": [1, 0, 15, 14], "texture": "#2"},
|
||||
"down": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pipe Medium",
|
||||
"from": [5, 3, 5],
|
||||
"to": [11, 11, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"east": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"south": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"west": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"up": {"uv": [7.5, 1, 10.5, 4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Base",
|
||||
"from": [4, 4, 4],
|
||||
"to": [12, 16, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 4.5, 7, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"west": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Cap",
|
||||
"from": [3, 16, 3],
|
||||
"to": [13, 18, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [4.75, 12.75, 7.25, 15.25], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [12.75, 12.75, 15.25, 15.25], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Bases",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Base Flat",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 3,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [2]
|
||||
},
|
||||
{
|
||||
"name": "medium_top_rim",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"1": "create:block/engine",
|
||||
"2": "create:block/copper_redstone_plate",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Base",
|
||||
"from": [1, 1, 13],
|
||||
"to": [15, 15, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 0, 15, 14], "rotation": 180, "texture": "#2"},
|
||||
"east": {"uv": [1, 13, 15, 16], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"},
|
||||
"west": {"uv": [1, 13, 15, 16], "rotation": 270, "texture": "#2"},
|
||||
"up": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"down": {"uv": [1, 13, 15, 16], "rotation": 180, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pipe Medium",
|
||||
"from": [5, 5, 5],
|
||||
"to": [11, 11, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 1, 10.5, 4], "rotation": 180, "texture": "#1"},
|
||||
"east": {"uv": [2.5, 2.5, 5.5, 6.5], "rotation": 90, "texture": "#1"},
|
||||
"west": {"uv": [2.5, 2.5, 5.5, 6.5], "rotation": 270, "texture": "#1"},
|
||||
"up": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"down": {"uv": [2.5, 2.5, 5.5, 6.5], "rotation": 180, "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Base",
|
||||
"from": [4, 4, 4],
|
||||
"to": [12, 16, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 4.5, 7, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"west": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Cap",
|
||||
"from": [3, 16, 3],
|
||||
"to": [13, 18, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [4.75, 12.75, 7.25, 15.25], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [12.75, 12.75, 15.25, 15.25], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Bases",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Base Wall",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [2]
|
||||
},
|
||||
{
|
||||
"name": "medium_top_rim",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"1": "create:block/engine",
|
||||
"2": "create:block/copper_redstone_plate",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Base",
|
||||
"from": [1, 0, 1],
|
||||
"to": [15, 3, 15],
|
||||
"faces": {
|
||||
"north": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"east": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"south": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"west": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"up": {"uv": [1, 0, 15, 14], "texture": "#2"},
|
||||
"down": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pipe Small",
|
||||
"from": [6, 3, 6],
|
||||
"to": [10, 10, 10],
|
||||
"faces": {
|
||||
"north": {"uv": [3, 3, 5, 6.5], "texture": "#1"},
|
||||
"east": {"uv": [3, 3, 5, 6.5], "texture": "#1"},
|
||||
"south": {"uv": [3, 3, 5, 6.5], "texture": "#1"},
|
||||
"west": {"uv": [3, 3, 5, 6.5], "texture": "#1"},
|
||||
"up": {"uv": [8, 1.5, 10, 3.5], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small Base",
|
||||
"from": [5, 4, 5],
|
||||
"to": [11, 16, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [5.25, 8.5, 6.75, 11.5], "texture": "#0"},
|
||||
"east": {"uv": [9.25, 8.5, 10.75, 11.5], "texture": "#0"},
|
||||
"south": {"uv": [9.25, 8.5, 10.75, 11.5], "texture": "#0"},
|
||||
"west": {"uv": [9.25, 8.5, 10.75, 11.5], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small Cap",
|
||||
"from": [4, 16, 4],
|
||||
"to": [12, 18, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [9, 13, 11, 15], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Bases",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Base Flat",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 3,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [2]
|
||||
},
|
||||
{
|
||||
"name": "small_top_rim",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"1": "create:block/engine",
|
||||
"2": "create:block/copper_redstone_plate",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Base",
|
||||
"from": [1, 1, 13],
|
||||
"to": [15, 15, 16],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [1, 0, 15, 14], "rotation": 180, "texture": "#2"},
|
||||
"east": {"uv": [1, 13, 15, 16], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"},
|
||||
"west": {"uv": [1, 13, 15, 16], "rotation": 270, "texture": "#2"},
|
||||
"up": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"down": {"uv": [1, 13, 15, 16], "rotation": 180, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pipe Small",
|
||||
"from": [6, 6, 6],
|
||||
"to": [10, 10, 13],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
|
||||
"faces": {
|
||||
"north": {"uv": [8, 1.5, 10, 3.5], "rotation": 180, "texture": "#1"},
|
||||
"east": {"uv": [3, 3, 5, 6.5], "rotation": 90, "texture": "#1"},
|
||||
"west": {"uv": [3, 3, 5, 6.5], "rotation": 270, "texture": "#1"},
|
||||
"up": {"uv": [3, 3, 5, 6.5], "texture": "#1"},
|
||||
"down": {"uv": [3, 3, 5, 6.5], "rotation": 180, "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small Base",
|
||||
"from": [5, 4, 5],
|
||||
"to": [11, 16, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [5.25, 8.5, 6.75, 11.5], "texture": "#0"},
|
||||
"east": {"uv": [9.25, 8.5, 10.75, 11.5], "texture": "#0"},
|
||||
"south": {"uv": [9.25, 8.5, 10.75, 11.5], "texture": "#0"},
|
||||
"west": {"uv": [9.25, 8.5, 10.75, 11.5], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small Cap",
|
||||
"from": [4, 16, 4],
|
||||
"to": [12, 18, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [9, 13, 11, 15], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Bases",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Base Wall",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [2]
|
||||
},
|
||||
{
|
||||
"name": "small_top_rim",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle large Cap",
|
||||
"from": [2, 0, 2],
|
||||
"to": [14, 2, 14],
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"east": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"south": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"west": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"up": {"uv": [0.5, 12.5, 3.5, 15.5], "texture": "#0"},
|
||||
"down": {"uv": [12.5, 12.5, 15.5, 15.5], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle large Extension",
|
||||
"from": [3, 0, 3],
|
||||
"to": [13, 8, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"east": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"south": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"west": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle large Extension",
|
||||
"from": [3, 8, 3],
|
||||
"to": [13, 16, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"east": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"south": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"west": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Large Cap",
|
||||
"from": [2, 8, 2],
|
||||
"to": [14, 10, 14],
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"east": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"south": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"west": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0"},
|
||||
"up": {"uv": [0.5, 12.5, 3.5, 15.5], "texture": "#0"},
|
||||
"down": {"uv": [12.5, 12.5, 15.5, 15.5], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle large Extension",
|
||||
"from": [3, 0, 3],
|
||||
"to": [13, 8, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"east": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"south": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"},
|
||||
"west": {"uv": [12.75, 1.5, 15.25, 3.5], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Large Cap",
|
||||
"from": [2, 16, 2],
|
||||
"to": [14, 18, 14],
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [12.5, 0.75, 15.5, 1.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [0.5, 12.5, 3.5, 15.5], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [12.5, 12.5, 15.5, 15.5], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Medium Cap",
|
||||
"from": [3, 0, 3],
|
||||
"to": [13, 2, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"east": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"south": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"west": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"up": {"uv": [4.75, 12.75, 7.25, 15.25], "texture": "#0"},
|
||||
"down": {"uv": [12.75, 12.75, 15.25, 15.25], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Medium Extension",
|
||||
"from": [4, 0, 4],
|
||||
"to": [12, 8, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"west": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Extension",
|
||||
"from": [4, 8, 4],
|
||||
"to": [12, 16, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"west": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Medium Cap",
|
||||
"from": [3, 8, 3],
|
||||
"to": [13, 10, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"east": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"south": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"west": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"up": {"uv": [4.75, 12.75, 7.25, 15.25], "texture": "#0"},
|
||||
"down": {"uv": [12.75, 12.75, 15.25, 15.25], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Extension",
|
||||
"from": [4, 0, 4],
|
||||
"to": [12, 8, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"},
|
||||
"west": {"uv": [13, 5.5, 15, 7.5], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Medium Cap",
|
||||
"from": [3, 16, 3],
|
||||
"to": [13, 18, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [4.75, 12.75, 7.25, 15.25], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [12.75, 12.75, 15.25, 15.25], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Small Cap",
|
||||
"from": [4, 0, 4],
|
||||
"to": [12, 2, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"east": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"south": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"west": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"up": {"uv": [9, 13, 11, 15], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Small Extension",
|
||||
"from": [5, 0, 5],
|
||||
"to": [11, 8, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"east": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"south": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"west": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small Extension",
|
||||
"from": [5, 8, 5],
|
||||
"to": [11, 16, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"east": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"south": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"west": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Small Cap",
|
||||
"from": [4, 8, 4],
|
||||
"to": [12, 10, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"east": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"south": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"west": {"uv": [13, 8.75, 15, 9.25], "texture": "#0"},
|
||||
"up": {"uv": [9, 13, 11, 15], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Small Extension",
|
||||
"from": [5, 0, 5],
|
||||
"to": [11, 8, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"east": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"south": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"},
|
||||
"west": {"uv": [13.25, 9.5, 14.75, 11.5], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Whistle Small Cap",
|
||||
"from": [4, 16, 4],
|
||||
"to": [12, 18, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"east": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"south": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"west": {"uv": [13, 8.75, 15, 9.25], "texture": "#0", "cullface": "up"},
|
||||
"up": {"uv": [9, 13, 11, 15], "texture": "#0", "cullface": "up"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0", "cullface": "up"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,178 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"1": "create:block/engine",
|
||||
"2": "create:block/copper_redstone_plate",
|
||||
"particle": "create:block/whistle_particle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Base",
|
||||
"from": [1, 0, 1],
|
||||
"to": [15, 3, 15],
|
||||
"faces": {
|
||||
"north": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"east": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"south": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"west": {"uv": [1, 13, 15, 16], "texture": "#2"},
|
||||
"up": {"uv": [1, 0, 15, 14], "texture": "#2"},
|
||||
"down": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pipe Medium",
|
||||
"from": [5, 3, 5],
|
||||
"to": [11, 11, 11],
|
||||
"faces": {
|
||||
"north": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"east": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"south": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"west": {"uv": [2.5, 2.5, 5.5, 6.5], "texture": "#1"},
|
||||
"up": {"uv": [7.5, 1, 10.5, 4], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Base",
|
||||
"from": [4, 4, 4],
|
||||
"to": [12, 16, 12],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 4.5, 7, 7.5], "texture": "#0"},
|
||||
"east": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"south": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"west": {"uv": [9, 4.5, 11, 7.5], "texture": "#0"},
|
||||
"down": {"uv": [13, 13, 15, 15], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium Cap",
|
||||
"from": [3, 16, 3],
|
||||
"to": [13, 18, 13],
|
||||
"faces": {
|
||||
"north": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"east": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"south": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"west": {"uv": [12.75, 4.75, 15.25, 5.25], "texture": "#0"},
|
||||
"up": {"uv": [4.75, 12.75, 7.25, 15.25], "texture": "#0"},
|
||||
"down": {"uv": [12.75, 12.75, 15.25, 15.25], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Centre",
|
||||
"from": [6, 7, 3.5],
|
||||
"to": [10, 12, 5],
|
||||
"faces": {
|
||||
"north": {"uv": [1.5, 4, 2.5, 5.25], "texture": "#0"},
|
||||
"up": {"uv": [13.5, 14.5, 14.5, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Back",
|
||||
"from": [6, 5, 5],
|
||||
"to": [10, 12, 12.5],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [1.5, 6, 2.5, 7.75], "texture": "#0"},
|
||||
"up": {"uv": [13.5, 12.75, 14.5, 14.75], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Left",
|
||||
"from": [3.5, 5, 3.5],
|
||||
"to": [6, 12, 12.5],
|
||||
"faces": {
|
||||
"north": {"uv": [2.5, 4, 3, 5.75], "texture": "#0"},
|
||||
"east": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [1, 6, 1.5, 7.75], "texture": "#0"},
|
||||
"west": {"uv": [1, 6, 3, 7.75], "texture": "#0"},
|
||||
"up": {"uv": [14.5, 13, 15, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Right",
|
||||
"from": [10, 5, 3.5],
|
||||
"to": [12.5, 12, 12.5],
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 1.5, 5.75], "texture": "#0"},
|
||||
"east": {"uv": [1, 6, 3, 7.75], "texture": "#0"},
|
||||
"south": {"uv": [2.5, 6, 3, 7.75], "texture": "#0"},
|
||||
"west": {"uv": [5.5, 1.5, 5, 2], "texture": "#0"},
|
||||
"up": {"uv": [13, 13, 13.5, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 1.5, 5.5, 2], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [75, 45, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.375, 0.375, 0.375]
|
||||
},
|
||||
"thirdperson_lefthand": {
|
||||
"rotation": [75, 45, 0],
|
||||
"translation": [0, 2.5, 0],
|
||||
"scale": [0.375, 0.375, 0.375]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [0, 45, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"firstperson_lefthand": {
|
||||
"rotation": [0, 225, 0],
|
||||
"scale": [0.4, 0.4, 0.4]
|
||||
},
|
||||
"ground": {
|
||||
"translation": [0, 3, 0],
|
||||
"scale": [0.25, 0.25, 0.25]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [30, 225, 0],
|
||||
"scale": [0.625, 0.625, 0.625]
|
||||
},
|
||||
"head": {
|
||||
"translation": [0, 13, 0]
|
||||
},
|
||||
"fixed": {
|
||||
"scale": [0.5, 0.5, 0.5]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"name": "Bases",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Base Flat",
|
||||
"origin": [0, 0, 0],
|
||||
"color": 3,
|
||||
"children": [0, 1]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
2,
|
||||
3,
|
||||
{
|
||||
"name": "Whistle Medium Mouth",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [4, 5, 6, 7]
|
||||
},
|
||||
{
|
||||
"name": "Extension",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Centre",
|
||||
"from": [6, 7, 2.5],
|
||||
"to": [10, 12, 5],
|
||||
"faces": {
|
||||
"north": {"uv": [1.5, 0, 2.5, 1.25], "texture": "#0"},
|
||||
"up": {"uv": [13.5, 14.5, 14.5, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Back",
|
||||
"from": [6, 5, 5],
|
||||
"to": [10, 12, 13.5],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [1.5, 2, 2.5, 3.75], "texture": "#0"},
|
||||
"up": {"uv": [13.5, 12.75, 14.5, 14.75], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Left",
|
||||
"from": [2.5, 5, 2.5],
|
||||
"to": [6, 12, 13.5],
|
||||
"faces": {
|
||||
"north": {"uv": [2.5, 0, 3.25, 1.75], "texture": "#0"},
|
||||
"east": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [0.75, 2, 1.5, 3.75], "texture": "#0"},
|
||||
"west": {"uv": [0.75, 2, 3.25, 3.75], "texture": "#0"},
|
||||
"up": {"uv": [14.5, 12.75, 15.25, 15.25], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Right",
|
||||
"from": [10, 5, 2.5],
|
||||
"to": [13.5, 12, 13.5],
|
||||
"faces": {
|
||||
"north": {"uv": [0.75, 0, 1.5, 1.75], "texture": "#0"},
|
||||
"east": {"uv": [0.75, 2, 3.25, 3.75], "texture": "#0"},
|
||||
"south": {"uv": [2.5, 2, 3.25, 3.75], "texture": "#0"},
|
||||
"west": {"uv": [5.5, 1.5, 5, 2], "texture": "#0"},
|
||||
"up": {"uv": [12.75, 12.75, 13.5, 15.25], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 1.5, 5.5, 2], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Large",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Large Mouth",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Centre",
|
||||
"from": [6, 7, 3.5],
|
||||
"to": [10, 12, 5],
|
||||
"faces": {
|
||||
"north": {"uv": [1.5, 4, 2.5, 5.25], "texture": "#0"},
|
||||
"up": {"uv": [13.5, 14.5, 14.5, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Back",
|
||||
"from": [6, 5, 5],
|
||||
"to": [10, 12, 12.5],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [1.5, 6, 2.5, 7.75], "texture": "#0"},
|
||||
"up": {"uv": [13.5, 12.75, 14.5, 14.75], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Left",
|
||||
"from": [3.5, 5, 3.5],
|
||||
"to": [6, 12, 12.5],
|
||||
"faces": {
|
||||
"north": {"uv": [2.5, 4, 3, 5.75], "texture": "#0"},
|
||||
"east": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [1, 6, 1.5, 7.75], "texture": "#0"},
|
||||
"west": {"uv": [1, 6, 3, 7.75], "texture": "#0"},
|
||||
"up": {"uv": [14.5, 13, 15, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Right",
|
||||
"from": [10, 5, 3.5],
|
||||
"to": [12.5, 12, 12.5],
|
||||
"faces": {
|
||||
"north": {"uv": [1, 4, 1.5, 5.75], "texture": "#0"},
|
||||
"east": {"uv": [1, 6, 3, 7.75], "texture": "#0"},
|
||||
"south": {"uv": [2.5, 6, 3, 7.75], "texture": "#0"},
|
||||
"west": {"uv": [5.5, 1.5, 5, 2], "texture": "#0"},
|
||||
"up": {"uv": [13, 13, 13.5, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 1.5, 5.5, 2], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Medium",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Medium Mouth",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/whistle",
|
||||
"particle": "create:block/whistle"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Centre",
|
||||
"from": [7, 6, 4.5],
|
||||
"to": [9, 12, 5],
|
||||
"faces": {
|
||||
"north": {"uv": [1.75, 8, 2.25, 9.5], "texture": "#0"},
|
||||
"up": {"uv": [13.75, 14.5, 14.25, 15], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Back",
|
||||
"from": [7, 5, 6],
|
||||
"to": [9, 12, 11.5],
|
||||
"faces": {
|
||||
"north": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [1.75, 10, 2.25, 11.75], "texture": "#0"},
|
||||
"up": {"uv": [13.75, 12.75, 14.25, 14.75], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Left",
|
||||
"from": [4.5, 5, 4.5],
|
||||
"to": [7, 12, 11.5],
|
||||
"faces": {
|
||||
"north": {"uv": [2.25, 8, 2.75, 9.75], "texture": "#0"},
|
||||
"east": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"},
|
||||
"south": {"uv": [1.25, 10, 1.75, 11.75], "texture": "#0"},
|
||||
"west": {"uv": [1.25, 10, 2.75, 11.75], "texture": "#0"},
|
||||
"up": {"uv": [14.25, 13.25, 14.75, 14.75], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 5.5, 5.5, 6], "texture": "#0"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Right",
|
||||
"from": [9, 5, 4.5],
|
||||
"to": [11.5, 12, 11.5],
|
||||
"faces": {
|
||||
"north": {"uv": [1.25, 8, 1.75, 9.75], "texture": "#0"},
|
||||
"east": {"uv": [1.25, 10, 2.75, 11.75], "texture": "#0"},
|
||||
"south": {"uv": [2.25, 10, 2.75, 11.75], "texture": "#0"},
|
||||
"west": {"uv": [5.5, 1.5, 5, 2], "texture": "#0"},
|
||||
"up": {"uv": [13.25, 13.25, 13.75, 14.75], "rotation": 180, "texture": "#0"},
|
||||
"down": {"uv": [5, 1.5, 5.5, 2], "texture": "#0"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Whistle Small",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [
|
||||
{
|
||||
"name": "Whistle Small Mouth",
|
||||
"origin": [8, 8, 8],
|
||||
"color": 0,
|
||||
"children": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 634 B |
Binary file not shown.
After Width: | Height: | Size: 379 B |
BIN
src/main/resources/assets/create/textures/block/whistle.png
Normal file
BIN
src/main/resources/assets/create/textures/block/whistle.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 255 B |
Loading…
Reference in a new issue