diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 7e6225ab8..f1e064766 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -49,6 +49,7 @@ b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json 1f33834c685e3243882acfe20183fe64dfa872be assets/create/blockstates/clutch.json e5e3757e99c139d67b2a70288466d8a74d818841 assets/create/blockstates/cogwheel.json 36f54136a7756c97f71bc6b47ef4e8e575e72879 assets/create/blockstates/content_observer.json +c309aead7e052aef770baebfb4d0e65dfd257b66 assets/create/blockstates/controller_rail.json f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets/create/blockstates/copper_block.json cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets/create/blockstates/copper_casing.json 3355a852cdc717e257ca19b3db836068964733e3 assets/create/blockstates/copper_ore.json @@ -137,7 +138,7 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets/create/blockstates/fancy_scoria_ fc9ac0a7e7191b93516719455a17177fa6524ecc assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json -fe9169716dd21a81a3710a89f0a9b7ea4dcd4d51 assets/create/blockstates/fluid_pipe.json +3d97226b5e8d8f70ed08e45e78db1faf78d5e28b assets/create/blockstates/fluid_pipe.json f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json 5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json @@ -393,17 +394,17 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -67f9a92292948241e01ce6043445b2b3ddcf5350 assets/create/lang/en_ud.json -64119d621b012cb67a88a72297cfbe64e276bd76 assets/create/lang/en_us.json -276e7bf74972ab6a32ffa1fcc91bb8adbfca7a45 assets/create/lang/unfinished/de_de.json -37cda56935f196f3c531afb0bf001c0ba56053c6 assets/create/lang/unfinished/fr_fr.json -96592f7ce4ed4ede69c3f42b5870d1b805f1fc23 assets/create/lang/unfinished/it_it.json -84b5c9d2586f1dd4067cdb60568420d151589e7f assets/create/lang/unfinished/ja_jp.json -4171adac242132ab5b8da5d362eeb6b9fae03213 assets/create/lang/unfinished/ko_kr.json -6798dd2c517ad9a201175fdbba5108b346478a44 assets/create/lang/unfinished/nl_nl.json -8c9358acc37b949dfc8c15fc750fd6f13a8104a3 assets/create/lang/unfinished/pt_br.json -fff47b09b35b20294dbc814fceb05430c2eec9af assets/create/lang/unfinished/ru_ru.json -c1481426852c9a0e651342ecaea541aa300a5168 assets/create/lang/unfinished/zh_cn.json +458ea82f1528fc105ae5511619a8673dbd71101f assets/create/lang/en_ud.json +0b031873dee4854906c42ca74431796809529979 assets/create/lang/en_us.json +e0edef1fd82761c99556a8f9f968817c9d00a389 assets/create/lang/unfinished/de_de.json +80bd81070645f36dc5a4a3355985b68aadee932c assets/create/lang/unfinished/fr_fr.json +74e0f3f8635be43ae96f199374d95b2e4b467c46 assets/create/lang/unfinished/it_it.json +d2d2239b0c6a750a0aa0cb9fc6e190522202b5e7 assets/create/lang/unfinished/ja_jp.json +71a75e1739dea9a0d26a6c3cb07c9c1f5e3bcd00 assets/create/lang/unfinished/ko_kr.json +036ace865f424c6d38330a5dda3783df6fc9feac assets/create/lang/unfinished/nl_nl.json +53dddb1c29cf6739750567350c89f7ae01cda588 assets/create/lang/unfinished/pt_br.json +03d1bf6e868f87fe27704acdde55e75f5101acd9 assets/create/lang/unfinished/ru_ru.json +72c0f7e67c59b4e3f13c348d007044d86afb7e75 assets/create/lang/unfinished/zh_cn.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets/create/models/block/acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets/create/models/block/acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets/create/models/block/acacia_window_pane_noside_alt.json @@ -1157,6 +1158,7 @@ c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bea 0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets/create/models/item/clutch.json dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json 7717e3b21cff39f497f07687c70c1fa40eaa756d assets/create/models/item/content_observer.json +17a8889e54d6e82fd1a6eec9e87c46feba903cb1 assets/create/models/item/controller_rail.json 965a90a882d85dba93b30af9bce7ecf8e68ce747 assets/create/models/item/copper_block.json 759bcb5fe7dfdd628716f9b4ff19a5ab00393381 assets/create/models/item/copper_casing.json c5bcfba46f5824654dedaa2c5d5f42deb29e3baf assets/create/models/item/copper_ingot.json @@ -2196,6 +2198,7 @@ adde89e46b12de1eee6fd0c5cb98c5f45feefc15 data/create/loot_tables/blocks/chiseled d76113310fc56eca6382d44df174096f2210d416 data/create/loot_tables/blocks/clutch.json 673ba3a5deae9133b917d16c9eb87fe4c2873c8a data/create/loot_tables/blocks/cogwheel.json 096af6b5df6e87d36cb936eea9b00982a554f4af data/create/loot_tables/blocks/content_observer.json +80c2cb21714651116a71f449368c06bb22e841ce data/create/loot_tables/blocks/controller_rail.json f38802b919c49f162f102d6e5d94113f05bf4ab1 data/create/loot_tables/blocks/copper_block.json 5a65a18ea787130ac7b8f5652bfa5ed187446649 data/create/loot_tables/blocks/copper_casing.json 31a51237763c374b7cdf39b9b62c14e965871047 data/create/loot_tables/blocks/copper_ore.json @@ -3316,7 +3319,7 @@ ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/br f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/copper.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/items/storage_blocks/zinc.json 31424fe956db0354a9f24c61baf977a2961c8db6 data/minecraft/tags/blocks/impermeable.json -9dadc647e17b6262c13b6d8eda9139e30ce7e7d0 data/minecraft/tags/blocks/rails.json +378b01e288301e0835d3d25167889077a2070780 data/minecraft/tags/blocks/rails.json 29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/blocks/slabs.json 0d188ad2c33d10ee8f0d455c4e63a4460a8302fb data/minecraft/tags/blocks/stairs.json 92584f914c53e00c111f9ff5e3894e2e3594946b data/minecraft/tags/blocks/walls.json diff --git a/src/generated/resources/assets/create/blockstates/controller_rail.json b/src/generated/resources/assets/create/blockstates/controller_rail.json new file mode 100644 index 000000000..65f6ee81b --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/controller_rail.json @@ -0,0 +1,724 @@ +{ + "variants": { + "backwards=false,power=0,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_off" + }, + "backwards=true,power=0,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_off", + "y": 180 + }, + "backwards=false,power=1,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=1,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=2,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=2,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=3,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=3,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=4,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=4,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=5,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=5,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=6,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=6,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=7,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=7,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=8,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=8,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=9,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=9,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=10,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=10,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=11,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=11,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=12,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=12,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=13,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=13,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=14,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog" + }, + "backwards=true,power=14,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 180 + }, + "backwards=false,power=15,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_on" + }, + "backwards=true,power=15,shape=north_south": { + "model": "create:block/controller_rail/block_north_south_on", + "y": 180 + }, + "backwards=false,power=0,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_off", + "y": 270 + }, + "backwards=true,power=0,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_off", + "y": 90 + }, + "backwards=false,power=1,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=1,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=2,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=2,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=3,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=3,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=4,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=4,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=5,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=5,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=6,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=6,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=7,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=7,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=8,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=8,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=9,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=9,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=10,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=10,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=11,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=11,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=12,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=12,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=13,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=13,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=14,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 270 + }, + "backwards=true,power=14,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_analog", + "y": 90 + }, + "backwards=false,power=15,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_on", + "y": 270 + }, + "backwards=true,power=15,shape=east_west": { + "model": "create:block/controller_rail/block_north_south_on", + "y": 90 + }, + "backwards=false,power=0,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_off", + "y": 90 + }, + "backwards=true,power=0,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_off", + "y": 270 + }, + "backwards=false,power=1,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=1,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=2,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=2,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=3,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=3,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=4,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=4,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=5,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=5,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=6,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=6,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=7,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=7,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=8,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=8,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=9,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=9,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=10,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=10,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=11,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=11,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=12,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=12,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=13,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=13,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=14,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 90 + }, + "backwards=true,power=14,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 270 + }, + "backwards=false,power=15,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north_on", + "y": 90 + }, + "backwards=true,power=15,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south_on", + "y": 270 + }, + "backwards=false,power=0,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_off", + "y": 270 + }, + "backwards=true,power=0,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_off", + "y": 90 + }, + "backwards=false,power=1,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=1,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=2,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=2,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=3,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=3,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=4,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=4,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=5,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=5,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=6,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=6,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=7,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=7,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=8,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=8,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=9,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=9,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=10,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=10,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=11,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=11,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=12,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=12,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=13,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=13,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=14,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 270 + }, + "backwards=true,power=14,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 90 + }, + "backwards=false,power=15,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north_on", + "y": 270 + }, + "backwards=true,power=15,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south_on", + "y": 90 + }, + "backwards=false,power=0,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_off" + }, + "backwards=true,power=0,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_off", + "y": 180 + }, + "backwards=false,power=1,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=1,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=2,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=2,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=3,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=3,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=4,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=4,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=5,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=5,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=6,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=6,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=7,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=7,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=8,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=8,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=9,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=9,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=10,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=10,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=11,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=11,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=12,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=12,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=13,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=13,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=14,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_analog" + }, + "backwards=true,power=14,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_analog", + "y": 180 + }, + "backwards=false,power=15,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north_on" + }, + "backwards=true,power=15,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south_on", + "y": 180 + }, + "backwards=false,power=0,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_off", + "y": 180 + }, + "backwards=true,power=0,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_off" + }, + "backwards=false,power=1,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=1,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=2,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=2,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=3,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=3,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=4,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=4,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=5,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=5,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=6,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=6,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=7,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=7,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=8,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=8,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=9,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=9,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=10,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=10,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=11,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=11,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=12,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=12,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=13,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=13,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=14,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_analog", + "y": 180 + }, + "backwards=true,power=14,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_analog" + }, + "backwards=false,power=15,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north_on", + "y": 180 + }, + "backwards=true,power=15,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south_on" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index 3b646b920..a4cffcde7 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -303,8 +303,8 @@ { "when": { "west": "false", - "east": "true", "down": "false", + "east": "true", "up": "true" }, "apply": { @@ -314,8 +314,8 @@ { "when": { "west": "true", - "east": "false", "down": "false", + "east": "false", "up": "true" }, "apply": { @@ -325,8 +325,8 @@ { "when": { "west": "false", - "east": "true", "down": "true", + "east": "true", "up": "false" }, "apply": { @@ -336,8 +336,8 @@ { "when": { "west": "true", - "east": "false", "down": "true", + "east": "false", "up": "false" }, "apply": { @@ -347,8 +347,8 @@ { "when": { "west": "false", - "east": "false", "down": "true", + "east": "false", "up": "true" }, "apply": { @@ -358,8 +358,8 @@ { "when": { "west": "false", - "east": "false", "down": "false", + "east": "false", "up": "true" }, "apply": { @@ -369,8 +369,8 @@ { "when": { "west": "false", - "east": "false", "down": "true", + "east": "false", "up": "false" }, "apply": { @@ -380,8 +380,8 @@ { "when": { "west": "true", - "east": "true", "down": "false", + "east": "true", "up": "false" }, "apply": { @@ -391,8 +391,8 @@ { "when": { "west": "false", - "east": "true", "down": "false", + "east": "true", "up": "false" }, "apply": { @@ -402,8 +402,8 @@ { "when": { "west": "true", - "east": "false", "down": "false", + "east": "false", "up": "false" }, "apply": { @@ -413,8 +413,8 @@ { "when": { "west": "false", - "east": "false", "down": "false", + "east": "false", "up": "false" }, "apply": { diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index a98ffe1fb..d85a1a98e 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -50,6 +50,7 @@ "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", "block.create.content_observer": "\u0279\u01DD\u028C\u0279\u01DDsqO \u0287u\u01DD\u0287uo\u0186", + "block.create.controller_rail": "\u05DF\u0131\u0250\u1D1A \u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186", "block.create.copper_block": "\u029E\u0254o\u05DF\u15FA \u0279\u01DDddo\u0186", "block.create.copper_casing": "bu\u0131s\u0250\u0186 \u0279\u01DDddo\u0186", "block.create.copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index d5687e841..de6eeee0f 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -53,6 +53,7 @@ "block.create.clutch": "Clutch", "block.create.cogwheel": "Cogwheel", "block.create.content_observer": "Content Observer", + "block.create.controller_rail": "Controller Rail", "block.create.copper_block": "Copper Block", "block.create.copper_casing": "Copper Casing", "block.create.copper_ore": "Copper Ore", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index 7f8d73ee7..aaea64458 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1050", + "_": "Missing Localizations: 1051", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "Kupplung", "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "UNLOCALIZED: Copper Block", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 28e47b355..4ac7ff1cc 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 680", + "_": "Missing Localizations: 681", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "Embrayage", "block.create.cogwheel": "Roue dentée", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "Bloc de cuivre", "block.create.copper_casing": "Boîtier en cuivre", "block.create.copper_ore": "Minerai de cuivre", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 3560dd163..ef2891eb0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 664", + "_": "Missing Localizations: 665", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "Frizione", "block.create.cogwheel": "Ruota Dentata", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "Blocco di Rame", "block.create.copper_casing": "Involucro di Rame", "block.create.copper_ore": "Rame Grezzo", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index 305b933c1..e86ba2f46 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 663", + "_": "Missing Localizations: 664", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "クラッチ", "block.create.cogwheel": "歯車", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "銅ブロック", "block.create.copper_casing": "銅ケーシング", "block.create.copper_ore": "銅鉱石", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index d043a647f..cd047bf0d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 664", + "_": "Missing Localizations: 665", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "클러치", "block.create.cogwheel": "톱나버퀴", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "구리 블럭", "block.create.copper_casing": "구리 케이스", "block.create.copper_ore": "구리 광석", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index 549c4cda9..11f631734 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 991", + "_": "Missing Localizations: 992", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "Koppeling", "block.create.cogwheel": "Tandwiel", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "UNLOCALIZED: Copper Block", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 85ce6c924..8af150962 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1057", + "_": "Missing Localizations: 1058", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "Embreagem", "block.create.cogwheel": "Roda Dentada", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "UNLOCALIZED: Copper Block", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index 6a6b3474c..80ae82a39 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 333", + "_": "Missing Localizations: 334", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "Сцепление", "block.create.cogwheel": "Шестерня", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "Медный блок", "block.create.copper_casing": "Медный корпус", "block.create.copper_ore": "Медная руда", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index d4245aa75..09b9dbaac 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 346", + "_": "Missing Localizations: 347", "_": "->------------------------] Game Elements [------------------------<-", @@ -54,6 +54,7 @@ "block.create.clutch": "离合器", "block.create.cogwheel": "齿轮", "block.create.content_observer": "UNLOCALIZED: Content Observer", + "block.create.controller_rail": "UNLOCALIZED: Controller Rail", "block.create.copper_block": "铜块", "block.create.copper_casing": "铜机壳", "block.create.copper_ore": "铜矿石", diff --git a/src/generated/resources/assets/create/models/item/controller_rail.json b/src/generated/resources/assets/create/models/item/controller_rail.json new file mode 100644 index 000000000..3524bff1a --- /dev/null +++ b/src/generated/resources/assets/create/models/item/controller_rail.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:block/controller_rail_analog" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/controller_rail.json b/src/generated/resources/data/create/loot_tables/blocks/controller_rail.json new file mode 100644 index 000000000..d68ce3cec --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/controller_rail.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:controller_rail" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/rails.json b/src/generated/resources/data/minecraft/tags/blocks/rails.json index c75102c53..9f6c12628 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/rails.json +++ b/src/generated/resources/data/minecraft/tags/blocks/rails.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "create:cart_assembler", - "create:reinforced_rail" + "create:reinforced_rail", + "create:controller_rail" ] } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index c4861f26c..f904a9e07 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -61,6 +61,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pis import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonHeadBlock; import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock; import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock; +import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock; import com.simibubi.create.content.contraptions.components.turntable.TurntableBlock; import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock; @@ -735,6 +736,16 @@ public class AllBlocks { .build() .register(); + public static final BlockEntry CONTROLLER_RAIL = + REGISTRATE.block("controller_rail", ControllerRailBlock::new) + .initialProperties(() -> Blocks.POWERED_RAIL) + .blockstate(BlockStateGen.controllerRail()) + .addLayer(() -> RenderType::getCutoutMipped) + .tag(BlockTags.RAILS) + .item() + .model((c, p) -> p.generated(c, Create.asResource("block/controller_rail_analog"))) + .build().register(); + public static final BlockEntry MINECART_ANCHOR = REGISTRATE.block("minecart_anchor", MinecartAnchorBlock::new) .initialProperties(SharedProperties::stone) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java new file mode 100644 index 000000000..d4ecf5998 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java @@ -0,0 +1,292 @@ +package com.simibubi.create.content.contraptions.components.tracks; + +import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.utility.VecHelper; +import mcp.MethodsReturnNonnullByDefault; +import net.minecraft.block.AbstractRailBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.item.minecart.AbstractMinecartEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemUseContext; +import net.minecraft.state.*; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.state.properties.RailShape; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.Mirror; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.Vec3i; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + +import static net.minecraft.state.properties.RailShape.*; + + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@SuppressWarnings("deprecation") +public class ControllerRailBlock extends AbstractRailBlock implements IWrenchable { + public static final EnumProperty SHAPE = BlockStateProperties.RAIL_SHAPE_STRAIGHT; + public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15; + public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards"); + + public ControllerRailBlock(Properties p_i48444_2_) { + super(true, p_i48444_2_); + this.setDefaultState(this.stateContainer.getBaseState().with(POWER, 0).with(BACKWARDS, false).with(SHAPE, NORTH_SOUTH)); + } + + private static Vec3i getAccelerationVector(BlockState state) { + Direction pointingTo = getPointingTowards(state); + return (state.get(BACKWARDS) ? pointingTo.getOpposite() : pointingTo).getDirectionVec(); + } + + private static Direction getPointingTowards(BlockState state) { + switch (state.get(SHAPE)) { + case ASCENDING_WEST: + case EAST_WEST: + return Direction.WEST; + case ASCENDING_EAST: + return Direction.EAST; + case ASCENDING_SOUTH: + return Direction.SOUTH; + default: + return Direction.NORTH; + } + } + + private static void decelerateCart(BlockPos pos, AbstractMinecartEntity cart) { + Vec3d diff = VecHelper.getCenterOf(pos).subtract(cart.getPositionVec()); + cart.setMotion(diff.x / 16f, 0, diff.z / 16f); + } + + private static boolean isStableWith(BlockState testState, IBlockReader world, BlockPos pos) { + return hasSolidSideOnTop(world, pos.down()) && (!testState.get(SHAPE).isAscending() || hasSolidSideOnTop(world, pos.offset(getPointingTowards(testState)))); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { + Direction direction = p_196258_1_.getPlacementHorizontalFacing(); + BlockState base = super.getStateForPlacement(p_196258_1_); + return (base == null ? getDefaultState() : base).with(BACKWARDS, direction == Direction.SOUTH || direction == Direction.EAST); + } + + @Override + public IProperty getShapeProperty() { + return SHAPE; + } + + @Override + protected void fillStateContainer(StateContainer.Builder p_206840_1_) { + p_206840_1_.add(SHAPE, POWER, BACKWARDS); + } + + @Override + public void onMinecartPass(BlockState state, World world, BlockPos pos, AbstractMinecartEntity cart) { + if (world.isRemote) + return; + Vec3d accelerationVec = new Vec3d(getAccelerationVector(state)); + double targetSpeed = cart.getMaxSpeedWithRail() * state.get(POWER) / 15.; + if ((cart.getMotion().dotProduct(accelerationVec) >= 0 || cart.getMotion().lengthSquared() < 0.0001) && targetSpeed > 0) + cart.setMotion(accelerationVec.scale(targetSpeed)); + else + decelerateCart(pos, cart); + } + + @Override + protected void updateState(BlockState state, World world, BlockPos pos, Block block) { + int newPower = calculatePower(world, pos); + if (state.get(POWER) != newPower) + placeAndNotify(state.with(POWER, newPower), pos, world); + } + + private int calculatePower(World world, BlockPos pos) { + int newPower = world.getRedstonePowerFromNeighbors(pos); + if (newPower != 0) + return newPower; + + int forwardDistance = 0; + int backwardsDistance = 0; + BlockPos lastForwardRail = pos; + BlockPos lastBackwardsRail = pos; + int forwardPower = 0; + int backwardsPower = 0; + + for (int i = 0; i < 15; i++) { + BlockPos testPos = findNextRail(lastForwardRail, world, false); + if (testPos == null) + break; + forwardDistance++; + lastForwardRail = testPos; + forwardPower = world.getRedstonePowerFromNeighbors(testPos); + if (forwardPower != 0) + break; + } + for (int i = 0; i < 15; i++) { + BlockPos testPos = findNextRail(lastBackwardsRail, world, true); + if (testPos == null) + break; + backwardsDistance++; + lastBackwardsRail = testPos; + backwardsPower = world.getRedstonePowerFromNeighbors(testPos); + if (backwardsPower != 0) + break; + } + if (forwardDistance > 8 && backwardsDistance > 8) + return 0; + else if (backwardsPower == 0 && forwardDistance <= 8) + return forwardPower; + else if (forwardPower == 0 && backwardsDistance <= 8) + return backwardsPower; + else if (backwardsPower != 0 && forwardPower != 0) + return MathHelper.ceil((backwardsPower * forwardDistance + forwardPower * backwardsDistance) / (double) (forwardDistance + backwardsDistance)); + return 0; + } + + @Override + public BlockState rotate(BlockState p_185499_1_, Rotation p_185499_2_) { + switch (p_185499_2_) { + case CLOCKWISE_180: + switch (p_185499_1_.get(SHAPE)) { + case ASCENDING_EAST: + return p_185499_1_.with(SHAPE, ASCENDING_WEST); + case ASCENDING_WEST: + return p_185499_1_.with(SHAPE, ASCENDING_EAST); + case ASCENDING_NORTH: + return p_185499_1_.with(SHAPE, ASCENDING_SOUTH); + case ASCENDING_SOUTH: + return p_185499_1_.with(SHAPE, ASCENDING_NORTH); + default: + return p_185499_1_.with(BACKWARDS, !p_185499_1_.get(BACKWARDS)); + } + case COUNTERCLOCKWISE_90: + switch (p_185499_1_.get(SHAPE)) { + case ASCENDING_EAST: + return p_185499_1_.with(SHAPE, ASCENDING_NORTH); + case ASCENDING_WEST: + return p_185499_1_.with(SHAPE, ASCENDING_SOUTH); + case ASCENDING_NORTH: + return p_185499_1_.with(SHAPE, ASCENDING_WEST); + case ASCENDING_SOUTH: + return p_185499_1_.with(SHAPE, ASCENDING_EAST); + case NORTH_SOUTH: + return p_185499_1_.with(SHAPE, EAST_WEST); + case EAST_WEST: + return p_185499_1_.with(SHAPE, NORTH_SOUTH).with(BACKWARDS, !p_185499_1_.get(BACKWARDS)); + } + case CLOCKWISE_90: + switch (p_185499_1_.get(SHAPE)) { + case ASCENDING_EAST: + return p_185499_1_.with(SHAPE, ASCENDING_SOUTH); + case ASCENDING_WEST: + return p_185499_1_.with(SHAPE, ASCENDING_NORTH); + case ASCENDING_NORTH: + return p_185499_1_.with(SHAPE, ASCENDING_EAST); + case ASCENDING_SOUTH: + return p_185499_1_.with(SHAPE, ASCENDING_WEST); + case NORTH_SOUTH: + return p_185499_1_.with(SHAPE, EAST_WEST).with(BACKWARDS, !p_185499_1_.get(BACKWARDS)); + case EAST_WEST: + return p_185499_1_.with(SHAPE, NORTH_SOUTH); + } + default: + return p_185499_1_; + } + } + + @Override + public BlockState mirror(BlockState p_185471_1_, Mirror p_185471_2_) { + RailShape railshape = p_185471_1_.get(SHAPE); + switch (p_185471_2_) { + case LEFT_RIGHT: + switch (railshape) { + case ASCENDING_NORTH: + return p_185471_1_.with(SHAPE, RailShape.ASCENDING_SOUTH); + case ASCENDING_SOUTH: + return p_185471_1_.with(SHAPE, RailShape.ASCENDING_NORTH); + case NORTH_SOUTH: + return p_185471_1_.with(BACKWARDS, !p_185471_1_.get(BACKWARDS)); + default: + return super.mirror(p_185471_1_, p_185471_2_); + } + case FRONT_BACK: + switch (railshape) { + case ASCENDING_EAST: + return p_185471_1_.with(SHAPE, RailShape.ASCENDING_WEST); + case ASCENDING_WEST: + return p_185471_1_.with(SHAPE, RailShape.ASCENDING_EAST); + case EAST_WEST: + return p_185471_1_.with(BACKWARDS, !p_185471_1_.get(BACKWARDS)); + default: + break; + } + } + return super.mirror(p_185471_1_, p_185471_2_); + } + + @Override + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + World world = context.getWorld(); + if (world.isRemote) + return ActionResultType.SUCCESS; + BlockPos pos = context.getPos(); + for (Rotation testRotation : new Rotation[]{Rotation.CLOCKWISE_90, Rotation.CLOCKWISE_180, Rotation.COUNTERCLOCKWISE_90}) { + BlockState testState = rotate(state, testRotation); + if (isStableWith(testState, world, pos)) { + placeAndNotify(testState, pos, world); + break; + } + } + return ActionResultType.SUCCESS; + } + + @Override + public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { + World world = context.getWorld(); + BlockPos pos = context.getPos(); + BlockState testState = state.with(BACKWARDS, !state.get(BACKWARDS)); + if (isStableWith(testState, world, pos)) + placeAndNotify(testState, pos, world); + return ActionResultType.SUCCESS; + } + + private void placeAndNotify(BlockState state, BlockPos pos, World world) { + world.setBlockState(pos, state, 3); + world.notifyNeighborsOfStateChange(pos.down(), this); + if (state.get(SHAPE).isAscending()) + world.notifyNeighborsOfStateChange(pos.up(), this); + } + + @Nullable + private BlockPos findNextRail(BlockPos from, IBlockReader world, boolean reversed) { + BlockState current = world.getBlockState(from); + if (!(current.getBlock() instanceof ControllerRailBlock)) + return null; + Vec3i accelerationVec = getAccelerationVector(current); + BlockPos baseTestPos = reversed ? from.subtract(accelerationVec) : from.add(accelerationVec); + for (BlockPos testPos : new BlockPos[]{baseTestPos, baseTestPos.down(), baseTestPos.up()}) { + if (testPos.getY() > from.getY() && !current.get(SHAPE).isAscending()) + continue; + BlockState testState = world.getBlockState(testPos); + if (testState.getBlock() instanceof ControllerRailBlock && getAccelerationVector(testState).equals(accelerationVec)) + return testPos; + } + return null; + } + + @Override + public boolean hasComparatorInputOverride(BlockState state) { + return true; + } + + @Override + public int getComparatorInputOverride(BlockState state, World world, BlockPos pos) { + return state.get(POWER); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java index 08890929f..f6429ab37 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java @@ -251,7 +251,7 @@ public class BasinTileEntity extends SmartTileEntity implements ITickableTileEnt newFacing = test; } - if (preferredSpoutput != null && BasinBlock.canOutputTo(world, pos, preferredSpoutput)) + if (preferredSpoutput != null && BasinBlock.canOutputTo(world, pos, preferredSpoutput) && preferredSpoutput != Direction.UP) newFacing = preferredSpoutput; if (newFacing != currentFacing) diff --git a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java index 604161694..e9432c225 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -9,6 +9,7 @@ import java.util.Vector; import java.util.function.BiFunction; import java.util.function.Function; +import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; import org.apache.commons.lang3.tuple.Pair; import com.google.common.collect.ImmutableList; @@ -434,4 +435,47 @@ public class BlockStateGen { .end(); } + public static NonNullBiConsumer, RegistrateBlockstateProvider> controllerRail() { + return (c, p) -> p.getVariantBuilder(c.get()) + .forAllStates(state -> { + int power = state.get(ControllerRailBlock.POWER); + boolean backwards = state.get(ControllerRailBlock.BACKWARDS); + String powerStr = power == 0 ? "off" : (power == 15 ? "on" : "analog"); + RailShape shape = state.get(ControllerRailBlock.SHAPE); + String shapeName = shape.isAscending() ? RailShape.ASCENDING_NORTH.getName() : RailShape.NORTH_SOUTH.getName(); + int rotation = 0; + + switch (shape) { + case EAST_WEST: + rotation += 270; + shapeName = RailShape.NORTH_SOUTH.getName(); + break; + case ASCENDING_EAST: + rotation += 90; + break; + case ASCENDING_SOUTH: + rotation += 180; + break; + case ASCENDING_WEST: + rotation += 270; + break; + default: + break; + } + + if (backwards) { + rotation += 180; + shapeName = shape.isAscending() ? RailShape.ASCENDING_SOUTH.getName() : RailShape.NORTH_SOUTH.getName(); + } + + + return ConfiguredModel.builder() + .modelFile(p.models() + .getExistingFile(p.modLoc( + "block/" + c.getName() + "/block_" + shapeName + "_" + + powerStr))) + .rotationY(rotation % 360) + .build(); + }); + } } diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_analog.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_analog.json new file mode 100644 index 000000000..73815cb0d --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_analog.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_rail_raised_ne", + "textures": { + "rail": "create:block/controller_rail_analog" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_off.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_off.json new file mode 100644 index 000000000..f339682a0 --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_off.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_rail_raised_ne", + "textures": { + "rail": "create:block/controller_rail_off" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_on.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_on.json new file mode 100644 index 000000000..0fe3100de --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_on.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_rail_raised_ne", + "textures": { + "rail": "create:block/controller_rail_on" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_analog.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_analog.json new file mode 100644 index 000000000..de285565e --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_analog.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_rail_raised_sw", + "textures": { + "rail": "create:block/controller_rail_analog" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_off.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_off.json new file mode 100644 index 000000000..f4fbd0df1 --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_off.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_rail_raised_sw", + "textures": { + "rail": "create:block/controller_rail_off" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_on.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_on.json new file mode 100644 index 000000000..cffc1646a --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_on.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_rail_raised_sw", + "textures": { + "rail": "create:block/controller_rail_on" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_north_south_analog.json b/src/main/resources/assets/create/models/block/controller_rail/block_north_south_analog.json new file mode 100644 index 000000000..ba0d436dc --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_north_south_analog.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/rail_flat", + "textures": { + "rail": "create:block/controller_rail_analog" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_north_south_off.json b/src/main/resources/assets/create/models/block/controller_rail/block_north_south_off.json new file mode 100644 index 000000000..280d61983 --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_north_south_off.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/rail_flat", + "textures": { + "rail": "create:block/controller_rail_off" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_north_south_on.json b/src/main/resources/assets/create/models/block/controller_rail/block_north_south_on.json new file mode 100644 index 000000000..749918039 --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_north_south_on.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/rail_flat", + "textures": { + "rail": "create:block/controller_rail_on" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/controller_rail_analog.png b/src/main/resources/assets/create/textures/block/controller_rail_analog.png new file mode 100644 index 000000000..f114dde12 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/controller_rail_analog.png differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_off.png b/src/main/resources/assets/create/textures/block/controller_rail_off.png new file mode 100644 index 000000000..346d2fb67 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/controller_rail_off.png differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_on.png b/src/main/resources/assets/create/textures/block/controller_rail_on.png new file mode 100644 index 000000000..bd61741a5 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/controller_rail_on.png differ