From a760ff8a7995f2e755fcd5badaf5aaf34fd73ce6 Mon Sep 17 00:00:00 2001 From: Zelophed Date: Mon, 30 Nov 2020 12:29:50 +0100 Subject: [PATCH 1/4] Tinted Love - apply redstone's block coloring to the controller rail - add a little more polish to the piston pole placement helper - textures at create:block/controller_rail_on and _off are currently unused, _analog is used for item only i think --- src/generated/resources/.cache/cache | 26 +- .../create/blockstates/controller_rail.json | 747 +----------------- .../resources/assets/create/lang/en_us.json | 1 + .../assets/create/lang/unfinished/de_de.json | 3 +- .../assets/create/lang/unfinished/fr_fr.json | 3 +- .../assets/create/lang/unfinished/it_it.json | 3 +- .../assets/create/lang/unfinished/ja_jp.json | 3 +- .../assets/create/lang/unfinished/ko_kr.json | 3 +- .../assets/create/lang/unfinished/nl_nl.json | 3 +- .../assets/create/lang/unfinished/pt_br.json | 3 +- .../assets/create/lang/unfinished/ru_ru.json | 3 +- .../assets/create/lang/unfinished/zh_cn.json | 3 +- .../java/com/simibubi/create/AllBlocks.java | 95 +-- .../com/simibubi/create/AllColorHandlers.java | 21 +- .../piston/PistonExtensionPoleBlock.java | 2 +- .../piston/PistonPolePlacementHelper.java | 5 +- .../tracks/ControllerRailBlock.java | 15 +- .../goggles/GoggleOverlayRenderer.java | 14 +- .../create/foundation/data/BlockStateGen.java | 29 +- .../assets/create/lang/default/messages.json | 3 +- .../block_ascending_north.json | 36 + .../block_ascending_north_analog.json | 6 - .../block_ascending_north_off.json | 6 - .../block_ascending_north_on.json | 6 - .../block_ascending_south.json | 36 + .../block_ascending_south_analog.json | 6 - .../block_ascending_south_off.json | 6 - .../block_ascending_south_on.json | 6 - .../controller_rail/block_north_south.json | 24 + .../block_north_south_analog.json | 6 - .../block_north_south_off.json | 6 - .../controller_rail/block_north_south_on.json | 6 - .../textures/block/controller_rail_base.png | Bin 0 -> 2410 bytes .../textures/block/controller_rail_tint.png | Bin 0 -> 985 bytes 34 files changed, 237 insertions(+), 898 deletions(-) create mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_north.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_analog.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_off.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_on.json create mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_south.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_analog.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_off.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_on.json create mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_north_south.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_north_south_analog.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_north_south_off.json delete mode 100644 src/main/resources/assets/create/models/block/controller_rail/block_north_south_on.json create mode 100644 src/main/resources/assets/create/textures/block/controller_rail_base.png create mode 100644 src/main/resources/assets/create/textures/block/controller_rail_tint.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index f1e064766..f9e5a9e74 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -49,7 +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 +41b173dd97b3006478796ff356f6ac15f3dfa980 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 @@ -138,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 -3d97226b5e8d8f70ed08e45e78db1faf78d5e28b assets/create/blockstates/fluid_pipe.json +7335a938fa5e80060cad2ed987afa123debb3998 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 @@ -332,7 +332,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json 92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json 61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json -8d7e653bfd9846e684a0d3725595714a19201017 assets/create/blockstates/radial_chassis.json +6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets/create/blockstates/radial_chassis.json 45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json 722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json @@ -395,16 +395,16 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.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 +a9b08f790ce95310966b32fd2fda7ff345c1aa06 assets/create/lang/en_us.json +df56d014cd57fc3671b045b4c38c56344645b67e assets/create/lang/unfinished/de_de.json +62827b2303501f5ff8a2a6b32bb8626de3ab5c43 assets/create/lang/unfinished/fr_fr.json +3d4486c4c55e61714f1a9f244a911d9b7726288a assets/create/lang/unfinished/it_it.json +08b938808c76b1069b46cf071001c9f8190dfb0d assets/create/lang/unfinished/ja_jp.json +5e4673880e92012fc27d680a9c15d62ea08961d1 assets/create/lang/unfinished/ko_kr.json +5b43ca6db5772d53618d3ea38f1b97f14c3b2b6d assets/create/lang/unfinished/nl_nl.json +2355818f7e6b9176ced2fcbf741cab339c0376b7 assets/create/lang/unfinished/pt_br.json +50f6b4f0166f8cf379c27c108b6ca6d0103c4847 assets/create/lang/unfinished/ru_ru.json +ccd2ea1e73d535feb22597ea739d1caceff60944 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 diff --git a/src/generated/resources/assets/create/blockstates/controller_rail.json b/src/generated/resources/assets/create/blockstates/controller_rail.json index 65f6ee81b..e09dd08ba 100644 --- a/src/generated/resources/assets/create/blockstates/controller_rail.json +++ b/src/generated/resources/assets/create/blockstates/controller_rail.json @@ -1,724 +1,49 @@ { "variants": { - "backwards=false,power=0,shape=north_south": { - "model": "create:block/controller_rail/block_north_south_off" + "backwards=false,shape=north_south": { + "model": "create:block/controller_rail/block_north_south" }, - "backwards=true,power=0,shape=north_south": { - "model": "create:block/controller_rail/block_north_south_off", + "backwards=true,shape=north_south": { + "model": "create:block/controller_rail/block_north_south", "y": 180 }, - "backwards=false,power=1,shape=north_south": { - "model": "create:block/controller_rail/block_north_south_analog" + "backwards=false,shape=east_west": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 }, - "backwards=true,power=1,shape=north_south": { - "model": "create:block/controller_rail/block_north_south_analog", + "backwards=true,shape=east_west": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=false,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=true,shape=ascending_west": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=false,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=true,shape=ascending_north": { + "model": "create:block/controller_rail/block_ascending_south", "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", + "backwards=false,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_north", "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" + "backwards=true,shape=ascending_south": { + "model": "create:block/controller_rail/block_ascending_south" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index de6eeee0f..a9adc88ed 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -722,6 +722,7 @@ "create.gui.goggles.generator_stats": "Generator Stats:", "create.gui.goggles.kinetic_stats": "Kinetic Stats:", "create.gui.goggles.at_current_speed": "at current speed", + "create.gui.goggles.pole_length": "Pole Length:", "create.gui.gauge.info_header": "Gauge Information:", "create.gui.speedometer.title": "Rotation Speed", "create.gui.stressometer.title": "Network Stress", 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 aaea64458..48759c510 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: 1051", + "_": "Missing Localizations: 1052", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", 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 4ac7ff1cc..b38db1fe2 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: 681", + "_": "Missing Localizations: 682", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "Statistiques du générateur:", "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", "create.gui.goggles.at_current_speed": "À la vitesse actuelle", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "Informations sur la jauge:", "create.gui.speedometer.title": "Vitesse de rotation", "create.gui.stressometer.title": "Stress du réseau", 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 ef2891eb0..46ea7fe96 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: 665", + "_": "Missing Localizations: 666", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "Statistiche del Generatore:", "create.gui.goggles.kinetic_stats": "Statistiche Cinetiche:", "create.gui.goggles.at_current_speed": "Alla velocità Attuale", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "Informazioni sul Calibro:", "create.gui.speedometer.title": "Velocità di Rotazione", "create.gui.stressometer.title": "Stress della Rete", 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 e86ba2f46..0011bb4bb 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: 664", + "_": "Missing Localizations: 665", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "ジェネレータの統計:", "create.gui.goggles.kinetic_stats": "動力の統計:", "create.gui.goggles.at_current_speed": "現在の速度", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "計器の情報:", "create.gui.speedometer.title": "回転速度", "create.gui.stressometer.title": "ネットワークの応力", 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 cd047bf0d..a882d876e 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: 665", + "_": "Missing Localizations: 666", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "발전 상태:", "create.gui.goggles.kinetic_stats": "가동 상태:", "create.gui.goggles.at_current_speed": "현재 속도", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "게이지 정보:", "create.gui.speedometer.title": "회전 속도", "create.gui.stressometer.title": "네트워크 부하", 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 11f631734..ecccd1423 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: 992", + "_": "Missing Localizations: 993", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", 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 8af150962..edc6ba37a 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: 1058", + "_": "Missing Localizations: 1059", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", 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 80ae82a39..c67cf04a9 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: 334", + "_": "Missing Localizations: 335", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "Статистика генератора:", "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", "create.gui.goggles.at_current_speed": "На текущей скорости", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "Калибровочная информация:", "create.gui.speedometer.title": "Скорость вращения", "create.gui.stressometer.title": "Сетевой момент", 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 09b9dbaac..31c513c21 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: 347", + "_": "Missing Localizations: 348", "_": "->------------------------] Game Elements [------------------------<-", @@ -723,6 +723,7 @@ "create.gui.goggles.generator_stats": "产能器状态:", "create.gui.goggles.kinetic_stats": "动能状态:", "create.gui.goggles.at_current_speed": "当前速度应力值", + "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", "create.gui.gauge.info_header": "仪表信息:", "create.gui.speedometer.title": "旋转速度", "create.gui.stressometer.title": "网络应力", diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index f904a9e07..a4ba851a1 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -1,29 +1,10 @@ package com.simibubi.create; -import static com.simibubi.create.AllMovementBehaviours.addMovementBehaviour; -import static com.simibubi.create.AllTags.tagBlockAndItem; -import static com.simibubi.create.content.AllSections.SCHEMATICS; -import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; -import static com.simibubi.create.foundation.data.BlockStateGen.oxidizedBlockstate; -import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; -import static com.simibubi.create.foundation.data.ModelGen.customItemModel; -import static com.simibubi.create.foundation.data.ModelGen.oxidizedItemModel; - import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.content.AllSections; import com.simibubi.create.content.contraptions.base.CasingBlock; -import com.simibubi.create.content.contraptions.components.actors.DrillBlock; -import com.simibubi.create.content.contraptions.components.actors.DrillMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.HarvesterBlock; -import com.simibubi.create.content.contraptions.components.actors.HarvesterMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.PloughBlock; -import com.simibubi.create.content.contraptions.components.actors.PloughMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock; -import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceMovement; -import com.simibubi.create.content.contraptions.components.actors.SawMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.SeatBlock; -import com.simibubi.create.content.contraptions.components.actors.SeatMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.*; import com.simibubi.create.content.contraptions.components.clock.CuckooClockBlock; import com.simibubi.create.content.contraptions.components.crafter.CrafterCTBehaviour; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; @@ -46,11 +27,7 @@ import com.simibubi.create.content.contraptions.components.motor.CreativeMotorGe import com.simibubi.create.content.contraptions.components.press.MechanicalPressBlock; import com.simibubi.create.content.contraptions.components.saw.SawBlock; import com.simibubi.create.content.contraptions.components.saw.SawGenerator; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedBearingMovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingBlock; +import com.simibubi.create.content.contraptions.components.structureMovement.bearing.*; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock.ChassisCTBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock; @@ -70,15 +47,7 @@ import com.simibubi.create.content.contraptions.fluids.PumpBlock; import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyBlock; import com.simibubi.create.content.contraptions.fluids.actors.ItemDrainBlock; import com.simibubi.create.content.contraptions.fluids.actors.SpoutBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.BracketBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.BracketBlockItem; -import com.simibubi.create.content.contraptions.fluids.pipes.BracketGenerator; -import com.simibubi.create.content.contraptions.fluids.pipes.EncasedPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidValveBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.GlassFluidPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.SmartFluidPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.SmartFluidPipeGenerator; +import com.simibubi.create.content.contraptions.fluids.pipes.*; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankGenerator; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankItem; @@ -100,12 +69,7 @@ import com.simibubi.create.content.contraptions.relays.elementary.BracketedKinet import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; import com.simibubi.create.content.contraptions.relays.elementary.CogwheelBlockItem; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyBlock; -import com.simibubi.create.content.contraptions.relays.encased.ClutchBlock; -import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock; -import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltGenerator; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; -import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock; +import com.simibubi.create.content.contraptions.relays.encased.*; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; @@ -116,49 +80,22 @@ import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; import com.simibubi.create.content.logistics.block.chute.ChuteItem; import com.simibubi.create.content.logistics.block.depot.DepotBlock; -import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterGenerator; -import com.simibubi.create.content.logistics.block.diodes.PoweredLatchBlock; -import com.simibubi.create.content.logistics.block.diodes.PoweredLatchGenerator; -import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterBlock; -import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterGenerator; -import com.simibubi.create.content.logistics.block.diodes.ToggleLatchBlock; -import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator; -import com.simibubi.create.content.logistics.block.funnel.AndesiteBeltFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.AndesiteFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelGenerator; -import com.simibubi.create.content.logistics.block.funnel.BrassBeltFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.BrassFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.FunnelMovementBehaviour; +import com.simibubi.create.content.logistics.block.diodes.*; +import com.simibubi.create.content.logistics.block.funnel.*; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmItem; -import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; -import com.simibubi.create.content.logistics.block.redstone.ContactMovementBehaviour; -import com.simibubi.create.content.logistics.block.redstone.ContentObserverBlock; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeGenerator; -import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkGenerator; -import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchBlock; +import com.simibubi.create.content.logistics.block.redstone.*; import com.simibubi.create.content.palettes.MetalBlock; import com.simibubi.create.content.schematics.block.SchematicTableBlock; import com.simibubi.create.content.schematics.block.SchematicannonBlock; import com.simibubi.create.foundation.config.StressConfigDefaults; -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.BlockStateGen; -import com.simibubi.create.foundation.data.BuilderTransformers; -import com.simibubi.create.foundation.data.CreateRegistrate; -import com.simibubi.create.foundation.data.ModelGen; -import com.simibubi.create.foundation.data.SharedProperties; +import com.simibubi.create.foundation.data.*; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.worldgen.OxidizingBlock; import com.tterrag.registrate.util.entry.BlockEntry; - import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.SoundType; @@ -175,6 +112,15 @@ import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.common.Tags; import net.minecraftforge.common.ToolType; +import static com.simibubi.create.AllMovementBehaviours.addMovementBehaviour; +import static com.simibubi.create.AllTags.tagBlockAndItem; +import static com.simibubi.create.content.AllSections.SCHEMATICS; +import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; +import static com.simibubi.create.foundation.data.BlockStateGen.oxidizedBlockstate; +import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; +import static com.simibubi.create.foundation.data.ModelGen.customItemModel; +import static com.simibubi.create.foundation.data.ModelGen.oxidizedItemModel; + public class AllBlocks { private static final CreateRegistrate REGISTRATE = Create.registrate() @@ -741,10 +687,13 @@ public class AllBlocks { .initialProperties(() -> Blocks.POWERED_RAIL) .blockstate(BlockStateGen.controllerRail()) .addLayer(() -> RenderType::getCutoutMipped) + .onRegister(CreateRegistrate.blockColors(() -> AllColorHandlers::getRedstonePower)) + //.onRegister(CreateRegistrate.blockColorProperty(ControllerRailBlock.POWER)) .tag(BlockTags.RAILS) .item() - .model((c, p) -> p.generated(c, Create.asResource("block/controller_rail_analog"))) - .build().register(); + .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) diff --git a/src/main/java/com/simibubi/create/AllColorHandlers.java b/src/main/java/com/simibubi/create/AllColorHandlers.java index b6e9d9167..f6c0fe245 100644 --- a/src/main/java/com/simibubi/create/AllColorHandlers.java +++ b/src/main/java/com/simibubi/create/AllColorHandlers.java @@ -1,30 +1,31 @@ package com.simibubi.create; -import java.util.HashMap; -import java.util.Map; - import com.simibubi.create.foundation.block.IBlockVertexColor; import com.simibubi.create.foundation.block.render.ColoredVertexModel; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.RedstoneWireBlock; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.color.BlockColors; import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.client.renderer.color.IItemColor; import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.item.ItemStack; +import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.IItemProvider; import net.minecraft.util.math.BlockPos; import net.minecraft.world.GrassColors; import net.minecraft.world.ILightReader; import net.minecraft.world.biome.BiomeColors; +import java.util.HashMap; +import java.util.Map; + public class AllColorHandlers { - private Map coloredVertexBlocks = new HashMap<>(); - private Map coloredBlocks = new HashMap<>(); - private Map coloredItems = new HashMap<>(); + private final Map coloredVertexBlocks = new HashMap<>(); + private final Map coloredBlocks = new HashMap<>(); + private final Map coloredItems = new HashMap<>(); // @@ -38,6 +39,12 @@ public class AllColorHandlers { return new ItemColor((stack, layer) -> GrassColors.get(0.5D, 1.0D)); } + public static IBlockColor getRedstonePower() { + return new BlockColor( + (state, world, pos, layer) -> RedstoneWireBlock.colorMultiplier(pos != null && world != null ? state.get(BlockStateProperties.POWER_0_15) : 0) + ); + } + // public void register(Block block, IBlockColor color) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java index f2949639d..83d38e1c5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java @@ -120,7 +120,7 @@ public class PistonExtensionPoleBlock extends ProperDirectionalBlock implements if (world.isRemote) return ActionResultType.SUCCESS; - world.setBlockState(newPos, AllBlocks.PISTON_EXTENSION_POLE.getDefaultState().with(FACING, offset.getFirst())); + world.setBlockState(newPos, AllBlocks.PISTON_EXTENSION_POLE.getDefaultState().with(FACING, state.get(FACING))); if (!player.isCreative()) heldItem.shrink(1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonPolePlacementHelper.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonPolePlacementHelper.java index 5559631e6..43a32fd45 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonPolePlacementHelper.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonPolePlacementHelper.java @@ -32,7 +32,10 @@ public class PistonPolePlacementHelper { BlockRayTraceResult ray = (BlockRayTraceResult) mc.objectMouseOver; - if (!isHoldingPole(mc.player)) + if (mc.player != null && !isHoldingPole(mc.player)) + return; + + if (mc.player.isSneaking()) return; BlockPos pos = ray.getPos(); 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 index d4ecf5998..7851bf415 100644 --- 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 @@ -34,11 +34,20 @@ import static net.minecraft.state.properties.RailShape.*; @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"); + /* + * SHAPE | BACKWARDS | FACING + * N/S FALSE North + * N/S TRUE South + * E/W FALSE West + * E/W TRUE East + * ASC_X FALSE X + * ASC_X TRUE X.opposite() + * */ + public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15; - public ControllerRailBlock(Properties p_i48444_2_) { - super(true, p_i48444_2_); + public ControllerRailBlock(Properties properties) { + super(true, properties); this.setDefaultState(this.stateContainer.getBaseState().with(POWER, 0).with(BACKWARDS, false).with(SHAPE, NORTH_SOUTH)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java index 8d428ac5e..0c8fe31a8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java @@ -1,10 +1,5 @@ package com.simibubi.create.content.contraptions.goggles; -import static com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation.spacing; - -import java.util.ArrayList; -import java.util.List; - import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; @@ -14,7 +9,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pis import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.gui.GuiGameElement; import com.simibubi.create.foundation.utility.Iterate; - +import com.simibubi.create.foundation.utility.Lang; import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.Screen; @@ -33,6 +28,11 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import java.util.ArrayList; +import java.util.List; + +import static com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation.spacing; + @EventBusSubscriber(value = Dist.CLIENT) public class GoggleOverlayRenderer { @@ -100,7 +100,7 @@ public class GoggleOverlayRenderer { if (!tooltip.isEmpty()) tooltip.add(""); - tooltip.add(spacing + "Pole length: " + poles); + tooltip.add(spacing + Lang.translate("gui.goggles.pole_length") + " " + poles); } if (tooltip.isEmpty()) 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 e9432c225..cdb2a16e3 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -1,17 +1,6 @@ package com.simibubi.create.foundation.data; -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; -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; import com.google.common.collect.ImmutableMap; import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; @@ -19,6 +8,7 @@ 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.mounted.CartAssembleRailType; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; +import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock; import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; @@ -31,7 +21,6 @@ import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.RegistrateBlockstateProvider; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.state.BooleanProperty; @@ -44,6 +33,11 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.client.model.generators.MultiPartBlockStateBuilder; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Function; public class BlockStateGen { @@ -437,10 +431,10 @@ public class BlockStateGen { public static NonNullBiConsumer, RegistrateBlockstateProvider> controllerRail() { return (c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(state -> { - int power = state.get(ControllerRailBlock.POWER); + .forAllStatesExcept(state -> { + //int power = state.get(ControllerRailBlock.POWER); boolean backwards = state.get(ControllerRailBlock.BACKWARDS); - String powerStr = power == 0 ? "off" : (power == 15 ? "on" : "analog"); + //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; @@ -472,10 +466,9 @@ public class BlockStateGen { return ConfiguredModel.builder() .modelFile(p.models() .getExistingFile(p.modLoc( - "block/" + c.getName() + "/block_" + shapeName + "_" + - powerStr))) + "block/" + c.getName() + "/block_" + shapeName))) .rotationY(rotation % 360) .build(); - }); + }, ControllerRailBlock.POWER); } } diff --git a/src/main/resources/assets/create/lang/default/messages.json b/src/main/resources/assets/create/lang/default/messages.json index eec9e2a6a..14c300883 100644 --- a/src/main/resources/assets/create/lang/default/messages.json +++ b/src/main/resources/assets/create/lang/default/messages.json @@ -170,7 +170,8 @@ "create.gui.goggles.generator_stats": "Generator Stats:", "create.gui.goggles.kinetic_stats": "Kinetic Stats:", "create.gui.goggles.at_current_speed": "at current speed", - + "create.gui.goggles.pole_length": "Pole Length:", + "create.gui.gauge.info_header": "Gauge Information:", "create.gui.speedometer.title": "Rotation Speed", "create.gui.stressometer.title": "Network Stress", diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north.json new file mode 100644 index 000000000..4dbb5f511 --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north.json @@ -0,0 +1,36 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#rail", + "rail": "create:block/controller_rail_base", + "tint": "create:block/controller_rail_tint" + }, + "elements": [ + { "from": [ 0, 9, 0 ], + "to": [ 16, 9, 16 ], + "rotation": { + "origin": [ 8, 9, 8 ], + "axis": "x", + "angle": 45, + "rescale": true + }, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" } + } + }, + { "from": [ 0, 9, 0 ], + "to": [ 16, 9, 16 ], + "rotation": { + "origin": [ 8, 9, 8 ], + "axis": "x", + "angle": 45, + "rescale": true + }, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 } + } + } + ] +} \ No newline at end of file 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 deleted file mode 100644 index 73815cb0d..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_analog.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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 deleted file mode 100644 index f339682a0..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_off.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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 deleted file mode 100644 index 0fe3100de..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north_on.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south.json new file mode 100644 index 000000000..14521ede3 --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south.json @@ -0,0 +1,36 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#rail", + "rail": "create:block/controller_rail_base", + "tint": "create:block/controller_rail_tint" + }, + "elements": [ + { "from": [ 0, 9, 0 ], + "to": [ 16, 9, 16 ], + "rotation": { + "origin": [ 8, 9, 8 ], + "axis": "x", + "angle": -45, + "rescale": true + }, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" } + } + }, + { "from": [ 0, 9, 0 ], + "to": [ 16, 9, 16 ], + "rotation": { + "origin": [ 8, 9, 8 ], + "axis": "x", + "angle": -45, + "rescale": true + }, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 } + } + } + ] +} \ 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 deleted file mode 100644 index de285565e..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_analog.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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 deleted file mode 100644 index f4fbd0df1..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_off.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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 deleted file mode 100644 index cffc1646a..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south_on.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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.json b/src/main/resources/assets/create/models/block/controller_rail/block_north_south.json new file mode 100644 index 000000000..bc7fc347c --- /dev/null +++ b/src/main/resources/assets/create/models/block/controller_rail/block_north_south.json @@ -0,0 +1,24 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#rail", + "rail": "create:block/controller_rail_base", + "tint": "create:block/controller_rail_tint" + }, + "elements": [ + { "from": [ 0, 1, 0 ], + "to": [ 16, 1, 16 ], + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" } + } + }, + { "from": [ 0, 1, 0 ], + "to": [ 16, 1, 16 ], + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 } + } + } + ] +} \ 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 deleted file mode 100644 index ba0d436dc..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_north_south_analog.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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 deleted file mode 100644 index 280d61983..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_north_south_off.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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 deleted file mode 100644 index 749918039..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_north_south_on.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "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_base.png b/src/main/resources/assets/create/textures/block/controller_rail_base.png new file mode 100644 index 0000000000000000000000000000000000000000..21f528338699b789b60ad6a9e86f20d298ef8513 GIT binary patch literal 2410 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 Hu0mjfmS@E_ literal 0 HcmV?d00001 From 628afa52d100e6cb6138d82f6bb8c0c06c92675e Mon Sep 17 00:00:00 2001 From: grimmauld Date: Mon, 30 Nov 2020 13:23:35 +0100 Subject: [PATCH 2/4] Fix cocoa beans on contraptions crashing the server --- src/generated/resources/.cache/cache | 6 +++--- .../resources/data/create/tags/blocks/brittle.json | 3 ++- src/main/java/com/simibubi/create/AllTags.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index f9e5a9e74..8743219fc 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -138,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 -7335a938fa5e80060cad2ed987afa123debb3998 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 @@ -332,7 +332,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json 92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json 61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json -6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets/create/blockstates/radial_chassis.json +8d7e653bfd9846e684a0d3725595714a19201017 assets/create/blockstates/radial_chassis.json 45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json 722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json @@ -3273,7 +3273,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone 0f3c993eb6dd3f37953f304b8fad15bf60469ef4 data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json 6eceb25fabbb6b389ca35de3b829ad061c9c456a data/create/recipes/weathered_limestone_pillar.json 11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json -f9ecec40e11a87de73c9dc7c2963c1cb10b1a180 data/create/tags/blocks/brittle.json +eedf31af7134d03656c5fa57229982f9c5bed07c data/create/tags/blocks/brittle.json 13b55d6e905a02403d2e95e9ba2357f99c5f2241 data/create/tags/blocks/fan_heaters.json 3bc64e3a1e7980237435b1770a9ba2102d57fcd4 data/create/tags/blocks/fan_transparent.json c9ac7e3e5ec18554e7184168d65e9b8e44ef5610 data/create/tags/blocks/sails.json diff --git a/src/generated/resources/data/create/tags/blocks/brittle.json b/src/generated/resources/data/create/tags/blocks/brittle.json index 07cbfbb2c..c028ad70c 100644 --- a/src/generated/resources/data/create/tags/blocks/brittle.json +++ b/src/generated/resources/data/create/tags/blocks/brittle.json @@ -26,6 +26,7 @@ "create:redstone_link", "#minecraft:doors", "minecraft:flower_pot", - "minecraft:bell" + "minecraft:bell", + "minecraft:cocoa" ] } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index 779c00aff..3bb8c76ce 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -151,7 +151,7 @@ public class AllTags { AllBlockTags.WINDMILL_SAILS.includeAll(BlockTags.WOOL); AllBlockTags.BRITTLE.includeAll(BlockTags.DOORS); - AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL); + AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL, Blocks.COCOA); AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.FENCES); AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS); From ccae111ec8863154085b4db280be76d330289396 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 30 Nov 2020 15:23:37 +0100 Subject: [PATCH 3/4] Reversing the reversed - Controller rails can now control furnace minecarts - Controller rails now snap to adjacent rails with the correct facing - Controller rails no longer get reversed when transitioning to or from a slope in certain orientations - Controller rails are now craftable - Fun refactors - Updated texture - Recipe adjustments --- src/generated/resources/.cache/cache | 13 +- .../create/blockstates/controller_rail.json | 14 +- .../assets/create/blockstates/fluid_pipe.json | 22 +- .../create/models/item/controller_rail.json | 2 +- .../crafting/kinetics/controller_rail.json | 32 +++ .../recipes/crafting/kinetics/chute.json | 3 +- .../crafting/kinetics/controller_rail.json | 23 ++ .../create/recipes/crushing/diamond_ore.json | 23 ++ .../java/com/simibubi/create/AllBlocks.java | 96 +++++-- .../tracks/ControllerRailBlock.java | 265 ++++++++++-------- .../tracks/ControllerRailGenerator.java | 55 ++++ .../create/foundation/data/BlockStateGen.java | 60 +--- .../foundation/data/SpecialBlockStateGen.java | 9 +- .../data/recipe/CrushingRecipeGen.java | 5 + .../data/recipe/StandardRecipeGen.java | 10 + .../create/foundation/utility/Iterate.java | 4 + .../textures/block/controller_rail_analog.png | Bin 336 -> 0 bytes .../textures/block/controller_rail_base.png | Bin 2410 -> 680 bytes .../textures/block/controller_rail_item.png | Bin 0 -> 328 bytes .../textures/block/controller_rail_off.png | Bin 331 -> 0 bytes .../textures/block/controller_rail_on.png | Bin 342 -> 0 bytes .../textures/block/controller_rail_tint.png | Bin 985 -> 585 bytes 22 files changed, 416 insertions(+), 220 deletions(-) create mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json create mode 100644 src/generated/resources/data/create/recipes/crafting/kinetics/controller_rail.json create mode 100644 src/generated/resources/data/create/recipes/crushing/diamond_ore.json create mode 100644 src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailGenerator.java delete mode 100644 src/main/resources/assets/create/textures/block/controller_rail_analog.png create mode 100644 src/main/resources/assets/create/textures/block/controller_rail_item.png delete mode 100644 src/main/resources/assets/create/textures/block/controller_rail_off.png delete mode 100644 src/main/resources/assets/create/textures/block/controller_rail_on.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index f9e5a9e74..2b1a99375 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -49,7 +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 -41b173dd97b3006478796ff356f6ac15f3dfa980 assets/create/blockstates/controller_rail.json +cfea7283f0ebd2432d67e80a523f2a12e24c0bd5 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 @@ -138,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 -7335a938fa5e80060cad2ed987afa123debb3998 assets/create/blockstates/fluid_pipe.json +fe9169716dd21a81a3710a89f0a9b7ea4dcd4d51 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 @@ -332,7 +332,7 @@ e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggl d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json 92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json 61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json -6fa36883e76e9e403bb429c8f86b8c0d3bba0cff assets/create/blockstates/radial_chassis.json +8d7e653bfd9846e684a0d3725595714a19201017 assets/create/blockstates/radial_chassis.json 45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json 722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json @@ -1158,7 +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 +d6e8de74773f89c228d94d6da8cdd8fb8b8545e4 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 @@ -1591,6 +1591,7 @@ d3ca638ffbca177b4970f046f6c42770e757e33e data/create/advancements/recipes/create a49a70403523bc9d4eadffdac5507806aca9fd9d data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json 403fd0da8ee42a52234e544cf532e454fb80137b data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json 5bbaac432fce5435c8c3df56ec81d31a0b76a4ee data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json +b42213bffce4e51618e1bba481959208d247c120 data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json 27930edef02aac6e74bfab62128688ecfb575008 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json 512e4d45657f6df3df2639040e8c5e76f9119f17 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json 7b80f6b25e1e21e9545120592bc1a3561ee49603 data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json @@ -2601,10 +2602,11 @@ c50077a130bc43cd3659faa02ce95789399478b2 data/create/recipes/crafting/kinetics/b a3c99b38fc8896c9971a5e9dcbae747786ff610d data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json 43233c87cfb80d57345a561c3dd2646c8d3c0d8a data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json 860796dce8756c4cd234f18bbe52108f3b2254c2 data/create/recipes/crafting/kinetics/cart_assembler.json -3bc3510b64e576d68b19f4ceb5d9bd6591dbcf6c data/create/recipes/crafting/kinetics/chute.json +abf8a28b4b8ae4ba15beed938736ef3a5a7b27ff data/create/recipes/crafting/kinetics/chute.json a80e3eabbeba2931d0d58dd9492018a0d78da8b5 data/create/recipes/crafting/kinetics/clockwork_bearing.json 501ad764d087b40ce36f3d4256b0d5ee25b2081e data/create/recipes/crafting/kinetics/clutch.json e46bcc6778ff5118252fe6371ef817ae1302253a data/create/recipes/crafting/kinetics/cogwheel.json +11fe2ccc11f470e5735c3e848a944f889697ff73 data/create/recipes/crafting/kinetics/controller_rail.json 3093be508f6597eee2f3230cd9072f12d2821a6f data/create/recipes/crafting/kinetics/copper_valve_handle.json 886caa21481e62d44d70fd103f8d29f9bac64d60 data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json 59db5170cec390fe6c20a27d6154deebe044580c data/create/recipes/crafting/kinetics/crafter_slot_cover.json @@ -2760,6 +2762,7 @@ b83ef0af844ca068e0353330b8273bace5b6a8c3 data/create/recipes/crushing/coal_ore.j da4ed79975391ec9f263869936b84474f1f727d3 data/create/recipes/crushing/copper_block.json d49472887067c871943de1b80887b169682eeca9 data/create/recipes/crushing/copper_ore.json 4c482db5575b74b4111800602d7fce22b2e6d32a data/create/recipes/crushing/diamond_horse_armor.json +28ba8cf655bd11bb6c600cd862b98349c812915f data/create/recipes/crushing/diamond_ore.json e1bb927c62c59f5bf5063bd110da9231de378a1f data/create/recipes/crushing/emerald_ore.json b26b1f0dccf2ffb194ce12173890a83e93369b39 data/create/recipes/crushing/glowstone.json 50e75cdde6996c47b5dc25f27b84367040249107 data/create/recipes/crushing/gold_ore.json diff --git a/src/generated/resources/assets/create/blockstates/controller_rail.json b/src/generated/resources/assets/create/blockstates/controller_rail.json index e09dd08ba..033305478 100644 --- a/src/generated/resources/assets/create/blockstates/controller_rail.json +++ b/src/generated/resources/assets/create/blockstates/controller_rail.json @@ -16,13 +16,13 @@ "y": 90 }, "backwards=false,shape=ascending_east": { - "model": "create:block/controller_rail/block_ascending_north", - "y": 90 - }, - "backwards=true,shape=ascending_east": { "model": "create:block/controller_rail/block_ascending_south", "y": 270 }, + "backwards=true,shape=ascending_east": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, "backwards=false,shape=ascending_west": { "model": "create:block/controller_rail/block_ascending_north", "y": 270 @@ -39,11 +39,11 @@ "y": 180 }, "backwards=false,shape=ascending_south": { - "model": "create:block/controller_rail/block_ascending_north", - "y": 180 + "model": "create:block/controller_rail/block_ascending_south" }, "backwards=true,shape=ascending_south": { - "model": "create:block/controller_rail/block_ascending_south" + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 } } } \ 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 a4cffcde7..3b646b920 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", - "down": "false", "east": "true", + "down": "false", "up": "true" }, "apply": { @@ -314,8 +314,8 @@ { "when": { "west": "true", - "down": "false", "east": "false", + "down": "false", "up": "true" }, "apply": { @@ -325,8 +325,8 @@ { "when": { "west": "false", - "down": "true", "east": "true", + "down": "true", "up": "false" }, "apply": { @@ -336,8 +336,8 @@ { "when": { "west": "true", - "down": "true", "east": "false", + "down": "true", "up": "false" }, "apply": { @@ -347,8 +347,8 @@ { "when": { "west": "false", - "down": "true", "east": "false", + "down": "true", "up": "true" }, "apply": { @@ -358,8 +358,8 @@ { "when": { "west": "false", - "down": "false", "east": "false", + "down": "false", "up": "true" }, "apply": { @@ -369,8 +369,8 @@ { "when": { "west": "false", - "down": "true", "east": "false", + "down": "true", "up": "false" }, "apply": { @@ -380,8 +380,8 @@ { "when": { "west": "true", - "down": "false", "east": "true", + "down": "false", "up": "false" }, "apply": { @@ -391,8 +391,8 @@ { "when": { "west": "false", - "down": "false", "east": "true", + "down": "false", "up": "false" }, "apply": { @@ -402,8 +402,8 @@ { "when": { "west": "true", - "down": "false", "east": "false", + "down": "false", "up": "false" }, "apply": { @@ -413,8 +413,8 @@ { "when": { "west": "false", - "down": "false", "east": "false", + "down": "false", "up": "false" }, "apply": { diff --git a/src/generated/resources/assets/create/models/item/controller_rail.json b/src/generated/resources/assets/create/models/item/controller_rail.json index 3524bff1a..d224fa651 100644 --- a/src/generated/resources/assets/create/models/item/controller_rail.json +++ b/src/generated/resources/assets/create/models/item/controller_rail.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "create:block/controller_rail_analog" + "layer0": "create:block/controller_rail_item" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json new file mode 100644 index 000000000..0e88c3224 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:crafting/kinetics/controller_rail" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "minecraft:powered_rail" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:crafting/kinetics/controller_rail" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/chute.json b/src/generated/resources/data/create/recipes/crafting/kinetics/chute.json index 9b272de35..e8bddbe4b 100644 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/chute.json +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/chute.json @@ -13,6 +13,7 @@ } }, "result": { - "item": "create:chute" + "item": "create:chute", + "count": 4 } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/controller_rail.json b/src/generated/resources/data/create/recipes/crafting/kinetics/controller_rail.json new file mode 100644 index 000000000..fadc95421 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crafting/kinetics/controller_rail.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "A A", + "ASA", + "AEA" + ], + "key": { + "A": { + "tag": "forge:ingots/gold" + }, + "E": { + "item": "create:electron_tube" + }, + "S": { + "tag": "forge:rods/wooden" + } + }, + "result": { + "item": "create:controller_rail", + "count": 6 + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/diamond_ore.json b/src/generated/resources/data/create/recipes/crushing/diamond_ore.json new file mode 100644 index 000000000..f16220528 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/diamond_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "item": "minecraft:diamond_ore" + } + ], + "results": [ + { + "item": "minecraft:diamond", + "count": 2 + }, + { + "item": "minecraft:diamond", + "chance": 0.25 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 500 +} \ 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 a4ba851a1..39f44f9c8 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -1,10 +1,29 @@ package com.simibubi.create; +import static com.simibubi.create.AllMovementBehaviours.addMovementBehaviour; +import static com.simibubi.create.AllTags.tagBlockAndItem; +import static com.simibubi.create.content.AllSections.SCHEMATICS; +import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; +import static com.simibubi.create.foundation.data.BlockStateGen.oxidizedBlockstate; +import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; +import static com.simibubi.create.foundation.data.ModelGen.customItemModel; +import static com.simibubi.create.foundation.data.ModelGen.oxidizedItemModel; + import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.content.AllSections; import com.simibubi.create.content.contraptions.base.CasingBlock; -import com.simibubi.create.content.contraptions.components.actors.*; +import com.simibubi.create.content.contraptions.components.actors.DrillBlock; +import com.simibubi.create.content.contraptions.components.actors.DrillMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.HarvesterBlock; +import com.simibubi.create.content.contraptions.components.actors.HarvesterMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.PloughBlock; +import com.simibubi.create.content.contraptions.components.actors.PloughMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock; +import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceMovement; +import com.simibubi.create.content.contraptions.components.actors.SawMovementBehaviour; +import com.simibubi.create.content.contraptions.components.actors.SeatBlock; +import com.simibubi.create.content.contraptions.components.actors.SeatMovementBehaviour; import com.simibubi.create.content.contraptions.components.clock.CuckooClockBlock; import com.simibubi.create.content.contraptions.components.crafter.CrafterCTBehaviour; import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; @@ -27,7 +46,11 @@ import com.simibubi.create.content.contraptions.components.motor.CreativeMotorGe import com.simibubi.create.content.contraptions.components.press.MechanicalPressBlock; import com.simibubi.create.content.contraptions.components.saw.SawBlock; import com.simibubi.create.content.contraptions.components.saw.SawGenerator; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.*; +import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingBlock; +import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock; +import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock; +import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedBearingMovementBehaviour; +import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock.ChassisCTBehaviour; import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock; @@ -39,6 +62,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.pis 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.ControllerRailGenerator; 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; @@ -47,7 +71,15 @@ import com.simibubi.create.content.contraptions.fluids.PumpBlock; import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyBlock; import com.simibubi.create.content.contraptions.fluids.actors.ItemDrainBlock; import com.simibubi.create.content.contraptions.fluids.actors.SpoutBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.*; +import com.simibubi.create.content.contraptions.fluids.pipes.BracketBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.BracketBlockItem; +import com.simibubi.create.content.contraptions.fluids.pipes.BracketGenerator; +import com.simibubi.create.content.contraptions.fluids.pipes.EncasedPipeBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.FluidValveBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.GlassFluidPipeBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.SmartFluidPipeBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.SmartFluidPipeGenerator; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankGenerator; import com.simibubi.create.content.contraptions.fluids.tank.FluidTankItem; @@ -69,7 +101,12 @@ import com.simibubi.create.content.contraptions.relays.elementary.BracketedKinet import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; import com.simibubi.create.content.contraptions.relays.elementary.CogwheelBlockItem; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.content.contraptions.relays.encased.*; +import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyBlock; +import com.simibubi.create.content.contraptions.relays.encased.ClutchBlock; +import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock; +import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltGenerator; +import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; +import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; @@ -80,22 +117,49 @@ import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; import com.simibubi.create.content.logistics.block.chute.ChuteItem; import com.simibubi.create.content.logistics.block.depot.DepotBlock; -import com.simibubi.create.content.logistics.block.diodes.*; -import com.simibubi.create.content.logistics.block.funnel.*; +import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; +import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; +import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterGenerator; +import com.simibubi.create.content.logistics.block.diodes.PoweredLatchBlock; +import com.simibubi.create.content.logistics.block.diodes.PoweredLatchGenerator; +import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterBlock; +import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterGenerator; +import com.simibubi.create.content.logistics.block.diodes.ToggleLatchBlock; +import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator; +import com.simibubi.create.content.logistics.block.funnel.AndesiteBeltFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.AndesiteFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.BeltFunnelGenerator; +import com.simibubi.create.content.logistics.block.funnel.BrassBeltFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.BrassFunnelBlock; +import com.simibubi.create.content.logistics.block.funnel.FunnelMovementBehaviour; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmItem; -import com.simibubi.create.content.logistics.block.redstone.*; +import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; +import com.simibubi.create.content.logistics.block.redstone.ContactMovementBehaviour; +import com.simibubi.create.content.logistics.block.redstone.ContentObserverBlock; +import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; +import com.simibubi.create.content.logistics.block.redstone.NixieTubeGenerator; +import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; +import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; +import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkGenerator; +import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchBlock; import com.simibubi.create.content.palettes.MetalBlock; import com.simibubi.create.content.schematics.block.SchematicTableBlock; import com.simibubi.create.content.schematics.block.SchematicannonBlock; import com.simibubi.create.foundation.config.StressConfigDefaults; -import com.simibubi.create.foundation.data.*; +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.BlockStateGen; +import com.simibubi.create.foundation.data.BuilderTransformers; +import com.simibubi.create.foundation.data.CreateRegistrate; +import com.simibubi.create.foundation.data.ModelGen; +import com.simibubi.create.foundation.data.SharedProperties; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.worldgen.OxidizingBlock; import com.tterrag.registrate.util.entry.BlockEntry; + import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.SoundType; @@ -112,15 +176,6 @@ import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.common.Tags; import net.minecraftforge.common.ToolType; -import static com.simibubi.create.AllMovementBehaviours.addMovementBehaviour; -import static com.simibubi.create.AllTags.tagBlockAndItem; -import static com.simibubi.create.content.AllSections.SCHEMATICS; -import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; -import static com.simibubi.create.foundation.data.BlockStateGen.oxidizedBlockstate; -import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; -import static com.simibubi.create.foundation.data.ModelGen.customItemModel; -import static com.simibubi.create.foundation.data.ModelGen.oxidizedItemModel; - public class AllBlocks { private static final CreateRegistrate REGISTRATE = Create.registrate() @@ -685,14 +740,13 @@ public class AllBlocks { public static final BlockEntry CONTROLLER_RAIL = REGISTRATE.block("controller_rail", ControllerRailBlock::new) .initialProperties(() -> Blocks.POWERED_RAIL) - .blockstate(BlockStateGen.controllerRail()) + .blockstate(new ControllerRailGenerator()::generate) .addLayer(() -> RenderType::getCutoutMipped) .onRegister(CreateRegistrate.blockColors(() -> AllColorHandlers::getRedstonePower)) - //.onRegister(CreateRegistrate.blockColorProperty(ControllerRailBlock.POWER)) .tag(BlockTags.RAILS) .item() - .model((c, p) -> p.generated(c, Create.asResource("block/controller_rail_analog"))) - .build() + .model((c, p) -> p.generated(c, Create.asResource("block/" + c.getName() + "_item"))) + .build() .register(); public static final BlockEntry MINECART_ANCHOR = 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 index 7851bf415..f9a4ce521 100644 --- 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 @@ -1,19 +1,35 @@ package com.simibubi.create.content.contraptions.components.tracks; +import static net.minecraft.state.properties.RailShape.NORTH_SOUTH; + +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + +import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.utility.Iterate; 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.block.Blocks; import net.minecraft.entity.item.minecart.AbstractMinecartEntity; +import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.ItemUseContext; -import net.minecraft.state.*; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.EnumProperty; +import net.minecraft.state.IProperty; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; 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.Direction.Axis; +import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.Mirror; import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; @@ -23,67 +39,94 @@ 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 BooleanProperty BACKWARDS = BooleanProperty.create("backwards"); - /* - * SHAPE | BACKWARDS | FACING - * N/S FALSE North - * N/S TRUE South - * E/W FALSE West - * E/W TRUE East - * ASC_X FALSE X - * ASC_X TRUE X.opposite() - * */ public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15; public ControllerRailBlock(Properties properties) { super(true, properties); - this.setDefaultState(this.stateContainer.getBaseState().with(POWER, 0).with(BACKWARDS, false).with(SHAPE, NORTH_SOUTH)); + 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(); + return (isStateBackwards(state) ? 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; + 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; } } + @Override + protected BlockState getUpdatedState(World world, BlockPos pos, BlockState state, boolean p_208489_4_) { + BlockState updatedState = super.getUpdatedState(world, pos, state, p_208489_4_); + if (updatedState.get(SHAPE) == state.get(SHAPE)) + return updatedState; + BlockState reversedUpdatedState = updatedState; + + // Rails snapping to others at 90 degrees should follow their direction + if (getPointingTowards(state).getAxis() != getPointingTowards(updatedState).getAxis()) { + for (boolean opposite : Iterate.trueAndFalse) { + Direction offset = getPointingTowards(updatedState); + if (opposite) + offset = offset.getOpposite(); + for (BlockPos adjPos : Iterate.hereBelowAndAbove(pos.offset(offset))) { + BlockState adjState = world.getBlockState(adjPos); + if (!AllBlocks.CONTROLLER_RAIL.has(adjState)) + continue; + if (getPointingTowards(adjState).getAxis() != offset.getAxis()) + continue; + if (adjState.get(BACKWARDS) != reversedUpdatedState.get(BACKWARDS)) + reversedUpdatedState = reversedUpdatedState.cycle(BACKWARDS); + } + } + } + + // Replace if changed + if (reversedUpdatedState != updatedState) + world.setBlockState(pos, reversedUpdatedState); + return reversedUpdatedState; + } + private static void decelerateCart(BlockPos pos, AbstractMinecartEntity cart) { - Vec3d diff = VecHelper.getCenterOf(pos).subtract(cart.getPositionVec()); + Vec3d diff = VecHelper.getCenterOf(pos) + .subtract(cart.getPositionVec()); cart.setMotion(diff.x / 16f, 0, diff.z / 16f); + + if (cart instanceof FurnaceMinecartEntity) { + FurnaceMinecartEntity fme = (FurnaceMinecartEntity) cart; + fme.pushX = fme.pushZ = 0; + } } 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)))); + 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); + return (base == null ? getDefaultState() : base).with(BACKWARDS, + direction.getAxisDirection() == AxisDirection.POSITIVE); } @Override @@ -101,8 +144,16 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl 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) + double targetSpeed = cart.getMaxSpeedWithRail() * state.get(POWER) / 15f; + + if (cart instanceof FurnaceMinecartEntity) { + FurnaceMinecartEntity fme = (FurnaceMinecartEntity) cart; + fme.pushX = accelerationVec.x; + fme.pushZ = accelerationVec.z; + } + + Vec3d motion = cart.getMotion(); + if ((motion.dotProduct(accelerationVec) >= 0 || motion.lengthSquared() < 0.0001) && targetSpeed > 0) cart.setMotion(accelerationVec.scale(targetSpeed)); else decelerateCart(pos, cart); @@ -147,105 +198,27 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl if (backwardsPower != 0) break; } + if (forwardDistance > 8 && backwardsDistance > 8) return 0; - else if (backwardsPower == 0 && forwardDistance <= 8) + if (backwardsPower == 0 && forwardDistance <= 8) return forwardPower; - else if (forwardPower == 0 && backwardsDistance <= 8) + if (forwardPower == 0 && backwardsDistance <= 8) return backwardsPower; - else if (backwardsPower != 0 && forwardPower != 0) - return MathHelper.ceil((backwardsPower * forwardDistance + forwardPower * backwardsDistance) / (double) (forwardDistance + backwardsDistance)); + 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}) { + 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); @@ -268,7 +241,8 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl private void placeAndNotify(BlockState state, BlockPos pos, World world) { world.setBlockState(pos, state, 3); world.notifyNeighborsOfStateChange(pos.down(), this); - if (state.get(SHAPE).isAscending()) + if (state.get(SHAPE) + .isAscending()) world.notifyNeighborsOfStateChange(pos.up(), this); } @@ -279,11 +253,13 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl 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()) + for (BlockPos testPos : Iterate.hereBelowAndAbove(baseTestPos)) { + if (testPos.getY() > from.getY() && !current.get(SHAPE) + .isAscending()) continue; BlockState testState = world.getBlockState(testPos); - if (testState.getBlock() instanceof ControllerRailBlock && getAccelerationVector(testState).equals(accelerationVec)) + if (testState.getBlock() instanceof ControllerRailBlock + && getAccelerationVector(testState).equals(accelerationVec)) return testPos; } return null; @@ -298,4 +274,47 @@ public class ControllerRailBlock extends AbstractRailBlock implements IWrenchabl public int getComparatorInputOverride(BlockState state, World world, BlockPos pos) { return state.get(POWER); } + + @Override + public BlockState rotate(BlockState state, Rotation rotation) { + if (rotation == Rotation.NONE) + return state; + + RailShape railshape = Blocks.POWERED_RAIL.getDefaultState() + .with(SHAPE, state.get(SHAPE)) + .rotate(rotation) + .get(SHAPE); + state = state.with(SHAPE, railshape); + + if (rotation == Rotation.CLOCKWISE_180 + || (getPointingTowards(state).getAxis() == Axis.Z) == (rotation == Rotation.COUNTERCLOCKWISE_90)) + return state.cycle(BACKWARDS); + + return state; + } + + @Override + public BlockState mirror(BlockState state, Mirror mirror) { + if (mirror == Mirror.NONE) + return state; + + RailShape railshape = Blocks.POWERED_RAIL.getDefaultState() + .with(SHAPE, state.get(SHAPE)) + .mirror(mirror) + .get(SHAPE); + state = state.with(SHAPE, railshape); + + if ((getPointingTowards(state).getAxis() == Axis.Z) == (mirror == Mirror.LEFT_RIGHT)) + return state.cycle(BACKWARDS); + + return state; + } + + public static boolean isStateBackwards(BlockState state) { + return state.get(BACKWARDS) ^ isReversedSlope(state); + } + + public static boolean isReversedSlope(BlockState state) { + return state.get(SHAPE) == RailShape.ASCENDING_SOUTH || state.get(SHAPE) == RailShape.ASCENDING_EAST; + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailGenerator.java new file mode 100644 index 000000000..fd696ed47 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailGenerator.java @@ -0,0 +1,55 @@ +package com.simibubi.create.content.contraptions.components.tracks; + +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.state.IProperty; +import net.minecraft.state.properties.RailShape; +import net.minecraftforge.client.model.generators.ModelFile; + +public class ControllerRailGenerator extends SpecialBlockStateGen { + + @Override + protected IProperty[] getIgnoredProperties() { + return new IProperty[] { ControllerRailBlock.POWER }; + } + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + RailShape shape = state.get(ControllerRailBlock.SHAPE); + boolean backwards = ControllerRailBlock.isStateBackwards(state); + int rotation = backwards ? 180 : 0; + + switch (shape) { + case EAST_WEST: + case ASCENDING_WEST: + return rotation + 270; + case ASCENDING_EAST: + return rotation + 90; + case ASCENDING_SOUTH: + return rotation + 180; + default: + return rotation; + } + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + RailShape shape = state.get(ControllerRailBlock.SHAPE); + boolean backwards = ControllerRailBlock.isStateBackwards(state); + + String model = shape.isAscending() ? backwards ? "ascending_south" : "ascending_north" : "north_south"; + return AssetLookup.partialBaseModel(ctx, prov, model); + } + +} 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 cdb2a16e3..047d9b454 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -1,6 +1,16 @@ package com.simibubi.create.foundation.data; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; +import java.util.function.BiFunction; +import java.util.function.Function; + +import org.apache.commons.lang3.tuple.Pair; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; @@ -8,7 +18,6 @@ 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.mounted.CartAssembleRailType; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; -import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock; import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; @@ -21,6 +30,7 @@ import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.RegistrateBlockstateProvider; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.state.BooleanProperty; @@ -33,11 +43,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.client.model.generators.MultiPartBlockStateBuilder; -import org.apache.commons.lang3.tuple.Pair; - -import java.util.*; -import java.util.function.BiFunction; -import java.util.function.Function; public class BlockStateGen { @@ -428,47 +433,4 @@ public class BlockStateGen { .condition(propertyMap.get(Pointing.DOWN.getCombinedDirection(positiveAxis)), down) .end(); } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> controllerRail() { - return (c, p) -> p.getVariantBuilder(c.get()) - .forAllStatesExcept(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))) - .rotationY(rotation % 360) - .build(); - }, ControllerRailBlock.POWER); - } } diff --git a/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java index bc4ee17e2..ad994851e 100644 --- a/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java @@ -5,21 +5,26 @@ import com.tterrag.registrate.providers.RegistrateBlockstateProvider; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.state.IProperty; import net.minecraft.util.Direction; import net.minecraftforge.client.model.generators.ConfiguredModel; import net.minecraftforge.client.model.generators.ModelFile; public abstract class SpecialBlockStateGen { + protected IProperty[] getIgnoredProperties() { + return new IProperty[0]; + } + public final void generate(DataGenContext ctx, RegistrateBlockstateProvider prov) { prov.getVariantBuilder(ctx.getEntry()) - .forAllStates(state -> { + .forAllStatesExcept(state -> { return ConfiguredModel.builder() .modelFile(getModel(ctx, prov, state)) .rotationX((getXRotation(state) + 360) % 360) .rotationY((getYRotation(state) + 360) % 360) .build(); - }); + }, getIgnoredProperties()); } protected int horizontalAngle(Direction direction) { diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java index b5e74e900..2b1e91a29 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java @@ -75,6 +75,11 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { .output(Items.EMERALD, 2) .output(.25f, Items.EMERALD, 1) .output(.125f, Blocks.COBBLESTONE)), + + DIAMOND_ORE = create(() -> Blocks.DIAMOND_ORE, b -> b.duration(500) + .output(Items.DIAMOND, 2) + .output(.25f, Items.DIAMOND, 1) + .output(.125f, Blocks.COBBLESTONE)), NETHER_WART_NO_QUARK = create("nether_wart_block_no_quark", b -> b.duration(150) .require(Blocks.NETHER_WART_BLOCK) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java index 15a02e6fa..1265126f4 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java @@ -329,6 +329,15 @@ public class StandardRecipeGen extends CreateRecipeProvider { .patternLine("CRC") .patternLine("L L")), + CONTROLLER_RAIL = create(AllBlocks.CONTROLLER_RAIL).returns(6) + .unlockedBy(() -> Items.POWERED_RAIL) + .viaShaped(b -> b.key('A', I.gold()) + .key('E', I.electronTube()) + .key('S', Tags.Items.RODS_WOODEN) + .patternLine("A A") + .patternLine("ASA") + .patternLine("AEA")), + HAND_CRANK = create(AllBlocks.HAND_CRANK).unlockedBy(I::andesite) .viaShaped(b -> b.key('A', I.andesite()) .key('C', ItemTags.PLANKS) @@ -536,6 +545,7 @@ public class StandardRecipeGen extends CreateRecipeProvider { .patternLine("AA")), CHUTE = create(AllBlocks.CHUTE).unlockedBy(I::andesite) + .returns(4) .viaShaped(b -> b.key('A', I.ironSheet()) .key('I', I.andesite()) .patternLine("II") diff --git a/src/main/java/com/simibubi/create/foundation/utility/Iterate.java b/src/main/java/com/simibubi/create/foundation/utility/Iterate.java index 84e7cccd1..70206344d 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Iterate.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Iterate.java @@ -38,4 +38,8 @@ public class Iterate { public static List hereAndBelow(BlockPos pos) { return Arrays.asList(pos, pos.down()); } + + public static List hereBelowAndAbove(BlockPos pos) { + return Arrays.asList(pos, pos.down(), pos.up()); + } } 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 deleted file mode 100644 index f114dde12136d880f9dc1bd4c2d6466442604984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}B0G|+7AU$W!oQ#Z&lO3|{xvqECX(ll-ZJiLgq`|AGGB3zkWA&QVpATvo zGBCvW8mwk!OlM*QYFVM5lL4fJN`m}?|DywjNBj2+0cAN0JR*x382Ao@Fyrz36)8Z$ zR!RX#E}C{TWlm19cg2?4LD>C6{?UEg;tGST`%pL2LF!#zH0>qV*7 zOmAdQ9dEoYsBWxy*Ls~v)_K0kK}FMA(%V1%O||}azx+SrHVdv3RvrAIKnF2+y85}S Ib4q9e0O3-7H~;_u diff --git a/src/main/resources/assets/create/textures/block/controller_rail_base.png b/src/main/resources/assets/create/textures/block/controller_rail_base.png index 21f528338699b789b60ad6a9e86f20d298ef8513..c8f72e61c20f8ce08f0a6df27ece26107bcb585a 100644 GIT binary patch delta 657 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 Bc=-ST literal 0 HcmV?d00001 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 deleted file mode 100644 index 346d2fb671b9c36bea25f64a61acbd0dd2faa0d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}x0G|+7AU$W!oQ#Z&lO3|{xvqECX(ll-ZJiLgq`|AGGB3zkWA&QVpATwz zF*C>b8W;jqGcY`0R(}Sh1WSVag8!od2GzAQlYo+(1s;*b3=DjSL74G){)!Z!V2h`V zV~9quZ@(iSiy{XLJIfS7_kaIyxgJgV9l?3^>|?%&n&k>R?EM;awwg^^~ZdM*0g+iv*Xf=v$ASyuUc_E<9oWZZszrm|M&gouRFt)S<`U#1JFGTp00i_>zopr E06IT?F8}}l 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 deleted file mode 100644 index bd61741a5f5dd2f93e73044c3af87ca434030b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}Z0G|+7AU$W!oQ#Z&lO3|{xvqECXN*w4h+0kVLBd$K_WkP`LPr!hSeTi-YE&NnYmW_CbL;0Dt*W-uJO($toD6pNFhmyVsdzTZ z+!2kIpLZ@IpFPafPwHA_l0jpM@ikVCDV{D?s%uX(-Z=Jo&-;Ydw+F=dVz=^DSVz72 zFzs!@hH{N|=KjO}X)(LXWmaB4)~B}g$sOTid{6WLeUd%?|96`G-2`sMZ~yHiflgxZ MboFyt=akR{0OqEF^#A|> diff --git a/src/main/resources/assets/create/textures/block/controller_rail_tint.png b/src/main/resources/assets/create/textures/block/controller_rail_tint.png index b23090504790481f6792ad3721f22c9b3776baf2..ac6002c83a3547ced9344aad2f80f51f9f3ab2c8 100644 GIT binary patch delta 571 zcmV-B0>u5<2gwAG8Gi!+001a04^sdD0fT8nLr_UWLm*IcZ)Rz1WdHyu&y|r&C`3^l z#(xHpN0M1c)LjfVl#nbnWKxu7MtLpVd&dkl_nPh<*;p!DW#O?gSlC#zwXju6d6cXy zt%!|u{m&gWlN#mJ>HPZ6`M%Ei4g_*(({d|%z_PPWG!oXPXMbk3s%L6xqmfSPb<@pE z#75(k93Quosr9B?W%0jJpICHFDAR<8%#4#2UJxEw%Vres3J1+4Jt2H5+~vpxh3}Pa z)X`ud)pp1i!g0002ACwj5~000Se zQchF<|NsC0|Ns90Q%`sj00009a7bBm000ic000ic0Tn1pfB*mhFiAu~R47wp;6MY! z3otT488lDapZv3T?;NJv@B93-he@=l&c4C2KOkBNERs-LQx^h-Wq}o%23%kQF3__?&p$pbHW| za$R=$jdR{%foBGdRAQbuNG#@CSZ-lfFjV4c;*g?hlrN-RRyc2QR!bGuxF>(1KdY@I zxlVHkQ7j>bIDbUQsGx`vEQD#*NHLM1{YV@CpyQ8|OD0zlj2sInLxtq{!T;cQw`Oi? z(oOP5fX)}&{ulv#yFk5a+uz5wT|WW5&%l+|^p|VE>?i5frWQH^dbfd#>!v2}0hc?# zz>_W+k|TL(3b`Ecen#Jv0s3!&?lrf!#y(CTfE0DLe18KR90H?x%3g2t?ylC}{yo#^ z?+2R!a<>iIT08&%00v@9M??Vs0RI60puMM)00009a7bBm000id000id0mpBsWB>pF z2XskIMF->y9TEjQM|>w30005iNklA!TrGX}pgc|~Z4gopPK|xUm zhvINcR)29g1VN{B$mUSDZmC<*!R6czgn*?`Dxzd?5GjWscO-@zBv23}gjyPs zT<&t|<@zok-~Zq5dEXc2VHgIwu5-M*Nm?B5ZldcthG9f&R{$DyHCm9BJf7!?qdkqI zJq>fGMx(Cc`@R6!D6JE}vj$*wPSCar0F-43*MD_+-}<%myW=>>N}kbYpF**~$Ii*( zf&Eq&?RoHe=lePLwr@xm<(r4MrSq@XqxpWTyRZOo_U|m=+4DSM+qMYje+MG6a4Cb( zvk(GBQE(hbH0mk?cNm>ZFsR*x(Wy^amT33-n5M~WHltFhkj-Xk_xe0~kOwPJYb6;J zVt;;rVjezAaCrOT5(aUfVN9n}(d~9ce1CN6r!&|ntut_kH0mmz=ZVQ=LbY1OwrvsT zw35Nqtp&vPw?55g6M$SUM<$b@-Rm!@vsTqXC@)~}B*9?k>9r`0sdZ46rPN*s(^x1j zfUjL-05Bep#fMi9C4kcW@ZHC+#qW2wq(@L?qptGu&6njm2(w@v9PsJKpZOobSiIv> wR`SqGse_spFc`Q)v~6ugFWi^ntsXM?4`4LxxFTG_zW@LL07*qoM6N<$f;wKvM*si- From da5ae87bec7b4f5e76cdc53c44ae020eb29d4afb Mon Sep 17 00:00:00 2001 From: Daniel Amberson Date: Mon, 30 Nov 2020 10:53:12 -0600 Subject: [PATCH 4/4] contrast? in my copper??? it's more likely than you think! --- .../create/textures/block/copper_plating.png | Bin 552 -> 545 bytes .../create/textures/block/encased_pipe.png | Bin 2126 -> 537 bytes .../create/textures/block/fluid_pipe.png | Bin 669 -> 1508 bytes .../create/textures/block/fluid_valve.png | Bin 696 -> 1275 bytes .../textures/block/glass_fluid_pipe.png | Bin 330 -> 506 bytes .../textures/block/hose_pulley_magnet.png | Bin 2025 -> 539 bytes .../block/portable_fluid_interface.png | Bin 822 -> 1323 bytes .../assets/create/textures/block/pump.png | Bin 535 -> 524 bytes .../create/textures/block/smart_pipe_1.png | Bin 363 -> 396 bytes .../create/textures/block/smart_pipe_2.png | Bin 402 -> 493 bytes .../assets/create/textures/block/spout.png | Bin 1687 -> 1525 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/create/textures/block/copper_plating.png b/src/main/resources/assets/create/textures/block/copper_plating.png index ee40eba885e569869a992ae5f5ad5426c7edff63..5c5fab81fad26187d92c9f6c878bb6a288e8c116 100644 GIT binary patch delta 494 zcmVvX(_UD!j|$Xo0UyOu{bgslU7E}!A`m+d`(GEBAa3Z zTgwKIU`7-|GP$ED3}Gk+^MARi$e$!S0zi2Xf}Z11`?=5Jr)G!!IN_#z1Q72q z#K4$SS?s;J{M~r-xI#a;UZ-o5A<5$v^m^`?7(k4JrY#yk?m z;R^7=P!@VneH1Hj_I%M~E3W6*D%BRp0Nw$RPWE>FlBv+c^CuOpOmxqaVHG@4G^5M?rtpS1poj507*qoM6N<$g2rI$+5i9m delta 501 zcmVe3}^0~P2Ed9I$_X(AXD2ZzP6ZV5ataaiqoGvX8_a{FOJ;5m-4kRKVzcga7NC~(D!T{Rnc zG~30)xJkUUB=o05*Cl1cp$^RV@za{lr2G$3BohGvF5k`ZobvrjWxU~qzCP}2W@cDs zYNb!UeltfWR2Bfh$6`SUQj)d>-GA&%k6UxVp&p$XST78|Jyd-OkpJY rc7xlRpTkCP2D4N+8bh@G4?=zc>$$)Z7fozP00000NkvXXu0mjfbb{hQ diff --git a/src/main/resources/assets/create/textures/block/encased_pipe.png b/src/main/resources/assets/create/textures/block/encased_pipe.png index 41205f1afbf37a54bfe2987f7e8b7c37dd21c1ce..d9976cb7912b705844de997725e1f5d70d677a99 100644 GIT binary patch delta 523 zcmV+m0`&dP5Sav!8Gi-<001BJ|6u?C00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000SaNLh0L01m$Z01m$aI0aKA00055Nkl%ufW#UfgQ#15;s{oMVa%fk+=+hI}$vX~5l=?<-{W zauaf@0h7UgNPia%5b3lHI-_H3Itr0d<--}lGrZ#fj0e-gV4OBOo}6C8dA>k+b4K`#OJly2@E16!*!{O5uiN3D!0Z^~)dIgq z_;D8P52G1}%)-cq1oG>n>{HRj5mw(K0+INZXR?#%Y#S=LF%aQ;~*f%9bBx^R}88*$JJ zI;4*>AnYzDY@BT@?OChCP|#1JZt#wY4f{!-%G5yESy=q+;-3L{2SHi8=IN;)9{>OV N07*qoL&E~9 delta 2104 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 buNCi?oJ;NPmPUK6P7BEak-;a?iuJ!!E4kMWJp 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 Ib4q9e0Izu|1poj5 diff --git a/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png b/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png index 0ad8834d590629b341aa8c93690b3f3f6acaacc1..af297ab74298b91ca73e3cdbd8ff2aa0c1cdf834 100644 GIT binary patch delta 463 zcmV;=0Wki`0{R1x83+ad001BJ|6!3KAb$yPNLh0L04^T@04^T^cLUPZJpAC@Z2_#ip!{F^1Pwdd|?}o#MlzF=EjNA z5gzM0R+dx<7nx1#_DMrJsX|p|5QxaU$%`5cLDSppn@s~+_Z^jc?PmcB2>JJU#xNYm z!9626F+RHn0=Xg<5@FocTD-R0_kRhBy}ntjy(qw{l*(iKAeul{rBKF$G)gegYV;h)er8V5#p3GM)*H)Cz7NW**yCP)Hm$| z!#SYg;Jfu1eGA@qKp4eCwj{vdF_9$1sAOI_z1Y$R@eM*^zx#GYbZ7to002ovPDHLk FV1jL delta 286 zcmeyxe2Qs;BnLAC1A~SxfAB;_g?h^XpAgq+L0(O6PO+2c0wv~!dbR|(bss#tG}`M( zcT)Ab?FTEOFHbJmlpDC>!p#e>Uan3HoEzfV?C%Oxd?D}HaUdmJ666>B9|JIKs=dPj zl;$k(h%9Dc&{F_m#;Y=N(m=s#PZ!4!jr!nJ|872JMUK_tjx`P2|NcMDcSR?9U6W^b z0OO^v{~mccsM(!4I3>_!Mt17{8LnJQOkeJOpOf2iq3l@U!k&f8vcwGCD*0+}C<$3s zyO{o)xVQ3bKyj02**)tSYHD8$+)IC{7jS&ht~mX7*LS^*emt>$r%m4o+wE!KYQKN5 S`wRm&&?TO(elF{r5}E*7lzp%O diff --git a/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png b/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png index 34bed613cf99cfd68917bd9d744cffa20752d6f8..acd3653def13d7c456fb38fa3e9dbbcaf136b57f 100644 GIT binary patch delta 514 zcmV+d0{#8z51Ry#BYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vG? zA^-p`A_1!6-I4$R0kBC#K~y+Tb&}6Y0#OvkzdMdILzzY`(n=;UXebJC)3RQ`T~Mnw zy+Zqff?lHs@F9d&fk>Oc0?7;g6Hyxfgk#BV&TS^fX8eKNdw)LW-1D7tWW{0;i=DRU zXO>yw?RDbRbsdD`I4G4$@?O}nL~_nRw>QM->l^CnR#Mml6{%TW#C9!=+m5g^OESK0 zYRoVUv|25hOid z^9ebiD$YpAYEO?`e(c9lM9yG1X0rEQ=XVwqlYUWYvYSMjo!`DPFF$$)t1J4%3@9c& zo6UmO7$oGt(<5m#8m^-{;_aFzT6XQ)NmfJqmvdM7KA@4;bPJ;s9*j82|tP07*qoM6N<$ Ef(XIvS^xk5 delta 2012 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 delta 781 zcmZ3@wT*3pBnLAC1B1(wu45Aw73voS_=LEE_|C3&wvImD-X8AmR+hH<`o?N%T9J{F zAt53D{{D5<)eek|-i(Y9jEwG#Olb@Z(-|1nF)*BEU|7n)proW85fSlVQqs>eEj@lN zEp86Y_6{54{Ep=Xo~#QqFfdS4QFXvaSTE>qYmpum zvOL7I+}ge(GqEr!T2@xJu^=NM#8*#GPeny#c7PMmeT-cD9D$TsNswRge{ulB!hSzP zpb4A>9+AZi40=i+%vitb(cMWv({FpaIEGmG=T7P_TjapgHdp#e=GCmz4HjDt94d$` zEDgW+|LV8%FTTy$C~f#ref~+64Ktq4EIjw2vAuy)v)~{n2NR3%Bu|T7A6IZrhzVl7 z^W|s2Z?UezqYvNdGWjy}@8}Yd`TjFNctMirQNcN%fGh{Dwg;aVvVExEa-}@lF3|1@ z!?g2{Qn%h)6My9MB!(B)-@eP;{aLCZEo*b!+Hh%AQ^pIozi+?$d-Zh&mh>Q_9JYxK z0n8J+j9qWLsVH1wh*(mwWP_v&lM`>l@rhl^5a|F<8C4TACB}tp0;-;K?(Ao2kvh;U zsd(8($~kVve}*sXJQkW(*6$JQuATS(`~R4E@@aq0W-Kn06k(pQblZ;~8VT3ZUMBi2 z{i$<$)vD9-8O#ed=Dv=3J}3M3GRreFucTf*yejB4PlIfX`J~dh(sgnxT|Iy9Tc59+ zbDQ@vrx{-?H^bZ7#(n==o6mIbDU|(m`De|%UE6;0z2P69!twmlem}6$*Y>oN9+NYX-%i0^e{yJO31RL+2dn!XL>~84H%vzIVuK#?$ Y{+je33vKu40pp*+)78&qol`;+0NCMS*8l(j diff --git a/src/main/resources/assets/create/textures/block/pump.png b/src/main/resources/assets/create/textures/block/pump.png index 78ee4059115b2e2dd76b108043435ee076f9a038..c76071121129856976a5353fb49e8ba6a32cf35b 100644 GIT binary patch delta 461 zcmV;;0W$uV1dIfbNq@fp01m$aI0aKA0004@Nklng7AQZk+sS$lBLGx}5t5hI_MS=m}yFzFDB8wgKyim~`&$V?hqRa{0A2zIG>O&ZwC z6zt$!E)O@`W)%h>9X#MT8k55c)4f5=%=Jl<;gBE6)BExXplKesD&Nbh&S2uSt@h|x z8wy~uwFR?YD}O=RUKcFZsHsp@KzF(2PV5By)}N@p6QcK&)FLj*)YM>>x4+Y&d&{em z>~;sfrWUy{C$v?%V=*VTjMRK=Y7oizlN>OJNz>U(jg0i|5A|aA@CM;-4Q@Kq07P+q za?5QAORa1%Axj3+=kn}M_Dsr4B;TI0^BI%sr`+DAB1SOam#!G6m}dPKNVeCPOv=cY zTO(t=91eXMmNq@iq01m(bYSxJf00053NklwF+9e>1z=fEfR!2jD&1NqjEHv<~@4Fgvfee z=AOCtoO9oM&K+%gDPsFtAh^9cbiHi*ysc%!A^DJzG5Y~*?SCI?v{x7A?bo+=xELIo z9zmO-<2h|1`Dh`X$|I35<++Y$WQ{&*BVrYcGHN?(5t|MS49)b&Wa-6{ku-Jah@GU+ z*Q?{zv~ZC7tOgefMKn{k3O+u%#qL>D78NT~Va(1AN|LTl9p=4RSpmG>7P!=zxodqe zshy+mdeFeeSbqSET?UproCLMS`VIQ3LVKEQv0YiGl7wgd2~`v2YXto=5*J_0)(BM4 zZIl)3ZcS`SKzyEdDOf$6Q|gq0TB>bi?Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0U=35K~y+TV;FG22&G8^|NsAovd|1@3eos)Whn<{KRUq-rhoi} zC{eTi1E!B1f5cF``Z`=66O;x6HUT~c4lY(Oo1Kl3K}3RsL4QV?ok3KD9V`ZuLk1`Y zpaXtxE+`8E_$36umLLNR1FqbE$#Cc8I|epxb_Ql)cCaDrKnH-tjvl`WRfPa31~C5o z#t`Lg$zW}%4i!NFT;eDO{AcH4c=+xenEmVPPlms5e=-P3i-P$uadd#;h5ZL^fiXJ3 zC5~diuMeLXjB7N+z!(HRe*MPq?&)hVTT4z5j6vQ+1{f~*@$EMl!vM&T&+mRhc?=9c zzeCak3}6^==K2RPzW?oAEi3P% QG5`Po07*qoM6N<$g2)V(8vpTgB{|o~9Um3)N zc^Q6u`_14|ybHSlN2YuK=a&#*czN$N!^?9lU;{v!L57GM{eNKq84i-y4P1)dfXnNn z|ARDreDQ(d-8D7_er_&?k6*umX=eEkV9g+a*8q7TA%;uW?lCZY5oh4%;A43A^fiN! zv?#+zmfK(hK=OR{ld-$t)4|;T58u55yWsCb0S0DacCaBIe|%zK;CacQr=`RIk|)Uv zu&97}0c5yM=1NxL0}*BbC=kV!M8U4ZX#jFGzBtE&k`5${z7UQ^Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi z!vFvd!vV){sAK>D0fI?HK~y+Tjgrqx0#OjhXBXRDwQMPWQ9&3U41|QDL)|;nP5Kl1 zGonMME}i=)I(G`XRHy!cqEI>nY9VU5?P~J!JG)O-SFH~WGk^1D-|YN&%IRTFB-dsM zXypWJyQi>Lvo)%fzUbug(LL~ScC;4Nnj0kTQ_Nv44x1S)8@E!MhDR4u)e;<)}O9mktf zr_mzY>as|XN(AALE{0xBnnTAVVIVU8vbJV@$EN*OYtrY13>yXxL6q& zk4*Re4^jl;{Cz0E@bT+627YcXFwLd#6)bL(xfR0zkUoA10e=Rt3qXp%hWwLZ`1|%J zgOIc+!^a<=7#Mh7f?b5ofXnNn|H}&rVY&dWnSp`f2h$UrE`S?=90shfMZq>Q3$rsk zzx^I>7{I-N91GvC^PmK_xDoDHfCnPX08lusO?)GL^R?-liPi^AeDI-I3^9t4e$cc56@Msg3S?my*s>S63k%oz zpS$OBSr(<#Uox4wXJ+=yoO9;PtoFsbJ@k65VVheystNlkR9ZqM(EwQ+0n$r12}pY@ zy-8~uTQr}^kx}BOy9rZ^8M>V^EjsOqS{mKgFXZ{GCj1 zkq?boGe=L>iGQXOCOw+7=)qWq(sLQE6Avx7jXsRQSj_P%OTz_2TI-O2)olGWCX=g%Ndn##B z@Zx2<(A~kiA6=NY;ezJ4&aQ$|SOC@pUKjXVmKG^o=BJpJWnsOQpz;t=?2{|}Eu=1; zr`5Hc9i>*CAES`YzFu{{T*UtuN5-f$;JBfXjm;eSpxg_ThpTn=sZy$;Kn@xDo)##F zBA}P4V1HHxK!!dJLI8gWnT7oB6gU+CCqVFyJqTg}E4#@Bh|FDp7wonW_^^;n);T>m zhT!thEgOZcr)1~@vTH9Q<7J4yih*-q%<`C%$(r=>cRxDE?s^ATg|xr+vYl@h#gARY zjQrOj=nGhyNLQ=^{>+J00IZ!?^G2tptBxY%N_z!xe zwSUEivcf>bLfi!?4xI^Q0fU1#XnOjAT7Z+P4I@GW13%H*Z?@Udh(YNUlTZU`qvqRC zMYN5xy(ZaBVff3)%w@R-XoFC>&f`$46s*lOwNOt_FPk2_hGJOY-u;_2Iq{h16k0)c ze}8;Za~FUPECRV384tn7M=&3RXd?!2ZGVG&9B7xW5AyfF(RK1wyHx#-*8&^r_kJ6> zr)mA~onoPoUE8Lz&`y5BH}J}Y!m;3K=Rb1{oLGHA>PkP<{FgE-jti6@?e5i?qA#Kv zm8BldW%s;@hRPeL;;%n797W7;OU;m8VpCOcZ`$>;xUP=kmPVs7XTH0D4}1w49)DjU z&51eE_1y`|vK-&rDi+^pjnKE-wYwJ3x%`-B7uG3Qv43L2Z(x3Xb&!6qe1Ye)V_-Jy z9Lk#`K`!;B>Is!EFGfSI9Ahw6ObyV+&Y`@mE=13VON*AyqY<8uu`=Jcy6xO0FuUw} zc4L!5p@4d-1*ox3=NF8~fZU9}K!1Q_z5w^&gpAIZbmie37qlTmpBKz$3m{_}!2P6^{f(T;;nSWSZ3*e}MwSP6|sEKm4 zL2Z+Ic;;_I8N0n%+!81Kk$h{1VlvF<1t3Yltk@k~FgoXGg8y5N#kl-3>fD9^V}2R&vi&GF_Tcl0{sBmoF}Dky6NLZ(002ov JPDHLkV1lEi-CqCz delta 1670 zcmV;126_4Q3zrR$B!32COGiWir2tz1O1EUfMgRZ+32;bRa{vG?BLDy{BLR4&KXw2B z00(qQO+^Rf2p$m+7uXoc761SSBuPX;R9M5Umrrcl_7%rJlzyaWiIiDWf3n(x-PS0& zWmuII1BL;smt@#!hxxP?1BUgGYk>jlX+R3>7VI!!M`yr*0e=Nntk`ZntV`A$77S=w zJ6jWHjnyQB?AoRzQxZi}qG;_vkrrp!$&9^=etf_8e((2tf4=WY`o;Gy^70vN=mZ1G zx*)5hNgFa=Uq)4YfOs9)K5jo?r!zoH3+`+?(hEg(2ypgSzh#{6{`3t1TKiC$%K)%e z>oKbdibfg$%YP0K0GrML04)s=z-~ZR@#)wBStX53xCZFD;h`-C34mw2XmSq8O|E>9aWiWgwn0k_^*0Q=oa<*WkD~ge6U`le&w=Mzj9fEkeADb zGSgE~(0|mY@_-@>`hFM&H6x>D(Yh{yFv1zy<{c)^5)0Gs3M*n-&FdW}~{C>WQa zA0c70oaf75 zY=0z>@ZR$m;Q2!&tW~R6mc=)L&#RC5M#AGc5a&$}>0GzPYHs>e`Y#@|C2_9XqPDQe(kKVAo_`fi zM0=a4ich(q@p!9;s*Wb2R5%gcEY30gultY@6pKYF^%`n=i0N&I7Plvdqp|Pf1rlq; zIS!hQLntomg02gn?e?hOZ;dzNcva9;W;H=s7jTd~SWOQxr(|;3CxN?6W8Y5>B!*#- z^{mji1Mb|e$1`HNprOy{u`IxWKiL!C z5c#L#9r%8DfkvZ|aO>KZOMllTVf?+n{F_d#6NhVj2pL}kJZEZLdZt8PSIO%tm!2u{ zoSB?@A{{XvcRi(WzwPp!$_(X##!lUdU;f5V&hnez-9=9+VS*kr6qj`Y45-X$RL~~u z{ntp=J&>?%8#fg&s|hw8`0yW1poyMR04IhuJ*6D6!&9v*_bE~Sp}j-yGk|BL>A0DZeBQt$^{ Qh5!Hn07*qoM6N<$f*#QsPXGV_