Slide to Unlock
- Added Train Doors & Train Trapdoors
This commit is contained in:
parent
f5bef9ee12
commit
09e12368a0
54 changed files with 1140 additions and 35 deletions
|
@ -494,6 +494,8 @@ a2454400b1cf9889f70aebdc89c52a1be25f543c assets/create/blockstates/tiled_glass_p
|
|||
96c45abe7a5d9273feaf5f747d14cee8e04b58da assets/create/blockstates/track.json
|
||||
408ae1009ee8bb2f2b83753d5909c53744f7865f assets/create/blockstates/track_signal.json
|
||||
60609cfbcc9be6f7e41fb493ef3147beb9750b60 assets/create/blockstates/track_station.json
|
||||
b000a6cde143f8a12fc8996d1ac8b5164f75253b assets/create/blockstates/train_door.json
|
||||
836c443ab8778f0ff2b16bdf5f3339a0871c273e assets/create/blockstates/train_trapdoor.json
|
||||
29af21c8d82891139d48d69f0393f612f2b6f8f1 assets/create/blockstates/tuff_pillar.json
|
||||
a8094531617e27a545c4815ab2062bf0ffca3633 assets/create/blockstates/turntable.json
|
||||
c9bf881ea71aa274b2803142456f1bbed9539076 assets/create/blockstates/veridium.json
|
||||
|
@ -548,23 +550,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
|
||||
eba7c6db62d5deb5a111a483ee37082ef82106db assets/create/lang/en_ud.json
|
||||
bfbe6e2af329fec021924581d19a0c3d1f63081d assets/create/lang/en_us.json
|
||||
7c3ee0da49b4b370720085645dddd8b5723b9e8c assets/create/lang/unfinished/de_de.json
|
||||
a5c2a9d869c9d08593b8ada461059dba5723b0d8 assets/create/lang/unfinished/es_cl.json
|
||||
e3767d6a01cab033bddf329f8577ab30c164d6c5 assets/create/lang/unfinished/es_es.json
|
||||
a7a22755b3763af031b0ef64b1e377dc4869f87f assets/create/lang/unfinished/fr_fr.json
|
||||
99a34cd1814c48de4666f5387eaf5a0193b3d975 assets/create/lang/unfinished/it_it.json
|
||||
8646fba326895102db99ef5aa59d0a248b11a8c6 assets/create/lang/unfinished/ja_jp.json
|
||||
33dcf809b1f5b8409c16637f58bf510e3caf8b17 assets/create/lang/unfinished/ko_kr.json
|
||||
ae23d4781e687b2a0c21c0bdfc4c37b7c7794bca assets/create/lang/unfinished/nl_nl.json
|
||||
301467e71aa2243bbd197e70a1c0f2950edb5106 assets/create/lang/unfinished/pl_pl.json
|
||||
eb75c1cfd9abe49cd161f3c13438f4b0906e6db6 assets/create/lang/unfinished/pt_br.json
|
||||
4f05cfecb7fdd5a8d07a2e665f394796f7cde097 assets/create/lang/unfinished/pt_pt.json
|
||||
40b56a04ad59b0876a42311acefbca478815cab6 assets/create/lang/unfinished/ro_ro.json
|
||||
3db9f371de5faa7dd857c08f8af7eb65571344e6 assets/create/lang/unfinished/ru_ru.json
|
||||
3f6b1f177a02c19b6202eae400771ed483496b3d assets/create/lang/unfinished/zh_cn.json
|
||||
675fd73014bb134554f332499b1c669c3a0f08c1 assets/create/lang/unfinished/zh_tw.json
|
||||
c7b048548ba737df7efee5731a064c8ee960bdaa assets/create/lang/en_ud.json
|
||||
36b99098c2c1e74ea354e6029c793e60d0f4ae59 assets/create/lang/en_us.json
|
||||
7dcf9e632b044ab669dd6f6ad3e54631c3d6139c assets/create/lang/unfinished/de_de.json
|
||||
cfadcedb96c76afcbb40588d79c0349f82e47460 assets/create/lang/unfinished/es_cl.json
|
||||
b4ff075c0f41ccb984b0d607cae9b418753c9be2 assets/create/lang/unfinished/es_es.json
|
||||
a5f32e9f82cebf81078080f08a7d4c34c57e83ed assets/create/lang/unfinished/fr_fr.json
|
||||
14604d102012db3d5d7d73704068757327e36be2 assets/create/lang/unfinished/it_it.json
|
||||
f303c569fc4d5948b0114875fb5f51107fd1206b assets/create/lang/unfinished/ja_jp.json
|
||||
450c9f26a1e9e69dea4f560b98038713e455d8ff assets/create/lang/unfinished/ko_kr.json
|
||||
6b27dd10cdf70a887f92bd6e07727ecdb353fe05 assets/create/lang/unfinished/nl_nl.json
|
||||
c7654bc1bae61f4a082c5c192aee77eb20420524 assets/create/lang/unfinished/pl_pl.json
|
||||
21fdbb74b8ec7985a6b28007dea9e89573185aee assets/create/lang/unfinished/pt_br.json
|
||||
b1e1b5c9bbe8edf74a7ea065419c163a498705d5 assets/create/lang/unfinished/pt_pt.json
|
||||
475bee61ea113f82c28d160a1e0a878497c70294 assets/create/lang/unfinished/ro_ro.json
|
||||
8e7bbcc121f75d9624912b9b973c97e06e513ee9 assets/create/lang/unfinished/ru_ru.json
|
||||
98e166139f6b34fc5b3b3f82e847e45fa76dde3d assets/create/lang/unfinished/zh_cn.json
|
||||
ac0c777b32535ea8d87c6812cacb54b56f824c25 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
|
||||
|
@ -2125,6 +2127,8 @@ a7d0b746637897209bd86b1a6501ecbfb46d8270 assets/create/models/item/tiled_glass_p
|
|||
6b5569f25fa2d905729a3f18deb56b6c67c5dfa4 assets/create/models/item/track.json
|
||||
c317adb86ee47765dd7716539c65f31f329deb85 assets/create/models/item/track_signal.json
|
||||
447b472ee2e4796dde9e96a2be3c12e015756845 assets/create/models/item/track_station.json
|
||||
c802b2ba62dca48eaad28dafbe67961f44697696 assets/create/models/item/train_door.json
|
||||
96a711ce9da69af155332f72f81f4135e859ea17 assets/create/models/item/train_trapdoor.json
|
||||
f8a4fa1ccecb16a3941cc46db7481ed8e8429a5e assets/create/models/item/tree_fertilizer.json
|
||||
3f6810da54724de551591b46cd5b47a98a4737ef assets/create/models/item/tuff_pillar.json
|
||||
fb24881c4e92bbb7ffa54a71e0af6b1c66d84829 assets/create/models/item/turntable.json
|
||||
|
@ -2478,6 +2482,8 @@ f640ded44cb4cf4c31e49deb0fc14e3495cd2edf data/create/advancements/recipes/create
|
|||
f3fc3d4fee0712906f833aa17185f0bacb21922f data/create/advancements/recipes/create.base/crafting/kinetics/super_glue.json
|
||||
23c1ecff946d41c74d4fb78e2bbc5e348c4487f5 data/create/advancements/recipes/create.base/crafting/kinetics/track_signal.json
|
||||
da30636ca7e77f2947d0d28542c0b99747c9939e data/create/advancements/recipes/create.base/crafting/kinetics/track_station.json
|
||||
050b8c527083e624a01f38ea8b34771a19ed2bc5 data/create/advancements/recipes/create.base/crafting/kinetics/train_door.json
|
||||
3b6779f388eaf07f3c18fec33713f41f39a0032d data/create/advancements/recipes/create.base/crafting/kinetics/train_trapdoor.json
|
||||
9d7bbda05cebecc0922f4d344e9a51d4c2774a18 data/create/advancements/recipes/create.base/crafting/kinetics/turntable.json
|
||||
c1bb8d9022dff3dcf6c42f651b421281924c7dd2 data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearboxfrom_conversion.json
|
||||
a67713418e505fa68ecde6b8bc83c09ccced7a65 data/create/advancements/recipes/create.base/crafting/kinetics/water_wheel.json
|
||||
|
@ -3838,6 +3844,8 @@ da3ceb80799d349b91781b0dd43a02e548045c66 data/create/loot_tables/blocks/stressom
|
|||
e2846b8823918bce402eb361f703ecdc14251ccc data/create/loot_tables/blocks/track.json
|
||||
f589afc404f98c42d2d9b0b03bcac87f7f6444cc data/create/loot_tables/blocks/track_signal.json
|
||||
4617a11e220dcd0094c29d204fe90c01495c4e9b data/create/loot_tables/blocks/track_station.json
|
||||
7f337ebb7f9a6ec83af12f3cf99517762689ac25 data/create/loot_tables/blocks/train_door.json
|
||||
f74bc454bda585bc5ab0b5b3e0b4d345a6ff039b data/create/loot_tables/blocks/train_trapdoor.json
|
||||
8fbe59bc77b029b802c43fb8a930778dede440ea data/create/loot_tables/blocks/tuff_pillar.json
|
||||
2419d50b6086e92ab05624fdf38ef2b55c0b0944 data/create/loot_tables/blocks/turntable.json
|
||||
2706ebca18074fe8d7a988d2c0002c857bff5c2b data/create/loot_tables/blocks/veridium.json
|
||||
|
@ -4120,6 +4128,8 @@ af5854ee2fa3be195ad9abcdeebe6ed7306b651c data/create/recipes/crafting/kinetics/s
|
|||
21f885a674603367b67e1e993c175638cbda9ea3 data/create/recipes/crafting/kinetics/super_glue.json
|
||||
456d59d0fff2b042e1e886ebbe46b84fbd212c40 data/create/recipes/crafting/kinetics/track_signal.json
|
||||
3c8fd3b5fe4d264cfe405c8d222b451769c816d5 data/create/recipes/crafting/kinetics/track_station.json
|
||||
c38984c432bd410261aaf6a6f30744c58481b325 data/create/recipes/crafting/kinetics/train_door.json
|
||||
5e2af5ce3957d5ce4f54ceb667dcfed5cffafb32 data/create/recipes/crafting/kinetics/train_trapdoor.json
|
||||
8494f5fcd85a740fa0f0384e3522d8cdd905ce49 data/create/recipes/crafting/kinetics/turntable.json
|
||||
057c889b0a306f44b8835c896663154ccd9ff12f data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json
|
||||
4fb009b86a51b2e259bd1f73848803f6276dd820 data/create/recipes/crafting/kinetics/water_wheel.json
|
||||
|
@ -5382,20 +5392,25 @@ e002dfedc5e8762de0f97ea1f3fa546e92e748ae data/forge/tags/items/tools/wrench.json
|
|||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/azalea_root_replaceable.json
|
||||
9f7a428085b1aac66da32a43e9d51c7efc1f0d81 data/minecraft/tags/blocks/beacon_base_blocks.json
|
||||
dea0b54b33b1ae3b4fa8091dfcc4ad5687978ab1 data/minecraft/tags/blocks/climbable.json
|
||||
4c7d869f28092481b6fd708fecbd19ccb8d5a543 data/minecraft/tags/blocks/doors.json
|
||||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/dripstone_replaceable_blocks.json
|
||||
69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json
|
||||
2db7759fe036160c14c6ed19a68604ca16f4de60 data/minecraft/tags/blocks/lush_ground_replaceable.json
|
||||
1472ec62e43355273f0699743ccdb65324c02475 data/minecraft/tags/blocks/mineable/axe.json
|
||||
9e3acb6ee234679d81e4a5810dd71a5f456a26bd data/minecraft/tags/blocks/mineable/pickaxe.json
|
||||
b4942c1fc4d3f55eb5f603ebd5c6f4bad62a3cb4 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
|
||||
6bcabbc1c0479caa80a0ebc676bb34ce0052efb0 data/minecraft/tags/blocks/rails.json
|
||||
49a043b38ca8d4e2fa8cba9ceee3b69715a8476e data/minecraft/tags/blocks/slabs.json
|
||||
bc0917bead5b198feeeaa5c5b92dddae48bbb6f5 data/minecraft/tags/blocks/stairs.json
|
||||
5bf61c12f5412dc593cbed2d1cd2d20f35605cb2 data/minecraft/tags/blocks/trapdoors.json
|
||||
0ec220675cbf8a6eeb47d42b7409395a0cb6ae6e data/minecraft/tags/blocks/walls.json
|
||||
4c7d869f28092481b6fd708fecbd19ccb8d5a543 data/minecraft/tags/blocks/wooden_doors.json
|
||||
09d26bcd0f94459f945219997277c4fbf14adeb7 data/minecraft/tags/fluids/water.json
|
||||
4c7d869f28092481b6fd708fecbd19ccb8d5a543 data/minecraft/tags/items/doors.json
|
||||
49cadea86f6b63d5065b859a0d0e7ad772cf51d6 data/minecraft/tags/items/piglin_loved.json
|
||||
49a043b38ca8d4e2fa8cba9ceee3b69715a8476e data/minecraft/tags/items/slabs.json
|
||||
bc0917bead5b198feeeaa5c5b92dddae48bbb6f5 data/minecraft/tags/items/stairs.json
|
||||
5bf61c12f5412dc593cbed2d1cd2d20f35605cb2 data/minecraft/tags/items/trapdoors.json
|
||||
0ec220675cbf8a6eeb47d42b7409395a0cb6ae6e data/minecraft/tags/items/walls.json
|
||||
|
|
|
@ -0,0 +1,244 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=north,half=upper,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=upper,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=upper,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=upper,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=north,half=lower,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=lower,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=lower,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=lower,hinge=left,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=north,half=upper,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=upper,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=upper,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=upper,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=north,half=lower,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=lower,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=lower,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=lower,hinge=right,open=false,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=north,half=upper,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=south,half=upper,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=upper,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=upper,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,half=lower,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=south,half=lower,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=lower,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=lower,hinge=left,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,half=upper,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,half=upper,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=west,half=upper,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,half=upper,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=lower,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,half=lower,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=west,half=lower,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,half=lower,hinge=right,open=true,visible=false": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=upper,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=upper,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=upper,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=upper,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=north,half=lower,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=lower,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=lower,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=lower,hinge=left,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=north,half=upper,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=upper,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=upper,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=upper,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=north,half=lower,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=south,half=lower,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=west,half=lower,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=east,half=lower,hinge=right,open=false,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=north,half=upper,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=south,half=upper,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=upper,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=upper,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,half=lower,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=south,half=lower,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=lower,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=lower,hinge=left,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,half=upper,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,half=upper,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top"
|
||||
},
|
||||
"facing=west,half=upper,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,half=upper,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=lower,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,half=lower,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom"
|
||||
},
|
||||
"facing=west,half=lower,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,half=lower,hinge=right,open=true,visible=true": {
|
||||
"model": "create:block/train_door/block_bottom",
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=north,half=top,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_top"
|
||||
},
|
||||
"facing=south,half=top,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_top",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=top,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_top",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=top,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_top",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,half=bottom,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_bottom"
|
||||
},
|
||||
"facing=south,half=bottom,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_bottom",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=bottom,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_bottom",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=bottom,open=false": {
|
||||
"model": "create:block/train_trapdoor/block_bottom",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,half=top,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open",
|
||||
"x": 180,
|
||||
"y": 180
|
||||
},
|
||||
"facing=south,half=top,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open",
|
||||
"x": 180
|
||||
},
|
||||
"facing=west,half=top,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open",
|
||||
"x": 180,
|
||||
"y": 90
|
||||
},
|
||||
"facing=east,half=top,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open",
|
||||
"x": 180,
|
||||
"y": 270
|
||||
},
|
||||
"facing=north,half=bottom,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open"
|
||||
},
|
||||
"facing=south,half=bottom,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,half=bottom,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,half=bottom,open=true": {
|
||||
"model": "create:block/train_trapdoor/block_open",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
|
@ -496,6 +496,8 @@
|
|||
"block.create.track": "\u029E\u0254\u0250\u0279\u27D8 u\u0131\u0250\u0279\u27D8",
|
||||
"block.create.track_signal": "\u05DF\u0250ub\u0131S u\u0131\u0250\u0279\u27D8",
|
||||
"block.create.track_station": "uo\u0131\u0287\u0250\u0287S u\u0131\u0250\u0279\u27D8",
|
||||
"block.create.train_door": "\u0279oo\u15E1 u\u0131\u0250\u0279\u27D8",
|
||||
"block.create.train_trapdoor": "\u0279oopd\u0250\u0279\u27D8 u\u0131\u0250\u0279\u27D8",
|
||||
"block.create.tuff_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u025F\u025Fn\u27D8",
|
||||
"block.create.turntable": "\u01DD\u05DFq\u0250\u0287u\u0279n\u27D8",
|
||||
"block.create.veridium": "\u026Fn\u0131p\u0131\u0279\u01DD\u039B",
|
||||
|
|
|
@ -499,6 +499,8 @@
|
|||
"block.create.track": "Train Track",
|
||||
"block.create.track_signal": "Train Signal",
|
||||
"block.create.track_station": "Train Station",
|
||||
"block.create.train_door": "Train Door",
|
||||
"block.create.train_trapdoor": "Train Trapdoor",
|
||||
"block.create.tuff_pillar": "Tuff Pillar",
|
||||
"block.create.turntable": "Turntable",
|
||||
"block.create.veridium": "Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 932",
|
||||
"_": "Missing Localizations: 934",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "Tuffstein-Säule",
|
||||
"block.create.turntable": "Drehtisch",
|
||||
"block.create.veridium": "Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 582",
|
||||
"_": "Missing Localizations: 584",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "Plato Giratorio",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 246",
|
||||
"_": "Missing Localizations: 248",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "Pilar de toba",
|
||||
"block.create.turntable": "Plataforma giratoria mecánica",
|
||||
"block.create.veridium": "Veridio",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1820",
|
||||
"_": "Missing Localizations: 1822",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "Plaque tournante",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1509",
|
||||
"_": "Missing Localizations: 1511",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "Piatto",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 248",
|
||||
"_": "Missing Localizations: 250",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "凝灰岩の柱",
|
||||
"block.create.turntable": "ターンテーブル",
|
||||
"block.create.veridium": "翡翠岩",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 248",
|
||||
"_": "Missing Localizations: 250",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "응회암 기둥",
|
||||
"block.create.turntable": "돌림판",
|
||||
"block.create.veridium": "심록암",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 2172",
|
||||
"_": "Missing Localizations: 2174",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "Draaischijf",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 621",
|
||||
"_": "Missing Localizations: 623",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "Talerz obrotowy",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1116",
|
||||
"_": "Missing Localizations: 1118",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "Pilar de tufo",
|
||||
"block.create.turntable": "Mesa giratória",
|
||||
"block.create.veridium": "Veridiano",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1794",
|
||||
"_": "Missing Localizations: 1796",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "Mesa giratória",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 249",
|
||||
"_": "Missing Localizations: 251",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "Coloană De Tuf",
|
||||
"block.create.turntable": "Placă Turnantă",
|
||||
"block.create.veridium": "Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 626",
|
||||
"_": "Missing Localizations: 628",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "Поворотный стол",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 246",
|
||||
"_": "Missing Localizations: 248",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "凝灰岩柱",
|
||||
"block.create.turntable": "转盘",
|
||||
"block.create.veridium": "辉绿矿",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 640",
|
||||
"_": "Missing Localizations: 642",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -500,6 +500,8 @@
|
|||
"block.create.track": "UNLOCALIZED: Train Track",
|
||||
"block.create.track_signal": "UNLOCALIZED: Train Signal",
|
||||
"block.create.track_station": "UNLOCALIZED: Train Station",
|
||||
"block.create.train_door": "UNLOCALIZED: Train Door",
|
||||
"block.create.train_trapdoor": "UNLOCALIZED: Train Trapdoor",
|
||||
"block.create.tuff_pillar": "UNLOCALIZED: Tuff Pillar",
|
||||
"block.create.turntable": "轉盤",
|
||||
"block.create.veridium": "UNLOCALIZED: Veridium",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "create:item/train_door"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/train_trapdoor"
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/kinetics/train_door"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_item": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "forge:ingots/brass"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/kinetics/train_door"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_item",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:crafting/kinetics/train_trapdoor"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_item": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"tag": "forge:ingots/brass"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:crafting/kinetics/train_trapdoor"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_item",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1.0,
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:block_state_property",
|
||||
"block": "create:train_door",
|
||||
"properties": {
|
||||
"half": "lower"
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "create:train_door"
|
||||
}
|
||||
],
|
||||
"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": "create:train_trapdoor"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"ingredients": [
|
||||
{
|
||||
"tag": "minecraft:wooden_doors"
|
||||
},
|
||||
{
|
||||
"tag": "forge:plates/brass"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "create:train_door"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"ingredients": [
|
||||
{
|
||||
"tag": "minecraft:wooden_trapdoors"
|
||||
},
|
||||
{
|
||||
"tag": "forge:plates/brass"
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"item": "create:train_trapdoor"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:train_door"
|
||||
]
|
||||
}
|
|
@ -119,6 +119,8 @@
|
|||
"create:small_bogey",
|
||||
"create:large_bogey",
|
||||
"create:controls",
|
||||
"create:train_door",
|
||||
"create:train_trapdoor",
|
||||
"create:item_vault",
|
||||
"create:andesite_funnel",
|
||||
"create:andesite_belt_funnel",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:train_trapdoor"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:train_door"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:train_door"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:train_trapdoor"
|
||||
]
|
||||
}
|
|
@ -66,6 +66,8 @@ import com.simibubi.create.content.contraptions.components.structureMovement.cha
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.DoorMovingInteraction;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.TrapdoorMovingInteraction;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsInteractionBehaviour;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.interaction.controls.ControlsMovementBehaviour;
|
||||
|
@ -135,6 +137,8 @@ import com.simibubi.create.content.curiosities.bell.HauntedBellMovementBehaviour
|
|||
import com.simibubi.create.content.curiosities.bell.PeculiarBellBlock;
|
||||
import com.simibubi.create.content.curiosities.deco.MetalLadderBlock;
|
||||
import com.simibubi.create.content.curiosities.deco.PlacardBlock;
|
||||
import com.simibubi.create.content.curiosities.deco.TrainDoorBlock;
|
||||
import com.simibubi.create.content.curiosities.deco.TrainTrapdoorBlock;
|
||||
import com.simibubi.create.content.curiosities.girder.ConnectedGirderModel;
|
||||
import com.simibubi.create.content.curiosities.girder.GirderBlock;
|
||||
import com.simibubi.create.content.curiosities.girder.GirderBlockStateGenerator;
|
||||
|
@ -226,6 +230,7 @@ import com.tterrag.registrate.util.entry.BlockEntry;
|
|||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.core.Direction.Axis;
|
||||
import net.minecraft.core.Direction.AxisDirection;
|
||||
import net.minecraft.data.loot.BlockLoot;
|
||||
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
|
@ -1550,6 +1555,42 @@ public class AllBlocks {
|
|||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<TrainDoorBlock> TRAIN_DOOR = REGISTRATE.block("train_door", TrainDoorBlock::new)
|
||||
.initialProperties(Material.NETHER_WOOD) // for villager AI..
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.blockstate((c, p) -> {
|
||||
ModelFile bottom = AssetLookup.partialBaseModel(c, p, "bottom");
|
||||
ModelFile top = AssetLookup.partialBaseModel(c, p, "top");
|
||||
p.doorBlock(c.get(), bottom, bottom, top, top);
|
||||
})
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(pickaxeOnly())
|
||||
.onRegister(addInteractionBehaviour(new DoorMovingInteraction()))
|
||||
.tag(BlockTags.DOORS)
|
||||
.tag(BlockTags.WOODEN_DOORS) // for villager AI
|
||||
.loot((lr, block) -> lr.add(block, BlockLoot.createDoorTable(block)))
|
||||
.item()
|
||||
.tag(ItemTags.DOORS)
|
||||
.model((c, p) -> p.blockSprite(c, p.modLoc("item/train_door")))
|
||||
.build()
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<TrainTrapdoorBlock> TRAIN_TRAPDOOR =
|
||||
REGISTRATE.block("train_trapdoor", TrainTrapdoorBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_CYAN))
|
||||
.properties(p -> p.sound(SoundType.NETHERITE_BLOCK))
|
||||
.blockstate((c, p) -> p.trapdoorBlock(c.get(), AssetLookup.partialBaseModel(c, p, "bottom"),
|
||||
AssetLookup.partialBaseModel(c, p, "top"), AssetLookup.partialBaseModel(c, p, "open"), true))
|
||||
.transform(pickaxeOnly())
|
||||
.tag(BlockTags.TRAPDOORS)
|
||||
.onRegister(addInteractionBehaviour(new TrapdoorMovingInteraction()))
|
||||
.item()
|
||||
.tag(ItemTags.TRAPDOORS)
|
||||
.build()
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<ItemVaultBlock> ITEM_VAULT = REGISTRATE.block("item_vault", ItemVaultBlock::new)
|
||||
.initialProperties(SharedProperties::softMetal)
|
||||
.properties(p -> p.color(MaterialColor.TERRACOTTA_BLUE))
|
||||
|
|
|
@ -135,6 +135,8 @@ import com.simibubi.create.content.curiosities.bell.HauntedBellTileEntity;
|
|||
import com.simibubi.create.content.curiosities.bell.PeculiarBellTileEntity;
|
||||
import com.simibubi.create.content.curiosities.deco.PlacardRenderer;
|
||||
import com.simibubi.create.content.curiosities.deco.PlacardTileEntity;
|
||||
import com.simibubi.create.content.curiosities.deco.SlidingDoorRenderer;
|
||||
import com.simibubi.create.content.curiosities.deco.SlidingDoorTileEntity;
|
||||
import com.simibubi.create.content.curiosities.toolbox.ToolBoxInstance;
|
||||
import com.simibubi.create.content.curiosities.toolbox.ToolboxRenderer;
|
||||
import com.simibubi.create.content.curiosities.toolbox.ToolboxTileEntity;
|
||||
|
@ -793,6 +795,12 @@ public class AllTileEntities {
|
|||
.renderer(() -> StationRenderer::new)
|
||||
.validBlocks(AllBlocks.TRACK_STATION)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<SlidingDoorTileEntity> SLIDING_DOOR = Create.registrate()
|
||||
.tileEntity("sliding_door", SlidingDoorTileEntity::new)
|
||||
.renderer(() -> SlidingDoorRenderer::new)
|
||||
.validBlocks(AllBlocks.TRAIN_DOOR)
|
||||
.register();
|
||||
|
||||
public static final BlockEntityEntry<FlapDisplayTileEntity> FLAP_DISPLAY = Create.registrate()
|
||||
.tileEntity("flap_display", FlapDisplayTileEntity::new)
|
||||
|
|
|
@ -131,7 +131,10 @@ public class PlacardBlock extends FaceAttachedHorizontalDirectionalBlock
|
|||
return InteractionResult.FAIL;
|
||||
if (pState.getValue(POWERED))
|
||||
return InteractionResult.FAIL;
|
||||
if (!FilterItem.test(pLevel, inHand, inBlock)) {
|
||||
|
||||
boolean test = inBlock.getItem() instanceof FilterItem ? FilterItem.test(pLevel, inHand, inBlock)
|
||||
: ItemHandlerHelper.canItemStacksStack(inHand, inBlock);
|
||||
if (!test) {
|
||||
AllSoundEvents.DENY.play(pLevel, null, pPos, 1, 1);
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package com.simibubi.create.content.curiosities.deco;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.simibubi.create.foundation.render.CachedBufferer;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.level.block.DoorBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.DoorHingeSide;
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
||||
public class SlidingDoorRenderer extends SafeTileEntityRenderer<SlidingDoorTileEntity> {
|
||||
|
||||
public SlidingDoorRenderer(Context context) {}
|
||||
|
||||
@Override
|
||||
protected void renderSafe(SlidingDoorTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
int light, int overlay) {
|
||||
BlockState blockState = te.getBlockState();
|
||||
if (!te.shouldRenderSpecial(blockState))
|
||||
return;
|
||||
|
||||
Direction facing = blockState.getValue(DoorBlock.FACING);
|
||||
Direction movementDirection = facing.getClockWise();
|
||||
|
||||
if (blockState.getValue(DoorBlock.HINGE) == DoorHingeSide.LEFT)
|
||||
movementDirection = movementDirection.getOpposite();
|
||||
|
||||
float value = te.animation.getValue(partialTicks);
|
||||
float value2 = Mth.clamp(value * 10, 0, 1);
|
||||
|
||||
Vec3 offset = Vec3.atLowerCornerOf(movementDirection.getNormal())
|
||||
.scale(value * value * 13 / 16f)
|
||||
.add(Vec3.atLowerCornerOf(facing.getNormal())
|
||||
.scale(value2 * 1 / 32f));
|
||||
|
||||
VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped());
|
||||
for (DoubleBlockHalf half : DoubleBlockHalf.values()) {
|
||||
CachedBufferer.block(blockState.setValue(DoorBlock.OPEN, false)
|
||||
.setValue(DoorBlock.HALF, half))
|
||||
.translate(0, half == DoubleBlockHalf.UPPER ? 1 : 0, 0)
|
||||
.translate(offset)
|
||||
.light(light)
|
||||
.renderInto(ms, vb);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package com.simibubi.create.content.curiosities.deco;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.level.block.DoorBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class SlidingDoorTileEntity extends SmartTileEntity {
|
||||
|
||||
LerpedFloat animation;
|
||||
int bridgeTicks;
|
||||
|
||||
public SlidingDoorTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
animation = LerpedFloat.linear()
|
||||
.startWithValue(isOpen(state) ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
boolean open = isOpen(getBlockState());
|
||||
boolean wasSettled = animation.settled();
|
||||
animation.chase(open ? 1 : 0, .15f, Chaser.LINEAR);
|
||||
animation.tickChaser();
|
||||
|
||||
if (level.isClientSide()) {
|
||||
if (bridgeTicks < 2 && open)
|
||||
bridgeTicks++;
|
||||
else if (bridgeTicks > 0 && !open && isVisible(getBlockState()))
|
||||
bridgeTicks--;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!open && !wasSettled && animation.settled() && !isVisible(getBlockState()))
|
||||
showBlockModel();
|
||||
}
|
||||
|
||||
protected boolean isVisible(BlockState state) {
|
||||
return state.getOptionalValue(TrainDoorBlock.VISIBLE)
|
||||
.orElse(true);
|
||||
}
|
||||
|
||||
protected boolean shouldRenderSpecial(BlockState state) {
|
||||
return !isVisible(state) || bridgeTicks != 0;
|
||||
}
|
||||
|
||||
protected void showBlockModel() {
|
||||
level.setBlock(worldPosition, getBlockState().setValue(TrainDoorBlock.VISIBLE, true), 3);
|
||||
level.playSound(null, worldPosition, SoundEvents.IRON_DOOR_CLOSE, SoundSource.BLOCKS, .5f, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<TileEntityBehaviour> behaviours) {}
|
||||
|
||||
public static boolean isOpen(BlockState state) {
|
||||
return state.getOptionalValue(DoorBlock.OPEN)
|
||||
.orElse(false);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,225 @@
|
|||
package com.simibubi.create.content.curiosities.deco;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
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.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.DoorBlock;
|
||||
import net.minecraft.world.level.block.RenderShape;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.level.block.state.properties.DoorHingeSide;
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
|
||||
import net.minecraft.world.level.gameevent.GameEvent;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
|
||||
public class TrainDoorBlock extends DoorBlock implements IWrenchable, ITE<SlidingDoorTileEntity> {
|
||||
|
||||
protected static final VoxelShape SE_AABB = Block.box(0.0D, 0.0D, -13.0D, 3.0D, 16.0D, 3.0D);
|
||||
protected static final VoxelShape ES_AABB = Block.box(-13.0D, 0.0D, 0.0D, 3.0D, 16.0D, 3.0D);
|
||||
|
||||
protected static final VoxelShape NW_AABB = Block.box(13.0D, 0.0D, 13.0D, 16.0D, 16.0D, 29.0D);
|
||||
protected static final VoxelShape WN_AABB = Block.box(13.0D, 0.0D, 13.0D, 29.0D, 16.0D, 16.0D);
|
||||
|
||||
protected static final VoxelShape SW_AABB = Block.box(13.0D, 0.0D, -13.0D, 16.0D, 16.0D, 3.0D);
|
||||
protected static final VoxelShape WS_AABB = Block.box(13.0D, 0.0D, 0.0D, 29.0D, 16.0D, 3.0D);
|
||||
|
||||
protected static final VoxelShape NE_AABB = Block.box(0.0D, 0.0D, 13.0D, 3.0D, 16.0D, 29.0D);
|
||||
protected static final VoxelShape EN_AABB = Block.box(-13.0D, 0.0D, 13.0D, 3.0D, 16.0D, 16.0D);
|
||||
|
||||
public static final BooleanProperty VISIBLE = BooleanProperty.create("visible");
|
||||
|
||||
public TrainDoorBlock(Properties p_52737_) {
|
||||
super(p_52737_);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(Builder<Block, BlockState> pBuilder) {
|
||||
super.createBlockStateDefinition(pBuilder.add(VISIBLE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) {
|
||||
if (!pState.getValue(OPEN) && pState.getValue(VISIBLE))
|
||||
return super.getShape(pState, pLevel, pPos, pContext);
|
||||
|
||||
Direction direction = pState.getValue(FACING);
|
||||
boolean hinge = pState.getValue(HINGE) == DoorHingeSide.RIGHT;
|
||||
|
||||
return switch (direction) {
|
||||
case SOUTH -> (hinge ? ES_AABB : WS_AABB);
|
||||
case WEST -> (hinge ? SW_AABB : NW_AABB);
|
||||
case NORTH -> (hinge ? WN_AABB : EN_AABB);
|
||||
default -> (hinge ? NE_AABB : SE_AABB);
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getInteractionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos) {
|
||||
return getShape(pState, pLevel, pPos, CollisionContext.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
|
||||
BlockState stateForPlacement = super.getStateForPlacement(pContext);
|
||||
if (stateForPlacement != null && stateForPlacement.getValue(OPEN))
|
||||
return stateForPlacement.setValue(VISIBLE, false);
|
||||
return stateForPlacement;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel,
|
||||
BlockPos pCurrentPos, BlockPos pFacingPos) {
|
||||
BlockState blockState = super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos);
|
||||
if (blockState.isAir())
|
||||
return blockState;
|
||||
DoubleBlockHalf doubleblockhalf = blockState.getValue(HALF);
|
||||
if (pFacing.getAxis() == Direction.Axis.Y
|
||||
&& doubleblockhalf == DoubleBlockHalf.LOWER == (pFacing == Direction.UP)) {
|
||||
return pFacingState.is(this) && pFacingState.getValue(HALF) != doubleblockhalf
|
||||
? blockState.setValue(VISIBLE, pFacingState.getValue(VISIBLE))
|
||||
: Blocks.AIR.defaultBlockState();
|
||||
}
|
||||
return blockState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOpen(@Nullable Entity entity, Level level, BlockState state, BlockPos pos, boolean open) {
|
||||
if (!state.is(this))
|
||||
return;
|
||||
if (state.getValue(OPEN) == open)
|
||||
return;
|
||||
BlockState changedState = state.setValue(OPEN, open);
|
||||
if (open)
|
||||
changedState = changedState.setValue(VISIBLE, false);
|
||||
level.setBlock(pos, changedState, 10);
|
||||
|
||||
DoorHingeSide hinge = changedState.getValue(HINGE);
|
||||
Direction facing = changedState.getValue(FACING);
|
||||
BlockPos otherPos =
|
||||
pos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise());
|
||||
BlockState otherDoor = level.getBlockState(otherPos);
|
||||
if (isDoubleDoor(changedState, hinge, facing, otherDoor))
|
||||
setOpen(entity, level, otherDoor, otherPos, open);
|
||||
|
||||
this.playSound(level, pos, open);
|
||||
level.gameEvent(entity, open ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos,
|
||||
boolean pIsMoving) {
|
||||
boolean isPowered = pLevel.hasNeighborSignal(pPos) || pLevel.hasNeighborSignal(
|
||||
pPos.relative(pState.getValue(HALF) == DoubleBlockHalf.LOWER ? Direction.UP : Direction.DOWN));
|
||||
if (defaultBlockState().is(pBlock))
|
||||
return;
|
||||
if (isPowered == pState.getValue(POWERED))
|
||||
return;
|
||||
|
||||
BlockState changedState = pState.setValue(POWERED, Boolean.valueOf(isPowered))
|
||||
.setValue(OPEN, Boolean.valueOf(isPowered));
|
||||
if (isPowered)
|
||||
changedState = changedState.setValue(VISIBLE, false);
|
||||
|
||||
if (isPowered != pState.getValue(OPEN)) {
|
||||
this.playSound(pLevel, pPos, isPowered);
|
||||
pLevel.gameEvent(isPowered ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pPos);
|
||||
|
||||
DoorHingeSide hinge = changedState.getValue(HINGE);
|
||||
Direction facing = changedState.getValue(FACING);
|
||||
BlockPos otherPos =
|
||||
pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise());
|
||||
BlockState otherDoor = pLevel.getBlockState(otherPos);
|
||||
if (isDoubleDoor(changedState, hinge, facing, otherDoor)) {
|
||||
otherDoor = otherDoor.setValue(POWERED, Boolean.valueOf(isPowered))
|
||||
.setValue(OPEN, Boolean.valueOf(isPowered));
|
||||
if (isPowered)
|
||||
otherDoor = otherDoor.setValue(VISIBLE, false);
|
||||
pLevel.setBlock(otherPos, otherDoor, 2);
|
||||
}
|
||||
}
|
||||
|
||||
pLevel.setBlock(pPos, changedState, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
|
||||
BlockHitResult pHit) {
|
||||
|
||||
pState = pState.cycle(OPEN);
|
||||
if (pState.getValue(OPEN))
|
||||
pState = pState.setValue(VISIBLE, false);
|
||||
pLevel.setBlock(pPos, pState, 10);
|
||||
pLevel.gameEvent(pPlayer, isOpen(pState) ? GameEvent.BLOCK_OPEN : GameEvent.BLOCK_CLOSE, pPos);
|
||||
|
||||
DoorHingeSide hinge = pState.getValue(HINGE);
|
||||
Direction facing = pState.getValue(FACING);
|
||||
BlockPos otherPos =
|
||||
pPos.relative(hinge == DoorHingeSide.LEFT ? facing.getClockWise() : facing.getCounterClockWise());
|
||||
BlockState otherDoor = pLevel.getBlockState(otherPos);
|
||||
if (isDoubleDoor(pState, hinge, facing, otherDoor))
|
||||
use(otherDoor, pLevel, otherPos, pPlayer, pHand, pHit);
|
||||
else if (pState.getValue(OPEN))
|
||||
pLevel.levelEvent(pPlayer, getOpenSound(), pPos, 0);
|
||||
|
||||
return InteractionResult.sidedSuccess(pLevel.isClientSide);
|
||||
}
|
||||
|
||||
private boolean isDoubleDoor(BlockState pState, DoorHingeSide hinge, Direction facing, BlockState otherDoor) {
|
||||
return otherDoor.getBlock() == pState.getBlock() && otherDoor.getValue(HINGE) != hinge
|
||||
&& otherDoor.getValue(FACING) == facing && otherDoor.getValue(OPEN) != pState.getValue(OPEN)
|
||||
&& otherDoor.getValue(HALF) == pState.getValue(HALF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RenderShape getRenderShape(BlockState pState) {
|
||||
return pState.getValue(VISIBLE) ? RenderShape.MODEL : RenderShape.ENTITYBLOCK_ANIMATED;
|
||||
}
|
||||
|
||||
private void playSound(Level pLevel, BlockPos pPos, boolean pIsOpening) {
|
||||
if (pIsOpening)
|
||||
pLevel.levelEvent((Player) null, this.getOpenSound(), pPos, 0);
|
||||
}
|
||||
|
||||
private int getOpenSound() {
|
||||
return 1005;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
|
||||
if (state.getValue(HALF) == DoubleBlockHalf.UPPER)
|
||||
return null;
|
||||
return ITE.super.newBlockEntity(pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<SlidingDoorTileEntity> getTileEntityClass() {
|
||||
return SlidingDoorTileEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntityType<? extends SlidingDoorTileEntity> getTileEntityType() {
|
||||
return AllTileEntities.SLIDING_DOOR.get();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.simibubi.create.content.curiosities.deco;
|
||||
|
||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.TrapDoorBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
|
||||
public class TrainTrapdoorBlock extends TrapDoorBlock implements IWrenchable {
|
||||
|
||||
public TrainTrapdoorBlock(Properties p_57526_) {
|
||||
super(p_57526_);
|
||||
}
|
||||
|
||||
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
|
||||
BlockHitResult pHit) {
|
||||
pState = pState.cycle(OPEN);
|
||||
pLevel.setBlock(pPos, pState, 2);
|
||||
if (pState.getValue(WATERLOGGED))
|
||||
pLevel.scheduleTick(pPos, Fluids.WATER, Fluids.WATER.getTickDelay(pLevel));
|
||||
playSound(pPlayer, pLevel, pPos, pState.getValue(OPEN));
|
||||
return InteractionResult.sidedSuccess(pLevel.isClientSide);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.simibubi.create.foundation.block;
|
||||
|
||||
import com.simibubi.create.content.curiosities.deco.TrainDoorBlock;
|
||||
import com.simibubi.create.content.logistics.trains.track.TrackBlock;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.RaycastHelper;
|
||||
|
@ -47,7 +48,8 @@ public class BigOutlines {
|
|||
BlockState blockState = mc.level.getBlockState(p);
|
||||
|
||||
// Could be a dedicated interface for big blocks
|
||||
if (!(blockState.getBlock() instanceof TrackBlock))
|
||||
if (!(blockState.getBlock() instanceof TrackBlock)
|
||||
&& !(blockState.getBlock() instanceof TrainDoorBlock))
|
||||
continue;
|
||||
|
||||
BlockHitResult hit = blockState.getInteractionShape(mc.level, p)
|
||||
|
|
|
@ -304,6 +304,16 @@ public class StandardRecipeGen extends CreateRecipeProvider {
|
|||
.viaShapeless(b -> b.requires(Items.ITEM_FRAME)
|
||||
.requires(I.brassSheet())),
|
||||
|
||||
TRAIN_DOOR = create(AllBlocks.TRAIN_DOOR).returns(1)
|
||||
.unlockedByTag(() -> I.brass())
|
||||
.viaShapeless(b -> b.requires(ItemTags.WOODEN_DOORS)
|
||||
.requires(I.brassSheet())),
|
||||
|
||||
TRAIN_TRAPDOOR = create(AllBlocks.TRAIN_TRAPDOOR).returns(1)
|
||||
.unlockedByTag(() -> I.brass())
|
||||
.viaShapeless(b -> b.requires(ItemTags.WOODEN_TRAPDOORS)
|
||||
.requires(I.brassSheet())),
|
||||
|
||||
ANALOG_LEVER = create(AllBlocks.ANALOG_LEVER).unlockedBy(I::andesite)
|
||||
.viaShaped(b -> b.define('S', I.andesiteCasing())
|
||||
.define('P', Tags.Items.RODS_WOODEN)
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"0": "create:block/train_door_side",
|
||||
"2": "create:block/train_door_bottom",
|
||||
"particle": "create:block/train_trapdoor"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [3, 16, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 12, 16, 15], "rotation": 270, "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 16, 16], "texture": "#2"},
|
||||
"south": {"uv": [0, 4, 16, 7], "rotation": 270, "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
|
||||
"down": {"uv": [0, 8, 16, 11], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"0": "create:block/train_door_side",
|
||||
"2": "create:block/train_door_top",
|
||||
"particle": "create:block/train_trapdoor"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [3, 16, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 12, 16, 15], "rotation": 90, "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 16, 16], "texture": "#2"},
|
||||
"south": {"uv": [0, 4, 16, 7], "rotation": 90, "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
|
||||
"up": {"uv": [0, 0, 16, 3], "rotation": 90, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:block/train_trapdoor/block_bottom"
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/train_door_side",
|
||||
"1": "create:block/train_trapdoor",
|
||||
"particle": "create:block/train_trapdoor"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [16, 3, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"0": "create:block/train_door_side",
|
||||
"1": "create:block/train_trapdoor",
|
||||
"particle": "create:block/train_trapdoor"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 13],
|
||||
"to": [16, 16, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
|
||||
"east": {"uv": [0, 0, 16, 3], "rotation": 90, "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
|
||||
"west": {"uv": [0, 0, 16, 3], "rotation": 270, "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"down": {"uv": [0, 0, 16, 3], "rotation": 180, "texture": "#0"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"parent": "block/block",
|
||||
"credit": "Made with Blockbench",
|
||||
"textures": {
|
||||
"0": "create:block/train_door_side",
|
||||
"1": "create:block/train_trapdoor",
|
||||
"particle": "create:block/train_trapdoor"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 13, 0],
|
||||
"to": [16, 16, 16],
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"east": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"south": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"west": {"uv": [0, 0, 16, 3], "texture": "#0"},
|
||||
"up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
|
||||
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 338 B |
Binary file not shown.
After Width: | Height: | Size: 233 B |
Binary file not shown.
After Width: | Height: | Size: 350 B |
Binary file not shown.
After Width: | Height: | Size: 319 B |
BIN
src/main/resources/assets/create/textures/item/train_door.png
Normal file
BIN
src/main/resources/assets/create/textures/item/train_door.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 328 B |
Loading…
Reference in a new issue