From a760ff8a7995f2e755fcd5badaf5aaf34fd73ce6 Mon Sep 17 00:00:00 2001 From: Zelophed Date: Mon, 30 Nov 2020 12:29:50 +0100 Subject: [PATCH 01/12] 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 02/12] 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 03/12] 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 04/12] 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 zcmV-82*>xC1kMnU8Gix*005AYXf^-<1~__DSaechcOY^O0fZ)-EL!5D;4w_4bYfBv54FZ?lk zF+L=TIYx^=pMB>j!&vK8&0D3&xN`>(0kGbbo%qcz7&GUdQXlag&o?l-spA-CQ!3x9yn)R=}H-~E^;-qgMA$pP8FE0tMsk57$iSS45Jv$%1)j6>T!8?E zz@5wlHV&DPSa|J?HHr3I4t$0oEh{yUA_>rBR{)mx0sKi`z@ZXc@Fs*1LkbddDA7e9 zLyR%SrGHT+x#UwwF{LCary@?g1c{PFBumMh9V9H|n3Ktpb1ns&7MLzrT`;4R%GFh0 zLya|6skxR0`ZV7{i!C*2xs}e{b)?sF9+!5c7LpdZ32klr9sr3Orp^82}+8&842~QWy){k z`mVj>4H-FBkV4?V-gP8&w?W{5l5zG-)PKO9J-OKI)T?Gkao{PsW`%HgSM-3=daLfB zh-#!e=d(^oF1Wz_HG<7_1aw_IF9rh${RHtsjJ&@CI0GS`;|#MB?LlZlz&3a zkL=XMsK{rfTSR3j@rob5d75K;zRuyDQLD|ih745}f%_vJClDulx&PXxVo%s0izbgN zZW;Ao_v?sAQ$G^?zRm!2+i)jT(|at?Olsc5a7(hebWH&^`)6V4X;$zSqG!pYP= zQhqpT-gtd`->sU?kUJaQF;b}Hn|}dND?z@L0Qz+u z8KoAtT1~KmTaqf=bWPsLz$aNij5S3XL>Gd2<#hK=NeFI2ac}vA4>UB+4W*`^2;wp} zYLuO{gVwBg(g*H~bR`1rC~NluLWE zA1e9-R{7Ar;MdXm^>&=#=zld_{VR2gCu)UTxmG-q&mj9$RFGDAUMdTx)lI?`<&qSP z+Xp*(zhoHbm{Ux?ttAhwzPG#%ggf1>*|*Tdcu9l}XC4a7EhnJl5h|Rq&Ra8lR6uY) z0+ICeO=3b0AEbC)_Ek$7gl+`YpNdjVj}>~CF>HU!Z;bV*G`2jmD43lJ{5DIXO800F5< zL_t(2&y|u-YZFlv#eb7|%^T)*lBP9EHl+*Q*5aaB6jG21-6*)sm*_^+Z{W(ko9Z67#DAt#y<;tR`1?-xcA(9uJiKIMjTH7&l3Rf z&wtP&H3;D8i;Z5Z^X>CVb^QS%)~DC_fu|l}7RT;Am*=J3hGtM4%iX)ah6okllkrV~`Sblql05L{(#L zEP)c4ahqGKcUzrTJMBP4zn?~!pT@H%E8)-Z>rVUXmTp(wo2A)5M(m$ol>NdjpD*va iIs$N>udQEeOTPeSW4Y}M&9~410000_5m83+ad0047(di0SYAb$yPNLh0L01m$Z01m$aI0aKA000GfNklTdh)15VRmJ`VY8tBi%?5aiQz( z-AH!@1;Is85!`est%6phrcK+lNhg_1-elhVdfv}@Ig^`7(l*d9+`0FjbMHOpo_}BW zP4LC(Q%Ted1mwd+dxOypy>?rUPVJIHC9CsNeoXtJ@pN9jxu|`;8cS`}@ke#4_;R(?a8-VtnO&o#cw>4> zK6vkl)UMCy{OXnK+W&cdQNpow|FsLBBnMxekT|+0#gi8TwE+0-!LkZ2xEoAX#w9zF zj-kN=^`xgatTmT62?s`F4L6@Yx<{Mu3ihttoR^tuRp)&LMn;BJXmx2>%73MT6bnTi zLxYD;cZ%+Vcx|)}X!Y5;)aI6S9$KK8*M$>`=w8%Iff+#%rm@&S;;nHvR)_@af4DNzr*entUK%UAh*8gzd0L@YoH}`9+mPjYqD%nneP@ZePA*d7<}o4fi#F7|ep4fg5Rzp-t?`$$_YU$AG~O!73I+JB3*h zcOsZM=bAFc2dY5dglh|S5`?CtzXxGFRCoVb)NF!>P!uv5fW4ua&<^mmGmv(Edl=Y{ zZ~__E5=$1;040!RF{W<;sX>&Yo%sswIe=Git8B2FlYeSf#MoySusUM!&+uKlAqLP6 za0uzb!3ZE8NE-uVl%}!9QW#hap}Ya%nyPEHz^@PeEHKUO&jwM=tt`Lk$!GGKHy#>| zHI`c2!Ro|d9RML^(Si_IpqL_?^4ST4$J_)%SDqJO{+a&R_82X++HH}lV*aR{&Q;|HMSnC 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 zcmV<22P62K1nCcuBYy?3dQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvmg6=I z{O2ih1Ogzq9Ea0jyY+&d&Brd!P#Eh^2mgZ6v6H^o<(`ILS-WO_`k`hU?Bnr(-54#7(f8`I z^FYd*v#4t+tAB-#1yF7@JkEfxq8-+ma7HY#g0TiR3(jgN5d-Z(jv8ee)YrXIMTm|& zL~EJ3vMgJaz=^AD3UJckAW515J1iBf3Cw)QLTlc%=BpGjb0hR*f-}O1UrzJR_>=Q? zG{%%Jk&QQ2h>NGD5yoV0UeODL&^Vat!grnKK{xh+SbqV7x?ql2V76tuC`upNlEt&2 zpIT?^P7Mm}H~>VLTM-Ni7_gp1$&(Ez7DT`?f}f1YSsWKIK&srx3~(dJgus#K+!zyR z^=0L4Mri>NDqaGpNs>X9a|-*pd4y(_s(F=3GXN?YP zlQFmYg%8$X4&ib^vz+MU42-cOFdilY5HwHDY=0!@crrIRvx$)u%3zIjlGA811_oUx z)2*4c;nBQGn2aigE=#)JIwvc+Z)zeUOS2`f@T&@OsxzQHq`x?@j(^a zjp~MTr8y<1m^oFYX+}OsBOcRCTBrwd{vKeSM!+!JbGO=ecQr!Nw%XR}z7tlmT&Co- zW`8rMLjB5NjhJ!n0o4xAJCK^CM}W6`uq$P?m;u{rIS_1IU(uCWLib!Xao^5j7BIP- zwJ1Hjo~PgzPyzOAFgLxQ~p zYpY)@t9sOS*+TN6bT2!! z=J3vRqEtFYydlsD*SUj{CiZpnh!s$|z(E?(aU94$cIkHa3Au+lE;Sf}zOVV3{ZPhU zQI76Fm0}$5v-MD>9(vev?2)lRllMb-LhnNpg4|hyvqjP$VIjqCK*njoy z$%Yo7n|S3;FWYmi7p*S(k5Ewymalo5wQ@gQ0{8446-+y!pv zYk^yeHb0Q`+gf1W$@x!8T;OpPws+A!mE&(!WAlx2{6(m>P2>&4k-B+5TwDO z{+2-A7UW<*yiGMk-C#TBbYgWOpG9>~5J9b{x<$MJ90U~H+E*-4MoxC527e)L*a9WI zX1J40B@NWxYn!|EkkZRGXMO_g#1*xCKbAW1-vEW}35D1D2#54&A*R9pQ3By{fo86- z{<0kpCs(uFqSjaK%>E}zXQWkl?`J0bExGrf&+b^*H5_j=cwGFMIlKt|?tD2s>%GIp zyM~0TWo|gq7RDfyENqf|c7FwM7QdXNHE(uzw8LkW=(GE?Jk7H{e=bk+tj|y6`F?Y? zuk`F0Qc|00GQNL_t(I%Z-vfZ_`i|hJPP_UdwLdDjuLz zQILw%2n4FKWJ`ZRHl&b+g}=bgg2c`*Kw{{Ujeo$FC1N8WMZ}^7s>BgaYRgV*U51hn zHy`3%uFlapSI;@`Q5uZ~-Z+q#`}dTcpFeW15CVWSO=-8=092n;WMS80GEJCWU8BEz zRFGk$<2piWwF+5~%71YG4z45Qy9-mXEQ{fA$Xv6lYxW8|08FL{DqHm8p&}n&__A5d zp0 zi+G*Z?jXq&`u#D&R2cnANHT>mih28as+3A4-ggGucfi37=6nZX6yrKJrP3ajWo;+e zX5(Nmz%UF9!`Ms^Mlqkhgq(IhEQ(sSI>$#~nkGQ*gB1eTv2)D;r=5?SRGSQkKB}6( zwWrUXQ!baOR8=bUdOh@IyOyPSf^N6Fl3#B2eII?3U7PZ6UcchO{kw}X)G&%^)#|yT uR;^AL#s7B)u48k21Si$zijC`Z+l4>S6ARN~era(40000S(NgK2-fP@pqvZd%b}iq^XFm-+ky_WBC2!S$clXm__tF@NP0&TER` z92|34TU%crcuLbA&Qpru{7zS1Q8dV2rx9JOT5ag&14zkWEM+9?E32!%D+p?@Gl16# z^2+6quo+|-d%QR9M^JksfJ1(vq9k(9s5ggkKZ4rp05Br(^xV|%gf85|0MwPN5s6}K`?(%@M9AC_~m)G+4PJo ztM}J()SSR|h~B;WW9Z!3v#y*9K#Jq>xK6dm;DBTcy?}SW^x-_+yMKP0eqAq7c6^jZ z$0MwGQ1N%XV#T}1b8kJx`d@v0o5x7|>xH{4Z*FcbfGo!ES z#A^3jfcvT|o6om)iMH_H=LHZ`9}UN7o2`~7CzQSk+%2g9a7s9b7P67IGM01JAavGN+nZTMle`|&PTuPP_fjey^hP9tbF1HBq=tX3oz%puGYb! z0bPcXNSK}MR;n~{EJ?N%^AUo<8g!s*;-M23bDU1nJ_uNo44^`Q5j-q)FrD@@voqv4 zEtX@kD2=C*Ovk4(ye7zIJbhp~GuD; z1n?CIoR-5*;0%s=PF)8Ak!x`rhcnP<9ne_V>tphwaXQIDI-O>xplmkFr?+ieXFzPi zwYtmojZc*`$d`@Pq8klKp^cE$mMc;N;s0!iY(5d3maf0nea~0 zZg;4r>M@as)19rmv|TLv2*F_uI?x5A45huI!&S;dIC#UF@w9Wjr zM1FQlTp4!ZQj6dMcVRE>uJ+5jmx0dyo=KAk~JDl wdVg+$J1c;LnZW$zTV<6!OJxB+rmLZU0Y^~Fbb`=!=Kufz07*qoM6N<$f(Y$)F8}}l 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_ From e3bef624a03e2921358f8151320bec879c5ded02 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 2 Dec 2020 21:49:57 +0100 Subject: [PATCH 05/12] Casing case closed - Encased shafts and gearboxes can now join textures with respective casing blocks - Added back encased shaft items for creative mode - Fixed encased shafts able to be created with casing and cogs --- src/generated/resources/.cache/cache | 32 +++-- .../blockstates/andesite_encased_shaft.json | 20 +++ .../blockstates/brass_encased_shaft.json | 20 +++ .../create/blockstates/encased_shaft.json | 30 ----- .../assets/create/blockstates/gearbox.json | 9 +- .../resources/assets/create/lang/en_ud.json | 3 +- .../resources/assets/create/lang/en_us.json | 3 +- .../assets/create/lang/unfinished/de_de.json | 5 +- .../assets/create/lang/unfinished/fr_fr.json | 5 +- .../assets/create/lang/unfinished/it_it.json | 5 +- .../assets/create/lang/unfinished/ja_jp.json | 5 +- .../assets/create/lang/unfinished/ko_kr.json | 5 +- .../assets/create/lang/unfinished/nl_nl.json | 5 +- .../assets/create/lang/unfinished/pt_br.json | 5 +- .../assets/create/lang/unfinished/ru_ru.json | 5 +- .../assets/create/lang/unfinished/zh_cn.json | 5 +- .../models/item/andesite_encased_shaft.json | 3 + .../models/item/brass_encased_shaft.json | 3 + ...shaft.json => andesite_encased_shaft.json} | 0 .../blocks/brass_encased_shaft.json | 19 +++ .../java/com/simibubi/create/AllBlocks.java | 23 ++-- .../com/simibubi/create/AllTileEntities.java | 4 +- .../com/simibubi/create/CreateClient.java | 8 ++ .../fluids/pipes/BracketBlock.java | 4 +- .../relays/belt/item/BeltConnectorItem.java | 5 +- .../relays/elementary/AbstractShaftBlock.java | 126 +++++++++++++++++ .../BracketedTileEntityBehaviour.java | 2 +- .../relays/elementary/CogWheelBlock.java | 2 +- .../relays/elementary/ShaftBlock.java | 127 ++---------------- .../relays/encased/CasingConnectivity.java | 62 +++++++++ .../relays/encased/EncasedCTBehaviour.java | 42 ++++++ .../relays/encased/EncasedShaftBlock.java | 62 +++------ .../schematics/block/LaunchedItem.java | 4 +- .../block/SchematicannonTileEntity.java | 4 +- .../connected/ConnectedTextureBehaviour.java | 15 ++- .../create/foundation/data/BlockStateGen.java | 6 + .../foundation/data/BuilderTransformers.java | 31 ++++- .../foundation/data/CreateRegistrate.java | 14 ++ .../behaviour/ValueBoxRenderer.java | 4 +- .../foundation/utility/RemapHelper.java | 66 +++++++-- .../models/block/encased_shaft/andesite.json | 6 - .../encased_shaft/{base.json => block.json} | 26 ++-- .../block/encased_shaft/block_andesite.json | 7 + .../block/encased_shaft/block_brass.json | 7 + .../models/block/encased_shaft/brass.json | 6 - .../models/block/encased_shaft/copper.json | 6 - .../models/block/encased_shaft/item.json | 6 +- .../block/encased_shaft/item_andesite.json | 7 + .../block/encased_shaft/item_brass.json | 7 + 49 files changed, 568 insertions(+), 308 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/andesite_encased_shaft.json create mode 100644 src/generated/resources/assets/create/blockstates/brass_encased_shaft.json delete mode 100644 src/generated/resources/assets/create/blockstates/encased_shaft.json create mode 100644 src/generated/resources/assets/create/models/item/andesite_encased_shaft.json create mode 100644 src/generated/resources/assets/create/models/item/brass_encased_shaft.json rename src/generated/resources/data/create/loot_tables/blocks/{encased_shaft.json => andesite_encased_shaft.json} (100%) create mode 100644 src/generated/resources/data/create/loot_tables/blocks/brass_encased_shaft.json create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/encased/CasingConnectivity.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCTBehaviour.java delete mode 100644 src/main/resources/assets/create/models/block/encased_shaft/andesite.json rename src/main/resources/assets/create/models/block/encased_shaft/{base.json => block.json} (58%) create mode 100644 src/main/resources/assets/create/models/block/encased_shaft/block_andesite.json create mode 100644 src/main/resources/assets/create/models/block/encased_shaft/block_brass.json delete mode 100644 src/main/resources/assets/create/models/block/encased_shaft/brass.json delete mode 100644 src/main/resources/assets/create/models/block/encased_shaft/copper.json create mode 100644 src/main/resources/assets/create/models/block/encased_shaft/item_andesite.json create mode 100644 src/main/resources/assets/create/models/block/encased_shaft/item_brass.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 2ea3c0370..d8a091480 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -15,6 +15,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets/create/blockstates/andesite_bric 97adf53a7cb99d7652fb39adc957e9e34cbaca47 assets/create/blockstates/andesite_cobblestone_slab.json 96b5284693da168ab8e0809d86515b5f1a7e763f assets/create/blockstates/andesite_cobblestone_stairs.json 82bd82270aff7d51e9239680ef4dd7b5c899ceb0 assets/create/blockstates/andesite_cobblestone_wall.json +9639b901ffdd2ecccab5575c5c9e6c7b5c901e02 assets/create/blockstates/andesite_encased_shaft.json 11908c2f8603e61bec88010bc6d0890e6339c6b1 assets/create/blockstates/andesite_funnel.json 398922758a6219544e5b85c91c9cf8a543b437e5 assets/create/blockstates/andesite_pillar.json 1d2d8081581e07d9be4b382aede4f2de4401cc6b assets/create/blockstates/andesite_tunnel.json @@ -32,6 +33,7 @@ ec2ab87734acc209e6be3bc4898b1199f819bfd3 assets/create/blockstates/blue_sail.jso ee1299a15fca849eb42bf81507f85a54c167bbfe assets/create/blockstates/brass_belt_funnel.json 8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json +288bad07593a8a2c8efaf44bba0ffb0011d36cd3 assets/create/blockstates/brass_encased_shaft.json 3057e1121117c0cd651c288cd8e2d46bdf64afb1 assets/create/blockstates/brass_funnel.json 672eedcd3520c6d39603449165a23be9c612c620 assets/create/blockstates/brass_tunnel.json 11ebdd9bd0815833e62ec1bea03a4cdd86ce00f3 assets/create/blockstates/brown_sail.json @@ -101,7 +103,6 @@ f179202e59e449157f89efc37229b03bbfd391d7 assets/create/blockstates/dolomite_pill 7b1c40891b07c8f3238537625d9e25c8627e7333 assets/create/blockstates/encased_belt.json 7b2b836649e729feafa60972bf95e3afb2143131 assets/create/blockstates/encased_fan.json 656813b75dd3b901bf34f24df785e4b0fbe11aa6 assets/create/blockstates/encased_fluid_pipe.json -e157d7f67b08493b71d7ffea8d622f4a64dbc155 assets/create/blockstates/encased_shaft.json a774e815376a67e2a2de44e39af0a1a0b4406932 assets/create/blockstates/fancy_andesite_bricks.json 180be26a75834cf9cdb881f969f77906e91cc36a assets/create/blockstates/fancy_andesite_bricks_slab.json d5d7762b80952052d0a7adf3081967cac3f3ba6c assets/create/blockstates/fancy_andesite_bricks_stairs.json @@ -155,7 +156,7 @@ afff479c0e5284771afa9e7ce513595fe65860ee assets/create/blockstates/gabbro_cobble a1f31a194129cfb65e335b3b96490f9275f9c564 assets/create/blockstates/gabbro_cobblestone_stairs.json a64d8d0924c0b5b192f355343dd9b3a440875f6a assets/create/blockstates/gabbro_cobblestone_wall.json a6b44e8a1c4ce0c7442b2384b41ad36dd133f19b assets/create/blockstates/gabbro_pillar.json -9c48e311be8b959bfb98e16ffaa358210ac8b9dd assets/create/blockstates/gearbox.json +eca1f0e56efdadb241f42dc6ebb036f1d52213a9 assets/create/blockstates/gearbox.json f34814b17cde3231a1dfb271f3dabf8d6de4fbf6 assets/create/blockstates/gearshift.json 93f8bdc22d9a5e04268964e35e4285c8cbf2b89d assets/create/blockstates/glass_fluid_pipe.json 87661d61e1645ef5ad4ea34f1c0fa31f139ea431 assets/create/blockstates/granite_bricks.json @@ -394,17 +395,17 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -458ea82f1528fc105ae5511619a8673dbd71101f assets/create/lang/en_ud.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 +d85a97025cad5fad4410a1bc46b59b3b72096524 assets/create/lang/en_ud.json +57c7008d6c3d1deda3eaf5703acecbd8464beb8f assets/create/lang/en_us.json +f1cd3a70b1567ad73681ad42ca0d754882845b4a assets/create/lang/unfinished/de_de.json +4358a9a4ae0cd69944590eb1b636c318e07679d8 assets/create/lang/unfinished/fr_fr.json +3f2ed1c2d1ae12ffe890be971ef498211d404426 assets/create/lang/unfinished/it_it.json +921f766a873e1c215a5874164bcbb580c6e63020 assets/create/lang/unfinished/ja_jp.json +ea1d59990f4ce87ca33ae14000869762bb517fcb assets/create/lang/unfinished/ko_kr.json +5d87a8b82204010fbd9ed765b566026be0a02ae6 assets/create/lang/unfinished/nl_nl.json +25157ef8e492c71b2d0d840048b660d92d1a3644 assets/create/lang/unfinished/pt_br.json +47a8850c0e417a32c1c47d273f0aac11808f7ddf assets/create/lang/unfinished/ru_ru.json +e2b80140f0ffd04335d7551c0feff9aa3c9913b9 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 @@ -1121,6 +1122,7 @@ d283f86cd05ed378efd82ce46cf49bc83783069b assets/create/models/item/andesite_bric 1ceb0e49f2c46f1d5414d5fd6edfc2bdd3afa6f7 assets/create/models/item/andesite_cobblestone_slab.json b0f664dd6de3d0ee9afcb6223fbcd53b97fa0d65 assets/create/models/item/andesite_cobblestone_stairs.json 4856d13a72ec0af9f10226b4a4bf0567eb580b9a assets/create/models/item/andesite_cobblestone_wall.json +bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_encased_shaft.json 7490819e7e5445019b6b8cb2538f12a5b6717a46 assets/create/models/item/andesite_funnel.json 75b8b00c2418b9660d35a7fabd0774925cf1c02f assets/create/models/item/andesite_pillar.json c0e35daccfb398947532e9499d6bda963387cd9c assets/create/models/item/andesite_tunnel.json @@ -1136,6 +1138,7 @@ c20627feba667b063893b128ee195c1abdb0f88d assets/create/models/item/blaze_cake.js bec96ebf3369d3cffa9bb1b8bf9f2a5cd5d0ef96 assets/create/models/item/blue_valve_handle.json 17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json +c723011e09203821b6b59cff9de22454c5e4395a assets/create/models/item/brass_encased_shaft.json 099961ca4a75b6ecfddd1db6dd29909276759f3b assets/create/models/item/brass_funnel.json 361f75a79de5007d7a99ad0a38103c9aa8c3017c assets/create/models/item/brass_hand.json 1786bdffa2ab5a07c88d2797db3d7b54461323c4 assets/create/models/item/brass_ingot.json @@ -2165,6 +2168,7 @@ cb36b039a511aca643fe674a63de8d6ad8478256 data/create/loot_tables/blocks/andesite a438bc69030589264e1d736bbd08662bdd123be3 data/create/loot_tables/blocks/andesite_cobblestone_slab.json 6b5393dab7d443da6d54debccbc8b060c6c9bdc7 data/create/loot_tables/blocks/andesite_cobblestone_stairs.json 36d38c085d8e522fe15f0ef9bc64363e163f3de7 data/create/loot_tables/blocks/andesite_cobblestone_wall.json +b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/andesite_encased_shaft.json d3202a337c15c8b8ec41fa5879bb94327bb75057 data/create/loot_tables/blocks/andesite_funnel.json 6908f62c809ea2105bc92765d84d5655197346ab data/create/loot_tables/blocks/andesite_pillar.json 317aa99086127c649981b7b2fc85e66774a30f58 data/create/loot_tables/blocks/andesite_tunnel.json @@ -2182,6 +2186,7 @@ fcddccd1bf45c2f4ad5f1520e209a4f04487274a data/create/loot_tables/blocks/blue_val 1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data/create/loot_tables/blocks/brass_belt_funnel.json 70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data/create/loot_tables/blocks/brass_block.json 8a14258ad5d79d9e4dc5a318905644b446196420 data/create/loot_tables/blocks/brass_casing.json +b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/brass_encased_shaft.json 1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data/create/loot_tables/blocks/brass_funnel.json 6c8e784677d1a843b6c707484c79751acdb46ebc data/create/loot_tables/blocks/brass_tunnel.json 28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/brown_sail.json @@ -2251,7 +2256,6 @@ d5fc5b3dc612cd748117e9d8b0ecda76e73f4514 data/create/loot_tables/blocks/dolomite 503a93787537b46f462d32b0382c3396f42bb1f6 data/create/loot_tables/blocks/encased_belt.json 9055d82b983b673e1638d17b712b9fcd1f5a52e6 data/create/loot_tables/blocks/encased_fan.json c8aa9bbed8fd703eb1853de0b7c9e04dffb7a511 data/create/loot_tables/blocks/encased_fluid_pipe.json -b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/encased_shaft.json ddfc4764a6039d771e03af815ac4493da80d2e6b data/create/loot_tables/blocks/fancy_andesite_bricks.json 6de29951b4129dfd5c7fd6960e7dd8b8d371b451 data/create/loot_tables/blocks/fancy_andesite_bricks_slab.json 413c8bb80954679796cd9d18f808c28a7bdbe681 data/create/loot_tables/blocks/fancy_andesite_bricks_stairs.json diff --git a/src/generated/resources/assets/create/blockstates/andesite_encased_shaft.json b/src/generated/resources/assets/create/blockstates/andesite_encased_shaft.json new file mode 100644 index 000000000..c78b4a1c4 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/andesite_encased_shaft.json @@ -0,0 +1,20 @@ +{ + "variants": { + "axis=x": { + "model": "create:block/encased_shaft/block_andesite", + "x": 90, + "y": 90, + "uvlock": true + }, + "axis=y": { + "model": "create:block/encased_shaft/block_andesite", + "uvlock": true + }, + "axis=z": { + "model": "create:block/encased_shaft/block_andesite", + "x": 90, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_encased_shaft.json b/src/generated/resources/assets/create/blockstates/brass_encased_shaft.json new file mode 100644 index 000000000..af3983628 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/brass_encased_shaft.json @@ -0,0 +1,20 @@ +{ + "variants": { + "axis=x": { + "model": "create:block/encased_shaft/block_brass", + "x": 90, + "y": 90, + "uvlock": true + }, + "axis=y": { + "model": "create:block/encased_shaft/block_brass", + "uvlock": true + }, + "axis=z": { + "model": "create:block/encased_shaft/block_brass", + "x": 90, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/encased_shaft.json b/src/generated/resources/assets/create/blockstates/encased_shaft.json deleted file mode 100644 index b630e5edf..000000000 --- a/src/generated/resources/assets/create/blockstates/encased_shaft.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "axis=x,casing=andesite": { - "model": "create:block/encased_shaft/andesite", - "x": 90, - "y": 90 - }, - "axis=y,casing=andesite": { - "model": "create:block/encased_shaft/andesite" - }, - "axis=z,casing=andesite": { - "model": "create:block/encased_shaft/andesite", - "x": 90, - "y": 180 - }, - "axis=x,casing=brass": { - "model": "create:block/encased_shaft/brass", - "x": 90, - "y": 90 - }, - "axis=y,casing=brass": { - "model": "create:block/encased_shaft/brass" - }, - "axis=z,casing=brass": { - "model": "create:block/encased_shaft/brass", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gearbox.json b/src/generated/resources/assets/create/blockstates/gearbox.json index 74cffdb7d..2c7b4ca20 100644 --- a/src/generated/resources/assets/create/blockstates/gearbox.json +++ b/src/generated/resources/assets/create/blockstates/gearbox.json @@ -3,15 +3,18 @@ "axis=x": { "model": "create:block/gearbox/block", "x": 90, - "y": 90 + "y": 90, + "uvlock": true }, "axis=y": { - "model": "create:block/gearbox/block" + "model": "create:block/gearbox/block", + "uvlock": true }, "axis=z": { "model": "create:block/gearbox/block", "x": 90, - "y": 180 + "y": 180, + "uvlock": true } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index d85a1a98e..bdf06c6c1 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -16,6 +16,7 @@ "block.create.andesite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", + "block.create.andesite_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131s\u01DDpu\u2C6F", "block.create.andesite_tunnel": "\u05DF\u01DDuun\u27D8 \u01DD\u0287\u0131s\u01DDpu\u2C6F", @@ -33,6 +34,7 @@ "block.create.brass_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA ss\u0250\u0279\u15FA", "block.create.brass_block": "\u029E\u0254o\u05DF\u15FA ss\u0250\u0279\u15FA", "block.create.brass_casing": "bu\u0131s\u0250\u0186 ss\u0250\u0279\u15FA", + "block.create.brass_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA", "block.create.brass_funnel": "\u05DF\u01DDuun\u2132 ss\u0250\u0279\u15FA", "block.create.brass_tunnel": "\u05DF\u01DDuun\u27D8 ss\u0250\u0279\u15FA", "block.create.brown_sail": "\u05DF\u0131\u0250S u\u028Do\u0279\u15FA", @@ -102,7 +104,6 @@ "block.create.encased_belt": "\u0287\u05DF\u01DD\u15FA p\u01DDs\u0250\u0254u\u018E", "block.create.encased_fan": "u\u0250\u2132 p\u01DDs\u0250\u0254u\u018E", "block.create.encased_fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132 p\u01DDs\u0250\u0254u\u018E", - "block.create.encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E", "block.create.fancy_andesite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F \u028E\u0254u\u0250\u2132", "block.create.fancy_andesite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F \u028E\u0254u\u0250\u2132", "block.create.fancy_andesite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F \u028E\u0254u\u0250\u2132", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index a9adc88ed..6d798ec12 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -19,6 +19,7 @@ "block.create.andesite_cobblestone_slab": "Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "Andesite Encased Shaft", "block.create.andesite_funnel": "Andesite Funnel", "block.create.andesite_pillar": "Andesite Pillar", "block.create.andesite_tunnel": "Andesite Tunnel", @@ -36,6 +37,7 @@ "block.create.brass_belt_funnel": "Brass Belt Funnel", "block.create.brass_block": "Brass Block", "block.create.brass_casing": "Brass Casing", + "block.create.brass_encased_shaft": "Brass Encased Shaft", "block.create.brass_funnel": "Brass Funnel", "block.create.brass_tunnel": "Brass Tunnel", "block.create.brown_sail": "Brown Sail", @@ -105,7 +107,6 @@ "block.create.encased_belt": "Encased Belt", "block.create.encased_fan": "Encased Fan", "block.create.encased_fluid_pipe": "Encased Fluid Pipe", - "block.create.encased_shaft": "Encased Shaft", "block.create.fancy_andesite_bricks": "Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "Fancy Andesite Bricks Stairs", 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 48759c510..a1454ec4e 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: 1052", + "_": "Missing Localizations: 1054", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "Eingeschlossener Riemen", "block.create.encased_fan": "Eingeschlossener Propeller", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "Eingeschlossene Welle", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", 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 b38db1fe2..c3c05ab81 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: 682", + "_": "Missing Localizations: 684", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "Boîtier en laiton", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "Tapis roulant enfermé", "block.create.encased_fan": "Ventilateur enfermé", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "Arbre mécanique enfermé", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", 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 46ea7fe96..2437edf40 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: 666", + "_": "Missing Localizations: 668", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "Blocco di Ottone", "block.create.brass_casing": "Involucro di Ottone", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "Nastro Incassato", "block.create.encased_fan": "Ventilatore incassato", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "Albero Incassato", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", 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 0011bb4bb..dfde660e0 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: 665", + "_": "Missing Localizations: 667", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "真鍮ブロック", "block.create.brass_casing": "真鍮ケーシング", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "ケース入りベルト", "block.create.encased_fan": "ケース入りファン", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "ケース入りシャフト", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", 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 a882d876e..934b7d683 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: 666", + "_": "Missing Localizations: 668", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "황동 블럭", "block.create.brass_casing": "황동 케이스", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "덮힌 벨트", "block.create.encased_fan": "덮힌 환풍기", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "덮힌 축", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", 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 ecccd1423..3ad604b98 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: 993", + "_": "Missing Localizations: 995", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "Omhulsde Transportband", "block.create.encased_fan": "Omhulsde Ventilator", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "Omhulsde Drijfas", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", 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 edc6ba37a..cd4138904 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: 1059", + "_": "Missing Localizations: 1061", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "UNLOCALIZED: Brass Block", "block.create.brass_casing": "UNLOCALIZED: Brass Casing", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "Esteira Revestida", "block.create.encased_fan": "Ventilador Revestida", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "Eixo Revestido", "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", 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 c67cf04a9..d09abba3f 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: 335", + "_": "Missing Localizations: 337", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "Андезит-булыжниковая плита", "block.create.andesite_cobblestone_stairs": "Андезит-булыжниковые ступени", "block.create.andesite_cobblestone_wall": "Андезит-булыжниковая стена", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "Андезитовая колонна", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "Латунный блок", "block.create.brass_casing": "Латунный корпус", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "Конвейерный привод", "block.create.encased_fan": "Вентилятор в кожухе", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "Вал в кожухе", "block.create.fancy_andesite_bricks": "Красивый андезитовый кирпич", "block.create.fancy_andesite_bricks_slab": "Плита из красивого андезитового кирпича", "block.create.fancy_andesite_bricks_stairs": "Ступени из красивого андезитового кирпича", 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 31c513c21..76c347876 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: 348", + "_": "Missing Localizations: 350", "_": "->------------------------] Game Elements [------------------------<-", @@ -20,6 +20,7 @@ "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", "block.create.andesite_cobblestone_wall": "安山岩圆石墙", + "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", "block.create.andesite_pillar": "竖纹安山岩", "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", @@ -37,6 +38,7 @@ "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", "block.create.brass_block": "黄铜块", "block.create.brass_casing": "黄铜机壳", + "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", "block.create.brown_sail": "UNLOCALIZED: Brown Sail", @@ -106,7 +108,6 @@ "block.create.encased_belt": "连携齿轮箱", "block.create.encased_fan": "鼓风机", "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.encased_shaft": "齿轮箱", "block.create.fancy_andesite_bricks": "方纹安山岩砖", "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖台阶", "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", diff --git a/src/generated/resources/assets/create/models/item/andesite_encased_shaft.json b/src/generated/resources/assets/create/models/item/andesite_encased_shaft.json new file mode 100644 index 000000000..6edf0c3e5 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/andesite_encased_shaft.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/encased_shaft/item_andesite" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_encased_shaft.json b/src/generated/resources/assets/create/models/item/brass_encased_shaft.json new file mode 100644 index 000000000..aa516d10d --- /dev/null +++ b/src/generated/resources/assets/create/models/item/brass_encased_shaft.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/encased_shaft/item_brass" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/encased_shaft.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_shaft.json similarity index 100% rename from src/generated/resources/data/create/loot_tables/blocks/encased_shaft.json rename to src/generated/resources/data/create/loot_tables/blocks/andesite_encased_shaft.json diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_encased_shaft.json b/src/generated/resources/data/create/loot_tables/blocks/brass_encased_shaft.json new file mode 100644 index 000000000..84f976dfb --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/brass_encased_shaft.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "create:shaft" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ 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 39f44f9c8..7d35cd70b 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -105,6 +105,7 @@ import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyB 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.EncasedCTBehaviour; 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; @@ -238,22 +239,24 @@ public class AllBlocks { .build() .register(); - public static final BlockEntry ENCASED_SHAFT = - REGISTRATE.block("encased_shaft", EncasedShaftBlock::new) - .initialProperties(SharedProperties::stone) - .properties(Block.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() - .getExistingFile(p.modLoc("block/encased_shaft/" + blockState.get(EncasedShaftBlock.CASING) - .getName())))) - .loot((p, b) -> p.registerDropping(b, SHAFT.get())) + public static final BlockEntry ANDESITE_ENCASED_SHAFT = + REGISTRATE.block("andesite_encased_shaft", EncasedShaftBlock::andesite) + .transform(BuilderTransformers.encasedShaft("andesite", AllSpriteShifts.ANDESITE_CASING)) + .register(); + + public static final BlockEntry BRASS_ENCASED_SHAFT = + REGISTRATE.block("brass_encased_shaft", EncasedShaftBlock::brass) + .transform(BuilderTransformers.encasedShaft("brass", AllSpriteShifts.BRASS_CASING)) .register(); public static final BlockEntry GEARBOX = REGISTRATE.block("gearbox", GearboxBlock::new) .initialProperties(SharedProperties::stone) .properties(Block.Properties::nonOpaque) .transform(StressConfigDefaults.setNoImpact()) - .blockstate(BlockStateGen.axisBlockProvider(true)) + .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.ANDESITE_CASING, + (s, f) -> f.getAxis() == s.get(GearboxBlock.AXIS)))) + .blockstate((c, p) -> axisBlock(c, p, $ -> AssetLookup.partialBaseModel(c, p), true)) .item() .transform(customItemModel()) .register(); diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index aba35da40..3a92ad6fb 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -131,7 +131,7 @@ public class AllTileEntities { // Kinetics public static final TileEntityEntry SIMPLE_KINETIC = Create.registrate() .tileEntity("simple_kinetic", SimpleKineticTileEntity::new) - .validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL, AllBlocks.ENCASED_SHAFT) + .validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL) .renderer(() -> KineticTileEntityRenderer::new) .register(); @@ -149,7 +149,7 @@ public class AllTileEntities { public static final TileEntityEntry ENCASED_SHAFT = Create.registrate() .tileEntity("encased_shaft", EncasedShaftTileEntity::new) - .validBlocks(AllBlocks.ENCASED_SHAFT, AllBlocks.ENCASED_BELT) + .validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_BELT) .renderer(() -> EncasedShaftRenderer::new) .register(); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 0892ba960..b347bce5f 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -7,6 +7,7 @@ import java.util.function.Function; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionRenderer; +import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; import com.simibubi.create.content.schematics.ClientSchematicLoader; import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler; import com.simibubi.create.content.schematics.client.SchematicHandler; @@ -47,6 +48,7 @@ public class CreateClient { private static CustomItemModels customItemModels; private static CustomRenderedItems customRenderedItems; private static AllColorHandlers colorHandlers; + private static CasingConnectivity casingConnectivity; public static void addClientListeners(IEventBus modEventBus) { modEventBus.addListener(CreateClient::clientInit); @@ -162,5 +164,11 @@ public class CreateClient { colorHandlers = new AllColorHandlers(); return colorHandlers; } + + public static CasingConnectivity getCasingConnectivity() { + if (casingConnectivity == null) + casingConnectivity = new CasingConnectivity(); + return casingConnectivity; + } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlock.java index 90c72f341..5ced0d5f9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlock.java @@ -6,7 +6,7 @@ import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; +import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; import com.simibubi.create.foundation.block.ProperDirectionalBlock; import com.simibubi.create.foundation.utility.Lang; @@ -46,7 +46,7 @@ public class BracketBlock extends ProperDirectionalBlock { } public Optional getSuitableBracket(BlockState blockState, Direction direction) { - if (blockState.getBlock() instanceof ShaftBlock) + if (blockState.getBlock() instanceof AbstractShaftBlock) return getSuitableBracket(blockState.get(RotatedPillarKineticBlock.AXIS), direction, blockState.getBlock() instanceof CogWheelBlock ? BracketType.COG : BracketType.SHAFT); return getSuitableBracket(FluidPropagator.getStraightPipeAxis(blockState), direction, BracketType.PIPE); diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java index 9f51af84f..29d5ad0b3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java @@ -11,6 +11,7 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltPart; import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; +import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.config.AllConfigs; @@ -135,7 +136,7 @@ public class BeltConnectorItem extends BlockItem { boolean pulley = ShaftBlock.isShaft(shaftState); if (part == BeltPart.MIDDLE && pulley) part = BeltPart.PULLEY; - if (pulley && shaftState.get(ShaftBlock.AXIS) == Axis.Y) + if (pulley && shaftState.get(AbstractShaftBlock.AXIS) == Axis.Y) slope = BeltSlope.SIDEWAYS; world.setBlockState(pos, beltBlock.with(BeltBlock.SLOPE, slope) .with(BeltBlock.PART, part) @@ -237,7 +238,7 @@ public class BeltConnectorItem extends BlockItem { for (BlockPos currentPos = first.add(step); !currentPos.equals(second) && limit-- > 0; currentPos = currentPos.add(step)) { BlockState blockState = world.getBlockState(currentPos); - if (ShaftBlock.isShaft(blockState) && blockState.get(ShaftBlock.AXIS) == shaftAxis) + if (ShaftBlock.isShaft(blockState) && blockState.get(AbstractShaftBlock.AXIS) == shaftAxis) continue; if (!blockState.getMaterial() .isReplaceable()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java new file mode 100644 index 000000000..9883870d4 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java @@ -0,0 +1,126 @@ +package com.simibubi.create.content.contraptions.relays.elementary; + +import java.util.Optional; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllShapes; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; +import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; +import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; +import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.IWaterLoggable; +import net.minecraft.block.material.PushReaction; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.Fluids; +import net.minecraft.fluid.IFluidState; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Hand; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public abstract class AbstractShaftBlock extends RotatedPillarKineticBlock implements IWaterLoggable, IWrenchableWithBracket { + + public AbstractShaftBlock(Properties properties) { + super(properties); + setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); + } + + @Override + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + return IWrenchableWithBracket.super.onWrenched(state, context); + } + + @Override + public PushReaction getPushReaction(BlockState state) { + return PushReaction.NORMAL; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.SIMPLE_KINETIC.create(); + } + + @Override + @SuppressWarnings("deprecation") + public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { + if (state != newState && !isMoving) + removeBracket(world, pos).ifPresent(stack -> Block.spawnAsEntity(world, pos, stack)); + super.onReplaced(state, world, pos, newState, isMoving); + } + + // IRotate: + + @Override + public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { + return face.getAxis() == state.get(AXIS); + } + + @Override + public Axis getRotationAxis(BlockState state) { + return state.get(AXIS); + } + + @Override + public IFluidState getFluidState(BlockState state) { + return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) + : Fluids.EMPTY.getDefaultState(); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(BlockStateProperties.WATERLOGGED); + super.fillStateContainer(builder); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, + IWorld world, BlockPos pos, BlockPos neighbourPos) { + if (state.get(BlockStateProperties.WATERLOGGED)) { + world.getPendingFluidTicks() + .scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + return state; + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + IFluidState ifluidstate = context.getWorld() + .getFluidState(context.getPos()); + return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, + Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); + } + + @Override + public Optional removeBracket(IBlockReader world, BlockPos pos) { + BracketedTileEntityBehaviour behaviour = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); + if (behaviour == null) + return Optional.empty(); + BlockState bracket = behaviour.getBracket(); + behaviour.removeBracket(); + if (bracket == Blocks.AIR.getDefaultState()) + return Optional.empty(); + return Optional.of(new ItemStack(bracket.getBlock())); + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java index 2348e2921..4ee03298d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java @@ -67,7 +67,7 @@ public class BracketedTileEntityBehaviour extends TileEntityBehaviour { public boolean canHaveBracket() { BlockState blockState = tileEntity.getBlockState(); - if (blockState.getBlock() instanceof ShaftBlock) + if (blockState.getBlock() instanceof AbstractShaftBlock) return true; return false; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java index 4dd0b1310..4b9eb3af8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java @@ -23,7 +23,7 @@ import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; -public class CogWheelBlock extends ShaftBlock { +public class CogWheelBlock extends AbstractShaftBlock { boolean isLarge; diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java index 9a19a0f95..5fddb77d6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java @@ -1,78 +1,31 @@ package com.simibubi.create.content.contraptions.relays.elementary; -import java.util.Optional; - import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; -import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.block.material.PushReaction; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.Fluids; -import net.minecraft.fluid.IFluidState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; import net.minecraft.world.World; -public class ShaftBlock extends RotatedPillarKineticBlock implements IWaterLoggable, IWrenchableWithBracket { +public class ShaftBlock extends AbstractShaftBlock { public ShaftBlock(Properties properties) { super(properties); - setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); } public static boolean isShaft(BlockState state) { return AllBlocks.SHAFT.has(state); } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - return IWrenchableWithBracket.super.onWrenched(state, context); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.SIMPLE_KINETIC.create(); - } - - @Override - @SuppressWarnings("deprecation") - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - if (state != newState && !isMoving) - removeBracket(world, pos).ifPresent(stack -> Block.spawnAsEntity(world, pos, stack)); - super.onReplaced(state, world, pos, newState, isMoving); - } @Override public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { @@ -89,11 +42,6 @@ public class ShaftBlock extends RotatedPillarKineticBlock implements IWaterLogga return 0f; } - @Override - public void fillItemGroup(ItemGroup group, NonNullList items) { - super.fillItemGroup(group, items); - } - @Override public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult p_225533_6_) { @@ -101,74 +49,21 @@ public class ShaftBlock extends RotatedPillarKineticBlock implements IWaterLogga return ActionResultType.PASS; ItemStack heldItem = player.getHeldItem(hand); + for (EncasedShaftBlock encasedShaft : new EncasedShaftBlock[] { AllBlocks.ANDESITE_ENCASED_SHAFT.get(), + AllBlocks.BRASS_ENCASED_SHAFT.get() }) { - for (EncasedShaftBlock.Casing casing : EncasedShaftBlock.Casing.values()) { - if (casing.getCasingEntry() - .isIn(heldItem)) { - if (world.isRemote) - return ActionResultType.SUCCESS; + if (!encasedShaft.getCasing() + .isIn(heldItem)) + continue; - KineticTileEntity.switchToBlockState(world, pos, AllBlocks.ENCASED_SHAFT.getDefaultState() - .with(EncasedShaftBlock.CASING, casing) - .with(AXIS, state.get(AXIS))); + if (world.isRemote) return ActionResultType.SUCCESS; - } + + KineticTileEntity.switchToBlockState(world, pos, encasedShaft.getDefaultState() + .with(AXIS, state.get(AXIS))); + return ActionResultType.SUCCESS; } return ActionResultType.PASS; } - - // IRotate: - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(AXIS); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(AXIS); - } - - @Override - public IFluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) - : Fluids.EMPTY.getDefaultState(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, - IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) { - world.getPendingFluidTicks() - .scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - } - return state; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - IFluidState ifluidstate = context.getWorld() - .getFluidState(context.getPos()); - return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); - } - - @Override - public Optional removeBracket(IBlockReader world, BlockPos pos) { - BracketedTileEntityBehaviour behaviour = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - if (behaviour == null) - return Optional.empty(); - BlockState bracket = behaviour.getBracket(); - behaviour.removeBracket(); - if (bracket == Blocks.AIR.getDefaultState()) - return Optional.empty(); - return Optional.of(new ItemStack(bracket.getBlock())); - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/CasingConnectivity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/CasingConnectivity.java new file mode 100644 index 000000000..936b624d4 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/CasingConnectivity.java @@ -0,0 +1,62 @@ +package com.simibubi.create.content.contraptions.relays.encased; + +import java.util.IdentityHashMap; +import java.util.Map; +import java.util.function.BiPredicate; + +import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; + +public class CasingConnectivity { + + private Map entries; + + public CasingConnectivity() { + entries = new IdentityHashMap<>(); + } + + public Entry get(BlockState blockState) { + return entries.get(blockState.getBlock()); + } + + public void makeCasing(Block block, CTSpriteShiftEntry casing) { + new Entry(block, casing, (s, f) -> true).register(); + } + + public void make(Block block, CTSpriteShiftEntry casing) { + new Entry(block, casing, (s, f) -> true).register(); + } + + public void make(Block block, CTSpriteShiftEntry casing, BiPredicate predicate) { + new Entry(block, casing, predicate).register(); + } + + public class Entry { + + private Block block; + private CTSpriteShiftEntry casing; + private BiPredicate predicate; + + private Entry(Block block, CTSpriteShiftEntry casing, BiPredicate predicate) { + this.block = block; + this.casing = casing; + this.predicate = predicate; + } + + public CTSpriteShiftEntry getCasing() { + return casing; + } + + public boolean isSideValid(BlockState state, Direction face) { + return predicate.test(state, face); + } + + public void register() { + entries.put(block, this); + } + + } +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCTBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCTBehaviour.java new file mode 100644 index 000000000..3b81109cb --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCTBehaviour.java @@ -0,0 +1,42 @@ +package com.simibubi.create.content.contraptions.relays.encased; + +import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; +import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; + +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ILightReader; + +public class EncasedCTBehaviour extends ConnectedTextureBehaviour { + + private CTSpriteShiftEntry shift; + + public EncasedCTBehaviour(CTSpriteShiftEntry shift) { + this.shift = shift; + } + + @Override + public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos, + Direction face) { + if (isBeingBlocked(state, reader, pos, otherPos, face)) + return false; + CasingConnectivity cc = CreateClient.getCasingConnectivity(); + CasingConnectivity.Entry entry = cc.get(state); + CasingConnectivity.Entry otherEntry = cc.get(other); + if (entry == null || otherEntry == null) + return false; + if (!entry.isSideValid(state, face) || !otherEntry.isSideValid(other, face)) + return false; + if (entry.getCasing() != otherEntry.getCasing()) + return false; + return true; + } + + @Override + public CTSpriteShiftEntry get(BlockState state, Direction direction) { + return shift; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java index 44c419e75..57b284045 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java @@ -4,48 +4,39 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTileEntities; import com.simibubi.create.content.contraptions.base.CasingBlock; import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.utility.Lang; import com.tterrag.registrate.util.entry.BlockEntry; -import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.IProperty; -import net.minecraft.state.StateContainer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.IBlockReader; public class EncasedShaftBlock extends AbstractEncasedShaftBlock { - public static final IProperty CASING = EnumProperty.create("casing", Casing.class); + private BlockEntry casing; - public EncasedShaftBlock(Properties properties) { + public static EncasedShaftBlock andesite(Properties properties) { + return new EncasedShaftBlock(properties, AllBlocks.ANDESITE_CASING); + } + + public static EncasedShaftBlock brass(Properties properties) { + return new EncasedShaftBlock(properties, AllBlocks.BRASS_CASING); + } + + protected EncasedShaftBlock(Properties properties, BlockEntry casing) { super(properties); - this.setDefaultState(this.getDefaultState().with(CASING, Casing.ANDESITE)); - } - - @Override - protected void fillStateContainer(StateContainer.Builder builder) { - super.fillStateContainer(builder); - builder.add(CASING); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, PlayerEntity player) { - return new ItemStack(state.get(CASING).getCasingEntry().get().asItem()); + this.casing = casing; } @Override public TileEntity createTileEntity(BlockState state, IBlockReader world) { return AllTileEntities.ENCASED_SHAFT.create(); } + + public BlockEntry getCasing() { + return casing; + } @Override public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { @@ -56,27 +47,4 @@ public class EncasedShaftBlock extends AbstractEncasedShaftBlock { return ActionResultType.SUCCESS; } - public enum Casing implements IStringSerializable { - ANDESITE(AllBlocks.ANDESITE_CASING), - BRASS(AllBlocks.BRASS_CASING), - //COPPER(AllBlocks.COPPER_CASING) - - ; - - private final BlockEntry casingEntry; - - Casing(BlockEntry casingEntry) { - this.casingEntry = casingEntry; - } - - public BlockEntry getCasingEntry() { - return casingEntry; - } - - @Override - public String getName() { - return Lang.asId(name()); - } - } - } diff --git a/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java b/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java index c106c0046..efebcdcd7 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/LaunchedItem.java @@ -6,7 +6,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltPart; import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; +import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -176,7 +176,7 @@ public abstract class LaunchedItem { BlockPos offset = BeltBlock.nextSegmentPosition(state, BlockPos.ZERO, isStart); int i = length - 1; Axis axis = state.get(BeltBlock.HORIZONTAL_FACING).rotateY().getAxis(); - world.setBlockState(target, AllBlocks.SHAFT.getDefaultState().with(ShaftBlock.AXIS, axis)); + world.setBlockState(target, AllBlocks.SHAFT.getDefaultState().with(AbstractShaftBlock.AXIS, axis)); BeltConnectorItem .createBelts(world, target, target.add(offset.getX() * i, offset.getY() * i, offset.getZ() * i)); } diff --git a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java index a2008395d..a2fa5fcd5 100644 --- a/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java @@ -10,7 +10,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltPart; import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; +import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; import com.simibubi.create.content.schematics.ItemRequirement; import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; import com.simibubi.create.content.schematics.MaterialChecklist; @@ -491,7 +491,7 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC if (!isLastSegment) blockState = (blockState.get(BeltBlock.PART) == BeltPart.MIDDLE) ? Blocks.AIR.getDefaultState() : AllBlocks.SHAFT.getDefaultState() - .with(ShaftBlock.AXIS, facing.rotateY() + .with(AbstractShaftBlock.AXIS, facing.rotateY() .getAxis()); return blockState; } diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java index ffea6e247..5b9edc03b 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java @@ -33,18 +33,19 @@ public abstract class ConnectedTextureBehaviour { public boolean buildContextForOccludedDirections() { return false; } - + public boolean connectsTo(BlockState state, BlockState other, ILightReader reader, BlockPos pos, BlockPos otherPos, Direction face) { + return !isBeingBlocked(state, reader, pos, otherPos, face) && state.getBlock() == other.getBlock(); + } + protected boolean isBeingBlocked(BlockState state, ILightReader reader, BlockPos pos, BlockPos otherPos, + Direction face) { BlockPos blockingPos = otherPos.offset(face); - if ((face.getAxis() + return face.getAxis() .getCoordinate(pos.getX(), pos.getY(), pos.getZ()) == face.getAxis() - .getCoordinate(otherPos.getX(), otherPos.getY(), otherPos.getZ())) - && connectsTo(state, reader.getBlockState(blockingPos), reader, pos, blockingPos, face)) - return false; - - return state.getBlock() == other.getBlock(); + .getCoordinate(otherPos.getX(), otherPos.getY(), otherPos.getZ()) + && connectsTo(state, reader.getBlockState(blockingPos), reader, pos, blockingPos, face); } public CTContext buildContext(ILightReader reader, BlockPos pos, BlockState state, Direction face) { 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 047d9b454..76874dc7c 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -121,11 +121,17 @@ public class BlockStateGen { public static void axisBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, Function modelFunc) { + axisBlock(ctx, prov, modelFunc, false); + } + + public static void axisBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, + Function modelFunc, boolean uvLock) { prov.getVariantBuilder(ctx.getEntry()) .forAllStatesExcept(state -> { Axis axis = state.get(BlockStateProperties.AXIS); return ConfiguredModel.builder() .modelFile(modelFunc.apply(state)) + .uvLock(uvLock) .rotationX(axis == Axis.Y ? 0 : 90) .rotationY(axis == Axis.X ? 90 : axis == Axis.Z ? 180 : 0) .build(); diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index a3e2e4473..8704135a5 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.data; +import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; +import static com.simibubi.create.foundation.data.CreateRegistrate.casingConnectivity; import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; import java.util.HashMap; @@ -15,6 +17,8 @@ import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.base.CasingBlock; import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonGenerator; +import com.simibubi.create.content.contraptions.relays.encased.EncasedCTBehaviour; +import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelItem; @@ -22,7 +26,6 @@ import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; import com.simibubi.create.content.logistics.block.funnel.FunnelItem; import com.simibubi.create.content.logistics.block.inventories.CrateBlock; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.StandardCTBehaviour; import com.simibubi.create.foundation.config.StressConfigDefaults; import com.simibubi.create.foundation.item.TooltipHelper; import com.tterrag.registrate.builders.BlockBuilder; @@ -53,6 +56,22 @@ public class BuilderTransformers { .transform(ModelGen.customItemModel("cuckoo_clock", "item")); } + public static NonNullUnaryOperator> encasedShaft(String casing, + CTSpriteShiftEntry casingShift) { + return builder -> builder.initialProperties(SharedProperties::stone) + .properties(Block.Properties::nonOpaque) + .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(casingShift))) + .onRegister(CreateRegistrate.casingConnectivity( + (block, cc) -> cc.make(block, casingShift, (s, f) -> f.getAxis() != s.get(EncasedShaftBlock.AXIS)))) + .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() + .getExistingFile(p.modLoc("block/encased_shaft/block_" + casing)), true)) + .transform(StressConfigDefaults.setNoImpact()) + .loot((p, b) -> p.registerDropping(b, AllBlocks.SHAFT.get())) + .item() + .model(AssetLookup.customItemModel("encased_shaft", "item_" + casing)) + .build(); + } + public static NonNullUnaryOperator> valveHandle( @Nullable DyeColor color) { return b -> b.initialProperties(SharedProperties::softMetal) @@ -74,9 +93,10 @@ public class BuilderTransformers { public static NonNullUnaryOperator> casing( CTSpriteShiftEntry ct) { - return b -> b.onRegister(connectedTextures(new StandardCTBehaviour(ct))) - .initialProperties(SharedProperties::stone) + return b -> b.initialProperties(SharedProperties::stone) .blockstate((c, p) -> p.simpleBlock(c.get())) + .onRegister(connectedTextures(new EncasedCTBehaviour(ct))) + .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct))) .simpleItem(); } @@ -156,8 +176,9 @@ public class BuilderTransformers { ResourceLocation baseBlockModelLocation = Create.asResource("block/bearing/block"); ResourceLocation baseItemModelLocation = Create.asResource("block/bearing/item"); ResourceLocation topTextureLocation = Create.asResource("block/bearing_top" + (woodenTop ? "_wooden" : "")); - ResourceLocation nookTextureLocation = Create.asResource("block/" + (woodenTop ? "andesite" : "brass") + "_casing"); - ResourceLocation sideTextureLocation = Create.asResource("block/" + prefix + "_bearing_side"); + ResourceLocation nookTextureLocation = + Create.asResource("block/" + (woodenTop ? "andesite" : "brass") + "_casing"); + ResourceLocation sideTextureLocation = Create.asResource("block/" + prefix + "_bearing_side"); ResourceLocation backTextureLocation = Create.asResource("block/" + backTexture); return b -> b.initialProperties(SharedProperties::stone) .properties(p -> p.nonOpaque()) diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index f30e4c089..70aced24b 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -4,13 +4,16 @@ import java.util.Collection; import java.util.IdentityHashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.function.BiConsumer; import java.util.function.BiFunction; +import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; import com.simibubi.create.content.AllSections; +import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; import com.simibubi.create.foundation.block.IBlockVertexColor; import com.simibubi.create.foundation.block.connected.CTModel; import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; @@ -136,6 +139,11 @@ public class CreateRegistrate extends AbstractRegistrate { return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); } + public static NonNullConsumer casingConnectivity( + BiConsumer consumer) { + return entry -> onClient(() -> () -> registerCasingConnectivity(entry, consumer)); + } + public static NonNullConsumer blockModel( Supplier> func) { return entry -> onClient(() -> () -> registerBlockModel(entry, func)); @@ -176,6 +184,12 @@ public class CreateRegistrate extends AbstractRegistrate { .register(entry.delegate, model -> new CTModel(model, behavior)); } + @OnlyIn(Dist.CLIENT) + private static void registerCasingConnectivity(T entry, + BiConsumer consumer) { + consumer.accept(entry, CreateClient.getCasingConnectivity()); + } + @OnlyIn(Dist.CLIENT) private static void registerBlockModel(Block entry, Supplier> func) { diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java index e27466235..fd37abb2a 100644 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.tileEntity.behaviour; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; +import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; import com.simibubi.create.content.logistics.item.filter.FilterItem; import net.minecraft.block.Block; @@ -36,7 +36,7 @@ public class ValueBoxRenderer { return NUDGE; if (item instanceof BlockItem) { Block block = ((BlockItem) item).getBlock(); - if (block instanceof ShaftBlock) + if (block instanceof AbstractShaftBlock) return NUDGE; if (block instanceof FenceBlock) return NUDGE; diff --git a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java index 297b86d9c..82ad97a9c 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java @@ -1,7 +1,63 @@ package com.simibubi.create.foundation.utility; +import static com.simibubi.create.AllBlocks.ADJUSTABLE_CRATE; +import static com.simibubi.create.AllBlocks.ADJUSTABLE_PULSE_REPEATER; +import static com.simibubi.create.AllBlocks.ADJUSTABLE_REPEATER; +import static com.simibubi.create.AllBlocks.ANDESITE_ENCASED_SHAFT; +import static com.simibubi.create.AllBlocks.BRASS_BELT_FUNNEL; +import static com.simibubi.create.AllBlocks.BRASS_TUNNEL; +import static com.simibubi.create.AllBlocks.CONTENT_OBSERVER; +import static com.simibubi.create.AllBlocks.LINEAR_CHASSIS; +import static com.simibubi.create.AllBlocks.MECHANICAL_DRILL; +import static com.simibubi.create.AllBlocks.MECHANICAL_HARVESTER; +import static com.simibubi.create.AllBlocks.MECHANICAL_PLOUGH; +import static com.simibubi.create.AllBlocks.MECHANICAL_SAW; +import static com.simibubi.create.AllBlocks.PISTON_EXTENSION_POLE; +import static com.simibubi.create.AllBlocks.POWERED_LATCH; +import static com.simibubi.create.AllBlocks.POWERED_TOGGLE_LATCH; +import static com.simibubi.create.AllBlocks.RADIAL_CHASSIS; +import static com.simibubi.create.AllBlocks.REDSTONE_CONTACT; +import static com.simibubi.create.AllBlocks.REDSTONE_LINK; +import static com.simibubi.create.AllBlocks.SECONDARY_LINEAR_CHASSIS; +import static com.simibubi.create.AllBlocks.SPEEDOMETER; +import static com.simibubi.create.AllBlocks.STOCKPILE_SWITCH; +import static com.simibubi.create.AllBlocks.STRESSOMETER; +import static com.simibubi.create.AllItems.ATTRIBUTE_FILTER; +import static com.simibubi.create.AllItems.BLOCKZAPPER; +import static com.simibubi.create.AllItems.CRAFTER_SLOT_COVER; +import static com.simibubi.create.AllItems.CRUSHED_COPPER; +import static com.simibubi.create.AllItems.CRUSHED_GOLD; +import static com.simibubi.create.AllItems.CRUSHED_IRON; +import static com.simibubi.create.AllItems.CRUSHED_ZINC; +import static com.simibubi.create.AllItems.GOLDEN_SHEET; +import static com.simibubi.create.AllItems.LAPIS_SHEET; +import static com.simibubi.create.AllItems.POWDERED_OBSIDIAN; +import static com.simibubi.create.AllItems.SCHEMATIC; +import static com.simibubi.create.AllItems.SCHEMATIC_AND_QUILL; +import static com.simibubi.create.AllItems.WAND_OF_SYMMETRY; +import static com.simibubi.create.AllItems.WHEAT_FLOUR; +import static com.simibubi.create.AllItems.WORLDSHAPER; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.ACACIA_WINDOW; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.ACACIA_WINDOW_PANE; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.BIRCH_WINDOW; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.BIRCH_WINDOW_PANE; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.DARK_OAK_WINDOW; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.DARK_OAK_WINDOW_PANE; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.JUNGLE_WINDOW; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.JUNGLE_WINDOW_PANE; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.OAK_WINDOW; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.OAK_WINDOW_PANE; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.ORNATE_IRON_WINDOW; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.ORNATE_IRON_WINDOW_PANE; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.SPRUCE_WINDOW; +import static com.simibubi.create.content.palettes.AllPaletteBlocks.SPRUCE_WINDOW_PANE; + +import java.util.HashMap; +import java.util.Map; + import com.google.common.collect.ImmutableList; import com.simibubi.create.Create; + import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; @@ -12,13 +68,6 @@ import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.ForgeRegistries; -import java.util.HashMap; -import java.util.Map; - -import static com.simibubi.create.AllBlocks.*; -import static com.simibubi.create.AllItems.*; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.*; - @Mod.EventBusSubscriber @SuppressWarnings("unused") public class RemapHelper { @@ -26,6 +75,7 @@ public class RemapHelper { static { reMap.put("toggle_latch", POWERED_TOGGLE_LATCH.getId()); + reMap.put("encased_shaft", ANDESITE_ENCASED_SHAFT.getId()); // reMap.put("linked_extractor", ); reMap.put("limestone_stairs", Create.asResource("polished_limestone_stairs")); // reMap.put("window_in_a_block", ); @@ -123,7 +173,7 @@ public class RemapHelper { reMap.put("symmetry_wand", WAND_OF_SYMMETRY.getId()); reMap.put("terrain_zapper", WORLDSHAPER.getId()); // reMap.put("blazing_sword", ); - reMap.put("zinc_handle", HAND_CRANK.getId()); +// reMap.put("zinc_handle", HAND_CRANK.getId()); // reMap.put("rose_quartz_axe", ); // reMap.put("shadow_steel_pickaxe", ); reMap.put("placement_handgun", BLOCKZAPPER.getId()); diff --git a/src/main/resources/assets/create/models/block/encased_shaft/andesite.json b/src/main/resources/assets/create/models/block/encased_shaft/andesite.json deleted file mode 100644 index b30279387..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/andesite.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_shaft/base", - "textures": { - "casing": "create:block/andesite_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/base.json b/src/main/resources/assets/create/models/block/encased_shaft/block.json similarity index 58% rename from src/main/resources/assets/create/models/block/encased_shaft/base.json rename to src/main/resources/assets/create/models/block/encased_shaft/block.json index b280f78ab..6a0feeea1 100644 --- a/src/main/resources/assets/create/models/block/encased_shaft/base.json +++ b/src/main/resources/assets/create/models/block/encased_shaft/block.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "1": "create:block/gearbox", - "particle": "create:block/andesite_casing" + "1": "#opening", + "particle": "#casing" }, "elements": [ { @@ -11,10 +11,10 @@ "from": [0, 0, 0], "to": [16, 16, 2], "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#casing"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#casing"}, + "north": {"uv": [0, 0, 16, 16], "texture": "#casing"}, + "east": {"uv": [14, 0, 16, 16], "texture": "#casing"}, "south": {"uv": [0, 0, 16, 16], "texture": "#casing"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#casing"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#casing"}, "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#casing"}, "down": {"uv": [0, 14, 16, 16], "texture": "#casing"} } @@ -33,10 +33,10 @@ "from": [0, 0, 14], "to": [16, 16, 16], "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#casing"}, - "east": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#casing"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#casing"}, - "west": {"uv": [0, 0, 16, 2], "rotation": 90, "texture": "#casing"}, + "north": {"uv": [0, 0, 16, 16], "texture": "#casing"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#casing"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#casing"}, + "west": {"uv": [14, 0, 16, 16], "texture": "#casing"}, "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#casing"}, "down": {"uv": [0, 0, 16, 2], "texture": "#casing"} } @@ -46,8 +46,8 @@ "from": [0, 0, 2], "to": [2, 16, 14], "faces": { - "east": {"uv": [0, 2, 16, 14], "rotation": 270, "texture": "#casing"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 90, "texture": "#casing"}, + "east": {"uv": [2, 0, 14, 16], "texture": "#casing"}, + "west": {"uv": [2, 0, 14, 16], "texture": "#casing"}, "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#casing"}, "down": {"uv": [0, 2, 2, 14], "texture": "#casing"} } @@ -57,8 +57,8 @@ "from": [14, 0, 2], "to": [16, 16, 14], "faces": { - "east": {"uv": [0, 2, 16, 14], "rotation": 270, "texture": "#casing"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 90, "texture": "#casing"}, + "east": {"uv": [2, 0, 14, 16], "texture": "#casing"}, + "west": {"uv": [2, 0, 14, 16], "texture": "#casing"}, "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#casing"}, "down": {"uv": [14, 2, 16, 14], "texture": "#casing"} } diff --git a/src/main/resources/assets/create/models/block/encased_shaft/block_andesite.json b/src/main/resources/assets/create/models/block/encased_shaft/block_andesite.json new file mode 100644 index 000000000..450c8930a --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_shaft/block_andesite.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/encased_shaft/block", + "textures": { + "casing": "create:block/andesite_casing", + "opening": "create:block/gearbox" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/block_brass.json b/src/main/resources/assets/create/models/block/encased_shaft/block_brass.json new file mode 100644 index 000000000..8d9795e98 --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_shaft/block_brass.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/encased_shaft/block", + "textures": { + "casing": "create:block/brass_casing", + "opening": "create:block/brass_gearbox" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/brass.json b/src/main/resources/assets/create/models/block/encased_shaft/brass.json deleted file mode 100644 index 2d2907d69..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/brass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_shaft/base", - "textures": { - "casing": "create:block/brass_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/copper.json b/src/main/resources/assets/create/models/block/encased_shaft/copper.json deleted file mode 100644 index e9407b71c..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_shaft/base", - "textures": { - "casing": "create:block/copper_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/item.json b/src/main/resources/assets/create/models/block/encased_shaft/item.json index badac1e31..91d41a757 100644 --- a/src/main/resources/assets/create/models/block/encased_shaft/item.json +++ b/src/main/resources/assets/create/models/block/encased_shaft/item.json @@ -2,9 +2,9 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "0": "create:block/andesite_casing", - "1": "create:block/gearbox", - "particle": "create:block/axis", + "0": "#casing", + "1": "#opening", + "particle": "#casing", "1_0": "create:block/axis", "1_1": "create:block/axis_top" }, diff --git a/src/main/resources/assets/create/models/block/encased_shaft/item_andesite.json b/src/main/resources/assets/create/models/block/encased_shaft/item_andesite.json new file mode 100644 index 000000000..ecee85bb5 --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_shaft/item_andesite.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/encased_shaft/item", + "textures": { + "casing": "create:block/andesite_casing", + "opening": "create:block/gearbox" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/item_brass.json b/src/main/resources/assets/create/models/block/encased_shaft/item_brass.json new file mode 100644 index 000000000..84c4f08bf --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_shaft/item_brass.json @@ -0,0 +1,7 @@ +{ + "parent": "create:block/encased_shaft/item", + "textures": { + "casing": "create:block/brass_casing", + "opening": "create:block/brass_gearbox" + } +} \ No newline at end of file From 00b01cac55f6b4ffc3eef33a5957ba296f6e41fb Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 2 Dec 2020 22:34:26 +0100 Subject: [PATCH 06/12] Fix pipe brackets not rendering on contraptions --- .../components/structureMovement/Contraption.java | 12 ++++++++---- .../structureMovement/ContraptionRenderer.java | 4 ++-- .../processing/BasinMovementBehaviour.java | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java index 41e20d42b..fd27685ce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java @@ -112,7 +112,8 @@ public abstract class Contraption { private List pendingSubContraptions; // Client - public Map renderedTileEntities; + public Map presentTileEntities; + public List renderedTileEntities; public Contraption() { blocks = new HashMap<>(); @@ -124,7 +125,8 @@ public abstract class Contraption { fluidStorage = new HashMap<>(); glueToRemove = new ArrayList<>(); initialPassengers = new HashMap<>(); - renderedTileEntities = new HashMap<>(); + presentTileEntities = new HashMap<>(); + renderedTileEntities = new ArrayList<>(); pendingSubContraptions = new ArrayList<>(); stabilizedSubContraptions = new HashMap<>(); } @@ -512,6 +514,7 @@ public abstract class Contraption { public void readNBT(World world, CompoundNBT nbt, boolean spawnData) { blocks.clear(); + presentTileEntities.clear(); renderedTileEntities.clear(); nbt.getList("Blocks", 10) @@ -549,7 +552,8 @@ public abstract class Contraption { if (te instanceof KineticTileEntity) ((KineticTileEntity) te).setSpeed(0); te.getBlockState(); - renderedTileEntities.put(info.pos, te); + presentTileEntities.put(info.pos, te); + renderedTileEntities.add(te); } }); @@ -587,7 +591,7 @@ public abstract class Contraption { if (spawnData) fluidStorage.forEach((pos, mfs) -> { - TileEntity tileEntity = renderedTileEntities.get(pos); + TileEntity tileEntity = presentTileEntities.get(pos); if (!(tileEntity instanceof FluidTankTileEntity)) return; FluidTankTileEntity tank = (FluidTankTileEntity) tileEntity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java index 32398f9e5..7892307d8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionRenderer.java @@ -71,7 +71,7 @@ public class ContraptionRenderer { private static void renderTileEntities(World world, Contraption c, MatrixStack ms, MatrixStack msLocal, IRenderTypeBuffer buffer) { - TileEntityRenderHelper.renderTileEntities(world, c.renderedTileEntities.values(), ms, msLocal, buffer); + TileEntityRenderHelper.renderTileEntities(world, c.renderedTileEntities, ms, msLocal, buffer); } private static SuperByteBuffer buildStructureBuffer(Contraption c, RenderType layer) { @@ -86,7 +86,7 @@ public class ContraptionRenderer { Random random = new Random(); BufferBuilder builder = new BufferBuilder(DefaultVertexFormats.BLOCK.getIntegerSize()); builder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); - renderWorld.setTileEntities(c.renderedTileEntities.values()); + renderWorld.setTileEntities(c.presentTileEntities.values()); for (BlockInfo info : c.getBlocks() .values()) diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinMovementBehaviour.java index 4412e0b0c..a3de35c6c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinMovementBehaviour.java @@ -52,7 +52,7 @@ public class BasinMovementBehaviour extends MovementBehaviour { } context.tileData.put(key, itemStackHandler.serializeNBT()); }); - TileEntity tileEntity = context.contraption.renderedTileEntities.get(context.localPos); + TileEntity tileEntity = context.contraption.presentTileEntities.get(context.localPos); if (tileEntity instanceof BasinTileEntity) ((BasinTileEntity) tileEntity).readOnlyItems(context.tileData); context.temporaryData = false; // did already dump, so can't any more From 16705c5cb53a703cfd643d177b22532c5a778236 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 3 Dec 2020 20:41:55 +0100 Subject: [PATCH 07/12] A flock of fluids - Added Fluids for chocolate, honey, milk and tea --- src/generated/resources/.cache/cache | 41 ++++--- .../assets/create/blockstates/chocolate.json | 7 ++ .../assets/create/blockstates/fluid_pipe.json | 110 +++++++++--------- .../assets/create/blockstates/honey.json | 7 ++ .../create/blockstates/radial_chassis.json | 48 ++++---- .../resources/assets/create/lang/en_ud.json | 10 +- .../resources/assets/create/lang/en_us.json | 10 +- .../assets/create/lang/unfinished/de_de.json | 12 +- .../assets/create/lang/unfinished/fr_fr.json | 12 +- .../assets/create/lang/unfinished/it_it.json | 12 +- .../assets/create/lang/unfinished/ja_jp.json | 12 +- .../assets/create/lang/unfinished/ko_kr.json | 12 +- .../assets/create/lang/unfinished/nl_nl.json | 12 +- .../assets/create/lang/unfinished/pt_br.json | 12 +- .../assets/create/lang/unfinished/ru_ru.json | 12 +- .../assets/create/lang/unfinished/zh_cn.json | 12 +- .../assets/create/models/block/chocolate.json | 5 + .../assets/create/models/block/honey.json | 5 + .../create/models/item/chocolate_bucket.json | 6 + .../create/models/item/honey_bucket.json | 6 + .../create/recipes/emptying/honey_bottle.json | 17 +++ .../create/recipes/emptying/milk_bucket.json | 17 +++ .../create/recipes/filling/honey_bottle.json | 17 +++ .../create/recipes/filling/milk_bucket.json | 17 +++ .../data/create/recipes/mixing/chocolate.json | 22 ++++ .../data/create/recipes/mixing/tea.json | 24 ++++ .../data/forge/tags/fluids/honey.json | 7 ++ .../data/forge/tags/fluids/milk.json | 7 ++ .../data/minecraft/tags/fluids/water.json | 9 ++ .../java/com/simibubi/create/AllFluids.java | 74 +++++++++++- .../java/com/simibubi/create/AllTags.java | 6 + .../com/simibubi/create/CreateClient.java | 1 + .../contraptions/fluids/VirtualFluid.java | 47 ++++++++ .../fluids/potion/PotionFluid.java | 39 +------ .../processing/ProcessingRecipeBuilder.java | 2 + .../simibubi/create/events/ClientEvents.java | 63 ++++++++-- .../simibubi/create/events/CommonEvents.java | 34 +++++- .../foundation/data/CreateRegistrate.java | 12 +- .../data/recipe/EmptyingRecipeGen.java | 25 ++-- .../data/recipe/FillingRecipeGen.java | 25 ++-- .../data/recipe/MixingRecipeGen.java | 14 +++ .../foundation/fluid/FluidIngredient.java | 7 ++ .../create/textures/fluid/chocolate_flow.png | Bin 0 -> 16913 bytes .../textures/fluid/chocolate_flow.png.mcmeta | 5 + .../create/textures/fluid/chocolate_still.png | Bin 0 -> 4961 bytes .../textures/fluid/chocolate_still.png.mcmeta | 5 + .../create/textures/fluid/honey_flow.png | Bin 0 -> 17371 bytes .../textures/fluid/honey_flow.png.mcmeta | 5 + .../create/textures/fluid/milk_flow.png | Bin 0 -> 13348 bytes .../textures/fluid/milk_flow.png.mcmeta | 5 + .../create/textures/fluid/milk_still.png | Bin 0 -> 4677 bytes .../textures/fluid/milk_still.png.mcmeta | 5 + .../assets/create/textures/fluid/tea_flow.png | Bin 0 -> 16568 bytes .../create/textures/fluid/tea_flow.png.mcmeta | 5 + .../create/textures/fluid/tea_still.png | Bin 0 -> 4918 bytes .../textures/fluid/tea_still.png.mcmeta | 5 + .../create/textures/item/chocolate_bucket.png | Bin 0 -> 302 bytes .../create/textures/item/honey_bucket.png | Bin 0 -> 297 bytes 58 files changed, 702 insertions(+), 182 deletions(-) create mode 100644 src/generated/resources/assets/create/blockstates/chocolate.json create mode 100644 src/generated/resources/assets/create/blockstates/honey.json create mode 100644 src/generated/resources/assets/create/models/block/chocolate.json create mode 100644 src/generated/resources/assets/create/models/block/honey.json create mode 100644 src/generated/resources/assets/create/models/item/chocolate_bucket.json create mode 100644 src/generated/resources/assets/create/models/item/honey_bucket.json create mode 100644 src/generated/resources/data/create/recipes/emptying/honey_bottle.json create mode 100644 src/generated/resources/data/create/recipes/emptying/milk_bucket.json create mode 100644 src/generated/resources/data/create/recipes/filling/honey_bottle.json create mode 100644 src/generated/resources/data/create/recipes/filling/milk_bucket.json create mode 100644 src/generated/resources/data/create/recipes/mixing/chocolate.json create mode 100644 src/generated/resources/data/create/recipes/mixing/tea.json create mode 100644 src/generated/resources/data/forge/tags/fluids/honey.json create mode 100644 src/generated/resources/data/forge/tags/fluids/milk.json create mode 100644 src/generated/resources/data/minecraft/tags/fluids/water.json create mode 100644 src/main/java/com/simibubi/create/content/contraptions/fluids/VirtualFluid.java create mode 100644 src/main/resources/assets/create/textures/fluid/chocolate_flow.png create mode 100644 src/main/resources/assets/create/textures/fluid/chocolate_flow.png.mcmeta create mode 100644 src/main/resources/assets/create/textures/fluid/chocolate_still.png create mode 100644 src/main/resources/assets/create/textures/fluid/chocolate_still.png.mcmeta create mode 100644 src/main/resources/assets/create/textures/fluid/honey_flow.png create mode 100644 src/main/resources/assets/create/textures/fluid/honey_flow.png.mcmeta create mode 100644 src/main/resources/assets/create/textures/fluid/milk_flow.png create mode 100644 src/main/resources/assets/create/textures/fluid/milk_flow.png.mcmeta create mode 100644 src/main/resources/assets/create/textures/fluid/milk_still.png create mode 100644 src/main/resources/assets/create/textures/fluid/milk_still.png.mcmeta create mode 100644 src/main/resources/assets/create/textures/fluid/tea_flow.png create mode 100644 src/main/resources/assets/create/textures/fluid/tea_flow.png.mcmeta create mode 100644 src/main/resources/assets/create/textures/fluid/tea_still.png create mode 100644 src/main/resources/assets/create/textures/fluid/tea_still.png.mcmeta create mode 100644 src/main/resources/assets/create/textures/item/chocolate_bucket.png create mode 100644 src/main/resources/assets/create/textures/item/honey_bucket.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index d8a091480..7a8b08638 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -46,6 +46,7 @@ e81608346d43406ee72cae0f78b8bcfb37ba2d75 assets/create/blockstates/brown_seat.js 2ca82a3c4bf7ba1a9cf3bb674e786d9b23b020a4 assets/create/blockstates/chiseled_limestone.json cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets/create/blockstates/chiseled_scoria.json 291952556c52fba2af5bbd793c71af81abd27e71 assets/create/blockstates/chiseled_weathered_limestone.json +470e8c6a9c37b91fa745bc4f6e9d3740bd72467e assets/create/blockstates/chocolate.json b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json 4947c261310445fa55b92038326ac82967d192dd assets/create/blockstates/clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets/create/blockstates/clutch.json @@ -139,7 +140,7 @@ de8a40b7daf1497d5aecee47a43b3e0b1d030b00 assets/create/blockstates/fancy_scoria_ fc9ac0a7e7191b93516719455a17177fa6524ecc assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json b2a7c321b1795f20e7433f81a55ce4683de081b8 assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json 6372fe02ba0065acb0758121c45a15a1a8fdc5de assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json -fe9169716dd21a81a3710a89f0a9b7ea4dcd4d51 assets/create/blockstates/fluid_pipe.json +499aade14db59f62b46e8a266998feb41e1922a1 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 @@ -175,6 +176,7 @@ a5ec5401ba9f3e102a2e1b35837f643847afbca4 assets/create/blockstates/gray_seat.jso 13059309684db0cc7a0f1f4fce2407cf06cce80a assets/create/blockstates/green_seat.json f4a0fc68e8daaa0a47cdc951ced4310057a874b0 assets/create/blockstates/green_valve_handle.json 6ab675fa06317e6d07c0c1a453e7bb43e3f46b3b assets/create/blockstates/hand_crank.json +4572b90f5d6c586e145f2c7a55664c3cb734bd2b assets/create/blockstates/honey.json be3bef7e091d8b50bfc1c6b7275946d1f636aefd assets/create/blockstates/horizontal_framed_glass.json 18d9fdaa1352a7e2ec91135e46dae5c02ccd8f8f assets/create/blockstates/horizontal_framed_glass_pane.json 30ec347dfc827a9ae52cf3da964b828005acede1 assets/create/blockstates/hose_pulley.json @@ -333,7 +335,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 +9e7ea57c58889fa0021e3c4f19da3f763108399f 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,17 +397,17 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -d85a97025cad5fad4410a1bc46b59b3b72096524 assets/create/lang/en_ud.json -57c7008d6c3d1deda3eaf5703acecbd8464beb8f assets/create/lang/en_us.json -f1cd3a70b1567ad73681ad42ca0d754882845b4a assets/create/lang/unfinished/de_de.json -4358a9a4ae0cd69944590eb1b636c318e07679d8 assets/create/lang/unfinished/fr_fr.json -3f2ed1c2d1ae12ffe890be971ef498211d404426 assets/create/lang/unfinished/it_it.json -921f766a873e1c215a5874164bcbb580c6e63020 assets/create/lang/unfinished/ja_jp.json -ea1d59990f4ce87ca33ae14000869762bb517fcb assets/create/lang/unfinished/ko_kr.json -5d87a8b82204010fbd9ed765b566026be0a02ae6 assets/create/lang/unfinished/nl_nl.json -25157ef8e492c71b2d0d840048b660d92d1a3644 assets/create/lang/unfinished/pt_br.json -47a8850c0e417a32c1c47d273f0aac11808f7ddf assets/create/lang/unfinished/ru_ru.json -e2b80140f0ffd04335d7551c0feff9aa3c9913b9 assets/create/lang/unfinished/zh_cn.json +f3dbaf7f4421e8af956ecf17ce7cedef28cbbfe8 assets/create/lang/en_ud.json +9697cd407f7a049b129fe5e76c6a17969bcf9e68 assets/create/lang/en_us.json +062b0e2a0aac1eea9a3de85e66377091ae21f76d assets/create/lang/unfinished/de_de.json +8a117682ad45996564fc6cf6c22c92d7f17ad29a assets/create/lang/unfinished/fr_fr.json +1c3a68ebd422f6d40d178162f4ab7b627a48f49b assets/create/lang/unfinished/it_it.json +349213d72b60ed084ffd8dd18eadcf97f97a1fe5 assets/create/lang/unfinished/ja_jp.json +d29a71eb5c3955d487a1c3ff5bd7b065dc89e7f7 assets/create/lang/unfinished/ko_kr.json +0245f101e497d0895a7a070a3b4c07a3f62ad465 assets/create/lang/unfinished/nl_nl.json +12ec39553e80e1d740093b50860cbd2b506b08ba assets/create/lang/unfinished/pt_br.json +1ad44c155b71cdcd3c1a8763758e8b9f53941ee2 assets/create/lang/unfinished/ru_ru.json +f750f0cee38a3020c92ca6dae48b28f84b22f007 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 @@ -511,6 +513,7 @@ cd7751090cf3d55296b8e415d0af9b6f18d69770 assets/create/models/block/chiseled_gab d2e195aa2e90c712e51d855a9a4a334b52f62a69 assets/create/models/block/chiseled_limestone.json ac07568fa7b2d3fa84d0fe89a498514d30514291 assets/create/models/block/chiseled_scoria.json ecb2b85ee210dce329d2be66b98d0f0d4e6fc223 assets/create/models/block/chiseled_weathered_limestone.json +4156227e18c0896ce83f260f71b939abbbf4f01e assets/create/models/block/chocolate.json 30fe120af3cb32faf0729df4d2cdf868f804be17 assets/create/models/block/clockwork_bearing.json 70406933cc4fa5471af6e562fd84a397347dba17 assets/create/models/block/copper_casing.json b2c528cfd24a5cb0cb96c45d0a914f1090f8c32b assets/create/models/block/copper_valve_handle.json @@ -751,6 +754,7 @@ a68cd40ffb769b195437107f4a2c2188b222b74a assets/create/models/block/gray_sail.js 17b651233c62b928f0228562a7f6e7a2b7b2d6b7 assets/create/models/block/green_sail.json 1438b8ce54ac5557b8f10dcef94f3525eae19461 assets/create/models/block/green_seat.json cc7ce9b6bc687ad5027a67c3bf22bdf5bcd71674 assets/create/models/block/green_valve_handle.json +5bbe7e5322020d205d2c60bc14e4b45b317a193c assets/create/models/block/honey.json 9730fcb02f679087e81e24c836751e625be6a298 assets/create/models/block/horizontal_framed_glass.json d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets/create/models/block/horizontal_framed_glass_pane_noside.json 3e975bec02e2670ce2b1868cebcbd780a5ebf3f8 assets/create/models/block/horizontal_framed_glass_pane_noside_alt.json @@ -1155,6 +1159,7 @@ afd697168c9786eb80e54eccdc6a23afa6c7fb0e assets/create/models/item/chiseled_gabb 0cb1692f6cdd007ac690fd1f0222dde3429d136f assets/create/models/item/chiseled_limestone.json a47fbe5f2da79080d99ef0975bfa8da4d08f8be4 assets/create/models/item/chiseled_scoria.json 70232ce9b88119fb383717e2c1ad113f7aad6a99 assets/create/models/item/chiseled_weathered_limestone.json +eabf1870127d78c920305228eb51ddf36c44d016 assets/create/models/item/chocolate_bucket.json fe67c3f380d17735a9436a4579a8be1a02b8e4a0 assets/create/models/item/chute.json d418205c83d3e57c830755ee8c09e2962353e493 assets/create/models/item/cinder_flour.json c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bearing.json @@ -1298,6 +1303,7 @@ ecb9f32f62d3fa43fb226ab85adc2eb229fdfb77 assets/create/models/item/green_valve_h 398b1a7c76c7bdb6a23b1248fdce98f6d835467f assets/create/models/item/hand_crank.json cfab82a2cf7495d21778c1de9730a26afbdd523d assets/create/models/item/handheld_blockzapper.json dee43bf1a9c211a752fac2c07aeba123f7f0c914 assets/create/models/item/handheld_worldshaper.json +967695ab65edb8cb19e9759425f2d12d75406122 assets/create/models/item/honey_bucket.json e7ec65ad5be13cae5f7d60836b8df9e4a5baad56 assets/create/models/item/horizontal_framed_glass.json f0e3b2b8a553b6e61746c922c27302dabfff71b6 assets/create/models/item/horizontal_framed_glass_pane.json ff92f6a9dfb73a6ee1eaaed3279c89390ff04a80 assets/create/models/item/hose_pulley.json @@ -2862,6 +2868,8 @@ ddda28bb6efc43b7e3149756daf53e1664187283 data/create/recipes/dolomite_cobbleston 500ecdfdcf34e9d26256948e206aab4f0b79e659 data/create/recipes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json ff39e629b242ae91e23aec86b0a1f757dd938305 data/create/recipes/dolomite_pillar.json b4a8d14d9a20e812e0acb691b5b511a87e8b0576 data/create/recipes/dolomite_pillar_from_dolomite_stonecutting.json +20b7c7c62fa2e33199e08188dd8836844a6d9cfd data/create/recipes/emptying/honey_bottle.json +28a0f9a45671de2e6db19fa66374e245feeed142 data/create/recipes/emptying/milk_bucket.json 0e11aa1accb71ed62e212f23a7069b7b7b4e8119 data/create/recipes/fancy_andesite_bricks_from_andesite_stonecutting.json 8b86fc9a9416adeaab3f26192a73a481887675c3 data/create/recipes/fancy_andesite_bricks_slab.json c7b762b25c7a6705dba3e922e981be851ac4f36b data/create/recipes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json @@ -2925,6 +2933,8 @@ bd355332d17adcb0460b1d43146ca288efb78395 data/create/recipes/fancy_weathered_lim d2ab9ce73636773165564506580f2ec13bd1fc50 data/create/recipes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json 36947f27d2b2e57b00440fd5acd06a7554e5a387 data/create/recipes/fancy_weathered_limestone_bricks_wall.json 1d0e41ca98e48073c72adf4077610c96e592f9a5 data/create/recipes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json +c8ca74a6cd071308a1750a2ad1153e79422598a0 data/create/recipes/filling/honey_bottle.json +c83e77a9799b6ca34dd73aa76b56159f2103c48c data/create/recipes/filling/milk_bucket.json 5b8bbde7f8b270ab75fac18d6858f2fadbc0efa3 data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json d697de0c9b706ca4e18da7a2d769e7e5fe8d769d data/create/recipes/framed_glass_pane.json a0dae50faaa1b7142bb4309675e3084c68daa547 data/create/recipes/gabbro_bricks_from_gabbro_stonecutting.json @@ -3043,9 +3053,11 @@ eec880075efd6008b604a4b8064d782752b4bad6 data/create/recipes/milling/wool.json b3cc5e61bab40ca6135dc1f706f3ab447e9f78bf data/create/recipes/mixing/andesite_alloy.json ce9dc7dacb85cb23a7187c19a115b40e597ad36b data/create/recipes/mixing/andesite_alloy_from_zinc.json 3417f9399ce0fb32fc4bce94c772b40d780c9006 data/create/recipes/mixing/brass_ingot.json +ab602a53a5d8d057aad910dd1c5529cde2d587ab data/create/recipes/mixing/chocolate.json 0e29b4ce13750aab5a60ae54cbec8776569b35e0 data/create/recipes/mixing/chromatic_compound.json d9a3dff1288d675ab812eef1eb73cb27dcc71bd2 data/create/recipes/mixing/crushed_brass.json 00b165ea38d834c7955440e87062004a8182c3f8 data/create/recipes/mixing/gunpowder.json +0f89b3f2d81585591513619b8d1e8694eb874316 data/create/recipes/mixing/tea.json 3279bd1a34217a19bc9992a2ad87629390dd003f data/create/recipes/mixing/temp_cobble.json 3295a2195707f952a83deb3bed10b43570b215e5 data/create/recipes/mixing/temp_lava.json 1998c6f84f871d6da58ec29d729401d18f8f1aa1 data/create/recipes/mossy_andesite_from_andesite_stonecutting.json @@ -3301,6 +3313,8 @@ d5ea262a0f5fb210612d22521818e26cf08e591a data/forge/tags/blocks/ores/zinc.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/blocks/storage_blocks/brass.json f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/blocks/storage_blocks/copper.json 7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/blocks/storage_blocks/zinc.json +391c9b2be5740aea943a8a5fe27eb327e2d973b0 data/forge/tags/fluids/honey.json +aa729fedc4fcca0f0a18bf7b00075af06bf5357f data/forge/tags/fluids/milk.json d9ffc62a496946fc4848934e7c0a6e917337f8be data/forge/tags/items/beacon_payment.json 05ca51cdc60a5e109b5a0e3b782de13d34ebcb24 data/forge/tags/items/cobblestone.json 16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/items/glass/colorless.json @@ -3330,6 +3344,7 @@ f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/co 29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/blocks/slabs.json 0d188ad2c33d10ee8f0d455c4e63a4460a8302fb data/minecraft/tags/blocks/stairs.json 92584f914c53e00c111f9ff5e3894e2e3594946b data/minecraft/tags/blocks/walls.json +09d26bcd0f94459f945219997277c4fbf14adeb7 data/minecraft/tags/fluids/water.json 29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/items/slabs.json 0d188ad2c33d10ee8f0d455c4e63a4460a8302fb data/minecraft/tags/items/stairs.json 92584f914c53e00c111f9ff5e3894e2e3594946b data/minecraft/tags/items/walls.json diff --git a/src/generated/resources/assets/create/blockstates/chocolate.json b/src/generated/resources/assets/create/blockstates/chocolate.json new file mode 100644 index 000000000..d373c6e9b --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/chocolate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "create:block/chocolate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json index 3b646b920..a8a9a60dc 100644 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/fluid_pipe.json @@ -60,10 +60,10 @@ }, { "when": { - "down": "false", + "south": "false", "north": "true", - "up": "true", - "south": "false" + "down": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/lu_x" @@ -71,10 +71,10 @@ }, { "when": { - "down": "false", + "south": "true", "north": "false", - "up": "true", - "south": "true" + "down": "false", + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_x" @@ -82,10 +82,10 @@ }, { "when": { - "down": "true", + "south": "false", "north": "true", - "up": "false", - "south": "false" + "down": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_x" @@ -93,10 +93,10 @@ }, { "when": { - "down": "true", + "south": "true", "north": "false", - "up": "false", - "south": "true" + "down": "true", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/rd_x" @@ -104,10 +104,10 @@ }, { "when": { + "south": "false", + "north": "false", "down": "true", - "north": "false", - "up": "true", - "south": "false" + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -115,10 +115,10 @@ }, { "when": { + "south": "false", + "north": "false", "down": "false", - "north": "false", - "up": "true", - "south": "false" + "up": "true" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -126,10 +126,10 @@ }, { "when": { + "south": "false", + "north": "false", "down": "true", - "north": "false", - "up": "false", - "south": "false" + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_x" @@ -137,10 +137,10 @@ }, { "when": { - "down": "false", + "south": "true", "north": "true", - "up": "false", - "south": "true" + "down": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -148,10 +148,10 @@ }, { "when": { - "down": "false", + "south": "false", "north": "true", - "up": "false", - "south": "false" + "down": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -159,10 +159,10 @@ }, { "when": { - "down": "false", + "south": "true", "north": "false", - "up": "false", - "south": "true" + "down": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_x" @@ -170,10 +170,10 @@ }, { "when": { - "down": "false", + "south": "false", "north": "false", - "up": "false", - "south": "false" + "down": "false", + "up": "false" }, "apply": { "model": "create:block/fluid_pipe/none_x" @@ -181,10 +181,10 @@ }, { "when": { + "south": "true", "west": "true", - "east": "false", "north": "false", - "south": "true" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lu_y" @@ -192,10 +192,10 @@ }, { "when": { + "south": "true", "west": "false", - "east": "true", "north": "false", - "south": "true" + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/ru_y" @@ -203,10 +203,10 @@ }, { "when": { + "south": "false", "west": "true", - "east": "false", "north": "true", - "south": "false" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ld_y" @@ -214,10 +214,10 @@ }, { "when": { + "south": "false", "west": "false", - "east": "true", "north": "true", - "south": "false" + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/rd_y" @@ -225,10 +225,10 @@ }, { "when": { + "south": "true", "west": "false", - "east": "false", "north": "true", - "south": "true" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -236,10 +236,10 @@ }, { "when": { + "south": "true", "west": "false", - "east": "false", "north": "false", - "south": "true" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -247,10 +247,10 @@ }, { "when": { + "south": "false", "west": "false", - "east": "false", "north": "true", - "south": "false" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/ud_y" @@ -258,10 +258,10 @@ }, { "when": { + "south": "false", "west": "true", - "east": "true", "north": "false", - "south": "false" + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -269,10 +269,10 @@ }, { "when": { + "south": "false", "west": "true", - "east": "false", "north": "false", - "south": "false" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -280,10 +280,10 @@ }, { "when": { + "south": "false", "west": "false", - "east": "true", "north": "false", - "south": "false" + "east": "true" }, "apply": { "model": "create:block/fluid_pipe/lr_y" @@ -291,10 +291,10 @@ }, { "when": { + "south": "false", "west": "false", - "east": "false", "north": "false", - "south": "false" + "east": "false" }, "apply": { "model": "create:block/fluid_pipe/none_y" diff --git a/src/generated/resources/assets/create/blockstates/honey.json b/src/generated/resources/assets/create/blockstates/honey.json new file mode 100644 index 000000000..60b561e56 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/honey.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "create:block/honey" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 9d00ea8b1..899486339 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -89,8 +89,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "x" + "axis": "x", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -99,8 +99,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "y" + "axis": "y", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -109,8 +109,8 @@ }, { "when": { - "sticky_west": "true", - "axis": "z" + "axis": "z", + "sticky_west": "true" }, "apply": { "model": "create:block/radial_chassis_side_z_sticky", @@ -119,8 +119,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "x" + "axis": "x", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -129,8 +129,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "y" + "axis": "y", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -139,8 +139,8 @@ }, { "when": { - "sticky_west": "false", - "axis": "z" + "axis": "z", + "sticky_west": "false" }, "apply": { "model": "create:block/radial_chassis_side_z", @@ -149,8 +149,8 @@ }, { "when": { - "sticky_north": "true", - "axis": "x" + "axis": "x", + "sticky_north": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky" @@ -158,8 +158,8 @@ }, { "when": { - "sticky_north": "true", - "axis": "y" + "axis": "y", + "sticky_north": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky", @@ -168,8 +168,8 @@ }, { "when": { - "sticky_north": "true", - "axis": "z" + "axis": "z", + "sticky_north": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -178,8 +178,8 @@ }, { "when": { - "sticky_north": "false", - "axis": "x" + "axis": "x", + "sticky_north": "false" }, "apply": { "model": "create:block/radial_chassis_side_x" @@ -187,8 +187,8 @@ }, { "when": { - "sticky_north": "false", - "axis": "y" + "axis": "y", + "sticky_north": "false" }, "apply": { "model": "create:block/radial_chassis_side_y", @@ -197,8 +197,8 @@ }, { "when": { - "sticky_north": "false", - "axis": "z" + "axis": "z", + "sticky_north": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index bdf06c6c1..64fb4b653 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -47,6 +47,7 @@ "block.create.chiseled_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", + "block.create.chocolate": "\u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", "block.create.chute": "\u01DD\u0287n\u0265\u0186", "block.create.clockwork_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186", "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", @@ -176,6 +177,7 @@ "block.create.green_seat": "\u0287\u0250\u01DDS u\u01DD\u01DD\u0279\u2141", "block.create.green_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B u\u01DD\u01DD\u0279\u2141", "block.create.hand_crank": "\u029Eu\u0250\u0279\u0186 pu\u0250H", + "block.create.honey": "\u028E\u01DDuoH", "block.create.horizontal_framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0287uoz\u0131\u0279oH", "block.create.horizontal_framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0287uoz\u0131\u0279oH", "block.create.hose_pulley": "\u028E\u01DD\u05DF\u05DFn\u0500 \u01DDsoH", @@ -400,7 +402,11 @@ "entity.create.seat": "\u0287\u0250\u01DDS", "entity.create.stationary_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0250uo\u0131\u0287\u0250\u0287S", "entity.create.super_glue": "\u01DDn\u05DF\u2141 \u0279\u01DDdnS", - "fluid.create.flowing_potion": "uo\u0131\u0287o\u0500", + "fluid.create.chocolate": "\u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", + "fluid.create.honey": "\u028E\u01DDuoH", + "fluid.create.milk": "\u029E\u05DF\u0131W", + "fluid.create.potion": "uo\u0131\u0287o\u0500", + "fluid.create.tea": "\u0250\u01DD\u27D8 s,\u0279\u01DDp\u05DF\u0131n\u15FA", "item.create.andesite_alloy": "\u028Eo\u05DF\u05DF\u2C6F \u01DD\u0287\u0131s\u01DDpu\u2C6F", "item.create.attribute_filter": "\u0279\u01DD\u0287\u05DF\u0131\u2132 \u01DD\u0287nq\u0131\u0279\u0287\u0287\u2C6F", "item.create.belt_connector": "\u0287\u05DF\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", @@ -410,6 +416,7 @@ "item.create.brass_nugget": "\u0287\u01DDbbnN ss\u0250\u0279\u15FA", "item.create.brass_sheet": "\u0287\u01DD\u01DD\u0265S ss\u0250\u0279\u15FA", "item.create.chest_minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W \u0287s\u01DD\u0265\u0186", + "item.create.chocolate_bucket": "\u0287\u01DD\u029E\u0254n\u15FA \u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", "item.create.chromatic_compound": "punod\u026Fo\u0186 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186", "item.create.cinder_flour": "\u0279no\u05DF\u2132 \u0279\u01DDpu\u0131\u0186", "item.create.copper_ingot": "\u0287obuI \u0279\u01DDddo\u0186", @@ -433,6 +440,7 @@ "item.create.golden_sheet": "\u0287\u01DD\u01DD\u0265S u\u01DDp\u05DFo\u2141", "item.create.handheld_blockzapper": "\u0279\u01DDdd\u0250z\u029E\u0254o\u05DF\u15FA p\u05DF\u01DD\u0265pu\u0250H", "item.create.handheld_worldshaper": "\u0279\u01DDd\u0250\u0265sp\u05DF\u0279oM p\u05DF\u01DD\u0265pu\u0250H", + "item.create.honey_bucket": "\u0287\u01DD\u029E\u0254n\u15FA \u028E\u01DDuoH", "item.create.integrated_circuit": "\u0287\u0131n\u0254\u0279\u0131\u0186 p\u01DD\u0287\u0250\u0279b\u01DD\u0287uI", "item.create.iron_sheet": "\u0287\u01DD\u01DD\u0265S uo\u0279I", "item.create.lapis_sheet": "\u0287\u01DD\u01DD\u0265S s\u0131d\u0250\uA780", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 6d798ec12..596416921 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -50,6 +50,7 @@ "block.create.chiseled_limestone": "Chiseled Limestone", "block.create.chiseled_scoria": "Chiseled Scoria", "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", + "block.create.chocolate": "Chocolate", "block.create.chute": "Chute", "block.create.clockwork_bearing": "Clockwork Bearing", "block.create.clutch": "Clutch", @@ -179,6 +180,7 @@ "block.create.green_seat": "Green Seat", "block.create.green_valve_handle": "Green Valve Handle", "block.create.hand_crank": "Hand Crank", + "block.create.honey": "Honey", "block.create.horizontal_framed_glass": "Horizontal Framed Glass", "block.create.horizontal_framed_glass_pane": "Horizontal Framed Glass Pane", "block.create.hose_pulley": "Hose Pulley", @@ -405,7 +407,11 @@ "entity.create.stationary_contraption": "Stationary Contraption", "entity.create.super_glue": "Super Glue", - "fluid.create.flowing_potion": "Potion", + "fluid.create.chocolate": "Chocolate", + "fluid.create.honey": "Honey", + "fluid.create.milk": "Milk", + "fluid.create.potion": "Potion", + "fluid.create.tea": "Builder's Tea", "item.create.andesite_alloy": "Andesite Alloy", "item.create.attribute_filter": "Attribute Filter", @@ -416,6 +422,7 @@ "item.create.brass_nugget": "Brass Nugget", "item.create.brass_sheet": "Brass Sheet", "item.create.chest_minecart_contraption": "Chest Minecart Contraption", + "item.create.chocolate_bucket": "Chocolate Bucket", "item.create.chromatic_compound": "Chromatic Compound", "item.create.cinder_flour": "Cinder Flour", "item.create.copper_ingot": "Copper Ingot", @@ -439,6 +446,7 @@ "item.create.golden_sheet": "Golden Sheet", "item.create.handheld_blockzapper": "Handheld Blockzapper", "item.create.handheld_worldshaper": "Handheld Worldshaper", + "item.create.honey_bucket": "Honey Bucket", "item.create.integrated_circuit": "Integrated Circuit", "item.create.iron_sheet": "Iron Sheet", "item.create.lapis_sheet": "Lapis Sheet", 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 a1454ec4e..3aa4db383 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: 1054", + "_": "Missing Localizations: 1062", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", "block.create.clutch": "Kupplung", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "UNLOCALIZED: Hand Crank", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "Blockpistole", "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", "item.create.iron_sheet": "Eisenblech", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", 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 c3c05ab81..b917b0a65 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: 684", + "_": "Missing Localizations: 692", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "Roulement mécanique horloger", "block.create.clutch": "Embrayage", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "Manivelle", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "Alliage d'andésite", "item.create.attribute_filter": "Filtre d'attribut", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "Pépite de laiton", "item.create.brass_sheet": "Plaques de laiton", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "Composé chromatique", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "Lingot de cuivre", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "Blockzappeur portable", "item.create.handheld_worldshaper": "Térraformeur portable", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "Circuit intégré", "item.create.iron_sheet": "Plaque de Fer", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", 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 2437edf40..bc568f600 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: 668", + "_": "Missing Localizations: 676", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "Supporto del Orologio", "block.create.clutch": "Frizione", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "Manovella", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "Finestra Orizzontale Vetro", "block.create.horizontal_framed_glass_pane": "Pannello di Finestra Orizzontale Vetro", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "Lega di Andesite", "item.create.attribute_filter": "Filtro Attributi", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "Pepita di Ottone", "item.create.brass_sheet": "Lamiera di Ottone", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "Composto Cromatico", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "Lingotto di Rame", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "Zapper di Blocchi Portatile", "item.create.handheld_worldshaper": "Plasmatore del Mondo Portatile", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "Circuito Integrato", "item.create.iron_sheet": "Lamiera di Ferro", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", 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 dfde660e0..1bd589dcf 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: 667", + "_": "Missing Localizations: 675", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "時計仕掛けのベアリング", "block.create.clutch": "クラッチ", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "ハンドクランク", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "横型ガラス窓", "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "安山岩合金", "item.create.attribute_filter": "属性フィルター", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "真鍮ナゲット", "item.create.brass_sheet": "真鍮シート", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "色彩の化合物", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "銅インゴット", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "携帯型ブロックザッパー", "item.create.handheld_worldshaper": "携帯型ワールドシェイパー", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "集積回路", "item.create.iron_sheet": "鉄板", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", 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 934b7d683..948863b94 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: 668", + "_": "Missing Localizations: 676", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "시계 베어링", "block.create.clutch": "클러치", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "핸드 크랭크", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "수평 유리", "block.create.horizontal_framed_glass_pane": "수평 유리판", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "안산암 합금", "item.create.attribute_filter": "속성 필터 틀", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "황동 조각", "item.create.brass_sheet": "황동 판", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "색채 혼합물", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "구리 주괴", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "휴대용 블럭발사기", "item.create.handheld_worldshaper": "휴대용 세계편집기", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "집적 회로", "item.create.iron_sheet": "철 판", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", 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 3ad604b98..a2947c95f 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: 995", + "_": "Missing Localizations: 1003", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", "block.create.clutch": "Koppeling", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "UNLOCALIZED: Hand Crank", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "Brons klompje", "item.create.brass_sheet": "Brons Platen", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "Koperstaaf", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "Blokzapper", "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", "item.create.iron_sheet": "IJzeren Platen", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", 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 cd4138904..09e5c71e8 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: 1061", + "_": "Missing Localizations: 1069", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", "block.create.clutch": "Embreagem", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "UNLOCALIZED: Hand Crank", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", "item.create.handheld_blockzapper": "Blockzapper Portátil", "item.create.handheld_worldshaper": "UNLOCALIZED: Handheld Worldshaper", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", "item.create.iron_sheet": "Placas de Ferro", "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", 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 d09abba3f..d785a1d7a 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: 337", + "_": "Missing Localizations: 345", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "Резной известняк", "block.create.chiseled_scoria": "Резной пепел", "block.create.chiseled_weathered_limestone": "Выветренный резной известняк", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "Часовой механизм", "block.create.clutch": "Сцепление", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "Рукоятка", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "Горизонтальное обрамлённое стекло", "block.create.horizontal_framed_glass_pane": "Горизонтальная обрамлённая стеклянная панель", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "Стационарная штуковина", "entity.create.super_glue": "Супер клей", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "Андезитовый сплав", "item.create.attribute_filter": "Фильтр атрибутов", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "Кусочек латуни", "item.create.brass_sheet": "Латунный лист", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "Хроматический компаунд", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "Медный слиток", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "Золотой лист", "item.create.handheld_blockzapper": "Ручная блоковая пушка", "item.create.handheld_worldshaper": "Ручной редактор мира", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "Интегральная схема", "item.create.iron_sheet": "Железный лист", "item.create.lapis_sheet": "Лазуритовый лист", 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 76c347876..d4fc955fa 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: 350", + "_": "Missing Localizations: 358", "_": "->------------------------] Game Elements [------------------------<-", @@ -51,6 +51,7 @@ "block.create.chiseled_limestone": "錾制石灰岩", "block.create.chiseled_scoria": "錾制熔渣", "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", + "block.create.chocolate": "UNLOCALIZED: Chocolate", "block.create.chute": "UNLOCALIZED: Chute", "block.create.clockwork_bearing": "时钟轴承", "block.create.clutch": "离合器", @@ -180,6 +181,7 @@ "block.create.green_seat": "UNLOCALIZED: Green Seat", "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", "block.create.hand_crank": "手摇曲柄", + "block.create.honey": "UNLOCALIZED: Honey", "block.create.horizontal_framed_glass": "竖直边框玻璃", "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", @@ -406,7 +408,11 @@ "entity.create.stationary_contraption": "固定结构", "entity.create.super_glue": "强力胶", - "fluid.create.flowing_potion": "UNLOCALIZED: Potion", + "fluid.create.chocolate": "UNLOCALIZED: Chocolate", + "fluid.create.honey": "UNLOCALIZED: Honey", + "fluid.create.milk": "UNLOCALIZED: Milk", + "fluid.create.potion": "UNLOCALIZED: Potion", + "fluid.create.tea": "UNLOCALIZED: Builder's Tea", "item.create.andesite_alloy": "安山合金", "item.create.attribute_filter": "属性过滤器", @@ -417,6 +423,7 @@ "item.create.brass_nugget": "黄铜粒", "item.create.brass_sheet": "黄铜板", "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", + "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", "item.create.chromatic_compound": "异彩化合物", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", "item.create.copper_ingot": "铜锭", @@ -440,6 +447,7 @@ "item.create.golden_sheet": "金板", "item.create.handheld_blockzapper": "手持式方块放置器", "item.create.handheld_worldshaper": "手持式环境塑形器", + "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", "item.create.integrated_circuit": "集成电路板", "item.create.iron_sheet": "铁板", "item.create.lapis_sheet": "青金石板", diff --git a/src/generated/resources/assets/create/models/block/chocolate.json b/src/generated/resources/assets/create/models/block/chocolate.json new file mode 100644 index 000000000..1baf010f2 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/chocolate.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "create:fluid/chocolate_still" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/honey.json b/src/generated/resources/assets/create/models/block/honey.json new file mode 100644 index 000000000..262271bb6 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/honey.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "block/honey_block_top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chocolate_bucket.json b/src/generated/resources/assets/create/models/item/chocolate_bucket.json new file mode 100644 index 000000000..66dd557ec --- /dev/null +++ b/src/generated/resources/assets/create/models/item/chocolate_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/chocolate_bucket" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/honey_bucket.json b/src/generated/resources/assets/create/models/item/honey_bucket.json new file mode 100644 index 000000000..f4a500afb --- /dev/null +++ b/src/generated/resources/assets/create/models/item/honey_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/honey_bucket" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/emptying/honey_bottle.json b/src/generated/resources/data/create/recipes/emptying/honey_bottle.json new file mode 100644 index 000000000..de62bb4a3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/emptying/honey_bottle.json @@ -0,0 +1,17 @@ +{ + "type": "create:emptying", + "ingredients": [ + { + "item": "minecraft:honey_bottle" + } + ], + "results": [ + { + "item": "minecraft:glass_bottle" + }, + { + "fluid": "create:honey", + "amount": 250 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/emptying/milk_bucket.json b/src/generated/resources/data/create/recipes/emptying/milk_bucket.json new file mode 100644 index 000000000..be95f4c33 --- /dev/null +++ b/src/generated/resources/data/create/recipes/emptying/milk_bucket.json @@ -0,0 +1,17 @@ +{ + "type": "create:emptying", + "ingredients": [ + { + "item": "minecraft:milk_bucket" + } + ], + "results": [ + { + "item": "minecraft:bucket" + }, + { + "fluid": "create:milk", + "amount": 1000 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/honey_bottle.json b/src/generated/resources/data/create/recipes/filling/honey_bottle.json new file mode 100644 index 000000000..dd1f62eb2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/filling/honey_bottle.json @@ -0,0 +1,17 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "minecraft:glass_bottle" + }, + { + "fluidTag": "forge:honey", + "amount": 250 + } + ], + "results": [ + { + "item": "minecraft:honey_bottle" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/milk_bucket.json b/src/generated/resources/data/create/recipes/filling/milk_bucket.json new file mode 100644 index 000000000..ab968ec8d --- /dev/null +++ b/src/generated/resources/data/create/recipes/filling/milk_bucket.json @@ -0,0 +1,17 @@ +{ + "type": "create:filling", + "ingredients": [ + { + "item": "minecraft:bucket" + }, + { + "fluidTag": "forge:milk", + "amount": 1000 + } + ], + "results": [ + { + "item": "minecraft:milk_bucket" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/chocolate.json b/src/generated/resources/data/create/recipes/mixing/chocolate.json new file mode 100644 index 000000000..e15f7307d --- /dev/null +++ b/src/generated/resources/data/create/recipes/mixing/chocolate.json @@ -0,0 +1,22 @@ +{ + "type": "create:mixing", + "ingredients": [ + { + "item": "minecraft:sugar" + }, + { + "item": "minecraft:cocoa_beans" + }, + { + "fluidTag": "forge:milk", + "amount": 250 + } + ], + "results": [ + { + "fluid": "create:chocolate", + "amount": 250 + } + ], + "heatRequirement": "heated" +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/tea.json b/src/generated/resources/data/create/recipes/mixing/tea.json new file mode 100644 index 000000000..40ccbf50a --- /dev/null +++ b/src/generated/resources/data/create/recipes/mixing/tea.json @@ -0,0 +1,24 @@ +{ + "type": "create:mixing", + "ingredients": [ + { + "tag": "minecraft:leaves" + }, + { + "fluid": "minecraft:water", + "nbt": {}, + "amount": 250 + }, + { + "fluidTag": "forge:milk", + "amount": 250 + } + ], + "results": [ + { + "fluid": "create:tea", + "amount": 500 + } + ], + "heatRequirement": "heated" +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/honey.json b/src/generated/resources/data/forge/tags/fluids/honey.json new file mode 100644 index 000000000..6fab599f2 --- /dev/null +++ b/src/generated/resources/data/forge/tags/fluids/honey.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "create:flowing_honey", + "create:honey" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/milk.json b/src/generated/resources/data/forge/tags/fluids/milk.json new file mode 100644 index 000000000..6860027e8 --- /dev/null +++ b/src/generated/resources/data/forge/tags/fluids/milk.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "create:flowing_milk", + "create:milk" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/fluids/water.json b/src/generated/resources/data/minecraft/tags/fluids/water.json new file mode 100644 index 000000000..01d633e97 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/fluids/water.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "create:flowing_honey", + "create:honey", + "create:flowing_chocolate", + "create:chocolate" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllFluids.java b/src/main/java/com/simibubi/create/AllFluids.java index dba2a7919..0666e5c72 100644 --- a/src/main/java/com/simibubi/create/AllFluids.java +++ b/src/main/java/com/simibubi/create/AllFluids.java @@ -1,21 +1,93 @@ package com.simibubi.create; +import javax.annotation.Nullable; + +import com.simibubi.create.content.contraptions.fluids.VirtualFluid; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid; import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.PotionFluidAttributes; +import com.simibubi.create.content.palettes.AllPaletteBlocks; import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.entry.RegistryEntry; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.RenderTypeLookup; +import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.IFluidState; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fluids.ForgeFlowingFluid; + public class AllFluids { private static final CreateRegistrate REGISTRATE = Create.registrate(); public static RegistryEntry POTION = REGISTRATE.virtualFluid("potion", PotionFluidAttributes::new, PotionFluid::new) - .lang(f -> "fluid.create.flowing_potion", "Potion") + .lang(f -> "fluid.create.potion", "Potion") .register(); + public static RegistryEntry TEA = REGISTRATE.virtualFluid("tea") + .lang(f -> "fluid.create.tea", "Builder's Tea") + .register(); + + public static RegistryEntry MILK = REGISTRATE.virtualFluid("milk") + .lang(f -> "fluid.create.milk", "Milk") + .tag(AllTags.forgeFluidTag("milk")) + .register(); + + public static RegistryEntry HONEY = + REGISTRATE.fluid("honey", new ResourceLocation("block/honey_block_top"), Create.asResource("fluid/honey_flow")) + .lang(f -> "fluid.create.honey", "Honey") + .attributes(b -> b.viscosity(500) + .density(1400)) + .properties(p -> p.levelDecreasePerBlock(2) + .tickRate(25) + .slopeFindDistance(3) + .explosionResistance(100f)) + .tag(AllTags.forgeFluidTag("honey")) + .register(); + + public static RegistryEntry CHOCOLATE = REGISTRATE.standardFluid("chocolate") + .lang(f -> "fluid.create.chocolate", "Chocolate") + .attributes(b -> b.viscosity(500) + .density(1400)) + .properties(p -> p.levelDecreasePerBlock(2) + .tickRate(25) + .slopeFindDistance(3) + .explosionResistance(100f)) + .register(); + // Load this class public static void register() {} + @OnlyIn(Dist.CLIENT) + public static void assignRenderLayers() { + makeTranslucent(HONEY); + } + + @OnlyIn(Dist.CLIENT) + private static void makeTranslucent(RegistryEntry entry) { + ForgeFlowingFluid fluid = entry.get(); + RenderTypeLookup.setRenderLayer(fluid, RenderType.getTranslucent()); + RenderTypeLookup.setRenderLayer(fluid.getStillFluid(), RenderType.getTranslucent()); + } + + @Nullable + public static BlockState getLavaInteraction(IFluidState fluidState) { + Fluid fluid = fluidState.getFluid(); + if (fluid.isEquivalentTo(HONEY.get())) + return fluidState.isSource() ? AllPaletteBlocks.LIMESTONE.getDefaultState() + : AllPaletteBlocks.LIMESTONE_VARIANTS.registeredBlocks.get(0) + .getDefaultState(); + if (fluid.isEquivalentTo(CHOCOLATE.get())) + return fluidState.isSource() ? AllPaletteBlocks.SCORIA.getDefaultState() + : AllPaletteBlocks.SCORIA_VARIANTS.registeredBlocks.get(0) + .getDefaultState(); + return null; + } + } diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index 3bb8c76ce..b486accd5 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -13,11 +13,13 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.fluid.Fluid; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.tags.BlockTags; +import net.minecraft.tags.FluidTags; import net.minecraft.tags.ItemTags; import net.minecraft.tags.Tag; import net.minecraft.tags.TagCollection; @@ -41,6 +43,10 @@ public class AllTags { public static Tag forgeItemTag(String name) { return forgeTag(ItemTags.getCollection(), name); } + + public static Tag forgeFluidTag(String name) { + return forgeTag(FluidTags.getContainer(), name); + } public static Tag forgeTag(TagCollection collection, String name) { return tag(collection, "forge", name); diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index b347bce5f..26c91360b 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -73,6 +73,7 @@ public class CreateClient { //AllTileEntities.registerRenderers(); AllEntityTypes.registerRenderers(); getColorHandler().init(); + AllFluids.assignRenderLayers(); IResourceManager resourceManager = Minecraft.getInstance() .getResourceManager(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/VirtualFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/VirtualFluid.java new file mode 100644 index 000000000..e95c2bf58 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/VirtualFluid.java @@ -0,0 +1,47 @@ +package com.simibubi.create.content.contraptions.fluids; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.IFluidState; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraftforge.fluids.ForgeFlowingFluid; + +public class VirtualFluid extends ForgeFlowingFluid { + + public VirtualFluid(Properties properties) { + super(properties); + } + + @Override + public Fluid getStillFluid() { + return super.getStillFluid(); + } + + @Override + public Fluid getFlowingFluid() { + return this; + } + + @Override + public Item getFilledBucket() { + return Items.AIR; + } + + @Override + protected BlockState getBlockState(IFluidState state) { + return Blocks.AIR.getDefaultState(); + } + + @Override + public boolean isSource(IFluidState p_207193_1_) { + return false; + } + + @Override + public int getLevel(IFluidState p_207192_1_) { + return 0; + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java index d1d54ff75..da3aa0bce 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java @@ -4,13 +4,9 @@ import java.util.Collection; import java.util.List; import com.simibubi.create.AllFluids; +import com.simibubi.create.content.contraptions.fluids.VirtualFluid; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.IFluidState; -import net.minecraft.item.Item; -import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.potion.EffectInstance; @@ -20,10 +16,9 @@ import net.minecraft.potion.Potions; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.ForgeFlowingFluid; import net.minecraftforge.registries.ForgeRegistries; -public class PotionFluid extends ForgeFlowingFluid { +public class PotionFluid extends VirtualFluid { public enum BottleType { REGULAR, SPLASH, LINGERING; @@ -41,36 +36,6 @@ public class PotionFluid extends ForgeFlowingFluid { return fluidStack; } - @Override - public Fluid getStillFluid() { - return this; - } - - @Override - public Fluid getFlowingFluid() { - return this; - } - - @Override - public Item getFilledBucket() { - return Items.AIR; - } - - @Override - protected BlockState getBlockState(IFluidState state) { - return Blocks.AIR.getDefaultState(); - } - - @Override - public boolean isSource(IFluidState p_207193_1_) { - return false; - } - - @Override - public int getLevel(IFluidState p_207192_1_) { - return 0; - } - public static class PotionFluidAttributes extends FluidAttributes { public PotionFluidAttributes(Builder builder, Fluid fluid) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java index c0b1deb2e..1a68ddc6a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java @@ -8,6 +8,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; +import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.utility.Lang; @@ -155,6 +156,7 @@ public class ProcessingRecipeBuilder> { } public ProcessingRecipeBuilder output(Fluid fluid, int amount) { + fluid = FluidHelper.convertToStill(fluid); return output(new FluidStack(fluid, amount)); } diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index c963cf013..5f5e8c978 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -1,6 +1,10 @@ package com.simibubi.create.events; +import java.util.ArrayList; +import java.util.List; + import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllFluids; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.KineticDebugger; @@ -29,15 +33,19 @@ import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkRenderer; import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.ServerSpeedProvider; + import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.IFluidState; import net.minecraft.item.ItemStack; import net.minecraft.util.math.Vec3d; import net.minecraft.util.text.ITextComponent; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.EntityViewRenderEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.RenderWorldLastEvent; @@ -49,9 +57,6 @@ import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import java.util.ArrayList; -import java.util.List; - @EventBusSubscriber(value = Dist.CLIENT) public class ClientEvents { @@ -72,11 +77,11 @@ public class ClientEvents { CreateClient.schematicSender.tick(); CreateClient.schematicAndQuillHandler.tick(); CreateClient.schematicHandler.tick(); - + ContraptionHandler.tick(world); CapabilityMinecartController.tick(world); CouplingPhysics.tick(world); - + ScreenOpener.tick(); ServerSpeedProvider.clientTick(); BeltConnectorHandler.tick(); @@ -96,9 +101,9 @@ public class ClientEvents { ArmInteractionPointHandler.tick(); SailBlockPlacementHelper.tick(); PistonPolePlacementHelper.tick(); - CreateClient.outliner.tickOutlines(); + CreateClient.outliner.tickOutlines(); } - + @SubscribeEvent public static void onLoadWorld(WorldEvent.Load event) { CreateClient.bufferCache.invalidate(); @@ -112,13 +117,13 @@ public class ClientEvents { ms.push(); ms.translate(-view.getX(), -view.getY(), -view.getZ()); SuperRenderTypeBuffer buffer = SuperRenderTypeBuffer.getInstance(); - + CouplingRenderer.renderAll(ms, buffer); CreateClient.schematicHandler.render(ms, buffer); CreateClient.outliner.renderOutlines(ms, buffer); // CollisionDebugger.render(ms, buffer); buffer.draw(); - + ms.pop(); } @@ -171,4 +176,44 @@ public class ClientEvents { return !(Minecraft.getInstance().world == null || Minecraft.getInstance().player == null); } + @SubscribeEvent + public static void getFogDensity(EntityViewRenderEvent.FogDensity event) { + ActiveRenderInfo info = event.getInfo(); + IFluidState fluidState = info.getFluidState(); + if (fluidState.isEmpty()) + return; + Fluid fluid = fluidState.getFluid(); + + if (fluid.isEquivalentTo(AllFluids.CHOCOLATE.get())) { + event.setDensity(5f); + event.setCanceled(true); + } + + if (fluid.isEquivalentTo(AllFluids.HONEY.get())) { + event.setDensity(1.5f); + event.setCanceled(true); + } + } + + @SubscribeEvent + public static void getFogColor(EntityViewRenderEvent.FogColors event) { + ActiveRenderInfo info = event.getInfo(); + IFluidState fluidState = info.getFluidState(); + if (fluidState.isEmpty()) + return; + Fluid fluid = fluidState.getFluid(); + + if (fluid.isEquivalentTo(AllFluids.CHOCOLATE.get())) { + event.setRed(98 / 256f); + event.setGreen(32 / 256f); + event.setBlue(32 / 256f); + } + + if (fluid.isEquivalentTo(AllFluids.HONEY.get())) { + event.setRed(234 / 256f); + event.setGreen(174 / 256f); + event.setBlue(47 / 256f); + } + } + } diff --git a/src/main/java/com/simibubi/create/events/CommonEvents.java b/src/main/java/com/simibubi/create/events/CommonEvents.java index 3120fb8d1..e3dd7bf80 100644 --- a/src/main/java/com/simibubi/create/events/CommonEvents.java +++ b/src/main/java/com/simibubi/create/events/CommonEvents.java @@ -1,5 +1,6 @@ package com.simibubi.create.events; +import com.simibubi.create.AllFluids; import com.simibubi.create.Create; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandler; import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingPhysics; @@ -9,14 +10,20 @@ import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipe import com.simibubi.create.content.contraptions.wrench.WrenchItem; import com.simibubi.create.content.schematics.ServerSchematicLoader; import com.simibubi.create.foundation.command.AllCommands; -import com.simibubi.create.foundation.utility.Debug; +import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.utility.Iterate; import com.simibubi.create.foundation.utility.ServerSpeedProvider; import com.simibubi.create.foundation.utility.WorldAttached; import com.simibubi.create.foundation.utility.recipe.RecipeFinder; +import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.fluid.IFluidState; import net.minecraft.resources.IReloadableResourceManager; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.IWorld; import net.minecraft.world.World; import net.minecraftforge.event.AttachCapabilitiesEvent; @@ -27,6 +34,7 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.world.BlockEvent.FluidPlaceBlockEvent; import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -54,6 +62,28 @@ public class CommonEvents { CapabilityMinecartController.onChunkUnloaded(event); } + @SubscribeEvent + public static void whenFluidsMeet(FluidPlaceBlockEvent event) { + BlockState blockState = event.getOriginalState(); + IFluidState fluidState = blockState.getFluidState(); + BlockPos pos = event.getPos(); + IWorld world = event.getWorld(); + + if (fluidState.isSource() && FluidHelper.isLava(fluidState.getFluid())) + return; + + for (Direction direction : Iterate.directions) { + IFluidState metFluidState = fluidState.isSource() ? fluidState : world.getFluidState(pos.offset(direction)); + if (!metFluidState.isTagged(FluidTags.WATER)) + continue; + BlockState lavaInteraction = AllFluids.getLavaInteraction(metFluidState); + if (lavaInteraction == null) + continue; + event.setNewState(lavaInteraction); + break; + } + } + @SubscribeEvent public static void onWorldTick(WorldTickEvent event) { if (event.phase == Phase.START) @@ -123,7 +153,7 @@ public class CommonEvents { public static void attachCapabilities(AttachCapabilitiesEvent event) { CapabilityMinecartController.attach(event); } - + @SubscribeEvent public static void startTracking(PlayerEvent.StartTracking event) { CapabilityMinecartController.startTracking(event); diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index 70aced24b..f619a4dc2 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -6,13 +6,13 @@ import java.util.Map; import java.util.Map.Entry; import java.util.function.BiConsumer; import java.util.function.BiFunction; -import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; import com.simibubi.create.content.AllSections; +import com.simibubi.create.content.contraptions.fluids.VirtualFluid; import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; import com.simibubi.create.foundation.block.IBlockVertexColor; import com.simibubi.create.foundation.block.connected.CTModel; @@ -133,6 +133,16 @@ public class CreateRegistrate extends AbstractRegistrate { Create.asResource("fluid/" + name + "_flow"), attributesFactory, factory)); } + public FluidBuilder virtualFluid(String name) { + return entry(name, + c -> new VirtualFluidBuilder<>(self(), self(), name, c, Create.asResource("fluid/" + name + "_still"), + Create.asResource("fluid/" + name + "_flow"), null, VirtualFluid::new)); + } + + public FluidBuilder standardFluid(String name) { + return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow")); + } + /* Util */ public static NonNullConsumer connectedTextures(ConnectedTextureBehaviour behavior) { diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java index e49369f0e..73985fe44 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java @@ -1,23 +1,30 @@ package com.simibubi.create.foundation.data.recipe; +import com.simibubi.create.AllFluids; import com.simibubi.create.AllRecipeTypes; import net.minecraft.data.DataGenerator; +import net.minecraft.item.Items; public class EmptyingRecipeGen extends ProcessingRecipeGen { /* - * potion/bottles are handled internally now. keeping this builder for reference + * potion/water bottles are handled internally */ -// GeneratedRecipe -// -// WATER_BOTTLE = create("water_bottle", b -> b -// .require(NBTIngredient.fromStacks(PotionUtils.addPotionToItemStack(new ItemStack(Items.POTION), Potions.WATER))) -// .output(Fluids.WATER, 250) -// .output(Items.GLASS_BOTTLE)) -// -// ; + GeneratedRecipe + + HONEY_BOTTLE = create("honey_bottle", b -> b + .require(Items.field_226638_pX_) + .output(AllFluids.HONEY.get(), 250) + .output(Items.GLASS_BOTTLE)), + + MILK_BUCKET = create("milk_bucket", b -> b + .require(Items.MILK_BUCKET) + .output(AllFluids.MILK.get(), 1000) + .output(Items.BUCKET)) + + ; public EmptyingRecipeGen(DataGenerator p_i48262_1_) { super(p_i48262_1_); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java index 480d741ec..5aefc579a 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java @@ -1,22 +1,25 @@ package com.simibubi.create.foundation.data.recipe; import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.AllTags; import net.minecraft.data.DataGenerator; +import net.minecraft.item.Items; public class FillingRecipeGen extends ProcessingRecipeGen { - /* - * potion/bottles are handled internally now. keeping this builder for reference - */ - -// GeneratedRecipe -// -// WATER_BOTTLE = create("water_bottle", b -> b.require(Items.GLASS_BOTTLE) -// .require(FluidTags.WATER, 250) -// .output(PotionUtils.addPotionToItemStack(new ItemStack(Items.POTION), Potions.WATER))) -// -// ; + GeneratedRecipe + + HONEY_BOTTLE = create("honey_bottle", b -> b + .require(AllTags.forgeFluidTag("honey"), 250) + .require(Items.GLASS_BOTTLE) + .output(Items.field_226638_pX_)), + + MILK_BUCKET = create("milk_bucket", b -> b + .require(AllTags.forgeFluidTag("milk"), 1000) + .require(Items.BUCKET) + .output(Items.MILK_BUCKET)) + ; public FillingRecipeGen(DataGenerator p_i48262_1_) { super(p_i48262_1_); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java index 39fb993cf..2d3d07cee 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java @@ -1,5 +1,6 @@ package com.simibubi.create.foundation.data.recipe; +import com.simibubi.create.AllFluids; import com.simibubi.create.AllItems; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllTags; @@ -24,6 +25,19 @@ public class MixingRecipeGen extends ProcessingRecipeGen { .output(Fluids.LAVA, 25) .requiresHeat(HeatCondition.SUPERHEATED)), + TEA = create("tea", b -> b.require(Fluids.WATER, 250) + .require(AllTags.forgeFluidTag("milk"), 250) + .require(ItemTags.LEAVES) + .output(AllFluids.TEA.get(), 500) + .requiresHeat(HeatCondition.HEATED)), + + CHOCOLATE = create("chocolate", b -> b + .require(AllTags.forgeFluidTag("milk"), 250) + .require(Items.SUGAR) + .require(Items.COCOA_BEANS) + .output(AllFluids.CHOCOLATE.get(), 250) + .requiresHeat(HeatCondition.HEATED)), + BRASS_INGOT = create("brass_ingot", b -> b.require(I.copper()) .require(I.zinc()) .output(AllItems.BRASS_INGOT.get(), 2) diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java index 12580778a..c87524b45 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java @@ -41,6 +41,7 @@ public abstract class FluidIngredient implements Predicate { FluidStackIngredient ingredient = new FluidStackIngredient(); ingredient.fluid = fluid; ingredient.amountRequired = amount; + ingredient.fixFlowing(); return ingredient; } @@ -48,6 +49,7 @@ public abstract class FluidIngredient implements Predicate { FluidStackIngredient ingredient = new FluidStackIngredient(); ingredient.fluid = fluidStack.getFluid(); ingredient.amountRequired = fluidStack.getAmount(); + ingredient.fixFlowing(); if (fluidStack.hasTag()) ingredient.tagToMatch = fluidStack.getTag(); return ingredient; @@ -140,6 +142,11 @@ public abstract class FluidIngredient implements Predicate { public FluidStackIngredient() { tagToMatch = new CompoundNBT(); } + + void fixFlowing() { + if (fluid instanceof FlowingFluid) + fluid = ((FlowingFluid) fluid).getStillFluid(); + } @Override protected boolean testInternal(FluidStack t) { diff --git a/src/main/resources/assets/create/textures/fluid/chocolate_flow.png b/src/main/resources/assets/create/textures/fluid/chocolate_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..2df0830b0c3aa29c78eff836e40d76130da35508 GIT binary patch literal 16913 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 IdLQ_|0EiQIlK=n! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/fluid/milk_flow.png.mcmeta b/src/main/resources/assets/create/textures/fluid/milk_flow.png.mcmeta new file mode 100644 index 000000000..24f9c2fae --- /dev/null +++ b/src/main/resources/assets/create/textures/fluid/milk_flow.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/create/textures/fluid/milk_still.png b/src/main/resources/assets/create/textures/fluid/milk_still.png new file mode 100644 index 0000000000000000000000000000000000000000..c75de609782c17277e0701d86cd1f9dee4a81853 GIT binary patch literal 4677 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 WO)u%&7Wf0l07W^~_to!AgZ~eix{P@M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/fluid/tea_flow.png.mcmeta b/src/main/resources/assets/create/textures/fluid/tea_flow.png.mcmeta new file mode 100644 index 000000000..24f9c2fae --- /dev/null +++ b/src/main/resources/assets/create/textures/fluid/tea_flow.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/create/textures/fluid/tea_still.png b/src/main/resources/assets/create/textures/fluid/tea_still.png new file mode 100644 index 0000000000000000000000000000000000000000..84b3618d6c806a8c659017846deaa1982d348fdf GIT binary patch literal 4918 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/fluid/tea_still.png.mcmeta b/src/main/resources/assets/create/textures/fluid/tea_still.png.mcmeta new file mode 100644 index 000000000..24f9c2fae --- /dev/null +++ b/src/main/resources/assets/create/textures/fluid/tea_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +} diff --git a/src/main/resources/assets/create/textures/item/chocolate_bucket.png b/src/main/resources/assets/create/textures/item/chocolate_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..db71755e701c9d8e48550f4b2c16d465e3fc1e18 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}r0G|+7AZ==DT2WCkW5$e0&Xya4?T(~-C25=9xN)PXsA$@>X-`{XSFBj^ z|NnoWN~>Ace}NQ#NswPKPy`7uT)8u2AyA65z$3Dlfr0NZ2s0kfUy%Y7%=dJ04ABUV zJs-$-*norif~qlN)U4m~NS%G}50G|+7AZ==DT2WCkW5$ddtsI|M^ZmaZvOJaP#*G_AMMcx5OI#sB~R zfy(3)ms|rFVdQ&MBb@04z>$#Q*>R literal 0 HcmV?d00001 From 2a56bb76be90c162596ca39cf0146847a777a063 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 3 Dec 2020 23:49:12 +0100 Subject: [PATCH 08/12] Casing case closed, Part II - Encasing fluid pipes now locks their configuration - Encased fluid pipes now join textures with adjacent casing blocks - Fixed windowed pipe not allowing to be encased - Fixed wrapped models not passing down model data in multi layered situations --- src/generated/resources/.cache/cache | 3 +- .../blockstates/encased_fluid_pipe.json | 117 ++++++++++++++++-- .../models/block/encased_fluid_pipe.json | 7 -- .../java/com/simibubi/create/AllBlocks.java | 7 +- .../com/simibubi/create/AllTileEntities.java | 4 +- .../fluids/FluidPipeAttachmentBehaviour.java | 4 + .../fluids/PipeAttachmentModel.java | 10 +- .../fluids/pipes/AxisPipeBlock.java | 20 ++- .../fluids/pipes/EncasedPipeBlock.java | 116 +++++++++++++++-- .../fluids/pipes/FluidPipeBlock.java | 9 +- .../fluids/pipes/FluidPipeTileEntity.java | 7 +- .../fluids/tank/FluidTankModel.java | 8 +- .../relays/encased/EncasedShaftBlock.java | 3 +- .../connected/BakedModelWrapperWithData.java | 29 +++++ .../foundation/block/connected/CTModel.java | 14 +-- .../block/render/CustomBlockModels.java | 17 ++- .../create/foundation/data/BlockStateGen.java | 21 ++++ .../block/encased_fluid_pipe/block_flat.json | 16 +++ .../block/encased_fluid_pipe/block_open.json | 16 +++ 19 files changed, 361 insertions(+), 67 deletions(-) delete mode 100644 src/generated/resources/assets/create/models/block/encased_fluid_pipe.json create mode 100644 src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java create mode 100644 src/main/resources/assets/create/models/block/encased_fluid_pipe/block_flat.json create mode 100644 src/main/resources/assets/create/models/block/encased_fluid_pipe/block_open.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 7a8b08638..26114f7a6 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -103,7 +103,7 @@ f63a5816d4bfe643aa098d03c3b54462dd06fe19 assets/create/blockstates/dolomite_cobb f179202e59e449157f89efc37229b03bbfd391d7 assets/create/blockstates/dolomite_pillar.json 7b1c40891b07c8f3238537625d9e25c8627e7333 assets/create/blockstates/encased_belt.json 7b2b836649e729feafa60972bf95e3afb2143131 assets/create/blockstates/encased_fan.json -656813b75dd3b901bf34f24df785e4b0fbe11aa6 assets/create/blockstates/encased_fluid_pipe.json +d13940ed213d7acbc6ebe3bdd21175ef89e4d613 assets/create/blockstates/encased_fluid_pipe.json a774e815376a67e2a2de44e39af0a1a0b4406932 assets/create/blockstates/fancy_andesite_bricks.json 180be26a75834cf9cdb881f969f77906e91cc36a assets/create/blockstates/fancy_andesite_bricks_slab.json d5d7762b80952052d0a7adf3081967cac3f3ba6c assets/create/blockstates/fancy_andesite_bricks_stairs.json @@ -613,7 +613,6 @@ cc6d9300cd26f2323c653dbcc61b7a885be8fa3b assets/create/models/block/dolomite_cob a101974d906487326dc38916f828d12a278a49ae assets/create/models/block/dolomite_cobblestone_wall_post.json 9c497140dfe73abe1964479eaf1af8f1892de290 assets/create/models/block/dolomite_cobblestone_wall_side.json 999a7cd79a9dc80c47fd6103b65f006b55187402 assets/create/models/block/dolomite_pillar.json -1a8bac1e97a2a6c3cc362081568d2a7fce815ad5 assets/create/models/block/encased_fluid_pipe.json 17dae5fdc1a551d8ab1ab8a68cabf7a8c3848d86 assets/create/models/block/fancy_andesite_bricks.json cfb2cd84a1cbd9226a77ebc1f6c29e8eaa9c577f assets/create/models/block/fancy_andesite_bricks_slab.json 8ee27601996ab577991b6a0f7e9df27db0282cad assets/create/models/block/fancy_andesite_bricks_slab_top.json diff --git a/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json b/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json index 129e39baa..dc11492f3 100644 --- a/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json @@ -1,17 +1,110 @@ { - "variants": { - "axis=x": { - "model": "create:block/encased_fluid_pipe", - "x": 90, - "y": 90 + "multipart": [ + { + "when": { + "down": "false" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_flat", + "x": -90 + } }, - "axis=y": { - "model": "create:block/encased_fluid_pipe" + { + "when": { + "up": "false" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_flat", + "x": 90 + } }, - "axis=z": { - "model": "create:block/encased_fluid_pipe", - "x": 90, - "y": 180 + { + "when": { + "north": "false" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_flat", + "y": 180 + } + }, + { + "when": { + "south": "false" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_flat" + } + }, + { + "when": { + "west": "false" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_flat", + "y": 90 + } + }, + { + "when": { + "east": "false" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_flat", + "y": 270 + } + }, + { + "when": { + "down": "true" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_open", + "x": -90 + } + }, + { + "when": { + "up": "true" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_open", + "x": 90 + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_open", + "y": 180 + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_open" + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_open", + "y": 90 + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "create:block/encased_fluid_pipe/block_open", + "y": 270 + } } - } + ] } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/encased_fluid_pipe.json b/src/generated/resources/assets/create/models/block/encased_fluid_pipe.json deleted file mode 100644 index a8aad1994..000000000 --- a/src/generated/resources/assets/create/models/block/encased_fluid_pipe.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "block/cube_column", - "textures": { - "side": "create:block/copper_casing", - "end": "create:block/encased_pipe" - } -} \ 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 7d35cd70b..d53d27bcc 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -519,8 +519,11 @@ public class AllBlocks { public static final BlockEntry ENCASED_FLUID_PIPE = REGISTRATE.block("encased_fluid_pipe", EncasedPipeBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, state -> p.models() - .cubeColumn(c.getName(), p.modLoc("block/copper_casing"), p.modLoc("block/encased_pipe")))) + .properties(Block.Properties::nonOpaque) + .blockstate(BlockStateGen.encasedPipe()) + .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) + .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING, + (s, f) -> !s.get(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f))))) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) .loot((p, b) -> p.registerDropping(b, FLUID_PIPE.get())) .register(); diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 3a92ad6fb..2d6f2513c 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -219,8 +219,8 @@ public class AllTileEntities { .validBlocks(AllBlocks.FLUID_PIPE) .register(); - public static final TileEntityEntry ENCASED_FLUID_PIPE = Create.registrate() - .tileEntity("encased_fluid_pipe", StraightPipeTileEntity::new) + public static final TileEntityEntry ENCASED_FLUID_PIPE = Create.registrate() + .tileEntity("encased_fluid_pipe", FluidPipeTileEntity::new) .validBlocks(AllBlocks.ENCASED_FLUID_PIPE) .register(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeAttachmentBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeAttachmentBehaviour.java index cdd3ef3d9..51d064588 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeAttachmentBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPipeAttachmentBehaviour.java @@ -26,6 +26,10 @@ public class FluidPipeAttachmentBehaviour extends BracketedTileEntityBehaviour { .getAxis() == direction.getAxis()) return AttachmentTypes.NONE; + if (AllBlocks.ENCASED_FLUID_PIPE.has(facingState) + && facingState.get(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(direction.getOpposite()))) + return AttachmentTypes.NONE; + if (FluidPropagator.hasFluidCapability(facingState, world, offsetPos, direction) && !AllBlocks.HOSE_PULLEY.has(facingState)) return AttachmentTypes.DRAIN; diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java index b05ce97ac..1e7834771 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java @@ -8,7 +8,7 @@ import java.util.Random; import com.simibubi.create.AllBlockPartials; import com.simibubi.create.content.contraptions.fluids.FluidPipeAttachmentBehaviour.AttachmentTypes; import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; -import com.simibubi.create.foundation.block.render.WrappedBakedModel; +import com.simibubi.create.foundation.block.connected.BakedModelWrapperWithData; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; import com.simibubi.create.foundation.utility.Iterate; @@ -21,9 +21,10 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.ILightReader; import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelDataMap.Builder; import net.minecraftforge.client.model.data.ModelProperty; -public class PipeAttachmentModel extends WrappedBakedModel { +public class PipeAttachmentModel extends BakedModelWrapperWithData { private static ModelProperty PIPE_PROPERTY = new ModelProperty<>(); @@ -32,7 +33,7 @@ public class PipeAttachmentModel extends WrappedBakedModel { } @Override - public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) { + protected Builder gatherModelData(Builder builder, ILightReader world, BlockPos pos, BlockState state) { PipeModelData data = new PipeModelData(); FluidPipeAttachmentBehaviour attachmentBehaviour = TileEntityBehaviour.get(world, pos, FluidPipeAttachmentBehaviour.TYPE); @@ -44,8 +45,7 @@ public class PipeAttachmentModel extends WrappedBakedModel { } data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state)); - return new ModelDataMap.Builder().withInitial(PIPE_PROPERTY, data) - .build(); + return builder.withInitial(PIPE_PROPERTY, data); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java index 751ff1de4..a3570ee9a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.contraptions.fluids.FluidPipeAttachmentBehavi import com.simibubi.create.content.contraptions.fluids.FluidPropagator; import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; +import com.simibubi.create.foundation.utility.Iterate; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -19,10 +20,13 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.network.DebugPacketSender; import net.minecraft.state.BooleanProperty; +import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; +import net.minecraft.util.Hand; import net.minecraft.util.Direction.Axis; import net.minecraft.util.Direction.AxisDirection; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; @@ -43,12 +47,26 @@ public class AxisPipeBlock extends RotatedPillarBlock implements IWrenchableWith boolean blockTypeChanged = state.getBlock() != newState.getBlock(); if (blockTypeChanged && !world.isRemote) FluidPropagator.propagateChangedPipe(world, pos, state); - if (state != newState && !isMoving) + if (state != newState && !isMoving) removeBracket(world, pos).ifPresent(stack -> Block.spawnAsEntity(world, pos, stack)); if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) world.removeTileEntity(pos); } + @Override + public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, + BlockRayTraceResult hit) { + if (!AllBlocks.COPPER_CASING.isIn(player.getHeldItem(hand))) + return ActionResultType.PASS; + if (!world.isRemote) { + BlockState newState = AllBlocks.ENCASED_FLUID_PIPE.getDefaultState(); + for (Direction d : Iterate.directionsInAxis(getAxis(state))) + newState = newState.with(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true); + world.setBlockState(pos, newState); + } + return ActionResultType.SUCCESS; + } + @Override public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { if (world.isRemote) diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java index 6d236427c..f74484b10 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java @@ -1,22 +1,58 @@ package com.simibubi.create.content.contraptions.fluids.pipes; -import com.simibubi.create.AllTileEntities; +import static net.minecraft.state.properties.BlockStateProperties.DOWN; +import static net.minecraft.state.properties.BlockStateProperties.EAST; +import static net.minecraft.state.properties.BlockStateProperties.NORTH; +import static net.minecraft.state.properties.BlockStateProperties.SOUTH; +import static net.minecraft.state.properties.BlockStateProperties.UP; +import static net.minecraft.state.properties.BlockStateProperties.WEST; +import java.util.Map; +import java.util.Random; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.fluids.FluidPropagator; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; +import com.simibubi.create.foundation.utility.Iterate; + +import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.SixWayBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; +import net.minecraft.network.DebugPacketSender; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; +import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.IBlockReader; +import net.minecraft.world.TickPriority; import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; -public class EncasedPipeBlock extends AxisPipeBlock { +public class EncasedPipeBlock extends Block implements IWrenchable { + + public static final Map FACING_TO_PROPERTY_MAP = SixWayBlock.FACING_TO_PROPERTY_MAP; public EncasedPipeBlock(Properties p_i48339_1_) { super(p_i48339_1_); + setDefaultState(getDefaultState().with(NORTH, false) + .with(SOUTH, false) + .with(DOWN, false) + .with(UP, false) + .with(WEST, false) + .with(EAST, false)); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN); + super.fillStateContainer(builder); } @Override @@ -25,22 +61,80 @@ public class EncasedPipeBlock extends AxisPipeBlock { } @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ENCASED_FLUID_PIPE.create(); + public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { + boolean blockTypeChanged = state.getBlock() != newState.getBlock(); + if (blockTypeChanged && !world.isRemote) + FluidPropagator.propagateChangedPipe(world, pos, state); + if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) + world.removeTileEntity(pos); } @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return VoxelShapes.fullCube(); + public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { + if (!world.isRemote && state != oldState) + world.getPendingBlockTicks() + .scheduleTick(pos, this, 1, TickPriority.HIGH); + } + + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return AllBlocks.FLUID_PIPE.asStack(); + } + + @Override + public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, + boolean isMoving) { + DebugPacketSender.func_218806_a(world, pos); + Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); + if (d == null) + return; + if (!state.get(FACING_TO_PROPERTY_MAP.get(d))) + return; + world.getPendingBlockTicks() + .scheduleTick(pos, this, 1, TickPriority.HIGH); + } + + @Override + public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random r) { + FluidPropagator.propagateChangedPipe(world, pos, state); + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.ENCASED_FLUID_PIPE.create(); } @Override public ActionResultType onWrenched(BlockState state, ItemUseContext context) { World world = context.getWorld(); BlockPos pos = context.getPos(); - world.setBlockState(pos, toRegularPipe(world, pos, state), 3); + + if (world.isRemote) + return ActionResultType.SUCCESS; + + context.getWorld() + .playEvent(2001, context.getPos(), Block.getStateId(state)); + BlockState equivalentPipe = transferSixWayProperties(state, AllBlocks.FLUID_PIPE.getDefaultState()); + + Direction firstFound = Direction.UP; + for (Direction d : Iterate.directions) + if (state.get(FACING_TO_PROPERTY_MAP.get(d))) { + firstFound = d; + break; + } + + world.setBlockState(pos, AllBlocks.FLUID_PIPE.get() + .updateBlockState(equivalentPipe, firstFound, null, world, pos)); return ActionResultType.SUCCESS; } + public static BlockState transferSixWayProperties(BlockState from, BlockState to) { + for (Direction d : Iterate.directions) { + BooleanProperty property = FACING_TO_PROPERTY_MAP.get(d); + to = to.with(property, from.get(property)); + } + return to; + } + } diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java index 56217071f..67a895eb2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java @@ -73,12 +73,9 @@ public class FluidPipeBlock extends SixWayBlock implements IWaterLoggable, IWren BlockRayTraceResult hit) { if (!AllBlocks.COPPER_CASING.isIn(player.getHeldItem(hand))) return ActionResultType.PASS; - Axis axis = getAxis(world, pos, state); - if (axis == null) - return ActionResultType.PASS; if (!world.isRemote) - world.setBlockState(pos, AllBlocks.ENCASED_FLUID_PIPE.getDefaultState() - .with(EncasedPipeBlock.AXIS, axis)); + world.setBlockState(pos, + EncasedPipeBlock.transferSixWayProperties(state, AllBlocks.ENCASED_FLUID_PIPE.getDefaultState())); return ActionResultType.SUCCESS; } @@ -149,7 +146,7 @@ public class FluidPipeBlock extends SixWayBlock implements IWaterLoggable, IWren || FluidPropagator.getStraightPipeAxis(neighbour) == blockFace.getAxis(); if (attachmentBehaviour == null) return false; - return attachmentBehaviour.isPipeConnectedTowards(neighbour, blockFace); + return attachmentBehaviour.isPipeConnectedTowards(neighbour, blockFace.getOpposite()); } public static boolean shouldDrawRim(ILightReader world, BlockPos pos, BlockState state, Direction direction) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java index 5b0ca5222..a90f4c92d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.fluids.pipes; import java.util.List; +import com.simibubi.create.AllBlocks; import com.simibubi.create.content.contraptions.fluids.FluidPipeAttachmentBehaviour; import com.simibubi.create.content.contraptions.fluids.FluidPipeBehaviour; import com.simibubi.create.foundation.tileEntity.SmartTileEntity; @@ -33,7 +34,8 @@ public class FluidPipeTileEntity extends SmartTileEntity { @Override public boolean isConnectedTo(BlockState state, Direction direction) { - return FluidPipeBlock.isPipe(state) && state.get(FluidPipeBlock.FACING_TO_PROPERTY_MAP.get(direction)); + return (FluidPipeBlock.isPipe(state) || state.getBlock() instanceof EncasedPipeBlock) + && state.get(FluidPipeBlock.FACING_TO_PROPERTY_MAP.get(direction)); } } @@ -48,6 +50,9 @@ public class FluidPipeTileEntity extends SmartTileEntity { public AttachmentTypes getAttachment(ILightReader world, BlockPos pos, BlockState state, Direction direction) { AttachmentTypes attachment = super.getAttachment(world, pos, state, direction); + if (attachment == AttachmentTypes.RIM && AllBlocks.ENCASED_FLUID_PIPE.has(state)) + return AttachmentTypes.RIM; + BlockPos offsetPos = pos.offset(direction); if (!FluidPipeBlock.isPipe(world.getBlockState(offsetPos))) { FluidPipeAttachmentBehaviour attachmentBehaviour = diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java index 0411e7edf..802f39e49 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java @@ -18,6 +18,7 @@ import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ILightReader; import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap.Builder; import net.minecraftforge.client.model.data.ModelProperty; public class FluidTankModel extends CTModel { @@ -35,14 +36,13 @@ public class FluidTankModel extends CTModel { private FluidTankModel(IBakedModel originalModel, CTSpriteShiftEntry side, CTSpriteShiftEntry top) { super(originalModel, new FluidTankCTBehaviour(side, top)); } - + @Override - public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) { + protected Builder gatherModelData(Builder builder, ILightReader world, BlockPos pos, BlockState state) { CullData cullData = new CullData(); for (Direction d : Iterate.horizontalDirections) cullData.setCulled(d, FluidTankConnectivityHandler.isConnected(world, pos, pos.offset(d))); - return getCTDataMapBuilder(world, pos, state).withInitial(CULL_PROPERTY, cullData) - .build(); + return super.gatherModelData(builder, world, pos, state).withInitial(CULL_PROPERTY, cullData); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java index 57b284045..1592b93cf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java @@ -6,6 +6,7 @@ import com.simibubi.create.content.contraptions.base.CasingBlock; import com.simibubi.create.content.contraptions.base.KineticTileEntity; import com.tterrag.registrate.util.entry.BlockEntry; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.ItemUseContext; import net.minecraft.tileentity.TileEntity; @@ -42,7 +43,7 @@ public class EncasedShaftBlock extends AbstractEncasedShaftBlock { public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { if (context.getWorld().isRemote) return ActionResultType.SUCCESS; - + context.getWorld().playEvent(2001, context.getPos(), Block.getStateId(state)); KineticTileEntity.switchToBlockState(context.getWorld(), context.getPos(), AllBlocks.SHAFT.getDefaultState().with(AXIS, state.get(AXIS))); return ActionResultType.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java b/src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java new file mode 100644 index 000000000..d012d0588 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/connected/BakedModelWrapperWithData.java @@ -0,0 +1,29 @@ +package com.simibubi.create.foundation.block.connected; + +import net.minecraft.block.BlockState; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ILightReader; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelDataMap.Builder; + +public abstract class BakedModelWrapperWithData extends BakedModelWrapper { + + public BakedModelWrapperWithData(IBakedModel originalModel) { + super(originalModel); + } + + @Override + public final IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) { + Builder builder = new ModelDataMap.Builder(); + if (originalModel instanceof BakedModelWrapperWithData) + ((BakedModelWrapperWithData) originalModel).gatherModelData(builder, world, pos, state); + return gatherModelData(builder, world, pos, state).build(); + } + + protected abstract ModelDataMap.Builder gatherModelData(ModelDataMap.Builder builder, ILightReader world, + BlockPos pos, BlockState state); + +} diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java index 6a76326b2..60c26a070 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java @@ -16,13 +16,11 @@ import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.ILightReader; -import net.minecraftforge.client.model.BakedModelWrapper; import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; import net.minecraftforge.client.model.data.ModelDataMap.Builder; import net.minecraftforge.client.model.data.ModelProperty; -public class CTModel extends BakedModelWrapper { +public class CTModel extends BakedModelWrapperWithData { protected static ModelProperty CT_PROPERTY = new ModelProperty<>(); private ConnectedTextureBehaviour behaviour; @@ -43,19 +41,15 @@ public class CTModel extends BakedModelWrapper { return indices[face.getIndex()]; } } - + public CTModel(IBakedModel originalModel, ConnectedTextureBehaviour behaviour) { super(originalModel); this.behaviour = behaviour; } @Override - public IModelData getModelData(ILightReader world, BlockPos pos, BlockState state, IModelData tileData) { - return getCTDataMapBuilder(world, pos, state).build(); - } - - protected Builder getCTDataMapBuilder(ILightReader world, BlockPos pos, BlockState state) { - return new ModelDataMap.Builder().withInitial(CT_PROPERTY, createCTData(world, pos, state)); + protected Builder gatherModelData(Builder builder, ILightReader world, BlockPos pos, BlockState state) { + return builder.withInitial(CT_PROPERTY, createCTData(world, pos, state)); } protected CTData createCTData(ILightReader world, BlockPos pos, BlockState state) { diff --git a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java index 0f3efbd4a..3653f4615 100644 --- a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java @@ -28,7 +28,7 @@ public class CustomBlockModels { NonNullFunction behaviour) { registered.add(Pair.of(entry, behaviour)); } - + public void foreach(NonNullBiConsumer> consumer) { loadEntriesIfMissing(); customModels.forEach(consumer); @@ -41,8 +41,19 @@ public class CustomBlockModels { private void loadEntries() { customModels.clear(); - registered.forEach(p -> customModels.put(p.getKey() - .get(), p.getValue())); + registered.forEach(p -> { + Block key = p.getKey() + .get(); + + NonNullFunction existingModel = customModels.get(key); + if (existingModel != null) { + customModels.put(key, p.getValue() + .andThen(existingModel)); + return; + } + + customModels.put(key, p.getValue()); + }); } } 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 76874dc7c..ca4c81c04 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -19,6 +19,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.cha 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.ReinforcedRailBlock; +import com.simibubi.create.content.contraptions.fluids.pipes.EncasedPipeBlock; import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.palettes.PavedBlock; @@ -340,6 +341,26 @@ public class BlockStateGen { }; } + public static

NonNullBiConsumer, RegistrateBlockstateProvider> encasedPipe() { + return (c, p) -> { + ModelFile open = AssetLookup.partialBaseModel(c, p, "open"); + ModelFile flat = AssetLookup.partialBaseModel(c, p, "flat"); + MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get()); + for (boolean flatPass : Iterate.trueAndFalse) + for (Direction d : Iterate.directions) { + int verticalAngle = d == Direction.UP ? 90 : d == Direction.DOWN ? -90 : 0; + builder.part() + .modelFile(flatPass ? flat : open) + .rotationX(verticalAngle) + .rotationY((int) (d.getHorizontalAngle() + (d.getAxis() + .isVertical() ? 90 : 0)) % 360) + .addModel() + .condition(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), !flatPass) + .end(); + } + }; + } + public static

NonNullBiConsumer, RegistrateBlockstateProvider> pipe() { return (c, p) -> { String path = "block/" + c.getName(); diff --git a/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_flat.json b/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_flat.json new file mode 100644 index 000000000..d084586f1 --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_flat.json @@ -0,0 +1,16 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/copper_casing", + "particle": "create:block/copper_casing" + }, + "elements": [ + { + "from": [0, 0, 15], + "to": [16, 16, 16], + "faces": { + "south": {"uv": [0, 0, 16, 16], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_open.json b/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_open.json new file mode 100644 index 000000000..0d555e7e4 --- /dev/null +++ b/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_open.json @@ -0,0 +1,16 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/encased_pipe", + "particle": "create:block/encased_pipe" + }, + "elements": [ + { + "from": [0, 0, 15], + "to": [16, 16, 16], + "faces": { + "south": {"uv": [0, 0, 16, 16], "texture": "#0"} + } + } + ] +} \ No newline at end of file From 8ec74ee96ddca638d35de0071d8099f5d7801cb9 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 4 Dec 2020 00:21:30 +0100 Subject: [PATCH 09/12] Minor contraption annoyances - Fixed belts sometimes popping off when disassembling a contraption - Made Portable Storage Interfaces a little more lenient to engage at funny angles --- .../components/actors/PortableStorageInterfaceMovement.java | 2 +- .../components/structureMovement/StructureTransform.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java index bfb1fbca9..30f62fada 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java @@ -142,7 +142,7 @@ public class PortableStorageInterfaceMovement extends MovementBehaviour { .getDirectionVec()); directionVec = context.rotation.apply(directionVec); Direction facingFromVector = Direction.getFacingFromVector(directionVec.x, directionVec.y, directionVec.z); - if (directionVec.distanceTo(new Vec3d(facingFromVector.getDirectionVec())) > 1 / 8f) + if (directionVec.distanceTo(new Vec3d(facingFromVector.getDirectionVec())) > 1 / 2f) return Optional.empty(); return Optional.of(facingFromVector); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java index 0e7470654..85adf5e0d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java @@ -250,6 +250,8 @@ public class StructureTransform { newDirection = direction; if (direction.getAxis() == rotationAxis) newSlope = BeltSlope.SIDEWAYS; + else if (direction.getAxis() != Axis.Z) + newDirection = direction.getOpposite(); } state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); @@ -332,8 +334,7 @@ public class StructureTransform { int readAngle = buffer.readInt(); int axisIndex = buffer.readVarInt(); int rotationIndex = buffer.readVarInt(); - return new StructureTransform(readBlockPos, readAngle, - axisIndex == -1 ? null : Axis.values()[axisIndex], + return new StructureTransform(readBlockPos, readAngle, axisIndex == -1 ? null : Axis.values()[axisIndex], rotationIndex == -1 ? null : Rotation.values()[rotationIndex]); } From f85c47e9b114d0697788b45bc1acc6fe2d0fe3f2 Mon Sep 17 00:00:00 2001 From: grimmauld Date: Fri, 4 Dec 2020 16:59:05 +0100 Subject: [PATCH 10/12] Cart Contraptions now keep their item name --- .../structureMovement/mounted/MinecartContraptionItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java index 94ae89035..ca0487ad0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java @@ -209,7 +209,7 @@ public class MinecartContraptionItem extends Item { OrientedContraptionEntity contraption = (OrientedContraptionEntity) passengers.get(0); if (!event.getWorld().isRemote) { - player.inventory.placeItemBackInInventory(event.getWorld(), create(type, contraption)); + player.inventory.placeItemBackInInventory(event.getWorld(), create(type, contraption).setDisplayName(entity.getCustomName())); contraption.remove(); entity.remove(); } From 9e4b92babf533050fa60338c20e94cf730a9c722 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 4 Dec 2020 18:10:07 +0100 Subject: [PATCH 11/12] Other options are available - Added a handful of crushed ore compatibility (+spicy datagen) - Lapis sheets are now tagged --- src/generated/resources/.cache/cache | 160 +++++++++++++++--- .../resources/assets/create/lang/en_ud.json | 9 + .../resources/assets/create/lang/en_us.json | 9 + .../assets/create/lang/unfinished/de_de.json | 11 +- .../assets/create/lang/unfinished/fr_fr.json | 11 +- .../assets/create/lang/unfinished/it_it.json | 11 +- .../assets/create/lang/unfinished/ja_jp.json | 11 +- .../assets/create/lang/unfinished/ko_kr.json | 11 +- .../assets/create/lang/unfinished/nl_nl.json | 11 +- .../assets/create/lang/unfinished/pt_br.json | 11 +- .../assets/create/lang/unfinished/ru_ru.json | 11 +- .../assets/create/lang/unfinished/zh_cn.json | 11 +- .../models/item/crushed_aluminum_ore.json | 6 + .../create/models/item/crushed_lead_ore.json | 6 + .../models/item/crushed_nickel_ore.json | 6 + .../models/item/crushed_osmium_ore.json | 6 + .../models/item/crushed_platinum_ore.json | 6 + .../models/item/crushed_quicksilver_ore.json | 6 + .../models/item/crushed_silver_ore.json | 6 + .../create/models/item/crushed_tin_ore.json | 6 + .../models/item/crushed_uranium_ore.json | 6 + ...minum_ingot_compat_silents_mechanisms.json | 32 ++++ ..._aluminum_compat_immersiveengineering.json | 32 ++++ ...ngot_lead_compat_immersiveengineering.json | 32 ++++ ...ot_nickel_compat_immersiveengineering.json | 32 ++++ ...ot_silver_compat_immersiveengineering.json | 32 ++++ ...t_uranium_compat_immersiveengineering.json | 32 ++++ .../lead_ingot_compat_mysticalworld.json | 32 ++++ .../lead_ingot_compat_silents_mechanisms.json | 32 ++++ ...ickel_ingot_compat_silents_mechanisms.json | 32 ++++ .../osmium_ingot_compat_mekanism.json | 32 ++++ ...tinum_ingot_compat_silents_mechanisms.json | 32 ++++ ...uicksilver_ingot_compat_mysticalworld.json | 32 ++++ .../silver_ingot_compat_mysticalworld.json | 32 ++++ ...ilver_ingot_compat_silents_mechanisms.json | 32 ++++ .../blasting/tin_ingot_compat_mekanism.json | 32 ++++ .../tin_ingot_compat_mysticalworld.json | 32 ++++ .../tin_ingot_compat_silents_mechanisms.json | 32 ++++ ...anium_ingot_compat_silents_mechanisms.json | 32 ++++ ...minum_ingot_compat_silents_mechanisms.json | 32 ++++ ..._aluminum_compat_immersiveengineering.json | 32 ++++ ...ngot_lead_compat_immersiveengineering.json | 32 ++++ ...ot_nickel_compat_immersiveengineering.json | 32 ++++ ...ot_silver_compat_immersiveengineering.json | 32 ++++ ...t_uranium_compat_immersiveengineering.json | 32 ++++ .../lead_ingot_compat_mysticalworld.json | 32 ++++ .../lead_ingot_compat_silents_mechanisms.json | 32 ++++ ...ickel_ingot_compat_silents_mechanisms.json | 32 ++++ .../osmium_ingot_compat_mekanism.json | 32 ++++ ...tinum_ingot_compat_silents_mechanisms.json | 32 ++++ ...uicksilver_ingot_compat_mysticalworld.json | 32 ++++ .../silver_ingot_compat_mysticalworld.json | 32 ++++ ...ilver_ingot_compat_silents_mechanisms.json | 32 ++++ .../smelting/tin_ingot_compat_mekanism.json | 32 ++++ .../tin_ingot_compat_mysticalworld.json | 32 ++++ .../tin_ingot_compat_silents_mechanisms.json | 32 ++++ ...anium_ingot_compat_silents_mechanisms.json | 32 ++++ ...minum_ingot_compat_silents_mechanisms.json | 15 ++ ..._aluminum_compat_immersiveengineering.json | 15 ++ ...ngot_lead_compat_immersiveengineering.json | 15 ++ ...ot_nickel_compat_immersiveengineering.json | 15 ++ ...ot_silver_compat_immersiveengineering.json | 15 ++ ...t_uranium_compat_immersiveengineering.json | 15 ++ .../lead_ingot_compat_mysticalworld.json | 15 ++ .../lead_ingot_compat_silents_mechanisms.json | 15 ++ ...ickel_ingot_compat_silents_mechanisms.json | 15 ++ .../osmium_ingot_compat_mekanism.json | 15 ++ ...tinum_ingot_compat_silents_mechanisms.json | 15 ++ ...uicksilver_ingot_compat_mysticalworld.json | 15 ++ .../silver_ingot_compat_mysticalworld.json | 15 ++ ...ilver_ingot_compat_silents_mechanisms.json | 15 ++ .../blasting/tin_ingot_compat_mekanism.json | 15 ++ .../tin_ingot_compat_mysticalworld.json | 15 ++ .../tin_ingot_compat_silents_mechanisms.json | 15 ++ ...anium_ingot_compat_silents_mechanisms.json | 15 ++ .../create/recipes/crushing/aluminum_ore.json | 32 ++++ .../create/recipes/crushing/copper_ore.json | 11 +- .../create/recipes/crushing/gold_ore.json | 11 +- .../create/recipes/crushing/iron_ore.json | 11 +- .../create/recipes/crushing/lead_ore.json | 32 ++++ .../create/recipes/crushing/nickel_ore.json | 32 ++++ .../create/recipes/crushing/osmium_ore.json | 32 ++++ .../create/recipes/crushing/platinum_ore.json | 32 ++++ .../recipes/crushing/quicksilver_ore.json | 32 ++++ .../create/recipes/crushing/silver_ore.json | 32 ++++ .../data/create/recipes/crushing/tin_ore.json | 32 ++++ .../create/recipes/crushing/uranium_ore.json | 32 ++++ .../create/recipes/crushing/zinc_ore.json | 11 +- .../create/recipes/milling/aluminum_ore.json | 23 +++ .../create/recipes/milling/copper_ore.json | 11 +- .../data/create/recipes/milling/gold_ore.json | 11 +- .../data/create/recipes/milling/iron_ore.json | 11 +- .../data/create/recipes/milling/lead_ore.json | 23 +++ .../create/recipes/milling/nickel_ore.json | 23 +++ .../create/recipes/milling/osmium_ore.json | 23 +++ .../create/recipes/milling/platinum_ore.json | 23 +++ .../recipes/milling/quicksilver_ore.json | 23 +++ .../create/recipes/milling/silver_ore.json | 23 +++ .../data/create/recipes/milling/tin_ore.json | 23 +++ .../create/recipes/milling/uranium_ore.json | 23 +++ .../data/create/recipes/milling/zinc_ore.json | 11 +- ...minum_ingot_compat_silents_mechanisms.json | 15 ++ ..._aluminum_compat_immersiveengineering.json | 15 ++ ...ngot_lead_compat_immersiveengineering.json | 15 ++ ...ot_nickel_compat_immersiveengineering.json | 15 ++ ...ot_silver_compat_immersiveengineering.json | 15 ++ ...t_uranium_compat_immersiveengineering.json | 15 ++ .../lead_ingot_compat_mysticalworld.json | 15 ++ .../lead_ingot_compat_silents_mechanisms.json | 15 ++ ...ickel_ingot_compat_silents_mechanisms.json | 15 ++ .../osmium_ingot_compat_mekanism.json | 15 ++ ...tinum_ingot_compat_silents_mechanisms.json | 15 ++ ...uicksilver_ingot_compat_mysticalworld.json | 15 ++ .../silver_ingot_compat_mysticalworld.json | 15 ++ ...ilver_ingot_compat_silents_mechanisms.json | 15 ++ .../smelting/tin_ingot_compat_mekanism.json | 15 ++ .../tin_ingot_compat_mysticalworld.json | 15 ++ .../tin_ingot_compat_silents_mechanisms.json | 15 ++ ...anium_ingot_compat_silents_mechanisms.json | 15 ++ .../crushed_aluminum_ore.json | 25 +++ .../crushed_lead_ore.json | 25 +++ .../crushed_nickel_ore.json | 25 +++ .../crushed_silver_ore.json | 25 +++ .../crushed_uranium_ore.json | 25 +++ .../mekanism/crushed_osmium_ore.json | 25 +++ .../splashing/mekanism/crushed_tin_ore.json | 25 +++ .../mysticalworld/crushed_lead_ore.json | 25 +++ .../crushed_quicksilver_ore.json | 25 +++ .../mysticalworld/crushed_silver_ore.json | 25 +++ .../mysticalworld/crushed_tin_ore.json | 25 +++ .../crushed_aluminum_ore.json | 25 +++ .../silents_mechanisms/crushed_lead_ore.json | 25 +++ .../crushed_nickel_ore.json | 25 +++ .../crushed_platinum_ore.json | 25 +++ .../crushed_silver_ore.json | 25 +++ .../silents_mechanisms/crushed_tin_ore.json | 25 +++ .../crushed_uranium_ore.json | 25 +++ .../data/create/tags/items/crushed_ores.json | 11 +- .../data/forge/tags/items/plates.json | 3 +- .../forge/tags/items/plates/lapis_lazuli.json | 6 + .../java/com/simibubi/create/AllItems.java | 27 ++- .../processing/ProcessingOutput.java | 24 ++- .../processing/ProcessingRecipeBuilder.java | 10 +- .../data/recipe/CreateRecipeProvider.java | 2 + .../data/recipe/CrushingRecipeGen.java | 17 +- .../data/recipe/MillingRecipeGen.java | 19 ++- .../data/recipe/StandardRecipeGen.java | 141 +++++++++++++-- .../data/recipe/WashingRecipeGen.java | 24 +++ .../item/TagDependentIngredientItem.java | 33 ++++ .../textures/item/crushed_aluminum_ore.png | Bin 0 -> 276 bytes .../create/textures/item/crushed_lead_ore.png | Bin 0 -> 272 bytes .../textures/item/crushed_nickel_ore.png | Bin 0 -> 272 bytes .../textures/item/crushed_osmium_ore.png | Bin 0 -> 267 bytes .../textures/item/crushed_platinum_ore.png | Bin 0 -> 276 bytes .../textures/item/crushed_quicksilver_ore.png | Bin 0 -> 271 bytes .../textures/item/crushed_silver_ore.png | Bin 0 -> 278 bytes .../create/textures/item/crushed_tin_ore.png | Bin 0 -> 272 bytes .../textures/item/crushed_uranium_ore.png | Bin 0 -> 278 bytes .../compat/druidcraft/crushing/amber_ore.json | 31 ++++ .../druidcraft/crushing/fiery_glass_ore.json | 31 ++++ .../druidcraft/crushing/moonstone_ore.json | 31 ++++ 161 files changed, 3395 insertions(+), 71 deletions(-) create mode 100644 src/generated/resources/assets/create/models/item/crushed_aluminum_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_lead_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_nickel_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_osmium_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_platinum_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_quicksilver_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_silver_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_tin_ore.json create mode 100644 src/generated/resources/assets/create/models/item/crushed_uranium_ore.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/osmium_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/osmium_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/blasting/osmium_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/crushing/aluminum_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/lead_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/nickel_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/osmium_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/platinum_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/quicksilver_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/silver_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/tin_ore.json create mode 100644 src/generated/resources/data/create/recipes/crushing/uranium_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/aluminum_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/lead_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/nickel_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/osmium_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/platinum_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/quicksilver_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/silver_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/tin_ore.json create mode 100644 src/generated/resources/data/create/recipes/milling/uranium_ore.json create mode 100644 src/generated/resources/data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json create mode 100644 src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/smelting/osmium_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mekanism.json create mode 100644 src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json create mode 100644 src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json create mode 100644 src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/mekanism/crushed_osmium_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/mekanism/crushed_tin_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json create mode 100644 src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json create mode 100644 src/generated/resources/data/forge/tags/items/plates/lapis_lazuli.json create mode 100644 src/main/java/com/simibubi/create/foundation/item/TagDependentIngredientItem.java create mode 100644 src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_lead_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_nickel_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_osmium_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_platinum_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_silver_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_tin_ore.png create mode 100644 src/main/resources/assets/create/textures/item/crushed_uranium_ore.png create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json create mode 100644 src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 26114f7a6..56c325a36 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -397,17 +397,17 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -f3dbaf7f4421e8af956ecf17ce7cedef28cbbfe8 assets/create/lang/en_ud.json -9697cd407f7a049b129fe5e76c6a17969bcf9e68 assets/create/lang/en_us.json -062b0e2a0aac1eea9a3de85e66377091ae21f76d assets/create/lang/unfinished/de_de.json -8a117682ad45996564fc6cf6c22c92d7f17ad29a assets/create/lang/unfinished/fr_fr.json -1c3a68ebd422f6d40d178162f4ab7b627a48f49b assets/create/lang/unfinished/it_it.json -349213d72b60ed084ffd8dd18eadcf97f97a1fe5 assets/create/lang/unfinished/ja_jp.json -d29a71eb5c3955d487a1c3ff5bd7b065dc89e7f7 assets/create/lang/unfinished/ko_kr.json -0245f101e497d0895a7a070a3b4c07a3f62ad465 assets/create/lang/unfinished/nl_nl.json -12ec39553e80e1d740093b50860cbd2b506b08ba assets/create/lang/unfinished/pt_br.json -1ad44c155b71cdcd3c1a8763758e8b9f53941ee2 assets/create/lang/unfinished/ru_ru.json -f750f0cee38a3020c92ca6dae48b28f84b22f007 assets/create/lang/unfinished/zh_cn.json +e96a0de54cb3d36052a7bd095808ed46ca0f64fa assets/create/lang/en_ud.json +0764ce807bdddebe92ef99e3fd13e052748b3b41 assets/create/lang/en_us.json +1975c0fceab9ee3d753ec569ac6ecc2c3f5e1f39 assets/create/lang/unfinished/de_de.json +d049baed825c956aa1d00b6deacb9bfe5e116f0d assets/create/lang/unfinished/fr_fr.json +10bf11768a3d403a5fea0f0a850f598d3a3936d8 assets/create/lang/unfinished/it_it.json +8a266673ef48e237c0c4a9790f572d9ed80e1271 assets/create/lang/unfinished/ja_jp.json +6ba9b6af47ff4ec15f15ca4200e2ef095588d5e6 assets/create/lang/unfinished/ko_kr.json +f6025a4e558df63caffacc5db8c33bc129f9bc23 assets/create/lang/unfinished/nl_nl.json +674244ccc19c4d3ad64d3739c64b2722655dbd1c assets/create/lang/unfinished/pt_br.json +8263e5797f22425212d9943c93113f365f9bc9e8 assets/create/lang/unfinished/ru_ru.json +708abafd9e4a2a92fd51d5a57192b30c3e46c0e3 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 @@ -1179,10 +1179,19 @@ f56bf22324faf8958eaef4d94b958f1108d52e5a assets/create/models/item/copper_tiles. 7b333dea353afaa27b182aedc647c9e9e34e92ef assets/create/models/item/creative_crate.json f7d06c52c3ca8c22ad67f5741471f06ac22e7fcb assets/create/models/item/creative_fluid_tank.json 5b39403f6c81f05e566b621b62e267267de47c41 assets/create/models/item/creative_motor.json +ef179ce217a5ab581f905a28d463146fd5382b01 assets/create/models/item/crushed_aluminum_ore.json 19c8492ced64a872a040005dd212a9a14e20477c assets/create/models/item/crushed_brass.json 8167f2a6d05d65a4ebd809b9c114027862afb38e assets/create/models/item/crushed_copper_ore.json 371f1c74cf327c3c48a4ba1cffd5f6003ba5ab77 assets/create/models/item/crushed_gold_ore.json 604931d2906bc545a468987a4f151d64f20e79de assets/create/models/item/crushed_iron_ore.json +d66f0c0b34c51752e9697150d8a81c4ca2eb65cd assets/create/models/item/crushed_lead_ore.json +684c42e00735dfdd087636ee3a8349046b962c00 assets/create/models/item/crushed_nickel_ore.json +86c27fa0ab9144fab3f6dc0d40d0b86605cee8ef assets/create/models/item/crushed_osmium_ore.json +e36fc7006a51f0776f2ec2ad794d430b8663d629 assets/create/models/item/crushed_platinum_ore.json +81c49c61f14ecc48515a96504bb0f00d9ad76eff assets/create/models/item/crushed_quicksilver_ore.json +7a411059878535be90bd81a75e3464eddb79b087 assets/create/models/item/crushed_silver_ore.json +1457068ec6d5a0fecdf3527ee4bab39ddfb754c6 assets/create/models/item/crushed_tin_ore.json +dc450a83e510a32921d73a067859dd9c6a490832 assets/create/models/item/crushed_uranium_ore.json 8b9c0aa8aaf979ec85eac59b27799cc1c0cf427a assets/create/models/item/crushed_zinc_ore.json 823c91f63565db54ec3944a1e90e7aee18e41062 assets/create/models/item/crushing_wheel.json dae5cffa4e1263d6a113469f79fba8695fa8232a assets/create/models/item/cuckoo_clock.json @@ -1564,10 +1573,46 @@ e4e3c1bd7ecf501b40cffc26d8ad145ab4e89118 data/create/advancements/deployer.json a135eec618e448f440d9f42cc7a3e6c63fc45a71 data/create/advancements/overstressed.json 72025d8bf73ab8096c29f12d0c8d9a346f09cd64 data/create/advancements/polished_rose_quartz.json 1e3cd82e36fd4bcd053d652a0eead4458ed7f315 data/create/advancements/press.json +5012e9d559439d0d62d0b34c2e39de048e8c7699 data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json +2e253226c408dffb9dfb828b846f70ebd1cfb16e data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json +3f022f89aeb5034f2292ca71daa9f311e8af40ff data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json +b7232d0e659de3f227289a5275f76a5a2ec578bb data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json +bf68b12cf828b64f5bb407bba6cf6ced8578327c data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json +84963b1e8eb81dd20df6a9680028f8b76fef2bae data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json +744d8831fde05ee2598ccde10f9289512c45d55b data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json +4ef0ac97acddee1c49a0deb402b43feb40af1dc6 data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json +6a7c767957b8c1827ad58210b37321a2a6bb4018 data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json +075d793d172da2500e591af050176b1d3a0d26aa data/create/advancements/recipes/building_blocks/blasting/osmium_ingot_compat_mekanism.json +f994f545e3a1990448e852c556d94f7eaf9954a0 data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json +85b1a8c173ca7e5421f9d2bd0f3f997c8431d15c data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json +9b48187d487ddabcad4f4e4f75b67813f26a746d data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json +96bf046af4d23dddcca5915cfbfc04a46b0d2912 data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json +0c12fee4021c8095385f3df008bd187dd0baea0e data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mekanism.json +506ade70e5bcc111323823f195c3abe4869d4c69 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json +a75f1162ac89cd50a1ca8e525dd059fb359a6550 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json +38410d4b3bbbf33c1c8913735abd1b3d71fb3829 data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json +22067545c460d95831d9dddf361da9becac3396e data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json e525d8eda8d0aac6791ae935ed4f3f75cc521460 data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json 295c5a61d6f175a65d25e19cbd7ca90d3b4a93b2 data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json d192e3f2185ad3cd8cd64f639dd6395aaec89563 data/create/advancements/recipes/building_blocks/smelting/glass_from_tiled_glass.json 98fe15c805f1d228f1db6a2b35426ef01e9747a8 data/create/advancements/recipes/building_blocks/smelting/glass_from_vertical_framed_glass.json +43d3d2c952f54fdf73e4df422554451ceff899d3 data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json +48439dd60a0a79f0ab6accc3773a3a8b64b7396e data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json +7d8325768f249a1ac5d79d60eb58b6eb32c51234 data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json +d192714def52e54a58ae96f7592055e925d88bb8 data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json +6f0b67b3f49da5c3102a48e68e6c4f834d08b0e2 data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json +847dc1a0bd2275a11ff02624b98cf7fdf0d8f47b data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json +79d5f852e9e48e9e8ff5cd42890fbc9ad29e9712 data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json +2be47fb3a33a7e92705767eb255d7586de56f4a5 data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json +1cebfdc52bfa34515144e651ba5a6d65e97a57a9 data/create/advancements/recipes/building_blocks/smelting/osmium_ingot_compat_mekanism.json +70d98f34671f09331f6765447b95cd00c3b8d4e5 data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json +8e5beb04ea241145f4e34320cba1745fd9d386e6 data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json +60fd25d05bfe101d83e3a13678cca9940665771c data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json +29685c6f05455faa657cb51433352d005b798cf4 data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json +787158553e0eac72dffffed787d2a2529754e8b0 data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mekanism.json +7677ff00e70a92e9c4b9035b0d706e0c255b7e26 data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json +e98e6372bb065a0d82f44bea7169e8f40bd40920 data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json +8b47a4314f17dabe490ffc9bcd9b9d32640a6ef2 data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json 9db50289b778cbcdfd9cd8589361924a0f1bebad data/create/advancements/recipes/create.base/blasting/brass_ingot_from_crushed.json 9b7a18a8697ef7ea09538909df640af53d0b6ca7 data/create/advancements/recipes/create.base/blasting/copper_ingot_from_crushed.json c368cadffa9177fefb9e92ff4453b40bc8dd670d data/create/advancements/recipes/create.base/blasting/copper_ingot_from_ore.json @@ -2573,11 +2618,29 @@ a961cdd11e807bc4658bbdba6c278801b5981234 data/create/recipes/andesite_pillar.jso dcdad7a04838ef202b42f84a15243e3d2472b14e data/create/recipes/andesite_pillar_from_andesite_stonecutting.json 2b291b77860254b7ba8500cf2199a04ca1fca7b5 data/create/recipes/birch_window.json 288d80210f7efb4664e2e9c9d9111049863e5f60 data/create/recipes/birch_window_pane.json +a4a9159c349dba7269c6b32c481f1df90b9e805a data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json adb384440f91411692689707d5c767c1065ac06c data/create/recipes/blasting/brass_ingot_from_crushed.json c21420fbf2080dba5f95bdc9a19743ba09e1f1c9 data/create/recipes/blasting/copper_ingot_from_crushed.json c6f0509618f703f1a48313e46d934bd862096699 data/create/recipes/blasting/copper_ingot_from_ore.json d9021504be855cd2d4d91503a82b84233052adb0 data/create/recipes/blasting/gold_ingot_from_crushed.json +f2307aa01ddf7accb3fe19c4d3f9b46dec1acf97 data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json +8315c188802bd64f7226a9e942be45173112c7ac data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json +368fd45a8e9d5d2fc0e1f8af1ffb48984b85601c data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json +9b5a388f0f8a3a8fae9e6bbf6460913b7c1f6fe7 data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json +ba7498521a1e07b9bd46ec230d952fb232eaaba0 data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json 69cda0f54c47cd44c296608cc379db855602410f data/create/recipes/blasting/iron_ingot_from_crushed.json +65a44735ffa0c3e471a1df30b987d8c3cf1764fc data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json +aeb345e5b4c266ac9e2ef6929b153cb535468d01 data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json +91691cb14043e8222c38a18bb103f874b39d30b1 data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json +453a6602d70bbd30e13033565eb6ce6fa8fde194 data/create/recipes/blasting/osmium_ingot_compat_mekanism.json +a99be7aae1706cce96a3b6fadd38295bb53d10b7 data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json +3419a88787e331d59e0da8b9084d8c8a72a84ec0 data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json +84b73c8ef561ab0ecc2954cd86160595975811d6 data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json +3ce20049c90fc3ce446efac1d166b5e1b2855980 data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json +3d0c3e23be0d237a37a1c9945a7d0021248ffc50 data/create/recipes/blasting/tin_ingot_compat_mekanism.json +44a31af2877854f1b22691eb9b0dd831f80628f0 data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json +dd44cf0e09b1b34b4d2c254ab3d10d05a02717aa data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json +363e231126694b3ed8dc539b9dfb1c949bacbf5e data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json 70b58fa5ee4ca088f5cd9d4bce2853b1bbf98780 data/create/recipes/blasting/zinc_ingot_from_crushed.json 397a2b5d5d3b072066c3d7a9546769560e4674a3 data/create/recipes/blasting/zinc_ingot_from_ore.json 339bcf4a9c4e7b36c15970aa671af8620703b23e data/create/recipes/campfire_cooking/bread.json @@ -2765,33 +2828,42 @@ fe95f8f5f15edb0a5ff8da5a4757c9f8910b51bd data/create/recipes/crafting/palettes/d 5c47ac2e2b596439a684126fef7265f13de2379b data/create/recipes/crafting/schematics/schematic_and_quill.json 9fb943be76c51a24aa9d8a09de5b7bd17b44ab08 data/create/recipes/crafting/schematics/schematic_table.json 1a810338ea15ab5ac2f37e87579c56f72b2b371b data/create/recipes/crafting/schematics/schematicannon.json +18ece8e366b73d19950f9a5a5c93a92c857da2e9 data/create/recipes/crushing/aluminum_ore.json 3da7a3cdb84f44e259b5399a94ddfbf94ebebd37 data/create/recipes/crushing/blaze_rod.json 5878767e89be5a522b8f28d6a2d7b2f8566cf0dd data/create/recipes/crushing/brass_block.json b83ef0af844ca068e0353330b8273bace5b6a8c3 data/create/recipes/crushing/coal_ore.json da4ed79975391ec9f263869936b84474f1f727d3 data/create/recipes/crushing/copper_block.json -d49472887067c871943de1b80887b169682eeca9 data/create/recipes/crushing/copper_ore.json +b576c6e51e5b6a0623e024ac90cdf4d3a9265e4b 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 +274ee397285ded906792a0a19e54faefc496a931 data/create/recipes/crushing/gold_ore.json 55c0656723bd5a87089965651fe268b2d2956771 data/create/recipes/crushing/golden_horse_armor.json 7ce0637578ab3198de54ac74111b6d458eaf08bd data/create/recipes/crushing/gravel.json a7c97582bae243ab04ff5ff9914b24af25d40d59 data/create/recipes/crushing/iron_horse_armor.json -15d2e42423fd9fbf37864de4a6dffc2f53a307a9 data/create/recipes/crushing/iron_ore.json +9ad2394a8835c0d59edd699d646ae64b266612f3 data/create/recipes/crushing/iron_ore.json 5be5d90f862da95d9fd15663b71bff126fd04441 data/create/recipes/crushing/lapis_ore.json +62e2768ae8f0de8d2e50a0916d4961f7836b5f04 data/create/recipes/crushing/lead_ore.json e870d049abc5cd5f389f70414c67e76ddc14060d data/create/recipes/crushing/leather_horse_armor.json 2bc66f89a751a440c93de5f1d28d54f9b5a0da77 data/create/recipes/crushing/nether_quartz_ore.json 2b9b8e1ab81f47c4f7fb79a007aef214af12a342 data/create/recipes/crushing/nether_wart_block_no_quark.json 70116a5a9d1f93ae377e1526ca99582190cf2e3e data/create/recipes/crushing/nether_wart_block_quark.json 8003e7db3ee11066b365c251f04f84028820de94 data/create/recipes/crushing/netherrack.json +7b4c7587374fb77088f226187771de520ada548b data/create/recipes/crushing/nickel_ore.json dd4b9e88a723f6c3f2456f36ef2354cd86d85433 data/create/recipes/crushing/obsidian.json +4a71aea480a6e6dd844c452155af1c30d70c5c09 data/create/recipes/crushing/osmium_ore.json +5e057c5e46f744fb63d9c1d51c113fd2bb95bfb7 data/create/recipes/crushing/platinum_ore.json 67197bbbb9667ab481410d21cb014bf9ca71ea60 data/create/recipes/crushing/prismarine_crystals.json +d068d6b1c0ffddf989188b826cf948e997af184d data/create/recipes/crushing/quicksilver_ore.json 03874de476273de5aab8758f23d1ae638847843b data/create/recipes/crushing/redstone_ore.json 2f48a98a44f01a014d4dd59030dc38afa234f3fc data/create/recipes/crushing/sand.json +2583968bd8227c0aa464741e2b5716367acd1536 data/create/recipes/crushing/silver_ore.json +e288b431c6a313a637cdc6208137faa17f6d8c4c data/create/recipes/crushing/tin_ore.json +307f30eb1180bca140572d08951c06b01a85beb0 data/create/recipes/crushing/uranium_ore.json b6b97f139ee0a06a4ec1ed9f43e1f845b3c502d3 data/create/recipes/crushing/wool.json 967bea8eabac8fab8de547ddd6670230f400c111 data/create/recipes/crushing/zinc_block.json -e4683ed7e28fbf502ca176513c43ee719a016d13 data/create/recipes/crushing/zinc_ore.json +0c9692950385949ba605065b6fbce32a75f9ee8a data/create/recipes/crushing/zinc_ore.json 86b1e391fe567ad1ca9f27c963e16c2f6e6b3bc9 data/create/recipes/cutting/acacia_log.json 3601e7100d6de215a524a12c641b5111c95d314c data/create/recipes/cutting/acacia_wood.json 68687da80b9dc7ea69729b0e16d3e75efed8679a data/create/recipes/cutting/andesite_alloy.json @@ -3005,6 +3077,7 @@ ce17f8ab6e051f45a12e55f1642ad1b8a0f8510f data/create/recipes/mechanical_crafting fc380bc241f3233700e91fe2947e1a5d6c70e7db data/create/recipes/mechanical_crafting/mechanical_arm.json 23bd72789e7be894c4ee8927a171c721afcc2084 data/create/recipes/mechanical_crafting/nixie_tube.json 98f877bf8f3f8a686fc6cf7479a0fba5744248ce data/create/recipes/milling/allium.json +8c7e1cbc87c7ca7df2bf949957e89422fef8ad94 data/create/recipes/milling/aluminum_ore.json bcff4d30ae09a0729bce8b2dbde4ddd6719a998b data/create/recipes/milling/andesite.json ac3f1c92115a113a1ea7e5543c1e061e3d2a0b36 data/create/recipes/milling/azure_bluet.json 95d673bb272d273c2ad25bf01723dd978642faed data/create/recipes/milling/blue_orchid.json @@ -3016,39 +3089,47 @@ e34c20506e9054da0e3b22fb27a093222eeb9a9c data/create/recipes/milling/clay.json ccce7e6d1ab703d6567046b9c99c254e8baa88f7 data/create/recipes/milling/coal.json 851e4f3b84f431003264bc902a3351b6d769c897 data/create/recipes/milling/cobblestone.json 929d5c69bfd4eefc33766954e1ed7cbc284180b6 data/create/recipes/milling/cocoa_beans.json -08f453ce32e4ea28e4ca3ac3e446fa8019e2bc58 data/create/recipes/milling/copper_ore.json +a1d947988d0c31be6a7f86db255328d704c90bda data/create/recipes/milling/copper_ore.json 31da5a1a6cc6f6cf90bf091d968d8b6f8555b292 data/create/recipes/milling/cornflower.json 623c1a134f8ce6b7d52476b6da8e8d210dba7bb1 data/create/recipes/milling/dandelion.json 62652b87e4f6435be9900afd4725e7a5782bc9d1 data/create/recipes/milling/diorite.json 28bad3c34cf0f5e20c48486c15130f6c552a93ec data/create/recipes/milling/fern.json -639469b734d0fed1583e963b461b01cbf04ec417 data/create/recipes/milling/gold_ore.json +9acaae7f887c815a5d2195e4847f276161e94fec data/create/recipes/milling/gold_ore.json 51d692a94c69e10e3b77542f9cd98500104d5a42 data/create/recipes/milling/granite.json 6f9d6891b2bc2e6f1dc24a7802f9a0f7982e9d20 data/create/recipes/milling/grass.json 407a82fb6ca49d8e6159b0e900f856021b1dd771 data/create/recipes/milling/gravel.json 7932570ab897c0afe71ca368372f7628cb2c9b31 data/create/recipes/milling/ink_sac.json -ad9857c18bbeaf838f389bbc69e2d33418245285 data/create/recipes/milling/iron_ore.json +b73e22d4234fa32a649c57d3a83a1b9c8f89f358 data/create/recipes/milling/iron_ore.json b2e80b5752eec591f4110f6a5fc5e052aeecab78 data/create/recipes/milling/lapis_lazuli.json 1720439fd1c8eb808d1a1d29510b71860afbdec2 data/create/recipes/milling/large_fern.json +63e4d80308ac542d36e82a4689267fce4d8c86bf data/create/recipes/milling/lead_ore.json 3c8a3b3d8c91e107c2ff64b2115f5cf94197fc91 data/create/recipes/milling/lilac.json f2a7518eeef43052785dff6c3bf305c8c74c4789 data/create/recipes/milling/lily_of_the_valley.json +051ccd86b1dc037c7c12a4abde6bd4f7e5bc7bb0 data/create/recipes/milling/nickel_ore.json 5ba9cd55d4a551350b64ecbbff6bfd32e130c00c data/create/recipes/milling/orange_tulip.json +856cb5f8aa2b4c3a292fb71348bd060b4cd5fe1d data/create/recipes/milling/osmium_ore.json e5f121e244cd0afa2fe3d76a1e15ca9974bee96b data/create/recipes/milling/oxeye_daisy.json 077edce210beb2cbe5e37062b0518be473784dc7 data/create/recipes/milling/peony.json 00c67bfbfc780b0d0343c9d31fda9f477341bc88 data/create/recipes/milling/pink_tulip.json +6b176880d75ab9f7fd80fa175d4c18c129c1dad7 data/create/recipes/milling/platinum_ore.json 47fabce9ae3fbc2cc888697b11e6d48748631ef5 data/create/recipes/milling/poppy.json +c338d5ad841673364d514800074268b83852e944 data/create/recipes/milling/quicksilver_ore.json ea6fb7e30fa22cd87ff4760288e11f909b78ac86 data/create/recipes/milling/red_tulip.json bda581c2039f41f7d55527814a46903f10da7e05 data/create/recipes/milling/rose_bush.json 54be62a1bf098a370d315f79068ec326e4f4d6c2 data/create/recipes/milling/saddle.json 8bc6124293f4efb5f2d0fa4a3166c6d00a88a14c data/create/recipes/milling/sand.json +87e30347cc28aa5fb2daefae4c25fa81ce92b0f1 data/create/recipes/milling/silver_ore.json 1e14bd30032aab6dfaff5bca50c791332ffc1aaa data/create/recipes/milling/sugar_cane.json af2beca9f934601ad029f34bad08be3cee07f6b4 data/create/recipes/milling/sunflower.json 949c7aa8f5172c07b0b5ea178d8046ffaac9f527 data/create/recipes/milling/tall_grass.json 542ffcedc9b1467ec41c6f4e162453e76fa1ead1 data/create/recipes/milling/terracotta.json +2af15c24fecb0c25017f23ec74f2f4a343b92c65 data/create/recipes/milling/tin_ore.json +aa0db51304fc877f9670e6c331a94bd38ca853ce data/create/recipes/milling/uranium_ore.json 4f61f0efbd980407d4e0fa1067dd320f01496c6c data/create/recipes/milling/wheat.json 0a598bfc39ad473856887703d7971ba3a70339f8 data/create/recipes/milling/white_tulip.json 19a16516ce26afddef5604b118899a50671a9a9a data/create/recipes/milling/wither_rose.json eec880075efd6008b604a4b8064d782752b4bad6 data/create/recipes/milling/wool.json -9f105242e06994f541236f669931a6bb983afadc data/create/recipes/milling/zinc_ore.json +2363962d6c8ad337b1fd9dfb2bd2c82388b911a5 data/create/recipes/milling/zinc_ore.json b3cc5e61bab40ca6135dc1f706f3ab447e9f78bf data/create/recipes/mixing/andesite_alloy.json ce9dc7dacb85cb23a7187c19a115b40e597ad36b data/create/recipes/mixing/andesite_alloy_from_zinc.json 3417f9399ce0fb32fc4bce94c772b40d780c9006 data/create/recipes/mixing/brass_ingot.json @@ -3215,6 +3296,7 @@ f7b7ff190929ae525297fecb3c116f32fc05fd88 data/create/recipes/scoria_cobblestone_ a9096822db9d12b6014d6d34e52de5821305c03f data/create/recipes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json a513468ce4d55fe3b3919bd76ba2bd5b6fac4d4e data/create/recipes/scoria_pillar.json 2e0ecbd3619f080d0fc6fe48307c5a5bcc2e91b4 data/create/recipes/scoria_pillar_from_scoria_stonecutting.json +4e817b521623966fa24186731a70f0e14c03168e data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json ae90f50589bc06b44765ac8cbb9fbdc2b58fdb32 data/create/recipes/smelting/brass_ingot_from_crushed.json 64cbf425effba00ff2e31d95cffc2be2e0191932 data/create/recipes/smelting/bread.json 68aae31e827e192e28e1f950b0bfdeb4ec1860c7 data/create/recipes/smelting/copper_ingot_from_crushed.json @@ -3230,10 +3312,27 @@ daaa640dbfaa86685de636b89afe2fdd74cd0cf9 data/create/recipes/smelting/glass_pane 48bdeff8ca1ae7bf732fc870fb0fa294de56188a data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json 7035be7cce5a38c794d9cc872801329af81bac46 data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json b032c79090adad2262ae94609e0b3747327d51a2 data/create/recipes/smelting/gold_ingot_from_crushed.json +5cd79470a32c77fc7347a04ad2096df08769a59f data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json +ce34f496dca15378b5e4b21c70505e9d1184848d data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json +428b3981a13c63381115384496d89375e3d20837 data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json +456ec25989f6d882fc931764341d8217386cf9ab data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json +7ca0d75c667e171f2abc5faeb96ef17282b130ac data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json fe3e4c244c34aa6948243fabd6b42f04f80d4992 data/create/recipes/smelting/iron_ingot_from_crushed.json +4a1e8041f44bb36d29ec624fc78bdfd0ac875953 data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json +76433e1605c03dec670d95e9541770c53f4a5aaf data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json bf0e5df5a88e583e39a4e14b006cbf33b99611e1 data/create/recipes/smelting/limestone.json +6a9ef35f3e5fc37602d887687924547ea77bffcd data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json +18d0f016d3dfa08789438e074626258932404898 data/create/recipes/smelting/osmium_ingot_compat_mekanism.json +86725fc9711c6e7971a4b396aa089ad191089bb3 data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json +92c308baf81fe2c8a63c90b0dfc7cf8cc2183c4b data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json 2c230522bb0946bde6a51442cb15c5efeea99b15 data/create/recipes/smelting/scoria.json f5317c85a9e10a5f9346e13aef8bb364a5203346 data/create/recipes/smelting/scoria_from_natural.json +96c2b799b812e469bb1785200d68c1e8f8cfacf7 data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json +21c5fbce648ca8812d4c75e3c71934bc269e2216 data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json +85116bc01ff8513f9e3122af0dcd32fbcd645828 data/create/recipes/smelting/tin_ingot_compat_mekanism.json +3e977195d8c825365753eb609e3bccca3302a0a3 data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json +07bc2816c79de888e8f8f5954c6f917f6ab37176 data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json +4284a72dcd1819d9a9a644a955d3398d489e10fe data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json a5d23be4cc959eb47d84b210190abaafcf41f022 data/create/recipes/smelting/zinc_ingot_from_crushed.json 2d8e448bbe841871c5d9a022149c5f34fd5c0df1 data/create/recipes/smelting/zinc_ingot_from_ore.json ce7c3c6e1da9d6684c9537d1a558423925d89f33 data/create/recipes/smoking/bread.json @@ -3250,18 +3349,36 @@ c4d680eed98791fe45fa93aeeae9e8dbd508d6f5 data/create/recipes/splashing/gravel.js 7af4d9ae50af13da0d4fc814687f9586ff872798 data/create/recipes/splashing/gray_concrete_powder.json 23fb61c0e4bcca58fa7241db9cbef07bf4bd9a9b data/create/recipes/splashing/green_concrete_powder.json 0a15fffe26190b78d2177c8302c92fc2232ce398 data/create/recipes/splashing/ice.json +1c978c74c949e9325a4078f25d8b39ed2d70f4a0 data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json +10ce4f124a8caf28027f4976f49a54561bfb7d18 data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json +ab433eb5d0739ca5932588f48308151d7e0bacc2 data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json +690fe5c0fbdad61827862f21ee3a59dc385a0f93 data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json +0c8391170e5918872b06d371f694fcd72e173c5b data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json 601e460575d3d1f45dca3e259f5a7c2701f45888 data/create/recipes/splashing/light_blue_concrete_powder.json 11792305bc949f08e7c1199ead8430f20848fa54 data/create/recipes/splashing/light_gray_concrete_powder.json a43d7c9a6369a48ef7d1396f2c11dc1f3704a61e data/create/recipes/splashing/lime_concrete_powder.json 67d97de29a9075a7ba8edb6e47c997b02600557e data/create/recipes/splashing/limestone.json 862f7b68bb107d7c4ecc82ddd10c788eb0a07b03 data/create/recipes/splashing/magenta_concrete_powder.json 004e05fed3684de8603905d9c9381cbbd789a882 data/create/recipes/splashing/magma_block.json +11e61710da12d73aa86660c1ea208f9533a7882c data/create/recipes/splashing/mekanism/crushed_osmium_ore.json +370c28fb8f2da4fbbb498ee3de11d1d21252957b data/create/recipes/splashing/mekanism/crushed_tin_ore.json +ea4a295149091e3b4b8388cb9d4dd2ab509d666e data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json +1ecac82da1ccc381e303dc64e8033c13cf66fb59 data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json +fd1751c804bfc156c7bd97955fabb19f9a4b94ec data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json +123db4bca699bf1d2571727f4b7fcf9d3ef82e37 data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json 625c2d68ad722209523925375bc4f7494667feb2 data/create/recipes/splashing/orange_concrete_powder.json fb0c5fb2da0ac1fd236b19823747b9c15b536b02 data/create/recipes/splashing/pink_concrete_powder.json 2599fcd240eacdf4ace0dffe64f026d0bb4919d9 data/create/recipes/splashing/purple_concrete_powder.json 9c10bfdd047fb9ac17d51ebdd38bc8be0883d970 data/create/recipes/splashing/red_concrete_powder.json 87ddb764bcff88c12686d171540cea4cc6edaf16 data/create/recipes/splashing/red_sand.json 3a5dea804e0aec6fa8711eb07b006d8b1de098ff data/create/recipes/splashing/sand.json +94eb5e36f8f0f47d1846d6cd21a04f5ad39e4a67 data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json +8ba14fdc6c3ebe54a8b70cedaf0f9951cbd756ed data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json +8a4c5d280c423d1f1272a56abb7cc8cf36bf2486 data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json +fc9889cf6c0594b3635670b85f5cfec628a78537 data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json +14f525e426a5a14a5d5279afe07582896de90a96 data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json +62c8dbed54fac6a95f89f18b6e68ddceb534dbd3 data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json +4140a1f16467dd690e458561871c456f9f826f27 data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json cf0dcdb8ec3f3e75b315faa377eccef662dea71f data/create/recipes/splashing/soul_sand.json ba660fe5786c95a359a6ddfdeb73d7109cbebe5d data/create/recipes/splashing/stained_glass.json c7a51fd1b730d48991cf6b4f1b56da4144537f1d data/create/recipes/splashing/stained_glass_pane.json @@ -3299,7 +3416,7 @@ c9ac7e3e5ec18554e7184168d65e9b8e44ef5610 data/create/tags/blocks/sails.json 50936b211d94167a35ec78c89954082a336b6269 data/create/tags/blocks/valve_handles.json eac71740fb12bdb38b5dfaa2268613d7ba82b809 data/create/tags/blocks/windmill_sails.json 081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data/create/tags/items/create_ingots.json -d2dc4ff179ef7b2aa9276455c196e15d44aa95a8 data/create/tags/items/crushed_ores.json +94c62bf22678ef55b2b8a5398a7960e5b00682dc data/create/tags/items/crushed_ores.json 6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json abbe5d7cc9d1705509257888154ed7ca23292586 data/create/tags/items/upright_on_belt.json 50936b211d94167a35ec78c89954082a336b6269 data/create/tags/items/valve_handles.json @@ -3329,11 +3446,12 @@ cc82188fe8d986f4457301ed4f75ae833d263601 data/forge/tags/items/nuggets/brass.jso 4b700ee8aa748c2ec70c29ef1589844879c0deae data/forge/tags/items/ores.json 4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data/forge/tags/items/ores/copper.json d5ea262a0f5fb210612d22521818e26cf08e591a data/forge/tags/items/ores/zinc.json -5d5ec04a61ff2b1ad19210e2859a9c96cc246ef8 data/forge/tags/items/plates.json +0ecf8a5392faf244b8cab3c7ddd45d5b34954050 data/forge/tags/items/plates.json 39f0d70ec10597e85df7c4783bbc5e0e4a5ffb80 data/forge/tags/items/plates/brass.json c3dab5fe379bc1b7b10d4a0ba7009eee1b75a27c data/forge/tags/items/plates/copper.json fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data/forge/tags/items/plates/gold.json 04d947ed7a5066f3cfe75a8dc564fe2dca8a9c93 data/forge/tags/items/plates/iron.json +4d598b23d07b6a0bfd89da11a30ce119a8660632 data/forge/tags/items/plates/lapis_lazuli.json 508730d3822c54d355329bf6a33d58071653afad data/forge/tags/items/storage_blocks.json ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/brass.json f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/copper.json diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 64fb4b653..6cb556302 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -423,10 +423,19 @@ "item.create.copper_nugget": "\u0287\u01DDbbnN \u0279\u01DDddo\u0186", "item.create.copper_sheet": "\u0287\u01DD\u01DD\u0265S \u0279\u01DDddo\u0186", "item.create.crafter_slot_cover": "\u0279\u01DD\u028Co\u0186 \u0287o\u05DFS \u0279\u01DD\u0287\u025F\u0250\u0279\u0186", + "item.create.crushed_aluminum_ore": "\u01DD\u0279O \u026Fnu\u0131\u026Fn\u05DF\u2C6F p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_brass": "ss\u0250\u0279\u15FA p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_gold_ore": "\u01DD\u0279O p\u05DFo\u2141 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_iron_ore": "\u01DD\u0279O uo\u0279I p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_lead_ore": "\u01DD\u0279O p\u0250\u01DD\uA780 p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_nickel_ore": "\u01DD\u0279O \u05DF\u01DD\u029E\u0254\u0131N p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_osmium_ore": "\u01DD\u0279O \u026Fn\u0131\u026FsO p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_platinum_ore": "\u01DD\u0279O \u026Fnu\u0131\u0287\u0250\u05DF\u0500 p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_quicksilver_ore": "\u01DD\u0279O \u0279\u01DD\u028C\u05DF\u0131s\u029E\u0254\u0131n\u1F49 p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_silver_ore": "\u01DD\u0279O \u0279\u01DD\u028C\u05DF\u0131S p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_tin_ore": "\u01DD\u0279O u\u0131\u27D8 p\u01DD\u0265sn\u0279\u0186", + "item.create.crushed_uranium_ore": "\u01DD\u0279O \u026Fn\u0131u\u0250\u0279\u2229 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z p\u01DD\u0265sn\u0279\u0186", "item.create.deforester": "\u0279\u01DD\u0287s\u01DD\u0279o\u025F\u01DD\u15E1", "item.create.dough": "\u0265bno\u15E1", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 596416921..e4b891313 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -429,10 +429,19 @@ "item.create.copper_nugget": "Copper Nugget", "item.create.copper_sheet": "Copper Sheet", "item.create.crafter_slot_cover": "Crafter Slot Cover", + "item.create.crushed_aluminum_ore": "Crushed Aluminum Ore", "item.create.crushed_brass": "Crushed Brass", "item.create.crushed_copper_ore": "Crushed Copper Ore", "item.create.crushed_gold_ore": "Crushed Gold Ore", "item.create.crushed_iron_ore": "Crushed Iron Ore", + "item.create.crushed_lead_ore": "Crushed Lead Ore", + "item.create.crushed_nickel_ore": "Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "Crushed Silver Ore", + "item.create.crushed_tin_ore": "Crushed Tin Ore", + "item.create.crushed_uranium_ore": "Crushed Uranium Ore", "item.create.crushed_zinc_ore": "Crushed Zinc Ore", "item.create.deforester": "Deforester", "item.create.dough": "Dough", 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 3aa4db383..4408f7a9d 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: 1062", + "_": "Missing Localizations: 1071", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "UNLOCALIZED: Crushed Brass", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "UNLOCALIZED: Deforester", "item.create.dough": "Teig", 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 b917b0a65..19db5878f 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: 692", + "_": "Missing Localizations: 701", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "Pépite de cuivre", "item.create.copper_sheet": "Plaques de cuivre", "item.create.crafter_slot_cover": "Couvercle", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "Laiton concassé", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "Déforesteur", "item.create.dough": "Pâte", 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 bc568f600..4b629e1d6 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: 676", + "_": "Missing Localizations: 685", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "Pepita di Rame", "item.create.copper_sheet": "Lamiera di Rame", "item.create.crafter_slot_cover": "Rivestimento Slot Creazione", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "Ottone Frantumato", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "Deforestatore", "item.create.dough": "Impasto", 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 1bd589dcf..c75c84ec1 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: 675", + "_": "Missing Localizations: 684", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", "item.create.crafter_slot_cover": "クラフタースロットカバー", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "砕いた真鍮", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "デフォレスター", "item.create.dough": "生地", 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 948863b94..6ad8061c2 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: 676", + "_": "Missing Localizations: 685", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "구리 조각", "item.create.copper_sheet": "구리 판", "item.create.crafter_slot_cover": "작업대 슬롯 덮개", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "분쇄된 황동", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "산림파괴자", "item.create.dough": "반죽", 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 a2947c95f..6232d3b9d 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: 1003", + "_": "Missing Localizations: 1012", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "Koper klompje", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "Gemalen Brons", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "Ontbosser", "item.create.dough": "Deeg", 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 09e5c71e8..ada498bf6 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: 1069", + "_": "Missing Localizations: 1078", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "UNLOCALIZED: Crushed Brass", "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", "item.create.deforester": "UNLOCALIZED: Deforester", "item.create.dough": "Massa", 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 d785a1d7a..7d485149c 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: 345", + "_": "Missing Localizations: 354", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "Кусочек меди", "item.create.copper_sheet": "Медный лист", "item.create.crafter_slot_cover": "Крышка на слот крафтера", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "Дробленая латунь", "item.create.crushed_copper_ore": "Измельчённая медная руда", "item.create.crushed_gold_ore": "Измельчённая золотая руда", "item.create.crushed_iron_ore": "Измельчённая железная руда", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "Измельчённая цинковая руда", "item.create.deforester": "Уничтожитель леса", "item.create.dough": "Тесто", 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 d4fc955fa..cd196f613 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: 358", + "_": "Missing Localizations: 367", "_": "->------------------------] Game Elements [------------------------<-", @@ -430,10 +430,19 @@ "item.create.copper_nugget": "铜粒", "item.create.copper_sheet": "铜板", "item.create.crafter_slot_cover": "制造器盖板", + "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", "item.create.crushed_brass": "粉碎黄铜", "item.create.crushed_copper_ore": "粉碎铜矿石", "item.create.crushed_gold_ore": "粉碎金矿石", "item.create.crushed_iron_ore": "粉碎铁矿石", + "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", + "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", + "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", + "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", + "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", + "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", + "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", + "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "粉碎锌矿石", "item.create.deforester": "树林毁灭者", "item.create.dough": "面团", diff --git a/src/generated/resources/assets/create/models/item/crushed_aluminum_ore.json b/src/generated/resources/assets/create/models/item/crushed_aluminum_ore.json new file mode 100644 index 000000000..94debef98 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_aluminum_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_aluminum_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_lead_ore.json b/src/generated/resources/assets/create/models/item/crushed_lead_ore.json new file mode 100644 index 000000000..a613470f2 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_lead_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_lead_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_nickel_ore.json b/src/generated/resources/assets/create/models/item/crushed_nickel_ore.json new file mode 100644 index 000000000..dc56fbd0c --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_nickel_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_nickel_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_osmium_ore.json b/src/generated/resources/assets/create/models/item/crushed_osmium_ore.json new file mode 100644 index 000000000..54c17a61c --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_osmium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_osmium_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_platinum_ore.json b/src/generated/resources/assets/create/models/item/crushed_platinum_ore.json new file mode 100644 index 000000000..f634257a6 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_platinum_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_platinum_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_quicksilver_ore.json b/src/generated/resources/assets/create/models/item/crushed_quicksilver_ore.json new file mode 100644 index 000000000..2cd0f72ad --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_quicksilver_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_quicksilver_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_silver_ore.json b/src/generated/resources/assets/create/models/item/crushed_silver_ore.json new file mode 100644 index 000000000..115671ebe --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_silver_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_silver_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_tin_ore.json b/src/generated/resources/assets/create/models/item/crushed_tin_ore.json new file mode 100644 index 000000000..86680bf81 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_tin_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_tin_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_uranium_ore.json b/src/generated/resources/assets/create/models/item/crushed_uranium_ore.json new file mode 100644 index 000000000..f9f4bd96b --- /dev/null +++ b/src/generated/resources/assets/create/models/item/crushed_uranium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/crushed_uranium_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..da856538c --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/aluminum_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_aluminum_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/aluminum_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json new file mode 100644 index 000000000..fb63b0eb7 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_aluminum_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_aluminum_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_aluminum_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json new file mode 100644 index 000000000..9e3d45634 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_lead_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_lead_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_lead_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json new file mode 100644 index 000000000..f0e0c5f2a --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_nickel_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_nickel_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_nickel_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json new file mode 100644 index 000000000..1c3df65ab --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_silver_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_silver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_silver_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json new file mode 100644 index 000000000..3124305fa --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/ingot_uranium_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_uranium_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/ingot_uranium_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..7db99d24f --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/lead_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_lead_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/lead_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..9baf5c094 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/lead_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_lead_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/lead_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..0dd0f330a --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/nickel_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_nickel_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/nickel_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/osmium_ingot_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/osmium_ingot_compat_mekanism.json new file mode 100644 index 000000000..1aa1197f7 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/osmium_ingot_compat_mekanism.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/osmium_ingot_compat_mekanism" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_osmium_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/osmium_ingot_compat_mekanism" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..cee7a6143 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/platinum_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_platinum_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/platinum_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..703399829 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/quicksilver_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_quicksilver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/quicksilver_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..1c89bad02 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/silver_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_silver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/silver_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..916b7198d --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/silver_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_silver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/silver_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mekanism.json new file mode 100644 index 000000000..1c1029415 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mekanism.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/tin_ingot_compat_mekanism" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_tin_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/tin_ingot_compat_mekanism" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..8097c78c9 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/tin_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_tin_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/tin_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..4ab948dc1 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/tin_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_tin_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/tin_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..b9deb38e0 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:blasting/uranium_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_uranium_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:blasting/uranium_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..989a17b16 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/aluminum_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_aluminum_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/aluminum_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json new file mode 100644 index 000000000..d93e8f57b --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_aluminum_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_aluminum_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_aluminum_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json new file mode 100644 index 000000000..e0556cd50 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_lead_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_lead_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_lead_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json new file mode 100644 index 000000000..e008f432a --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_nickel_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_nickel_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_nickel_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json new file mode 100644 index 000000000..a359a6511 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_silver_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_silver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_silver_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json new file mode 100644 index 000000000..67762dc69 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/ingot_uranium_compat_immersiveengineering" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_uranium_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/ingot_uranium_compat_immersiveengineering" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..59611d7a7 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/lead_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_lead_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/lead_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..5854e4350 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/lead_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_lead_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/lead_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..30cf3ee8d --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/nickel_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_nickel_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/nickel_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/osmium_ingot_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/osmium_ingot_compat_mekanism.json new file mode 100644 index 000000000..8ef5a05d5 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/osmium_ingot_compat_mekanism.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/osmium_ingot_compat_mekanism" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_osmium_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/osmium_ingot_compat_mekanism" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..2e3bea005 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/platinum_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_platinum_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/platinum_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..2ec4a4e04 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/quicksilver_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_quicksilver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/quicksilver_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..e01b36550 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/silver_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_silver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/silver_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..85c393349 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/silver_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_silver_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/silver_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mekanism.json new file mode 100644 index 000000000..be2f789a2 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mekanism.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/tin_ingot_compat_mekanism" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_tin_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/tin_ingot_compat_mekanism" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..c91bf7f7e --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/tin_ingot_compat_mysticalworld" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_tin_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/tin_ingot_compat_mysticalworld" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..f5a627d65 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/tin_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_tin_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/tin_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..173237f69 --- /dev/null +++ b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "create:smelting/uranium_ingot_compat_silents_mechanisms" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "create:crushed_uranium_ore" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "create:smelting/uranium_ingot_compat_silents_mechanisms" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..fd2790eab --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_aluminum_ore" + }, + "result": "silents_mechanisms:aluminum_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json new file mode 100644 index 000000000..df88850d4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_aluminum_ore" + }, + "result": "immersiveengineering:ingot_aluminum", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json new file mode 100644 index 000000000..74f359db2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_lead_ore" + }, + "result": "immersiveengineering:ingot_lead", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json new file mode 100644 index 000000000..8ad2bf41b --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_nickel_ore" + }, + "result": "immersiveengineering:ingot_nickel", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json new file mode 100644 index 000000000..4b0fac0c8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_silver_ore" + }, + "result": "immersiveengineering:ingot_silver", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json new file mode 100644 index 000000000..52c435ebf --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_uranium_ore" + }, + "result": "immersiveengineering:ingot_uranium", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..beae6055d --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_lead_ore" + }, + "result": "mysticalworld:lead_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..84f5d58b0 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_lead_ore" + }, + "result": "silents_mechanisms:lead_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..fcae2b6e6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_nickel_ore" + }, + "result": "silents_mechanisms:nickel_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/osmium_ingot_compat_mekanism.json b/src/generated/resources/data/create/recipes/blasting/osmium_ingot_compat_mekanism.json new file mode 100644 index 000000000..65bbfe190 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/osmium_ingot_compat_mekanism.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_osmium_ore" + }, + "result": "mekanism:osmium_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "mekanism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..2c6c22847 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_platinum_ore" + }, + "result": "silents_mechanisms:platinum_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..9e0bff2a7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_quicksilver_ore" + }, + "result": "mysticalworld:quicksilver_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..ffa5dbf2f --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_silver_ore" + }, + "result": "mysticalworld:silver_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..aeb193365 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_silver_ore" + }, + "result": "silents_mechanisms:silver_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mekanism.json b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mekanism.json new file mode 100644 index 000000000..182dec6ef --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mekanism.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_tin_ore" + }, + "result": "mekanism:tin_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "mekanism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..039044d63 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_tin_ore" + }, + "result": "mysticalworld:tin_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..200ff3924 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_tin_ore" + }, + "result": "silents_mechanisms:tin_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..b160e2511 --- /dev/null +++ b/src/generated/resources/data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:blasting", + "ingredient": { + "item": "create:crushed_uranium_ore" + }, + "result": "silents_mechanisms:uranium_ingot", + "experience": 0.1, + "cookingtime": 100, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/aluminum_ore.json b/src/generated/resources/data/create/recipes/crushing/aluminum_ore.json new file mode 100644 index 000000000..7c6472470 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/aluminum_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/aluminum" + } + ], + "results": [ + { + "item": "create:crushed_aluminum_ore" + }, + { + "item": "create:crushed_aluminum_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/aluminum", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/copper_ore.json b/src/generated/resources/data/create/recipes/crushing/copper_ore.json index 8619d352d..cc80390c1 100644 --- a/src/generated/resources/data/create/recipes/crushing/copper_ore.json +++ b/src/generated/resources/data/create/recipes/crushing/copper_ore.json @@ -19,5 +19,14 @@ "chance": 0.125 } ], - "processingTime": 350 + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/copper", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/gold_ore.json b/src/generated/resources/data/create/recipes/crushing/gold_ore.json index 9e0cce547..8545c7d32 100644 --- a/src/generated/resources/data/create/recipes/crushing/gold_ore.json +++ b/src/generated/resources/data/create/recipes/crushing/gold_ore.json @@ -19,5 +19,14 @@ "chance": 0.125 } ], - "processingTime": 300 + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/gold", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/iron_ore.json b/src/generated/resources/data/create/recipes/crushing/iron_ore.json index bdc80fc6e..d67f352ee 100644 --- a/src/generated/resources/data/create/recipes/crushing/iron_ore.json +++ b/src/generated/resources/data/create/recipes/crushing/iron_ore.json @@ -19,5 +19,14 @@ "chance": 0.125 } ], - "processingTime": 400 + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/iron", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/lead_ore.json b/src/generated/resources/data/create/recipes/crushing/lead_ore.json new file mode 100644 index 000000000..adbefb9f7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/lead_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/lead" + } + ], + "results": [ + { + "item": "create:crushed_lead_ore" + }, + { + "item": "create:crushed_lead_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/lead", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/nickel_ore.json b/src/generated/resources/data/create/recipes/crushing/nickel_ore.json new file mode 100644 index 000000000..22a5579ee --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/nickel_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/nickel" + } + ], + "results": [ + { + "item": "create:crushed_nickel_ore" + }, + { + "item": "create:crushed_nickel_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/nickel", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/osmium_ore.json b/src/generated/resources/data/create/recipes/crushing/osmium_ore.json new file mode 100644 index 000000000..2620b7fd3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/osmium_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/osmium" + } + ], + "results": [ + { + "item": "create:crushed_osmium_ore" + }, + { + "item": "create:crushed_osmium_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/osmium", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/platinum_ore.json b/src/generated/resources/data/create/recipes/crushing/platinum_ore.json new file mode 100644 index 000000000..edaa78261 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/platinum_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/platinum" + } + ], + "results": [ + { + "item": "create:crushed_platinum_ore" + }, + { + "item": "create:crushed_platinum_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/platinum", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/quicksilver_ore.json b/src/generated/resources/data/create/recipes/crushing/quicksilver_ore.json new file mode 100644 index 000000000..05484d91e --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/quicksilver_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/quicksilver" + } + ], + "results": [ + { + "item": "create:crushed_quicksilver_ore" + }, + { + "item": "create:crushed_quicksilver_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/quicksilver", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/silver_ore.json b/src/generated/resources/data/create/recipes/crushing/silver_ore.json new file mode 100644 index 000000000..5358eba8d --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/silver_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/silver" + } + ], + "results": [ + { + "item": "create:crushed_silver_ore" + }, + { + "item": "create:crushed_silver_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/silver", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/tin_ore.json b/src/generated/resources/data/create/recipes/crushing/tin_ore.json new file mode 100644 index 000000000..59bae1b52 --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/tin_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/tin" + } + ], + "results": [ + { + "item": "create:crushed_tin_ore" + }, + { + "item": "create:crushed_tin_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/tin", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/uranium_ore.json b/src/generated/resources/data/create/recipes/crushing/uranium_ore.json new file mode 100644 index 000000000..a00f7f03e --- /dev/null +++ b/src/generated/resources/data/create/recipes/crushing/uranium_ore.json @@ -0,0 +1,32 @@ +{ + "type": "create:crushing", + "ingredients": [ + { + "tag": "forge:ores/uranium" + } + ], + "results": [ + { + "item": "create:crushed_uranium_ore" + }, + { + "item": "create:crushed_uranium_ore", + "count": 2, + "chance": 0.3 + }, + { + "item": "minecraft:cobblestone", + "chance": 0.125 + } + ], + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/uranium", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/zinc_ore.json b/src/generated/resources/data/create/recipes/crushing/zinc_ore.json index 9ae4fe46d..751c69559 100644 --- a/src/generated/resources/data/create/recipes/crushing/zinc_ore.json +++ b/src/generated/resources/data/create/recipes/crushing/zinc_ore.json @@ -19,5 +19,14 @@ "chance": 0.125 } ], - "processingTime": 350 + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/zinc", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/aluminum_ore.json b/src/generated/resources/data/create/recipes/milling/aluminum_ore.json new file mode 100644 index 000000000..a0e94e54b --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/aluminum_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/aluminum" + } + ], + "results": [ + { + "item": "create:crushed_aluminum_ore" + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/aluminum", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/copper_ore.json b/src/generated/resources/data/create/recipes/milling/copper_ore.json index 4d84da701..e8a1ffc78 100644 --- a/src/generated/resources/data/create/recipes/milling/copper_ore.json +++ b/src/generated/resources/data/create/recipes/milling/copper_ore.json @@ -10,5 +10,14 @@ "item": "create:crushed_copper_ore" } ], - "processingTime": 350 + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/copper", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/gold_ore.json b/src/generated/resources/data/create/recipes/milling/gold_ore.json index 35fe22b01..c80b0d4fd 100644 --- a/src/generated/resources/data/create/recipes/milling/gold_ore.json +++ b/src/generated/resources/data/create/recipes/milling/gold_ore.json @@ -10,5 +10,14 @@ "item": "create:crushed_gold_ore" } ], - "processingTime": 300 + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/gold", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/iron_ore.json b/src/generated/resources/data/create/recipes/milling/iron_ore.json index df42a64e6..ddbe1a20d 100644 --- a/src/generated/resources/data/create/recipes/milling/iron_ore.json +++ b/src/generated/resources/data/create/recipes/milling/iron_ore.json @@ -10,5 +10,14 @@ "item": "create:crushed_iron_ore" } ], - "processingTime": 400 + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/iron", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/lead_ore.json b/src/generated/resources/data/create/recipes/milling/lead_ore.json new file mode 100644 index 000000000..7daad6dfa --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/lead_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/lead" + } + ], + "results": [ + { + "item": "create:crushed_lead_ore" + } + ], + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/lead", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/nickel_ore.json b/src/generated/resources/data/create/recipes/milling/nickel_ore.json new file mode 100644 index 000000000..3e113bbe3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/nickel_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/nickel" + } + ], + "results": [ + { + "item": "create:crushed_nickel_ore" + } + ], + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/nickel", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/osmium_ore.json b/src/generated/resources/data/create/recipes/milling/osmium_ore.json new file mode 100644 index 000000000..b6969f922 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/osmium_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/osmium" + } + ], + "results": [ + { + "item": "create:crushed_osmium_ore" + } + ], + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/osmium", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/platinum_ore.json b/src/generated/resources/data/create/recipes/milling/platinum_ore.json new file mode 100644 index 000000000..9f71f1a4c --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/platinum_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/platinum" + } + ], + "results": [ + { + "item": "create:crushed_platinum_ore" + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/platinum", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/quicksilver_ore.json b/src/generated/resources/data/create/recipes/milling/quicksilver_ore.json new file mode 100644 index 000000000..14e920f10 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/quicksilver_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/quicksilver" + } + ], + "results": [ + { + "item": "create:crushed_quicksilver_ore" + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/quicksilver", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/silver_ore.json b/src/generated/resources/data/create/recipes/milling/silver_ore.json new file mode 100644 index 000000000..57c73480f --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/silver_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/silver" + } + ], + "results": [ + { + "item": "create:crushed_silver_ore" + } + ], + "processingTime": 300, + "conditions": [ + { + "value": { + "tag": "forge:ores/silver", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/tin_ore.json b/src/generated/resources/data/create/recipes/milling/tin_ore.json new file mode 100644 index 000000000..1c2178db4 --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/tin_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/tin" + } + ], + "results": [ + { + "item": "create:crushed_tin_ore" + } + ], + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/tin", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/uranium_ore.json b/src/generated/resources/data/create/recipes/milling/uranium_ore.json new file mode 100644 index 000000000..38da4894d --- /dev/null +++ b/src/generated/resources/data/create/recipes/milling/uranium_ore.json @@ -0,0 +1,23 @@ +{ + "type": "create:milling", + "ingredients": [ + { + "tag": "forge:ores/uranium" + } + ], + "results": [ + { + "item": "create:crushed_uranium_ore" + } + ], + "processingTime": 400, + "conditions": [ + { + "value": { + "tag": "forge:ores/uranium", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/zinc_ore.json b/src/generated/resources/data/create/recipes/milling/zinc_ore.json index 2b8242927..f2ff77f97 100644 --- a/src/generated/resources/data/create/recipes/milling/zinc_ore.json +++ b/src/generated/resources/data/create/recipes/milling/zinc_ore.json @@ -10,5 +10,14 @@ "item": "create:crushed_zinc_ore" } ], - "processingTime": 350 + "processingTime": 350, + "conditions": [ + { + "value": { + "tag": "forge:ores/zinc", + "type": "forge:tag_empty" + }, + "type": "forge:not" + } + ] } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..5844e4fd8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_aluminum_ore" + }, + "result": "silents_mechanisms:aluminum_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json new file mode 100644 index 000000000..e76df0c7d --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_aluminum_ore" + }, + "result": "immersiveengineering:ingot_aluminum", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json new file mode 100644 index 000000000..c204213ef --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_lead_ore" + }, + "result": "immersiveengineering:ingot_lead", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json new file mode 100644 index 000000000..1beebd355 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_nickel_ore" + }, + "result": "immersiveengineering:ingot_nickel", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json new file mode 100644 index 000000000..02570ae93 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_silver_ore" + }, + "result": "immersiveengineering:ingot_silver", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json new file mode 100644 index 000000000..a036fdfa2 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_uranium_ore" + }, + "result": "immersiveengineering:ingot_uranium", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..389c5124f --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_lead_ore" + }, + "result": "mysticalworld:lead_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..de1333398 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_lead_ore" + }, + "result": "silents_mechanisms:lead_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..536c7c08f --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_nickel_ore" + }, + "result": "silents_mechanisms:nickel_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/osmium_ingot_compat_mekanism.json b/src/generated/resources/data/create/recipes/smelting/osmium_ingot_compat_mekanism.json new file mode 100644 index 000000000..b522da67c --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/osmium_ingot_compat_mekanism.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_osmium_ore" + }, + "result": "mekanism:osmium_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "mekanism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..1261866bb --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_platinum_ore" + }, + "result": "silents_mechanisms:platinum_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..987ed26a8 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_quicksilver_ore" + }, + "result": "mysticalworld:quicksilver_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..e59c959e7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_silver_ore" + }, + "result": "mysticalworld:silver_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..6e2cfbce5 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_silver_ore" + }, + "result": "silents_mechanisms:silver_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mekanism.json b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mekanism.json new file mode 100644 index 000000000..c5f7205c7 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mekanism.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_tin_ore" + }, + "result": "mekanism:tin_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "mekanism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json new file mode 100644 index 000000000..2249b2127 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_tin_ore" + }, + "result": "mysticalworld:tin_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..3b8f7f777 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_tin_ore" + }, + "result": "silents_mechanisms:tin_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json new file mode 100644 index 000000000..3084e8b05 --- /dev/null +++ b/src/generated/resources/data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "create:crushed_uranium_ore" + }, + "result": "silents_mechanisms:uranium_ingot", + "experience": 0.1, + "cookingtime": 200, + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json new file mode 100644 index 000000000..e88525be6 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_aluminum_ore" + } + ], + "results": [ + { + "item": "immersiveengineering:nugget_aluminum", + "count": 10 + }, + { + "item": "immersiveengineering:nugget_aluminum", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json new file mode 100644 index 000000000..71bcde052 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_lead_ore" + } + ], + "results": [ + { + "item": "immersiveengineering:nugget_lead", + "count": 10 + }, + { + "item": "immersiveengineering:nugget_lead", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json new file mode 100644 index 000000000..03d9eaa3e --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_nickel_ore" + } + ], + "results": [ + { + "item": "immersiveengineering:nugget_nickel", + "count": 10 + }, + { + "item": "immersiveengineering:nugget_nickel", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json new file mode 100644 index 000000000..5b24d6a99 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_silver_ore" + } + ], + "results": [ + { + "item": "immersiveengineering:nugget_silver", + "count": 10 + }, + { + "item": "immersiveengineering:nugget_silver", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json new file mode 100644 index 000000000..8407663b3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_uranium_ore" + } + ], + "results": [ + { + "item": "immersiveengineering:nugget_uranium", + "count": 10 + }, + { + "item": "immersiveengineering:nugget_uranium", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "immersiveengineering", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_osmium_ore.json b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_osmium_ore.json new file mode 100644 index 000000000..a01ea54c9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_osmium_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_osmium_ore" + } + ], + "results": [ + { + "item": "mekanism:osmium_nugget", + "count": 10 + }, + { + "item": "mekanism:osmium_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "mekanism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_tin_ore.json b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_tin_ore.json new file mode 100644 index 000000000..4f04dbf57 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_tin_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_tin_ore" + } + ], + "results": [ + { + "item": "mekanism:tin_nugget", + "count": 10 + }, + { + "item": "mekanism:tin_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "mekanism", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json new file mode 100644 index 000000000..3361263fd --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_lead_ore" + } + ], + "results": [ + { + "item": "mysticalworld:lead_nugget", + "count": 10 + }, + { + "item": "mysticalworld:lead_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json new file mode 100644 index 000000000..817c1636d --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_quicksilver_ore" + } + ], + "results": [ + { + "item": "mysticalworld:quicksilver_nugget", + "count": 10 + }, + { + "item": "mysticalworld:quicksilver_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json new file mode 100644 index 000000000..6f08f1cf9 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_silver_ore" + } + ], + "results": [ + { + "item": "mysticalworld:silver_nugget", + "count": 10 + }, + { + "item": "mysticalworld:silver_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json new file mode 100644 index 000000000..d2b63a94f --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_tin_ore" + } + ], + "results": [ + { + "item": "mysticalworld:tin_nugget", + "count": 10 + }, + { + "item": "mysticalworld:tin_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "mysticalworld", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json new file mode 100644 index 000000000..ebc8ed9a3 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_aluminum_ore" + } + ], + "results": [ + { + "item": "silents_mechanisms:aluminum_nugget", + "count": 10 + }, + { + "item": "silents_mechanisms:aluminum_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json new file mode 100644 index 000000000..5da948065 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_lead_ore" + } + ], + "results": [ + { + "item": "silents_mechanisms:lead_nugget", + "count": 10 + }, + { + "item": "silents_mechanisms:lead_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json new file mode 100644 index 000000000..9015c0579 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_nickel_ore" + } + ], + "results": [ + { + "item": "silents_mechanisms:nickel_nugget", + "count": 10 + }, + { + "item": "silents_mechanisms:nickel_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json new file mode 100644 index 000000000..4a463a10a --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_platinum_ore" + } + ], + "results": [ + { + "item": "silents_mechanisms:platinum_nugget", + "count": 10 + }, + { + "item": "silents_mechanisms:platinum_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json new file mode 100644 index 000000000..77d1b5b24 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_silver_ore" + } + ], + "results": [ + { + "item": "silents_mechanisms:silver_nugget", + "count": 10 + }, + { + "item": "silents_mechanisms:silver_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json new file mode 100644 index 000000000..5ebf55141 --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_tin_ore" + } + ], + "results": [ + { + "item": "silents_mechanisms:tin_nugget", + "count": 10 + }, + { + "item": "silents_mechanisms:tin_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json new file mode 100644 index 000000000..5da13a4ac --- /dev/null +++ b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json @@ -0,0 +1,25 @@ +{ + "type": "create:splashing", + "ingredients": [ + { + "item": "create:crushed_uranium_ore" + } + ], + "results": [ + { + "item": "silents_mechanisms:uranium_nugget", + "count": 10 + }, + { + "item": "silents_mechanisms:uranium_nugget", + "count": 5, + "chance": 0.5 + } + ], + "conditions": [ + { + "modid": "silents_mechanisms", + "type": "forge:mod_loaded" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/crushed_ores.json b/src/generated/resources/data/create/tags/items/crushed_ores.json index 86d103722..69cc6ed10 100644 --- a/src/generated/resources/data/create/tags/items/crushed_ores.json +++ b/src/generated/resources/data/create/tags/items/crushed_ores.json @@ -5,6 +5,15 @@ "create:crushed_gold_ore", "create:crushed_copper_ore", "create:crushed_zinc_ore", - "create:crushed_brass" + "create:crushed_brass", + "create:crushed_osmium_ore", + "create:crushed_platinum_ore", + "create:crushed_silver_ore", + "create:crushed_tin_ore", + "create:crushed_lead_ore", + "create:crushed_quicksilver_ore", + "create:crushed_aluminum_ore", + "create:crushed_uranium_ore", + "create:crushed_nickel_ore" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates.json b/src/generated/resources/data/forge/tags/items/plates.json index c294488df..3ba58600a 100644 --- a/src/generated/resources/data/forge/tags/items/plates.json +++ b/src/generated/resources/data/forge/tags/items/plates.json @@ -4,6 +4,7 @@ "create:copper_sheet", "create:brass_sheet", "create:iron_sheet", - "create:golden_sheet" + "create:golden_sheet", + "create:lapis_sheet" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates/lapis_lazuli.json b/src/generated/resources/data/forge/tags/items/plates/lapis_lazuli.json new file mode 100644 index 000000000..b9f6147a1 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/plates/lapis_lazuli.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "create:lapis_sheet" + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index a779c7aae..d27f62926 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -11,6 +11,7 @@ import static com.simibubi.create.content.AllSections.LOGISTICS; import static com.simibubi.create.content.AllSections.MATERIALS; import static com.simibubi.create.content.AllSections.SCHEMATICS; +import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MinecartContraptionItem; import com.simibubi.create.content.contraptions.components.structureMovement.train.MinecartCouplingItem; @@ -43,12 +44,14 @@ import com.simibubi.create.content.schematics.item.SchematicAndQuillItem; import com.simibubi.create.content.schematics.item.SchematicItem; import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.CreateRegistrate; +import com.simibubi.create.foundation.item.TagDependentIngredientItem; import com.simibubi.create.foundation.item.TooltipHelper; import com.tterrag.registrate.util.entry.ItemEntry; import net.minecraft.item.Item; import net.minecraft.item.Rarity; import net.minecraft.tags.Tag; +import net.minecraft.util.ResourceLocation; public class AllItems { @@ -70,14 +73,26 @@ public class AllItems { BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass"), PLATES.tag), IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron"), PLATES.tag), GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), PLATES.tag), - LAPIS_SHEET = ingredient("lapis_sheet"), + LAPIS_SHEET = taggedIngredient("lapis_sheet", forgeItemTag("plates/lapis_lazuli"), PLATES.tag), CRUSHED_IRON = taggedIngredient("crushed_iron_ore", CRUSHED_ORES.tag), CRUSHED_GOLD = taggedIngredient("crushed_gold_ore", CRUSHED_ORES.tag), CRUSHED_COPPER = taggedIngredient("crushed_copper_ore", CRUSHED_ORES.tag), CRUSHED_ZINC = taggedIngredient("crushed_zinc_ore", CRUSHED_ORES.tag), - CRUSHED_BRASS = taggedIngredient("crushed_brass", CRUSHED_ORES.tag), + CRUSHED_BRASS = taggedIngredient("crushed_brass", CRUSHED_ORES.tag); + public static final ItemEntry + CRUSHED_OSMIUM = compatCrushedOre("osmium"), + CRUSHED_PLATINUM = compatCrushedOre("platinum"), + CRUSHED_SILVER = compatCrushedOre("silver"), + CRUSHED_TIN = compatCrushedOre("tin"), + CRUSHED_LEAD = compatCrushedOre("lead"), + CRUSHED_QUICKSILVER = compatCrushedOre("quicksilver"), + CRUSHED_BAUXITE = compatCrushedOre("aluminum"), + CRUSHED_URANIUM = compatCrushedOre("uranium"), + CRUSHED_NICKEL = compatCrushedOre("nickel"); + + public static final ItemEntry ANDESITE_ALLOY = ingredient("andesite_alloy"), COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), CREATE_INGOTS.tag), ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), CREATE_INGOTS.tag), @@ -258,6 +273,14 @@ public class AllItems { .register(); } + private static ItemEntry compatCrushedOre(String metalName) { + return REGISTRATE + .item("crushed_" + metalName + "_ore", + props -> new TagDependentIngredientItem(props, new ResourceLocation("forge", "ores/" + metalName))) + .tag(AllItemTags.CRUSHED_ORES.tag) + .register(); + } + // Load this class public static void register() {} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java index cd3ef48eb..8303e0686 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java @@ -8,6 +8,7 @@ import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.Pair; import net.minecraft.item.ItemStack; import net.minecraft.nbt.JsonToNBT; @@ -24,11 +25,19 @@ public class ProcessingOutput { private final ItemStack stack; private final float chance; + private Pair compatDatagenOutput; + public ProcessingOutput(ItemStack stack, float chance) { this.stack = stack; this.chance = chance; } + public ProcessingOutput(Pair item, float chance) { + this.stack = ItemStack.EMPTY; + this.compatDatagenOutput = item; + this.chance = chance; + } + public ItemStack getStack() { return stack; } @@ -51,14 +60,15 @@ public class ProcessingOutput { public JsonElement serialize() { JsonObject json = new JsonObject(); - json.addProperty("item", stack.getItem() - .getRegistryName() - .toString()); - if (stack.getCount() != 1) { - json.addProperty("count", stack.getCount()); - } + ResourceLocation resourceLocation = compatDatagenOutput == null ? stack.getItem() + .getRegistryName() : compatDatagenOutput.getFirst(); + json.addProperty("item", resourceLocation.toString()); + int count = compatDatagenOutput == null ? stack.getCount() : compatDatagenOutput.getSecond(); + if (count != 1) + json.addProperty("count", count); if (stack.hasTag()) - json.add("nbt", new JsonParser().parse(stack.getTag().toString())); + json.add("nbt", new JsonParser().parse(stack.getTag() + .toString())); if (chance != 1) json.addProperty("chance", chance); return json; diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java index 1a68ddc6a..cd30fdcd8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java @@ -11,6 +11,7 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidIngredient; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.Pair; import net.minecraft.data.IFinishedRecipe; import net.minecraft.fluid.Fluid; @@ -149,17 +150,22 @@ public class ProcessingRecipeBuilder> { public ProcessingRecipeBuilder output(ItemStack output) { return output(1, output); } - + public ProcessingRecipeBuilder output(float chance, ItemStack output) { params.results.add(new ProcessingOutput(output, chance)); return this; } + public ProcessingRecipeBuilder output(float chance, String modId, String registryName, int amount) { + params.results.add(new ProcessingOutput(Pair.of(new ResourceLocation(modId, registryName), amount), chance)); + return this; + } + public ProcessingRecipeBuilder output(Fluid fluid, int amount) { fluid = FluidHelper.convertToStill(fluid); return output(new FluidStack(fluid, amount)); } - + public ProcessingRecipeBuilder output(FluidStack fluidStack) { params.fluidResults.add(fluidStack); return this; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java index 035fcc2f8..67f4b3129 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java @@ -20,6 +20,8 @@ import net.minecraftforge.common.Tags; public abstract class CreateRecipeProvider extends RecipeProvider { + public final String MEK = "mekanism", MW = "mysticalworld", SM = "silents_mechanisms", IE = "immersiveengineering"; + final List all = new ArrayList<>(); public CreateRecipeProvider(DataGenerator p_i48262_1_) { 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 2b1e91a29..8646e297e 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 @@ -11,6 +11,8 @@ import net.minecraft.data.DataGenerator; import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.tags.ItemTags; +import net.minecraftforge.common.crafting.conditions.NotCondition; +import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; public class CrushingRecipeGen extends ProcessingRecipeGen { @@ -51,6 +53,16 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { IRON_ORE = metalOre("iron", AllItems.CRUSHED_IRON, 400), GOLD_ORE = metalOre("gold", AllItems.CRUSHED_GOLD, 300), + OSMIUM_ORE = metalOre("osmium", AllItems.CRUSHED_OSMIUM, 400), + PLATINUM_ORE = metalOre("platinum", AllItems.CRUSHED_PLATINUM, 300), + SILVER_ORE = metalOre("silver", AllItems.CRUSHED_SILVER, 300), + TIN_ORE = metalOre("tin", AllItems.CRUSHED_TIN, 350), + QUICKSILVER_ORE = metalOre("quicksilver", AllItems.CRUSHED_QUICKSILVER, 300), + LEAD_ORE = metalOre("lead", AllItems.CRUSHED_LEAD, 400), + ALUMINUM_ORE = metalOre("aluminum", AllItems.CRUSHED_BAUXITE, 300), + URANIUM_ORE = metalOre("uranium", AllItems.CRUSHED_URANIUM, 400), + NICKEL_ORE = metalOre("nickel", AllItems.CRUSHED_NICKEL, 350), + NETHER_QUARTZ_ORE = create(() -> Blocks.NETHER_QUARTZ_ORE, b -> b.duration(350) .output(Items.QUARTZ, 2) .output(.5f, Items.QUARTZ, 4) @@ -75,7 +87,7 @@ 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) @@ -137,8 +149,9 @@ public class CrushingRecipeGen extends ProcessingRecipeGen { ; - protected GeneratedRecipe metalOre(String name, ItemEntry crushed, int duration) { + protected GeneratedRecipe metalOre(String name, ItemEntry crushed, int duration) { return create(name + "_ore", b -> b.duration(duration) + .withCondition(new NotCondition(new TagEmptyCondition("forge", "ores/" + name))) .require(AllTags.forgeItemTag("ores/" + name)) .output(crushed.get()) .output(.3f, crushed.get(), 2) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java index 2064e4103..1753f2874 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java @@ -11,6 +11,8 @@ import net.minecraft.data.DataGenerator; import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.tags.ItemTags; +import net.minecraftforge.common.crafting.conditions.NotCondition; +import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; public class MillingRecipeGen extends ProcessingRecipeGen { @@ -45,6 +47,16 @@ public class MillingRecipeGen extends ProcessingRecipeGen { IRON_ORE = metalOre("iron", AllItems.CRUSHED_IRON, 400), GOLD_ORE = metalOre("gold", AllItems.CRUSHED_GOLD, 300), + OSMIUM_ORE = metalOre("osmium", AllItems.CRUSHED_OSMIUM, 400), + PLATINUM_ORE = metalOre("platinum", AllItems.CRUSHED_PLATINUM, 300), + SILVER_ORE = metalOre("silver", AllItems.CRUSHED_SILVER, 300), + TIN_ORE = metalOre("tin", AllItems.CRUSHED_TIN, 350), + QUICKSILVER_ORE = metalOre("quicksilver", AllItems.CRUSHED_QUICKSILVER, 300), + LEAD_ORE = metalOre("lead", AllItems.CRUSHED_LEAD, 400), + ALUMINUM_ORE = metalOre("aluminum", AllItems.CRUSHED_BAUXITE, 300), + URANIUM_ORE = metalOre("uranium", AllItems.CRUSHED_URANIUM, 400), + NICKEL_ORE = metalOre("nickel", AllItems.CRUSHED_NICKEL, 350), + WHEAT = create(() -> Items.WHEAT, b -> b.duration(150) .output(AllItems.WHEAT_FLOUR.get()) .output(.25f, AllItems.WHEAT_FLOUR.get(), 2) @@ -147,11 +159,11 @@ public class MillingRecipeGen extends ProcessingRecipeGen { POPPY = create(() -> Blocks.POPPY, b -> b.duration(50) .output(Items.RED_DYE, 2) .output(.05f, Items.GREEN_DYE)), - + DANDELION = create(() -> Blocks.DANDELION, b -> b.duration(50) .output(Items.YELLOW_DYE, 2) .output(.05f, Items.YELLOW_DYE)), - + CORNFLOWER = create(() -> Blocks.CORNFLOWER, b -> b.duration(50) .output(Items.BLUE_DYE, 2)), @@ -182,8 +194,9 @@ public class MillingRecipeGen extends ProcessingRecipeGen { ; - protected GeneratedRecipe metalOre(String name, ItemEntry crushed, int duration) { + protected GeneratedRecipe metalOre(String name, ItemEntry crushed, int duration) { return create(name + "_ore", b -> b.duration(duration) + .withCondition(new NotCondition(new TagEmptyCondition("forge", "ores/" + name))) .require(AllTags.forgeItemTag("ores/" + name)) .output(crushed.get())); } 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 1265126f4..135737ba6 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 @@ -1,10 +1,13 @@ package com.simibubi.create.foundation.data.recipe; +import java.util.ArrayList; import java.util.List; import java.util.function.UnaryOperator; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.AllTags; @@ -14,6 +17,7 @@ import com.simibubi.create.content.AllSections; import com.simibubi.create.content.palettes.AllPaletteBlocks; import com.simibubi.create.foundation.utility.Lang; import com.tterrag.registrate.util.entry.BlockEntry; +import com.tterrag.registrate.util.entry.ItemEntry; import com.tterrag.registrate.util.entry.ItemProviderEntry; import net.minecraft.advancements.criterion.ItemPredicate; @@ -21,6 +25,7 @@ import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.data.CookingRecipeBuilder; import net.minecraft.data.DataGenerator; +import net.minecraft.data.IFinishedRecipe; import net.minecraft.data.ShapedRecipeBuilder; import net.minecraft.data.ShapelessRecipeBuilder; import net.minecraft.item.Item; @@ -33,6 +38,10 @@ import net.minecraft.tags.Tag; import net.minecraft.util.IItemProvider; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.Tags; +import net.minecraftforge.common.crafting.CraftingHelper; +import net.minecraftforge.common.crafting.conditions.ICondition; +import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; +import net.minecraftforge.common.crafting.conditions.NotCondition; @SuppressWarnings("unused") public class StandardRecipeGen extends CreateRecipeProvider { @@ -935,7 +944,17 @@ public class StandardRecipeGen extends CreateRecipeProvider { CRUSHED_GOLD = blastCrushedMetal(() -> Items.GOLD_INGOT, AllItems.CRUSHED_GOLD::get), CRUSHED_COPPER = blastCrushedMetal(AllItems.COPPER_INGOT::get, AllItems.CRUSHED_COPPER::get), CRUSHED_ZINC = blastCrushedMetal(AllItems.ZINC_INGOT::get, AllItems.CRUSHED_ZINC::get), - CRUSHED_BRASS = blastCrushedMetal(AllItems.BRASS_INGOT::get, AllItems.CRUSHED_BRASS::get) + CRUSHED_BRASS = blastCrushedMetal(AllItems.BRASS_INGOT::get, AllItems.CRUSHED_BRASS::get), + + CRUSHED_OSMIUM = blastModdedCrushedMetal(AllItems.CRUSHED_OSMIUM, "osmium", MEK), + CRUSHED_PLATINUM = blastModdedCrushedMetal(AllItems.CRUSHED_PLATINUM, "platinum", SM), + CRUSHED_SILVER = blastModdedCrushedMetal(AllItems.CRUSHED_SILVER, "silver", MW, IE, SM), + CRUSHED_TIN = blastModdedCrushedMetal(AllItems.CRUSHED_TIN, "tin", MEK, MW, SM), + CRUSHED_LEAD = blastModdedCrushedMetal(AllItems.CRUSHED_LEAD, "lead", MW, IE, SM), + CRUSHED_QUICKSILVER = blastModdedCrushedMetal(AllItems.CRUSHED_QUICKSILVER, "quicksilver", MW), + CRUSHED_BAUXITE = blastModdedCrushedMetal(AllItems.CRUSHED_BAUXITE, "aluminum", IE, SM), + CRUSHED_URANIUM = blastModdedCrushedMetal(AllItems.CRUSHED_URANIUM, "uranium", IE, SM), + CRUSHED_NICKEL = blastModdedCrushedMetal(AllItems.CRUSHED_NICKEL, "nickel", IE, SM) ; @@ -959,6 +978,10 @@ public class StandardRecipeGen extends CreateRecipeProvider { return new GeneratedRecipeBuilder(currentFolder, result); } + GeneratedRecipeBuilder create(ResourceLocation result) { + return new GeneratedRecipeBuilder(currentFolder, result); + } + GeneratedRecipeBuilder create(ItemProviderEntry result) { return create(result::get); } @@ -971,6 +994,18 @@ public class StandardRecipeGen extends CreateRecipeProvider { .inBlastFurnace(); } + GeneratedRecipe blastModdedCrushedMetal(ItemEntry ingredient, String metalName, String... mods) { + for (String modId : mods) { + String ingot = modId.equals(IE) ? "ingot_" + metalName : metalName + "_ingot"; + create(new ResourceLocation(modId, ingot)).withSuffix("_compat_" + modId) + .whenModLoaded(modId) + .viaCooking(ingredient::get) + .rewardXP(.1f) + .inBlastFurnace(); + } + return null; + } + GeneratedRecipe blastMetalOre(Supplier result, Tag ore) { return create(result::get).withSuffix("_from_ore") .viaCookingTag(() -> ore) @@ -1035,16 +1070,29 @@ public class StandardRecipeGen extends CreateRecipeProvider { private String path; private String suffix; private Supplier result; + private ResourceLocation compatDatagenOutput; + List recipeConditions; + private Supplier unlockedBy; private int amount; - public GeneratedRecipeBuilder(String path, Supplier result) { + private GeneratedRecipeBuilder(String path) { this.path = path; + this.recipeConditions = new ArrayList<>(); this.suffix = ""; - this.result = result; this.amount = 1; } + public GeneratedRecipeBuilder(String path, Supplier result) { + this(path); + this.result = result; + } + + public GeneratedRecipeBuilder(String path, ResourceLocation result) { + this(path); + this.compatDatagenOutput = result; + } + GeneratedRecipeBuilder returns(int amount) { this.amount = amount; return this; @@ -1064,6 +1112,19 @@ public class StandardRecipeGen extends CreateRecipeProvider { return this; } + GeneratedRecipeBuilder whenModLoaded(String modid) { + return withCondition(new ModLoadedCondition(modid)); + } + + GeneratedRecipeBuilder whenModMissing(String modid) { + return withCondition(new NotCondition(new ModLoadedCondition(modid))); + } + + GeneratedRecipeBuilder withCondition(ICondition condition) { + recipeConditions.add(condition); + return this; + } + GeneratedRecipeBuilder withSuffix(String suffix) { this.suffix = suffix; return this; @@ -1088,17 +1149,17 @@ public class StandardRecipeGen extends CreateRecipeProvider { } private ResourceLocation createSimpleLocation(String recipeType) { - return Create.asResource(recipeType + "/" + result.get() - .asItem() - .getRegistryName() - .getPath() + suffix); + return Create.asResource(recipeType + "/" + getRegistryName().getPath() + suffix); } private ResourceLocation createLocation(String recipeType) { - return Create.asResource(recipeType + "/" + path + "/" + result.get() + return Create.asResource(recipeType + "/" + path + "/" + getRegistryName().getPath() + suffix); + } + + private ResourceLocation getRegistryName() { + return compatDatagenOutput == null ? result.get() .asItem() - .getRegistryName() - .getPath() + suffix); + .getRegistryName() : compatDatagenOutput; } GeneratedCookingRecipeBuilder viaCooking(Supplier item) { @@ -1169,17 +1230,22 @@ public class StandardRecipeGen extends CreateRecipeProvider { private GeneratedRecipe create(CookingRecipeSerializer serializer, UnaryOperator builder, float cookingTimeModifier) { return register(consumer -> { - CookingRecipeBuilder b = builder.apply(CookingRecipeBuilder.cookingRecipe(ingredient.get(), - result.get(), exp, (int) (cookingTime * cookingTimeModifier), serializer)); + boolean isOtherMod = compatDatagenOutput != null; + + CookingRecipeBuilder b = builder.apply( + CookingRecipeBuilder.cookingRecipe(ingredient.get(), isOtherMod ? Items.DIRT : result.get(), + exp, (int) (cookingTime * cookingTimeModifier), serializer)); if (unlockedBy != null) b.addCriterion("has_item", hasItem(unlockedBy.get())); - b.build(consumer, createSimpleLocation(serializer.getRegistryName() + b.build(result -> { + consumer.accept( + isOtherMod ? new ModdedCookingRecipeResult(result, compatDatagenOutput, recipeConditions) + : result); + }, createSimpleLocation(serializer.getRegistryName() .getPath())); }); } - } - } @Override @@ -1191,4 +1257,49 @@ public class StandardRecipeGen extends CreateRecipeProvider { super(p_i48262_1_); } + private static class ModdedCookingRecipeResult implements IFinishedRecipe { + + private IFinishedRecipe wrapped; + private ResourceLocation outputOverride; + private List conditions; + + public ModdedCookingRecipeResult(IFinishedRecipe wrapped, ResourceLocation outputOverride, + List conditions) { + this.wrapped = wrapped; + this.outputOverride = outputOverride; + this.conditions = conditions; + } + + @Override + public ResourceLocation getID() { + return wrapped.getID(); + } + + @Override + public IRecipeSerializer getSerializer() { + return wrapped.getSerializer(); + } + + @Override + public JsonObject getAdvancementJson() { + return wrapped.getAdvancementJson(); + } + + @Override + public ResourceLocation getAdvancementID() { + return wrapped.getAdvancementID(); + } + + @Override + public void serialize(JsonObject object) { + wrapped.serialize(object); + object.addProperty("result", outputOverride.toString()); + + JsonArray conds = new JsonArray(); + conditions.forEach(c -> conds.add(CraftingHelper.serialize(c))); + object.add("conditions", conds); + } + + } + } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java index 9efcdda26..3c895424c 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java @@ -12,6 +12,7 @@ import net.minecraft.block.Blocks; import net.minecraft.data.DataGenerator; import net.minecraft.item.Item; import net.minecraft.item.Items; +import net.minecraft.item.crafting.Ingredient; import net.minecraft.tags.ItemTags; import net.minecraft.util.IItemProvider; import net.minecraftforge.common.Tags; @@ -42,6 +43,16 @@ public class WashingRecipeGen extends ProcessingRecipeGen { CRUSHED_GOLD = crushedOre(AllItems.CRUSHED_GOLD, () -> Items.GOLD_NUGGET), CRUSHED_IRON = crushedOre(AllItems.CRUSHED_IRON, () -> Items.IRON_NUGGET), + CRUSHED_OSMIUM = moddedCrushedOre(AllItems.CRUSHED_OSMIUM, "osmium", MEK), + CRUSHED_PLATINUM = moddedCrushedOre(AllItems.CRUSHED_PLATINUM, "platinum", SM), + CRUSHED_SILVER = moddedCrushedOre(AllItems.CRUSHED_SILVER, "silver", MW, IE, SM), + CRUSHED_TIN = moddedCrushedOre(AllItems.CRUSHED_TIN, "tin", MEK, MW, SM), + CRUSHED_LEAD = moddedCrushedOre(AllItems.CRUSHED_LEAD, "lead", MW, IE, SM), + CRUSHED_QUICKSILVER = moddedCrushedOre(AllItems.CRUSHED_QUICKSILVER, "quicksilver", MW), + CRUSHED_BAUXITE = moddedCrushedOre(AllItems.CRUSHED_BAUXITE, "aluminum", IE, SM), + CRUSHED_URANIUM = moddedCrushedOre(AllItems.CRUSHED_URANIUM, "uranium", IE, SM), + CRUSHED_NICKEL = moddedCrushedOre(AllItems.CRUSHED_NICKEL, "nickel", IE, SM), + ICE = convert(Blocks.ICE, Blocks.PACKED_ICE), MAGMA_BLOCK = convert(Blocks.MAGMA_BLOCK, Blocks.OBSIDIAN), WHITE_CONCRETE = convert(Blocks.WHITE_CONCRETE_POWDER, Blocks.WHITE_CONCRETE), @@ -75,6 +86,19 @@ public class WashingRecipeGen extends ProcessingRecipeGen { .output(.5f, nugget.get(), 5)); } + public GeneratedRecipe moddedCrushedOre(ItemEntry crushed, String metalName, String... mods) { + for (String modId : mods) { + String nugget = modId.equals(IE) ? "nugget_" + metalName : metalName + "_nugget"; + create(modId + "/" + crushed.getId() + .getPath(), + b -> b.withItemIngredients(Ingredient.fromItems(crushed::get)) + .output(1, modId, nugget, 10) + .output(.5f, modId, nugget, 5) + .whenModLoaded(modId)); + } + return null; + } + public WashingRecipeGen(DataGenerator p_i48262_1_) { super(p_i48262_1_); } diff --git a/src/main/java/com/simibubi/create/foundation/item/TagDependentIngredientItem.java b/src/main/java/com/simibubi/create/foundation/item/TagDependentIngredientItem.java new file mode 100644 index 000000000..6e7802fd9 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/TagDependentIngredientItem.java @@ -0,0 +1,33 @@ +package com.simibubi.create.foundation.item; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.Tag; +import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; + +public class TagDependentIngredientItem extends Item { + + private ResourceLocation tag; + + public TagDependentIngredientItem(Properties p_i48487_1_, ResourceLocation tag) { + super(p_i48487_1_); + this.tag = tag; + } + + @Override + public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { + if (!shouldHide()) + super.fillItemGroup(p_150895_1_, p_150895_2_); + } + + public boolean shouldHide() { + Tag tag = ItemTags.getCollection() + .get(this.tag); + return tag == null || tag.getAllElements() + .isEmpty(); + } + +} diff --git a/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png b/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1542d00dfae889963e415cf7b686b8e47ff022 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}T0G|+7ARX;ub#wmoH+#1F*_do@t?S52t&Z?;Fw!~E-wBj8{bHm9q_|6h z{DS|(0fU!6<0qgnXMsm#F#`kNeh_A~U=3CQ3Z{CxIEH8h_nvbUI&8qfe1MCE<^TVK zq8s&3F1>niTN&H2`Cm`{XP9%mf$L0Z5wpz|U7=Fm140?uu~RsNdIR*O*g4F-4t{uY zFR^g-cgEKt{%MJBV!@9iOErJXUs<=?hfVG$Yj!Q;Un%yUj_C4fKnoc>UHx3vIVCg! E0J4K#DgXcg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/item/crushed_lead_ore.png b/src/main/resources/assets/create/textures/item/crushed_lead_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..c105931d16636911e91d849aa50ae37430ee12cb GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}H0G|+7Agym;rL19KZx_-~-XP&(!4F?XBx znwX-npuHCBblywPJ?TH`VQu1zursaUb&lWJS4golKU@1a4QL^Qr>mdKI;Vst0Q&S> A_5c6? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png b/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad1b00358badbfe543c418ea14d1c1ad423ac32 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}T0G|+7AYEJ>7#`~Q{rAOBUk;x-+Wq|T!uiuYy*(^9uF3++=49Pk1f;l2 zg8YL2!vTYrKjSB$FlT{BWHAE+-vJP2%(~Xe2^389ba4#P2<|=W&DCHaz#K67%$M^2 z%(FFDJaBW?d@}J;^4?Fv4Dz4YGz1iFCa5hnmy>*8!m0Qzv4C?6=gP^_LDMo9e`~T- zwO79y5MUJ9T%sS5%v1m5cCB;j^i!@~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png b/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..2a7964d95d5c7e5db113e18de4b5db77b34ec6a8 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}H0G|+7AYItJIxV;9=7ZOZH=LchVf)ezr)uWSOiOPDN+o+A-~m!xB|(0{ z|6zb((;1!fKvB*DkH}&M2EM}}%y>M1MG8*I0S|M)%w3(o`)Lc&T0S~9*HIp4IZjM?-&ZmORvh-)D{NS%G}T0G|+7Ae}XF#*hF1uYdf1^Z);;yU+gr|KGQ$qjuG1BPU;=tjBVfnLvuW zB*-rqCgnPbq7mGC)=`Yfkb^mZIpt8n ze`e`b(swh&YM*XDki74c{Q=AA<_eoCQV#YPMk>f22tCoE;vy-)a;nt3R$o9lq^HTUlJ&r#aj=Ou0aFfrcXGYe-g`+7rGrA(lO44$rjF6*2U Fng9lPV(I_@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png b/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..902960cc6cec793785875ec6ff11847025aaf8fe GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}T0G|+7AZ_m-a`n-pd<}C1tEM{Qf11jM=z?gNdlM^VI;OXKRq7mGCHjwXt0}IOqzH1x4 z+ZSZ2`u@6njz6v?dH*N*hDNS%G}T0G|+7ARUlW`Tzg_8_!<+{QrN&zO%Z1IdyXv#OJqYn0Nzai&7X;fE0I0 zkY6xR85A&h`7?e33Ud~CL>4nJ@ErzW#^d=bKx)%HT^vI+f_u*f@*Pp&V7btDK;hp1 z1F~B@C;z?am!!nsn*H~QF@wc)-c@Zsm6=v-NIdv=l_GCqveECWTOW8Rl+HNT_P4o( zeX}E<_%7c?Rcz|%63PLk*TO>i1AgbcJh5x7&4*|5Yf71Udf4~o_-*P0TFKz)>gTe~ HDWM4f*#T!+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/item/crushed_tin_ore.png b/src/main/resources/assets/create/textures/item/crushed_tin_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..f4bee57d2f4294251bb940eed31c9cbc4c0e35c6 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}H0G|+7Al=m1T3lE%dGeh7`}c3%y7k_@d%u4Dij9c{N^J_(F$YpyB|(0{ z|6zb((;1!fKvB*DkH}&M2EM}}%y>M1MG8L?gKOY&4g%AqUF^i+$hsKkRGc zp8jtOb7Mu%voGQQSOh=h>{ZBOD`w!|@qt%qsu9CR4wi*tH@=;5cy}gqV~^m|p5_3n z-0+lLS9+#w;@3F6d-3WYo`!q$dG2=Y{BTPD#Xp8EFWD6w9=6W_TFBt(>gTe~DWM4f D=6Yw^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png b/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..691cb2af44a4164f93b08cee703ebd5f649c6e04 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}T0G|+7Ano8`S<{!7To_S5xn%N+=HPfQ6Kj3pMb)g1s;*b3=Dh+K$tP>S|=w^Fx}I|F+?M{w>OZl!GObA_x7!gzvXW{ z^6~j|QO);(zopr E0M}|;iU0rr literal 0 HcmV?d00001 diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json new file mode 100644 index 000000000..272894cf2 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "druidcraft:amber_ore" + } + ], + "results": [ + { + "item": "druidcraft:amber", + "count": 2 + }, + { + "item": "druidcraft:amber", + "count": 1, + "chance": 0.5 + }, + { + "item": "minecraft:cobblestone", + "count": 1, + "chance": 0.125 + } + ], + "processingTime": 300 +} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json new file mode 100644 index 000000000..375e7ff5b --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "druidcraft:fiery_glass_ore" + } + ], + "results": [ + { + "item": "druidcraft:fiery_glass", + "count": 8 + }, + { + "item": "druidcraft:fiery_glass", + "count": 6, + "chance": 0.25 + }, + { + "item": "minecraft:cobblestone", + "count": 1, + "chance": 0.125 + } + ], + "processingTime": 300 +} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json new file mode 100644 index 000000000..fa05b1767 --- /dev/null +++ b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json @@ -0,0 +1,31 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "druidcraft" + } + ], + "type": "create:crushing", + "ingredients": [ + { + "item": "druidcraft:moonstone_ore" + } + ], + "results": [ + { + "item": "druidcraft:moonstone", + "count": 2 + }, + { + "item": "druidcraft:moonstone", + "count": 1, + "chance": 0.5 + }, + { + "item": "minecraft:cobblestone", + "count": 1, + "chance": 0.125 + } + ], + "processingTime": 300 +} From 3301f8ff015bb952ca7acce3687fc3655f07c327 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Fri, 4 Dec 2020 23:31:12 +0100 Subject: [PATCH 12/12] Honey, I'm blue! - Evade fluid tinting issues with optifine --- src/generated/resources/.cache/cache | 2 +- .../assets/create/models/block/honey.json | 2 +- .../java/com/simibubi/create/AllFluids.java | 47 ++++++++++++------ .../foundation/data/CreateRegistrate.java | 7 +++ .../create/textures/fluid/honey_flow.png | Bin 17371 -> 3628 bytes .../create/textures/fluid/honey_still.png | Bin 0 -> 247 bytes 6 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 src/main/resources/assets/create/textures/fluid/honey_still.png diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 56c325a36..add2b3215 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -753,7 +753,7 @@ a68cd40ffb769b195437107f4a2c2188b222b74a assets/create/models/block/gray_sail.js 17b651233c62b928f0228562a7f6e7a2b7b2d6b7 assets/create/models/block/green_sail.json 1438b8ce54ac5557b8f10dcef94f3525eae19461 assets/create/models/block/green_seat.json cc7ce9b6bc687ad5027a67c3bf22bdf5bcd71674 assets/create/models/block/green_valve_handle.json -5bbe7e5322020d205d2c60bc14e4b45b317a193c assets/create/models/block/honey.json +5163171ed77af879fa06f290bf24b1bb99735c94 assets/create/models/block/honey.json 9730fcb02f679087e81e24c836751e625be6a298 assets/create/models/block/horizontal_framed_glass.json d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets/create/models/block/horizontal_framed_glass_pane_noside.json 3e975bec02e2670ce2b1868cebcbd780a5ebf3f8 assets/create/models/block/horizontal_framed_glass_pane_noside_alt.json diff --git a/src/generated/resources/assets/create/models/block/honey.json b/src/generated/resources/assets/create/models/block/honey.json index 262271bb6..079948a71 100644 --- a/src/generated/resources/assets/create/models/block/honey.json +++ b/src/generated/resources/assets/create/models/block/honey.json @@ -1,5 +1,5 @@ { "textures": { - "particle": "block/honey_block_top" + "particle": "create:fluid/honey_still" } } \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllFluids.java b/src/main/java/com/simibubi/create/AllFluids.java index 0666e5c72..5f2277b51 100644 --- a/src/main/java/com/simibubi/create/AllFluids.java +++ b/src/main/java/com/simibubi/create/AllFluids.java @@ -10,14 +10,15 @@ import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.entry.RegistryEntry; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderTypeLookup; import net.minecraft.fluid.Fluid; import net.minecraft.fluid.IFluidState; -import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ILightReader; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.ForgeFlowingFluid; public class AllFluids { @@ -39,7 +40,7 @@ public class AllFluids { .register(); public static RegistryEntry HONEY = - REGISTRATE.fluid("honey", new ResourceLocation("block/honey_block_top"), Create.asResource("fluid/honey_flow")) + REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new) .lang(f -> "fluid.create.honey", "Honey") .attributes(b -> b.viscosity(500) .density(1400)) @@ -50,24 +51,23 @@ public class AllFluids { .tag(AllTags.forgeFluidTag("honey")) .register(); - public static RegistryEntry CHOCOLATE = REGISTRATE.standardFluid("chocolate") - .lang(f -> "fluid.create.chocolate", "Chocolate") - .attributes(b -> b.viscosity(500) - .density(1400)) - .properties(p -> p.levelDecreasePerBlock(2) - .tickRate(25) - .slopeFindDistance(3) - .explosionResistance(100f)) - .register(); + public static RegistryEntry CHOCOLATE = + REGISTRATE.standardFluid("chocolate", NoColorFluidAttributes::new) + .lang(f -> "fluid.create.chocolate", "Chocolate") + .attributes(b -> b.viscosity(500) + .density(1400)) + .properties(p -> p.levelDecreasePerBlock(2) + .tickRate(25) + .slopeFindDistance(3) + .explosionResistance(100f)) + .register(); // Load this class public static void register() {} @OnlyIn(Dist.CLIENT) - public static void assignRenderLayers() { - makeTranslucent(HONEY); - } + public static void assignRenderLayers() {} @OnlyIn(Dist.CLIENT) private static void makeTranslucent(RegistryEntry entry) { @@ -90,4 +90,21 @@ public class AllFluids { return null; } + /** + * Removing alpha from tint prevents optifine from forcibly applying biome + * colors to modded fluids (Makes translucent fluids disappear) + */ + private static class NoColorFluidAttributes extends FluidAttributes { + + protected NoColorFluidAttributes(Builder builder, Fluid fluid) { + super(builder, fluid); + } + + @Override + public int getColor(ILightReader world, BlockPos pos) { + return 0x00ffffff; + } + + } + } diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index f619a4dc2..f278611be 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -25,6 +25,7 @@ import com.tterrag.registrate.builders.FluidBuilder; import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.util.NonNullLazyValue; import com.tterrag.registrate.util.entry.RegistryEntry; +import com.tterrag.registrate.util.nullness.NonNullBiFunction; import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; @@ -143,6 +144,12 @@ public class CreateRegistrate extends AbstractRegistrate { return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow")); } + public FluidBuilder standardFluid(String name, + NonNullBiFunction attributesFactory) { + return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow"), + attributesFactory); + } + /* Util */ public static NonNullConsumer connectedTextures(ConnectedTextureBehaviour behavior) { diff --git a/src/main/resources/assets/create/textures/fluid/honey_flow.png b/src/main/resources/assets/create/textures/fluid/honey_flow.png index 2fa7090efa3b7bb716938cbe1e4ec93fd250e3fe..496733dfb820a122ec3d32695a06c117e2632442 100644 GIT binary patch literal 3628 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 literal 0 HcmV?d00001