Merge remote-tracking branch 'origin/mc1.19/dev' into mc1.20.1/dev

This commit is contained in:
simibubi 2023-09-20 19:23:56 +02:00
commit f181799185
105 changed files with 74042 additions and 69299 deletions

View file

@ -52,7 +52,6 @@ minecraft {
client { client {
workingDirectory project.file('run') workingDirectory project.file('run')
arg '-mixin.config=create.mixins.json' arg '-mixin.config=create.mixins.json'
arg '-mixin.config=flywheel.mixins.json'
//jvmArgs '-XX:+UnlockCommercialFeatures' // uncomment for profiling //jvmArgs '-XX:+UnlockCommercialFeatures' // uncomment for profiling
property 'forge.logging.console.level', 'info' property 'forge.logging.console.level', 'info'
mods { mods {
@ -81,6 +80,7 @@ minecraft {
data { data {
workingDirectory project.file('run') workingDirectory project.file('run')
arg '-mixin.config=create.mixins.json'
property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP' property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP'
property 'forge.logging.console.level', 'debug' property 'forge.logging.console.level', 'debug'
args '--mod', 'create', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources') args '--mod', 'create', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources')
@ -201,6 +201,7 @@ dependencies {
// runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.1.1.252") // runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.1.1.252")
// runtimeOnly fg.deobf("maven.modrinth:rubidium:0.5.3") // runtimeOnly fg.deobf("maven.modrinth:rubidium:0.5.3")
// implementation fg.deobf("com.railwayteam.railways:railways-1.18.2-1.1.1:all") { transitive = false } // implementation fg.deobf("com.railwayteam.railways:railways-1.18.2-1.1.1:all") { transitive = false }
// runtimeOnly fg.deobf("maven.modrinth:aether:1.19.2-1.0.0-beta.1.1-forge")
// https://discord.com/channels/313125603924639766/725850371834118214/910619168821354497 // https://discord.com/channels/313125603924639766/725850371834118214/910619168821354497
// Prevent Mixin annotation processor from getting into IntelliJ's annotation processor settings // Prevent Mixin annotation processor from getting into IntelliJ's annotation processor settings

View file

@ -10,6 +10,7 @@
"translation": "src/main/resources/assets/create/lang/%locale_with_underscore%.json", "translation": "src/main/resources/assets/create/lang/%locale_with_underscore%.json",
"languages_mapping": { "languages_mapping": {
"locale_with_underscore": { "locale_with_underscore": {
"be": "be_by",
"cs": "cs_cz", "cs": "cs_cz",
"cy": "cy_gb", "cy": "cy_gb",
"da": "da_dk", "da": "da_dk",
@ -18,6 +19,7 @@
"es-CL": "es_cl", "es-CL": "es_cl",
"es-ES": "es_es", "es-ES": "es_es",
"es-MX": "es_mx", "es-MX": "es_mx",
"et": "et_ee",
"fa": "fa_ir", "fa": "fa_ir",
"fi": "fi_fi", "fi": "fi_fi",
"fr": "fr_fr", "fr": "fr_fr",
@ -41,6 +43,7 @@
"tok": "tok", "tok": "tok",
"tr": "tr_tr", "tr": "tr_tr",
"uk": "uk_ua", "uk": "uk_ua",
"vi": "vi_vn",
"zh-CN": "zh_cn", "zh-CN": "zh_cn",
"zh-TW": "zh_tw", "zh-TW": "zh_tw",
} }

View file

@ -23,7 +23,7 @@ use_parchment = true
# dependency versions # dependency versions
registrate_version = MC1.20-1.3.3 registrate_version = MC1.20-1.3.3
flywheel_minecraft_version = 1.20.1 flywheel_minecraft_version = 1.20.1
flywheel_version = 0.6.10-6 flywheel_version = 0.6.10-7
jei_minecraft_version = 1.20.1 jei_minecraft_version = 1.20.1
jei_version = 15.2.0.22 jei_version = 15.2.0.22
curios_minecraft_version = 1.20.1 curios_minecraft_version = 1.20.1

View file

@ -1,4 +1,4 @@
// 1.20.1 2023-07-04T18:31:12.3951444 Create's Sequenced Assembly Recipes // 1.19.2 2023-09-20T18:40:42.830819 Create's Sequenced Assembly Recipes
dbaca5a5aa312f3bc7b826e51e665d32e798a5d7 data/create/recipes/sequenced_assembly/precision_mechanism.json dbaca5a5aa312f3bc7b826e51e665d32e798a5d7 data/create/recipes/sequenced_assembly/precision_mechanism.json
0cdbd4f583aa0a2aa8f3ca2827199bede1732722 data/create/recipes/sequenced_assembly/sturdy_sheet.json 0cdbd4f583aa0a2aa8f3ca2827199bede1732722 data/create/recipes/sequenced_assembly/sturdy_sheet.json
1274315b5c570722d6f5b2ed7f5e53fe01b6288a data/create/recipes/sequenced_assembly/track.json 1274315b5c570722d6f5b2ed7f5e53fe01b6288a data/create/recipes/sequenced_assembly/track.json

View file

@ -1,94 +1,94 @@
// 1.20.1 2023-07-04T18:31:12.3303171 Create's Advancements // 1.19.2 2023-09-20T18:40:42.8358053 Create's Advancements
2661a689fdcf729494f46e3c719f71c62e31582e data/create/advancements/andesite_alloy.json 2079ae09cf699108a8035ced7ca712fed4ab1577 data/create/advancements/andesite_alloy.json
fa16c4afe0496edc3f157858a6e0ff177a1622ff data/create/advancements/andesite_casing.json 082d3987c5e074ed50be4a94a6fdc17120af241b data/create/advancements/andesite_casing.json
5a694002d0a663bc869b09d15924a10c43dc522f data/create/advancements/anvil_plough.json 4618109cfb4550fd8e19dc9d794ef24398b10a61 data/create/advancements/anvil_plough.json
d7edb08ca331f4d5777fae3a3ddb2139bf7ccd90 data/create/advancements/arm_blaze_burner.json 1aa4a19d97df326b9e4819bc72290524ea094b88 data/create/advancements/arm_blaze_burner.json
2954be6b07ad0204ddb68d73899d2be42d90d506 data/create/advancements/arm_many_targets.json fc07423190bc857f061ea41a4f51458b8088f0e1 data/create/advancements/arm_many_targets.json
b960076e653a3682aa4ebb82bdca957d455c7604 data/create/advancements/backtank.json cc0dc0fe3aa523c6ee33406b33aeba1a3e519786 data/create/advancements/backtank.json
6419ea7cdc2946f6b9b1d0533761165c644ef87a data/create/advancements/belt.json fde2d0dc2736c1667daa19427463c1640ac23a48 data/create/advancements/belt.json
2e3e26ce4e0b6e08ca58c5631f1b965a466f65d3 data/create/advancements/belt_funnel_kiss.json e85010c3b13619256af80b980414c43735495d41 data/create/advancements/belt_funnel_kiss.json
ca6d0355dbd9a7de587c4ebf2aed82e920e007c1 data/create/advancements/brass.json 2fbfe98e16080e01f80c26a30b73983822782bcf data/create/advancements/brass.json
78224097bda936d1ba9bf682a9177ad252139a51 data/create/advancements/brass_casing.json c4c14f3b3d618ca34578aabcae2627414e693f55 data/create/advancements/brass_casing.json
113f1a063d78207e600e536200004756b42e0cd7 data/create/advancements/burner.json a4d492aa22abf32c01d2c4d268e084a7915ef7d4 data/create/advancements/burner.json
7c0aed400d4933d5ca13db42517efa2959a1bed0 data/create/advancements/cart_pickup.json d24f44937e0b4f39d2940cca3ee6c3ef120d311a data/create/advancements/cart_pickup.json
2970c69c310e8e3dbe295621d04a8f42bb7fd1f0 data/create/advancements/chained_drain.json 8d746fc89acf4a8bdff5aea545cf5449348851ff data/create/advancements/chained_drain.json
5334499c577b7531a5de2ff46f371939554f1eb8 data/create/advancements/chocolate_bucket.json 0ec464b6ce70a65185dbb2d74c76c0dbf402851f data/create/advancements/chocolate_bucket.json
e99071520e9b27b66085367683bc7b972a349c2f data/create/advancements/chute.json 38ee84ce98990539a3d836c57b2c6402b5675a48 data/create/advancements/chute.json
9d8c0b690cb3e969b84fe89cded93f719a8c3572 data/create/advancements/clockwork_bearing.json 63176510af010ed317537dbfe523269bbfa30402 data/create/advancements/clockwork_bearing.json
8ea25cd18d5e7345641953cb58c3d06b730786cc data/create/advancements/compacting.json 7460abf9783ddd9bfd43100ab697012a1c9ffd93 data/create/advancements/compacting.json
041ddb4720296fc4446d5d694afe3ec1c21c881b data/create/advancements/conductor.json 5b9f08cf6ddf3f0948854176327cfe2be895bb21 data/create/advancements/conductor.json
848f64e1f30c1ec0eac57b6760e282cf030a25fc data/create/advancements/contraption_actors.json de60e46cfe009d1b8caf6c993b6c347b400711f1 data/create/advancements/contraption_actors.json
5074053518627b4229bd1f79b20c67e3056f7983 data/create/advancements/copper.json ad3df5cc4154c81d4311aae9c30a9d4c54c5085f data/create/advancements/copper.json
90763d18fa6cf42cb409b75bc2a3be53d76aab1d data/create/advancements/copper_casing.json 28468549782c8fad58ebf248d0d4018fcde8b2c2 data/create/advancements/copper_casing.json
f2e04dd82a25cc080a4901e03e0f1fafeb6ea191 data/create/advancements/crafter_lazy_000.json 6c0bcf572a634b5cdb01793b063fd7bb9344fab5 data/create/advancements/crafter_lazy_000.json
4f88d0bf42d208bc5037509c197725bc4e4e68e4 data/create/advancements/cross_streams.json d46530f2c2bbb5a9da5af7b1c49b1243b1e38663 data/create/advancements/cross_streams.json
44ed195706af6ee0cc3b98b9ea4f7d8326899391 data/create/advancements/crusher_maxed_0000.json fe159e9ca1f688b5d3e42f35f9b1bde2214e3cd0 data/create/advancements/crusher_maxed_0000.json
84b24845a97c04edf20cad8562c2d0de4c634ab2 data/create/advancements/crushing_wheel.json e564c7aa283e81d5aa4c043b6de97b7328aa877d data/create/advancements/crushing_wheel.json
01c6fa0494e5915b99a0b0aebd941ebbb177cd3a data/create/advancements/cuckoo_clock.json 7db45385ae69534ff40d7b2b40de7ec5ae1f1905 data/create/advancements/cuckoo_clock.json
ac78707d112458c7f771260cf65f0e9bc928d1b6 data/create/advancements/deployer.json f175d1f816f32e1c50891321331e475863ce1e89 data/create/advancements/deployer.json
48c3af4499797cfb695a235e4527c52c608d40ad data/create/advancements/display_board_0.json 62ffffc6834c54ae1abca584522c577226f7f891 data/create/advancements/display_board_0.json
24be041d833017d7e7e02a5a92fd04060ea62594 data/create/advancements/display_link.json 68749521feb4832c8da666454c70f883129f9335 data/create/advancements/display_link.json
cc2c729cf82a0c80b4966ac6382984da08429b9d data/create/advancements/diving_suit.json dfa5e42ee372df8c810e1ccf8a6928e4f1299f37 data/create/advancements/diving_suit.json
7418171d223567cb52b22f5facef648af04cbae6 data/create/advancements/diving_suit_lava.json 63566cf0cf03ebb6cd30ee030e67159e2cffcf66 data/create/advancements/diving_suit_lava.json
4d91e6a7bbf08191d8d1e11943650dfc1dc170e6 data/create/advancements/drain.json 2d19468ffed9345ebe8cecf220acc15651917082 data/create/advancements/drain.json
dee06f0f78a97a6358b67459d05fb479e5318fe9 data/create/advancements/ejector_maxed.json 492d8ebc5d10e7efd100570f1507413d78723782 data/create/advancements/ejector_maxed.json
3300ee54dc1e9d04fd13a11c971e046d9db24e10 data/create/advancements/encased_fan.json 7e19fd15b675494d2a8d5ac3cef4a50cf58c203f data/create/advancements/encased_fan.json
fb61193b9d02d1fd595ac99721812a59dc7c7c29 data/create/advancements/extendo_grip.json 45cccc0f06160ba5c01676e2015b70fd0f8daee2 data/create/advancements/extendo_grip.json
845a6c63b26a238c5ff82f37ca25ef5a8f7c11fc data/create/advancements/extendo_grip_dual.json 19375d4672fddd04f175b1e933913f61f2d479ea data/create/advancements/extendo_grip_dual.json
46950345e76ef2d98bf3ea737530976781901a0f data/create/advancements/fan_processing.json 42e63e00c7706c6ca2fffaa3c32016c66606775c data/create/advancements/fan_processing.json
8f0f884dbc6eb94e03ffae374105c7100a073d85 data/create/advancements/fist_bump.json ed8ce124b7fbb33c09b35507a317d97f039f469b data/create/advancements/fist_bump.json
5e39ecb68037ade25897dff1dc419065752d2c43 data/create/advancements/foods.json 59c0c761919d504d31123cb0d1b046814e8a6aca data/create/advancements/foods.json
7c72b9440b3f0525658b5c12d46a56d48521ca93 data/create/advancements/funnel.json b68f4baee272682b6f4c9a34089837fec2cd9c58 data/create/advancements/funnel.json
1dcfded7b20756ad6dfd4a6c4d0106c343e9e17e data/create/advancements/glass_pipe.json 7f968a34d7c81ce222166fc00386cbfbbdfd2413 data/create/advancements/glass_pipe.json
94a4e1ac38935288cc84f4b374cf1553ed39b2b0 data/create/advancements/hand_crank_000.json 9850d8b5cc6b2e749c78e64cc56d20fd6c001106 data/create/advancements/hand_crank_000.json
dc1bbb3fd9be29bfa8a4393fde7f690cba1e1b7d data/create/advancements/haunted_bell.json 0cf4fcd4efedbff71db45e7a85b56123f5307ffd data/create/advancements/haunted_bell.json
10fd4ddc4e46c3a6cf018c5f6b5ec230edf980e1 data/create/advancements/honey_drain.json 747e6b21d7dc74502a75a4ea28a66ac6b111565e data/create/advancements/honey_drain.json
e52e298394a1980c0967a2ccdbccc30e9329bac2 data/create/advancements/hose_pulley.json 6076d0f75bc693f6a8635fc3656eaa8c4f29693b data/create/advancements/hose_pulley.json
6b4d211fa9d3ae86eec1888ab2519911abab7918 data/create/advancements/hose_pulley_lava.json c365ee5c1175fa4bf4627d78c7bdce6ca7a2defb data/create/advancements/hose_pulley_lava.json
9362f1c234c887cf15d220138e6f0cef020189cd data/create/advancements/lava_wheel_00000.json c0f0689a4497affe0feb20bc20d708aa0d8eb90e data/create/advancements/lava_wheel_00000.json
76d8cc5398c3054e9b588f0f41500c7214294cf6 data/create/advancements/linked_controller.json 2bef7aa7c863c9b149c67a506725ffa0fee3d977 data/create/advancements/linked_controller.json
f7adf4bee54f3faaf3e0de46da495cdc2dcdc04e data/create/advancements/long_train.json 8d842135a5111786c0c656dfcac6be9c1d1a459d data/create/advancements/long_train.json
691a69a0ff6ead80307f406e4be10952dafb4e6d data/create/advancements/long_travel.json 333335c09683319ceaaa2974a9f746c0545bf425 data/create/advancements/long_travel.json
d83e945f30bb301808bbbd49dc3e60251992d0ff data/create/advancements/mechanical_arm.json 1025b22c5ff39a4d54bb5857e04e35a5d806ceba data/create/advancements/mechanical_arm.json
d89152d4f3c992b892e8ec4bef03605ef20c1520 data/create/advancements/mechanical_crafter.json 7703192ff1ccba4cc006bcfae349084756ae62d7 data/create/advancements/mechanical_crafter.json
5a2de56341fbcf93a12cbd007f575fa078b074ca data/create/advancements/mechanical_mixer.json 5892215b26cf4ba12f2c969d5b7bf75e72afcb48 data/create/advancements/mechanical_mixer.json
6d09ace1e2706549b02bdac3e8475c1a01199a31 data/create/advancements/mechanical_press.json 82174d713d926d2cbb20fabe9f0e326758d74804 data/create/advancements/mechanical_press.json
5b50f84f2b697d630294e2b8db8b60dba84a1011 data/create/advancements/mechanical_pump_0.json 30299312adb50b253c22e0da53424ffcfadb9768 data/create/advancements/mechanical_pump_0.json
8adbdf6e0b0df40fed5ecfc5a5b13ca6a075be83 data/create/advancements/millstone.json 78ad377d18e0f812a80b234a30d26fdcc3d6f65d data/create/advancements/millstone.json
82a61db27464e2ede2b2079276cf69bb465a5085 data/create/advancements/musical_arm.json ab64e2f1efce94c53542727ca2d146c70b7ce079 data/create/advancements/musical_arm.json
a7119c747a2c16d93b9df669f80ccb3863a331ce data/create/advancements/pipe_organ.json 4b38ed714396b05f48aedb9cdda1b7fde723866d data/create/advancements/pipe_organ.json
8118ffd53c264f535517936a0fc720a7850e8907 data/create/advancements/portable_storage_interface.json 4610121385be0a9c7dfa3cb61aabf8a67ffd1b74 data/create/advancements/portable_storage_interface.json
826768f46254a9fc0ea048e600511cab4a0a781f data/create/advancements/potato_cannon.json 23e36cb10df00aef1277c2de054fab72a4406a32 data/create/advancements/potato_cannon.json
b780e2fddc7ae11b751d3518baba4b4e3da44258 data/create/advancements/potato_cannon_collide.json d0070bb320214dd308f060f9271efe2538e9ce78 data/create/advancements/potato_cannon_collide.json
f21957fd6896aa1c33589e36d7600b946cd578a2 data/create/advancements/precision_mechanism.json 194dcfa145aab4c4c44c7bea43f5632b9d271829 data/create/advancements/precision_mechanism.json
910d95a883c8d9dc73aaa1488ba4a853bf0682c0 data/create/advancements/pulley_maxed.json ce6f407629718a08046895b9f388912598eb54f0 data/create/advancements/pulley_maxed.json
c932c3679216e2434f74581ecd607d9235b3f6a1 data/create/advancements/red_signal.json 7bc1fbbb6d129727c9bf5fc65c9d0b85926801a9 data/create/advancements/red_signal.json
368560279056ecce53c53cb1d322fd30e95d26bc data/create/advancements/root.json 93d6cf1883a9e2cb8d476ac42f61a401033b1163 data/create/advancements/root.json
94c985d42f209c159610cdb8f1c21cd052ef75e8 data/create/advancements/rose_quartz.json 948bd2f2c98c7e42e62cf00b6ac17aeb83b665a3 data/create/advancements/rose_quartz.json
ed3c3958f5036e36ca33e4868d2159711eead948 data/create/advancements/saw_processing.json caee573f0fc6c297b12a7e96b90f7fb8fce787de data/create/advancements/saw_processing.json
1ee3fe132e7dc8534d0569d556bf05883d674147 data/create/advancements/self_deploying.json 16f463cda4842cfa69d484899a5e3a5ebc7c6531 data/create/advancements/self_deploying.json
bff5bf09f1eafbcc3d7b21c01c54b352ac408cad data/create/advancements/shifting_gears.json a6893c0d8e123346eb74d4f98053a7bd7d45a5f3 data/create/advancements/shifting_gears.json
a1e44c8ff2b7ed96d4b76e6122fd41fa528826b1 data/create/advancements/speed_controller.json c213cfe4b14239b6a8d572ea4beb9cdee83543ba data/create/advancements/speed_controller.json
8277bdddc6fbede64a50c4cf9bf75fec9dca2ab3 data/create/advancements/spout.json 1664bfda74ce4830f8c6eef3e395da593c3d3615 data/create/advancements/spout.json
28c7898ee0dad051744b95c0154744caf025e849 data/create/advancements/steam_engine.json 064d23021711418a2647b1127a3feaa9983147a7 data/create/advancements/steam_engine.json
b3c18b1d41126d135318769f83ccc6fe51da2c54 data/create/advancements/steam_engine_maxed.json d2f108ffaf809d2a1d7ace0c27333d20efe32ffe data/create/advancements/steam_engine_maxed.json
742b75d31271e5f58ba2572606a10a43db8acea1 data/create/advancements/steam_whistle.json 6612e1e4a448ee2004cc6b8dbf79af5486502e46 data/create/advancements/steam_whistle.json
90954d173a67584221ee02114971d515247607ae data/create/advancements/stressometer.json 4ee4a064fd2546a7e8e6ede0fe723860aef22dbb data/create/advancements/stressometer.json
b77e7b17c397cc88ca2f75f68c52d60488ece97a data/create/advancements/stressometer_maxed.json 7a926370e36cf0f5921d338261ad5b5a78ffbfab data/create/advancements/stressometer_maxed.json
cc75b35e53137d229896c334f09ebc5930f56307 data/create/advancements/sturdy_sheet.json 46e63a1d780ab00193ab9edbac7a2d3aaf146951 data/create/advancements/sturdy_sheet.json
4794a7d7ea140333809bb78b77a30997bbb606bd data/create/advancements/super_glue.json 758ae0f196771f69bdb793b1753e20725a1c7395 data/create/advancements/super_glue.json
7431347d2edcda21fbc05541bb5fb8b12c17965b data/create/advancements/track_0.json 73f42aff732071b11be611ceb3065087182a5f65 data/create/advancements/track_0.json
916a9a75900fa36aa3c5422d4e35eeeb57d20f61 data/create/advancements/track_crafting_factory.json d365ccfa43deba1c0faab1dd804a4985b2a48cc3 data/create/advancements/track_crafting_factory.json
4938c2be415c15a70a41570bbb49f772eaed5af0 data/create/advancements/track_signal.json 9962cc67809593e548465a5e5da23053dd673d26 data/create/advancements/track_signal.json
797f76512083d562549a20e9abc679846cce885f data/create/advancements/train.json 336ba2464a66c94be4599c38cac8a8461f107558 data/create/advancements/train.json
227f401a440746c02ce0713c44b4cc623307e014 data/create/advancements/train_casing_00.json cb32d8ead0afe2bc25557bf7563a519e16101230 data/create/advancements/train_casing_00.json
f1645a6cfdfcade5366d9f3be501e596b1600330 data/create/advancements/train_crash.json 10225f8c16e30ebb21ead266191d53d84b7525dd data/create/advancements/train_crash.json
484986302e8c1708064b5dbb5ce35e443f6151d7 data/create/advancements/train_crash_backwards.json bc67c56d024c649a9900c1f71d3eec19ee1ae923 data/create/advancements/train_crash_backwards.json
22c39846ee59d7c71468fe795fa354cb0a4aafd9 data/create/advancements/train_portal.json f55b9f99589550ae941daced826d52284fb9b12e data/create/advancements/train_portal.json
ba272fd5361c2d20d4ebd67c30655fe484bdf862 data/create/advancements/train_roadkill.json 2635ec3f90229a107ac553e26011ca86fd9fc2d6 data/create/advancements/train_roadkill.json
1aeadc6754b7361c07314c5a95248277e6f67221 data/create/advancements/train_whistle.json 6efe2b3e0f5f570d4711d2893a3d73d415fdc49c data/create/advancements/train_whistle.json
0915f1716b2e6953267a58a45a3b7884dab9efbf data/create/advancements/water_supply.json 6afde0aa8aa67cbe5821a78f72dc430d8ae0563e data/create/advancements/water_supply.json
17694ab38a30b5a5a58c572d154c475f4efb07cd data/create/advancements/water_wheel.json 6b8f8656ff9aa4809add88b8071748eb26db9460 data/create/advancements/water_wheel.json
7205a7c379c3d2fa2aeeab26c3438ab8c8906e74 data/create/advancements/windmill.json 9b0f6863fe78327bcd06f512b6f32fbf556c4ca3 data/create/advancements/windmill.json
bd04b6faa2a075921d4c55bb1497b626d6ee045f data/create/advancements/windmill_maxed.json d0d5fc5dcc05dbb60cbcac1607c85d24af72ab82 data/create/advancements/windmill_maxed.json
f9234a1999c121a4758d049b88b1de38460a359e data/create/advancements/wrench_goggles.json cb636e49d3131c859336655de4cbc2f6e8a795a5 data/create/advancements/wrench_goggles.json

View file

@ -1,4 +1,4 @@
// 1.20.1 2023-07-04T18:31:12.4130959 Create's Mechanical Crafting Recipes // 1.19.2 2023-09-20T18:40:42.8358053 Create's Mechanical Crafting Recipes
f076d64d9f30709bed34775136c9241097b28aa9 data/create/recipes/mechanical_crafting/crushing_wheel.json f076d64d9f30709bed34775136c9241097b28aa9 data/create/recipes/mechanical_crafting/crushing_wheel.json
694dca9dcff246bb7f560b3304fcc244c53217d5 data/create/recipes/mechanical_crafting/extendo_grip.json 694dca9dcff246bb7f560b3304fcc244c53217d5 data/create/recipes/mechanical_crafting/extendo_grip.json
3b2837b08607c1ca466fa3eb418209b2e55da6ba data/create/recipes/mechanical_crafting/potato_cannon.json 3b2837b08607c1ca466fa3eb418209b2e55da6ba data/create/recipes/mechanical_crafting/potato_cannon.json

View file

@ -1,456 +1,456 @@
// 1.20.1 2023-07-04T18:31:12.4081093 Create's Standard Recipes // 1.19.2 2023-09-20T18:40:42.8318162 Create's Standard Recipes
a8cc4af26f6c7c45a9eef12e92af1452fe042454 data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank.json ff6a181c36dba79ed4fe7945823f7529bd7913fe data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json
2c2639c7b307ee7c7a4e97e5efebf496788998ad data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank_from_netherite.json 106354a9eb7379a53eae40a1775f43bf67225919 data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json
81dcf0cb1aa99e39bc7d1a386e07cad4cee7d8b9 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_boots.json bb548877a89f41e1bdfe987dd3ec05b6023daa81 data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_mekanism.json
8df9ecabefe6487e60ccf4b5182bd960b4c2f1b4 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_boots_from_netherite.json 960ef229b3d284fbc9001e00145ef2a01df38525 data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json
040cc87b169b0608c3fbd152a1a2a9d2b2108895 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_helmet.json b0241594379674d8da9f84bed32e44fd46dabc28 data/create/advancements/recipes/building_blocks/blasting/ingot_osmium_compat_mekanism.json
c1f2e6d1d955fb2d6d7ccc7a6d45d051bbcab315 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_helmet_from_netherite.json 9a2dad54bbd339741815800ac0b2004d5e159a34 data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json
6418408e9fe53c03eae1e2b17b2229a548abc226 data/create/advancements/recipes/misc/blasting/copper_ingot_from_crushed.json af6c91d27c21c75dd79c56f3e20eb98bace21ee5 data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_mekanism.json
d88c5c8b6751f389d9eea30acbd566c120e77705 data/create/advancements/recipes/misc/blasting/gold_ingot_from_crushed.json 7a92e711d29d749348dca778bd65a7a43c2f3e90 data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json
2532dd0af4124639c26525b6c4bbaf8059132903 data/create/advancements/recipes/misc/blasting/ingot_aluminum_compat_immersiveengineering.json 80814471952348a0fb5bcd298c30e22a20f5b343 data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_mekanism.json
6b62cf9551e30b3560349e8d905cd10b446a98fd data/create/advancements/recipes/misc/blasting/ingot_lead_compat_immersiveengineering.json 8b5c113733ed0c08ab823d98854a60ab3c144b3d data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_thermal.json
4568168d851832c9eefd177c64a2de9c40e9954b data/create/advancements/recipes/misc/blasting/ingot_lead_compat_mekanism.json 1007a146a88c5a7adf5b5017edf570032beaa8ae data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_thermal.json
cdcf764d3eb5fba5ebaf17be87398ed68edfa43c data/create/advancements/recipes/misc/blasting/ingot_nickel_compat_immersiveengineering.json ac1adc1221ae5e6f5c6a9a6f6b1d28eb51756207 data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_thermal.json
556013ab3ed25759da841832ff373e2a5421049b data/create/advancements/recipes/misc/blasting/ingot_osmium_compat_mekanism.json 34efb445714c7e1ff6ab0dbefb58ce946c565209 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_thermal.json
f013cfdc88c5e93d7f351aea6db34ce30870cb2c data/create/advancements/recipes/misc/blasting/ingot_silver_compat_immersiveengineering.json f0570274cf54c73b95d9665ea17432b63b2da525 data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json
e6ff5fab7af4a92a28be16484cb580423a6bc898 data/create/advancements/recipes/misc/blasting/ingot_tin_compat_mekanism.json 7c5a7a087bc6644b0944fd37211d4e69a863a8c2 data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json
b02cf7e00ee7b0d12a37e7ba5b5134ac31ae9bd4 data/create/advancements/recipes/misc/blasting/ingot_uranium_compat_immersiveengineering.json e83398ba06339e3bd559b839c725de4f7535be5e data/create/advancements/recipes/building_blocks/smelting/glass_from_tiled_glass.json
ee732ef02b3d210dd10aeec1799da1ca6230276b data/create/advancements/recipes/misc/blasting/ingot_uranium_compat_mekanism.json 94ebf2a541daade4b3b6a50e13c6306418025c77 data/create/advancements/recipes/building_blocks/smelting/glass_from_vertical_framed_glass.json
b90af96817d6c38ec446f7464642a473a55c2027 data/create/advancements/recipes/misc/blasting/iron_ingot_from_crushed.json cf1480247e325842aca707d2cfd1ce58aa922f30 data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json
39420bdfe874164a75a4df767483a6903d24e8ab data/create/advancements/recipes/misc/blasting/lead_ingot_compat_thermal.json fe585f32461cd784fda4832d727985a0e20e7cb3 data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json
6b918d2552c2c764f62ae8a68f1bdd8cf3b4d2a6 data/create/advancements/recipes/misc/blasting/nickel_ingot_compat_thermal.json 847d5dc5141fd0cea5763466c092507771909054 data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_mekanism.json
76ba5762a4b104a84b7501056237cbf15a9a41d0 data/create/advancements/recipes/misc/blasting/silver_ingot_compat_thermal.json 9f25d73ad5aa1ee47a58ad25232a24399ed8c370 data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json
9ec161b962d41a0773cbbff7328947e89cfa0585 data/create/advancements/recipes/misc/blasting/tin_ingot_compat_thermal.json a3366fc5504f42470bee56fb77255041c7f036a6 data/create/advancements/recipes/building_blocks/smelting/ingot_osmium_compat_mekanism.json
6e09fdea2fd2fea9cd54d33c9e094c9528ee1603 data/create/advancements/recipes/misc/blasting/zinc_ingot_from_crushed.json ac28e15859e2e918342bc7498ca27debadcb8886 data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json
39158a18dd766c0da435cd4d25334b0aa48e717b data/create/advancements/recipes/misc/blasting/zinc_ingot_from_ore.json 3b0ce9691e7b9606d81d4cab6a60e37a39de1352 data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_mekanism.json
99f9ed5644ca8f95a7a77a60596fd057088bc6dd data/create/advancements/recipes/misc/blasting/zinc_ingot_from_raw_ore.json e8b886a019146ac897e7bd8f606c403c02ae7608 data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json
979ce50c0238ee2512acbe568f093b96d253adbe data/create/advancements/recipes/misc/campfire_cooking/bread.json 40ad78682d7ca04d714cb47253f0edd90c566ad9 data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_mekanism.json
3d2decdb350a8ba7f553dec5ee5f7b79d6cfd9c4 data/create/advancements/recipes/misc/crafting/appliances/attribute_filter_clear.json 83e01b2c6edfd14f2c5f8eb786819da27dbf9780 data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_thermal.json
8b0f0b4342adbd3466c81298c87b5ed8993c3636 data/create/advancements/recipes/misc/crafting/appliances/clipboard.json 824767e900b6cd06bc84a2a9d1ddfc3a8d687e82 data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_thermal.json
42f06a32b53c954a54fa1d5ffb1afd2e161cbde2 data/create/advancements/recipes/misc/crafting/appliances/clipboard_clear.json 170d4d6ecd99d99e1d670e206c908cc988b72d01 data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_thermal.json
76a75bfd437897f7c4d0d8eb16743af2d282a071 data/create/advancements/recipes/misc/crafting/appliances/copper_backtank.json a1be6232f3d3a4b02ff9417c2cb5203d228206be data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_thermal.json
d944811a49a2de26d60560f28239c81283289f65 data/create/advancements/recipes/misc/crafting/appliances/copper_diving_boots.json 0cbe8ac095dde3586eae7e4363b3886ffd0c463c data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_crushed.json
2245913a32430d8cb6846f6defdb7d21e3a4bb3f data/create/advancements/recipes/misc/crafting/appliances/copper_diving_helmet.json 7afe4a5f978a1c3a4224ca9d71b88f5e92e4a74b data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json
0746cb63e224d7620e781e1494b9a8b9d56b186b data/create/advancements/recipes/misc/crafting/appliances/crafting_blueprint.json faeca323b9061761f494a1ad5e9d3eca2b268583 data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_raw_ore.json
c4d0901541855ea2fda0cef7f0270edfa16d70e2 data/create/advancements/recipes/misc/crafting/appliances/dough.json 9678042d96351f38df2dd538181c711b7319ac4e data/create/advancements/recipes/create.base/crafting/appliances/attribute_filter_clear.json
79b6501f8cb069dc55b78871a5fecf40a5b3dbd5 data/create/advancements/recipes/misc/crafting/appliances/filter_clear.json 51161cf88410ddebf4ae77c6823b2311bf837908 data/create/advancements/recipes/create.base/crafting/appliances/clipboard.json
3271ad36fbab51d87d0baad8c69cb7b2add506b8 data/create/advancements/recipes/misc/crafting/appliances/linked_controller.json bbfc8ec65e608398aacd644d576655667a9b6999 data/create/advancements/recipes/create.base/crafting/appliances/clipboard_clear.json
d4d13730d982713b5809ecf30187e01707248d75 data/create/advancements/recipes/misc/crafting/appliances/schedule_clear.json d9b8ad4ceef37123bf0eec823084b60f433bec5e data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json
44c1a131bed101ad4b87d57816ff5a375cc36bf4 data/create/advancements/recipes/misc/crafting/appliances/slime_ball.json 292b35d32f00a63f6a17ed5b8e3c185f05e21487 data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_boots.json
7d0fa7ac8a04b19cd3db31342e276d2da4860a1d data/create/advancements/recipes/misc/crafting/appliances/tree_fertilizer.json 19742dd19cfa57b20abb139c40a07bb36a86cd11 data/create/advancements/recipes/create.base/crafting/appliances/copper_diving_helmet.json
67a99a90fc7594633739e9f7933543d3d8b7409a data/create/advancements/recipes/misc/crafting/curiosities/brown_toolbox.json aba81978b5805f48cd718df2dd80be4f0875f3c3 data/create/advancements/recipes/create.base/crafting/appliances/crafting_blueprint.json
eb14fd4a77457f1206adee736307aa233b9bcc97 data/create/advancements/recipes/misc/crafting/curiosities/cake.json db851de3567c71d078a186afb78f356bd98c5b24 data/create/advancements/recipes/create.base/crafting/appliances/dough.json
e556921ce31c8eb222c15e95ab0d22c9e9dbfcf6 data/create/advancements/recipes/misc/crafting/curiosities/minecart_coupling.json 1af6bbdd5acd6b7fa0a25a4b90f6aaafd5673195 data/create/advancements/recipes/create.base/crafting/appliances/filter_clear.json
1b01f470bff0e377207327a3749b1249f745cb77 data/create/advancements/recipes/misc/crafting/curiosities/peculiar_bell.json 020c48f351bb8f98ff58e0a44c841cfcbcd2e647 data/create/advancements/recipes/create.base/crafting/appliances/linked_controller.json
256120321703fdecaf2fff0198045b6148194593 data/create/advancements/recipes/misc/crafting/kinetics/adjustable_chain_gearshift.json a4fdf3d783049c8f8a8dcaf168616e085e1bbc71 data/create/advancements/recipes/create.base/crafting/appliances/netherite_backtank.json
16603187bb4f5acc26e052c4cd2734cbcf8b47b3 data/create/advancements/recipes/misc/crafting/kinetics/analog_lever.json d3409e2449f606794a6b40a9789d53c3619d2a15 data/create/advancements/recipes/create.base/crafting/appliances/netherite_backtank_from_netherite.json
49eccdf8e5d3d69155766e410b0958e17c1a49f5 data/create/advancements/recipes/misc/crafting/kinetics/andesite_door.json 4b8fb0fdc52cb06b15822f76652771e9633f7e38 data/create/advancements/recipes/create.base/crafting/appliances/netherite_diving_boots.json
087f19b43c13559bd3da973b1afded73cbc17e12 data/create/advancements/recipes/misc/crafting/kinetics/attribute_filter.json d637d8b12ef56164dd4360720d59968ab87ab4a3 data/create/advancements/recipes/create.base/crafting/appliances/netherite_diving_boots_from_netherite.json
a5435336d02247b4bcd7b4b5c4870be129f23477 data/create/advancements/recipes/misc/crafting/kinetics/basin.json 2a23251616c0231e235cfa1f96ed02d53b5c8a9b data/create/advancements/recipes/create.base/crafting/appliances/netherite_diving_helmet.json
a8a3a16f1990f73cc0a6b7bca23a96ffa22f416d data/create/advancements/recipes/misc/crafting/kinetics/belt_connector.json 06c8467d5a3e1dad78c9779db91fb16fa1431a26 data/create/advancements/recipes/create.base/crafting/appliances/netherite_diving_helmet_from_netherite.json
f7517ad35e98d11c7244be86ba4a7bde85eeaf13 data/create/advancements/recipes/misc/crafting/kinetics/brass_door.json 4f541c22efef5ed3131364cf0609c7fced8f157c data/create/advancements/recipes/create.base/crafting/appliances/schedule_clear.json
627b0ebad7cbc45d8a0c5803de626fa520bb2023 data/create/advancements/recipes/misc/crafting/kinetics/brass_hand.json 702bbec6bc2d272dac2bfe7558b6bc1ef70f4ccb data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json
2408e2a5b5ca63f196a90a20bcf7f0d301fa2aa0 data/create/advancements/recipes/misc/crafting/kinetics/cart_assembler.json 17c1e7a8ce5b54d00ed5a927d2f5d6e84cd73383 data/create/advancements/recipes/create.base/crafting/curiosities/brown_toolbox.json
aaaf7e0649acebf491229781c56a7b95a71a1c84 data/create/advancements/recipes/misc/crafting/kinetics/chute.json 0b4fd2cf9ab5d50e2d1f3466e471dc8599cb35d6 data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json
e8ba77b35a1f6cb364e143a9397a6314125b592f data/create/advancements/recipes/misc/crafting/kinetics/clockwork_bearing.json ccff47a9ff3cc5b101e758aa5de747af24c7617e data/create/advancements/recipes/create.base/crafting/curiosities/peculiar_bell.json
71f386d073b9e0fb647a751cd6b75c0b70f1b001 data/create/advancements/recipes/misc/crafting/kinetics/clutch.json 101605853b71bcb7ef0388f329dffe35549df83e data/create/advancements/recipes/create.base/crafting/kinetics/adjustable_chain_gearshift.json
2730d7bfc7ec348d5399bf90ad7544d790d632df data/create/advancements/recipes/misc/crafting/kinetics/cogwheel.json 13fd40f039ec9ba07b25ba94ace23f7d0ba61b47 data/create/advancements/recipes/create.base/crafting/kinetics/analog_lever.json
11821eef12cd35918f437e3686c9e683a6b9ec36 data/create/advancements/recipes/misc/crafting/kinetics/contraption_controls.json 815d392dde95d1b25792c4e4ddfe50dd3ccc687d data/create/advancements/recipes/create.base/crafting/kinetics/attribute_filter.json
c468594cfe5a8265a277d2e52aa476b2c7a9eff3 data/create/advancements/recipes/misc/crafting/kinetics/controller_rail.json e0367cd3c396d99c7ffefc8748d1806b27cba1c2 data/create/advancements/recipes/create.base/crafting/kinetics/basin.json
6e1a7a7acab52347babd5be7f0b302f92c00980e data/create/advancements/recipes/misc/crafting/kinetics/controls.json 77585206954c25c4c1b8c56d72e6f4cc6d639415 data/create/advancements/recipes/create.base/crafting/kinetics/belt_connector.json
95feec058ab8470127d4f9cf7c8fd47dfd5085f3 data/create/advancements/recipes/misc/crafting/kinetics/copper_door.json 96fddc180a85bce7f38db24637879a1d3959128a data/create/advancements/recipes/create.base/crafting/kinetics/brass_hand.json
bf707da607e5a29507267b9cc98cadacf826a6c6 data/create/advancements/recipes/misc/crafting/kinetics/copper_valve_handle.json 0bd6b4c848e848262d21e0066634657e166ceba9 data/create/advancements/recipes/create.base/crafting/kinetics/cart_assembler.json
592c6abb620cc1ef8c7629de04ec7d85faed8453 data/create/advancements/recipes/misc/crafting/kinetics/copper_valve_handle_from_others.json 3c5607faec15cee9aa0199ca41f707e54e293d44 data/create/advancements/recipes/create.base/crafting/kinetics/chute.json
7acc8698921fae48178970e7bce7cfaf136b7169 data/create/advancements/recipes/misc/crafting/kinetics/crafter_slot_cover.json b66fea562c25d0f685271139a6c4a11f01d381eb data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json
3eec131f33e1b92cb34b5f732498497a8a9e1cbb data/create/advancements/recipes/misc/crafting/kinetics/cuckoo_clock.json 96b037ef1cf8c4f01d3320d96da56866308fef65 data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json
0015b9b655211aef867e02e67dc5ecc2d1fc2782 data/create/advancements/recipes/misc/crafting/kinetics/deployer.json add1b00551b8bd58b22370cdc45483e1ea8ccd80 data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json
58c109a74bd366e76d7eb631e63e3eb84b82038b data/create/advancements/recipes/misc/crafting/kinetics/depot.json 405071067037023359144b5eff2a990824551959 data/create/advancements/recipes/create.base/crafting/kinetics/contraption_controls.json
a85aecdec18802b97c23cf21f57e59bf71bfe690 data/create/advancements/recipes/misc/crafting/kinetics/display_board.json fb224fd7b448c53434d5c65c2114e6041712532f data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json
5eddf6af005751b5628d8bc032d064861c7070e0 data/create/advancements/recipes/misc/crafting/kinetics/elevator_pulley.json 635ce0ca8b8a2bc5906adffea10819ded518c781 data/create/advancements/recipes/create.base/crafting/kinetics/controls.json
df55f1a1e16f8a1771b617acfeb22cb5991dbab0 data/create/advancements/recipes/misc/crafting/kinetics/empty_blaze_burner.json 5ce1a2d78f6f3d1cc03084d4d58aa7ba7a9e5f14 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json
b0ec44a665cfcc180f5f6a534ef963f431f252d1 data/create/advancements/recipes/misc/crafting/kinetics/encased_chain_drive.json fe3e9d3eeee5c73b08d38d51d503eb1657306208 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json
82d47f9b54917def4ed1a73b4d90d98071d30341 data/create/advancements/recipes/misc/crafting/kinetics/encased_fan.json 08d35f93d0be26ef003648d4d9e95fb6c88c132d data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json
aae73187c99468804f57403864846116745d04a0 data/create/advancements/recipes/misc/crafting/kinetics/filter.json 8c28c154cf4db2a6e5c6674a74dd2de1109456e5 data/create/advancements/recipes/create.base/crafting/kinetics/cuckoo_clock.json
40fd6745ef0924ff72cdb2baa88f959c5d16fe33 data/create/advancements/recipes/misc/crafting/kinetics/fluid_pipe.json 6a5f75bb1b5388548471cd19b0541d5994a968d7 data/create/advancements/recipes/create.base/crafting/kinetics/deployer.json
496ce747d6cc3ce1bfff900cef379d79b95bd66b data/create/advancements/recipes/misc/crafting/kinetics/fluid_pipe_vertical.json 874a2bb3627a13b812b7d509a4341cc486173034 data/create/advancements/recipes/create.base/crafting/kinetics/depot.json
35613e4230b8287b8ae39323ac489dd181ac9735 data/create/advancements/recipes/misc/crafting/kinetics/fluid_tank.json 484d3187f638fe6ad2832390faa71d084bf9965c data/create/advancements/recipes/create.base/crafting/kinetics/display_board.json
bcf31a0e11ddbd0cbd4077f3c3ae94d670ce4e73 data/create/advancements/recipes/misc/crafting/kinetics/fluid_valve.json be4cf32b3e65ddd71ff386cf25d0dfb608c96b92 data/create/advancements/recipes/create.base/crafting/kinetics/elevator_pulley.json
48811dacee389007c5527b460bfc2e640973928f data/create/advancements/recipes/misc/crafting/kinetics/flywheel.json d582587d3b2449468d77bc0017ca22538c5d04a8 data/create/advancements/recipes/create.base/crafting/kinetics/empty_blaze_burner.json
b6489530bfdd3dc4cd8a3ebe26ce345f8559f5ae data/create/advancements/recipes/misc/crafting/kinetics/framed_glass_door.json a8c4c201c452f1cc2135ab241ef08811627759d9 data/create/advancements/recipes/create.base/crafting/kinetics/encased_chain_drive.json
8ceb8ad4bc08b103bcd4a72b1e518875b43cd7ab data/create/advancements/recipes/misc/crafting/kinetics/framed_glass_trapdoor.json daa737129d6fad1eab2f6c7c24d420632cf686fc data/create/advancements/recipes/create.base/crafting/kinetics/encased_fan.json
a11a4e11fe9b762ccf8be72adffd59e45f6d47fe data/create/advancements/recipes/misc/crafting/kinetics/furnace_minecart_from_contraption_cart.json b0f042253e850ed7bad7596ae0a4770d567b23a8 data/create/advancements/recipes/create.base/crafting/kinetics/filter.json
8eb770396aa27283baabbc708698f5419a65a657 data/create/advancements/recipes/misc/crafting/kinetics/gantry_carriage.json ccd132c144b6df808ada62adbedb09aae159d7c5 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json
1c5e47b8dde41e2947c2f6111616cc0493a4aa7e data/create/advancements/recipes/misc/crafting/kinetics/gantry_shaft.json 0bef8ce57f10471e542b4d1695e535bfb36780a4 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe_vertical.json
2d413928c4305a5bf2b7bc9787ec2cb7ae5a062d data/create/advancements/recipes/misc/crafting/kinetics/gearbox.json 769f42c4f28c6e78a2254a25fc6ad6c4d34aca3c data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json
005c2d4110a88f08561edf23835b626103e1ebdd data/create/advancements/recipes/misc/crafting/kinetics/gearboxfrom_conversion.json e91c11c9d3e905e6346a4c6ea18c84c271885c69 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json
d2dded1337838b08b79e6648dba326eca1cf3a1a data/create/advancements/recipes/misc/crafting/kinetics/gearshift.json ab76967977a75cd2abad10c1350194e653a70d3a data/create/advancements/recipes/create.base/crafting/kinetics/flywheel.json
146325fa3698e3622fd848e8e6852e9a345d9919 data/create/advancements/recipes/misc/crafting/kinetics/goggles.json fa379bdc26064fafff3ccb84e705cdca532e9044 data/create/advancements/recipes/create.base/crafting/kinetics/gantry_carriage.json
5afa3600386e6a4cd00827d8c8ba6f48d186d968 data/create/advancements/recipes/misc/crafting/kinetics/hand_crank.json 9b853ce1ba4456e5a186663b6107cc48689f163a data/create/advancements/recipes/create.base/crafting/kinetics/gantry_shaft.json
6340ea806e38fd86385f9d963a4559c463f1cb56 data/create/advancements/recipes/misc/crafting/kinetics/hose_pulley.json c34fc4606a9196d954e4630ab88620d5e84a5292 data/create/advancements/recipes/create.base/crafting/kinetics/gearbox.json
46ef972fdc169dfc2a60fc8ddb39bf5895c7fa81 data/create/advancements/recipes/misc/crafting/kinetics/item_drain.json 315e827cc63a842cf04603bdeeef5289bd761549 data/create/advancements/recipes/create.base/crafting/kinetics/gearboxfrom_conversion.json
53dd7307e5f2614ec4c51a316736982c3a9a8b0c data/create/advancements/recipes/misc/crafting/kinetics/item_vault.json 1aecf0c5a421245627872e3a2dfff663a25e3e34 data/create/advancements/recipes/create.base/crafting/kinetics/gearshift.json
82534fdf5d61d10612c2650dd73b2eb5144e20ef data/create/advancements/recipes/misc/crafting/kinetics/large_cogwheel.json 2f37fd40c1d6b0bb4196a501ac72284922cac138 data/create/advancements/recipes/create.base/crafting/kinetics/goggles.json
7c29cbb89566ed33f44e77cba339c52f70929359 data/create/advancements/recipes/misc/crafting/kinetics/large_cogwheel_from_little.json a3396e2e838c8b1719ed65e4195afa09c0286e52 data/create/advancements/recipes/create.base/crafting/kinetics/hand_crank.json
3085e5ac3822c41d5b52c19114149dc59aa5a976 data/create/advancements/recipes/misc/crafting/kinetics/large_water_wheel.json 24b86aafcdca946ecd5eb7f067e933175fc849a5 data/create/advancements/recipes/create.base/crafting/kinetics/hose_pulley.json
73c5818c85cf3908a77ca2380b71ffd8e2f6eb44 data/create/advancements/recipes/misc/crafting/kinetics/linear_chassis.json 27619361a9b229791449e9d4954ed0890156efb7 data/create/advancements/recipes/create.base/crafting/kinetics/item_drain.json
c7f3dfb1fdca94ad9d54992f0217786674705a23 data/create/advancements/recipes/misc/crafting/kinetics/linear_chassisfrom_conversion.json ce49f3e4c85b36298c764e28a14f328194530e6e data/create/advancements/recipes/create.base/crafting/kinetics/item_vault.json
ba22885e1a95a0deaa8546dd977978c60b515f65 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_arm.json 38c97a8961dc55b007fc675efaee19be03ba70e9 data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json
d00bc56d415fd2c5a073961838173704fdcc43a7 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_bearing.json d411a67fc6d30096ecf8768a6fc105aef796c1b2 data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel_from_little.json
88142129f4c99e4266cfb1c172db6a6c1de83799 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_crafter.json 364f6ab226c5079f68376f2fe85d70b459203827 data/create/advancements/recipes/create.base/crafting/kinetics/large_water_wheel.json
40d8bca20f7dcd8c4751161a7248bc72546d6936 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_drill.json 66b12ce8935b3b4c2baecad22121b770987e0cbe data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassis.json
7cbb3fa60dabefa29b6cd916e03c249241fc99fc data/create/advancements/recipes/misc/crafting/kinetics/mechanical_harvester.json 03541b64f2b6978ec10c71323012b34e80b32a37 data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassisfrom_conversion.json
b8ffa4f1b6e4480909a5fd2f87a09cc0c30aada7 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_mixer.json 6609c0187d3d9bb0cdfc82019d859930fcd23b3a data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_arm.json
6059ecfee32b341bd025aa4568a9da0cede13d38 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_piston.json 691aacd36d35b3f2771757e7231f89fb12d3c289 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_bearing.json
795a165b040e3476d45ddd8afda8ab97a515c0f2 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_plough.json da010ac963d572e4856d89a00388881cf7891cc6 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_crafter.json
3ed8360151f995a622af74754b2ea185446ceb30 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_press.json 0cc038b1264ad2a437b145fbb8ad10b91def462b data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_drill.json
914368890cfeda2fbd5323f3bcaa37a103bf4721 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_pump.json 53154b62cdbf5ad89d759296fb1d6bade8bbab36 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_harvester.json
1d9a4b3f78373a81f74466ecefe02f135780c6dc data/create/advancements/recipes/misc/crafting/kinetics/mechanical_roller.json c9834e76909bd803f6d8faa5badb4051cd1f4c46 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_mixer.json
87b2748fc56826ec62b0200e943feb30002c4b12 data/create/advancements/recipes/misc/crafting/kinetics/mechanical_saw.json 7cefbd3aeb31dcd313a4dd09850016096a556168 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_piston.json
66ff4959af7d711bc6284ed3d62ca03910e72ba1 data/create/advancements/recipes/misc/crafting/kinetics/metal_bracket.json 53de4ed3248e562ff2c1ac858b7aa0d4c77f5071 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_plough.json
e918e8844c6ef4f5adcc95665a05f64c5372abcc data/create/advancements/recipes/misc/crafting/kinetics/metal_girder.json 4a4ef72828a33cc31198801421e6e271c18e13f6 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_press.json
3412fcbd1c568cdc1dc66b8756c5b783ac1dec5d data/create/advancements/recipes/misc/crafting/kinetics/millstone.json 9d01d3aeca84606f93225dfb7b625c27617c078d data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_pump.json
21ae2ef8238b2a8fd05bc39a0c3fd854ce01d561 data/create/advancements/recipes/misc/crafting/kinetics/minecart_from_contraption_cart.json 2fc222814bcd29a2d238c73e4b1540372711afaf data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_roller.json
4c03ca9d953e800c23ca049c4428d9dd40a18d26 data/create/advancements/recipes/misc/crafting/kinetics/mysterious_cuckoo_clock.json f2e0d416f067ec3b9da478d9006b12b02ea053ab data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_saw.json
d283b37887dc62e22965dbafbd3a3eb98d0488cf data/create/advancements/recipes/misc/crafting/kinetics/nixie_tube.json 92b97be9722c87ed607458c658da71193f421618 data/create/advancements/recipes/create.base/crafting/kinetics/metal_bracket.json
27e3d4b5011ce17cc687a4a8b38b574dfff279d3 data/create/advancements/recipes/misc/crafting/kinetics/nozzle.json 818678f975ae3c20054eadd28f7cd78a83987b8a data/create/advancements/recipes/create.base/crafting/kinetics/millstone.json
df79a596a5b07701620a8bb86a7df4601b58c77d data/create/advancements/recipes/misc/crafting/kinetics/piston_extension_pole.json 472fae580e969a2df3f2796a9593bb30e95147f3 data/create/advancements/recipes/create.base/crafting/kinetics/mysterious_cuckoo_clock.json
384efeea25b1968b3131905da2d7cd73455768c5 data/create/advancements/recipes/misc/crafting/kinetics/placard.json 343e0c25689652bfac630e4c716ad1c047922209 data/create/advancements/recipes/create.base/crafting/kinetics/nixie_tube.json
293f057653f70b25e9f94ddb514c8b95be3169ed data/create/advancements/recipes/misc/crafting/kinetics/portable_fluid_interface.json 463903d7e8612ff5d66ecd827b3c06fcd67b3d94 data/create/advancements/recipes/create.base/crafting/kinetics/nozzle.json
c56ed6c06c97571d88e1dd270e6ed8dc917c1c4c data/create/advancements/recipes/misc/crafting/kinetics/portable_storage_interface.json 6abd1d4e6185039a83c2c1f09af511229cd7c6f4 data/create/advancements/recipes/create.base/crafting/kinetics/piston_extension_pole.json
02a7d6044daf029e146cedf5962180eabdc12da9 data/create/advancements/recipes/misc/crafting/kinetics/propeller.json 09ae58db7f9335b94eacdc1ac65f328d4e74b296 data/create/advancements/recipes/create.base/crafting/kinetics/placard.json
1d12e5d24a9469f41506dd15b1f40b3489072d7e data/create/advancements/recipes/misc/crafting/kinetics/radial_chassis.json a6518e2e35ce01e7e65b0cf8a95ced88482d7121 data/create/advancements/recipes/create.base/crafting/kinetics/portable_fluid_interface.json
0cc198acbc6355e66febbb10c890a15517043290 data/create/advancements/recipes/misc/crafting/kinetics/rope_pulley.json 46cfd0dfc5f94b8dd3f879660f580f8797192e9a data/create/advancements/recipes/create.base/crafting/kinetics/portable_storage_interface.json
0171ff48525e4f52556d4052ce61a2651c94ee4e data/create/advancements/recipes/misc/crafting/kinetics/rose_quartz_lamp.json b296ad4df0631fdc1f2bce405d5618fc80a8c327 data/create/advancements/recipes/create.base/crafting/kinetics/propeller.json
a48ba9ff9296828767929cdece32b105911def6b data/create/advancements/recipes/misc/crafting/kinetics/rotation_speed_controller.json 9f1e5525e24b0d03e2536e5555359e5e3c7f2286 data/create/advancements/recipes/create.base/crafting/kinetics/radial_chassis.json
b0015a697c8c9e4de401822be7146b503b2a9517 data/create/advancements/recipes/misc/crafting/kinetics/sail_framefrom_conversion.json e24541eaeeb7d40c1f82c2d2c663e35e77633be5 data/create/advancements/recipes/create.base/crafting/kinetics/rope_pulley.json
df5d477fe7e901ac33187160081061ace0a291a9 data/create/advancements/recipes/misc/crafting/kinetics/schedule.json 9aa077afe33c25eea88b879ad87e6e04092b275c data/create/advancements/recipes/create.base/crafting/kinetics/rose_quartz_lamp.json
b3222b4ad0e076b5dbedb93e49e947a960572f95 data/create/advancements/recipes/misc/crafting/kinetics/secondary_linear_chassisfrom_conversion.json f5a30e6fdd9feaa6debe5d713419e5353d243b5b data/create/advancements/recipes/create.base/crafting/kinetics/rotation_speed_controller.json
319154470d3c5289e1657947b312323e6bc0da52 data/create/advancements/recipes/misc/crafting/kinetics/sequenced_gearshift.json 784a456abf36cc407f440e9354827e6cb6e5d4d6 data/create/advancements/recipes/create.base/crafting/kinetics/sail_framefrom_conversion.json
b7b1cddd6964faf54efa794aa6697c16855c968c data/create/advancements/recipes/misc/crafting/kinetics/shaft.json 81e459c334d7645b1cd1777af57576029949bb0b data/create/advancements/recipes/create.base/crafting/kinetics/schedule.json
28b94c9f030cd0f4c4c68f2c6123566066af4a0f data/create/advancements/recipes/misc/crafting/kinetics/smart_chute.json bd9bad79f220ec42b1bb3f56041a9390f4923ba9 data/create/advancements/recipes/create.base/crafting/kinetics/secondary_linear_chassisfrom_conversion.json
4f991a309952d3e1dc5dc3814fdc1f674bf09e41 data/create/advancements/recipes/misc/crafting/kinetics/smart_fluid_pipe.json eeafd91b680ec02f5bc45302924f6f3fd5c706ef data/create/advancements/recipes/create.base/crafting/kinetics/sequenced_gearshift.json
a6dfc4c646a359ebfb4fc839bde6ebcde54ae1a6 data/create/advancements/recipes/misc/crafting/kinetics/speedometer.json 3e407ded7ff0dde48cbc22b8db5f48743bf04c94 data/create/advancements/recipes/create.base/crafting/kinetics/shaft.json
a48f86ff4efc8f322feef41db862a39e681043b9 data/create/advancements/recipes/misc/crafting/kinetics/speedometerfrom_conversion.json 70807bda145cbba1db92b84ec40e1ba53b8b022c data/create/advancements/recipes/create.base/crafting/kinetics/smart_chute.json
d2315557fb6d9c5086c8801033b6562c775e35e6 data/create/advancements/recipes/misc/crafting/kinetics/spout.json 108f6658b0c3ab1166dc8802de312a4fb4ab238d data/create/advancements/recipes/create.base/crafting/kinetics/smart_fluid_pipe.json
af6f20b7eed6052c1455018794bdc5d6afa12d0b data/create/advancements/recipes/misc/crafting/kinetics/steam_engine.json 162d5df15a994c6af6ed2835dea82efe0062f095 data/create/advancements/recipes/create.base/crafting/kinetics/speedometer.json
31322b2dd244d9a45e2850cbb97a6a894ac92bb0 data/create/advancements/recipes/misc/crafting/kinetics/steam_whistle.json a8e99cadf16a16b137afca1b13f83d9e181c0784 data/create/advancements/recipes/create.base/crafting/kinetics/speedometerfrom_conversion.json
0123b8926c6e37551b8e3fdb72f44da181cd4e03 data/create/advancements/recipes/misc/crafting/kinetics/sticker.json a81deb7155fa93e3d76c034e28aa7a5c0c2778fe data/create/advancements/recipes/create.base/crafting/kinetics/spout.json
c510077aaf3b7b8cea230578f835bf4e679089bf data/create/advancements/recipes/misc/crafting/kinetics/sticky_mechanical_piston.json 601377dc97f21688369a89fc15adcf85f0a5da94 data/create/advancements/recipes/create.base/crafting/kinetics/steam_engine.json
8e2048e5e795b971ede965d56b2eb46eb71e106e data/create/advancements/recipes/misc/crafting/kinetics/stressometerfrom_conversion.json 56abc0f7f60edbbcfd9ff167d52d3a2d309e7199 data/create/advancements/recipes/create.base/crafting/kinetics/steam_whistle.json
fc9a10e60637cb2da98825a1d79359431fdd8e9b data/create/advancements/recipes/misc/crafting/kinetics/super_glue.json ac12278d65d59b168086867c69354848f906316c data/create/advancements/recipes/create.base/crafting/kinetics/sticker.json
32086aec6acc2e236ccd1bdcad8077355cfbc801 data/create/advancements/recipes/misc/crafting/kinetics/track_observer.json 4a74c1de70258281987a0fedc03437812c440376 data/create/advancements/recipes/create.base/crafting/kinetics/sticky_mechanical_piston.json
4c109779fa881db7589ced1b7816b48700ad9d17 data/create/advancements/recipes/misc/crafting/kinetics/track_observer_from_other_plates.json 5ae5808b464ee7b9e810c1dc81ef945a28520c27 data/create/advancements/recipes/create.base/crafting/kinetics/stressometerfrom_conversion.json
7fe5ed588d5a4380fab9437311eb5ca80b7764af data/create/advancements/recipes/misc/crafting/kinetics/track_signal.json 70c16dcff438b8009524a247ba6f8ce17c68ef4f data/create/advancements/recipes/create.base/crafting/kinetics/super_glue.json
d05bf9eb0708fd08727414a05432119547683c82 data/create/advancements/recipes/misc/crafting/kinetics/track_station.json f7ec77491cba04c96a5df0f3a9b66dfdeecd6a67 data/create/advancements/recipes/create.base/crafting/kinetics/track_observer.json
12dfae029c11896db2ad9fe7bf833d8e2bd4ac73 data/create/advancements/recipes/misc/crafting/kinetics/train_door.json f24315de4ad61c85094c1620d47ccc02f94e4498 data/create/advancements/recipes/create.base/crafting/kinetics/track_observer_from_other_plates.json
13c05d4a0d21a98633f332cf4e29fa9d984c2b97 data/create/advancements/recipes/misc/crafting/kinetics/train_trapdoor.json eb90657a95c9aecdc3b8ab9aeeb6abe5ccb7ff76 data/create/advancements/recipes/create.base/crafting/kinetics/track_signal.json
2a765b5135e700fc7051d4b66e6be8d971445bda data/create/advancements/recipes/misc/crafting/kinetics/turntable.json 78cf68d5afca01ea37e2d32f54e655ec87924be1 data/create/advancements/recipes/create.base/crafting/kinetics/track_station.json
8eca7b132f53c805ef71bbe148a4b6eb482d5d0d data/create/advancements/recipes/misc/crafting/kinetics/vertical_gearboxfrom_conversion.json 3fa26c6b2a5ef120aa47b35f7d9eb06fec090149 data/create/advancements/recipes/create.base/crafting/kinetics/turntable.json
dd4849e6ac91a82a4663477dd2ea51375d184bb3 data/create/advancements/recipes/misc/crafting/kinetics/water_wheel.json babadcfb9adc3527e03e8f8db57a34cacfffa6a5 data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearboxfrom_conversion.json
3bee8e0d4e324868eff29a6a86080d7a8656f298 data/create/advancements/recipes/misc/crafting/kinetics/weighted_ejector.json 0fa99ddc934336fb3d40a69a9ed461dba1d6b99e data/create/advancements/recipes/create.base/crafting/kinetics/water_wheel.json
370503ffc2272ceac8e48cabb745d9b3fd255745 data/create/advancements/recipes/misc/crafting/kinetics/whisk.json 6797fd44ff94f444fefde51402068df41b07b35f data/create/advancements/recipes/create.base/crafting/kinetics/weighted_ejector.json
45e1e9501b61eebec228cd2b9832103ec837f391 data/create/advancements/recipes/misc/crafting/kinetics/white_sail.json 50fe4d7138e7fb2845be8662b4ef5a75fa3c2665 data/create/advancements/recipes/create.base/crafting/kinetics/whisk.json
7f4908fac450a7a8d74ad7d4fbbe970f177d272c data/create/advancements/recipes/misc/crafting/kinetics/white_sailfrom_conversion.json e3192f97e211bb8a091ab02c9e53e7b901f1efbd data/create/advancements/recipes/create.base/crafting/kinetics/white_sail.json
74f446a14c9b70174d2a4d59d99907322ea74c61 data/create/advancements/recipes/misc/crafting/kinetics/windmill_bearing.json ea80606f44b28da43ffcd0d8b0d775f4d135d7de data/create/advancements/recipes/create.base/crafting/kinetics/white_sailfrom_conversion.json
28e5044c7c9cfdefa23f9371ee995c04ecb10d2c data/create/advancements/recipes/misc/crafting/kinetics/wooden_bracket.json c60164c566ae69770bca1298827f1b9cd29b10b6 data/create/advancements/recipes/create.base/crafting/kinetics/windmill_bearing.json
fddb0494d761952a22046cd17b74ff3de1e50246 data/create/advancements/recipes/misc/crafting/kinetics/wrench.json 88bab58867cbd501b0362695540abfb0c224c47e data/create/advancements/recipes/create.base/crafting/kinetics/wooden_bracket.json
9b2cf526d26bda023d0ed656ce34855fdd5f6f0d data/create/advancements/recipes/misc/crafting/logistics/andesite_funnel.json dd61958220601f34fdacc349f3caf286d450896e data/create/advancements/recipes/create.base/crafting/kinetics/wrench.json
aa20a408807e09045d1f50b8c50311229272593c data/create/advancements/recipes/misc/crafting/logistics/andesite_tunnel.json ddd41210dfa2d30b3872c9798b677746bc4e5426 data/create/advancements/recipes/create.base/crafting/logistics/andesite_funnel.json
f3e387ae41a55cdb5ff745f40e2ddb5e2595e9b8 data/create/advancements/recipes/misc/crafting/logistics/brass_funnel.json e7820ca532f075b43b4fea791ad64ab290f25bdc data/create/advancements/recipes/create.base/crafting/logistics/andesite_tunnel.json
dc61a327753684a0d8a7bcc408d656b53ac633b1 data/create/advancements/recipes/misc/crafting/logistics/brass_tunnel.json 79e47eb39470f604b3f26ef8af82d3e64611514e data/create/advancements/recipes/create.base/crafting/logistics/brass_funnel.json
03c367840951af268047c407b15aad52f0b094b4 data/create/advancements/recipes/misc/crafting/logistics/content_observer.json 756a724f71c5946017b6718eb93bff7fe73d4f7f data/create/advancements/recipes/create.base/crafting/logistics/brass_tunnel.json
09454f1d4db813c89a0a2f3af966298fc5f7da7b data/create/advancements/recipes/misc/crafting/logistics/display_link.json 2302e30a226162adb98fccc9e0916203e6744aab data/create/advancements/recipes/create.base/crafting/logistics/content_observer.json
95b357cbac39acfbc68ac04d0d4681a4d91746ee data/create/advancements/recipes/misc/crafting/logistics/powered_latch.json f1e6f8e73156edebafe619144e82e01c0b5ec93e data/create/advancements/recipes/create.base/crafting/logistics/display_link.json
ef84b382bd4f6ba9558574f2c8e63030813594e9 data/create/advancements/recipes/misc/crafting/logistics/powered_toggle_latch.json f33284d7166e5c6e3adf1b6dca662eb97636b939 data/create/advancements/recipes/create.base/crafting/logistics/powered_latch.json
c443707391ce79dc1ec8cfacee74757b0c00bd3e data/create/advancements/recipes/misc/crafting/logistics/pulse_extender.json 06a42ee83527fdceb7d870b0e4a67245453a2c34 data/create/advancements/recipes/create.base/crafting/logistics/powered_toggle_latch.json
77c3df89a06fc10cd8bd1cc35f0353441860ec11 data/create/advancements/recipes/misc/crafting/logistics/pulse_repeater.json 2116d36fd16e586f9e4b8cdcc3e3428ad71cedb8 data/create/advancements/recipes/create.base/crafting/logistics/pulse_extender.json
96b4998626e624fb79c79fb754c28b21ddc27254 data/create/advancements/recipes/misc/crafting/logistics/redstone_contact.json c7c6ca10962f5e42da5319841fbf2866cca30dd3 data/create/advancements/recipes/create.base/crafting/logistics/pulse_repeater.json
1b50ed47c37e48d1112c76059574eed71ecea4e5 data/create/advancements/recipes/misc/crafting/logistics/redstone_link.json 52ad675c3aaee020376264f9580fcadf12655b21 data/create/advancements/recipes/create.base/crafting/logistics/redstone_contact.json
831588b3f29411d5c4b358006051152eb2b23e6b data/create/advancements/recipes/misc/crafting/logistics/stockpile_switch.json 9d7e5cf97bb11473b78d390e936792d9d3c1c276 data/create/advancements/recipes/create.base/crafting/logistics/redstone_link.json
cb416511a219d2bc5806c6880c01820a8b563b80 data/create/advancements/recipes/misc/crafting/materials/andesite_alloy.json a057a1729592691b40f4f1f909d9109565deb28f data/create/advancements/recipes/create.base/crafting/logistics/stockpile_switch.json
3b65a04da4e16442bfa8accfe209b7c5342b1db9 data/create/advancements/recipes/misc/crafting/materials/andesite_alloy_block.json b350925f30c7309038c7f33ee81bda6ada6c4794 data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy.json
2715b888b6d96ee4c7208af21bb4dfb1a1bd544c data/create/advancements/recipes/misc/crafting/materials/andesite_alloy_from_block.json 4efa2e6c87e853fee8e9c1a3bc4924add974c35e data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy_from_block.json
2ca100aa71cc3419c47d1028f5c77aa9387ab216 data/create/advancements/recipes/misc/crafting/materials/andesite_alloy_from_zinc.json 58b40049eee5cce2c5d49a0add95732eb49098d0 data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy_from_zinc.json
47e965b7ba2b12000efcf6f9090b5622833cc9ab data/create/advancements/recipes/misc/crafting/materials/brass_block_from_compacting.json e8db20956f6bbf0a895e3d790672ae52d198fc7a data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_compacting.json
8aa51bd8685a70f200506d3efd4e73ce9b2d7370 data/create/advancements/recipes/misc/crafting/materials/brass_ingot_from_compacting.json 909a449ee9ec80894ba93df9be40dc3b87d13d69 data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_decompacting.json
9e703c5fa1bd44eb6581e745f06923d40126ada4 data/create/advancements/recipes/misc/crafting/materials/brass_ingot_from_decompacting.json d2823e614d4a333f725d3dce3e543f047f3adbcb data/create/advancements/recipes/create.base/crafting/materials/brass_nugget_from_decompacting.json
4cb9d1fc5289b11df4610a85aa2cd67877556b32 data/create/advancements/recipes/misc/crafting/materials/brass_nugget_from_decompacting.json f7207947160f3aa549e953bc95e3a64d13bc974c data/create/advancements/recipes/create.base/crafting/materials/copper_nugget.json
98812ebb02a081822b3f76936bee8380ad9ed267 data/create/advancements/recipes/misc/crafting/materials/copper_ingot.json 2da087da9ad33e060e8122e260474d5a2ca3575c data/create/advancements/recipes/create.base/crafting/materials/electron_tube.json
7924ef6d5243abc7259e4be0acafcaf3d8d08a63 data/create/advancements/recipes/misc/crafting/materials/copper_nugget.json 494ff67507741956a0f02f73f341b192c66a92f4 data/create/advancements/recipes/create.base/crafting/materials/experience_nugget_from_block.json
d4879e7721bdbb6c7029ac88ff5684acec8223d6 data/create/advancements/recipes/misc/crafting/materials/electron_tube.json 43333df116133be43c8c164ddd611e2f74e5e540 data/create/advancements/recipes/create.base/crafting/materials/raw_zinc.json
04b844e7f79f35ad4ad2e1d4dcb1d34e82cce33a data/create/advancements/recipes/misc/crafting/materials/experience_block.json e59ad68feb5898d04394970ba9d57566b9c19d7e data/create/advancements/recipes/create.base/crafting/materials/red_sand_paper.json
4defe740963f64be169996722794bc8b26c3d456 data/create/advancements/recipes/misc/crafting/materials/experience_nugget_from_block.json 43dc5381b6df36905e086e63ed497f36eff8e45d data/create/advancements/recipes/create.base/crafting/materials/rose_quartz.json
aa2067bedd73d45dcf4bf2c1a30d227d4de4f57d data/create/advancements/recipes/misc/crafting/materials/raw_zinc.json 2a25ea763292539970c354073b267e106a33fd0e data/create/advancements/recipes/create.base/crafting/materials/sand_paper.json
06a3797c9c16641e05a257980a6afc522d2635b5 data/create/advancements/recipes/misc/crafting/materials/raw_zinc_block.json d4cc3d549e64c259c5a8cd5b7afa4b0cd28cbe38 data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_compacting.json
59018ba1b05242dfc25d5de72fcff572ab18d424 data/create/advancements/recipes/misc/crafting/materials/red_sand_paper.json ca5777a2ac86c304a09adeaa6fd8ba654fa859c7 data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_decompacting.json
03560f4fe648ea51160efaff89d3b7ef0cd87d69 data/create/advancements/recipes/misc/crafting/materials/rose_quartz.json cedbd75bbe4fa7fd0504183e284a5099bc4db39b data/create/advancements/recipes/create.base/crafting/materials/zinc_nugget_from_decompacting.json
5aeaf7bdfb4a8abec97af7b055ea9209221fef9d data/create/advancements/recipes/misc/crafting/materials/rose_quartz_tilesfrom_conversion.json ce2986087f7be38db504c202876c8a3c2c885555 data/create/advancements/recipes/create.base/crafting/schematics/empty_schematic.json
489c20709121bfe0408566b0b89dfa685efef8e4 data/create/advancements/recipes/misc/crafting/materials/sand_paper.json 4180e78185f03013d8affe9d54fc761280abf8d3 data/create/advancements/recipes/create.base/crafting/schematics/schematicannon.json
4fa119d82266d6b8390433842d610effb1a8ace1 data/create/advancements/recipes/misc/crafting/materials/small_rose_quartz_tilesfrom_conversion.json 8379bfe85932f3681f4a59061a1c76192c565c3c data/create/advancements/recipes/create.base/crafting/schematics/schematic_and_quill.json
0d60ad8d0436ed33a8013616390ca5e970e042ee data/create/advancements/recipes/misc/crafting/materials/zinc_block_from_compacting.json ae2e2c9a612d818eab78f140799159fbc5ec0159 data/create/advancements/recipes/create.base/crafting/schematics/schematic_table.json
8b9692de75d0c1d694bb3a2ce2316200ef3ff197 data/create/advancements/recipes/misc/crafting/materials/zinc_ingot_from_compacting.json 2181cb41ab36db7d73514cfb80feb5b5ec67f56a data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_crushed.json
dd7c250fa8e41cbaae65754f38b8861397718ae4 data/create/advancements/recipes/misc/crafting/materials/zinc_ingot_from_decompacting.json de8a70a51962a8a79c67cc8d71d9855b7ec68f12 data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_ore.json
05a4420a08df24680b8a7c5c94d9a7ad1d13c0df data/create/advancements/recipes/misc/crafting/materials/zinc_nugget_from_decompacting.json d4b80705766e648ca07c682ef53c5e7a8b5011bb data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_raw_ore.json
ec99015f13bb194dfb197ea0839cceaed5135148 data/create/advancements/recipes/misc/crafting/palettes/scorchia.json 9e6d2bd857680a6c6371deaa0c60a492c86225e7 data/create/advancements/recipes/create.palettes/crafting/kinetics/andesite_door.json
541c3cb26e0cae9ffd3df94829e5f55a62240bd8 data/create/advancements/recipes/misc/crafting/schematics/empty_schematic.json c5f9897bf57953bf1ac6c4c2a2f0a9d3c95e655b data/create/advancements/recipes/create.palettes/crafting/kinetics/brass_door.json
3e73c3336f3ab13365d439c491b2e2ce6de6e401 data/create/advancements/recipes/misc/crafting/schematics/schematicannon.json 769efe6975d4266342f7fd6b1003d1352fb67c7b data/create/advancements/recipes/create.palettes/crafting/kinetics/copper_door.json
6e0b7056d229fc949cc7386aa307d0870929f555 data/create/advancements/recipes/misc/crafting/schematics/schematic_and_quill.json fce50c246fb7cc5dad19db7602ccc71ba13403a8 data/create/advancements/recipes/create.palettes/crafting/kinetics/framed_glass_door.json
f0d041509b3752b3ec6c4ce2b2c6eef9825a0685 data/create/advancements/recipes/misc/crafting/schematics/schematic_table.json d32c2625d6dd15ad1978211c41521887f95e7577 data/create/advancements/recipes/create.palettes/crafting/kinetics/framed_glass_trapdoor.json
0ac95fd4b991a6c61c1d03cc6a6f2f345530f62a data/create/advancements/recipes/misc/smelting/bread.json 80197e7c951bd45f532af7c952c6c989433433de data/create/advancements/recipes/create.palettes/crafting/kinetics/metal_girder.json
53cb4643430e3fd69f81c375f3e334a3d6014128 data/create/advancements/recipes/misc/smelting/copper_ingot_from_crushed.json 77f181550c780925243cc268d29aceebfba52915 data/create/advancements/recipes/create.palettes/crafting/kinetics/train_door.json
cd04ca4af45d96bfba198f770257d58bdd508bec data/create/advancements/recipes/misc/smelting/glass_from_framed_glass.json d74de1be1e383c3d5814bd7e42cc0a60ea75e30e data/create/advancements/recipes/create.palettes/crafting/kinetics/train_trapdoor.json
9fd42963e3d6101ee57f378add89c491381397d8 data/create/advancements/recipes/misc/smelting/glass_from_horizontal_framed_glass.json 6d547e7c3dad06dd4d3ff64d0aac380683d26a11 data/create/advancements/recipes/create.palettes/crafting/materials/andesite_alloy_block.json
368dabb93d16fe4948f439cef0f5763a5110cb95 data/create/advancements/recipes/misc/smelting/glass_from_tiled_glass.json e35662919f851ca1c27b56cf71e61cce611a00d7 data/create/advancements/recipes/create.palettes/crafting/materials/brass_block_from_compacting.json
7b77758972dc4739493b65a11d882ce7e26bc00d data/create/advancements/recipes/misc/smelting/glass_from_vertical_framed_glass.json 80edd0fbd082a4b75814f812c635733295206549 data/create/advancements/recipes/create.palettes/crafting/materials/experience_block.json
bb87cb8787644e20b3418d6f57726f2ca70b0aae data/create/advancements/recipes/misc/smelting/glass_pane_from_framed_glass_pane.json 2d34f50774357f9ac8a4ae2e23fb668757e09daa data/create/advancements/recipes/create.palettes/crafting/materials/raw_zinc_block.json
6e41e20d77d3c2a04eb95e606451922cb52f9702 data/create/advancements/recipes/misc/smelting/glass_pane_from_horizontal_framed_glass_pane.json a5130418a2b8f2354fe9fd77e7c83b26e2892330 data/create/advancements/recipes/create.palettes/crafting/materials/rose_quartz_tilesfrom_conversion.json
70342b3f5c5482caa82e0afcd559c7b200d9f247 data/create/advancements/recipes/misc/smelting/glass_pane_from_tiled_glass_pane.json 30522b55773b9f94b46345478efeff4426f88757 data/create/advancements/recipes/create.palettes/crafting/materials/small_rose_quartz_tilesfrom_conversion.json
8635e2becb91b0e4e754fd79d231300492b8afce data/create/advancements/recipes/misc/smelting/glass_pane_from_vertical_framed_glass_pane.json 26928e1e0af9e9af720d197343898ce4c236608d data/create/advancements/recipes/create.palettes/crafting/materials/zinc_block_from_compacting.json
d76d08c3efcf9174ee2980796aa04c67fe9443eb data/create/advancements/recipes/misc/smelting/gold_ingot_from_crushed.json a23f39321d836b0bb175fa3ad066044af3eefb1b data/create/advancements/recipes/create.palettes/crafting/palettes/scorchia.json
1e88edf27ed1f83031f9d71cad8f3f4388f57b85 data/create/advancements/recipes/misc/smelting/ingot_aluminum_compat_immersiveengineering.json de7e685c1d81e32d50bfe0445ff5062faff7cbc5 data/create/advancements/recipes/create.palettes/smelting/scoria.json
2b6b739a2f0ad1f33db8090aa0e77c8149d67dbf data/create/advancements/recipes/misc/smelting/ingot_lead_compat_immersiveengineering.json 6fb78f08dcde45b763d878f69c8ea3e08cdf1ac7 data/create/advancements/recipes/decorations/smelting/glass_pane_from_framed_glass_pane.json
7392d585e5409438f70ddb43ebba58b35609265b data/create/advancements/recipes/misc/smelting/ingot_lead_compat_mekanism.json 21eeaaa865c069d49dfb85161ea26065f949572c data/create/advancements/recipes/decorations/smelting/glass_pane_from_horizontal_framed_glass_pane.json
ded4f782c4ff86ffeeae15a26cae065401285181 data/create/advancements/recipes/misc/smelting/ingot_nickel_compat_immersiveengineering.json 203c4a4e8fc1959c2e119f26d13f18db803aed06 data/create/advancements/recipes/decorations/smelting/glass_pane_from_tiled_glass_pane.json
471da96bdc50929e50a4255998c365f6dd74f66b data/create/advancements/recipes/misc/smelting/ingot_osmium_compat_mekanism.json 6bdcc8384564f207c22d4240b341c8ec31188a6d data/create/advancements/recipes/decorations/smelting/glass_pane_from_vertical_framed_glass_pane.json
ef01495983cd871247bf756bcc4289a0fac0ddca data/create/advancements/recipes/misc/smelting/ingot_silver_compat_immersiveengineering.json c070b31d39acd1f9a1f5ee9ec23d8e977a2a2be4 data/create/advancements/recipes/food/campfire_cooking/bread.json
600ffc56676b16e543526880d4a3e6d99a13fcc6 data/create/advancements/recipes/misc/smelting/ingot_tin_compat_mekanism.json ca0dbfc3222435fb25e9c188bd1c2e44375ca8e0 data/create/advancements/recipes/food/crafting/curiosities/cake.json
288ad82d27d3565e474e37ee692c8b4f286654ec data/create/advancements/recipes/misc/smelting/ingot_uranium_compat_immersiveengineering.json 745addcb7d24943c9aa05f16ae1e3d645425093f data/create/advancements/recipes/food/smelting/bread.json
fee6714c2f63317cfb01bd5ce2ea91ba891b4e46 data/create/advancements/recipes/misc/smelting/ingot_uranium_compat_mekanism.json d4012346e139ef643ac4c83713cbe6b5a5beac8a data/create/advancements/recipes/food/smoking/bread.json
c31f83bd1e3fc96c4317f9fbf096f6d62786302d data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json 67e218f34cf2eb55ad069628ea215fa93979cdb9 data/create/advancements/recipes/misc/blasting/copper_ingot_from_crushed.json
c8978574ede8f2c9c5a55c9d7ecfeac5e32ceba3 data/create/advancements/recipes/misc/smelting/lead_ingot_compat_thermal.json 3d26689c362908cd665fc66cf628e2b1a117457d data/create/advancements/recipes/misc/blasting/gold_ingot_from_crushed.json
497978714e828b74dddf12d32d0dcc1908b2c7c9 data/create/advancements/recipes/misc/smelting/nickel_ingot_compat_thermal.json 8770c28909fce8196117a541c045eb5a7fc4d0e4 data/create/advancements/recipes/misc/blasting/iron_ingot_from_crushed.json
3e7f0954559c7f2d6e0e39b74f16aea9ce355c75 data/create/advancements/recipes/misc/smelting/scoria.json 37b0c39f4cd0f1c983b78f6d6c0bafd766595da5 data/create/advancements/recipes/misc/crafting/appliances/slime_ball.json
c03382450df717eed0c0c8583a08a07200fadd14 data/create/advancements/recipes/misc/smelting/silver_ingot_compat_thermal.json 1c4b5bceed1aed2f09c4544cefe71fae4d1fc1bb data/create/advancements/recipes/misc/crafting/materials/copper_ingot.json
0e5699d5a440d258fb8bdb1a1f85930f6eb32cd8 data/create/advancements/recipes/misc/smelting/tin_ingot_compat_thermal.json 646003d927eed232ebfd817fe5af533f55ca5e17 data/create/advancements/recipes/misc/smelting/copper_ingot_from_crushed.json
1e22edba76fc82d3d06d72e3325fa015259561cb data/create/advancements/recipes/misc/smelting/zinc_ingot_from_crushed.json 09f0bef676bc7635fab11f670aa422c8c3f3f1d5 data/create/advancements/recipes/misc/smelting/gold_ingot_from_crushed.json
b8d5ef1eba4521441658d4c051861ecf9cc96102 data/create/advancements/recipes/misc/smelting/zinc_ingot_from_ore.json 5cc981625fae8340071022b8a27babb36e51eecf data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json
e4ffb421edd14254dc06028c7c43c58df2f42d18 data/create/advancements/recipes/misc/smelting/zinc_ingot_from_raw_ore.json 5fb61ed3f88a2da15705f5672d2eca002b44b065 data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json
42f1375bf3004cfd891a5fbb05352f578636dd75 data/create/advancements/recipes/misc/smoking/bread.json ab7d109fd99b2e6b84941955529941eea15196af data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json
3c9dcf347eef42d0cca69ae5bc4a61fe90fb27c8 data/create/recipes/blasting/copper_ingot_from_crushed.json d6b68a6fb4b7872f800585a8616cfe1ff1a0428c data/create/recipes/blasting/copper_ingot_from_crushed.json
cbd86c583643e65a0d9b7950dcf593cdf6d43d77 data/create/recipes/blasting/gold_ingot_from_crushed.json 2f24bbc0a6197232c7df975cefa76f8bededb2e3 data/create/recipes/blasting/gold_ingot_from_crushed.json
5b1b7981636b211a956e37356423c2ba65c8042c data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json 403992a2ecfe88e639c0165b78d41c3baea5fc83 data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json
f794d2eab3922ea7765866d473eb61c74a2678c5 data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json c48b2f2981a7a45629bcb9b9dc3fad9150dd39a5 data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json
7acb7c5bc88b238e914abc07f979c33f8d33123e data/create/recipes/blasting/ingot_lead_compat_mekanism.json 10b1df3b14d2854e3d7948b27f0b8703fde48012 data/create/recipes/blasting/ingot_lead_compat_mekanism.json
79ad6f95b7f4c75cc0c3fadcf8e16be077bd5874 data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json 53e2061883385cc4cffff69a8b4d41e6f0e6d533 data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json
f403ea128ab6c8bc3e4c4b660bea3d8edb8c8c30 data/create/recipes/blasting/ingot_osmium_compat_mekanism.json 2a83dd769ab014ad31c67cb4666fce4f2888ace3 data/create/recipes/blasting/ingot_osmium_compat_mekanism.json
2010401b8c4225226fb213375ba9d3b1ee8a451b data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json 06109d98234bd7d6897661179c7467b8d443ec40 data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json
b979e859e631de8d229f08b0924d37212c7d92ee data/create/recipes/blasting/ingot_tin_compat_mekanism.json 1e1db27dbc85323f99bccf163d46b9c6c69544aa data/create/recipes/blasting/ingot_tin_compat_mekanism.json
011179ff485992666fdad594d7daa050e44844c7 data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json 586989f3e7f8b39a8e145ceeac3bd63e3297e007 data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json
0f6e3a23e0e1bb6bac077fac2b9cfcf50f3459f1 data/create/recipes/blasting/ingot_uranium_compat_mekanism.json 1a4e639ff3ed4749eedd0591e07e18a1ba8d0847 data/create/recipes/blasting/ingot_uranium_compat_mekanism.json
19d33cb473f7ba1065a7747700248cd8d6738732 data/create/recipes/blasting/iron_ingot_from_crushed.json 9b20753f359219e37bc10bdc11136782fcede2fd data/create/recipes/blasting/iron_ingot_from_crushed.json
701da66616d4d9c3293e410af5e0dd764c9f63e1 data/create/recipes/blasting/lead_ingot_compat_thermal.json d53f7304f2a85b70ce95f7e48e5708b11e69b946 data/create/recipes/blasting/lead_ingot_compat_thermal.json
6a10c8bb0b2a939edd79f159ec5acb9b137283c3 data/create/recipes/blasting/nickel_ingot_compat_thermal.json f1839da26ba1db016ffff94fe60bf2830379599e data/create/recipes/blasting/nickel_ingot_compat_thermal.json
e1481cbde99b04ce08c7fffdbd24233eb3bb8d0d data/create/recipes/blasting/silver_ingot_compat_thermal.json da45b142e2c4f13b5df06c1a45c6c500ecf44334 data/create/recipes/blasting/silver_ingot_compat_thermal.json
150e9b6eaab4b98a326d915bbfe33fcdb95e2beb data/create/recipes/blasting/tin_ingot_compat_thermal.json 883d9aaa0a05d8b7d1f6c7c09fe5e60d830ee68e data/create/recipes/blasting/tin_ingot_compat_thermal.json
b3c4585dc6ed9c4a38d7923ae399b88ab8912df9 data/create/recipes/blasting/zinc_ingot_from_crushed.json f298705939b5ade9f866a8c08f7d8d74afe3e2ee data/create/recipes/blasting/zinc_ingot_from_crushed.json
118d41c4194877ae9fffc3a72aae4bec0e9b3b57 data/create/recipes/blasting/zinc_ingot_from_ore.json 3cb807025b9ba230848119fc82ffcb704a557f37 data/create/recipes/blasting/zinc_ingot_from_ore.json
7b561a6fc65b9cede6dac0aa9122408ea49767df data/create/recipes/blasting/zinc_ingot_from_raw_ore.json 495b514e749f6325c8cd51b7ed64fcf18777f5a2 data/create/recipes/blasting/zinc_ingot_from_raw_ore.json
785636ad3752d7a78059757d7ba21118be2a3289 data/create/recipes/campfire_cooking/bread.json 1ccff315d6b56db32a4843d48b369459aa0ad86d data/create/recipes/campfire_cooking/bread.json
208487a2d020c2603391f55e815a39a28f8fd9e8 data/create/recipes/crafting/appliances/attribute_filter_clear.json fdbc0d69b7f9b454dd8babd71ab1023f5ce2ae3d data/create/recipes/crafting/appliances/attribute_filter_clear.json
66c24da136abee4521d788df83f55b1c224d19fe data/create/recipes/crafting/appliances/clipboard.json a6fb189a48fdbf5b0561d6812d1421a04223d4e0 data/create/recipes/crafting/appliances/clipboard.json
28d1dabd689b855964151100a80247b2ea150bd4 data/create/recipes/crafting/appliances/clipboard_clear.json c5f74c6393ebd49b94a54a2c4a630887df8b6ce8 data/create/recipes/crafting/appliances/clipboard_clear.json
3c61969361178e6346d9bc4678e2b112e297c870 data/create/recipes/crafting/appliances/copper_backtank.json dbb9ba88806a7b2ea0c1bd95062a0bceb3630662 data/create/recipes/crafting/appliances/copper_backtank.json
0302f3ce41952dabc9d27bf413cd6e163888e8ee data/create/recipes/crafting/appliances/copper_diving_boots.json ffedb9deeaa35ec16789fa21f601613ef1504d79 data/create/recipes/crafting/appliances/copper_diving_boots.json
313185edd53998c254f7dcf29e11a406c118c45c data/create/recipes/crafting/appliances/copper_diving_helmet.json 7811a5c7e60df63075e8e17476af5a3590286167 data/create/recipes/crafting/appliances/copper_diving_helmet.json
3e3f71d579ec7453e453d5b65aaee3c43169b679 data/create/recipes/crafting/appliances/crafting_blueprint.json b8665ff12b3736f41dd6bd096ad6e24992be554b data/create/recipes/crafting/appliances/crafting_blueprint.json
b7c8f3c5e80749c6c38d5c0153dc68a79c32535f data/create/recipes/crafting/appliances/dough.json 206780d6050ba937571c49ae669ede12fc92f08d data/create/recipes/crafting/appliances/dough.json
409b5d70ee1ef9164c327d79472e6d66ce55dec6 data/create/recipes/crafting/appliances/filter_clear.json 10411c8e682fa61ea72e5e8b363b476a7dce1506 data/create/recipes/crafting/appliances/filter_clear.json
265ead7993ae9e9b617dbfae749a77fed6b7b1ba data/create/recipes/crafting/appliances/linked_controller.json e6bfe9d4b015546d970f5ece35c08a642f9167b6 data/create/recipes/crafting/appliances/linked_controller.json
32d4ba22e5133284793b4854f1a6798dd1f50ea0 data/create/recipes/crafting/appliances/netherite_backtank.json d948285dc2344dbada3957be890d4cb75f686697 data/create/recipes/crafting/appliances/netherite_backtank.json
de4c3f66e8664c607900c672ee1c20d3442fdebc data/create/recipes/crafting/appliances/netherite_backtank_from_netherite.json d4ed98d873a9eb8faf7c01e7cd0e9bf5b635488d data/create/recipes/crafting/appliances/netherite_backtank_from_netherite.json
b5b29558d4efe161f6edaeae2c449735d46261ca data/create/recipes/crafting/appliances/netherite_diving_boots.json f3f8b62e37fd29bd54bbb1ae325b2b1b17f2b197 data/create/recipes/crafting/appliances/netherite_diving_boots.json
5a6d3e59e8fa623b147600cae7065e22af9c2cbf data/create/recipes/crafting/appliances/netherite_diving_boots_from_netherite.json ac0debc34634635a6ea2f75230f70f35ceebf5ef data/create/recipes/crafting/appliances/netherite_diving_boots_from_netherite.json
5eae779a8c16a4efb8fa61996c608bc44c55da7f data/create/recipes/crafting/appliances/netherite_diving_helmet.json ab4f1cd6c051866a2d1994c7cbae48a0938a16a1 data/create/recipes/crafting/appliances/netherite_diving_helmet.json
26eec27acd056e62510bc831cc6e6823a45c51b8 data/create/recipes/crafting/appliances/netherite_diving_helmet_from_netherite.json afd744ca1c860754f2e44a490638c3389d3f7522 data/create/recipes/crafting/appliances/netherite_diving_helmet_from_netherite.json
0b83c52c90948141e5807b7d1243fb5d48d4c998 data/create/recipes/crafting/appliances/schedule_clear.json ebc3512a7f069d2170985997057d6e287e50235f data/create/recipes/crafting/appliances/schedule_clear.json
05e4700f7fd59029ba19bcfb7b49fd3a30a93cad data/create/recipes/crafting/appliances/slime_ball.json 7fae8ba5e9a2595b11bd35d7ae2248255c486c18 data/create/recipes/crafting/appliances/slime_ball.json
d0bad974476c54315e4b656c67dbf6165d183bbc data/create/recipes/crafting/appliances/tree_fertilizer.json dd9f00d27d2d9e1ba971542eb6daed341e88ce42 data/create/recipes/crafting/appliances/tree_fertilizer.json
5b499ce4eee741d17813f96274333abfa2de99a9 data/create/recipes/crafting/curiosities/brown_toolbox.json 6ef7cdb7154dcb04212690d4d6ffd57f19fc4685 data/create/recipes/crafting/curiosities/brown_toolbox.json
05eb422734dcdd4c499437ae564e73af5c2e4673 data/create/recipes/crafting/curiosities/cake.json 26e24c537c5126320f617319c6a0c10a5701e868 data/create/recipes/crafting/curiosities/cake.json
c3444000827e1f9553818dedec6d3dba4af9dfcd data/create/recipes/crafting/curiosities/minecart_coupling.json 2e6908eeaf1c49ea81b1538b986b19f3be5f39b8 data/create/recipes/crafting/curiosities/minecart_coupling.json
1323b7c6d30d4e343e010902b7ebbfa2590a4cf5 data/create/recipes/crafting/curiosities/peculiar_bell.json b7289088fdb01f307f41d3df29b46e0d7930ba4a data/create/recipes/crafting/curiosities/peculiar_bell.json
e54646485af774e490409e9912a3799f7ac44e01 data/create/recipes/crafting/curiosities/toolbox_dyeing.json 43b60bbdbb912f0bd8ca46aa0c415e7ab442ad0b data/create/recipes/crafting/curiosities/toolbox_dyeing.json
615dad758fc75a2ee5ac8ec95559b0cd1f3cdeb0 data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json 9402ffe97f6f2154896a367e614e61c604def8b8 data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json
08712b652bf4f188836e0f15fab1b833018e83af data/create/recipes/crafting/kinetics/analog_lever.json 1901d2f2c6ec1d436a6cf6a2500f871ea6a3cf28 data/create/recipes/crafting/kinetics/analog_lever.json
ea6479a3cb257bfe0bfaac380973ed068195620e data/create/recipes/crafting/kinetics/andesite_door.json 08c15e0247cda6e13da08abd2370adf23dcabb04 data/create/recipes/crafting/kinetics/andesite_door.json
8d7c309edab26f714bd8cab2df600c6afaff44b8 data/create/recipes/crafting/kinetics/attribute_filter.json c0caa3f8b85b78b30cd9ece6a47925627e066594 data/create/recipes/crafting/kinetics/attribute_filter.json
5cf2f917005ace5eb726a0928bdc4f253cbca81d data/create/recipes/crafting/kinetics/basin.json 5b5f5c5c8054b8dca9ca18d9af8154edf5795b2b data/create/recipes/crafting/kinetics/basin.json
9043818635c6c7ab2e8b9711d95d6926bbbbe326 data/create/recipes/crafting/kinetics/belt_connector.json cdde069ac88b72e7203e53d83f80a8c1cda2af0f data/create/recipes/crafting/kinetics/belt_connector.json
989bd8580e18c716d588fbf3cf863ea238fffee8 data/create/recipes/crafting/kinetics/brass_door.json 27cfbc14308fafda42b498aa72921141f0603d3c data/create/recipes/crafting/kinetics/brass_door.json
a2e433b367baf9df12ced3a99c38940d67450440 data/create/recipes/crafting/kinetics/brass_hand.json af2fa71eda99d12c14802975f08fb00c00edb94c data/create/recipes/crafting/kinetics/brass_hand.json
3c7cacaace022bd8b40e92d1e7ce0b371ed822d5 data/create/recipes/crafting/kinetics/cart_assembler.json f068350679deb440a15f0ec223f586198657e909 data/create/recipes/crafting/kinetics/cart_assembler.json
d0ac43c060418f273245316d62b4d87651d76c78 data/create/recipes/crafting/kinetics/chute.json e8444504108e93355dd11a65d4e016fdfe40d08e data/create/recipes/crafting/kinetics/chute.json
e51a22443987fdddbc7b3e48ca07fd341811f0e9 data/create/recipes/crafting/kinetics/clockwork_bearing.json 2ec7bb6b9409532a56c3b1b81517aeea203f8143 data/create/recipes/crafting/kinetics/clockwork_bearing.json
de55cc506471580096b73c66e14d0d1de2c01f11 data/create/recipes/crafting/kinetics/clutch.json 49b3d9def884b1870a31f1ec5e496a1028771e1d data/create/recipes/crafting/kinetics/clutch.json
e5b87cc750175d18a636fa249511ccd3b05534a4 data/create/recipes/crafting/kinetics/cogwheel.json fa21d2e62568ac41bc8c1b3323b59b8ebc0bc3c0 data/create/recipes/crafting/kinetics/cogwheel.json
b5a2ad992b86d7c9a34876a3dd4ce3a2aa7d8d10 data/create/recipes/crafting/kinetics/contraption_controls.json 873c5512cb796049a44d102efb54f6adfbc5881b data/create/recipes/crafting/kinetics/contraption_controls.json
1c656a1abb9f4cfb0a92f8d9a949ae41fc7ca812 data/create/recipes/crafting/kinetics/controller_rail.json a07c4bc2d9013c901b14e982c3db0aafdef53fdc data/create/recipes/crafting/kinetics/controller_rail.json
f829ecfffd4b0edbff419fe4c36dcf314eebb726 data/create/recipes/crafting/kinetics/controls.json 737820d2794336d093ce0fa61174a6d3f2280221 data/create/recipes/crafting/kinetics/controls.json
a427bb8d8a43ac01def064584ea48a76d4deffa5 data/create/recipes/crafting/kinetics/copper_door.json 6c3a576f052e5d0080ce9dfda0de745d77570c6a data/create/recipes/crafting/kinetics/copper_door.json
914c2b5e89b7c20150413ded2444858aa009e4c6 data/create/recipes/crafting/kinetics/copper_valve_handle.json d6e0e297dd2eecac433a4d4e2133fcc0c3d4754a data/create/recipes/crafting/kinetics/copper_valve_handle.json
0a27cbe56b973276519c605acbb923f5e1aaba3d data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json f5691833e385258bc6082dfc845bcfa2eb11e919 data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json
9c9f4bf75355cfe8e8d459540d2dd923ddb557fb data/create/recipes/crafting/kinetics/crafter_slot_cover.json fb46c8748a1f29d4c4aeb1cf8e5dd487cb9831b0 data/create/recipes/crafting/kinetics/crafter_slot_cover.json
a542bce0308b995ac0cc0bcff5b56e01495f2d40 data/create/recipes/crafting/kinetics/cuckoo_clock.json 825c1b3fa9f0cfe78e1881eaa53ae5c89d022f0a data/create/recipes/crafting/kinetics/cuckoo_clock.json
eb5237fdd3f2105400360cff393878d4df5aec61 data/create/recipes/crafting/kinetics/deployer.json 12291a6327d682d48a71d483fa8791404c20cdaf data/create/recipes/crafting/kinetics/deployer.json
ae909affec7808069c7eaecfcfc7736fb9c01504 data/create/recipes/crafting/kinetics/depot.json 0fd3c9f549e6ca252285e14e38f7a6671ec795b6 data/create/recipes/crafting/kinetics/depot.json
d26d0a2f3836bdc92f9c43913acac2a93d713976 data/create/recipes/crafting/kinetics/display_board.json 07aaa07452319b8914b4b7c10daeca2acf89fec1 data/create/recipes/crafting/kinetics/display_board.json
03bf164f5332018731ac6b216b4f50baed3211bd data/create/recipes/crafting/kinetics/elevator_pulley.json d7e5a7b4cb9fb7ad88bca5f587d0dde0d4caa808 data/create/recipes/crafting/kinetics/elevator_pulley.json
59278e0e0e75eb1c0f926bc90e19edfda5993261 data/create/recipes/crafting/kinetics/empty_blaze_burner.json 5a04ede3f8f8fce09a04abebb017780360685968 data/create/recipes/crafting/kinetics/empty_blaze_burner.json
ca3e3063cdf135426e28d3474b5289ba1c5d9a1d data/create/recipes/crafting/kinetics/encased_chain_drive.json 9a6b9089624b678dc0f34b3c579584be48ba71ff data/create/recipes/crafting/kinetics/encased_chain_drive.json
7bb683f2398124b62595d6aa0afbdcde80acc028 data/create/recipes/crafting/kinetics/encased_fan.json 68ee1a593eb55717d5d38e50c40a2a6a24913ff7 data/create/recipes/crafting/kinetics/encased_fan.json
6c3a8f04e52a82c675c76963701244c78553cd32 data/create/recipes/crafting/kinetics/filter.json 701bb4c796a161349e1f344b0956fd5230e2b9ad data/create/recipes/crafting/kinetics/filter.json
c4f0ecdfc042849975bc71a36943ccb1cfcbfb87 data/create/recipes/crafting/kinetics/fluid_pipe.json 021b872eab1192bcfda9a814ca4614cfe05cf87b data/create/recipes/crafting/kinetics/fluid_pipe.json
96b7a9fce803457023bf18f707b1fabfcc005206 data/create/recipes/crafting/kinetics/fluid_pipe_vertical.json 839a66494f0f217ac634369b40bdc69b2276b3dc data/create/recipes/crafting/kinetics/fluid_pipe_vertical.json
0f35e80ba70e640c2d398e0bc2816887d5007e78 data/create/recipes/crafting/kinetics/fluid_tank.json ca72642ea501dcb6f2cefda29f4848f34438fb30 data/create/recipes/crafting/kinetics/fluid_tank.json
4eb7afa18b0ffb8e72b67e7ac99376328ec7eae3 data/create/recipes/crafting/kinetics/fluid_valve.json 6b3334092172648235368de8ce9ce907967c8e70 data/create/recipes/crafting/kinetics/fluid_valve.json
e76feec18d287551720e3988d5b1e9c8fae04e22 data/create/recipes/crafting/kinetics/flywheel.json 7fb89f262e8297c83bf1348e357ba1c2d1bcf724 data/create/recipes/crafting/kinetics/flywheel.json
8d0d07f0caa7b18ce0ea45ac21c4a6fdcbdd1702 data/create/recipes/crafting/kinetics/framed_glass_door.json fc30c2ffd4ba45371f2a6204b23703cd86af7197 data/create/recipes/crafting/kinetics/framed_glass_door.json
049d0f0c1ad0590d27800a5a1a6c670496f77cf7 data/create/recipes/crafting/kinetics/framed_glass_trapdoor.json cce9a34f0955ebebcdac654b0305d9457b3724fe data/create/recipes/crafting/kinetics/framed_glass_trapdoor.json
be87c0108dae97d6bcb637715749b96fbc656002 data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json 951262c954db16c8b20b1da36a806222ac9c4153 data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json
5ee1c8ad641287e649fd56505e673f37c16089fa data/create/recipes/crafting/kinetics/gantry_carriage.json e7099968c2ec0b9e014ae14765574f7c40aa2cd9 data/create/recipes/crafting/kinetics/gantry_carriage.json
f9550471dcd0e446034d0c7010779ec10247ccf8 data/create/recipes/crafting/kinetics/gantry_shaft.json ade723d3ee0bd30e1eca77a28b075f5cac619f02 data/create/recipes/crafting/kinetics/gantry_shaft.json
32baae49676966ef04019c6c54e2e8363a23d883 data/create/recipes/crafting/kinetics/gearbox.json 951d298137741ac40ff60d41bbc9c35363d35e04 data/create/recipes/crafting/kinetics/gearbox.json
a98b568daee4051397176d2fa2b6b2992b412a52 data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json 9600d1dda33bf2a5248c8e9df55cafd37cbd39cc data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json
096d09e6021e0c47f9daa259c0a9200ff36b3fbb data/create/recipes/crafting/kinetics/gearshift.json 111789890856ffeff792ecff52832a04199c763d data/create/recipes/crafting/kinetics/gearshift.json
18d983aaef9e32073ec656e60855cd2d56ef168f data/create/recipes/crafting/kinetics/goggles.json 4b1a676d8f8cd3a6c4dc56e345d7dc5ef651bf7b data/create/recipes/crafting/kinetics/goggles.json
bc69dfe59b369eead6f3da593eae5a107933d339 data/create/recipes/crafting/kinetics/hand_crank.json 57817abc42f5e3e37f4ba9e0ae84df7f718dc69c data/create/recipes/crafting/kinetics/hand_crank.json
61f63ef849eaca43b1ab7ea7ab899ea67a9e9257 data/create/recipes/crafting/kinetics/hose_pulley.json fac5e5d38e5f5308a667ec2b2bf160c06613716a data/create/recipes/crafting/kinetics/hose_pulley.json
0fea4be19a920774facca7ce4d304f31cb06c4f4 data/create/recipes/crafting/kinetics/item_drain.json d8d9226fa3e395fabca7f62f2477379e9e1be50f data/create/recipes/crafting/kinetics/item_drain.json
02f88fe9919e65f5b1b2f3bf5c25d67ac788757b data/create/recipes/crafting/kinetics/item_vault.json 60497f93df883630f06c0073a54b42a0593cb074 data/create/recipes/crafting/kinetics/item_vault.json
ef525f4a19bc17fdfdd73c1e7ad65da0c8423b59 data/create/recipes/crafting/kinetics/large_cogwheel.json fd20b1e2b35706d6f353a61fb2ea75f69e0a329f data/create/recipes/crafting/kinetics/large_cogwheel.json
04a9cd133f7e1f88a35653ea205bb5a7e63cbecd data/create/recipes/crafting/kinetics/large_cogwheel_from_little.json ef9e3965e7010273a4eb2ede07e8e59fd436cedd data/create/recipes/crafting/kinetics/large_cogwheel_from_little.json
b24ff0cffeb7c69e3c8f6fdc55e88e8067454142 data/create/recipes/crafting/kinetics/large_water_wheel.json 9135b75ab7c1b34889d11b1b29faec91712b4c73 data/create/recipes/crafting/kinetics/large_water_wheel.json
984f2dcd5d43959f5830231fbf0f535de9fb4b41 data/create/recipes/crafting/kinetics/linear_chassis.json fe68fed5b2d3081cb3b90d11e67caa30bfefcdf5 data/create/recipes/crafting/kinetics/linear_chassis.json
27944146a510a98193140b5bed5feef2c05c8014 data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json 6313dcdccf63832385d54533322c31f10f817f8b data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json
d3c5afadd966993262a89cad0c6892bacf15f4e0 data/create/recipes/crafting/kinetics/mechanical_arm.json 4bda099afaef73d3b24dc340f3c3b7a7e0778b47 data/create/recipes/crafting/kinetics/mechanical_arm.json
68ccedb968fb15507f553eba8e0f38730209c076 data/create/recipes/crafting/kinetics/mechanical_bearing.json a02c6b77c74b2f3c66a53a33e04764339d10e202 data/create/recipes/crafting/kinetics/mechanical_bearing.json
355d65ca635d657423dab36c22bfb6cdb6c66d67 data/create/recipes/crafting/kinetics/mechanical_crafter.json 1ea3e37e0daf78acf54566b5380a8d730a7480c9 data/create/recipes/crafting/kinetics/mechanical_crafter.json
f00bc557550bda01492d9ccc264327362230b91e data/create/recipes/crafting/kinetics/mechanical_drill.json ee97158233fc488e920142f5a6d658b26514778f data/create/recipes/crafting/kinetics/mechanical_drill.json
324fc5d01a0124e469a7113ab4a8e1f2b1990dd6 data/create/recipes/crafting/kinetics/mechanical_harvester.json d03b6a4f99ad614034fa2988a54503637c8b965b data/create/recipes/crafting/kinetics/mechanical_harvester.json
6bd5419642e6da9943f845a89686af7e9f303549 data/create/recipes/crafting/kinetics/mechanical_mixer.json 8d72b073ae4d220ca9a04a4f6ffbb018260dd6b9 data/create/recipes/crafting/kinetics/mechanical_mixer.json
62ead7bf6a3e2da73d68607c61a024c6c83c8a17 data/create/recipes/crafting/kinetics/mechanical_piston.json 97dd6d45d04a3bdac13468a0176205e22e294721 data/create/recipes/crafting/kinetics/mechanical_piston.json
08f20ae721c0457a79d74b7a694dd85742f17ad7 data/create/recipes/crafting/kinetics/mechanical_plough.json 333db3532e6a5c86b176a304e5dfe1d7306712cc data/create/recipes/crafting/kinetics/mechanical_plough.json
13b21bab5e29f4222f6f1b2c91fed5ebf59cbf04 data/create/recipes/crafting/kinetics/mechanical_press.json 20ab2182efe192c904a65b9d3ecb61ee9a90993d data/create/recipes/crafting/kinetics/mechanical_press.json
613ec51032193322ef3f04679bafa95999f6cd77 data/create/recipes/crafting/kinetics/mechanical_pump.json a7dd6c89d0ad567836a5b667d3cd102c053824e9 data/create/recipes/crafting/kinetics/mechanical_pump.json
c05972188754de35e2a1da81d206fb091c5a44e4 data/create/recipes/crafting/kinetics/mechanical_roller.json 9f4daf143572d23107dc5af70eae61961c167b5c data/create/recipes/crafting/kinetics/mechanical_roller.json
6b28ac50a952d28b1bb480db22c082556666ab3b data/create/recipes/crafting/kinetics/mechanical_saw.json 256256ddbe3d9d1d3a79ece010dcf75415ad8d31 data/create/recipes/crafting/kinetics/mechanical_saw.json
4f8f825246c78555e403b1319edf887688d3b3f8 data/create/recipes/crafting/kinetics/metal_bracket.json a54ed12c21d66dde0fdd7d4a004f4c063392ca95 data/create/recipes/crafting/kinetics/metal_bracket.json
06c49300fb22b39da8f8d45b9fa21bb0bd174e8f data/create/recipes/crafting/kinetics/metal_girder.json 0627fcc3c7fd72c4929cdaaac00dd135133544e0 data/create/recipes/crafting/kinetics/metal_girder.json
dfd470b78af59f937893e71b6545e1ef0b05950e data/create/recipes/crafting/kinetics/millstone.json bee823d1d7d012682c1bcb71bcad8716368d9777 data/create/recipes/crafting/kinetics/millstone.json
76bcdecacf540457a752952eb29dcca3db8836a1 data/create/recipes/crafting/kinetics/minecart_from_contraption_cart.json b879ad80a9939bb8ef1b20a22d72a328e943615c data/create/recipes/crafting/kinetics/minecart_from_contraption_cart.json
768c1afbd543a11b1b7c029c8c58c9c02c360a19 data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json 280a84432472c6b9f3146526bdfb9c64981c228f data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json
c3463cbc2b2305b5f3ac28950c8deaead6838814 data/create/recipes/crafting/kinetics/nixie_tube.json 9e48ebc432a2f21b9e8f10714adbb96121167e2e data/create/recipes/crafting/kinetics/nixie_tube.json
8384b63525d3412a00dbc8f4cd61b4f585d67c1d data/create/recipes/crafting/kinetics/nozzle.json 8ba11e1ae93e8afa7c203e9dd69cc081796da3cf data/create/recipes/crafting/kinetics/nozzle.json
d1cc2faa5dc722f435008ad93e9e27e932607690 data/create/recipes/crafting/kinetics/piston_extension_pole.json 7ac9f6d3a0ea7ebddad200b33a728f1c754509e4 data/create/recipes/crafting/kinetics/piston_extension_pole.json
a653f85993ea7749beb57c93ebbe29aa2634e2ef data/create/recipes/crafting/kinetics/placard.json 89cdd21d898a08ee42ca2c04d9eacbeffc830750 data/create/recipes/crafting/kinetics/placard.json
041369b6aaca1cf870f970fd9d505b812f4e3c0b data/create/recipes/crafting/kinetics/portable_fluid_interface.json a9fdd02eac8fa5620912ea85c4460be00688c324 data/create/recipes/crafting/kinetics/portable_fluid_interface.json
d0a45019709e056429255d593d01e4e9f57e3e4b data/create/recipes/crafting/kinetics/portable_storage_interface.json 8b596eda0bd364aaa96db5e69ac0b409d2ca48f2 data/create/recipes/crafting/kinetics/portable_storage_interface.json
193a5032b0b9bb1ad73a5e4fdbf29b2c19d79815 data/create/recipes/crafting/kinetics/propeller.json 61871f78b7f134c261485ec575c49de143ca8b2c data/create/recipes/crafting/kinetics/propeller.json
fa58c3eeca2d2cd2a42a60f8e72021288773d20f data/create/recipes/crafting/kinetics/radial_chassis.json 9bd6ae7c0ef6e0d3aa34106b6e79f773edc92fdc data/create/recipes/crafting/kinetics/radial_chassis.json
d772312c83aff31d1fc27156e254cb95fd27fc2c data/create/recipes/crafting/kinetics/rope_pulley.json 3a8c93fd5036671eb9b5e8d463666e201d31f4f4 data/create/recipes/crafting/kinetics/rope_pulley.json
bb59333590f4408750a8e86ab6dabb4f8ea145ac data/create/recipes/crafting/kinetics/rose_quartz_lamp.json 1609f5814143e6c6bed344684195f50b97bbfc3c data/create/recipes/crafting/kinetics/rose_quartz_lamp.json
42d334d81633d5f346b7e0c5005c1811fed293d9 data/create/recipes/crafting/kinetics/rotation_speed_controller.json a34a64195876a2334f274584cf170b9f3bc42d77 data/create/recipes/crafting/kinetics/rotation_speed_controller.json
faaa02462c428daeefc7bc2d32d491afa49128c3 data/create/recipes/crafting/kinetics/sail_framefrom_conversion.json a85b372b60956600c26374bde7abd50eb4aa85b5 data/create/recipes/crafting/kinetics/sail_framefrom_conversion.json
dda3e44d83e8e2e4c45eda27758fc6f87118eb9d data/create/recipes/crafting/kinetics/schedule.json 9d2b082574901473fefab6237654cb2e25e6119f data/create/recipes/crafting/kinetics/schedule.json
0f3f10a756d32e438fdb51fb1e6d00ee1c05bc3f data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json 9a6fdc0523c7ff2728589d9bc0b147d9da5a0cf9 data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json
a282f8e372b14819c20319736a52506f508f9c17 data/create/recipes/crafting/kinetics/sequenced_gearshift.json 42073ff286455037402fd929cd94c7274fe36fda data/create/recipes/crafting/kinetics/sequenced_gearshift.json
b80b9bf1a36aab395cdd6200bcd3497c8e693ce1 data/create/recipes/crafting/kinetics/shaft.json a190c616240e0d5f510005669c2797ef544f4367 data/create/recipes/crafting/kinetics/shaft.json
a1d7e73399044cab19fd564d71d5fdfa754181ae data/create/recipes/crafting/kinetics/smart_chute.json 7a165cbad55e9c580bb1c7e61c2165b12db5022c data/create/recipes/crafting/kinetics/smart_chute.json
31698b810c00c5bff2b213d465614bbde2cae2aa data/create/recipes/crafting/kinetics/smart_fluid_pipe.json 4ea696d24035279e0e54c4a6a01178fbbaab74b8 data/create/recipes/crafting/kinetics/smart_fluid_pipe.json
001868b8959c6d1583daa08ce7098a0bda349d08 data/create/recipes/crafting/kinetics/speedometer.json 76005ce6fdef128e38e93e72108830ce6449ef50 data/create/recipes/crafting/kinetics/speedometer.json
fcd251937ad8ec78213d8d4277fefff3ae998061 data/create/recipes/crafting/kinetics/speedometerfrom_conversion.json 99eb689bb0a02e0a44775ad1069bc698d6ad21f8 data/create/recipes/crafting/kinetics/speedometerfrom_conversion.json
4549864bccf0fafeb190fe0fc0427c1feb6602cb data/create/recipes/crafting/kinetics/spout.json 988f6c0034cfc80fa2bd73116d0405c9916b1392 data/create/recipes/crafting/kinetics/spout.json
c0ae41dc34149563aafca9340213f4b255e5f6ea data/create/recipes/crafting/kinetics/steam_engine.json 47d03aec5f819e76907005d139e17ebf809d5d7c data/create/recipes/crafting/kinetics/steam_engine.json
dcecf0c7a28e1760277a191c2e8230054c5c830f data/create/recipes/crafting/kinetics/steam_whistle.json 14903135afc43f3979d2b731541105d5f4d5333e data/create/recipes/crafting/kinetics/steam_whistle.json
87c25c7aa34b699586696344c83cdc181a93761c data/create/recipes/crafting/kinetics/sticker.json dde7f31762f0cb16e61ff3215b0892daeaadd6a8 data/create/recipes/crafting/kinetics/sticker.json
19cc465a5e738785e91e2663f1b0c0e03f656b3a data/create/recipes/crafting/kinetics/sticky_mechanical_piston.json 7b8a6c791a89ef9661088d7cd5822cdd3ca27326 data/create/recipes/crafting/kinetics/sticky_mechanical_piston.json
27879de3fe0dbea5e4b6cec110459ce01cfa2556 data/create/recipes/crafting/kinetics/stressometerfrom_conversion.json 3830a9d6a1cb8586aa146a64f10efc57eba8292f data/create/recipes/crafting/kinetics/stressometerfrom_conversion.json
1fd12eac975ce2ffb6212e25f2309ad08537a4b6 data/create/recipes/crafting/kinetics/super_glue.json 06718c38f6f0c5d33655f808b9c8ae5aa340875e data/create/recipes/crafting/kinetics/super_glue.json
ae836d3103b16bb7084109c4d25295f0a3bc6f7c data/create/recipes/crafting/kinetics/track_observer.json f92276b774c42d676abf05564c28599d96814459 data/create/recipes/crafting/kinetics/track_observer.json
1747771e1eb570c0cfdc97681d8b9d0ccb1db73d data/create/recipes/crafting/kinetics/track_observer_from_other_plates.json edc418e84ae78e557c9a9214842939086ab58b5f data/create/recipes/crafting/kinetics/track_observer_from_other_plates.json
af645fe446e0df755fb748383a51facbe9101ede data/create/recipes/crafting/kinetics/track_signal.json baaabf43821cb3c61ed2bf8a2431ee5ac108c923 data/create/recipes/crafting/kinetics/track_signal.json
19c3a19c824e283c73400ed6abf5e5b1bfce147c data/create/recipes/crafting/kinetics/track_station.json 795a3b326ed6c7dc679b4b7dc028b4aed711d78f data/create/recipes/crafting/kinetics/track_station.json
35037a92ef619eea8c02fe21c1ab3fa567e9fb72 data/create/recipes/crafting/kinetics/train_door.json f7aa250ac8326279fbd5003ab62a80e81f2eb63e data/create/recipes/crafting/kinetics/train_door.json
26d9401533332cbc7580b32b45cdebf6ad3c523d data/create/recipes/crafting/kinetics/train_trapdoor.json df8bcd04ccd77a1870ee9af8bf892f7470ebf936 data/create/recipes/crafting/kinetics/train_trapdoor.json
a02e799451c8051250ab077ee94bec8f17705d5f data/create/recipes/crafting/kinetics/turntable.json 051e9a912e57dcbe12f8a711e54ed8e498bd1d93 data/create/recipes/crafting/kinetics/turntable.json
613d2ef5c381445d9a0bb1020f9d0ab9fb04d766 data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json 4b387b6bd8ab9897d6cb51ce1ebe6fbfe9cfabfd data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json
af2fc528dacef0300115977c681976b793329c8d data/create/recipes/crafting/kinetics/water_wheel.json cacf13148c47ae81051f24227507f2f3a0045844 data/create/recipes/crafting/kinetics/water_wheel.json
97054ad290c974f60d9be41c642e661442a98bca data/create/recipes/crafting/kinetics/weighted_ejector.json a76910afdacf010a04dcd1095ff2867d1a6a6548 data/create/recipes/crafting/kinetics/weighted_ejector.json
9ab4fa87c54b6580d3f7a1f8be8790c8f30f41fa data/create/recipes/crafting/kinetics/whisk.json b3db03edb9fe3aa0bff523efc9bef08c6c205b92 data/create/recipes/crafting/kinetics/whisk.json
7a933e80436c256804e8e448e954399933ccdcf4 data/create/recipes/crafting/kinetics/white_sail.json 68b1e851f806459b9e9f788eb584407b82d4340f data/create/recipes/crafting/kinetics/white_sail.json
9c7a4511aa52c4ab80ff692f0d7eca5cbf3fc470 data/create/recipes/crafting/kinetics/white_sailfrom_conversion.json 000d570eeeb2efa21b6f5bdb77eb6646d10af4bb data/create/recipes/crafting/kinetics/white_sailfrom_conversion.json
2e1e7414ec81f21640efb72f74eec8b4f6e9e105 data/create/recipes/crafting/kinetics/windmill_bearing.json 79d44065e5e2a4a0947d05df25e5ac075ddb4dc5 data/create/recipes/crafting/kinetics/windmill_bearing.json
04162aed9da6d5c8f5da33d041d95c960bd743f8 data/create/recipes/crafting/kinetics/wooden_bracket.json c4c2a04e2949132e28c2838280ebd8ef22d3d770 data/create/recipes/crafting/kinetics/wooden_bracket.json
4818f756d9198fe17a27176c51fda90a830504e7 data/create/recipes/crafting/kinetics/wrench.json c8bf929c604b35ab64f90c0c4245fea2418989ad data/create/recipes/crafting/kinetics/wrench.json
f0d93f09ab7797d248eba96efd8e03e14f6c8a2c data/create/recipes/crafting/logistics/andesite_funnel.json 81fa6d58358e053ca974d1fcc7fc5b0886370e83 data/create/recipes/crafting/logistics/andesite_funnel.json
e18098af26d3e0d28fb7f2ac49379787384f0d03 data/create/recipes/crafting/logistics/andesite_tunnel.json 19623c53ab3b3ebcb7f469b6521f083dcb19a749 data/create/recipes/crafting/logistics/andesite_tunnel.json
a24f11d979f40994b9f881b0f49fff5d93185296 data/create/recipes/crafting/logistics/brass_funnel.json dcb067590e24905d0914f1615fdae4be6591d185 data/create/recipes/crafting/logistics/brass_funnel.json
d994ef262b16357984d3ed62f6563d2f37266193 data/create/recipes/crafting/logistics/brass_tunnel.json 5fd9148832345b777b4a932678e09640edd2913f data/create/recipes/crafting/logistics/brass_tunnel.json
0b18d9964f2d580eb465cc72208f7a7fdba7b63e data/create/recipes/crafting/logistics/content_observer.json ef1a5942f26d91738f8348223c4123ef2f1624ab data/create/recipes/crafting/logistics/content_observer.json
cc837e8b014c121ed9d959baddea134ebf669350 data/create/recipes/crafting/logistics/display_link.json 20d73510c51cbd823dff5a3afc83a402b66f9cce data/create/recipes/crafting/logistics/display_link.json
dd28b63ceb46a1e9071549c4f8ff32f520c667f6 data/create/recipes/crafting/logistics/powered_latch.json 98691840eb3cc967554d4175ca5f27e87ceff86a data/create/recipes/crafting/logistics/powered_latch.json
9ee6e19644928dc78e6f8a5e59f30cd42ac3e454 data/create/recipes/crafting/logistics/powered_toggle_latch.json a7e0e52e6829a23236414782e1e66b2dafa336c7 data/create/recipes/crafting/logistics/powered_toggle_latch.json
aa8a704ad643ff5f06db34f4047f7f740a556236 data/create/recipes/crafting/logistics/pulse_extender.json 690f9966db7f0cd230ccd6d022845165fc1812e9 data/create/recipes/crafting/logistics/pulse_extender.json
8b0b342baa18cc47c7a60a3c9812fece28210cf6 data/create/recipes/crafting/logistics/pulse_repeater.json e6faf54c173bf7fed2a830023c70070245eb52fb data/create/recipes/crafting/logistics/pulse_repeater.json
c81f852f1d1514184ff235e790a6ca907f7b6ad4 data/create/recipes/crafting/logistics/redstone_contact.json 478c7d0f63f9bf692bcb97ef224d6f1ad0f72a8a data/create/recipes/crafting/logistics/redstone_contact.json
00877e6b56f28d8691080ef18b654f0a141835ce data/create/recipes/crafting/logistics/redstone_link.json d78395b4352d6df560d39e8edbc006fd389d18b5 data/create/recipes/crafting/logistics/redstone_link.json
eff0d37e98e8badd8d2c3c9de17ee5560b110dbd data/create/recipes/crafting/logistics/stockpile_switch.json 8750e51e842dd6333b9bbb42b4d57ab8f5b811a1 data/create/recipes/crafting/logistics/stockpile_switch.json
ac524c110f66a7433208a888c5f3bb69e5e95743 data/create/recipes/crafting/materials/andesite_alloy.json 98f636802918fa58fe75dad5bb7a34b771dd1e1c data/create/recipes/crafting/materials/andesite_alloy.json
e6bb68a1d2ed5a629c83f5a0eefb843bb890736d data/create/recipes/crafting/materials/andesite_alloy_block.json ed1cba19756ba50ff0ec1ee25c15881ce11efd6e data/create/recipes/crafting/materials/andesite_alloy_block.json
eebacb477bcce876622173289b06e1ad21424686 data/create/recipes/crafting/materials/andesite_alloy_from_block.json 8be8c03ef76bb5e6914a9ee57adeee24d8de2c1e data/create/recipes/crafting/materials/andesite_alloy_from_block.json
5008707e622c0fa0b6df32da5da7230a4da574ca data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json 2090c075d464f5d010bbf719af753563c543b26d data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json
f9f94e5082e7971e55b25bc00ba86c3579b492aa data/create/recipes/crafting/materials/brass_block_from_compacting.json 728a7148deeed0e08d4d4359832a507392fb6e3b data/create/recipes/crafting/materials/brass_block_from_compacting.json
ecd8581ad4a04cc1217133363bd15d76129cb651 data/create/recipes/crafting/materials/brass_ingot_from_compacting.json ee8427fa3ebcfee734b3f718577c1fa740a11f1e data/create/recipes/crafting/materials/brass_ingot_from_compacting.json
fe2f3c0722aa0f6b41ad0f497b9742eb856c0dd0 data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json 2e18db2f267b6e55bb7839f9ccffa476428fb330 data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json
941b2c1007c4b3afb6e141a754141de1b1c9a43a data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json e046761f97081d6660671e88a728d06d88336fdb data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json
d4d6664d05c7406b4f839413d4e3c60cf0347fb7 data/create/recipes/crafting/materials/copper_ingot.json 3a520ea04d0f40b55ae30ed6457f8372946db5c8 data/create/recipes/crafting/materials/copper_ingot.json
9e6e356f4c6b7f018d98b1da1911ea6c5fea3df7 data/create/recipes/crafting/materials/copper_nugget.json fd8a5b6c12d7efa480f0701647d7a44bcbf31b72 data/create/recipes/crafting/materials/copper_nugget.json
66c0b1d060395826c4a45082a03295b5df450801 data/create/recipes/crafting/materials/electron_tube.json 8d4048e6ec6567a806f156631f74c8e162662dec data/create/recipes/crafting/materials/electron_tube.json
66756dcaef1e092ae2b1e0aa4ae1a8b5af1a1243 data/create/recipes/crafting/materials/experience_block.json d61811ef374939b60b9ecdcd56ded69a73ad35f8 data/create/recipes/crafting/materials/experience_block.json
bc0a0b576a8895c5e31374cd3e6f9f2c8e20d542 data/create/recipes/crafting/materials/experience_nugget_from_block.json 725e2577704649be2a44743d06cb577664af229d data/create/recipes/crafting/materials/experience_nugget_from_block.json
33cf710546277f3d41af2c2aa736e031f3e37e60 data/create/recipes/crafting/materials/raw_zinc.json 12d038c14062f754103ac727375908450158258e data/create/recipes/crafting/materials/raw_zinc.json
e89aa3ab801e3ce25387ae67c5e47bab518b9225 data/create/recipes/crafting/materials/raw_zinc_block.json a7c498009bd0809a6e25406e78ea6c274111ca6d data/create/recipes/crafting/materials/raw_zinc_block.json
388654485ad957c58c4d6019273a85cebd468cca data/create/recipes/crafting/materials/red_sand_paper.json 833b7e849421269b8d0f117028a628e5bd518e86 data/create/recipes/crafting/materials/red_sand_paper.json
712255438e212e37cad4bbf65b995385d37b3ce1 data/create/recipes/crafting/materials/rose_quartz.json 1cd8f6c0c4adeb14ccbf877940f456bc128a6afe data/create/recipes/crafting/materials/rose_quartz.json
46cb889dd23d9a8a47f8b340abcbdbec35b21ee3 data/create/recipes/crafting/materials/rose_quartz_tilesfrom_conversion.json 601b7544d531f3bd660074d265c09498e8e32e24 data/create/recipes/crafting/materials/rose_quartz_tilesfrom_conversion.json
cde25f253da4d9800fd8f879a7d208e40510df82 data/create/recipes/crafting/materials/sand_paper.json 4b428f375bf70b7148b5e64f3cbbfadcde90af2a data/create/recipes/crafting/materials/sand_paper.json
39d9f3238bffd32a0bbe85f300bee0c71161f2df data/create/recipes/crafting/materials/small_rose_quartz_tilesfrom_conversion.json af99275e567462ddb4da509cffdbf5be1d32ff7f data/create/recipes/crafting/materials/small_rose_quartz_tilesfrom_conversion.json
24c99b98a2acb744a05f9ff4f22b783689e2b2f9 data/create/recipes/crafting/materials/zinc_block_from_compacting.json bd5f579e6e422c988cfc8c8431295cffd7a50f19 data/create/recipes/crafting/materials/zinc_block_from_compacting.json
5effb47ad68c8bacc4b1984a37b63ae3b02b3e88 data/create/recipes/crafting/materials/zinc_ingot_from_compacting.json 6f5e06ad4b861021eb89e392be178c2c492a0400 data/create/recipes/crafting/materials/zinc_ingot_from_compacting.json
2636700eda7f06a9297af688c8b7963b2611ea42 data/create/recipes/crafting/materials/zinc_ingot_from_decompacting.json 7dd50c655b65ed4aba0402c100e581bf1575c214 data/create/recipes/crafting/materials/zinc_ingot_from_decompacting.json
11583ad28f32b7f22ffb71e180aface890d1d2d0 data/create/recipes/crafting/materials/zinc_nugget_from_decompacting.json 2c6feb98c32ba5fb5f91c10bf9f652062b93419a data/create/recipes/crafting/materials/zinc_nugget_from_decompacting.json
d849fafedd10c68e6bc6dc1e5a85be82aae1b139 data/create/recipes/crafting/palettes/scorchia.json e59abb7feba1ad23b8802fef4240ba3de01ec9e9 data/create/recipes/crafting/palettes/scorchia.json
611c4a553408e0b6ddfcf6ed35bc972bea14ffda data/create/recipes/crafting/schematics/empty_schematic.json 4c3ebffd6768f66ed441dc9beff23e45e9bf094f data/create/recipes/crafting/schematics/empty_schematic.json
9a687ee9dab44c439ab669aa596117064fb13457 data/create/recipes/crafting/schematics/schematicannon.json 3cfe01cdac3179433e158b3c0821f5bfc6b61271 data/create/recipes/crafting/schematics/schematicannon.json
4a20356c9ce01ebfbcacbdc5d3c31094a5599a17 data/create/recipes/crafting/schematics/schematic_and_quill.json cae056792a0dfca680970b745057b50323e722ba data/create/recipes/crafting/schematics/schematic_and_quill.json
4a297162a630b48407dbc8ff8ca713387dcd3206 data/create/recipes/crafting/schematics/schematic_table.json f9a52bde9335db96923867d3ea5d5bceae6331c3 data/create/recipes/crafting/schematics/schematic_table.json
78526658ca5ccaa3729c967b5283069945d183b7 data/create/recipes/smelting/bread.json 3be566c8348edd56e7f0a5abb66e9b0ebc6730e5 data/create/recipes/smelting/bread.json
04bb0c80f3b5a6fe86fc4a8ed5293fc74c2d9aba data/create/recipes/smelting/copper_ingot_from_crushed.json 7317c59fd42225022ecb7a953dca96d4162c2d19 data/create/recipes/smelting/copper_ingot_from_crushed.json
d5b29fa27977691c3c50eb36c28bfe33b8462d09 data/create/recipes/smelting/glass_from_framed_glass.json b43d736230229587b24693f4059c974c83c99832 data/create/recipes/smelting/glass_from_framed_glass.json
83f03ab4b1ca000ad7fe15c347ea10b728188e57 data/create/recipes/smelting/glass_from_horizontal_framed_glass.json 2f4d1a869eacab3a96ea3c66fd419e7dff4b1d56 data/create/recipes/smelting/glass_from_horizontal_framed_glass.json
e4d3381d9c063adb3d6c7fa6a684100bc23f45ef data/create/recipes/smelting/glass_from_tiled_glass.json 9e4bf66d04caf9cc9102e4f2b10d381b32be5554 data/create/recipes/smelting/glass_from_tiled_glass.json
945733fb708ed39d817e41cab47744d6516b4fca data/create/recipes/smelting/glass_from_vertical_framed_glass.json 148ccb922ddb5422edde2c067292a7f1f239a3d1 data/create/recipes/smelting/glass_from_vertical_framed_glass.json
ab1a181eb787f501ae7b8a8c6da2d3adb35a8f2b data/create/recipes/smelting/glass_pane_from_framed_glass_pane.json 58aef9c7b855408afa8b7b61b5c0561dab014aa0 data/create/recipes/smelting/glass_pane_from_framed_glass_pane.json
1f3432f66d6557e2835457e4dc97ae7561074e79 data/create/recipes/smelting/glass_pane_from_horizontal_framed_glass_pane.json 9f94ad24c77fd4f578c03599e334218f57c1c1aa data/create/recipes/smelting/glass_pane_from_horizontal_framed_glass_pane.json
ad412d18c2084dc74fff8a079a2e7ffb20f9a0c6 data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json ac8519dc87331facee57802dad374c0b32b8bf0c data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json
67c1143c7aac88a9cc91b98dbca60770cb1422a5 data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json 1cfea94ee0c921056a6aee8ca381be4f84b9e2e1 data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json
461e4dede50a4a318281ae9c086c8094470e21a1 data/create/recipes/smelting/gold_ingot_from_crushed.json 3a2656e86cdf82e99682242da9aa977031049ea1 data/create/recipes/smelting/gold_ingot_from_crushed.json
fa0d3d6f50d344aa83ddf4ac8abf4a80deb9fb32 data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json b223054970e6571768319bb866d61635d726dce5 data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json
4e8cf8775719219849b1a0e95903a3605b665015 data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json 78467cf924ebeb24c53ef0ea10fca3eb180f914c data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json
cfa90e7ba56d1ec6caa11bd019244bddd51da841 data/create/recipes/smelting/ingot_lead_compat_mekanism.json bd7bffd4bbd69abc1ee5e437c3f1098c075892fe data/create/recipes/smelting/ingot_lead_compat_mekanism.json
921031330fc9d1d5cf8293d7863145d9b7c8becf data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json bd528f31bb97fa877aada98380c1e1954115293e data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json
e718631b4ac8e8bb036435dd2b39c0ce77fa290d data/create/recipes/smelting/ingot_osmium_compat_mekanism.json 4ac8a67e16efa3869062801eda7b6a3892093c4b data/create/recipes/smelting/ingot_osmium_compat_mekanism.json
ba80d1df860afa164dfba71ee3f16438f288b6aa data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json fb7e89596dcb9662f179f3c516846267e9985750 data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json
9f8472e42fc3b1db65cbf5c878f4788846cf88b6 data/create/recipes/smelting/ingot_tin_compat_mekanism.json 99a530375613f5a4cd8ede54fa5712c8b159fa43 data/create/recipes/smelting/ingot_tin_compat_mekanism.json
b7830b774bfab54957b55c8ddc414b2427a49191 data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json a6f5349b5edb5751404eade36fea2718e2802742 data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json
a7b6ae172fb21be2d2b66da82a603300fae16185 data/create/recipes/smelting/ingot_uranium_compat_mekanism.json 381e8baa569e2e742c217df58606b426a4dac2b1 data/create/recipes/smelting/ingot_uranium_compat_mekanism.json
5865b56a6e7dfc486235b635cf5a40e9d82cb79d data/create/recipes/smelting/iron_ingot_from_crushed.json 70aa1f37a4c17b59ef098ecd2565733af37c74cd data/create/recipes/smelting/iron_ingot_from_crushed.json
76336bf2c2f35386a997cbc3125ae423595dd207 data/create/recipes/smelting/lead_ingot_compat_thermal.json 870350305775edc04cba887174b4b8210f9c532a data/create/recipes/smelting/lead_ingot_compat_thermal.json
cc1e46b361bffebdf63c970d6f8bf09068e28e5b data/create/recipes/smelting/nickel_ingot_compat_thermal.json 64ff40ba9dec46a234a777ec4f6214586f74feca data/create/recipes/smelting/nickel_ingot_compat_thermal.json
0421f39da684e9cdd35c43d6e7e4706a2438d9d5 data/create/recipes/smelting/scoria.json c6527e3de9bc1de66d5540343aec49b4008cd242 data/create/recipes/smelting/scoria.json
51d4140efc896d4cf426426101048405fc4243bc data/create/recipes/smelting/silver_ingot_compat_thermal.json 3b0fbe479cbe3757b6aac7c1ada7c59beccc6b85 data/create/recipes/smelting/silver_ingot_compat_thermal.json
fd994dc211b5da51c440703f3b3e14caa04de562 data/create/recipes/smelting/tin_ingot_compat_thermal.json 8a7f36f11ba991c0ee8c4ec617fa605fb81e6c5a data/create/recipes/smelting/tin_ingot_compat_thermal.json
8ea35f78211932c11630cb03625b269ef55ef11a data/create/recipes/smelting/zinc_ingot_from_crushed.json 8c0a3fd06a5279d349da59fcca5f163ba96ba36f data/create/recipes/smelting/zinc_ingot_from_crushed.json
2b7206a2dce9613094ca53cf4653eab178bcb2dc data/create/recipes/smelting/zinc_ingot_from_ore.json 5e5e4c2fcd75a47e7c20a698f45ad637c6630ef8 data/create/recipes/smelting/zinc_ingot_from_ore.json
513adf2dca653a48b90a37c905a8da117c0365e7 data/create/recipes/smelting/zinc_ingot_from_raw_ore.json c14b00614519e77736e14ff03ef77218f1a83948 data/create/recipes/smelting/zinc_ingot_from_raw_ore.json
874cf17060240c3e4e13f95d024b108650716d7d data/create/recipes/smoking/bread.json 47768ba669cabe491e8b9da71ac7fb9766f12186 data/create/recipes/smoking/bread.json

View file

@ -1,4 +1,4 @@
// 1.20.1 2023-08-23T16:29:07.6573146 Create's Processing Recipes // 1.19.2 2023-09-20T18:40:42.8238372 Create's Processing Recipes
3c94326fb730f68c1e44fe1e2ef09c9db6ffd92b data/create/recipes/compacting/andesite_from_flint.json 3c94326fb730f68c1e44fe1e2ef09c9db6ffd92b data/create/recipes/compacting/andesite_from_flint.json
8d3d5b31f3601b9f681ff710e0545a483a1494c6 data/create/recipes/compacting/blaze_cake.json 8d3d5b31f3601b9f681ff710e0545a483a1494c6 data/create/recipes/compacting/blaze_cake.json
8bd7f4e3a686ab520b2d55594d2018d0e9a50c91 data/create/recipes/compacting/chocolate.json 8bd7f4e3a686ab520b2d55594d2018d0e9a50c91 data/create/recipes/compacting/chocolate.json
@ -89,12 +89,8 @@ b135e3faf6afef4b6a5f00197997b47ff8e90568 data/create/recipes/crushing/wool.json
b5c33d039e3c9771b3ffc322aadae7e75a823635 data/create/recipes/cutting/acacia_log.json b5c33d039e3c9771b3ffc322aadae7e75a823635 data/create/recipes/cutting/acacia_log.json
b45b88bf2ac614b2518437656746f8e8a465d693 data/create/recipes/cutting/acacia_wood.json b45b88bf2ac614b2518437656746f8e8a465d693 data/create/recipes/cutting/acacia_wood.json
cdb26cd91feeda5901f31f57c16517dda5287810 data/create/recipes/cutting/andesite_alloy.json cdb26cd91feeda5901f31f57c16517dda5287810 data/create/recipes/cutting/andesite_alloy.json
5afeada82e71eb5012e35725821792f64d92a6b3 data/create/recipes/cutting/bamboo_block.json
4ac4bb94de7b25a3eec85e8290ab5f2f6b2b4167 data/create/recipes/cutting/bamboo_planks.json
1a3dd0e51603a3e47da4465da210004c78028faf data/create/recipes/cutting/birch_log.json 1a3dd0e51603a3e47da4465da210004c78028faf data/create/recipes/cutting/birch_log.json
71c3a093c849a99fbaef8772114ac9305627f2c1 data/create/recipes/cutting/birch_wood.json 71c3a093c849a99fbaef8772114ac9305627f2c1 data/create/recipes/cutting/birch_wood.json
31a1713f8bc5577b3fcf2fcfd2d42dac145f9560 data/create/recipes/cutting/cherry_log.json
0f54293540ad75e6395452253f4ab5c8e5166e93 data/create/recipes/cutting/cherry_wood.json
4f756e256a7814e2b9a6632d38633bb78c5046cd data/create/recipes/cutting/compat/architects_palette/stripped_twisted_log.json 4f756e256a7814e2b9a6632d38633bb78c5046cd data/create/recipes/cutting/compat/architects_palette/stripped_twisted_log.json
310dfb6c7e7649c0ede306fda71459e7f2bc8c7e data/create/recipes/cutting/compat/architects_palette/stripped_twisted_wood.json 310dfb6c7e7649c0ede306fda71459e7f2bc8c7e data/create/recipes/cutting/compat/architects_palette/stripped_twisted_wood.json
8645e8ee47b0a6a432f85b7f2e07957e21adeb70 data/create/recipes/cutting/compat/architects_palette/twisted_log.json 8645e8ee47b0a6a432f85b7f2e07957e21adeb70 data/create/recipes/cutting/compat/architects_palette/twisted_log.json
@ -411,11 +407,8 @@ e34df7cc80df6139a0f77cd5f7b8b17b0abbffa9 data/create/recipes/cutting/jungle_wood
85cf63074b922696ea691cfbc2cf7c348d4e0977 data/create/recipes/cutting/spruce_wood.json 85cf63074b922696ea691cfbc2cf7c348d4e0977 data/create/recipes/cutting/spruce_wood.json
1e83972fa75e6cef279da72312ae0577e6b074a3 data/create/recipes/cutting/stripped_acacia_log.json 1e83972fa75e6cef279da72312ae0577e6b074a3 data/create/recipes/cutting/stripped_acacia_log.json
070aa9790369a368666c03bf1cea9643ed0e5bc7 data/create/recipes/cutting/stripped_acacia_wood.json 070aa9790369a368666c03bf1cea9643ed0e5bc7 data/create/recipes/cutting/stripped_acacia_wood.json
558e81291da72b7f042b3b3270744b2c05ddc6fa data/create/recipes/cutting/stripped_bamboo_block.json
944dc5880749a146067716dd34b7edef77b925f5 data/create/recipes/cutting/stripped_birch_log.json 944dc5880749a146067716dd34b7edef77b925f5 data/create/recipes/cutting/stripped_birch_log.json
0ce39eb489b8d876954cbfcf715e94af79a57119 data/create/recipes/cutting/stripped_birch_wood.json 0ce39eb489b8d876954cbfcf715e94af79a57119 data/create/recipes/cutting/stripped_birch_wood.json
67c248e1be1e67054d4a65b94396d874156d5f29 data/create/recipes/cutting/stripped_cherry_log.json
1e34d2b0a2ae375ee312ca49aaaad8ff9e35b465 data/create/recipes/cutting/stripped_cherry_wood.json
b90e5b0a18d6d2e7eae62d0caf41fb3dd597c1e9 data/create/recipes/cutting/stripped_crimson_hyphae.json b90e5b0a18d6d2e7eae62d0caf41fb3dd597c1e9 data/create/recipes/cutting/stripped_crimson_hyphae.json
7244f0450df30a3b08139a1a43c82d3dfcc9f9a7 data/create/recipes/cutting/stripped_crimson_stem.json 7244f0450df30a3b08139a1a43c82d3dfcc9f9a7 data/create/recipes/cutting/stripped_crimson_stem.json
fc37b271373157c95e306bb33b6585dae45d3edb data/create/recipes/cutting/stripped_dark_oak_log.json fc37b271373157c95e306bb33b6585dae45d3edb data/create/recipes/cutting/stripped_dark_oak_log.json

View file

@ -1,2 +1,2 @@
// 1.20.1 2023-07-04T18:31:12.3492665 Create's Custom Sounds // 1.19.2 2023-09-20T18:40:42.8447813 Create's Custom Sounds
043955db25ffe58e7debb9a4f11e41a9571376e6 assets/create/sounds.json 043955db25ffe58e7debb9a4f11e41a9571376e6 assets/create/sounds.json

View file

@ -1,2 +1,2 @@
// 1.20.1 2023-08-24T21:57:44.7330415 Create's Recipe Serializer Tags // 1.19.2 2023-09-20T18:40:42.8378002 Create's Recipe Serializer Tags
0d8718f7383761bc5d7bc45306ed266ebf25dc1d data/create/tags/recipe_serializer/automation_ignore.json 0d8718f7383761bc5d7bc45306ed266ebf25dc1d data/create/tags/recipe_serializer/automation_ignore.json

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:backtank", "parent": "create:foods",
"criteria": { "criteria": {
"0": { "0": {
"conditions": {}, "conditions": {},
@ -13,9 +13,9 @@
"translate": "advancement.create.diving_suit_lava.desc" "translate": "advancement.create.diving_suit_lava.desc"
}, },
"frame": "goal", "frame": "goal",
"hidden": true, "hidden": false,
"icon": { "icon": {
"item": "create:copper_diving_helmet", "item": "create:netherite_diving_helmet",
"nbt": "{Damage:0}" "nbt": "{Damage:0}"
}, },
"show_toast": true, "show_toast": true,

View file

@ -0,0 +1,5 @@
{
"values": [
"create:blaze_burner"
]
}

View file

@ -0,0 +1,7 @@
{
"values": [
"create:lit_blaze_burner",
"minecraft:soul_fire",
"minecraft:soul_campfire"
]
}

View file

@ -0,0 +1,8 @@
{
"values": [
"create:blaze_burner",
"create:lit_blaze_burner",
"minecraft:fire",
"minecraft:campfire"
]
}

View file

@ -0,0 +1,3 @@
{
"values": []
}

View file

@ -0,0 +1,6 @@
{
"values": [
"minecraft:lava",
"minecraft:flowing_lava"
]
}

View file

@ -0,0 +1,3 @@
{
"values": []
}

View file

@ -0,0 +1,3 @@
{
"values": []
}

View file

@ -0,0 +1,6 @@
{
"values": [
"minecraft:water",
"minecraft:flowing_water"
]
}

View file

@ -288,6 +288,70 @@
"id": "blue_skies:stripped_cherry_log", "id": "blue_skies:stripped_cherry_log",
"required": false "required": false
}, },
{
"id": "environmental:stripped_cherry_log",
"required": false
},
{
"id": "environmental:stripped_willow_log",
"required": false
},
{
"id": "environmental:stripped_wisteria_log",
"required": false
},
{
"id": "atmospheric:stripped_aspen_log",
"required": false
},
{
"id": "atmospheric:stripped_kousa_log",
"required": false
},
{
"id": "atmospheric:stripped_yucca_log",
"required": false
},
{
"id": "atmospheric:stripped_morado_log",
"required": false
},
{
"id": "atmospheric:stripped_rosewood_log",
"required": false
},
{
"id": "atmospheric:stripped_grimwood_log",
"required": false
},
{
"id": "goodending:stripped_muddy_oak_log",
"required": false
},
{
"id": "goodending:stripped_cypress_log",
"required": false
},
{
"id": "biomemakeover:stripped_blighted_balsa_log",
"required": false
},
{
"id": "biomemakeover:stripped_willow_log",
"required": false
},
{
"id": "biomemakeover:stripped_swamp_cypress_log",
"required": false
},
{
"id": "biomemakeover:stripped_ancient_oak_log",
"required": false
},
{
"id": "infernalexp:stripped_luminous_stem",
"required": false
},
{ {
"id": "byg:stripped_bulbis_stem", "id": "byg:stripped_bulbis_stem",
"required": false "required": false

View file

@ -288,6 +288,70 @@
"id": "blue_skies:stripped_cherry_wood", "id": "blue_skies:stripped_cherry_wood",
"required": false "required": false
}, },
{
"id": "environmental:stripped_cherry_wood",
"required": false
},
{
"id": "environmental:stripped_willow_wood",
"required": false
},
{
"id": "environmental:stripped_wisteria_wood",
"required": false
},
{
"id": "atmospheric:stripped_aspen_wood",
"required": false
},
{
"id": "atmospheric:stripped_kousa_wood",
"required": false
},
{
"id": "atmospheric:stripped_yucca_wood",
"required": false
},
{
"id": "atmospheric:stripped_morado_wood",
"required": false
},
{
"id": "atmospheric:stripped_rosewood",
"required": false
},
{
"id": "atmospheric:stripped_grimwood",
"required": false
},
{
"id": "goodending:stripped_muddy_oak_wood",
"required": false
},
{
"id": "goodending:stripped_cypress_wood",
"required": false
},
{
"id": "biomemakeover:stripped_blighted_balsa_wood",
"required": false
},
{
"id": "biomemakeover:stripped_willow_wood",
"required": false
},
{
"id": "biomemakeover:stripped_swamp_cypress_wood",
"required": false
},
{
"id": "biomemakeover:stripped_ancient_oak_wood",
"required": false
},
{
"id": "infernalexp:stripped_luminous_hyphae",
"required": false
},
{ {
"id": "byg:stripped_bulbis_wood", "id": "byg:stripped_bulbis_wood",
"required": false "required": false

View file

@ -704,7 +704,7 @@ public class AllBlocks {
.properties(p -> p.mapColor(MapColor.COLOR_GRAY).lightLevel(BlazeBurnerBlock::getLight)) .properties(p -> p.mapColor(MapColor.COLOR_GRAY).lightLevel(BlazeBurnerBlock::getLight))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag) .tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_BLASTING.tag, AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag, AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
.loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable())) .loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable()))
.blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p)))
.onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour())) .onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour()))
@ -720,7 +720,7 @@ public class AllBlocks {
.properties(p -> p.mapColor(MapColor.COLOR_LIGHT_GRAY).lightLevel(LitBlazeBurnerBlock::getLight)) .properties(p -> p.mapColor(MapColor.COLOR_LIGHT_GRAY).lightLevel(LitBlazeBurnerBlock::getLight))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.addLayer(() -> RenderType::cutoutMipped) .addLayer(() -> RenderType::cutoutMipped)
.tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag) .tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.tag, AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag, AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
.loot((lt, block) -> lt.dropOther(block, AllItems.EMPTY_BLAZE_BURNER.get())) .loot((lt, block) -> lt.dropOther(block, AllItems.EMPTY_BLAZE_BURNER.get()))
.blockstate((c, p) -> p.getVariantBuilder(c.get()) .blockstate((c, p) -> p.getVariantBuilder(c.get())
.forAllStates(state -> ConfiguredModel.builder() .forAllStates(state -> ConfiguredModel.builder()
@ -755,7 +755,6 @@ public class AllBlocks {
.register(); .register();
public static final BlockEntry<ChuteBlock> CHUTE = REGISTRATE.block("chute", ChuteBlock::new) public static final BlockEntry<ChuteBlock> CHUTE = REGISTRATE.block("chute", ChuteBlock::new)
.addLayer(() -> RenderType::cutoutMipped)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.mapColor(MapColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.mapColor(MapColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
@ -766,12 +765,12 @@ public class AllBlocks {
.register(); .register();
public static final BlockEntry<SmartChuteBlock> SMART_CHUTE = REGISTRATE.block("smart_chute", SmartChuteBlock::new) public static final BlockEntry<SmartChuteBlock> SMART_CHUTE = REGISTRATE.block("smart_chute", SmartChuteBlock::new)
.addLayer(() -> RenderType::cutoutMipped)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.properties(p -> p.mapColor(MapColor.COLOR_GRAY) .properties(p -> p.mapColor(MapColor.COLOR_GRAY)
.sound(SoundType.NETHERITE_BLOCK) .sound(SoundType.NETHERITE_BLOCK)
.noOcclusion() .noOcclusion()
.isRedstoneConductor((level, pos, state) -> false)) .isRedstoneConductor((level, pos, state) -> false))
.addLayer(() -> RenderType::cutoutMipped)
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p))) .blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p)))
.item() .item()
@ -2020,9 +2019,9 @@ public class AllBlocks {
public static final BlockEntry<GirderBlock> METAL_GIRDER = REGISTRATE.block("metal_girder", GirderBlock::new) public static final BlockEntry<GirderBlock> METAL_GIRDER = REGISTRATE.block("metal_girder", GirderBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.blockstate(GirderBlockStateGenerator::blockState)
.properties(p -> p.mapColor(MapColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.mapColor(MapColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(GirderBlockStateGenerator::blockState)
.onRegister(CreateRegistrate.blockModel(() -> ConnectedGirderModel::new)) .onRegister(CreateRegistrate.blockModel(() -> ConnectedGirderModel::new))
.item() .item()
.transform(customItemModel()) .transform(customItemModel())
@ -2031,9 +2030,9 @@ public class AllBlocks {
public static final BlockEntry<GirderEncasedShaftBlock> METAL_GIRDER_ENCASED_SHAFT = public static final BlockEntry<GirderEncasedShaftBlock> METAL_GIRDER_ENCASED_SHAFT =
REGISTRATE.block("metal_girder_encased_shaft", GirderEncasedShaftBlock::new) REGISTRATE.block("metal_girder_encased_shaft", GirderEncasedShaftBlock::new)
.initialProperties(SharedProperties::softMetal) .initialProperties(SharedProperties::softMetal)
.blockstate(GirderBlockStateGenerator::blockStateWithShaft)
.properties(p -> p.mapColor(MapColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.mapColor(MapColor.COLOR_GRAY).sound(SoundType.NETHERITE_BLOCK))
.transform(pickaxeOnly()) .transform(pickaxeOnly())
.blockstate(GirderBlockStateGenerator::blockStateWithShaft)
.loot((p, b) -> p.add(b, p.createSingleItemTable(METAL_GIRDER.get()) .loot((p, b) -> p.add(b, p.createSingleItemTable(METAL_GIRDER.get())
.withPool(p.applyExplosionCondition(SHAFT.get(), LootPool.lootPool() .withPool(p.applyExplosionCondition(SHAFT.get(), LootPool.lootPool()
.setRolls(ConstantValue.exactly(1.0F)) .setRolls(ConstantValue.exactly(1.0F))

View file

@ -6,6 +6,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
@ -319,12 +320,10 @@ public class AllSoundEvents {
}); });
} }
public static JsonObject provideLangEntries() { public static void provideLang(BiConsumer<String, String> consumer) {
JsonObject object = new JsonObject();
for (SoundEntry entry : ALL.values()) for (SoundEntry entry : ALL.values())
if (entry.hasSubtitle()) if (entry.hasSubtitle())
object.addProperty(entry.getSubtitleKey(), entry.getSubtitle()); consumer.accept(entry.getSubtitleKey(), entry.getSubtitle());
return object;
} }
public static SoundEntryProvider provider(DataGenerator generator) { public static SoundEntryProvider provider(DataGenerator generator) {

View file

@ -79,23 +79,27 @@ public class AllTags {
BRITTLE, BRITTLE,
CASING, CASING,
CONTRAPTION_INVENTORY_DENY,
COPYCAT_ALLOW,
COPYCAT_DENY,
FAN_PROCESSING_CATALYSTS_BLASTING(MOD, "fan_processing_catalysts/blasting"),
FAN_PROCESSING_CATALYSTS_HAUNTING(MOD, "fan_processing_catalysts/haunting"),
FAN_PROCESSING_CATALYSTS_SMOKING(MOD, "fan_processing_catalysts/smoking"),
FAN_PROCESSING_CATALYSTS_SPLASHING(MOD, "fan_processing_catalysts/splashing"),
FAN_TRANSPARENT, FAN_TRANSPARENT,
NON_MOVABLE, GIRDABLE_TRACKS,
MOVABLE_EMPTY_COLLIDER, MOVABLE_EMPTY_COLLIDER,
NON_MOVABLE,
ORE_OVERRIDE_STONE, ORE_OVERRIDE_STONE,
PASSIVE_BOILER_HEATERS, PASSIVE_BOILER_HEATERS,
SAFE_NBT, SAFE_NBT,
SEATS, SEATS,
TOOLBOXES, TOOLBOXES,
TRACKS, TRACKS,
GIRDABLE_TRACKS,
TREE_ATTACHMENTS, TREE_ATTACHMENTS,
VALVE_HANDLES, VALVE_HANDLES,
WINDMILL_SAILS, WINDMILL_SAILS,
WRENCH_PICKUP, WRENCH_PICKUP,
COPYCAT_ALLOW,
COPYCAT_DENY,
CONTRAPTION_INVENTORY_DENY,
RELOCATION_NOT_SUPPORTED(FORGE), RELOCATION_NOT_SUPPORTED(FORGE),
WG_STONE(FORGE), WG_STONE(FORGE),
@ -157,8 +161,10 @@ public class AllTags {
BLAZE_BURNER_FUEL_REGULAR(MOD, "blaze_burner_fuel/regular"), BLAZE_BURNER_FUEL_REGULAR(MOD, "blaze_burner_fuel/regular"),
BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"), BLAZE_BURNER_FUEL_SPECIAL(MOD, "blaze_burner_fuel/special"),
CASING, CASING,
CONTRAPTION_CONTROLLED,
CREATE_INGOTS, CREATE_INGOTS,
CRUSHED_RAW_MATERIALS, CRUSHED_RAW_MATERIALS,
DEPLOYABLE_DRINK,
MODDED_STRIPPED_LOGS, MODDED_STRIPPED_LOGS,
MODDED_STRIPPED_WOOD, MODDED_STRIPPED_WOOD,
PRESSURIZED_AIR_SOURCES, PRESSURIZED_AIR_SOURCES,
@ -170,8 +176,6 @@ public class AllTags {
VALVE_HANDLES, VALVE_HANDLES,
VANILLA_STRIPPED_LOGS, VANILLA_STRIPPED_LOGS,
VANILLA_STRIPPED_WOOD, VANILLA_STRIPPED_WOOD,
DEPLOYABLE_DRINK,
CONTRAPTION_CONTROLLED,
STRIPPED_LOGS(FORGE), STRIPPED_LOGS(FORGE),
STRIPPED_WOOD(FORGE), STRIPPED_WOOD(FORGE),
@ -227,6 +231,10 @@ public class AllTags {
BOTTOMLESS_ALLOW(MOD, "bottomless/allow"), BOTTOMLESS_ALLOW(MOD, "bottomless/allow"),
BOTTOMLESS_DENY(MOD, "bottomless/deny"), BOTTOMLESS_DENY(MOD, "bottomless/deny"),
FAN_PROCESSING_CATALYSTS_BLASTING(MOD, "fan_processing_catalysts/blasting"),
FAN_PROCESSING_CATALYSTS_HAUNTING(MOD, "fan_processing_catalysts/haunting"),
FAN_PROCESSING_CATALYSTS_SMOKING(MOD, "fan_processing_catalysts/smoking"),
FAN_PROCESSING_CATALYSTS_SPLASHING(MOD, "fan_processing_catalysts/splashing"),
HONEY(FORGE) HONEY(FORGE)

View file

@ -1,7 +1,6 @@
package com.simibubi.create; package com.simibubi.create;
import java.util.Random; import java.util.Random;
import java.util.concurrent.CompletableFuture;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -24,19 +23,11 @@ import com.simibubi.create.content.redstone.link.RedstoneLinkNetworkHandler;
import com.simibubi.create.content.schematics.ServerSchematicLoader; import com.simibubi.create.content.schematics.ServerSchematicLoader;
import com.simibubi.create.content.trains.GlobalRailwayManager; import com.simibubi.create.content.trains.GlobalRailwayManager;
import com.simibubi.create.content.trains.bogey.BogeySizes; import com.simibubi.create.content.trains.bogey.BogeySizes;
import com.simibubi.create.content.trains.track.AllPortalTracks;
import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.advancement.AllTriggers; import com.simibubi.create.foundation.advancement.AllTriggers;
import com.simibubi.create.foundation.block.CopperRegistries; import com.simibubi.create.foundation.block.CopperRegistries;
import com.simibubi.create.foundation.data.CreateRegistrate; import com.simibubi.create.foundation.data.CreateRegistrate;
import com.simibubi.create.foundation.data.DamageTypeTagGen;
import com.simibubi.create.foundation.data.GeneratedEntriesProvider;
import com.simibubi.create.foundation.data.LangMerger;
import com.simibubi.create.foundation.data.RecipeSerializerTagGen;
import com.simibubi.create.foundation.data.TagGen;
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen;
import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen;
import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen;
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.item.ItemDescription;
import com.simibubi.create.foundation.item.KineticStats; import com.simibubi.create.foundation.item.KineticStats;
import com.simibubi.create.foundation.item.TooltipHelper.Palette; import com.simibubi.create.foundation.item.TooltipHelper.Palette;
@ -44,19 +35,16 @@ import com.simibubi.create.foundation.item.TooltipModifier;
import com.simibubi.create.foundation.utility.AttachedRegistry; import com.simibubi.create.foundation.utility.AttachedRegistry;
import com.simibubi.create.infrastructure.command.ServerLagger; import com.simibubi.create.infrastructure.command.ServerLagger;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import com.simibubi.create.infrastructure.data.CreateDatagen;
import com.simibubi.create.infrastructure.worldgen.AllFeatures; import com.simibubi.create.infrastructure.worldgen.AllFeatures;
import com.simibubi.create.infrastructure.worldgen.AllPlacementModifiers; import com.simibubi.create.infrastructure.worldgen.AllPlacementModifiers;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.data.event.GatherDataEvent;
import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.DistExecutor;
@ -82,6 +70,10 @@ public class Create {
@Deprecated @Deprecated
public static final Random RANDOM = new Random(); public static final Random RANDOM = new Random();
/**
* <b>Other mods should not use this field!</b> If you are an addon developer, create your own instance of
* {@link CreateRegistrate}.
*/
public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(ID); public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(ID);
static { static {
@ -134,6 +126,7 @@ public class Create {
// FIXME: some of these registrations are not thread-safe // FIXME: some of these registrations are not thread-safe
AllMovementBehaviours.registerDefaults(); AllMovementBehaviours.registerDefaults();
AllInteractionBehaviours.registerDefaults(); AllInteractionBehaviours.registerDefaults();
AllPortalTracks.registerDefaults();
AllDisplayBehaviours.registerDefaults(); AllDisplayBehaviours.registerDefaults();
ContraptionMovementSetting.registerDefaults(); ContraptionMovementSetting.registerDefaults();
AllArmInteractionPointTypes.register(); AllArmInteractionPointTypes.register();
@ -149,7 +142,7 @@ public class Create {
CopperRegistries.inject(); CopperRegistries.inject();
modEventBus.addListener(Create::init); modEventBus.addListener(Create::init);
modEventBus.addListener(EventPriority.LOW, Create::gatherData); modEventBus.addListener(EventPriority.LOWEST, CreateDatagen::gatherData);
modEventBus.addListener(AllSoundEvents::register); modEventBus.addListener(AllSoundEvents::register);
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> CreateClient.onCtorClient(modEventBus, forgeEventBus)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> CreateClient.onCtorClient(modEventBus, forgeEventBus));
@ -175,32 +168,6 @@ public class Create {
}); });
} }
public static void gatherData(GatherDataEvent event) {
TagGen.datagen();
DataGenerator gen = event.getGenerator();
PackOutput output = gen.getPackOutput();
CompletableFuture<HolderLookup.Provider> lookupProvider = event.getLookupProvider();
if (event.includeClient()) {
gen.addProvider(true, AllSoundEvents.provider(gen));
LangMerger.attachToRegistrateProvider(gen, output);
}
if (event.includeServer()) {
GeneratedEntriesProvider generatedEntriesProvider = new GeneratedEntriesProvider(output, lookupProvider);
lookupProvider = generatedEntriesProvider.getRegistryProvider();
gen.addProvider(true, generatedEntriesProvider);
gen.addProvider(true, new RecipeSerializerTagGen(output, lookupProvider, event.getExistingFileHelper()));
gen.addProvider(true, new DamageTypeTagGen(output, lookupProvider, event.getExistingFileHelper()));
gen.addProvider(true, new AllAdvancements(output));
gen.addProvider(true, new StandardRecipeGen(output));
gen.addProvider(true, new MechanicalCraftingRecipeGen(output));
gen.addProvider(true, new SequencedAssemblyRecipeGen(output));
ProcessingRecipeGen.registerAll(gen, output);
}
}
public static ResourceLocation asResource(String path) { public static ResourceLocation asResource(String path) {
return new ResourceLocation(ID, path); return new ResourceLocation(ID, path);
} }

View file

@ -0,0 +1,83 @@
package com.simibubi.create.api.event;
import org.jetbrains.annotations.Nullable;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.eventbus.api.Event;
/**
* This Event is fired when a two fluids meet in a pipe ({@link Flow})<br>
* or when a fluid in a pipe meets with a fluid in the world
* ({@link Spill}).<br>
* <br>
* If it is not null, the event's BlockState will be placed in world after
* firing.
*/
public class PipeCollisionEvent extends Event {
private final Level level;
private final BlockPos pos;
protected final Fluid firstFluid, secondFluid;
@Nullable
private BlockState state;
protected PipeCollisionEvent(Level level, BlockPos pos, Fluid firstFluid, Fluid secondFluid,
@Nullable BlockState defaultState) {
this.level = level;
this.pos = pos;
this.firstFluid = firstFluid;
this.secondFluid = secondFluid;
this.state = defaultState;
}
public Level getLevel() {
return level;
}
public BlockPos getPos() {
return pos;
}
@Nullable
public BlockState getState() {
return state;
}
public void setState(@Nullable BlockState state) {
this.state = state;
}
public static class Flow extends PipeCollisionEvent {
public Flow(Level level, BlockPos pos, Fluid firstFluid, Fluid secondFluid, @Nullable BlockState defaultState) {
super(level, pos, firstFluid, secondFluid, defaultState);
}
public Fluid getFirstFluid() {
return firstFluid;
}
public Fluid getSecondFluid() {
return secondFluid;
}
}
public static class Spill extends PipeCollisionEvent {
public Spill(Level level, BlockPos pos, Fluid worldFluid, Fluid pipeFluid, @Nullable BlockState defaultState) {
super(level, pos, worldFluid, pipeFluid, defaultState);
}
public Fluid getWorldFluid() {
return firstFluid;
}
public Fluid getPipeFluid() {
return secondFluid;
}
}
}

View file

@ -279,8 +279,15 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
}; };
rollerScout.travel(train.graph, lengthWiseOffset + 1, steering); rollerScout.travel(train.graph, lengthWiseOffset + 1, steering);
rollerScout.traversalCallback = (edge, coords) -> TrackPaverV2.pave(heightProfile, train.graph, edge, rollerScout.traversalCallback = (edge, coords) -> {
coords.getFirst(), coords.getSecond()); if (edge == null)
return;
if (edge.isInterDimensional())
return;
if (edge.node1.getLocation().dimension != context.world.dimension())
return;
TrackPaverV2.pave(heightProfile, train.graph, edge, coords.getFirst(), coords.getSecond());
};
rollerScout.travel(train.graph, distanceToTravel, steering); rollerScout.travel(train.graph, distanceToTravel, steering);
for (Couple<Integer> entry : heightProfile.keys()) for (Couple<Integer> entry : heightProfile.keys())
@ -293,6 +300,9 @@ public class RollerMovementBehaviour extends BlockBreakingMovementBehaviour {
BlockState stateToPaveWith = getStateToPaveWith(context); BlockState stateToPaveWith = getStateToPaveWith(context);
BlockState stateToPaveWithAsSlab = getStateToPaveWithAsSlab(context); BlockState stateToPaveWithAsSlab = getStateToPaveWithAsSlab(context);
RollingMode mode = getMode(context); RollingMode mode = getMode(context);
if (mode != RollingMode.TUNNEL_PAVE && stateToPaveWith.isAir())
return;
Vec3 directionVec = Vec3.atLowerCornerOf(context.state.getValue(RollerBlock.FACING) Vec3 directionVec = Vec3.atLowerCornerOf(context.state.getValue(RollerBlock.FACING)
.getClockWise() .getClockWise()

View file

@ -82,14 +82,14 @@ public class ElevatorPulleyBlockEntity extends PulleyBlockEntity {
double y = movedContraption.getY(); double y = movedContraption.getY();
int targetLevel = Mth.floor(0.5f + y) + ec.contactYOffset; int targetLevel = Mth.floor(0.5f + y) + ec.contactYOffset;
Integer ecCurrentTargetY = ec.getCurrentTargetY(level); Integer ecCurrentTargetY = ec.getCurrentTargetY(level);
if (ecCurrentTargetY != null) if (ecCurrentTargetY != null)
targetLevel = ecCurrentTargetY; targetLevel = ecCurrentTargetY;
if (level.isClientSide()) if (level.isClientSide())
targetLevel = ec.clientYTarget; targetLevel = ec.clientYTarget;
if (!wasArrived && !level.isClientSide()) { if (!wasArrived && !level.isClientSide()) {
triggerContact(ec, targetLevel); triggerContact(ec, targetLevel - ec.contactYOffset);
AllSoundEvents.CONTRAPTION_DISASSEMBLE.play(level, null, worldPosition.below((int) offset), 0.75f, 0.8f); AllSoundEvents.CONTRAPTION_DISASSEMBLE.play(level, null, worldPosition.below((int) offset), 0.75f, 0.8f);
} }

View file

@ -296,9 +296,12 @@ public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnDat
return PushReaction.IGNORE; return PushReaction.IGNORE;
} }
public void setPortalEntrancePos() {
portalEntrancePos = blockPosition();
}
@Override @Override
public PortalInfo findDimensionEntryPoint(ServerLevel pDestination) { public PortalInfo findDimensionEntryPoint(ServerLevel pDestination) {
portalEntrancePos = blockPosition();
return super.findDimensionEntryPoint(pDestination); return super.findDimensionEntryPoint(pDestination);
} }

View file

@ -189,6 +189,8 @@ public class SuperGlueSelectionHandler {
if (!isGlue(player.getMainHandItem())) if (!isGlue(player.getMainHandItem()))
return false; return false;
if (!player.mayBuild())
return false;
if (attack) { if (attack) {
if (selected == null) if (selected == null)

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.fluids; package com.simibubi.create.content.fluids;
import com.simibubi.create.AllFluids; import com.simibubi.create.AllFluids;
import com.simibubi.create.api.event.PipeCollisionEvent;
import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidHelper;
@ -14,53 +15,83 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.Fluids;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
@EventBusSubscriber
public class FluidReactions { public class FluidReactions {
public static void handlePipeFlowCollision(Level world, BlockPos pos, FluidStack fluid, FluidStack fluid2) { public static void handlePipeFlowCollision(Level level, BlockPos pos, FluidStack fluid, FluidStack fluid2) {
Fluid f1 = fluid.getFluid(); Fluid f1 = fluid.getFluid();
Fluid f2 = fluid2.getFluid(); Fluid f2 = fluid2.getFluid();
AdvancementBehaviour.tryAward(world, pos, AllAdvancements.CROSS_STREAMS); AdvancementBehaviour.tryAward(level, pos, AllAdvancements.CROSS_STREAMS);
BlockHelper.destroyBlock(world, pos, 1); BlockHelper.destroyBlock(level, pos, 1);
if (f1 == Fluids.WATER && f2 == Fluids.LAVA || f2 == Fluids.WATER && f1 == Fluids.LAVA) PipeCollisionEvent.Flow event = new PipeCollisionEvent.Flow(level, pos, f1, f2, null);
world.setBlockAndUpdate(pos, Blocks.COBBLESTONE.defaultBlockState()); MinecraftForge.EVENT_BUS.post(event);
else if (f1 == Fluids.LAVA && FluidHelper.hasBlockState(f2)) { if (event.getState() != null)
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f2) level.setBlockAndUpdate(pos, event.getState());
.defaultFluidState()); }
if (lavaInteraction != null)
world.setBlockAndUpdate(pos, lavaInteraction); @SubscribeEvent
public static void handlePipeFlowCollisionFallback(PipeCollisionEvent.Flow event) {
Fluid f1 = event.getFirstFluid();
Fluid f2 = event.getSecondFluid();
if (f1 == Fluids.WATER && f2 == Fluids.LAVA || f2 == Fluids.WATER && f1 == Fluids.LAVA) {
event.setState(Blocks.COBBLESTONE.defaultBlockState());
} else if (f1 == Fluids.LAVA && FluidHelper.hasBlockState(f2)) {
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f2).defaultFluidState());
if (lavaInteraction != null) {
event.setState(lavaInteraction);
}
} else if (f2 == Fluids.LAVA && FluidHelper.hasBlockState(f1)) { } else if (f2 == Fluids.LAVA && FluidHelper.hasBlockState(f1)) {
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f1) BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f1).defaultFluidState());
.defaultFluidState()); if (lavaInteraction != null) {
if (lavaInteraction != null) event.setState(lavaInteraction);
world.setBlockAndUpdate(pos, lavaInteraction); }
} }
} }
public static void handlePipeSpillCollision(Level world, BlockPos pos, Fluid pipeFluid, FluidState worldFluid) { public static void handlePipeSpillCollision(Level level, BlockPos pos, Fluid pipeFluid, FluidState worldFluid) {
Fluid pf = FluidHelper.convertToStill(pipeFluid); Fluid pf = FluidHelper.convertToStill(pipeFluid);
Fluid wf = worldFluid.getType(); Fluid wf = worldFluid.getType();
if (FluidHelper.isTag(pf, FluidTags.WATER) && wf == Fluids.LAVA)
world.setBlockAndUpdate(pos, Blocks.OBSIDIAN.defaultBlockState()); PipeCollisionEvent.Spill event = new PipeCollisionEvent.Spill(level, pos, wf, pf, null);
else if (pf == Fluids.WATER && wf == Fluids.FLOWING_LAVA) MinecraftForge.EVENT_BUS.post(event);
world.setBlockAndUpdate(pos, Blocks.COBBLESTONE.defaultBlockState()); if (event.getState() != null) {
else if (pf == Fluids.LAVA && wf == Fluids.WATER) level.setBlockAndUpdate(pos, event.getState());
world.setBlockAndUpdate(pos, Blocks.STONE.defaultBlockState()); }
else if (pf == Fluids.LAVA && wf == Fluids.FLOWING_WATER) }
world.setBlockAndUpdate(pos, Blocks.COBBLESTONE.defaultBlockState());
@SubscribeEvent
public static void handlePipeSpillCollisionFallback(PipeCollisionEvent.Spill event) {
Fluid pf = event.getPipeFluid();
Fluid wf = event.getWorldFluid();
if (FluidHelper.isTag(pf, FluidTags.WATER) && wf == Fluids.LAVA) {
event.setState(Blocks.OBSIDIAN.defaultBlockState());
} else if (pf == Fluids.WATER && wf == Fluids.FLOWING_LAVA) {
event.setState(Blocks.COBBLESTONE.defaultBlockState());
} else if (pf == Fluids.LAVA && wf == Fluids.WATER) {
event.setState(Blocks.STONE.defaultBlockState());
} else if (pf == Fluids.LAVA && wf == Fluids.FLOWING_LAVA) {
event.setState(Blocks.COBBLESTONE.defaultBlockState());
}
if (pf == Fluids.LAVA) { if (pf == Fluids.LAVA) {
BlockState lavaInteraction = AllFluids.getLavaInteraction(worldFluid); BlockState lavaInteraction = AllFluids.getLavaInteraction(wf.defaultFluidState());
if (lavaInteraction != null) if (lavaInteraction != null) {
world.setBlockAndUpdate(pos, lavaInteraction); event.setState(lavaInteraction);
}
} else if (wf == Fluids.FLOWING_LAVA && FluidHelper.hasBlockState(pf)) { } else if (wf == Fluids.FLOWING_LAVA && FluidHelper.hasBlockState(pf)) {
BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(pf) BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(pf).defaultFluidState());
.defaultFluidState()); if (lavaInteraction != null) {
if (lavaInteraction != null) event.setState(lavaInteraction);
world.setBlockAndUpdate(pos, lavaInteraction); }
} }
} }

View file

@ -10,6 +10,7 @@ import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
import com.simibubi.create.foundation.utility.AttachedRegistry; import com.simibubi.create.foundation.utility.AttachedRegistry;
import com.simibubi.create.foundation.utility.BlockHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -71,7 +72,7 @@ public class BoilerHeaters {
}); });
registerHeaterProvider((level, pos, state) -> { registerHeaterProvider((level, pos, state) -> {
if (AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state)) { if (AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) && BlockHelper.isNotUnheated(state)) {
return (level1, pos1, state1) -> 0; return (level1, pos1, state1) -> 0;
} }
return null; return null;

View file

@ -62,6 +62,8 @@ public class ValveHandleBlock extends HandCrankBlock {
if (!(blockState.getBlock() instanceof ValveHandleBlock vhb)) if (!(blockState.getBlock() instanceof ValveHandleBlock vhb))
return; return;
if (!player.mayBuild())
return;
if (AllItems.WRENCH.isIn(player.getItemInHand(event.getHand())) && player.isSteppingCarefully()) if (AllItems.WRENCH.isIn(player.getItemInHand(event.getHand())) && player.isSteppingCarefully())
return; return;

View file

@ -299,9 +299,6 @@ public class DeployerHandler {
return; return;
if (useItem == DENY) if (useItem == DENY)
return; return;
if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem)
&& !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext)))
return;
// Reposition fire placement for convenience // Reposition fire placement for convenience
if (item == Items.FLINT_AND_STEEL) { if (item == Items.FLINT_AND_STEEL) {
@ -323,6 +320,10 @@ public class DeployerHandler {
player.placedTracks = true; player.placedTracks = true;
return; return;
} }
if (item instanceof BlockItem && !(item instanceof CartAssemblerBlockItem)
&& !clickedState.canBeReplaced(new BlockPlaceContext(itemusecontext)))
return;
if (item == Items.ENDER_PEARL) if (item == Items.ENDER_PEARL)
return; return;
if (AllItemTags.DEPLOYABLE_DRINK.matches(item)) if (AllItemTags.DEPLOYABLE_DRINK.matches(item))

View file

@ -54,8 +54,6 @@ public class AirCurrent {
new ArrayList<>(); new ArrayList<>();
protected List<Entity> caughtEntities = new ArrayList<>(); protected List<Entity> caughtEntities = new ArrayList<>();
static boolean isClientPlayerInAirCurrent;
public AirCurrent(IAirCurrentSource source) { public AirCurrent(IAirCurrentSource source) {
this.source = source; this.source = source;
} }
@ -111,7 +109,7 @@ public class AirCurrent {
((ServerPlayer) entity).connection.aboveGroundTickCount = 0; ((ServerPlayer) entity).connection.aboveGroundTickCount = 0;
entityDistance -= .5f; entityDistance -= .5f;
FanProcessingType processingType = getSegmentAt((float) entityDistance); FanProcessingType processingType = getTypeAt((float) entityDistance);
if (processingType == AllFanProcessingTypes.NONE) if (processingType == AllFanProcessingTypes.NONE)
continue; continue;
@ -131,7 +129,33 @@ public class AirCurrent {
if (world != null) if (world != null)
processingType.affectEntity(entity, world); processingType.affectEntity(entity, world);
} }
}
public static boolean isPlayerCreativeFlying(Entity entity) {
if (entity instanceof Player) {
Player player = (Player) entity;
return player.isCreative() && player.getAbilities().flying;
}
return false;
}
public void tickAffectedHandlers() {
for (Pair<TransportedItemStackHandlerBehaviour, FanProcessingType> pair : affectedItemHandlers) {
TransportedItemStackHandlerBehaviour handler = pair.getKey();
Level world = handler.getWorld();
FanProcessingType processingType = pair.getRight();
handler.handleProcessingOnAllItems(transported -> {
if (world.isClientSide) {
processingType.spawnProcessingParticles(world, handler.getWorldPositionOf(transported));
return TransportedResult.doNothing();
}
TransportedResult applyProcessing = FanProcessing.applyProcessing(transported, world, processingType);
if (!applyProcessing.doesNothing() && source instanceof EncasedFanBlockEntity fan)
fan.award(AllAdvancements.FAN_PROCESSING);
return applyProcessing;
});
}
} }
public void rebuild() { public void rebuild() {
@ -154,32 +178,38 @@ public class AirCurrent {
maxDistance = getFlowLimit(world, start, max, facing); maxDistance = getFlowLimit(world, start, max, facing);
// Determine segments with transported fluids/gases // Determine segments with transported fluids/gases
AirCurrentSegment currentSegment = new AirCurrentSegment();
segments.clear(); segments.clear();
currentSegment.startOffset = 0; AirCurrentSegment currentSegment = null;
FanProcessingType type = AllFanProcessingTypes.NONE; FanProcessingType type = AllFanProcessingTypes.NONE;
int limit = (int) (maxDistance + .5f); int limit = getLimit();
int searchStart = pushing ? 0 : limit; int searchStart = pushing ? 1 : limit;
int searchEnd = pushing ? limit : 0; int searchEnd = pushing ? limit : 1;
int searchStep = pushing ? 1 : -1; int searchStep = pushing ? 1 : -1;
int toOffset = pushing ? -1 : 0;
for (int i = searchStart; i * searchStep <= searchEnd * searchStep; i += searchStep) { for (int i = searchStart; i * searchStep <= searchEnd * searchStep; i += searchStep) {
BlockPos currentPos = start.relative(direction, i); BlockPos currentPos = start.relative(direction, i);
FanProcessingType newType = FanProcessingType.getAt(world, currentPos); FanProcessingType newType = FanProcessingType.getAt(world, currentPos);
if (newType != AllFanProcessingTypes.NONE) if (newType != AllFanProcessingTypes.NONE) {
type = newType; type = newType;
if (currentSegment.type != type || currentSegment.startOffset == 0) { }
currentSegment.endOffset = i; if (currentSegment == null) {
if (currentSegment.startOffset != 0)
segments.add(currentSegment);
currentSegment = new AirCurrentSegment(); currentSegment = new AirCurrentSegment();
currentSegment.startOffset = i; currentSegment.startOffset = i + toOffset;
currentSegment.type = type;
} else if (currentSegment.type != type) {
currentSegment.endOffset = i + toOffset;
segments.add(currentSegment);
currentSegment = new AirCurrentSegment();
currentSegment.startOffset = i + toOffset;
currentSegment.type = type; currentSegment.type = type;
} }
} }
currentSegment.endOffset = searchEnd + searchStep; if (currentSegment != null) {
segments.add(currentSegment); currentSegment.endOffset = searchEnd + searchStep + toOffset;
segments.add(currentSegment);
}
// Build Bounding Box // Build Bounding Box
if (maxDistance < 0.25f) if (maxDistance < 0.25f)
@ -194,6 +224,7 @@ public class AirCurrent {
.move(scale); .move(scale);
} }
} }
findAffectedHandlers(); findAffectedHandlers();
} }
@ -249,29 +280,36 @@ public class AirCurrent {
return max; return max;
} }
public void findEntities() { private static boolean shouldAlwaysPass(BlockState state) {
caughtEntities.clear(); return AllTags.AllBlockTags.FAN_TRANSPARENT.matches(state);
caughtEntities = source.getAirCurrentWorld() }
.getEntities(null, bounds);
private int getLimit() {
if ((float) (int) maxDistance == maxDistance) {
return (int) maxDistance;
} else {
return (int) maxDistance + 1;
}
} }
public void findAffectedHandlers() { public void findAffectedHandlers() {
Level world = source.getAirCurrentWorld(); Level world = source.getAirCurrentWorld();
BlockPos start = source.getAirCurrentPos(); BlockPos start = source.getAirCurrentPos();
affectedItemHandlers.clear(); affectedItemHandlers.clear();
for (int i = 0; i < maxDistance + 1; i++) { int limit = getLimit();
FanProcessingType segmentType = getSegmentAt(i); for (int i = 1; i <= limit; i++) {
FanProcessingType segmentType = getTypeAt(i - 1);
for (int offset : Iterate.zeroAndOne) { for (int offset : Iterate.zeroAndOne) {
BlockPos pos = start.relative(direction, i) BlockPos pos = start.relative(direction, i)
.below(offset); .below(offset);
TransportedItemStackHandlerBehaviour behaviour = TransportedItemStackHandlerBehaviour behaviour =
BlockEntityBehaviour.get(world, pos, TransportedItemStackHandlerBehaviour.TYPE); BlockEntityBehaviour.get(world, pos, TransportedItemStackHandlerBehaviour.TYPE);
if (behaviour == null) if (behaviour != null) {
continue; FanProcessingType type = FanProcessingType.getAt(world, pos);
FanProcessingType type = FanProcessingType.getAt(world, pos); if (type == AllFanProcessingTypes.NONE)
if (type == AllFanProcessingTypes.NONE) type = segmentType;
type = segmentType; affectedItemHandlers.add(Pair.of(behaviour, type));
affectedItemHandlers.add(Pair.of(behaviour, type)); }
if (direction.getAxis() if (direction.getAxis()
.isVertical()) .isVertical())
break; break;
@ -279,48 +317,41 @@ public class AirCurrent {
} }
} }
public void tickAffectedHandlers() { public void findEntities() {
for (Pair<TransportedItemStackHandlerBehaviour, FanProcessingType> pair : affectedItemHandlers) { caughtEntities.clear();
TransportedItemStackHandlerBehaviour handler = pair.getKey(); caughtEntities = source.getAirCurrentWorld()
Level world = handler.getWorld(); .getEntities(null, bounds);
FanProcessingType processingType = pair.getRight(); }
handler.handleProcessingOnAllItems(transported -> { public FanProcessingType getTypeAt(float offset) {
if (world.isClientSide) { if (offset >= 0 && offset <= maxDistance) {
processingType.spawnProcessingParticles(world, handler.getWorldPositionOf(transported)); if (pushing) {
return TransportedResult.doNothing(); for (AirCurrentSegment airCurrentSegment : segments) {
if (offset <= airCurrentSegment.endOffset) {
return airCurrentSegment.type;
}
} }
TransportedResult applyProcessing = FanProcessing.applyProcessing(transported, world, processingType); } else {
if (!applyProcessing.doesNothing() && source instanceof EncasedFanBlockEntity fan) for (AirCurrentSegment airCurrentSegment : segments) {
fan.award(AllAdvancements.FAN_PROCESSING); if (offset >= airCurrentSegment.endOffset) {
return applyProcessing; return airCurrentSegment.type;
}); }
} }
} }
private static boolean shouldAlwaysPass(BlockState state) {
return AllTags.AllBlockTags.FAN_TRANSPARENT.matches(state);
}
public FanProcessingType getSegmentAt(float offset) {
for (AirCurrentSegment airCurrentSegment : segments) {
if (offset > airCurrentSegment.endOffset && pushing)
continue;
if (offset < airCurrentSegment.endOffset && !pushing)
continue;
return airCurrentSegment.type;
} }
return AllFanProcessingTypes.NONE; return AllFanProcessingTypes.NONE;
} }
public static class AirCurrentSegment { private static class AirCurrentSegment {
FanProcessingType type; private FanProcessingType type;
int startOffset; private int startOffset;
int endOffset; private int endOffset;
} }
private static boolean isClientPlayerInAirCurrent;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
static AirCurrentSound flyingSound; private static AirCurrentSound flyingSound;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
private static void enableClientPlayerSound(Entity e, float maxVolume) { private static void enableClientPlayerSound(Entity e, float maxVolume) {
@ -345,7 +376,7 @@ public class AirCurrent {
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public static void tickClientPlayerSounds() { public static void tickClientPlayerSounds() {
if (!AirCurrent.isClientPlayerInAirCurrent && flyingSound != null) if (!isClientPlayerInAirCurrent && flyingSound != null)
if (flyingSound.isFaded()) if (flyingSound.isFaded())
flyingSound.stopSound(); flyingSound.stopSound();
else else
@ -353,12 +384,4 @@ public class AirCurrent {
isClientPlayerInAirCurrent = false; isClientPlayerInAirCurrent = false;
} }
public static boolean isPlayerCreativeFlying(Entity entity) {
if (entity instanceof Player) {
Player player = (Player) entity;
return player.isCreative() && player.getAbilities().flying;
}
return false;
}
} }

View file

@ -34,9 +34,9 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
selectSprite(7); selectSprite(7);
Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, random, .25f); Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, random, .25f);
this.setPos(x + offset.x, y + offset.y, z + offset.z); this.setPos(x + offset.x, y + offset.y, z + offset.z);
this.xo = x; this.xo = this.x;
this.yo = y; this.yo = this.y;
this.zo = z; this.zo = this.z;
setColor(0xEEEEEE); setColor(0xEEEEEE);
setAlpha(.25f); setAlpha(.25f);
} }
@ -97,15 +97,13 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
this.zd *= 0.7; this.zd *= 0.7;
} }
this.move(this.xd, this.yd, this.zd); this.move(this.xd, this.yd, this.zd);
} }
} }
private FanProcessingType getType(double distance) { private FanProcessingType getType(double distance) {
if (source.getAirCurrent() == null) if (source.getAirCurrent() == null)
return AllFanProcessingTypes.NONE; return AllFanProcessingTypes.NONE;
return source.getAirCurrent().getSegmentAt((float) distance); return source.getAirCurrent().getTypeAt((float) distance);
} }
public int getLightColor(float partialTick) { public int getLightColor(float partialTick) {
@ -124,6 +122,7 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
this.spriteSet = animatedSprite; this.spriteSet = animatedSprite;
} }
@Override
public Particle createParticle(AirFlowParticleData data, ClientLevel worldIn, double x, double y, double z, public Particle createParticle(AirFlowParticleData data, ClientLevel worldIn, double x, double y, double z,
double xSpeed, double ySpeed, double zSpeed) { double xSpeed, double ySpeed, double zSpeed) {
BlockEntity be = worldIn.getBlockEntity(new BlockPos(data.posX, data.posY, data.posZ)); BlockEntity be = worldIn.getBlockEntity(new BlockPos(data.posX, data.posY, data.posZ));

View file

@ -1,7 +1,5 @@
package com.simibubi.create.content.kinetics.fan.processing; package com.simibubi.create.content.kinetics.fan.processing;
import static com.simibubi.create.content.processing.burner.BlazeBurnerBlock.getHeatLevelOf;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -10,8 +8,9 @@ import java.util.Optional;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.joml.Vector3f; import org.joml.Vector3f;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.AllTags.AllFluidTags;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.kinetics.fan.processing.HauntingRecipe.HauntingWrapper; import com.simibubi.create.content.kinetics.fan.processing.HauntingRecipe.HauntingWrapper;
import com.simibubi.create.content.kinetics.fan.processing.SplashingRecipe.SplashingWrapper; import com.simibubi.create.content.kinetics.fan.processing.SplashingRecipe.SplashingWrapper;
@ -48,13 +47,10 @@ import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.item.crafting.SmeltingRecipe; import net.minecraft.world.item.crafting.SmeltingRecipe;
import net.minecraft.world.item.crafting.SmokingRecipe; import net.minecraft.world.item.crafting.SmokingRecipe;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.CampfireBlock; import net.minecraft.world.level.block.CampfireBlock;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.items.ItemStackHandler; import net.minecraftforge.items.ItemStackHandler;
import net.minecraftforge.items.wrapper.RecipeWrapper; import net.minecraftforge.items.wrapper.RecipeWrapper;
@ -140,9 +136,18 @@ public class AllFanProcessingTypes {
@Override @Override
public boolean isValidAt(Level level, BlockPos pos) { public boolean isValidAt(Level level, BlockPos pos) {
FluidState fluidState = level.getFluidState(pos);
if (AllFluidTags.FAN_PROCESSING_CATALYSTS_BLASTING.matches(fluidState)) {
return true;
}
BlockState blockState = level.getBlockState(pos); BlockState blockState = level.getBlockState(pos);
Block block = blockState.getBlock(); if (AllBlockTags.FAN_PROCESSING_CATALYSTS_BLASTING.matches(blockState)) {
return block == Blocks.LAVA || getHeatLevelOf(blockState).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING); if (blockState.hasProperty(BlazeBurnerBlock.HEAT_LEVEL) && !blockState.getValue(BlazeBurnerBlock.HEAT_LEVEL).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING)) {
return false;
}
return true;
}
return false;
} }
@Override @Override
@ -233,15 +238,21 @@ public class AllFanProcessingTypes {
@Override @Override
public boolean isValidAt(Level level, BlockPos pos) { public boolean isValidAt(Level level, BlockPos pos) {
FluidState fluidState = level.getFluidState(pos);
if (AllFluidTags.FAN_PROCESSING_CATALYSTS_HAUNTING.matches(fluidState)) {
return true;
}
BlockState blockState = level.getBlockState(pos); BlockState blockState = level.getBlockState(pos);
Block block = blockState.getBlock(); if (AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.matches(blockState)) {
return block == Blocks.SOUL_FIRE if (blockState.is(BlockTags.CAMPFIRES) && blockState.hasProperty(CampfireBlock.LIT) && !blockState.getValue(CampfireBlock.LIT)) {
|| block == Blocks.SOUL_CAMPFIRE && blockState.getOptionalValue(CampfireBlock.LIT) return false;
.orElse(false) }
|| AllBlocks.LIT_BLAZE_BURNER.has(blockState) if (blockState.hasProperty(LitBlazeBurnerBlock.FLAME_TYPE) && blockState.getValue(LitBlazeBurnerBlock.FLAME_TYPE) != LitBlazeBurnerBlock.FlameType.SOUL) {
&& blockState.getOptionalValue(LitBlazeBurnerBlock.FLAME_TYPE) return false;
.map(flame -> flame == LitBlazeBurnerBlock.FlameType.SOUL) }
.orElse(false); return true;
}
return false;
} }
@Override @Override
@ -347,16 +358,24 @@ public class AllFanProcessingTypes {
@Override @Override
public boolean isValidAt(Level level, BlockPos pos) { public boolean isValidAt(Level level, BlockPos pos) {
FluidState fluidState = level.getFluidState(pos);
if (AllFluidTags.FAN_PROCESSING_CATALYSTS_SMOKING.matches(fluidState)) {
return true;
}
BlockState blockState = level.getBlockState(pos); BlockState blockState = level.getBlockState(pos);
Block block = blockState.getBlock(); if (AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.matches(blockState)) {
return block == Blocks.FIRE if (blockState.is(BlockTags.CAMPFIRES) && blockState.hasProperty(CampfireBlock.LIT) && !blockState.getValue(CampfireBlock.LIT)) {
|| blockState.is(BlockTags.CAMPFIRES) && blockState.getOptionalValue(CampfireBlock.LIT) return false;
.orElse(false) }
|| AllBlocks.LIT_BLAZE_BURNER.has(blockState) if (blockState.hasProperty(LitBlazeBurnerBlock.FLAME_TYPE) && blockState.getValue(LitBlazeBurnerBlock.FLAME_TYPE) != LitBlazeBurnerBlock.FlameType.REGULAR) {
&& blockState.getOptionalValue(LitBlazeBurnerBlock.FLAME_TYPE) return false;
.map(flame -> flame == LitBlazeBurnerBlock.FlameType.REGULAR) }
.orElse(false) if (blockState.hasProperty(BlazeBurnerBlock.HEAT_LEVEL) && blockState.getValue(BlazeBurnerBlock.HEAT_LEVEL) != BlazeBurnerBlock.HeatLevel.SMOULDERING) {
|| getHeatLevelOf(blockState) == BlazeBurnerBlock.HeatLevel.SMOULDERING; return false;
}
return true;
}
return false;
} }
@Override @Override
@ -420,8 +439,14 @@ public class AllFanProcessingTypes {
@Override @Override
public boolean isValidAt(Level level, BlockPos pos) { public boolean isValidAt(Level level, BlockPos pos) {
FluidState fluidState = level.getFluidState(pos); FluidState fluidState = level.getFluidState(pos);
Fluid fluid = fluidState.getType(); if (AllFluidTags.FAN_PROCESSING_CATALYSTS_SPLASHING.matches(fluidState)) {
return fluid == Fluids.WATER || fluid == Fluids.FLOWING_WATER; return true;
}
BlockState blockState = level.getBlockState(pos);
if (AllBlockTags.FAN_PROCESSING_CATALYSTS_SPLASHING.matches(blockState)) {
return true;
}
return false;
} }
@Override @Override

View file

@ -29,6 +29,7 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemHelper;
import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.item.SmartInventory;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.BlockHelper;
import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Components;
import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.IntAttached; import com.simibubi.create.foundation.utility.IntAttached;
@ -602,7 +603,7 @@ public class BasinBlockEntity extends SmartBlockEntity implements IHaveGoggleInf
public static HeatLevel getHeatLevelOf(BlockState state) { public static HeatLevel getHeatLevelOf(BlockState state) {
if (state.hasProperty(BlazeBurnerBlock.HEAT_LEVEL)) if (state.hasProperty(BlazeBurnerBlock.HEAT_LEVEL))
return state.getValue(BlazeBurnerBlock.HEAT_LEVEL); return state.getValue(BlazeBurnerBlock.HEAT_LEVEL);
return AllTags.AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE; return AllTags.AllBlockTags.PASSIVE_BOILER_HEATERS.matches(state) && BlockHelper.isNotUnheated(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE;
} }
public Couple<SmartFluidTankBehaviour> getTanks() { public Couple<SmartFluidTankBehaviour> getTanks() {

View file

@ -25,6 +25,7 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement;
import com.simibubi.create.content.trains.entity.Carriage; import com.simibubi.create.content.trains.entity.Carriage;
import com.simibubi.create.content.trains.entity.CarriageBogey; import com.simibubi.create.content.trains.entity.CarriageBogey;
import com.simibubi.create.content.trains.entity.TravellingPoint; import com.simibubi.create.content.trains.entity.TravellingPoint;
import com.simibubi.create.content.trains.graph.TrackEdge;
import com.simibubi.create.content.trains.track.TrackMaterial; import com.simibubi.create.content.trains.track.TrackMaterial;
import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.IBE;
import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.block.ProperWaterloggedBlock;
@ -75,7 +76,10 @@ public abstract class AbstractBogeyBlock<T extends AbstractBogeyBlockEntity> ext
public boolean isOnIncompatibleTrack(Carriage carriage, boolean leading) { public boolean isOnIncompatibleTrack(Carriage carriage, boolean leading) {
TravellingPoint point = leading ? carriage.getLeadingPoint() : carriage.getTrailingPoint(); TravellingPoint point = leading ? carriage.getLeadingPoint() : carriage.getTrailingPoint();
CarriageBogey bogey = leading ? carriage.leadingBogey() : carriage.trailingBogey(); CarriageBogey bogey = leading ? carriage.leadingBogey() : carriage.trailingBogey();
return point.edge.getTrackMaterial().trackType != getTrackType(bogey.getStyle()); TrackEdge currentEdge = point.edge;
if (currentEdge == null)
return false;
return currentEdge.getTrackMaterial().trackType != getTrackType(bogey.getStyle());
} }
public Set<TrackMaterial.TrackType> getValidPathfindingTypes(BogeyStyle style) { public Set<TrackMaterial.TrackType> getValidPathfindingTypes(BogeyStyle style) {

View file

@ -0,0 +1,122 @@
package com.simibubi.create.content.trains.track;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import com.simibubi.create.content.contraptions.glue.SuperGlueEntity;
import com.simibubi.create.foundation.utility.AttachedRegistry;
import com.simibubi.create.foundation.utility.BlockFace;
import com.simibubi.create.foundation.utility.Pair;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.portal.PortalInfo;
import net.minecraft.world.phys.AABB;
import net.minecraftforge.common.util.ITeleporter;
import net.minecraftforge.registries.ForgeRegistries;
public class AllPortalTracks {
// Portals must be entered from the side and must lead to a different dimension
// than the one entered from
@FunctionalInterface
public interface PortalTrackProvider extends UnaryOperator<Pair<ServerLevel, BlockFace>> {
};
private static final AttachedRegistry<Block, PortalTrackProvider> PORTAL_BEHAVIOURS =
new AttachedRegistry<>(ForgeRegistries.BLOCKS);
public static void registerIntegration(ResourceLocation block, PortalTrackProvider provider) {
PORTAL_BEHAVIOURS.register(block, provider);
}
public static void registerIntegration(Block block, PortalTrackProvider provider) {
PORTAL_BEHAVIOURS.register(block, provider);
}
public static boolean isSupportedPortal(BlockState state) {
return PORTAL_BEHAVIOURS.get(state.getBlock()) != null;
}
public static Pair<ServerLevel, BlockFace> getOtherSide(ServerLevel level, BlockFace inboundTrack) {
BlockPos portalPos = inboundTrack.getConnectedPos();
BlockState portalState = level.getBlockState(portalPos);
PortalTrackProvider provider = PORTAL_BEHAVIOURS.get(portalState.getBlock());
return provider == null ? null : provider.apply(Pair.of(level, inboundTrack));
}
// Builtin handlers
public static void registerDefaults() {
registerIntegration(Blocks.NETHER_PORTAL, AllPortalTracks::nether);
registerIntegration(new ResourceLocation("aether", "aether_portal"), AllPortalTracks::aether);
}
private static Pair<ServerLevel, BlockFace> nether(Pair<ServerLevel, BlockFace> inbound) {
return standardPortalProvider(inbound, Level.OVERWORLD, Level.NETHER, ServerLevel::getPortalForcer);
}
private static Pair<ServerLevel, BlockFace> aether(Pair<ServerLevel, BlockFace> inbound) {
ResourceKey<Level> aetherLevelKey =
ResourceKey.create(Registry.DIMENSION_REGISTRY, new ResourceLocation("aether", "the_aether"));
return standardPortalProvider(inbound, Level.OVERWORLD, aetherLevelKey, level -> {
try {
return (ITeleporter) Class.forName("com.aetherteam.aether.block.portal.AetherPortalForcer")
.getDeclaredConstructor(ServerLevel.class, boolean.class)
.newInstance(level, true);
} catch (Exception e) {
e.printStackTrace();
}
return level.getPortalForcer();
});
}
public static Pair<ServerLevel, BlockFace> standardPortalProvider(Pair<ServerLevel, BlockFace> inbound,
ResourceKey<Level> firstDimension, ResourceKey<Level> secondDimension,
Function<ServerLevel, ITeleporter> customPortalForcer) {
ServerLevel level = inbound.getFirst();
ResourceKey<Level> resourcekey = level.dimension() == secondDimension ? firstDimension : secondDimension;
MinecraftServer minecraftserver = level.getServer();
ServerLevel otherLevel = minecraftserver.getLevel(resourcekey);
if (otherLevel == null || !minecraftserver.isNetherEnabled())
return null;
BlockFace inboundTrack = inbound.getSecond();
BlockPos portalPos = inboundTrack.getConnectedPos();
BlockState portalState = level.getBlockState(portalPos);
ITeleporter teleporter = customPortalForcer.apply(otherLevel);
SuperGlueEntity probe = new SuperGlueEntity(level, new AABB(portalPos));
probe.setYRot(inboundTrack.getFace()
.toYRot());
probe.setPortalEntrancePos();
PortalInfo portalinfo = teleporter.getPortalInfo(probe, otherLevel, probe::findDimensionEntryPoint);
if (portalinfo == null)
return null;
BlockPos otherPortalPos = new BlockPos(portalinfo.pos);
BlockState otherPortalState = otherLevel.getBlockState(otherPortalPos);
if (otherPortalState.getBlock() != portalState.getBlock())
return null;
Direction targetDirection = inboundTrack.getFace();
if (targetDirection.getAxis() == otherPortalState.getValue(BlockStateProperties.HORIZONTAL_AXIS))
targetDirection = targetDirection.getClockWise();
BlockPos otherPos = otherPortalPos.relative(targetDirection);
return Pair.of(otherLevel, new BlockFace(otherPos, targetDirection.getOpposite()));
}
}

View file

@ -30,7 +30,6 @@ import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllPartialModels;
import com.simibubi.create.AllShapes; import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTags; import com.simibubi.create.AllTags;
import com.simibubi.create.content.contraptions.glue.SuperGlueEntity;
import com.simibubi.create.content.decoration.girder.GirderBlock; import com.simibubi.create.content.decoration.girder.GirderBlock;
import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement;
@ -63,7 +62,6 @@ import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.MutableComponent;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
@ -82,7 +80,6 @@ import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.NetherPortalBlock;
import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
@ -95,9 +92,6 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox;
import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.level.material.PushReaction;
import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.BlockPathTypes;
import net.minecraft.world.level.portal.PortalForcer;
import net.minecraft.world.level.portal.PortalInfo;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.CollisionContext;
@ -241,10 +235,10 @@ public class TrackBlock extends Block
withBlockEntityDo(level, pos, tbe -> tbe.tilt.undoSmoothing()); withBlockEntityDo(level, pos, tbe -> tbe.tilt.undoSmoothing());
if (!state.getValue(SHAPE) if (!state.getValue(SHAPE)
.isPortal()) .isPortal())
connectToNether(level, pos, state); connectToPortal(level, pos, state);
} }
protected void connectToNether(ServerLevel level, BlockPos pos, BlockState state) { protected void connectToPortal(ServerLevel level, BlockPos pos, BlockState state) {
TrackShape shape = state.getValue(TrackBlock.SHAPE); TrackShape shape = state.getValue(TrackBlock.SHAPE);
Axis portalTest = shape == TrackShape.XO ? Axis.X : shape == TrackShape.ZO ? Axis.Z : null; Axis portalTest = shape == TrackShape.XO ? Axis.X : shape == TrackShape.ZO ? Axis.Z : null;
if (portalTest == null) if (portalTest == null)
@ -257,11 +251,11 @@ public class TrackBlock extends Block
for (Direction d : Iterate.directionsInAxis(portalTest)) { for (Direction d : Iterate.directionsInAxis(portalTest)) {
BlockPos portalPos = pos.relative(d); BlockPos portalPos = pos.relative(d);
BlockState portalState = level.getBlockState(portalPos); BlockState portalState = level.getBlockState(portalPos);
if (!(portalState.getBlock() instanceof NetherPortalBlock)) if (!AllPortalTracks.isSupportedPortal(portalState))
continue; continue;
pop = true; pop = true;
Pair<ServerLevel, BlockFace> otherSide = getOtherSide(level, new BlockFace(pos, d)); Pair<ServerLevel, BlockFace> otherSide = AllPortalTracks.getOtherSide(level, new BlockFace(pos, d));
if (otherSide == null) { if (otherSide == null) {
fail = "missing"; fail = "missing";
continue; continue;
@ -313,38 +307,6 @@ public class TrackBlock extends Block
.append(component.withStyle(st -> st.withColor(0xFFD3B4))), false); .append(component.withStyle(st -> st.withColor(0xFFD3B4))), false);
} }
protected Pair<ServerLevel, BlockFace> getOtherSide(ServerLevel level, BlockFace inboundTrack) {
BlockPos portalPos = inboundTrack.getConnectedPos();
BlockState portalState = level.getBlockState(portalPos);
if (!(portalState.getBlock() instanceof NetherPortalBlock))
return null;
MinecraftServer minecraftserver = level.getServer();
ResourceKey<Level> resourcekey = level.dimension() == Level.NETHER ? Level.OVERWORLD : Level.NETHER;
ServerLevel otherLevel = minecraftserver.getLevel(resourcekey);
if (otherLevel == null || !minecraftserver.isNetherEnabled())
return null;
PortalForcer teleporter = otherLevel.getPortalForcer();
SuperGlueEntity probe = new SuperGlueEntity(level, new AABB(portalPos));
probe.setYRot(inboundTrack.getFace()
.toYRot());
PortalInfo portalinfo = teleporter.getPortalInfo(probe, otherLevel, probe::findDimensionEntryPoint);
if (portalinfo == null)
return null;
BlockPos otherPortalPos = BlockPos.containing(portalinfo.pos);
BlockState otherPortalState = otherLevel.getBlockState(otherPortalPos);
if (!(otherPortalState.getBlock() instanceof NetherPortalBlock))
return null;
Direction targetDirection = inboundTrack.getFace();
if (targetDirection.getAxis() == otherPortalState.getValue(NetherPortalBlock.AXIS))
targetDirection = targetDirection.getClockWise();
BlockPos otherPos = otherPortalPos.relative(targetDirection);
return Pair.of(otherLevel, new BlockFace(otherPos, targetDirection.getOpposite()));
}
@Override @Override
public BlockState updateShape(BlockState state, Direction pDirection, BlockState pNeighborState, public BlockState updateShape(BlockState state, Direction pDirection, BlockState pNeighborState,
LevelAccessor level, BlockPos pCurrentPos, BlockPos pNeighborPos) { LevelAccessor level, BlockPos pCurrentPos, BlockPos pNeighborPos) {
@ -361,7 +323,7 @@ public class TrackBlock extends Block
BlockPos portalPos = pCurrentPos.relative(d); BlockPos portalPos = pCurrentPos.relative(d);
BlockState portalState = level.getBlockState(portalPos); BlockState portalState = level.getBlockState(portalPos);
if (!(portalState.getBlock() instanceof NetherPortalBlock)) if (!AllPortalTracks.isSupportedPortal(portalState))
return Blocks.AIR.defaultBlockState(); return Blocks.AIR.defaultBlockState();
} }

View file

@ -10,11 +10,11 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.UnaryOperator; import java.util.function.UnaryOperator;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.gson.JsonObject;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllFluids; import com.simibubi.create.AllFluids;
import com.simibubi.create.AllItems; import com.simibubi.create.AllItems;
@ -324,15 +324,15 @@ public class AllAdvancements implements DataProvider {
.description("Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout") .description("Create Chocolate Glazed Berries, a Honeyed Apple, and a Sweet Roll all from the same Spout")
.after(STEAM_ENGINE_MAXED) .after(STEAM_ENGINE_MAXED)
.special(EXPERT)), .special(EXPERT)),
DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.NETHERITE_DIVING_HELMET)
.title("Swimming with the Striders")
.description("Attempt to take a dive in lava with your netherite diving gear")
.after(FOODS)
.special(EXPERT)),
// Copper - Hidden // Copper - Hidden
DIVING_SUIT_LAVA = create("diving_suit_lava", b -> b.icon(AllItems.COPPER_DIVING_HELMET)
.title("Swimming with the Striders")
.description("Attempt to take a dive in lava with your diving gear")
.after(BACKTANK)
.special(SECRET)),
CHAINED_DRAIN = create("chained_drain", b -> b.icon(AllBlocks.ITEM_DRAIN) CHAINED_DRAIN = create("chained_drain", b -> b.icon(AllBlocks.ITEM_DRAIN)
.title("On a Roll") .title("On a Roll")
.description("Watch an item move across a row of Item Drains") .description("Watch an item move across a row of Item Drains")
@ -384,7 +384,7 @@ public class AllAdvancements implements DataProvider {
.special(NOISY)), .special(NOISY)),
SPEED_CONTROLLER = create("speed_controller", b -> b.icon(AllBlocks.ROTATION_SPEED_CONTROLLER) SPEED_CONTROLLER = create("speed_controller", b -> b.icon(AllBlocks.ROTATION_SPEED_CONTROLLER)
.title("Engineers Hate Him!") .title("Engineers hate this simple trick!")
.description("Fine-tune your Contraption with a Rotation Speed Controller") .description("Fine-tune your Contraption with a Rotation Speed Controller")
.after(MECHANISM)), .after(MECHANISM)),
@ -549,7 +549,7 @@ public class AllAdvancements implements DataProvider {
TRAIN_PORTAL = create("train_portal", b -> b.icon(Blocks.AMETHYST_BLOCK) TRAIN_PORTAL = create("train_portal", b -> b.icon(Blocks.AMETHYST_BLOCK)
.title("Dimensional Commuter") .title("Dimensional Commuter")
.description("Ride a Train through a Nether portal") .description("Ride a Train through a portal")
.after(TRAIN_WHISTLE) .after(TRAIN_WHISTLE)
.special(NOISY)), .special(NOISY)),
@ -640,11 +640,9 @@ public class AllAdvancements implements DataProvider {
return "Create's Advancements"; return "Create's Advancements";
} }
public static JsonObject provideLangEntries() { public static void provideLang(BiConsumer<String, String> consumer) {
JsonObject object = new JsonObject();
for (CreateAdvancement advancement : ENTRIES) for (CreateAdvancement advancement : ENTRIES)
advancement.appendToLang(object); advancement.provideLang(consumer);
return object;
} }
public static void register() {} public static void register() {}

View file

@ -1,9 +1,9 @@
package com.simibubi.create.foundation.advancement; package com.simibubi.create.foundation.advancement;
import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.UnaryOperator; import java.util.function.UnaryOperator;
import com.google.gson.JsonObject;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.foundation.utility.Components; import com.simibubi.create.foundation.utility.Components;
import com.tterrag.registrate.util.entry.ItemProviderEntry; import com.tterrag.registrate.util.entry.ItemProviderEntry;
@ -30,7 +30,7 @@ public class CreateAdvancement {
static final ResourceLocation BACKGROUND = Create.asResource("textures/gui/advancements.png"); static final ResourceLocation BACKGROUND = Create.asResource("textures/gui/advancements.png");
static final String LANG = "advancement." + Create.ID + "."; static final String LANG = "advancement." + Create.ID + ".";
static final String SECRET_SUFFIX = "\u00A77\n(Hidden Advancement)"; static final String SECRET_SUFFIX = "\n\u00A77(Hidden Advancement)";
private Advancement.Builder builder; private Advancement.Builder builder;
private SimpleCreateTrigger builtinTrigger; private SimpleCreateTrigger builtinTrigger;
@ -101,9 +101,9 @@ public class CreateAdvancement {
.toString()); .toString());
} }
void appendToLang(JsonObject object) { void provideLang(BiConsumer<String, String> consumer) {
object.addProperty(titleKey(), title); consumer.accept(titleKey(), title);
object.addProperty(descriptionKey(), description); consumer.accept(descriptionKey(), description);
} }
static enum TaskType { static enum TaskType {

View file

@ -1,35 +0,0 @@
package com.simibubi.create.foundation.advancement;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import net.minecraft.MethodsReturnNonnullByDefault;
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class EnumTrigger<T extends Enum<T>> extends StringSerializableTrigger<T> {
private final Class<T> reference;
public EnumTrigger(String id, Class<T> reference) {
super(id);
this.reference = reference;
}
@Nullable
@Override
protected T getValue(String key) {
try {
return Enum.valueOf(reference, key);
} catch (IllegalArgumentException | NullPointerException e) {
return null;
}
}
@Nullable
@Override
protected String getKey(@Nullable T value) {
if (value == null)
return null;
return value.name();
}
}

View file

@ -1,9 +0,0 @@
package com.simibubi.create.foundation.advancement;
import net.minecraft.server.level.ServerPlayer;
public interface ITriggerable {
public void trigger(ServerPlayer player);
}

View file

@ -1,32 +0,0 @@
package com.simibubi.create.foundation.advancement;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.registries.IForgeRegistry;
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class RegistryTrigger<T> extends StringSerializableTrigger<T> {
private final IForgeRegistry<T> registry;
public RegistryTrigger(String id, IForgeRegistry<T> registry) {
super(id);
this.registry = registry;
}
@Nullable
@Override
protected T getValue(String key) {
return registry.getValue(new ResourceLocation(key));
}
@Nullable
@Override
protected String getKey(T value) {
ResourceLocation key = registry.getKey(value);
return key == null ? null : key.toString();
}
}

View file

@ -16,7 +16,7 @@ import net.minecraft.server.level.ServerPlayer;
@MethodsReturnNonnullByDefault @MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public class SimpleCreateTrigger extends CriterionTriggerBase<SimpleCreateTrigger.Instance> implements ITriggerable { public class SimpleCreateTrigger extends CriterionTriggerBase<SimpleCreateTrigger.Instance> {
public SimpleCreateTrigger(String id) { public SimpleCreateTrigger(String id) {
super(id); super(id);

View file

@ -1,121 +0,0 @@
package com.simibubi.create.foundation.advancement;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.advancements.critereon.ContextAwarePredicate;
import net.minecraft.advancements.critereon.DeserializationContext;
import net.minecraft.advancements.critereon.SerializationContext;
import net.minecraft.server.level.ServerPlayer;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public abstract class StringSerializableTrigger<T> extends CriterionTriggerBase<StringSerializableTrigger.Instance<T>> {
protected String getJsonKey() {
return "accepted_entries";
}
protected StringSerializableTrigger(String id) {
super(id);
}
@SafeVarargs
public final Instance<T> forEntries(@Nullable T... entries) {
return new Instance<>(this, entries == null ? null : createLinkedHashSet(entries));
}
public void trigger(ServerPlayer player, @Nullable T registryEntry) {
trigger(player, Collections.singletonList(() -> registryEntry));
}
public ITriggerable constructTriggerFor(@Nullable T entry) {
return player -> trigger(player, entry);
}
@Override
public Instance<T> createInstance(JsonObject json, DeserializationContext context) {
if (json.has(getJsonKey())) {
JsonArray elements = json.getAsJsonArray(getJsonKey());
return new Instance<>(this, StreamSupport.stream(elements.spliterator(), false)
.map(JsonElement::getAsString)
.map(key -> {
T entry = getValue(key);
if (entry == null)
throw new JsonSyntaxException("Unknown entry '" + key + "'");
return entry;
})
.collect(Collectors.toSet()));
}
return new Instance<>(this, null);
}
@Nullable
protected abstract T getValue(String key);
@Nullable
protected abstract String getKey(T value);
private static <T> LinkedHashSet<T> createLinkedHashSet(T[] elements) {
LinkedHashSet<T> set = new LinkedHashSet<>(elements.length);
Collections.addAll(set, elements);
return set;
}
public static class Instance<T> extends CriterionTriggerBase.Instance {
@Nullable
private final Set<T> entries;
private final StringSerializableTrigger<T> trigger;
public Instance(StringSerializableTrigger<T> trigger, @Nullable Set<T> entries) {
super(trigger.getId(), ContextAwarePredicate.ANY);
this.trigger = trigger;
this.entries = entries;
}
@Override
protected boolean test(@Nullable List<Supplier<Object>> suppliers) {
if (entries == null || suppliers == null || suppliers.isEmpty())
return false;
return entries.contains(suppliers.get(0)
.get());
}
@Override
public JsonObject serializeToJson(SerializationContext p_230240_1_) {
JsonObject jsonobject = super.serializeToJson(p_230240_1_);
JsonArray elements = new JsonArray();
if (entries == null) {
jsonobject.add(trigger.getJsonKey(), elements);
return jsonobject;
}
for (T entry : entries) {
if (entry == null)
continue;
String key = trigger.getKey(entry);
if (key != null)
elements.add(key);
}
jsonobject.add(trigger.getJsonKey(), elements);
return jsonobject;
}
}
}

View file

@ -1,45 +0,0 @@
package com.simibubi.create.foundation.data;
import com.google.common.base.Supplier;
import com.google.gson.JsonElement;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.ponder.PonderLocalization;
import com.simibubi.create.foundation.utility.Lang;
public enum AllLangPartials implements LangPartial {
ADVANCEMENTS("Advancements", AllAdvancements::provideLangEntries),
INTERFACE("UI & Messages"),
SUBTITLES("Subtitles", AllSoundEvents::provideLangEntries),
TOOLTIPS("Item Descriptions"),
PONDER("Ponder Content", PonderLocalization::provideLangEntries),
;
private final String displayName;
private final Supplier<JsonElement> provider;
private AllLangPartials(String displayName) {
this.displayName = displayName;
String fileName = Lang.asId(name());
this.provider = () -> LangPartial.fromResource(Create.ID, fileName);
}
private AllLangPartials(String displayName, Supplier<JsonElement> provider) {
this.displayName = displayName;
this.provider = provider;
}
@Override
public String getDisplayName() {
return displayName;
}
@Override
public JsonElement provide() {
return provider.get();
}
}

View file

@ -11,7 +11,6 @@ import java.util.function.Supplier;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import com.simibubi.create.Create;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
import com.simibubi.create.content.decoration.encasing.CasingConnectivity; import com.simibubi.create.content.decoration.encasing.CasingConnectivity;
import com.simibubi.create.content.fluids.VirtualFluid; import com.simibubi.create.content.fluids.VirtualFluid;
@ -174,8 +173,8 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
public <T extends ForgeFlowingFluid> FluidBuilder<T, CreateRegistrate> virtualFluid(String name, public <T extends ForgeFlowingFluid> FluidBuilder<T, CreateRegistrate> virtualFluid(String name,
FluidBuilder.FluidTypeFactory typeFactory, NonNullFunction<ForgeFlowingFluid.Properties, T> factory) { FluidBuilder.FluidTypeFactory typeFactory, NonNullFunction<ForgeFlowingFluid.Properties, T> factory) {
return entry(name, return entry(name,
c -> new VirtualFluidBuilder<>(self(), self(), name, c, Create.asResource("fluid/" + name + "_still"), c -> new VirtualFluidBuilder<>(self(), self(), name, c, new ResourceLocation(getModid(), "fluid/" + name + "_still"),
Create.asResource("fluid/" + name + "_flow"), typeFactory, factory)); new ResourceLocation(getModid(), "fluid/" + name + "_flow"), typeFactory, factory));
} }
public <T extends ForgeFlowingFluid> FluidBuilder<T, CreateRegistrate> virtualFluid(String name, public <T extends ForgeFlowingFluid> FluidBuilder<T, CreateRegistrate> virtualFluid(String name,
@ -187,7 +186,7 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
public FluidBuilder<VirtualFluid, CreateRegistrate> virtualFluid(String name) { public FluidBuilder<VirtualFluid, CreateRegistrate> virtualFluid(String name) {
return entry(name, return entry(name,
c -> new VirtualFluidBuilder<VirtualFluid, CreateRegistrate>(self(), self(), name, c, c -> new VirtualFluidBuilder<VirtualFluid, CreateRegistrate>(self(), self(), name, c,
Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow"), new ResourceLocation(getModid(), "fluid/" + name + "_still"), new ResourceLocation(getModid(), "fluid/" + name + "_flow"),
CreateRegistrate::defaultFluidType, VirtualFluid::new)); CreateRegistrate::defaultFluidType, VirtualFluid::new));
} }
@ -198,12 +197,12 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
} }
public FluidBuilder<ForgeFlowingFluid.Flowing, CreateRegistrate> standardFluid(String name) { public FluidBuilder<ForgeFlowingFluid.Flowing, CreateRegistrate> standardFluid(String name) {
return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow")); return fluid(name, new ResourceLocation(getModid(), "fluid/" + name + "_still"), new ResourceLocation(getModid(), "fluid/" + name + "_flow"));
} }
public FluidBuilder<ForgeFlowingFluid.Flowing, CreateRegistrate> standardFluid(String name, public FluidBuilder<ForgeFlowingFluid.Flowing, CreateRegistrate> standardFluid(String name,
FluidBuilder.FluidTypeFactory typeFactory) { FluidBuilder.FluidTypeFactory typeFactory) {
return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow"), return fluid(name, new ResourceLocation(getModid(), "fluid/" + name + "_still"), new ResourceLocation(getModid(), "fluid/" + name + "_flow"),
typeFactory); typeFactory);
} }

View file

@ -11,8 +11,6 @@ import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -25,17 +23,19 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.foundation.ponder.PonderScene; import com.simibubi.create.foundation.ponder.PonderScene;
import com.tterrag.registrate.providers.RegistrateDataProvider; import com.tterrag.registrate.AbstractRegistrate;
import net.minecraft.Util; import net.minecraft.Util;
import net.minecraft.data.CachedOutput; import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider; import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput; import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.GsonHelper; import net.minecraft.util.GsonHelper;
import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
/**
* @deprecated Use {@link AbstractRegistrate#addRawLang} or, if absolutely necessary, {@link CreateRegistrate#addLangPostprocessor} instead.
*/
@Deprecated(forRemoval = true)
public class LangMerger implements DataProvider { public class LangMerger implements DataProvider {
static final Gson GSON = new GsonBuilder().setPrettyPrinting() static final Gson GSON = new GsonBuilder().setPrettyPrinting()
@ -63,18 +63,6 @@ public class LangMerger implements DataProvider {
populateLangIgnore(); populateLangIgnore();
} }
public static void attachToRegistrateProvider(DataGenerator gen, PackOutput output) {
Map<String, DataProvider> providers =
ObfuscationReflectionHelper.getPrivateValue(DataGenerator.class, gen, "providersToRun");
Entry<String, DataProvider> entryToReplace = null;
for (Entry<String, DataProvider> entry : providers.entrySet())
if (entry.getValue() instanceof RegistrateDataProvider rdp)
entryToReplace = entry;
if (entryToReplace != null)
providers.put(entryToReplace.getKey(), new ChainedDataProvider(entryToReplace.getValue(),
new LangMerger(output, Create.ID, Create.NAME, AllLangPartials.values())));
}
protected void populateLangIgnore() { protected void populateLangIgnore() {
// Key prefixes added here will NOT be transferred to lang templates // Key prefixes added here will NOT be transferred to lang templates
langIgnore.add("create.ponder.debug_"); // Ponder debug scene text langIgnore.add("create.ponder.debug_"); // Ponder debug scene text

View file

@ -2,7 +2,12 @@ package com.simibubi.create.foundation.data;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.simibubi.create.foundation.utility.FilesHelper; import com.simibubi.create.foundation.utility.FilesHelper;
import com.tterrag.registrate.AbstractRegistrate;
/**
* @deprecated Use {@link AbstractRegistrate#addRawLang} or, if absolutely necessary, {@link CreateRegistrate#addLangPostprocessor} instead.
*/
@Deprecated(forRemoval = true)
public interface LangPartial { public interface LangPartial {
String getDisplayName(); String getDisplayName();

View file

@ -1,34 +0,0 @@
package com.simibubi.create.foundation.data;
import java.util.concurrent.CompletableFuture;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.AllTags.AllRecipeSerializerTags;
import com.simibubi.create.Create;
import com.simibubi.create.compat.Mods;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraftforge.common.data.ExistingFileHelper;
public class RecipeSerializerTagGen extends TagsProvider<RecipeSerializer<?>> {
public RecipeSerializerTagGen(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider, @Nullable ExistingFileHelper existingFileHelper) {
super(output, Registries.RECIPE_SERIALIZER, lookupProvider, Create.ID, existingFileHelper);
}
@Override
public String getName() {
return "Create's Recipe Serializer Tags";
}
@Override
protected void addTags(HolderLookup.Provider provider) {
this.tag(AllRecipeSerializerTags.AUTOMATION_IGNORE.tag)
.addOptional(Mods.OCCULTISM.rl("spirit_trade"))
.addOptional(Mods.OCCULTISM.rl("ritual"));
}
}

View file

@ -4,15 +4,10 @@ import java.util.function.Function;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.simibubi.create.AllTags; import com.simibubi.create.AllTags;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.AllTags.AllEntityTags;
import com.simibubi.create.AllTags.AllFluidTags;
import com.simibubi.create.AllTags.AllItemTags;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.foundation.data.recipe.Mods; import com.simibubi.create.foundation.data.recipe.Mods;
import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.BlockBuilder;
import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.builders.ItemBuilder;
import com.tterrag.registrate.providers.ProviderType;
import com.tterrag.registrate.providers.RegistrateTagsProvider; import com.tterrag.registrate.providers.RegistrateTagsProvider;
import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullFunction;
@ -21,18 +16,10 @@ import net.minecraft.data.tags.TagsProvider;
import net.minecraft.data.tags.TagsProvider.TagAppender; import net.minecraft.data.tags.TagsProvider.TagAppender;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagBuilder; import net.minecraft.tags.TagBuilder;
import net.minecraft.tags.TagKey; import net.minecraft.tags.TagKey;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.Fluids;
import net.minecraftforge.common.Tags;
public class TagGen { public class TagGen {
public static <T extends Block, P> NonNullFunction<BlockBuilder<T, P>, BlockBuilder<T, P>> axeOrPickaxe() { public static <T extends Block, P> NonNullFunction<BlockBuilder<T, P>, BlockBuilder<T, P>> axeOrPickaxe() {
@ -72,211 +59,6 @@ public class TagGen {
return appender; return appender;
} }
public static void datagen() {
Create.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, TagGen::genBlockTags);
Create.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, TagGen::genItemTags);
Create.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, TagGen::genFluidTags);
Create.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, TagGen::genEntityTags);
}
private static void genBlockTags(RegistrateTagsProvider<Block> provIn) {
CreateTagsProvider<Block> prov = new CreateTagsProvider<>(provIn, Block::builtInRegistryHolder);
prov.tag(AllBlockTags.BRITTLE.tag)
.add(Blocks.BELL, Blocks.COCOA, Blocks.FLOWER_POT)
.addTag(BlockTags.BEDS)
.addTag(BlockTags.DOORS);
prov.tag(AllBlockTags.MOVABLE_EMPTY_COLLIDER.tag)
.add(Blocks.COBWEB, Blocks.POWDER_SNOW, Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK)
.addTag(BlockTags.FENCE_GATES);
prov.tag(AllBlockTags.FAN_TRANSPARENT.tag)
.add(Blocks.IRON_BARS)
.add(Blocks.MANGROVE_ROOTS)
.addTag(BlockTags.CAMPFIRES)
.addTag(BlockTags.FENCES)
.addTag(BlockTags.LEAVES);
prov.tag(AllBlockTags.ORE_OVERRIDE_STONE.tag)
.addTag(BlockTags.STONE_ORE_REPLACEABLES);
prov.tag(AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
.add(Blocks.MAGMA_BLOCK, Blocks.LAVA)
.addTag(BlockTags.CAMPFIRES)
.addTag(BlockTags.FIRE);
prov.tag(AllBlockTags.SAFE_NBT.tag)
.addTag(BlockTags.BANNERS)
.addTag(BlockTags.SIGNS);
prov.tag(AllBlockTags.TREE_ATTACHMENTS.tag)
.add(Blocks.BEE_NEST, Blocks.COCOA, Blocks.MANGROVE_PROPAGULE, Blocks.MOSS_CARPET, Blocks.SHROOMLIGHT, Blocks.VINE);
prov.tag(AllBlockTags.WINDMILL_SAILS.tag)
.addTag(BlockTags.WOOL);
prov.tag(AllBlockTags.WRENCH_PICKUP.tag)
.add(Blocks.REDSTONE_WIRE, Blocks.REDSTONE_TORCH, Blocks.REPEATER, Blocks.LEVER,
Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON,
Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET, Blocks.HOPPER)
.addTag(BlockTags.BUTTONS)
.addTag(BlockTags.PRESSURE_PLATES)
.addTag(BlockTags.RAILS);
prov.tag(AllBlockTags.COPYCAT_ALLOW.tag)
.add(Blocks.BARREL);
prov.tag(AllBlockTags.COPYCAT_DENY.tag)
.addTag(BlockTags.CAULDRONS)
.addTag(BlockTags.SAPLINGS)
.addTag(BlockTags.CLIMBABLE);
// COMPAT
addOptional(prov.tag(AllBlockTags.NON_MOVABLE.tag), Mods.IE,
"connector_lv", "connector_lv_relay", "connector_mv", "connector_mv_relay",
"connector_hv", "connector_hv_relay", "connector_bundled", "connector_structural",
"connector_redstone", "connector_probe", "breaker_switch");
// VALIDATE
for (AllBlockTags tag : AllBlockTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static void genItemTags(RegistrateTagsProvider<Item> provIn) {
CreateTagsProvider<Item> prov = new CreateTagsProvider<>(provIn, Item::builtInRegistryHolder);
prov.tag(AllItemTags.SLEEPERS.tag)
.add(Items.STONE_SLAB, Items.SMOOTH_STONE_SLAB, Items.ANDESITE_SLAB);
prov.tag(AllItemTags.STRIPPED_LOGS.tag)
.addTag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
.addTag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
prov.tag(AllItemTags.STRIPPED_WOOD.tag)
.addTag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
.addTag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
prov.tag(AllItemTags.DEPLOYABLE_DRINK.tag)
.add(Items.MILK_BUCKET, Items.POTION);
prov.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.add(Items.GLASS_BOTTLE, Items.POTION, Items.SPLASH_POTION, Items.LINGERING_POTION,
Items.HONEY_BOTTLE, Items.CAKE);
prov.tag(AllItemTags.CONTRAPTION_CONTROLLED.tag)
.add(Items.BELL, Items.CAMPFIRE, Items.SOUL_CAMPFIRE, Items.DISPENSER, Items.DROPPER);
prov.tag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
.add(Items.STRIPPED_ACACIA_LOG, Items.STRIPPED_BIRCH_LOG, Items.STRIPPED_CRIMSON_STEM,
Items.STRIPPED_DARK_OAK_LOG, Items.STRIPPED_JUNGLE_LOG, Items.STRIPPED_MANGROVE_LOG,
Items.STRIPPED_OAK_LOG, Items.STRIPPED_SPRUCE_LOG, Items.STRIPPED_WARPED_STEM,
Items.STRIPPED_CHERRY_LOG, Items.STRIPPED_BAMBOO_BLOCK);
prov.tag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
.add(Items.STRIPPED_ACACIA_WOOD, Items.STRIPPED_BIRCH_WOOD, Items.STRIPPED_CRIMSON_HYPHAE,
Items.STRIPPED_DARK_OAK_WOOD, Items.STRIPPED_JUNGLE_WOOD, Items.STRIPPED_MANGROVE_WOOD,
Items.STRIPPED_OAK_WOOD, Items.STRIPPED_SPRUCE_WOOD, Items.STRIPPED_WARPED_HYPHAE,
Items.STRIPPED_CHERRY_WOOD);
prov.tag(ItemTags.BEACON_PAYMENT_ITEMS)
.addTag(AllItemTags.CREATE_INGOTS.tag);
prov.tag(Tags.Items.INGOTS)
.addTag(AllItemTags.CREATE_INGOTS.tag);
// COMPAT
genStrippedWood(prov);
// VALIDATE
for (AllItemTags tag : AllItemTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static void genStrippedWood(CreateTagsProvider<Item> prov) {
TagAppender<Item> logAppender = prov.tag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
TagAppender<Item> woodAppender = prov.tag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
StrippedWoodHelper helper = new StrippedWoodHelper(logAppender, woodAppender);
helper.add(Mods.ARS_N, "blue_archwood", "purple_archwood", "green_archwood", "red_archwood");
helper.add(Mods.BTN, "livingwood", "dreamwood");
helper.add(Mods.FA, "cherrywood", "mysterywood");
helper.add(Mods.HEX, "akashic");
helper.add(Mods.ID, "menril");
helper.add(Mods.BYG, "aspen", "baobab", "enchanted", "cherry", "cika", "cypress", "ebony", "ether",
"fir", "green_enchanted", "holly", "jacaranda", "lament", "mahogany", "mangrove", "maple", "nightshade",
"palm", "palo_verde", "pine", "rainbow_eucalyptus", "redwood", "skyris", "willow", "witch_hazel",
"zelkova");
helper.add(Mods.SG, "netherwood");
helper.add(Mods.TF, "twilight_oak", "canopy", "mangrove", "dark", "time", "transformation", "mining",
"sorting");
helper.add(Mods.TIC, "greenheart", "skyroot", "bloodshroom");
helper.add(Mods.AP, "twisted");
helper.add(Mods.Q, "azalea", "blossom");
helper.add(Mods.ECO, "coconut", "walnut", "azalea");
helper.add(Mods.BOP, "fir", "redwood", "cherry", "mahogany", "jacaranda", "palm", "willow", "dead",
"magic", "umbran", "hellbark");
helper.add(Mods.BSK, "bluebright", "starlit", "frostbright", "lunar", "dusk", "maple", "cherry");
addOptional(logAppender, Mods.BYG, "stripped_bulbis_stem");
addOptional(woodAppender, Mods.BYG, "stripped_bulbis_wood");
}
private static void genFluidTags(RegistrateTagsProvider<Fluid> provIn) {
CreateTagsProvider<Fluid> prov = new CreateTagsProvider<>(provIn, Fluid::builtInRegistryHolder);
prov.tag(AllFluidTags.BOTTOMLESS_ALLOW.tag)
.add(Fluids.WATER, Fluids.LAVA);
// VALIDATE
for (AllFluidTags tag : AllFluidTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static void genEntityTags(RegistrateTagsProvider<EntityType<?>> provIn) {
CreateTagsProvider<EntityType<?>> prov = new CreateTagsProvider<>(provIn, EntityType::builtInRegistryHolder);
// VALIDATE
for (AllEntityTags tag : AllEntityTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static class StrippedWoodHelper {
protected final TagAppender<Item> logAppender;
protected final TagAppender<Item> woodAppender;
public StrippedWoodHelper(TagAppender<Item> logAppender, TagAppender<Item> woodAppender) {
this.logAppender = logAppender;
this.woodAppender = woodAppender;
}
public void add(Mods mod, String... woodTypes) {
for (String type : woodTypes) {
String strippedPre = mod.strippedIsSuffix ? "" : "stripped_";
String strippedPost = mod.strippedIsSuffix ? "_stripped" : "";
addOptional(logAppender, mod, strippedPre + type + "_log" + strippedPost);
addOptional(woodAppender, mod, strippedPre + type + (mod.omitWoodSuffix ? "" : "_wood") + strippedPost);
}
}
}
public static class CreateTagsProvider<T> { public static class CreateTagsProvider<T> {
private RegistrateTagsProvider<T> provider; private RegistrateTagsProvider<T> provider;
@ -321,5 +103,4 @@ public class TagGen {
} }
} }
} }

View file

@ -26,6 +26,12 @@ public enum Mods {
TF("twilightforest"), TF("twilightforest"),
ECO("ecologics"), ECO("ecologics"),
ENV("environmental"),
ATM("atmospheric"),
ATM_2("atmospheric", b -> b.omitWoodSuffix()),
IX("infernalexp"),
GOOD("goodending"),
BMK("biomemakeover")
; ;
private final String id; private final String id;

View file

@ -38,7 +38,7 @@ public record ItemDescription(ImmutableList<Component> lines, ImmutableList<Comp
@Nullable @Nullable
public static ItemDescription create(String translationKey, Palette palette) { public static ItemDescription create(String translationKey, Palette palette) {
if (!canFillBuilder(translationKey)) { if (!canFillBuilder(translationKey + ".summary")) {
return null; return null;
} }

View file

@ -2,24 +2,17 @@ package com.simibubi.create.foundation.ponder;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.function.BiConsumer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen;
import com.simibubi.create.foundation.ponder.ui.PonderTagScreen;
import com.simibubi.create.foundation.ponder.ui.PonderUI;
import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.infrastructure.ponder.AllPonderTags;
import com.simibubi.create.infrastructure.ponder.PonderIndex; import com.simibubi.create.infrastructure.ponder.PonderIndex;
import com.simibubi.create.infrastructure.ponder.SharedText;
import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.AbstractRegistrate;
import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.language.I18n;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
public class PonderLocalization { public class PonderLocalization {
static final Map<ResourceLocation, String> SHARED = new HashMap<>(); static final Map<ResourceLocation, String> SHARED = new HashMap<>();
static final Map<ResourceLocation, Couple<String>> TAG = new HashMap<>(); static final Map<ResourceLocation, Couple<String>> TAG = new HashMap<>();
static final Map<ResourceLocation, String> CHAPTER = new HashMap<>(); static final Map<ResourceLocation, String> CHAPTER = new HashMap<>();
@ -46,6 +39,30 @@ public class PonderLocalization {
// //
public static final String LANG_PREFIX = "ponder.";
protected static String langKeyForShared(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "shared." + k.getPath();
}
protected static String langKeyForTag(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath();
}
protected static String langKeyForTagDescription(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath() + ".description";
}
protected static String langKeyForChapter(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "chapter." + k.getPath();
}
protected static String langKeyForSpecific(ResourceLocation sceneId, String k) {
return sceneId.getNamespace() + "." + LANG_PREFIX + sceneId.getPath() + "." + k;
}
//
public static String getShared(ResourceLocation key) { public static String getShared(ResourceLocation key) {
if (PonderIndex.editingModeActive()) if (PonderIndex.editingModeActive())
return SHARED.containsKey(key) ? SHARED.get(key) : ("unregistered shared entry: " + key); return SHARED.containsKey(key) ? SHARED.get(key) : ("unregistered shared entry: " + key);
@ -81,25 +98,37 @@ public class PonderLocalization {
// //
public static final String LANG_PREFIX = "ponder."; private static boolean sceneLangGenerated = false;
public static void record(String namespace, JsonObject object) { public static void generateSceneLang() {
if (sceneLangGenerated) {
return;
}
sceneLangGenerated = true;
PonderRegistry.ALL.forEach((id, list) -> {
for (int i = 0; i < list.size(); i++)
PonderRegistry.compileScene(i, list.get(i), null);
});
}
public static void provideLang(String namespace, BiConsumer<String, String> consumer) {
SHARED.forEach((k, v) -> { SHARED.forEach((k, v) -> {
if (k.getNamespace().equals(namespace)) { if (k.getNamespace().equals(namespace)) {
object.addProperty(langKeyForShared(k), v); consumer.accept(langKeyForShared(k), v);
} }
}); });
TAG.forEach((k, v) -> { TAG.forEach((k, v) -> {
if (k.getNamespace().equals(namespace)) { if (k.getNamespace().equals(namespace)) {
object.addProperty(langKeyForTag(k), v.getFirst()); consumer.accept(langKeyForTag(k), v.getFirst());
object.addProperty(langKeyForTagDescription(k), v.getSecond()); consumer.accept(langKeyForTagDescription(k), v.getSecond());
} }
}); });
CHAPTER.forEach((k, v) -> { CHAPTER.forEach((k, v) -> {
if (k.getNamespace().equals(namespace)) { if (k.getNamespace().equals(namespace)) {
object.addProperty(langKeyForChapter(k), v); consumer.accept(langKeyForChapter(k), v);
} }
}); });
@ -112,93 +141,18 @@ public class PonderLocalization {
.entrySet() .entrySet()
.stream() .stream()
.sorted(Map.Entry.comparingByKey()) .sorted(Map.Entry.comparingByKey())
.forEach(subEntry -> object.addProperty( .forEach(subEntry -> consumer.accept(
langKeyForSpecific(entry.getKey(), subEntry.getKey()), subEntry.getValue())); langKeyForSpecific(entry.getKey(), subEntry.getKey()), subEntry.getValue()));
}); });
} }
private static void recordGeneral(JsonObject object) { @Deprecated(forRemoval = true)
addGeneral(object, PonderTooltipHandler.HOLD_TO_PONDER, "Hold [%1$s] to Ponder"); public static void record(String namespace, JsonObject object) {
addGeneral(object, PonderTooltipHandler.SUBJECT, "Subject of this scene"); provideLang(namespace, object::addProperty);
addGeneral(object, PonderUI.PONDERING, "Pondering about...");
addGeneral(object, PonderUI.IDENTIFY_MODE, "Identify mode active.\nUnpause with [%1$s]");
addGeneral(object, PonderTagScreen.ASSOCIATED, "Associated Entries");
addGeneral(object, PonderUI.CLOSE, "Close");
addGeneral(object, PonderUI.IDENTIFY, "Identify");
addGeneral(object, PonderUI.NEXT, "Next Scene");
addGeneral(object, PonderUI.NEXT_UP, "Up Next:");
addGeneral(object, PonderUI.PREVIOUS, "Previous Scene");
addGeneral(object, PonderUI.REPLAY, "Replay");
addGeneral(object, PonderUI.THINK_BACK, "Think Back");
addGeneral(object, PonderUI.SLOW_TEXT, "Comfy Reading");
addGeneral(object, PonderTagIndexScreen.EXIT, "Exit");
addGeneral(object, PonderTagIndexScreen.WELCOME, "Welcome to Ponder");
addGeneral(object, PonderTagIndexScreen.CATEGORIES, "Available Categories in Create");
addGeneral(object, PonderTagIndexScreen.DESCRIPTION,
"Click one of the icons to learn about its associated Items and Blocks");
addGeneral(object, PonderTagIndexScreen.TITLE, "Ponder Index");
}
private static void addGeneral(JsonObject json, String key, String enUS) {
json.addProperty(Create.ID + "." + key, enUS);
}
public static void generateSceneLang() {
PonderRegistry.ALL.forEach((id, list) -> {
for (int i = 0; i < list.size(); i++)
PonderRegistry.compileScene(i, list.get(i), null);
});
}
/**
* Internal use only.
*/
public static JsonObject provideLangEntries() {
SharedText.gatherText();
AllPonderTags.register();
PonderIndex.register();
generateSceneLang();
JsonObject object = new JsonObject();
recordGeneral(object);
record(Create.ID, object);
return object;
} }
public static void provideRegistrateLang(AbstractRegistrate<?> registrate) { public static void provideRegistrateLang(AbstractRegistrate<?> registrate) {
generateSceneLang(); generateSceneLang();
provideLang(registrate.getModid(), registrate::addRawLang);
JsonObject object = new JsonObject();
record(registrate.getModid(), object);
for (Map.Entry<String, JsonElement> entry : object.entrySet()) {
registrate.addRawLang(entry.getKey(), entry.getValue().getAsString());
}
} }
//
protected static String langKeyForShared(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "shared." + k.getPath();
}
protected static String langKeyForTag(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath();
}
protected static String langKeyForTagDescription(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "tag." + k.getPath() + ".description";
}
protected static String langKeyForChapter(ResourceLocation k) {
return k.getNamespace() + "." + LANG_PREFIX + "chapter." + k.getPath();
}
protected static String langKeyForSpecific(ResourceLocation sceneId, String k) {
return sceneId.getNamespace() + "." + LANG_PREFIX + sceneId.getPath() + "." + k;
}
} }

View file

@ -7,6 +7,8 @@ import javax.annotation.Nullable;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
import com.simibubi.create.foundation.blockEntity.IMergeableBE; import com.simibubi.create.foundation.blockEntity.IMergeableBE;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -33,6 +35,7 @@ import net.minecraft.world.level.block.BaseRailBlock;
import net.minecraft.world.level.block.BedBlock; import net.minecraft.world.level.block.BedBlock;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.CampfireBlock;
import net.minecraft.world.level.block.IceBlock; import net.minecraft.world.level.block.IceBlock;
import net.minecraft.world.level.block.SlimeBlock; import net.minecraft.world.level.block.SlimeBlock;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
@ -357,4 +360,14 @@ public class BlockHelper {
return toState; return toState;
} }
public static boolean isNotUnheated(BlockState state) {
if (state.is(BlockTags.CAMPFIRES) && state.hasProperty(CampfireBlock.LIT)) {
return state.getValue(CampfireBlock.LIT);
}
if (state.hasProperty(BlazeBurnerBlock.HEAT_LEVEL)) {
return state.getValue(BlazeBurnerBlock.HEAT_LEVEL) != HeatLevel.NONE;
}
return true;
}
} }

View file

@ -0,0 +1,91 @@
package com.simibubi.create.infrastructure.data;
import java.util.Map.Entry;
import java.util.function.BiConsumer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.simibubi.create.AllSoundEvents;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen;
import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen;
import com.simibubi.create.foundation.data.recipe.SequencedAssemblyRecipeGen;
import com.simibubi.create.foundation.data.recipe.StandardRecipeGen;
import com.simibubi.create.foundation.ponder.PonderLocalization;
import com.simibubi.create.foundation.utility.FilesHelper;
import com.simibubi.create.infrastructure.ponder.AllPonderTags;
import com.simibubi.create.infrastructure.ponder.GeneralText;
import com.simibubi.create.infrastructure.ponder.PonderIndex;
import com.simibubi.create.infrastructure.ponder.SharedText;
import com.tterrag.registrate.providers.ProviderType;
import net.minecraft.data.DataGenerator;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.data.event.GatherDataEvent;
public class CreateDatagen {
public static void gatherData(GatherDataEvent event) {
addExtraRegistrateData();
DataGenerator generator = event.getGenerator();
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();
if (event.includeClient()) {
generator.addProvider(true, AllSoundEvents.provider(generator));
}
if (event.includeServer()) {
generator.addProvider(true, new CreateRecipeSerializerTagsProvider(generator, existingFileHelper));
generator.addProvider(true, new AllAdvancements(generator));
generator.addProvider(true, new StandardRecipeGen(generator));
generator.addProvider(true, new MechanicalCraftingRecipeGen(generator));
generator.addProvider(true, new SequencedAssemblyRecipeGen(generator));
ProcessingRecipeGen.registerAll(generator);
// AllOreFeatureConfigEntries.gatherData(event);
}
}
private static void addExtraRegistrateData() {
CreateRegistrateTags.addGenerators();
Create.REGISTRATE.addDataGenerator(ProviderType.LANG, provider -> {
BiConsumer<String, String> langConsumer = provider::add;
provideDefaultLang("interface", langConsumer);
provideDefaultLang("tooltips", langConsumer);
AllAdvancements.provideLang(langConsumer);
AllSoundEvents.provideLang(langConsumer);
providePonderLang(langConsumer);
});
}
private static void provideDefaultLang(String fileName, BiConsumer<String, String> consumer) {
String path = "assets/create/lang/default/" + fileName + ".json";
JsonElement jsonElement = FilesHelper.loadJsonResource(path);
if (jsonElement == null) {
throw new IllegalStateException(String.format("Could not find default lang file: %s", path));
}
JsonObject jsonObject = jsonElement.getAsJsonObject();
for (Entry<String, JsonElement> entry : jsonObject.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().getAsString();
consumer.accept(key, value);
}
}
private static void providePonderLang(BiConsumer<String, String> consumer) {
// Register these since FMLClientSetupEvent does not run during datagen
AllPonderTags.register();
PonderIndex.register();
SharedText.gatherText();
PonderLocalization.generateSceneLang();
GeneralText.provideLang(consumer);
PonderLocalization.provideLang(Create.ID, consumer);
}
}

View file

@ -0,0 +1,43 @@
package com.simibubi.create.infrastructure.data;
import java.util.concurrent.CompletableFuture;
import org.jetbrains.annotations.Nullable;
import com.simibubi.create.AllTags.AllRecipeSerializerTags;
import com.simibubi.create.Create;
import com.simibubi.create.compat.Mods;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.HolderLookup.Provider;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraftforge.common.data.ExistingFileHelper;
public class CreateRecipeSerializerTagsProvider extends TagsProvider<RecipeSerializer<?>> {
public CreateRecipeSerializerTagsProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider, @Nullable ExistingFileHelper existingFileHelper) {
super(output, Registries.RECIPE_SERIALIZER, lookupProvider, Create.ID, existingFileHelper);
}
@Override
protected void addTags(Provider pProvider) {
tag(AllRecipeSerializerTags.AUTOMATION_IGNORE.tag).addOptional(Mods.OCCULTISM.rl("spirit_trade"))
.addOptional(Mods.OCCULTISM.rl("ritual"));
// VALIDATE
for (AllRecipeSerializerTags tag : AllRecipeSerializerTags.values()) {
if (tag.alwaysDatagen) {
getOrCreateRawBuilder(tag.tag);
}
}
}
@Override
public String getName() {
return "Create's Recipe Serializer Tags";
}
}

View file

@ -0,0 +1,243 @@
package com.simibubi.create.infrastructure.data;
import com.simibubi.create.AllTags.AllBlockTags;
import com.simibubi.create.AllTags.AllEntityTags;
import com.simibubi.create.AllTags.AllFluidTags;
import com.simibubi.create.AllTags.AllItemTags;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.data.TagGen;
import com.simibubi.create.foundation.data.recipe.Mods;
import com.tterrag.registrate.providers.ProviderType;
import com.tterrag.registrate.providers.RegistrateTagsProvider;
import net.minecraft.data.tags.TagsProvider.TagAppender;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.Fluids;
import net.minecraftforge.common.Tags;
public class CreateRegistrateTags {
public static void addGenerators() {
Create.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, CreateRegistrateTags::genBlockTags);
Create.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, CreateRegistrateTags::genItemTags);
Create.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, CreateRegistrateTags::genFluidTags);
Create.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, CreateRegistrateTags::genEntityTags);
}
private static void genBlockTags(RegistrateTagsProvider<Block> prov) {
prov.tag(AllBlockTags.BRITTLE.tag)
.add(Blocks.BELL, Blocks.COCOA, Blocks.FLOWER_POT)
.addTag(BlockTags.BEDS)
.addTag(BlockTags.DOORS);
prov.tag(AllBlockTags.COPYCAT_ALLOW.tag)
.add(Blocks.BARREL);
prov.tag(AllBlockTags.COPYCAT_DENY.tag)
.addTag(BlockTags.CAULDRONS)
.addTag(BlockTags.SAPLINGS)
.addTag(BlockTags.CLIMBABLE);
prov.tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.tag)
.add(Blocks.SOUL_FIRE)
.add(Blocks.SOUL_CAMPFIRE);
prov.tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag)
.add(Blocks.FIRE)
.add(Blocks.CAMPFIRE);
prov.tag(AllBlockTags.FAN_TRANSPARENT.tag)
.add(Blocks.IRON_BARS)
.add(Blocks.MANGROVE_ROOTS)
.addTag(BlockTags.CAMPFIRES)
.addTag(BlockTags.FENCES)
.addTag(BlockTags.LEAVES);
prov.tag(AllBlockTags.MOVABLE_EMPTY_COLLIDER.tag)
.add(Blocks.COBWEB, Blocks.POWDER_SNOW, Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK)
.addTag(BlockTags.FENCE_GATES);
prov.tag(AllBlockTags.ORE_OVERRIDE_STONE.tag)
.addTag(BlockTags.STONE_ORE_REPLACEABLES);
prov.tag(AllBlockTags.PASSIVE_BOILER_HEATERS.tag)
.add(Blocks.MAGMA_BLOCK, Blocks.LAVA)
.addTag(BlockTags.CAMPFIRES)
.addTag(BlockTags.FIRE);
prov.tag(AllBlockTags.SAFE_NBT.tag)
.addTag(BlockTags.BANNERS)
.addTag(BlockTags.SIGNS);
prov.tag(AllBlockTags.TREE_ATTACHMENTS.tag)
.add(Blocks.BEE_NEST, Blocks.COCOA, Blocks.MANGROVE_PROPAGULE, Blocks.MOSS_CARPET, Blocks.SHROOMLIGHT, Blocks.VINE);
prov.tag(AllBlockTags.WINDMILL_SAILS.tag)
.addTag(BlockTags.WOOL);
prov.tag(AllBlockTags.WRENCH_PICKUP.tag)
.add(Blocks.REDSTONE_WIRE, Blocks.REDSTONE_TORCH, Blocks.REPEATER, Blocks.LEVER,
Blocks.COMPARATOR, Blocks.OBSERVER, Blocks.REDSTONE_WALL_TORCH, Blocks.PISTON, Blocks.STICKY_PISTON,
Blocks.TRIPWIRE, Blocks.TRIPWIRE_HOOK, Blocks.DAYLIGHT_DETECTOR, Blocks.TARGET, Blocks.HOPPER)
.addTag(BlockTags.BUTTONS)
.addTag(BlockTags.PRESSURE_PLATES)
.addTag(BlockTags.RAILS);
// COMPAT
TagGen.addOptional(prov.tag(AllBlockTags.NON_MOVABLE.tag), Mods.IE,
"connector_lv", "connector_lv_relay", "connector_mv", "connector_mv_relay",
"connector_hv", "connector_hv_relay", "connector_bundled", "connector_structural",
"connector_redstone", "connector_probe", "breaker_switch");
// VALIDATE
for (AllBlockTags tag : AllBlockTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static void genItemTags(RegistrateTagsProvider<Item> prov) {
prov.tag(AllItemTags.SLEEPERS.tag)
.add(Items.STONE_SLAB, Items.SMOOTH_STONE_SLAB, Items.ANDESITE_SLAB);
prov.tag(AllItemTags.STRIPPED_LOGS.tag)
.addTag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
.addTag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
prov.tag(AllItemTags.STRIPPED_WOOD.tag)
.addTag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
.addTag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
prov.tag(AllItemTags.DEPLOYABLE_DRINK.tag)
.add(Items.MILK_BUCKET, Items.POTION);
prov.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.add(Items.GLASS_BOTTLE, Items.POTION, Items.SPLASH_POTION, Items.LINGERING_POTION,
Items.HONEY_BOTTLE, Items.CAKE);
prov.tag(AllItemTags.CONTRAPTION_CONTROLLED.tag)
.add(Items.BELL, Items.CAMPFIRE, Items.SOUL_CAMPFIRE, Items.DISPENSER, Items.DROPPER);
prov.tag(AllItemTags.VANILLA_STRIPPED_LOGS.tag)
.add(Items.STRIPPED_ACACIA_LOG, Items.STRIPPED_BIRCH_LOG, Items.STRIPPED_CRIMSON_STEM,
Items.STRIPPED_DARK_OAK_LOG, Items.STRIPPED_JUNGLE_LOG, Items.STRIPPED_MANGROVE_LOG,
Items.STRIPPED_OAK_LOG, Items.STRIPPED_SPRUCE_LOG, Items.STRIPPED_WARPED_STEM);
prov.tag(AllItemTags.VANILLA_STRIPPED_WOOD.tag)
.add(Items.STRIPPED_ACACIA_WOOD, Items.STRIPPED_BIRCH_WOOD, Items.STRIPPED_CRIMSON_HYPHAE,
Items.STRIPPED_DARK_OAK_WOOD, Items.STRIPPED_JUNGLE_WOOD, Items.STRIPPED_MANGROVE_WOOD,
Items.STRIPPED_OAK_WOOD, Items.STRIPPED_SPRUCE_WOOD, Items.STRIPPED_WARPED_HYPHAE);
prov.tag(ItemTags.BEACON_PAYMENT_ITEMS)
.addTag(AllItemTags.CREATE_INGOTS.tag);
prov.tag(Tags.Items.INGOTS)
.addTag(AllItemTags.CREATE_INGOTS.tag);
// COMPAT
genStrippedWoodItemTags(prov);
// VALIDATE
for (AllItemTags tag : AllItemTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static void genStrippedWoodItemTags(RegistrateTagsProvider<Item> prov) {
TagAppender<Item> logAppender = prov.tag(AllItemTags.MODDED_STRIPPED_LOGS.tag);
TagAppender<Item> woodAppender = prov.tag(AllItemTags.MODDED_STRIPPED_WOOD.tag);
StrippedWoodHelper helper = new StrippedWoodHelper(logAppender, woodAppender);
helper.add(Mods.ARS_N, "blue_archwood", "purple_archwood", "green_archwood", "red_archwood");
helper.add(Mods.BTN, "livingwood", "dreamwood");
helper.add(Mods.FA, "cherrywood", "mysterywood");
helper.add(Mods.HEX, "akashic");
helper.add(Mods.ID, "menril");
helper.add(Mods.BYG, "aspen", "baobab", "enchanted", "cherry", "cika", "cypress", "ebony", "ether",
"fir", "green_enchanted", "holly", "jacaranda", "lament", "mahogany", "mangrove", "maple", "nightshade",
"palm", "palo_verde", "pine", "rainbow_eucalyptus", "redwood", "skyris", "willow", "witch_hazel",
"zelkova");
helper.add(Mods.SG, "netherwood");
helper.add(Mods.TF, "twilight_oak", "canopy", "mangrove", "dark", "time", "transformation", "mining",
"sorting");
helper.add(Mods.TIC, "greenheart", "skyroot", "bloodshroom");
helper.add(Mods.AP, "twisted");
helper.add(Mods.Q, "azalea", "blossom");
helper.add(Mods.ECO, "coconut", "walnut", "azalea");
helper.add(Mods.BOP, "fir", "redwood", "cherry", "mahogany", "jacaranda", "palm", "willow", "dead",
"magic", "umbran", "hellbark");
helper.add(Mods.BSK, "bluebright", "starlit", "frostbright", "lunar", "dusk", "maple", "cherry");
helper.add(Mods.ENV, "cherry", "willow", "wisteria");
helper.add(Mods.ATM, "aspen", "kousa", "yucca", "morado");
helper.add(Mods.ATM_2, "rosewood", "grimwood");
helper.add(Mods.GOOD, "muddy_oak", "cypress");
helper.add(Mods.BMK, "blighted_balsa", "willow", "swamp_cypress", "ancient_oak");
TagGen.addOptional(logAppender, Mods.IX, "stripped_luminous_stem");
TagGen.addOptional(woodAppender, Mods.IX, "stripped_luminous_hyphae");
TagGen.addOptional(logAppender, Mods.BYG, "stripped_bulbis_stem");
TagGen.addOptional(woodAppender, Mods.BYG, "stripped_bulbis_wood");
}
private static void genFluidTags(RegistrateTagsProvider<Fluid> prov) {
prov.tag(AllFluidTags.BOTTOMLESS_ALLOW.tag)
.add(Fluids.WATER, Fluids.LAVA);
prov.tag(AllFluidTags.FAN_PROCESSING_CATALYSTS_BLASTING.tag)
.add(Fluids.LAVA, Fluids.FLOWING_LAVA);
prov.tag(AllFluidTags.FAN_PROCESSING_CATALYSTS_SPLASHING.tag)
.add(Fluids.WATER, Fluids.FLOWING_WATER);
// VALIDATE
for (AllFluidTags tag : AllFluidTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static void genEntityTags(RegistrateTagsProvider<EntityType<?>> prov) {
// VALIDATE
for (AllEntityTags tag : AllEntityTags.values()) {
if (tag.alwaysDatagen) {
prov.getOrCreateRawBuilder(tag.tag);
}
}
}
private static class StrippedWoodHelper {
protected final TagAppender<Item> logAppender;
protected final TagAppender<Item> woodAppender;
public StrippedWoodHelper(TagAppender<Item> logAppender, TagAppender<Item> woodAppender) {
this.logAppender = logAppender;
this.woodAppender = woodAppender;
}
public void add(Mods mod, String... woodTypes) {
for (String type : woodTypes) {
String strippedPre = mod.strippedIsSuffix ? "" : "stripped_";
String strippedPost = mod.strippedIsSuffix ? "_stripped" : "";
TagGen.addOptional(logAppender, mod, strippedPre + type + "_log" + strippedPost);
TagGen.addOptional(woodAppender, mod, strippedPre + type + (mod.omitWoodSuffix ? "" : "_wood") + strippedPost);
}
}
}
}

View file

@ -0,0 +1,39 @@
package com.simibubi.create.infrastructure.ponder;
import java.util.function.BiConsumer;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.ponder.PonderTooltipHandler;
import com.simibubi.create.foundation.ponder.ui.PonderTagIndexScreen;
import com.simibubi.create.foundation.ponder.ui.PonderTagScreen;
import com.simibubi.create.foundation.ponder.ui.PonderUI;
public class GeneralText {
public static void provideLang(BiConsumer<String, String> consumer) {
consume(consumer, PonderTooltipHandler.HOLD_TO_PONDER, "Hold [%1$s] to Ponder");
consume(consumer, PonderTooltipHandler.SUBJECT, "Subject of this scene");
consume(consumer, PonderUI.PONDERING, "Pondering about...");
consume(consumer, PonderUI.IDENTIFY_MODE, "Identify mode active.\nUnpause with [%1$s]");
consume(consumer, PonderTagScreen.ASSOCIATED, "Associated Entries");
consume(consumer, PonderUI.CLOSE, "Close");
consume(consumer, PonderUI.IDENTIFY, "Identify");
consume(consumer, PonderUI.NEXT, "Next Scene");
consume(consumer, PonderUI.NEXT_UP, "Up Next:");
consume(consumer, PonderUI.PREVIOUS, "Previous Scene");
consume(consumer, PonderUI.REPLAY, "Replay");
consume(consumer, PonderUI.THINK_BACK, "Think Back");
consume(consumer, PonderUI.SLOW_TEXT, "Comfy Reading");
consume(consumer, PonderTagIndexScreen.EXIT, "Exit");
consume(consumer, PonderTagIndexScreen.WELCOME, "Welcome to Ponder");
consume(consumer, PonderTagIndexScreen.CATEGORIES, "Available Categories in Create");
consume(consumer, PonderTagIndexScreen.DESCRIPTION,
"Click one of the icons to learn about its associated Items and Blocks");
consume(consumer, PonderTagIndexScreen.TITLE, "Ponder Index");
}
private static void consume(BiConsumer<String, String> consumer, String key, String enUS) {
consumer.accept(Create.ID + "." + key, enUS);
}
}

View file

@ -3,10 +3,7 @@ package com.simibubi.create.infrastructure.ponder;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.foundation.ponder.PonderLocalization; import com.simibubi.create.foundation.ponder.PonderLocalization;
import net.minecraft.resources.ResourceLocation;
public class SharedText { public class SharedText {
public static void gatherText() { public static void gatherText() {
// Add entries used across several ponder scenes (Safe for hotswap) // Add entries used across several ponder scenes (Safe for hotswap)
@ -23,16 +20,7 @@ public class SharedText {
add("storage_on_contraption", "Inventories attached to the Contraption will pick up their drops automatically"); add("storage_on_contraption", "Inventories attached to the Contraption will pick up their drops automatically");
} }
public static String get(ResourceLocation key) {
return PonderLocalization.getShared(key);
}
public static void add(ResourceLocation k, String v) {
PonderLocalization.registerShared(k, v);
}
private static void add(String k, String v) { private static void add(String k, String v) {
add(Create.asResource(k), v); PonderLocalization.registerShared(Create.asResource(k), v);
} }
} }

View file

@ -0,0 +1 @@
{}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,36 +1,20 @@
{ {
"item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)",
"item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.",
"item.create.example_item.tooltip.condition1": "When this",
"item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)",
"item.create.example_item.tooltip.condition2": "And When this",
"item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like",
"item.create.example_item.tooltip.control1": "When Ctrl pressed",
"item.create.example_item.tooltip.action1": "These controls are displayed.",
"block.create.wooden_bracket.tooltip": "WOODEN BRACKET",
"block.create.wooden_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", "block.create.wooden_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.",
"block.create.metal_bracket.tooltip": "METAL BRACKET",
"block.create.metal_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", "block.create.metal_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.",
"block.create.seat.tooltip": "SEAT",
"block.create.seat.tooltip.summary": "Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.", "block.create.seat.tooltip.summary": "Sit yourself down and enjoy the ride! Will anchor a player onto a moving _contraption_. Great for static furniture too! Comes in a variety of colours.",
"block.create.seat.tooltip.condition1": "Right click on Seat", "block.create.seat.tooltip.condition1": "Right click on Seat",
"block.create.seat.tooltip.behaviour1": "Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", "block.create.seat.tooltip.behaviour1": "Sits the player on the _Seat_. Press L-shift to leave the _Seat_.",
"item.create.blaze_cake.tooltip": "BLAZE CAKE",
"item.create.blaze_cake.tooltip.summary": "A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", "item.create.blaze_cake.tooltip.summary": "A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!",
"item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND",
"item.create.wand_of_symmetry.tooltip.summary": "_Mirrors Block placement_ while present in any _Hotbar Slot_.", "item.create.wand_of_symmetry.tooltip.summary": "_Mirrors Block placement_ while present in any _Hotbar Slot_.",
"item.create.wand_of_symmetry.tooltip.condition1": "When used on a Surface", "item.create.wand_of_symmetry.tooltip.condition1": "When used on a Surface",
"item.create.wand_of_symmetry.tooltip.behaviour1": "_Creates_ or _Moves_ its Mirror. _Sneak_ while using to open the _Configuration Interface_", "item.create.wand_of_symmetry.tooltip.behaviour1": "_Creates_ or _Moves_ its Mirror. _Sneak_ while using to open the _Configuration Interface_",
"item.create.wand_of_symmetry.tooltip.condition2": "When used with no target", "item.create.wand_of_symmetry.tooltip.condition2": "When used with no target",
"item.create.wand_of_symmetry.tooltip.behaviour2": "_Removes_ the active Mirror", "item.create.wand_of_symmetry.tooltip.behaviour2": "_Removes_ the active Mirror",
"item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER",
"item.create.handheld_worldshaper.tooltip.summary": "_Creative mode_ tool for large-scale _landscaping_ from a distance.", "item.create.handheld_worldshaper.tooltip.summary": "_Creative mode_ tool for large-scale _landscaping_ from a distance.",
"item.create.handheld_worldshaper.tooltip.condition1": "L-Click at Block", "item.create.handheld_worldshaper.tooltip.condition1": "L-Click at Block",
"item.create.handheld_worldshaper.tooltip.behaviour1": "_Targeted block_ will become the _material_ placed by the shaper.", "item.create.handheld_worldshaper.tooltip.behaviour1": "_Targeted block_ will become the _material_ placed by the shaper.",
@ -39,86 +23,70 @@
"item.create.handheld_worldshaper.tooltip.condition3": "R-Click while Sneaking", "item.create.handheld_worldshaper.tooltip.condition3": "R-Click while Sneaking",
"item.create.handheld_worldshaper.tooltip.behaviour3": "Opens the _Configuration Interface_", "item.create.handheld_worldshaper.tooltip.behaviour3": "Opens the _Configuration Interface_",
"item.create.tree_fertilizer.tooltip": "TREE FERTILIZER",
"item.create.tree_fertilizer.tooltip.summary": "A powerful combination of minerals useful for _growing saplings_ in tight spaces.", "item.create.tree_fertilizer.tooltip.summary": "A powerful combination of minerals useful for _growing saplings_ in tight spaces.",
"item.create.tree_fertilizer.tooltip.condition1": "When used on a Sapling", "item.create.tree_fertilizer.tooltip.condition1": "When used on a Sapling",
"item.create.tree_fertilizer.tooltip.behaviour1": "Creates a tree _regardless_ of its _spacing conditions_", "item.create.tree_fertilizer.tooltip.behaviour1": "Creates a tree _regardless_ of its _spacing conditions_",
"item.create.extendo_grip.tooltip": "EXTENDO GRIP",
"item.create.extendo_grip.tooltip.summary": "Greatly _increases reach distance_ of the wielder. Can be powered with _Air_ _Pressure_ from a _Backtank_", "item.create.extendo_grip.tooltip.summary": "Greatly _increases reach distance_ of the wielder. Can be powered with _Air_ _Pressure_ from a _Backtank_",
"item.create.extendo_grip.tooltip.condition1": "When in Off-Hand", "item.create.extendo_grip.tooltip.condition1": "When in Off-Hand",
"item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.", "item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.",
"item.create.extendo_grip.tooltip.condition2": "While wearing Backtank", "item.create.extendo_grip.tooltip.condition2": "While wearing Backtank",
"item.create.extendo_grip.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.extendo_grip.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
"item.create.potato_cannon.tooltip": "POTATO CANNON",
"item.create.potato_cannon.tooltip.summary": "Launches your home-grown vegetables at Enemies. Can be powered with _Air_ _Pressure_ from a _Backtank_", "item.create.potato_cannon.tooltip.summary": "Launches your home-grown vegetables at Enemies. Can be powered with _Air_ _Pressure_ from a _Backtank_",
"item.create.potato_cannon.tooltip.condition1": "When R-Clicked", "item.create.potato_cannon.tooltip.condition1": "When R-Clicked",
"item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.", "item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.",
"item.create.potato_cannon.tooltip.condition2": "While wearing Backtank", "item.create.potato_cannon.tooltip.condition2": "While wearing Backtank",
"item.create.potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank", "item.create.potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
"item.create.filter.tooltip": "LIST FILTER",
"item.create.filter.tooltip.summary": "_Matches items_ against a collection of _items_ or _other filters_. Can be used in _Filter Slots_ of Create's Components", "item.create.filter.tooltip.summary": "_Matches items_ against a collection of _items_ or _other filters_. Can be used in _Filter Slots_ of Create's Components",
"item.create.filter.tooltip.condition1": "When R-Clicked", "item.create.filter.tooltip.condition1": "When R-Clicked",
"item.create.filter.tooltip.behaviour1": "Opens the _configuration interface_.", "item.create.filter.tooltip.behaviour1": "Opens the _configuration interface_.",
"item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER",
"item.create.attribute_filter.tooltip.summary": "_Matches items_ against a set of _attributes_ or _categories_. Can be used in _Filter Slots_ of Create's Components", "item.create.attribute_filter.tooltip.summary": "_Matches items_ against a set of _attributes_ or _categories_. Can be used in _Filter Slots_ of Create's Components",
"item.create.attribute_filter.tooltip.condition1": "When R-Clicked", "item.create.attribute_filter.tooltip.condition1": "When R-Clicked",
"item.create.attribute_filter.tooltip.behaviour1": "Opens the _configuration interface_.", "item.create.attribute_filter.tooltip.behaviour1": "Opens the _configuration interface_.",
"item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC",
"item.create.empty_schematic.tooltip.summary": "Used as a recipe ingredient and for writing at the _Schematic Table_.", "item.create.empty_schematic.tooltip.summary": "Used as a recipe ingredient and for writing at the _Schematic Table_.",
"item.create.schematic.tooltip": "SCHEMATIC",
"item.create.schematic.tooltip.summary": "Holds a structure to be positioned and placed into the world. Position the Hologram as desired and use a _Schematicannon_ to build it.", "item.create.schematic.tooltip.summary": "Holds a structure to be positioned and placed into the world. Position the Hologram as desired and use a _Schematicannon_ to build it.",
"item.create.schematic.tooltip.condition1": "When Held", "item.create.schematic.tooltip.condition1": "When Held",
"item.create.schematic.tooltip.behaviour1": "Can be positioned using the Tools on Screen.", "item.create.schematic.tooltip.behaviour1": "Can be positioned using the Tools on Screen.",
"item.create.schematic.tooltip.condition2": "R-Click while Sneaking", "item.create.schematic.tooltip.condition2": "R-Click while Sneaking",
"item.create.schematic.tooltip.behaviour2": "Opens an _Interface_ for entering exact _Coordinates_.", "item.create.schematic.tooltip.behaviour2": "Opens an _Interface_ for entering exact _Coordinates_.",
"item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL",
"item.create.schematic_and_quill.tooltip.summary": "Used for _saving a Structure_ in your world to a _.nbt file_.", "item.create.schematic_and_quill.tooltip.summary": "Used for _saving a Structure_ in your world to a _.nbt file_.",
"item.create.schematic_and_quill.tooltip.condition1": "Creating a selection", "item.create.schematic_and_quill.tooltip.condition1": "Creating a selection",
"item.create.schematic_and_quill.tooltip.behaviour1": "Select two _corner points_ using _R-Click_. Hold _Ctrl_ and Scroll to select locations mid-air.", "item.create.schematic_and_quill.tooltip.behaviour1": "Select two _corner points_ using _R-Click_. Hold _Ctrl_ and Scroll to select locations mid-air.",
"item.create.schematic_and_quill.tooltip.condition2": "Adjusting and Saving", "item.create.schematic_and_quill.tooltip.condition2": "Adjusting and Saving",
"item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ on the faces to adjust the size, then R-Click again to Save.", "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ on the faces to adjust the size, then R-Click again to Save.",
"block.create.schematicannon.tooltip": "SCHEMATICANNON",
"block.create.schematicannon.tooltip.summary": "Shoots blocks to recreate a deployed _Schematic_ in the World. Uses items from adjacent Inventories and _Gunpowder_ as fuel.", "block.create.schematicannon.tooltip.summary": "Shoots blocks to recreate a deployed _Schematic_ in the World. Uses items from adjacent Inventories and _Gunpowder_ as fuel.",
"block.create.schematicannon.tooltip.condition1": "When R-Clicked", "block.create.schematicannon.tooltip.condition1": "When R-Clicked",
"block.create.schematicannon.tooltip.behaviour1": "Opens the _Interface_", "block.create.schematicannon.tooltip.behaviour1": "Opens the _Interface_",
"block.create.schematic_table.tooltip": "SCHEMATIC TABLE",
"block.create.schematic_table.tooltip.summary": "Writes saved Schematics onto an _Empty Schematic_.", "block.create.schematic_table.tooltip.summary": "Writes saved Schematics onto an _Empty Schematic_.",
"block.create.schematic_table.tooltip.condition1": "When given an Empty Schematic", "block.create.schematic_table.tooltip.condition1": "When given an Empty Schematic",
"block.create.schematic_table.tooltip.behaviour1": "Uploads a chosen File from your Schematics Folder.", "block.create.schematic_table.tooltip.behaviour1": "Uploads a chosen File from your Schematics Folder.",
"item.create.goggles.tooltip": "GOGGLES",
"item.create.goggles.tooltip.summary": "Augments your HUD with _miscellaneous information_ about placed components.", "item.create.goggles.tooltip.summary": "Augments your HUD with _miscellaneous information_ about placed components.",
"item.create.goggles.tooltip.condition1": "When looking at blocks", "item.create.goggles.tooltip.condition1": "When looking at blocks",
"item.create.goggles.tooltip.behaviour1": "_Kinetic components_ show added _Stress Impact_ or _Capacity_. _Stressometers_ show statistics of their _attached kinetic network_. Some other blocks reveal information such as item and fluid content.", "item.create.goggles.tooltip.behaviour1": "_Kinetic components_ show added _Stress Impact_ or _Capacity_. _Stressometers_ show statistics of their _attached kinetic network_. Some other blocks reveal information such as item and fluid content.",
"item.create.wrench.tooltip": "WRENCH",
"item.create.wrench.tooltip.summary": "Multi-purpose tool for working with your kinetic contraptions.", "item.create.wrench.tooltip.summary": "Multi-purpose tool for working with your kinetic contraptions.",
"item.create.wrench.tooltip.condition1": "When used on Blocks", "item.create.wrench.tooltip.condition1": "When used on Blocks",
"item.create.wrench.tooltip.behaviour1": "_Rotates components_ around the clicked face. _Sneak_ while interacting to _dismantle_ components.", "item.create.wrench.tooltip.behaviour1": "_Rotates components_ around the clicked face. _Sneak_ while interacting to _dismantle_ components.",
"item.create.wrench.tooltip.condition2": "When used on Contraptions", "item.create.wrench.tooltip.condition2": "When used on Contraptions",
"item.create.wrench.tooltip.behaviour2": "_Relocates_ assembled minecart- and train-based contraptions.", "item.create.wrench.tooltip.behaviour2": "_Relocates_ assembled minecart- and train-based contraptions.",
"block.create.nozzle.tooltip": "NOZZLE",
"block.create.nozzle.tooltip.summary": "Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", "block.create.nozzle.tooltip.summary": "Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.",
"block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK",
"block.create.cuckoo_clock.tooltip.summary": "Fine craftsmanship for _decorating_ a space and _keeping track of time_.", "block.create.cuckoo_clock.tooltip.summary": "Fine craftsmanship for _decorating_ a space and _keeping track of time_.",
"block.create.cuckoo_clock.tooltip.condition1": "When Powered by Kinetics", "block.create.cuckoo_clock.tooltip.condition1": "When Powered by Kinetics",
"block.create.cuckoo_clock.tooltip.behaviour1": "Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", "block.create.cuckoo_clock.tooltip.behaviour1": "Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.",
"block.create.turntable.tooltip": "TURNTABLE",
"block.create.turntable.tooltip.summary": "Uses _Rotational Force_ to create Motion Sickness.", "block.create.turntable.tooltip.summary": "Uses _Rotational Force_ to create Motion Sickness.",
"block.create.toolbox.tooltip": "TOOLBOX",
"block.create.toolbox.tooltip.summary": "Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.", "block.create.toolbox.tooltip.summary": "Every Inventors' dearest Companion. Conveniently _holds_ a large amount of _8 Different_ item types.",
"block.create.toolbox.tooltip.condition1": "When Picked Up", "block.create.toolbox.tooltip.condition1": "When Picked Up",
"block.create.toolbox.tooltip.behaviour1": "_Retains_ Inventory _Contents_.", "block.create.toolbox.tooltip.behaviour1": "_Retains_ Inventory _Contents_.",
@ -127,30 +95,24 @@
"block.create.toolbox.tooltip.condition3": "When R-Clicked", "block.create.toolbox.tooltip.condition3": "When R-Clicked",
"block.create.toolbox.tooltip.behaviour3": "Opens the _Container Interface_.", "block.create.toolbox.tooltip.behaviour3": "Opens the _Container Interface_.",
"block.create.creative_crate.tooltip": "CREATIVE CRATE",
"block.create.creative_crate.tooltip.summary": "This _Storage Container_ allows infinite replication of items.", "block.create.creative_crate.tooltip.summary": "This _Storage Container_ allows infinite replication of items.",
"block.create.creative_crate.tooltip.condition1": "When Item in Filter Slot", "block.create.creative_crate.tooltip.condition1": "When Item in Filter Slot",
"block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
"block.create.creative_crate.tooltip.condition2": "When next to Schematicannon", "block.create.creative_crate.tooltip.condition2": "When next to Schematicannon",
"block.create.creative_crate.tooltip.behaviour2": "Provides any material required by the Schematic.", "block.create.creative_crate.tooltip.behaviour2": "Provides any material required by the Schematic.",
"item.create.creative_blaze_cake.tooltip": "CREATIVE BLAZE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.", "item.create.creative_blaze_cake.tooltip.summary": "A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "When Used", "item.create.creative_blaze_cake.tooltip.condition1": "When Used",
"item.create.creative_blaze_cake.tooltip.behaviour1": "_Cycles_ a Blaze Burner's heat level.", "item.create.creative_blaze_cake.tooltip.behaviour1": "_Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "A _uni-directional_ powered rail with _variable speed_, controlled by the _signal strength_ supplied to it.", "block.create.controller_rail.tooltip.summary": "A _uni-directional_ powered rail with _variable speed_, controlled by the _signal strength_ supplied to it.",
"item.create.sand_paper.tooltip": "SAND PAPER",
"item.create.sand_paper.tooltip.summary": "Can be used to _refine materials_. The process can be automated with a Deployer.", "item.create.sand_paper.tooltip.summary": "Can be used to _refine materials_. The process can be automated with a Deployer.",
"item.create.sand_paper.tooltip.condition1": "When Used", "item.create.sand_paper.tooltip.condition1": "When Used",
"item.create.sand_paper.tooltip.behaviour1": "Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", "item.create.sand_paper.tooltip.behaviour1": "Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_",
"item.create.builders_tea.tooltip": "BUILDERS TEA",
"item.create.builders_tea.tooltip.summary": "The perfect drink to get the day started- _Motivating_ and _Saturating._", "item.create.builders_tea.tooltip.summary": "The perfect drink to get the day started- _Motivating_ and _Saturating._",
"item.create.linked_controller.tooltip": "LINKED CONTROLLER",
"item.create.linked_controller.tooltip.summary": "Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.", "item.create.linked_controller.tooltip.summary": "Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.",
"item.create.linked_controller.tooltip.condition1": "R-Click", "item.create.linked_controller.tooltip.condition1": "R-Click",
"item.create.linked_controller.tooltip.behaviour1": "_Toggles_ the controller. _Movement_ _controls_ are taken over while its active.", "item.create.linked_controller.tooltip.behaviour1": "_Toggles_ the controller. _Movement_ _controls_ are taken over while its active.",
@ -161,86 +123,70 @@
"item.create.linked_controller.tooltip.condition4": "R-Click on Lectern", "item.create.linked_controller.tooltip.condition4": "R-Click on Lectern",
"item.create.linked_controller.tooltip.behaviour4": "Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)", "item.create.linked_controller.tooltip.behaviour4": "Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
"item.create.copper_diving_helmet.tooltip": "COPPER DIVING HELMET",
"item.create.copper_diving_helmet.tooltip.summary": "Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.", "item.create.copper_diving_helmet.tooltip.summary": "Together with a _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
"item.create.copper_diving_helmet.tooltip.condition1": "When Worn", "item.create.copper_diving_helmet.tooltip.condition1": "When Worn",
"item.create.copper_diving_helmet.tooltip.behaviour1": "Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.", "item.create.copper_diving_helmet.tooltip.behaviour1": "Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.",
"item.create.netherite_diving_helmet.tooltip": "NETHERITE DIVING HELMET",
"item.create.netherite_diving_helmet.tooltip.summary": "Together with a _Netherite Backtank_, this can protect you from _extreme heat_. To be effective, _Legs and Feet_ have to be covered in _Netherite_, too.", "item.create.netherite_diving_helmet.tooltip.summary": "Together with a _Netherite Backtank_, this can protect you from _extreme heat_. To be effective, _Legs and Feet_ have to be covered in _Netherite_, too.",
"item.create.netherite_diving_helmet.tooltip.condition1": "When Worn (Full set)", "item.create.netherite_diving_helmet.tooltip.condition1": "When Worn (Full set)",
"item.create.netherite_diving_helmet.tooltip.behaviour1": "Provides immunity to _Fire_ and _Lava_, slowly draining _Air Pressure_ from the Backtank. Also grants _improved vision_ in Lava", "item.create.netherite_diving_helmet.tooltip.behaviour1": "Provides immunity to _Fire_ and _Lava_, slowly draining _Air Pressure_ from the Backtank. Also grants _improved vision_ in Lava",
"item.create.copper_backtank.tooltip": "COPPER BACKTANK",
"item.create.copper_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.", "item.create.copper_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.",
"item.create.copper_backtank.tooltip.condition1": "When Worn", "item.create.copper_backtank.tooltip.condition1": "When Worn",
"item.create.copper_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.", "item.create.copper_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.",
"item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics",
"item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", "item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"item.create.netherite_backtank.tooltip": "NETHERITE BACKTANK",
"item.create.netherite_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.", "item.create.netherite_backtank.tooltip.summary": "A _Wearable_ _Tank_ for carrying Pressurized Air.",
"item.create.netherite_backtank.tooltip.condition1": "When Worn", "item.create.netherite_backtank.tooltip.condition1": "When Worn",
"item.create.netherite_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.", "item.create.netherite_backtank.tooltip.behaviour1": "Provides _Pressurized_ _Air_ to Equipment that requires it.",
"item.create.netherite_backtank.tooltip.condition2": "When placed, Powered by Kinetics", "item.create.netherite_backtank.tooltip.condition2": "When placed, Powered by Kinetics",
"item.create.netherite_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", "item.create.netherite_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.placard.tooltip": "PLACARD",
"block.create.placard.tooltip.summary": "_Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!", "block.create.placard.tooltip.summary": "_Frame_ your _items_ in brass using this fancy wall panel. Safe for contraptions!",
"block.create.placard.tooltip.condition1": "When R-Clicked with Item", "block.create.placard.tooltip.condition1": "When R-Clicked with Item",
"block.create.placard.tooltip.behaviour1": "_Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.", "block.create.placard.tooltip.behaviour1": "_Adds_ the held _item_ to the Placard. _Emits_ a brief _Redstone_ signal if a matching item was present already.",
"block.create.placard.tooltip.condition2": "When Punched", "block.create.placard.tooltip.condition2": "When Punched",
"block.create.placard.tooltip.behaviour2": "_Removes_ the current _item_ in the frame.", "block.create.placard.tooltip.behaviour2": "_Removes_ the current _item_ in the frame.",
"block.create.flywheel.tooltip": "FLYWHEEL",
"block.create.flywheel.tooltip.summary": "_Embellish_ your _Machines_ with this imposing Wheel of Brass.", "block.create.flywheel.tooltip.summary": "_Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "When Powered by Kinetics", "block.create.flywheel.tooltip.condition1": "When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "Starts spinning.", "block.create.flywheel.tooltip.behaviour1": "Starts spinning.",
"item.create.copper_diving_boots.tooltip": "COPPER DIVING BOOTS",
"item.create.copper_diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.", "item.create.copper_diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.",
"item.create.copper_diving_boots.tooltip.condition1": "When Worn", "item.create.copper_diving_boots.tooltip.condition1": "When Worn",
"item.create.copper_diving_boots.tooltip.behaviour1": "Wielder _descends_ more _quickly_ in liquids. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.", "item.create.copper_diving_boots.tooltip.behaviour1": "Wielder _descends_ more _quickly_ in liquids. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.",
"item.create.netherite_diving_boots.tooltip": "NETHERITE DIVING BOOTS",
"item.create.netherite_diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor, including Oceans made of Lava.", "item.create.netherite_diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor, including Oceans made of Lava.",
"item.create.netherite_diving_boots.tooltip.condition1": "When Worn", "item.create.netherite_diving_boots.tooltip.condition1": "When Worn",
"item.create.netherite_diving_boots.tooltip.behaviour1": "Wielder _descends_ more _quickly_ in liquids. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.", "item.create.netherite_diving_boots.tooltip.behaviour1": "Wielder _descends_ more _quickly_ in liquids. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.",
"item.create.crafting_blueprint.tooltip": "CRAFTING BLUEPRINT",
"item.create.crafting_blueprint.tooltip.summary": "_Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.", "item.create.crafting_blueprint.tooltip.summary": "_Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.",
"item.create.crafting_blueprint.condition1": "R-Click empty Slot", "item.create.crafting_blueprint.condition1": "R-Click empty Slot",
"item.create.crafting_blueprint.behaviour1": "Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.", "item.create.crafting_blueprint.behaviour1": "Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.",
"item.create.crafting_blueprint.condition2": "R-Click configured Slot", "item.create.crafting_blueprint.condition2": "R-Click configured Slot",
"item.create.crafting_blueprint.behaviour2": "_Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.", "item.create.crafting_blueprint.behaviour2": "_Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.",
"item.create.minecart_coupling.tooltip": "MINECART COUPLING",
"item.create.minecart_coupling.tooltip.summary": "_Chains_ together individual _Minecarts_, causing them to move as a group.", "item.create.minecart_coupling.tooltip.summary": "_Chains_ together individual _Minecarts_, causing them to move as a group.",
"item.create.experience_nugget.tooltip": "NUGGET OF EXPERIENCE",
"item.create.experience_nugget.tooltip.summary": "A speck of _inspiration_ from your fantastic inventions.", "item.create.experience_nugget.tooltip.summary": "A speck of _inspiration_ from your fantastic inventions.",
"item.create.experience_nugget.tooltip.condition1": "When Used", "item.create.experience_nugget.tooltip.condition1": "When Used",
"item.create.experience_nugget.tooltip.behaviour1": "_Redeems_ _Experience_ points contained within.", "item.create.experience_nugget.tooltip.behaviour1": "_Redeems_ _Experience_ points contained within.",
"block.create.peculiar_bell.tooltip": "PECULIAR BELL",
"block.create.peculiar_bell.tooltip.summary": "A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may have side-effects...", "block.create.peculiar_bell.tooltip.summary": "A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may have side-effects...",
"block.create.haunted_bell.tooltip": "HAUNTED BELL",
"block.create.haunted_bell.tooltip.summary": "A _Cursed Bell_ haunted by lost souls of the Nether.", "block.create.haunted_bell.tooltip.summary": "A _Cursed Bell_ haunted by lost souls of the Nether.",
"block.create.haunted_bell.tooltip.condition1": "When Held or Rang", "block.create.haunted_bell.tooltip.condition1": "When Held or Rang",
"block.create.haunted_bell.tooltip.behaviour1": "Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.", "block.create.haunted_bell.tooltip.behaviour1": "Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.",
"block.create.copycat_panel.tooltip": "COPYCAT PANEL",
"block.create.copycat_panel.tooltip.summary": "_Converts_ any _full block_ into a decorative panel. Also accepts _Bars_ and _Trapdoors_.", "block.create.copycat_panel.tooltip.summary": "_Converts_ any _full block_ into a decorative panel. Also accepts _Bars_ and _Trapdoors_.",
"block.create.copycat_panel.tooltip.condition1": "When R-Clicked", "block.create.copycat_panel.tooltip.condition1": "When R-Clicked",
"block.create.copycat_panel.tooltip.behaviour1": "Applies _held item_ as its _material_ if possible. _Click again_ to cycle _orientation_ or _powered_ state. Use a _Wrench_ to _reset_ the material.", "block.create.copycat_panel.tooltip.behaviour1": "Applies _held item_ as its _material_ if possible. _Click again_ to cycle _orientation_ or _powered_ state. Use a _Wrench_ to _reset_ the material.",
"block.create.copycat_step.tooltip": "COPYCAT STEP",
"block.create.copycat_step.tooltip.summary": "_Converts_ any _full block_ into a decorative step.", "block.create.copycat_step.tooltip.summary": "_Converts_ any _full block_ into a decorative step.",
"block.create.copycat_step.tooltip.condition1": "When R-Clicked", "block.create.copycat_step.tooltip.condition1": "When R-Clicked",
"block.create.copycat_step.tooltip.behaviour1": "Applies _held item_ as its _material_ if possible. _Click again_ to cycle _orientation_ or _powered_ state. Use a _Wrench_ to _reset_ the material.", "block.create.copycat_step.tooltip.behaviour1": "Applies _held item_ as its _material_ if possible. _Click again_ to cycle _orientation_ or _powered_ state. Use a _Wrench_ to _reset_ the material.",
"block.create.clipboard.tooltip": "CLIPBOARD",
"block.create.clipboard.tooltip.summary": "_Keeps your notes_ and makes you look more professional.", "block.create.clipboard.tooltip.summary": "_Keeps your notes_ and makes you look more professional.",
"block.create.clipboard.tooltip.condition1": "When R-Clicked", "block.create.clipboard.tooltip.condition1": "When R-Clicked",
"block.create.clipboard.tooltip.behaviour1": "Opens the _Interface_. _Sneak-Click_ to _place_ it on a surface.", "block.create.clipboard.tooltip.behaviour1": "Opens the _Interface_. _Sneak-Click_ to _place_ it on a surface.",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,27 @@
{
"block.create.acacia_window": "Akaatsiast aken",
"block.create.acacia_window_pane": "Akkatsiast aknapaneel",
"block.create.analog_lever": "Analoog kang",
"block.create.andesite_alloy_block": "Andesiidi sulami plokk",
"block.create.andesite_bars": "Andesiittrellid",
"block.create.andesite_belt_funnel": "Andesiit konveierlehter",
"block.create.andesite_casing": "Andesiit raam",
"block.create.andesite_door": "Andesiit uks",
"block.create.andesite_encased_cogwheel": "Andesiidiga kaetud hammasratas",
"block.create.andesite_encased_large_cogwheel": "Andesiidiga kaetud suur hammasratas",
"block.create.andesite_encased_shaft": "Andesiidiga kaetud võll",
"block.create.andesite_funnel": "Andesiit lehter",
"block.create.andesite_ladder": "Andesiidist redel",
"block.create.andesite_pillar": "Andesiidist sammas",
"block.create.andesite_scaffolding": "Andesiidist telling",
"block.create.andesite_tunnel": "Andesiit tunnel",
"block.create.asurine": "Asuriin",
"block.create.brass_encased_cogwheel": "Messingiga kaetud hammasratas",
"block.create.brass_encased_large_cogwheel": "Messingiga kaetud suur hammasratas",
"block.create.cogwheel": "Hammasratas",
"block.create.large_cogwheel": "Suur Hammasratas",
"create.ponder.cog_speedup.header": "Käiguvahetamine hammasratastega",
"create.ponder.cog_speedup.text_1": "Suuri ja väikseid hammasrattaid saab ühendada diagonaalselt",
"create.ponder.cog_speedup.text_2": "Suurelt hammasrattal väiksele ülemineminnes kahekordistub kiirust",
"create.subtitle.cogs": "Hammasrattad mürisevad"
}

View file

@ -1,36 +1,35 @@
{ {
"_": "با تشکر از این که create را ترجمه می کنید!", "block.create.acacia_window": "بلوک پنجره اقاقیا",
"block.create.acacia_window": "بلوک پنجره اقاقیا", "block.create.acacia_window_pane": "پنجره چوب اقاقیا",
"block.create.acacia_window_pane": "پنجره چوب اقاقیا", "block.create.andesite_casing": "پوشاننده اندسیت",
"block.create.andesite_casing": "پوشاننده اندسیت", "block.create.andesite_ladder": "نردبان اندسیت",
"block.create.andesite_ladder": "نردبان اندسیت", "block.create.andesite_tunnel": "تونل اندسیت",
"block.create.andesite_tunnel": "تونل اندسیت", "block.create.birch_window": "بلوک پنجره توس",
"block.create.birch_window": "بلوک پنجره توس", "block.create.birch_window_pane": "پنجره چوب توس",
"block.create.birch_window_pane": "پنجره چوب توس", "block.create.black_seat": "صندلی مشکی",
"block.create.black_seat": "صندلی مشکی", "block.create.black_toolbox": "جعبه ابزار مشکی",
"block.create.black_toolbox": "جعبه ابزار مشکی", "block.create.blue_seat": "صندلی آبی",
"block.create.blue_seat": "صندلی آبی", "block.create.blue_toolbox": "جعبه ابزار آبی",
"block.create.blue_toolbox": "جعبه ابزار آبی", "block.create.brass_block": "بلوک فلز برنج",
"block.create.brass_block": "بلوک فلز برنج", "block.create.brass_casing": "پوشاننده برنجی",
"block.create.brass_casing": "پوشاننده برنجی", "block.create.brass_ladder": "نردبان برنجی",
"block.create.brass_ladder": "نردبان برنجی", "block.create.brass_tunnel": "تونل برنجی",
"block.create.brass_tunnel": "تونل برنجی", "block.create.brown_seat": "صندلی قهوه ای",
"block.create.brown_seat": "صندلی قهوه ای", "block.create.chocolate": "شکلات",
"block.create.chocolate": "شکلات", "block.create.crimson_window": "بلوک پنجره کریمزون",
"block.create.crimson_window": "بلوک پنجره کریمزون", "block.create.crimson_window_pane": "پنجره چوب کریمزون",
"block.create.crimson_window_pane": "پنجره چوب کریمزون", "block.create.dark_oak_window": "بلوک پنجره چوب بلوط سیاه",
"block.create.dark_oak_window": "بلوک پنجره چوب بلوط سیاه", "block.create.dark_oak_window_pane": "پنجره چوب بلوط سیاه",
"block.create.dark_oak_window_pane": "پنجره چوب بلوط سیاه", "block.create.jungle_window": "بلوک پنجره جنگلی",
"block.create.jungle_window": "بلوک پنجره جنگلی", "block.create.jungle_window_pane": "پنجره چوب جنگلی",
"block.create.jungle_window_pane": "پنجره چوب جنگلی", "block.create.oak_window": "بلوک پنجره بلوط",
"block.create.oak_window": "بلوک پنجره بلوط", "block.create.oak_window_pane": "پنجره چوب بلوط",
"block.create.oak_window_pane": "پنجره چوب بلوط", "block.create.ornate_iron_window": "بلوک پنجره آهنی تزئین شده",
"block.create.ornate_iron_window": "بلوک پنجره آهنی تزئین شده", "block.create.ornate_iron_window_pane": "پنجره آهنی تزئین شده",
"block.create.ornate_iron_window_pane": "پنجره آهنی تزئین شده", "block.create.spruce_window": "بلوک پنجره صنوبر",
"block.create.spruce_window": "بلوک پنجره صنوبر", "block.create.spruce_window_pane": "پنجره چوب صنوبر",
"block.create.spruce_window_pane": "پنجره چوب صنوبر", "block.create.train_door": "در قطار",
"block.create.train_door": "در قطار", "block.create.warped_window": "بلوک پنجره پیچ خورده",
"block.create.warped_window": "بلوک پنجره پیچ خورده", "block.create.warped_window_pane": "پنجره چوب پیچ دار",
"block.create.warped_window_pane": "پنجره چوب پیچ دار", "create.station.close": "بستن پنجره"
"create.station.close": "بستن پنجره"
} }

View file

@ -1,423 +1,477 @@
{ {
"_": "Kiitos Createn kääntämisestä!", "advancement.create.super_glue.desc": "Liimaa kuutioita yhteen",
"block.create.acacia_window": "Akaasiaikkuna", "advancement.create.train.desc": "Luo ensimmäinen junasi",
"block.create.acacia_window_pane": "Akaasiaikkunapaneeli", "advancement.create.train_portal.desc": "Aja juna Nether-portaalin läpi",
"block.create.adjustable_chain_gearshift": "Säädettävä Ketjun Vaihdelaatikko", "block.create.acacia_window": "Akaasiaikkuna",
"block.create.analog_lever": "Analoginen Vipu", "block.create.acacia_window_pane": "Akaasiaikkunapaneeli",
"block.create.andesite_alloy_block": "Andesiittimetalliseoskuutio", "block.create.adjustable_chain_gearshift": "Säädettävä Ketjun Vaihdelaatikko",
"block.create.andesite_bars": "Andesiittikalterit", "block.create.analog_lever": "Analoginen Vipu",
"block.create.andesite_belt_funnel": "Andesiitti Hihnakanava", "block.create.andesite_alloy_block": "Andesiittimetalliseoskuutio",
"block.create.andesite_casing": "Andesiittikotelo", "block.create.andesite_bars": "Andesiittikalterit",
"block.create.andesite_door": "Andesiittiovi", "block.create.andesite_belt_funnel": "Andesiitti Hihnakanava",
"block.create.andesite_encased_cogwheel": "Andesiittikoteloitu Hammaspyörä", "block.create.andesite_casing": "Andesiittikotelo",
"block.create.andesite_encased_large_cogwheel": "Andesiittikoteloitu Suuri Hammaspyörä", "block.create.andesite_door": "Andesiittiovi",
"block.create.andesite_encased_shaft": "Andesiittikoteloitu Akseli", "block.create.andesite_encased_cogwheel": "Andesiittikoteloitu Hammaspyörä",
"block.create.andesite_funnel": "Andesiittikanava", "block.create.andesite_encased_large_cogwheel": "Andesiittikoteloitu Suuri Hammaspyörä",
"block.create.andesite_ladder": "Andesiitti Tikapuut", "block.create.andesite_encased_shaft": "Andesiittikoteloitu Akseli",
"block.create.andesite_pillar": "Andesiitti Pilari", "block.create.andesite_funnel": "Andesiittikanava",
"block.create.andesite_scaffolding": "Andesiittirakennusteline", "block.create.andesite_ladder": "Andesiitti Tikapuut",
"block.create.andesite_tunnel": "Andesiitti Tunneli", "block.create.andesite_pillar": "Andesiitti Pilari",
"block.create.asurine": "Asuriini", "block.create.andesite_scaffolding": "Andesiittirakennusteline",
"block.create.asurine_pillar": "Asuriini Pilari", "block.create.andesite_tunnel": "Andesiitti Tunneli",
"block.create.basin": "Allas", "block.create.asurine": "Asuriini",
"block.create.belt": "Hihna", "block.create.asurine_pillar": "Asuriini Pilari",
"block.create.birch_window": "Koivuikkuna", "block.create.basin": "Allas",
"block.create.birch_window_pane": "Koivuikkunapaneeli", "block.create.belt": "Hihna",
"block.create.black_nixie_tube": "Musta Nixie-putki", "block.create.birch_window": "Koivuikkuna",
"block.create.black_sail": "Musta Purje", "block.create.birch_window_pane": "Koivuikkunapaneeli",
"block.create.black_seat": "Musta Istuin", "block.create.black_nixie_tube": "Musta Nixie-putki",
"block.create.black_toolbox": "Musta Työkalupakki", "block.create.black_sail": "Musta Purje",
"block.create.black_valve_handle": "Musta Venttiilinkahva", "block.create.black_seat": "Musta Istuin",
"block.create.blaze_burner": "Roihupoltin", "block.create.black_toolbox": "Musta Työkalupakki",
"block.create.blue_nixie_tube": "Sininen Nixie-putki", "block.create.black_valve_handle": "Musta Venttiilinkahva",
"block.create.blue_sail": "Sininen Purje", "block.create.blaze_burner": "Roihupoltin",
"block.create.blue_seat": "Sininen Istuin", "block.create.blue_nixie_tube": "Sininen Nixie-putki",
"block.create.blue_toolbox": "Sininen Työkalupakki", "block.create.blue_sail": "Sininen Purje",
"block.create.blue_valve_handle": "Sininen Venttiilinkahva", "block.create.blue_seat": "Sininen Istuin",
"block.create.brass_bars": "Messinkikalterit", "block.create.blue_toolbox": "Sininen Työkalupakki",
"block.create.brass_belt_funnel": "Messinki Hihnankanava", "block.create.blue_valve_handle": "Sininen Venttiilinkahva",
"block.create.brass_block": "Messinkikuutio", "block.create.brass_bars": "Messinkikalterit",
"block.create.brass_casing": "Messinkikotelo", "block.create.brass_belt_funnel": "Messinki Hihnankanava",
"block.create.brass_door": "Messinkiovi", "block.create.brass_block": "Messinkikuutio",
"block.create.brass_encased_cogwheel": "Messinkikoteloitu Hammaspyörä", "block.create.brass_casing": "Messinkikotelo",
"block.create.brass_encased_large_cogwheel": "Messinkikoteloitu Suuri Hammaspyörä", "block.create.brass_door": "Messinkiovi",
"block.create.brass_encased_shaft": "Messinkikoteloitu Akseli", "block.create.brass_encased_cogwheel": "Messinkikoteloitu Hammaspyörä",
"block.create.brass_funnel": "Messinkikanava", "block.create.brass_encased_large_cogwheel": "Messinkikoteloitu Suuri Hammaspyörä",
"block.create.brass_ladder": "Messinkitikkaat", "block.create.brass_encased_shaft": "Messinkikoteloitu Akseli",
"block.create.brass_scaffolding": "Messinkirakennusteline", "block.create.brass_funnel": "Messinkikanava",
"block.create.brass_tunnel": "Messinki Tunneli", "block.create.brass_ladder": "Messinkitikkaat",
"block.create.brown_nixie_tube": "Ruskea Nixie-putki", "block.create.brass_scaffolding": "Messinkirakennusteline",
"block.create.brown_sail": "Ruskea Purje", "block.create.brass_tunnel": "Messinki Tunneli",
"block.create.brown_seat": "Ruskea Istuin", "block.create.brown_nixie_tube": "Ruskea Nixie-putki",
"block.create.brown_toolbox": "Ruskea Työkalupakki", "block.create.brown_sail": "Ruskea Purje",
"block.create.brown_valve_handle": "Ruskea Venttiilinkahva", "block.create.brown_seat": "Ruskea Istuin",
"block.create.calcite_pillar": "Kalsiitti Pilari", "block.create.brown_toolbox": "Ruskea Työkalupakki",
"block.create.cart_assembler": "Kaivosvaunun Kasaaja", "block.create.brown_valve_handle": "Ruskea Venttiilinkahva",
"block.create.chocolate": "Suklaa", "block.create.calcite_pillar": "Kalsiitti Pilari",
"block.create.chute": "Kouru", "block.create.cart_assembler": "Kaivosvaunun Kasaaja",
"block.create.clipboard": "Tehtävälista", "block.create.chocolate": "Suklaa",
"block.create.clockwork_bearing": "Kellolaakeri", "block.create.chute": "Kouru",
"block.create.clutch": "Kytkin", "block.create.clipboard": "Tehtävälista",
"block.create.cogwheel": "Hammaspyörä", "block.create.clockwork_bearing": "Kellolaakeri",
"block.create.content_observer": "Älytarkkailija", "block.create.clutch": "Kytkin",
"block.create.contraption_controls": "Ohjauslaite", "block.create.cogwheel": "Hammaspyörä",
"block.create.controller_rail": "Säädettävä Raide", "block.create.content_observer": "Älytarkkailija",
"block.create.controls": "Junanohjain", "block.create.contraption_controls": "Ohjauslaite",
"block.create.copper_backtank": "Kupari Reppusäiliö", "block.create.controller_rail": "Säädettävä Raide",
"block.create.copper_bars": "Kuparikalterit", "block.create.controls": "Junanohjain",
"block.create.copper_casing": "Kuparikotelo", "block.create.copper_backtank": "Kupari Reppusäiliö",
"block.create.copper_door": "Kupariovi", "block.create.copper_bars": "Kuparikalterit",
"block.create.copper_ladder": "Kupari Tikkaat", "block.create.copper_casing": "Kuparikotelo",
"block.create.copper_scaffolding": "Kuparirakennusteline", "block.create.copper_door": "Kupariovi",
"block.create.copper_shingle_slab": "Kuparipaanulaatta", "block.create.copper_ladder": "Kupari Tikkaat",
"block.create.copper_shingle_stairs": "Kuparipaanuportaat", "block.create.copper_scaffolding": "Kuparirakennusteline",
"block.create.copper_shingles": "Kuparipaanut", "block.create.copper_shingle_slab": "Kuparipaanulaatta",
"block.create.copper_tile_slab": "Kuparitiililaatta", "block.create.copper_shingle_stairs": "Kuparipaanuportaat",
"block.create.copper_tile_stairs": "Kuparitiiliportaat", "block.create.copper_shingles": "Kuparipaanut",
"block.create.copper_tiles": "Kuparitiili", "block.create.copper_tile_slab": "Kuparitiililaatta",
"block.create.copper_valve_handle": "Kuparinen Venttiilinkahva", "block.create.copper_tile_stairs": "Kuparitiiliportaat",
"block.create.copycat_bars": "Matkija kalterit", "block.create.copper_tiles": "Kuparitiili",
"block.create.copycat_base": "Matkija pohja", "block.create.copper_valve_handle": "Kuparinen Venttiilinkahva",
"block.create.copycat_panel": "Matkija levy", "block.create.copycat_bars": "Matkija kalterit",
"block.create.copycat_step": "Matkija porras", "block.create.copycat_base": "Matkija pohja",
"block.create.creative_crate": "Luova Laatikko", "block.create.copycat_panel": "Matkija levy",
"block.create.creative_fluid_tank": "Luova Nestesäiliö", "block.create.copycat_step": "Matkija porras",
"block.create.creative_motor": "Luova Moottori", "block.create.creative_crate": "Luova Laatikko",
"block.create.crimsite": "Crimsiitti", "block.create.creative_fluid_tank": "Luova Nestesäiliö",
"block.create.crimsite_pillar": "Crimsiitti Pilari", "block.create.creative_motor": "Luova Moottori",
"block.create.crimson_window": "Karmiini Ikkuna", "block.create.crimsite": "Crimsiitti",
"block.create.crimson_window_pane": "Karmiini Ikkunapaneeli", "block.create.crimsite_pillar": "Crimsiitti Pilari",
"block.create.crushing_wheel": "Murskauspyörä", "block.create.crimson_window": "Karmiini Ikkuna",
"block.create.crushing_wheel_controller": "Murskauspyörän Ohjain", "block.create.crimson_window_pane": "Karmiini Ikkunapaneeli",
"block.create.cuckoo_clock": "Käkikello", "block.create.crushing_wheel": "Murskauspyörä",
"block.create.cut_andesite": "Leikattu Andesiitti", "block.create.crushing_wheel_controller": "Murskauspyörän Ohjain",
"block.create.cut_andesite_brick_slab": "Leikattu Andesiittitiililaatta", "block.create.cuckoo_clock": "Käkikello",
"block.create.cut_andesite_brick_stairs": "Leikattu Andesiittitiiliportaat", "block.create.cut_andesite": "Leikattu Andesiitti",
"block.create.cut_andesite_brick_wall": "Leikattu Andesiittitiilimuuri", "block.create.cut_andesite_brick_slab": "Leikattu Andesiittitiililaatta",
"block.create.cut_andesite_bricks": "Leikattu Andesiittitiili", "block.create.cut_andesite_brick_stairs": "Leikattu Andesiittitiiliportaat",
"block.create.cut_andesite_slab": "Leikattu Andesiittilaatta", "block.create.cut_andesite_brick_wall": "Leikattu Andesiittitiilimuuri",
"block.create.cut_andesite_stairs": "Leikattu Andesiittiportaat", "block.create.cut_andesite_bricks": "Leikattu Andesiittitiili",
"block.create.cut_andesite_wall": "Leikattu Andesiittimuuri", "block.create.cut_andesite_slab": "Leikattu Andesiittilaatta",
"block.create.cut_asurine": "Leikattu Asuriini", "block.create.cut_andesite_stairs": "Leikattu Andesiittiportaat",
"block.create.cut_asurine_brick_slab": "Leikattu asuriinitiililaatta", "block.create.cut_andesite_wall": "Leikattu Andesiittimuuri",
"block.create.cut_asurine_brick_stairs": "Leikatut asuriinitiiliportaat", "block.create.cut_asurine": "Leikattu Asuriini",
"block.create.cut_asurine_brick_wall": "Leikattu asuriinitiilimuuri", "block.create.cut_asurine_brick_slab": "Leikattu asuriinitiililaatta",
"block.create.cut_asurine_bricks": "Leikattu asuriinitiili", "block.create.cut_asurine_brick_stairs": "Leikatut asuriinitiiliportaat",
"block.create.cut_asurine_slab": "Leikattu asuuriinilaatta", "block.create.cut_asurine_brick_wall": "Leikattu asuriinitiilimuuri",
"block.create.cut_asurine_stairs": "Leikatut asuriiniportaat", "block.create.cut_asurine_bricks": "Leikattu asuriinitiili",
"block.create.cut_asurine_wall": "Leikattu asuriinimuuri", "block.create.cut_asurine_slab": "Leikattu asuuriinilaatta",
"block.create.cut_calcite": "Leikattu kalsiitti", "block.create.cut_asurine_stairs": "Leikatut asuriiniportaat",
"block.create.cut_calcite_brick_slab": "Leikattu kalsiittitiililaatta", "block.create.cut_asurine_wall": "Leikattu asuriinimuuri",
"block.create.cut_calcite_brick_stairs": "Leikatut kalsiittitiiliportaat", "block.create.cut_calcite": "Leikattu kalsiitti",
"block.create.cut_calcite_brick_wall": "Leikattu kalsiittitiilimuuri", "block.create.cut_calcite_brick_slab": "Leikattu kalsiittitiililaatta",
"block.create.cut_calcite_bricks": "Leikattu kalsiittitiili", "block.create.cut_calcite_brick_stairs": "Leikatut kalsiittitiiliportaat",
"block.create.cut_calcite_slab": "Leikattu kalsiittilaatta", "block.create.cut_calcite_brick_wall": "Leikattu kalsiittitiilimuuri",
"block.create.cut_calcite_stairs": "Leikatut kalsiittiportaat", "block.create.cut_calcite_bricks": "Leikattu kalsiittitiili",
"block.create.cut_calcite_wall": "Leikattu kalsiittimuuri", "block.create.cut_calcite_slab": "Leikattu kalsiittilaatta",
"block.create.cut_crimsite": "Leikattu krimsiitti", "block.create.cut_calcite_stairs": "Leikatut kalsiittiportaat",
"block.create.cut_crimsite_brick_slab": "Leikattu krimsiittitiililaatta", "block.create.cut_calcite_wall": "Leikattu kalsiittimuuri",
"block.create.cut_crimsite_brick_stairs": "Leikatut krimsiittitiiliportaat", "block.create.cut_crimsite": "Leikattu krimsiitti",
"block.create.cut_crimsite_brick_wall": "Leikattu krimsiittitiilimuuri", "block.create.cut_crimsite_brick_slab": "Leikattu krimsiittitiililaatta",
"block.create.cut_crimsite_bricks": "Leikattu krimsiittitiili", "block.create.cut_crimsite_brick_stairs": "Leikatut krimsiittitiiliportaat",
"block.create.cut_crimsite_slab": "Leikattu krimsiittilaatta", "block.create.cut_crimsite_brick_wall": "Leikattu krimsiittitiilimuuri",
"block.create.cut_crimsite_stairs": "Leikatut krimsiittiportaat", "block.create.cut_crimsite_bricks": "Leikattu krimsiittitiili",
"block.create.cut_crimsite_wall": "Leikattu krimsiittimuuri", "block.create.cut_crimsite_slab": "Leikattu krimsiittilaatta",
"block.create.cut_deepslate": "Leikattu pohjaliuskekivi", "block.create.cut_crimsite_stairs": "Leikatut krimsiittiportaat",
"block.create.cut_deepslate_brick_slab": "Leikattu pohjaliuskekivitiililaatta", "block.create.cut_crimsite_wall": "Leikattu krimsiittimuuri",
"block.create.cut_deepslate_brick_stairs": "Leikatut pohjaliuskekivitiiliportaat", "block.create.cut_deepslate": "Leikattu pohjaliuskekivi",
"block.create.cut_deepslate_brick_wall": "Leikattu pohjaliuskekivitiilimuuri", "block.create.cut_deepslate_brick_slab": "Leikattu pohjaliuskekivitiililaatta",
"block.create.cut_deepslate_bricks": "Leikattu pohjaliuskekivitiili", "block.create.cut_deepslate_brick_stairs": "Leikatut pohjaliuskekivitiiliportaat",
"block.create.cut_deepslate_slab": "Leikattu pohjaliuskekivilaatta", "block.create.cut_deepslate_brick_wall": "Leikattu pohjaliuskekivitiilimuuri",
"block.create.cut_deepslate_stairs": "Leikatut pohjaliuskekiviportaat", "block.create.cut_deepslate_bricks": "Leikattu pohjaliuskekivitiili",
"block.create.cut_deepslate_wall": "Leikattu pohjaliuskekivimuuri", "block.create.cut_deepslate_slab": "Leikattu pohjaliuskekivilaatta",
"block.create.cut_diorite": "Leikattu dioriitti", "block.create.cut_deepslate_stairs": "Leikatut pohjaliuskekiviportaat",
"block.create.cut_diorite_brick_slab": "Leikattu dioriittitiililaatta", "block.create.cut_deepslate_wall": "Leikattu pohjaliuskekivimuuri",
"block.create.cut_diorite_brick_stairs": "Leikatut dioriittitiiliportaat", "block.create.cut_diorite": "Leikattu dioriitti",
"block.create.cut_diorite_brick_wall": "Leikattu dioriittitiilimuuri", "block.create.cut_diorite_brick_slab": "Leikattu dioriittitiililaatta",
"block.create.cut_diorite_bricks": "Leikattu dioriittitiili", "block.create.cut_diorite_brick_stairs": "Leikatut dioriittitiiliportaat",
"block.create.cut_diorite_slab": "Leikattu dioriittilaatta", "block.create.cut_diorite_brick_wall": "Leikattu dioriittitiilimuuri",
"block.create.cut_diorite_stairs": "Leikatut dioriittiportaat", "block.create.cut_diorite_bricks": "Leikattu dioriittitiili",
"block.create.cut_diorite_wall": "Leikattu dioriittimuuri", "block.create.cut_diorite_slab": "Leikattu dioriittilaatta",
"block.create.cut_dripstone": "Leikattu tippukivi", "block.create.cut_diorite_stairs": "Leikatut dioriittiportaat",
"block.create.cut_dripstone_brick_slab": "Leikattu tippukivitiililaatta", "block.create.cut_diorite_wall": "Leikattu dioriittimuuri",
"block.create.cut_dripstone_brick_stairs": "Leikatut tippukivitiiliportaat", "block.create.cut_dripstone": "Leikattu tippukivi",
"block.create.cut_dripstone_brick_wall": "Leikattu tippukivitiilimuuri", "block.create.cut_dripstone_brick_slab": "Leikattu tippukivitiililaatta",
"block.create.cut_dripstone_bricks": "Leikattu tippukivitiili", "block.create.cut_dripstone_brick_stairs": "Leikatut tippukivitiiliportaat",
"block.create.cut_dripstone_slab": "Leikattu tippukivilaatta", "block.create.cut_dripstone_brick_wall": "Leikattu tippukivitiilimuuri",
"block.create.cut_dripstone_stairs": "Leikatut tippukiviportaat", "block.create.cut_dripstone_bricks": "Leikattu tippukivitiili",
"block.create.cut_dripstone_wall": "Leikattu tippukivimuuri", "block.create.cut_dripstone_slab": "Leikattu tippukivilaatta",
"block.create.cut_granite": "Leikattu graniitti", "block.create.cut_dripstone_stairs": "Leikatut tippukiviportaat",
"block.create.cut_granite_brick_slab": "Leikattu graniittitiililaatta", "block.create.cut_dripstone_wall": "Leikattu tippukivimuuri",
"block.create.cut_granite_brick_stairs": "Leikatut graniittitiiliportaat", "block.create.cut_granite": "Leikattu graniitti",
"block.create.cut_granite_brick_wall": "Leikattu graniittitiilimuuri", "block.create.cut_granite_brick_slab": "Leikattu graniittitiililaatta",
"block.create.cut_granite_bricks": "Leikattu graniittitiili", "block.create.cut_granite_brick_stairs": "Leikatut graniittitiiliportaat",
"block.create.cut_granite_slab": "Leikattu graniittilaatta", "block.create.cut_granite_brick_wall": "Leikattu graniittitiilimuuri",
"block.create.cut_granite_stairs": "Leikatut graniittiportaat", "block.create.cut_granite_bricks": "Leikattu graniittitiili",
"block.create.cut_granite_wall": "Leikattu graniittimuuri", "block.create.cut_granite_slab": "Leikattu graniittilaatta",
"block.create.cut_limestone": "Leikattu kalkkikivi", "block.create.cut_granite_stairs": "Leikatut graniittiportaat",
"block.create.cut_limestone_brick_slab": "Leikattu kalkkikivitiililaatta", "block.create.cut_granite_wall": "Leikattu graniittimuuri",
"block.create.cut_limestone_brick_stairs": "Leikatut kalkkikivitiiliportaat", "block.create.cut_limestone": "Leikattu kalkkikivi",
"block.create.cut_limestone_brick_wall": "Leikattu kalkkikivitiilimuuri", "block.create.cut_limestone_brick_slab": "Leikattu kalkkikivitiililaatta",
"block.create.cut_limestone_bricks": "Leikattu kalkkikivitiili", "block.create.cut_limestone_brick_stairs": "Leikatut kalkkikivitiiliportaat",
"block.create.cut_limestone_slab": "Leikattu kalkkikivilaatta", "block.create.cut_limestone_brick_wall": "Leikattu kalkkikivitiilimuuri",
"block.create.cut_limestone_stairs": "Leikatut kalkkikiviportaat", "block.create.cut_limestone_bricks": "Leikattu kalkkikivitiili",
"block.create.cut_limestone_wall": "Leikattu kalkkikivimuuri", "block.create.cut_limestone_slab": "Leikattu kalkkikivilaatta",
"block.create.cut_ochrum": "Leikattu okrumi", "block.create.cut_limestone_stairs": "Leikatut kalkkikiviportaat",
"block.create.cut_ochrum_brick_slab": "Leikattu okrumitiililaatta", "block.create.cut_limestone_wall": "Leikattu kalkkikivimuuri",
"block.create.cut_ochrum_brick_stairs": "Leikatut okrumitiiliportaat", "block.create.cut_ochrum": "Leikattu okrumi",
"block.create.cut_ochrum_brick_wall": "Leikattu okrumitiilimuuri", "block.create.cut_ochrum_brick_slab": "Leikattu okrumitiililaatta",
"block.create.cut_ochrum_bricks": "Leikattu okrumitiili", "block.create.cut_ochrum_brick_stairs": "Leikatut okrumitiiliportaat",
"block.create.cut_ochrum_slab": "Leikattu okrumilaatta", "block.create.cut_ochrum_brick_wall": "Leikattu okrumitiilimuuri",
"block.create.cut_ochrum_stairs": "Leikatut okrumiportaat", "block.create.cut_ochrum_bricks": "Leikattu okrumitiili",
"block.create.cut_ochrum_wall": "Leikattu okrumimuuri", "block.create.cut_ochrum_slab": "Leikattu okrumilaatta",
"block.create.cut_scorchia": "Leikattu tuhkakivi", "block.create.cut_ochrum_stairs": "Leikatut okrumiportaat",
"block.create.cut_scorchia_brick_slab": "Leikattu tuhkakivitiililaatta", "block.create.cut_ochrum_wall": "Leikattu okrumimuuri",
"block.create.cut_scorchia_brick_stairs": "Leikatut tuhkakivitiiliportaat", "block.create.cut_scorchia": "Leikattu tuhkakivi",
"block.create.cut_scorchia_brick_wall": "Leikattu tuhkakivitiilimuuri", "block.create.cut_scorchia_brick_slab": "Leikattu tuhkakivitiililaatta",
"block.create.cut_scorchia_bricks": "Leikattu tuhkakivitiili", "block.create.cut_scorchia_brick_stairs": "Leikatut tuhkakivitiiliportaat",
"block.create.cut_scorchia_slab": "Leikattu tuhkakivilaatta", "block.create.cut_scorchia_brick_wall": "Leikattu tuhkakivitiilimuuri",
"block.create.cut_scorchia_stairs": "Leikatut tuhkakiviportaat", "block.create.cut_scorchia_bricks": "Leikattu tuhkakivitiili",
"block.create.cut_scorchia_wall": "Leikattu tuhkakivimuuri", "block.create.cut_scorchia_slab": "Leikattu tuhkakivilaatta",
"block.create.cut_scoria": "Leikattu palokivi", "block.create.cut_scorchia_stairs": "Leikatut tuhkakiviportaat",
"block.create.cut_scoria_brick_slab": "Leikattu palokivitiililaatta", "block.create.cut_scorchia_wall": "Leikattu tuhkakivimuuri",
"block.create.cut_scoria_brick_stairs": "Leikatut palokivitiiliportaat", "block.create.cut_scoria": "Leikattu palokivi",
"block.create.cut_scoria_brick_wall": "Leikattu palokivitiilimuuri", "block.create.cut_scoria_brick_slab": "Leikattu palokivitiililaatta",
"block.create.cut_scoria_bricks": "Leikattu palokivitiili", "block.create.cut_scoria_brick_stairs": "Leikatut palokivitiiliportaat",
"block.create.cut_scoria_slab": "Leikattu palokivilaatta", "block.create.cut_scoria_brick_wall": "Leikattu palokivitiilimuuri",
"block.create.cut_scoria_stairs": "Leikatut palokiviportaat", "block.create.cut_scoria_bricks": "Leikattu palokivitiili",
"block.create.cut_scoria_wall": "Leikattu palokivimuuri", "block.create.cut_scoria_slab": "Leikattu palokivilaatta",
"block.create.cut_tuff": "Leikattu tuffi", "block.create.cut_scoria_stairs": "Leikatut palokiviportaat",
"block.create.cut_tuff_brick_slab": "Leikattu tuffitiililaatta", "block.create.cut_scoria_wall": "Leikattu palokivimuuri",
"block.create.cut_tuff_brick_stairs": "Leikatut tuffitiiliportaat", "block.create.cut_tuff": "Leikattu tuffi",
"block.create.cut_tuff_brick_wall": "Leikattu tuffitiilimuuri", "block.create.cut_tuff_brick_slab": "Leikattu tuffitiililaatta",
"block.create.cut_tuff_bricks": "Leikattu tuffitiili", "block.create.cut_tuff_brick_stairs": "Leikatut tuffitiiliportaat",
"block.create.cut_tuff_slab": "Leikattu tuffilaatta", "block.create.cut_tuff_brick_wall": "Leikattu tuffitiilimuuri",
"block.create.cut_tuff_stairs": "Leikatut tuffiportaat", "block.create.cut_tuff_bricks": "Leikattu tuffitiili",
"block.create.cut_tuff_wall": "Leikattu tuffimuuri", "block.create.cut_tuff_slab": "Leikattu tuffilaatta",
"block.create.cut_veridium": "Leikattu viherkivi", "block.create.cut_tuff_stairs": "Leikatut tuffiportaat",
"block.create.cut_veridium_brick_slab": "Leikattu viherkivitiililaatta", "block.create.cut_tuff_wall": "Leikattu tuffimuuri",
"block.create.cut_veridium_brick_stairs": "Leikatut viherkivitiiliportaat", "block.create.cut_veridium": "Leikattu viherkivi",
"block.create.cut_veridium_brick_wall": "Leikattu viherkivitiilimuuri", "block.create.cut_veridium_brick_slab": "Leikattu viherkivitiililaatta",
"block.create.cut_veridium_bricks": "Leikattu viherkivitiili", "block.create.cut_veridium_brick_stairs": "Leikatut viherkivitiiliportaat",
"block.create.cut_veridium_slab": "Leikattu viherkivilaatta", "block.create.cut_veridium_brick_wall": "Leikattu viherkivitiilimuuri",
"block.create.cut_veridium_stairs": "Leikatut viherkiviportaat", "block.create.cut_veridium_bricks": "Leikattu viherkivitiili",
"block.create.cut_veridium_wall": "Leikattu viherkivimuuri", "block.create.cut_veridium_slab": "Leikattu viherkivilaatta",
"block.create.cyan_nixie_tube": "Syaani nixie-putki", "block.create.cut_veridium_stairs": "Leikatut viherkiviportaat",
"block.create.cyan_sail": "Syaani purje", "block.create.cut_veridium_wall": "Leikattu viherkivimuuri",
"block.create.cyan_seat": "Syaani istuin", "block.create.cyan_nixie_tube": "Syaani nixie-putki",
"block.create.cyan_toolbox": "Syaani työkalupakki", "block.create.cyan_sail": "Syaani purje",
"block.create.cyan_valve_handle": "Syaani venttiilikahva", "block.create.cyan_seat": "Syaani istuin",
"block.create.dark_oak_window": "Tumma tammi-ikkuna", "block.create.cyan_toolbox": "Syaani työkalupakki",
"block.create.dark_oak_window_pane": "Tumma tammi-ikkunapaneeli", "block.create.cyan_valve_handle": "Syaani venttiilikahva",
"block.create.deepslate_pillar": "Pohjaliuskekivipilari", "block.create.dark_oak_window": "Tumma tammi-ikkuna",
"block.create.deepslate_zinc_ore": "Pohjaliuskekivisinkkimalmi", "block.create.dark_oak_window_pane": "Tumma tammi-ikkunapaneeli",
"block.create.deployer": "Mekaaninen käyttäjä", "block.create.deepslate_pillar": "Pohjaliuskekivipilari",
"block.create.depot": "Taso", "block.create.deepslate_zinc_ore": "Pohjaliuskekivisinkkimalmi",
"block.create.diorite_pillar": "Dioriittipilari", "block.create.deployer": "Mekaaninen käyttäjä",
"block.create.display_board": "Tiedotustaulu", "block.create.depot": "Taso",
"block.create.display_link": "Tietolähetin", "block.create.diorite_pillar": "Dioriittipilari",
"block.create.dripstone_pillar": "Tippukivipilari", "block.create.display_board": "Tiedotustaulu",
"block.create.elevator_contact": "Hissikontakti", "block.create.display_link": "Tietolähetin",
"block.create.elevator_pulley": "Hissivinssi", "block.create.dripstone_pillar": "Tippukivipilari",
"block.create.encased_chain_drive": "Koteloitu käyttöketju", "block.create.elevator_contact": "Hissikontakti",
"block.create.encased_fan": "Koteloitu tuuletin", "block.create.elevator_pulley": "Hissivinssi",
"block.create.encased_fluid_pipe": "Koteloitu nesteputki", "block.create.encased_chain_drive": "Koteloitu käyttöketju",
"block.create.experience_block": "Kokemuskuutio", "block.create.encased_fan": "Koteloitu tuuletin",
"block.create.exposed_copper_shingle_slab": "Altistunut kuparipaanulaatta", "block.create.encased_fluid_pipe": "Koteloitu nesteputki",
"block.create.exposed_copper_shingle_stairs": "Altistuneet kuparipaanuportaat", "block.create.experience_block": "Kokemuskuutio",
"block.create.exposed_copper_shingles": "Altistunut kuparipaanu", "block.create.exposed_copper_shingle_slab": "Altistunut kuparipaanulaatta",
"block.create.exposed_copper_tile_slab": "Altistunut kuparikaakelilaatta", "block.create.exposed_copper_shingle_stairs": "Altistuneet kuparipaanuportaat",
"block.create.exposed_copper_tile_stairs": "Altistuneet kuparikaakeliportaat", "block.create.exposed_copper_shingles": "Altistunut kuparipaanu",
"block.create.exposed_copper_tiles": "Altistunut kuparikaakeli", "block.create.exposed_copper_tile_slab": "Altistunut kuparikaakelilaatta",
"block.create.fake_track": "Ratamerkki kartoille", "block.create.exposed_copper_tile_stairs": "Altistuneet kuparikaakeliportaat",
"block.create.fluid_pipe": "Nesteputki", "block.create.exposed_copper_tiles": "Altistunut kuparikaakeli",
"block.create.fluid_tank": "Nestesäiliö", "block.create.fake_track": "Ratamerkki kartoille",
"block.create.fluid_valve": "Nesteventtiili", "block.create.fluid_pipe": "Nesteputki",
"block.create.flywheel": "Vauhtipyörä", "block.create.fluid_tank": "Nestesäiliö",
"block.create.framed_glass": "Kehystetty lasi", "block.create.fluid_valve": "Nesteventtiili",
"block.create.framed_glass_door": "Kehystetty lasiovi", "block.create.flywheel": "Vauhtipyörä",
"block.create.framed_glass_pane": "Kehystetty lasipaneeli", "block.create.framed_glass": "Kehystetty lasi",
"block.create.framed_glass_trapdoor": "Kehystetty lasiluukku", "block.create.framed_glass_door": "Kehystetty lasiovi",
"block.create.gantry_carriage": "Nosturikuljetin", "block.create.framed_glass_pane": "Kehystetty lasipaneeli",
"block.create.gantry_shaft": "Nosturiakseli", "block.create.framed_glass_trapdoor": "Kehystetty lasiluukku",
"block.create.gearbox": "Vaihdelaatikko", "block.create.gantry_carriage": "Nosturikuljetin",
"block.create.gearshift": "Suunnanvaihtaja", "block.create.gantry_shaft": "Nosturiakseli",
"block.create.glass_fluid_pipe": "Lasi nesteputki", "block.create.gearbox": "Vaihdelaatikko",
"block.create.granite_pillar": "Graniittipilari", "block.create.gearshift": "Suunnanvaihtaja",
"block.create.gray_nixie_tube": "Harmaa nixie-putki", "block.create.glass_fluid_pipe": "Lasi nesteputki",
"block.create.gray_sail": "Harmaa purje", "block.create.granite_pillar": "Graniittipilari",
"block.create.gray_seat": "Harmaa istuin", "block.create.gray_nixie_tube": "Harmaa nixie-putki",
"block.create.gray_toolbox": "Harmaa työkalupakki", "block.create.gray_sail": "Harmaa purje",
"block.create.gray_valve_handle": "Harmaa venttiilikahva", "block.create.gray_seat": "Harmaa istuin",
"block.create.green_nixie_tube": "Vihreä nixie-putki", "block.create.gray_toolbox": "Harmaa työkalupakki",
"block.create.green_sail": "Vihreä purje", "block.create.gray_valve_handle": "Harmaa venttiilikahva",
"block.create.green_seat": "Vihreä istuin", "block.create.green_nixie_tube": "Vihreä nixie-putki",
"block.create.green_toolbox": "Vihreä työkalupakki", "block.create.green_sail": "Vihreä purje",
"block.create.green_valve_handle": "Vihreä venttiilikahva", "block.create.green_seat": "Vihreä istuin",
"block.create.hand_crank": "Käsiveivi", "block.create.green_toolbox": "Vihreä työkalupakki",
"block.create.haunted_bell": "Kummitus-soittokello", "block.create.green_valve_handle": "Vihreä venttiilikahva",
"block.create.honey": "Hunaja", "block.create.hand_crank": "Käsiveivi",
"block.create.horizontal_framed_glass": "Vaakasuora kehystetty lasi", "block.create.haunted_bell": "Kummitus-soittokello",
"block.create.horizontal_framed_glass_pane": "Vaakasuora kehystetty lasipaneeli", "block.create.honey": "Hunaja",
"block.create.hose_pulley": "Letkurulla", "block.create.horizontal_framed_glass": "Vaakasuora kehystetty lasi",
"block.create.industrial_iron_block": "Teollisuusrautakuutio", "block.create.horizontal_framed_glass_pane": "Vaakasuora kehystetty lasipaneeli",
"block.create.item_drain": "Viemäri", "block.create.hose_pulley": "Letkurulla",
"block.create.item_vault": "Varastoholvi", "block.create.industrial_iron_block": "Teollisuusrautakuutio",
"block.create.jungle_window": "Viidakkopuuikkuna", "block.create.item_drain": "Viemäri",
"block.create.jungle_window_pane": "Viidakkopuuikkunapaneeli", "block.create.item_vault": "Varastoholvi",
"block.create.large_bogey": "Suuri teli", "block.create.jungle_window": "Viidakkopuuikkuna",
"block.create.large_cogwheel": "Suuri hammaspyörä", "block.create.jungle_window_pane": "Viidakkopuuikkunapaneeli",
"block.create.large_water_wheel": "Suuri vesipyörä", "block.create.large_bogey": "Suuri teli",
"block.create.layered_andesite": "Kerroksinen andesiitti", "block.create.large_cogwheel": "Suuri hammaspyörä",
"block.create.layered_asurine": "Kerroksinen asuriini", "block.create.large_water_wheel": "Suuri vesipyörä",
"block.create.layered_calcite": "Kerroksinen kalsiitti", "block.create.layered_andesite": "Kerroksinen andesiitti",
"block.create.layered_crimsite": "Kerroksinen krimsiitti", "block.create.layered_asurine": "Kerroksinen asuriini",
"block.create.layered_deepslate": "Kerroksinen pohjaliuskekivi", "block.create.layered_calcite": "Kerroksinen kalsiitti",
"block.create.layered_diorite": "Kerroksinen dioriitti", "block.create.layered_crimsite": "Kerroksinen krimsiitti",
"block.create.layered_dripstone": "Kerroksinen tippukivi", "block.create.layered_deepslate": "Kerroksinen pohjaliuskekivi",
"block.create.layered_granite": "Kerroksinen graniitti", "block.create.layered_diorite": "Kerroksinen dioriitti",
"block.create.layered_limestone": "Kerroksinen kalkkikivi", "block.create.layered_dripstone": "Kerroksinen tippukivi",
"block.create.layered_ochrum": "Kerroksinen okrumi", "block.create.layered_granite": "Kerroksinen graniitti",
"block.create.layered_scorchia": "Kerroksinen tuhkakivi", "block.create.layered_limestone": "Kerroksinen kalkkikivi",
"block.create.layered_scoria": "Kerroksinen palokivi", "block.create.layered_ochrum": "Kerroksinen okrumi",
"block.create.layered_tuff": "Kerroksinen tuffi", "block.create.layered_scorchia": "Kerroksinen tuhkakivi",
"block.create.layered_veridium": "Kerroksinen viherkivi", "block.create.layered_scoria": "Kerroksinen palokivi",
"block.create.lectern_controller": "Kateederiohjain", "block.create.layered_tuff": "Kerroksinen tuffi",
"block.create.light_blue_nixie_tube": "Vaaleansininen nixie-putki", "block.create.layered_veridium": "Kerroksinen viherkivi",
"block.create.light_blue_sail": "Vaaleansininen purje", "block.create.lectern_controller": "Kateederiohjain",
"block.create.light_blue_seat": "Vaaleansininen istuin", "block.create.light_blue_nixie_tube": "Vaaleansininen nixie-putki",
"block.create.light_blue_toolbox": "Vaaleansininen työkalupakki", "block.create.light_blue_sail": "Vaaleansininen purje",
"block.create.light_blue_valve_handle": "Vaaleansininen venttiilinkahva", "block.create.light_blue_seat": "Vaaleansininen istuin",
"block.create.light_gray_nixie_tube": "Vaaleanharmaa nixie-putki", "block.create.light_blue_toolbox": "Vaaleansininen työkalupakki",
"block.create.light_gray_sail": "Vaaleanharmaa purje", "block.create.light_blue_valve_handle": "Vaaleansininen venttiilinkahva",
"block.create.light_gray_seat": "Vaaleanharmaa istuin", "block.create.light_gray_nixie_tube": "Vaaleanharmaa nixie-putki",
"block.create.light_gray_toolbox": "Vaaleanharmaa työkalupakki", "block.create.light_gray_sail": "Vaaleanharmaa purje",
"block.create.light_gray_valve_handle": "Vaaleanharmaa venttiilinkahva", "block.create.light_gray_seat": "Vaaleanharmaa istuin",
"block.create.lime_nixie_tube": "Limetinvihreä nixie-putki", "block.create.light_gray_toolbox": "Vaaleanharmaa työkalupakki",
"block.create.lime_sail": "Limetinvihreä purje", "block.create.light_gray_valve_handle": "Vaaleanharmaa venttiilinkahva",
"block.create.lime_seat": "Limetinvihreä istuin", "block.create.lime_nixie_tube": "Limetinvihreä nixie-putki",
"block.create.lime_toolbox": "Limetinvihreä työkalupakki", "block.create.lime_sail": "Limetinvihreä purje",
"block.create.lime_valve_handle": "Limetinvihreä venttiilinkahva", "block.create.lime_seat": "Limetinvihreä istuin",
"block.create.limestone": "Kalkkikivi", "block.create.lime_toolbox": "Limetinvihreä työkalupakki",
"block.create.limestone_pillar": "Kalkkikivipilari", "block.create.lime_valve_handle": "Limetinvihreä venttiilinkahva",
"block.create.linear_chassis": "Lineaarinen runko", "block.create.limestone": "Kalkkikivi",
"block.create.lit_blaze_burner": "Sytytetty roihupoltin", "block.create.limestone_pillar": "Kalkkikivipilari",
"block.create.magenta_nixie_tube": "Purppura nixie-putki", "block.create.linear_chassis": "Lineaarinen runko",
"block.create.magenta_sail": "Purppura purje", "block.create.lit_blaze_burner": "Sytytetty roihupoltin",
"block.create.magenta_seat": "Purppura istuin", "block.create.magenta_nixie_tube": "Purppura nixie-putki",
"block.create.magenta_toolbox": "Purppura työkalupakki", "block.create.magenta_sail": "Purppura purje",
"block.create.magenta_valve_handle": "Purppura venttiilikahva", "block.create.magenta_seat": "Purppura istuin",
"block.create.mechanical_arm": "Mekaaninen käsi", "block.create.magenta_toolbox": "Purppura työkalupakki",
"block.create.mechanical_bearing": "Mekaaninen laakeri", "block.create.magenta_valve_handle": "Purppura venttiilikahva",
"block.create.mechanical_crafter": "Mekaaninen valmistaja", "block.create.mechanical_arm": "Mekaaninen käsi",
"block.create.mechanical_drill": "Mekaaninen pora", "block.create.mechanical_bearing": "Mekaaninen laakeri",
"block.create.mechanical_harvester": "Mekaaninen sadonkerääjä", "block.create.mechanical_crafter": "Mekaaninen valmistaja",
"block.create.mechanical_mixer": "Mekaaninen sekoittaja", "block.create.mechanical_drill": "Mekaaninen pora",
"block.create.mechanical_piston": "Mekaaninen mäntä", "block.create.mechanical_harvester": "Mekaaninen sadonkerääjä",
"block.create.mechanical_piston_head": "Mekaaninen mäntäpää", "block.create.mechanical_mixer": "Mekaaninen sekoittaja",
"block.create.mechanical_plough": "Mekaaninen aura", "block.create.mechanical_piston": "Mekaaninen mäntä",
"block.create.mechanical_press": "Mekaaninen prässi", "block.create.mechanical_piston_head": "Mekaaninen mäntäpää",
"block.create.mechanical_pump": "Mekaaninen pumppu", "block.create.mechanical_plough": "Mekaaninen aura",
"block.create.mechanical_roller": "Mekaaninen jyrä", "block.create.mechanical_press": "Mekaaninen prässi",
"block.create.mechanical_saw": "Mekaaninen saha", "block.create.mechanical_pump": "Mekaaninen pumppu",
"block.create.metal_bracket": "Metalli pidin", "block.create.mechanical_roller": "Mekaaninen jyrä",
"block.create.metal_girder": "Metalli hirsi", "block.create.mechanical_saw": "Mekaaninen saha",
"block.create.metal_girder_encased_shaft": "Metalli hirrellä koteloitu akseli", "block.create.metal_bracket": "Metalli pidin",
"block.create.millstone": "Myllykivi", "block.create.metal_girder": "Metalli hirsi",
"block.create.minecart_anchor": "Kaivusvaunu ankkuri", "block.create.metal_girder_encased_shaft": "Metalli hirrellä koteloitu akseli",
"block.create.mysterious_cuckoo_clock": "Käki kello", "block.create.millstone": "Myllykivi",
"block.create.netherite_backtank": "Netheriitti taka säiliö", "block.create.minecart_anchor": "Kaivusvaunu ankkuri",
"block.create.nixie_tube": "Nixie-putki", "block.create.mysterious_cuckoo_clock": "Käki kello",
"block.create.nozzle": "Suutin", "block.create.netherite_backtank": "Netheriitti taka säiliö",
"block.create.oak_window": "Tammi ikkuna", "block.create.nixie_tube": "Nixie-putki",
"block.create.oak_window_pane": "Tumma tammi ikkuna", "block.create.nozzle": "Suutin",
"block.create.ochrum": "Ochrumi", "block.create.oak_window": "Tammi ikkuna",
"block.create.ochrum_pillar": "Ochrumi pilari", "block.create.oak_window_pane": "Tammi-ikkunapaneeli",
"block.create.orange_sail": "Oranssi purje", "block.create.ochrum": "Ochrumi",
"block.create.orange_seat": "Oranssi istuin", "block.create.ochrum_pillar": "Ochrumi pilari",
"block.create.orange_toolbox": "Oranssi työkalupakki", "block.create.orange_sail": "Oranssi purje",
"block.create.orange_valve_handle": "Oranssi venttiilikahva", "block.create.orange_seat": "Oranssi istuin",
"block.create.ornate_iron_window": "Koristeinen rauta ikkuna", "block.create.orange_toolbox": "Oranssi työkalupakki",
"block.create.ornate_iron_window_pane": "Koristeinen rauta ikkunapaneeli", "block.create.orange_valve_handle": "Oranssi venttiilikahva",
"block.create.oxidized_copper_shingle_slab": "Hapettunut kuparipärelaatta", "block.create.ornate_iron_window": "Koristeinen rauta ikkuna",
"block.create.oxidized_copper_shingle_stairs": "Hapettuneet kuparipäreportaat", "block.create.ornate_iron_window_pane": "Koristeinen rauta ikkunapaneeli",
"block.create.oxidized_copper_shingles": "Hapettuneet kuparipäreet", "block.create.oxidized_copper_shingle_slab": "Hapettunut kuparipärelaatta",
"block.create.oxidized_copper_tile_slab": "Hapettunut kuparitiililaatta", "block.create.oxidized_copper_shingle_stairs": "Hapettuneet kuparipäreportaat",
"block.create.oxidized_copper_tile_stairs": "Hapettuneet kuparitiiliportaat", "block.create.oxidized_copper_shingles": "Hapettuneet kuparipäreet",
"block.create.oxidized_copper_tiles": "Hapettuneet kuparitiilit", "block.create.oxidized_copper_tile_slab": "Hapettunut kuparitiililaatta",
"block.create.peculiar_bell": "Kummallinen kello", "block.create.oxidized_copper_tile_stairs": "Hapettuneet kuparitiiliportaat",
"block.create.pink_nixie_tube": "Vaaleanpunainen nixie-putki", "block.create.oxidized_copper_tiles": "Hapettuneet kuparitiilit",
"block.create.pink_sail": "Vaaleanpunainen purje", "block.create.peculiar_bell": "Kummallinen kello",
"block.create.pink_seat": "Vaaleanpunainen istuin", "block.create.pink_nixie_tube": "Vaaleanpunainen nixie-putki",
"block.create.pink_toolbox": "Vaaleanpunainen työkalulaatikko", "block.create.pink_sail": "Vaaleanpunainen purje",
"block.create.pink_valve_handle": "Vaaleanpunainen venttiilikahva", "block.create.pink_seat": "Vaaleanpunainen istuin",
"block.create.piston_extension_pole": "Männän pidennys paalu", "block.create.pink_toolbox": "Vaaleanpunainen työkalulaatikko",
"block.create.placard": "Plakaatti", "block.create.pink_valve_handle": "Vaaleanpunainen venttiilikahva",
"block.create.polished_cut_andesite": "Kiillotettu leikattu andesiitti", "block.create.piston_extension_pole": "Männän pidennystanko",
"block.create.polished_cut_andesite_slab": "Kiillotettu leikattu andesiittilaatta", "block.create.placard": "Esinejuliste",
"block.create.polished_cut_andesite_stairs": "Kiilotetut leikatut andesiittiportaat", "block.create.polished_cut_andesite": "Kiillotettu leikattu andesiitti",
"block.create.polished_cut_andesite_wall": "Kiilotettu leikattu andesiittisimuuri", "block.create.polished_cut_andesite_slab": "Kiillotettu leikattu andesiittilaatta",
"block.create.polished_cut_asurine": "Kiillotettu leikattu asuriini", "block.create.polished_cut_andesite_stairs": "Kiillotetut leikatut andesiittiportaat",
"block.create.polished_cut_asurine_slab": "Kiillotettu leikattu asuriinilaatta", "block.create.polished_cut_andesite_wall": "Kiillotettu leikattu andesiittisimuuri",
"block.create.polished_cut_asurine_stairs": "Kiillotetut leikatut asuriiniportaat", "block.create.polished_cut_asurine": "Kiillotettu leikattu asuriini",
"block.create.polished_cut_asurine_wall": "Kiillotettu leikattu asuriinimuuri", "block.create.polished_cut_asurine_slab": "Kiillotettu leikattu asuriinilaatta",
"block.create.polished_cut_calcite": "Kiillotettu leikattu kalsiitti", "block.create.polished_cut_asurine_stairs": "Kiillotetut leikatut asuriiniportaat",
"block.create.polished_cut_calcite_slab": "Kiillotettu leikattu kalsiittilaatta", "block.create.polished_cut_asurine_wall": "Kiillotettu leikattu asuriinimuuri",
"block.create.polished_cut_calcite_stairs": "Kiillotetut leikatut kalsiittiportaat", "block.create.polished_cut_calcite": "Kiillotettu leikattu kalsiitti",
"block.create.polished_cut_calcite_wall": "Kiillotettu leikattu kalsiittimuuri", "block.create.polished_cut_calcite_slab": "Kiillotettu leikattu kalsiittilaatta",
"block.create.polished_cut_crimsite": "Kiillotettu leikattu crimsiitti", "block.create.polished_cut_calcite_stairs": "Kiillotetut leikatut kalsiittiportaat",
"block.create.polished_cut_crimsite_slab": "Kiillotettu leikattu crimsiittilaatta", "block.create.polished_cut_calcite_wall": "Kiillotettu leikattu kalsiittimuuri",
"block.create.polished_cut_crimsite_stairs": "Kiillotetut leikatut crimsiittiportaat", "block.create.polished_cut_crimsite": "Kiillotettu leikattu crimsiitti",
"block.create.polished_cut_crimsite_wall": "Kiillotettu leikattu crimsiittimuuri", "block.create.polished_cut_crimsite_slab": "Kiillotettu leikattu crimsiittilaatta",
"block.create.polished_cut_deepslate": "Kiillotettu leikattu pohjaliuskekivi", "block.create.polished_cut_crimsite_stairs": "Kiillotetut leikatut crimsiittiportaat",
"block.create.polished_cut_deepslate_slab": "Kiillotettu leikattu pohjaliuskekivilaata", "block.create.polished_cut_crimsite_wall": "Kiillotettu leikattu crimsiittimuuri",
"block.create.polished_cut_deepslate_stairs": "Kiillotetut leikatut pohjaliuskekiviportaat", "block.create.polished_cut_deepslate": "Kiillotettu leikattu pohjaliuskekivi",
"block.create.polished_cut_deepslate_wall": "Kiillotettu leikattu pohjaliuskekivimuuri", "block.create.polished_cut_deepslate_slab": "Kiillotettu leikattu pohjaliuskekivilaatta",
"block.create.polished_cut_diorite": "Kiilotettu leikattu dioriitti", "block.create.polished_cut_deepslate_stairs": "Kiillotetut leikatut pohjaliuskekiviportaat",
"block.create.polished_cut_diorite_slab": "Kiillotettu leikattu dioriittilaatta", "block.create.polished_cut_deepslate_wall": "Kiillotettu leikattu pohjaliuskekivimuuri",
"block.create.polished_cut_diorite_stairs": "Kiillotetut leikatut dioriittiportaat", "block.create.polished_cut_diorite": "Kiillotettu leikattu dioriitti",
"block.create.polished_cut_diorite_wall": "Kiillotettu leikattu dioriittimuuri", "block.create.polished_cut_diorite_slab": "Kiillotettu leikattu dioriittilaatta",
"block.create.polished_cut_dripstone": "Kiillotettu leikattu tippukivikuutio", "block.create.polished_cut_diorite_stairs": "Kiillotetut leikatut dioriittiportaat",
"block.create.polished_cut_dripstone_slab": "Kiillotettu leikattu tippukivilaatta", "block.create.polished_cut_diorite_wall": "Kiillotettu leikattu dioriittimuuri",
"block.create.polished_cut_dripstone_stairs": "Kiillotetut leikatut tippukiviportaat", "block.create.polished_cut_dripstone": "Kiillotettu leikattu tippukivikuutio",
"block.create.polished_cut_dripstone_wall": "Kiillotettu leikattu tippukivimuuri", "block.create.polished_cut_dripstone_slab": "Kiillotettu leikattu tippukivilaatta",
"block.create.polished_cut_granite": "Kiillotettu leikattu graniitti", "block.create.polished_cut_dripstone_stairs": "Kiillotetut leikatut tippukiviportaat",
"block.create.polished_cut_granite_slab": "Kiillotettu leikattu graniittilaatta", "block.create.polished_cut_dripstone_wall": "Kiillotettu leikattu tippukivimuuri",
"block.create.polished_cut_granite_stairs": "Kiillotetut leikatut graniittiportaat", "block.create.polished_cut_granite": "Kiillotettu leikattu graniitti",
"block.create.polished_cut_granite_wall": "Kiillotettu leikattu graniittimuuri", "block.create.polished_cut_granite_slab": "Kiillotettu leikattu graniittilaatta",
"block.create.polished_cut_limestone": "Kiillotettu leikattu kalkkikivi", "block.create.polished_cut_granite_stairs": "Kiillotetut leikatut graniittiportaat",
"block.create.polished_cut_limestone_slab": "Kiillotettu leikattu kalkkikivilaatta", "block.create.polished_cut_granite_wall": "Kiillotettu leikattu graniittimuuri",
"block.create.polished_cut_limestone_stairs": "Kiillotetut leikatut kalkkikiviportaat", "block.create.polished_cut_limestone": "Kiillotettu leikattu kalkkikivi",
"block.create.polished_cut_limestone_wall": "Kiillotettu leikattu kalkkikivimuuri", "block.create.polished_cut_limestone_slab": "Kiillotettu leikattu kalkkikivilaatta",
"block.create.polished_cut_ochrum": "Kiillotettu leikattu ochrumi", "block.create.polished_cut_limestone_stairs": "Kiillotetut leikatut kalkkikiviportaat",
"block.create.polished_cut_ochrum_slab": "Kiillotettu leikattu ochrumilaatta", "block.create.polished_cut_limestone_wall": "Kiillotettu leikattu kalkkikivimuuri",
"block.create.polished_cut_ochrum_stairs": "Kiillotetut leikatut ochrumiportaat", "block.create.polished_cut_ochrum": "Kiillotettu leikattu okrumi",
"block.create.polished_cut_ochrum_wall": "Kiillotettu leikattu ochrumimuuri", "block.create.polished_cut_ochrum_slab": "Kiillotettu leikattu okrumilaatta",
"block.create.purple_nixie_tube": "Violetti nixie-putki", "block.create.polished_cut_ochrum_stairs": "Kiillotetut leikatut okrumiportaat",
"block.create.red_nixie_tube": "Punainen nixie-putki", "block.create.polished_cut_ochrum_wall": "Kiillotettu leikattu okrumimuuri",
"block.create.redstone_link": "Punakivilähetin", "block.create.polished_cut_scorchia": "Kiillotettu leikattu scorchia",
"block.create.secondary_linear_chassis": "Toissijainen lineaarinen runko", "block.create.polished_cut_scorchia_slab": "Kiillotettu leikattu scorchialaatta",
"block.create.sequenced_gearshift": "Peräkkäinen suunnanvaihtaja", "block.create.polished_cut_scorchia_stairs": "Kiillotetut leikatut scorchiaportaat",
"block.create.shadow_steel_casing": "Pimeyksien kotelo", "block.create.polished_cut_scorchia_wall": "Kiillotettu leikattu scorchiamuuri",
"block.create.shaft": "Akseli", "block.create.portable_fluid_interface": "Siirrettävä nesteliitäntä",
"block.create.smart_chute": "Älykouru", "block.create.portable_storage_interface": "Siirrettävä varastoliitäntä",
"block.create.smart_fluid_pipe": "Älynesteputki", "block.create.purple_nixie_tube": "Violetti nixie-putki",
"block.create.speedometer": "Nopeudentulkitsija", "block.create.purple_sail": "Violetti Purje",
"block.create.spout": "Nokka", "block.create.purple_seat": "Violetti Istuin",
"block.create.spruce_window": "Kuusi ikkuna", "block.create.purple_toolbox": "Violetti Työkalupakki",
"block.create.spruce_window_pane": "Kuusi ikkunapaneeli", "block.create.purple_valve_handle": "Violetti venttiilikahva",
"block.create.steam_engine": "Höyrymoottori", "block.create.red_nixie_tube": "Punainen nixie-putki",
"block.create.steam_whistle": "Höyrypilli", "block.create.red_sail": "Punainen Purje",
"block.create.steam_whistle_extension": "Höyrypillipidennys", "block.create.red_seat": "Punainen Istuin",
"block.create.sticker": "Tarra", "block.create.red_toolbox": "Punainen Työkalupakki",
"block.create.sticky_mechanical_piston": "Tarrtumamekaaninen Mäntä", "block.create.red_valve_handle": "Punainen venttiilikahva",
"block.create.stressometer": "Stressimittari", "block.create.redstone_contact": "Punakivikontakti",
"block.create.water_wheel": "Vesipyörä", "block.create.redstone_link": "Punakivilähetin",
"block.create.water_wheel_structure": "Suuri vesipyörä", "block.create.rope": "Köysi",
"block.create.white_nixie_tube": "Valkoinen nixie-putki", "block.create.rope_pulley": "Talja",
"block.create.yellow_nixie_tube": "Keltainen nixie-putki", "block.create.rose_quartz_lamp": "Ruusukvartsi Lamppu",
"item.create.andesite_alloy": "Andesiittimetalliseos", "block.create.rose_quartz_tiles": "Ruusukvartsi Laatat",
"item.create.brass_ingot": "Messinkiharkko", "block.create.rotation_speed_controller": "Kiertonopeuden säädin",
"item.create.brass_nugget": "Messinkikimpale", "block.create.sail_frame": "Tuulimyllyn Purjekehys",
"item.create.linked_controller": "Kauko-ohjain" "block.create.schematic_table": "Piirustuspöytä",
"block.create.secondary_linear_chassis": "Toissijainen lineaarinen runko",
"block.create.sequenced_gearshift": "Peräkkäinen suunnanvaihtaja",
"block.create.shadow_steel_casing": "Pimeyksien kotelo",
"block.create.shaft": "Akseli",
"block.create.small_diorite_brick_stairs": "Pienet dioriittitiiliportaat",
"block.create.small_diorite_brick_wall": "Pieni dioriittitiilimuuri",
"block.create.small_diorite_bricks": "Pienet Dioriittitiilet",
"block.create.small_dripstone_brick_slab": "Pieni tippukivitiililaatta",
"block.create.small_scorchia_bricks": "Pienet tuhkakivitiilet",
"block.create.smart_chute": "Älykouru",
"block.create.smart_fluid_pipe": "Älynesteputki",
"block.create.speedometer": "Nopeudentulkitsija",
"block.create.spout": "Nokka",
"block.create.spruce_window": "Kuusi ikkuna",
"block.create.spruce_window_pane": "Kuusi ikkunapaneeli",
"block.create.steam_engine": "Höyrymoottori",
"block.create.steam_whistle": "Höyrypilli",
"block.create.steam_whistle_extension": "Höyrypillipidennys",
"block.create.sticker": "Tarra",
"block.create.sticky_mechanical_piston": "Tarrtumamekaaninen Mäntä",
"block.create.stressometer": "Stressimittari",
"block.create.train_door": "Junaovi",
"block.create.train_trapdoor": "Junaluukku",
"block.create.veridium": "Viherkivi",
"block.create.water_wheel": "Vesipyörä",
"block.create.water_wheel_structure": "Suuri vesipyörä",
"block.create.white_nixie_tube": "Valkoinen nixie-putki",
"block.create.yellow_nixie_tube": "Keltainen nixie-putki",
"create.display_source.observed_train_name": "Havaitun junan nimi",
"create.display_source.train_status": "Juna-aikataulun tila",
"create.hint.derailed_train.title": "Juna pois kiskoilta",
"create.subtitle.whistle_train_manual": "Juna soittaa pilliä",
"create.subtitle.whistle_train_manual_low": "Juna soittaa pilliä",
"create.train.cannot_relocate_moving": "Liikkuvaa junaa ei voi siirtää",
"create.train.relocate.invalid": "Junaa ei voi siirtää tähän",
"create.train.relocate.too_far": "Junaa ei voi siirtää näin kauas",
"create.train.status": "<i>Tietoa junasta:%1$s",
"create.train.status.back_on_track": "Juna on palannut kiskoille",
"create.train.status.collision": "Törmäys toisen junan kanssa",
"create.train.status.track_missing": "Kiskot puuttuvat",
"create.train.unnamed": "Nimetön juna",
"create.train_assembly.sideways_controls": "Junaohjaimet eivät voi olla sivusuunnassa",
"entity.create.super_glue": "Pikaliima",
"item.create.andesite_alloy": "Andesiittimetalliseos",
"item.create.brass_ingot": "Messinkiharkko",
"item.create.brass_nugget": "Messinkikimpale",
"item.create.brass_sheet": "Messinkilevy",
"item.create.copper_sheet": "Kuparilevy",
"item.create.golden_sheet": "Kultalevy",
"item.create.iron_sheet": "Rautalevy",
"item.create.linked_controller": "Kauko-ohjain",
"item.create.sturdy_sheet": "Lujalevy",
"item.create.super_glue": "Pikaliima",
"item.create.unprocessed_obsidian_sheet": "Käsittelemätön obsidiaanilevy"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,67 +1,66 @@
{ {
"_": "Takk fyrir að þýða Create!", "advancement.create.cuckoo_clock": "Nú þegar?",
"block.create.belt": "Færiband", "advancement.create.rose_quartz": "Bleikir demantar",
"block.create.brass_block": "Látúnkubbur", "advancement.create.rose_quartz.desc": "Pússaðu klumpur af rósakvars",
"block.create.chocolate": "Súkkulaði", "advancement.create.train.desc": "Settu saman fyrstu lestina þína",
"block.create.cogwheel": "Tannhjól", "block.create.belt": "Færiband",
"block.create.crimsite": "Krímsít", "block.create.brass_block": "Látúnkubbur",
"block.create.cuckoo_clock": "Gauksklukka", "block.create.chocolate": "Súkkulaði",
"block.create.flywheel": "Svinghjól", "block.create.cogwheel": "Tannhjól",
"block.create.honey": "Hunang", "block.create.crimsite": "Krímsít",
"block.create.large_cogwheel": "Stórt tannhjól", "block.create.cuckoo_clock": "Gauksklukka",
"block.create.limestone": "Kalksteinn", "block.create.cuckoo_clock.tooltip": "GAUKSKLUKKA",
"block.create.millstone": "Kvarnarsteinn", "block.create.flywheel": "Svinghjól",
"block.create.mysterious_cuckoo_clock": "Gauksklukka", "block.create.flywheel.tooltip": "SVINGHJÓL",
"block.create.ochrum": "Okkrum", "block.create.honey": "Hunang",
"block.create.placard": "Plakat", "block.create.large_cogwheel": "Stórt tannhjól",
"block.create.raw_zinc_block": "Kubbur af hrásinki", "block.create.limestone": "Kalksteinn",
"block.create.rope": "Reipi", "block.create.millstone": "Kvarnarsteinn",
"block.create.rose_quartz_block": "Rósakvarskubbur", "block.create.mysterious_cuckoo_clock": "Gauksklukka",
"block.create.rose_quartz_lamp": "Rósakvarslampi", "block.create.ochrum": "Okkrum",
"block.create.rose_quartz_tiles": "Rósakvarsflísar", "block.create.placard": "Plakat",
"block.create.scorchia": "Öskusteinn", "block.create.raw_zinc_block": "Kubbur af hrásinki",
"block.create.scoria": "Brennsteinn", "block.create.rope": "Reipi",
"block.create.shaft": "Ás", "block.create.rose_quartz_block": "Rósakvarskubbur",
"block.create.small_rose_quartz_tiles": "Rósakvarsmósaík", "block.create.rose_quartz_lamp": "Rósakvarslampi",
"block.create.speedometer": "Hraðamælir", "block.create.rose_quartz_tiles": "Rósakvarsflísar",
"block.create.stressometer": "Álagsmælir", "block.create.scorchia": "Öskusteinn",
"block.create.track": "Járnbrautarspor", "block.create.scoria": "Brennsteinn",
"block.create.track_station": "Lestarstöð", "block.create.shaft": "Ás",
"block.create.train_door": "Lestarhurð", "block.create.small_rose_quartz_tiles": "Rósakvarsmósaík",
"block.create.train_trapdoor": "Lestarhleri", "block.create.speedometer": "Hraðamælir",
"block.create.veridium": "Verídíum", "block.create.stressometer": "Álagsmælir",
"block.create.water_wheel": "Vatnshjól", "block.create.track": "Járnbrautarspor",
"block.create.zinc_block": "Sinkkubbur", "block.create.track_station": "Lestarstöð",
"block.create.zinc_ore": "Sinkgrýti", "block.create.train_door": "Lestarhurð",
"entity.create.contraption": "Tæki", "block.create.train_trapdoor": "Lestarhleri",
"item.create.bar_of_chocolate": "Súkkulaðiplata", "block.create.veridium": "Verídíum",
"item.create.brass_ingot": "Látúnshleifur", "block.create.water_wheel": "Vatnshjól",
"item.create.brass_nugget": "Látúnsmoli", "block.create.zinc_block": "Sinkkubbur",
"item.create.chocolate_bucket": "Súkkulaðifata", "block.create.zinc_ore": "Sinkgrýti",
"item.create.copper_nugget": "Koparmoli", "create.ponder.rose_quartz_lamp.header": "Rósakvarslampar",
"item.create.dough": "Deig", "create.ponder.rose_quartz_lamp.text_3": "Þegar mörgum lömpum er raðað í hóp...",
"item.create.electron_tube": "Rafeindarör", "create.ponder.rose_quartz_lamp.text_4": "...kveikir á lampa mun merkið beinast að honum og gera alla aðra óvirka",
"item.create.polished_rose_quartz": "Slípað rósakvars", "create.ponder.rose_quartz_lamp.text_6": "Einnig er hægt að kveikja eða slökkva á lampunum handvirkt með skiptilykil",
"item.create.powdered_obsidian": "Hrafntinnuduft", "create.ponder.train_controls.header": "Að stjórna lestum",
"item.create.raw_zinc": "Hrátt sink", "create.station.assemble_train": "Setja saman lest",
"item.create.rose_quartz": "Rósakvars", "create.station.create_train": "Búa til nýja lest",
"item.create.sand_paper": "Sandpappír", "create.train.status": "<i> Upplýsingar um lestina: %1$s",
"item.create.wrench": "Skiptilykill", "create.train.unnamed": "Nafnlaus lest",
"item.create.zinc_ingot": "Sinkhleifur", "entity.create.contraption": "Tæki",
"advancement.create.cuckoo_clock": "Nú þegar?", "item.create.bar_of_chocolate": "Súkkulaðiplata",
"advancement.create.rose_quartz": "Bleikir demantar", "item.create.brass_ingot": "Látúnshleifur",
"advancement.create.rose_quartz.desc": "Pússaðu klumpur af rósakvars", "item.create.brass_nugget": "Látúnsmoli",
"advancement.create.train.desc": "Settu saman fyrstu lestina þína", "item.create.chocolate_bucket": "Súkkulaðifata",
"create.station.create_train": "Búa til nýja lest", "item.create.copper_nugget": "Koparmoli",
"create.station.assemble_train": "Setja saman lest", "item.create.dough": "Deig",
"create.train.unnamed": "Nafnlaus lest", "item.create.electron_tube": "Rafeindarör",
"create.train.status": "<i> Upplýsingar um lestina: %1$s", "item.create.polished_rose_quartz": "Slípað rósakvars",
"item.create.wrench.tooltip": "SKIPTILYKILL", "item.create.powdered_obsidian": "Hrafntinnuduft",
"block.create.cuckoo_clock.tooltip": "GAUKSKLUKKA", "item.create.raw_zinc": "Hrátt sink",
"block.create.flywheel.tooltip": "SVINGHJÓL", "item.create.rose_quartz": "Rósakvars",
"create.ponder.rose_quartz_lamp.header": "Rósakvarslampar", "item.create.sand_paper": "Sandpappír",
"create.ponder.rose_quartz_lamp.text_3": "Þegar mörgum lömpum er raðað í hóp...", "item.create.wrench": "Skiptilykill",
"create.ponder.rose_quartz_lamp.text_4": "...kveikir á lampa mun merkið beinast að honum og gera alla aðra óvirka", "item.create.wrench.tooltip": "SKIPTILYKILL",
"create.ponder.rose_quartz_lamp.text_6": "Einnig er hægt að kveikja eða slökkva á lampunum handvirkt með skiptilykil", "item.create.zinc_ingot": "Sinkhleifur"
"create.ponder.train_controls.header": "Að stjórna lestum"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,115 +1,285 @@
{ {
"_": "謝諸位譯《創藝》!", "advancement.create.andesite_alloy": "堅石",
"block.create.acacia_window": "㭜窗", "advancement.create.andesite_alloy.desc": "得安山合金,造最要之資",
"block.create.acacia_window_pane": "㭜窗版", "advancement.create.andesite_casing": "安山之世",
"block.create.adjustable_chain_gearshift": "允更鏈速箱", "advancement.create.andesite_casing.desc": "合安山合金於剝木皮,為君機器創基殼",
"block.create.analog_lever": "細分閘刀", "advancement.create.backtank": "蓄勢待發",
"block.create.andesite_alloy_block": "鈉碤合金塊", "advancement.create.backtank.desc": "造銅背罐,加壓之",
"block.create.andesite_bars": "鈉碤檻", "advancement.create.belt": "海帶傳動",
"block.create.andesite_belt_funnel": "鈉碤滾帶漏斗", "advancement.create.belt_funnel_kiss": "比翼雙飛",
"block.create.andesite_casing": "鈉碤機殼", "advancement.create.brass_casing": "黃銅之世",
"block.create.andesite_door": "鈉碤門", "advancement.create.burner": "活爐",
"block.create.andesite_encased_cogwheel": "鈉碤齒輪箱", "advancement.create.cart_pickup": "壮硕臂者",
"block.create.andesite_encased_large_cogwheel": "鈉碤巨齒輪箱", "advancement.create.compacting": "緊縮",
"block.create.andesite_encased_shaft": "鈉碤杆箱", "advancement.create.compacting.desc": "以鍛壓機和盆縮材",
"block.create.andesite_funnel": "鈉碤漏斗", "advancement.create.contraption_actors": "奉命出行",
"block.create.andesite_ladder": "鈉碤梯", "advancement.create.copper": "更堅石",
"block.create.andesite_pillar": "鈉碤柱", "advancement.create.copper_casing": "銅之世",
"block.create.andesite_scaffolding": "鈉碤脚手架", "advancement.create.crafter_lazy_000": "鋌而走險",
"block.create.andesite_tunnel": "鈉碤隧道", "advancement.create.crusher_maxed_0000": "碾之",
"block.create.asurine": "皓鋅岩", "advancement.create.display_link": "大數據",
"block.create.asurine_pillar": "皓鋅岩柱", "advancement.create.drain": "細水慢流",
"block.create.basin": "盆", "advancement.create.ejector_maxed": "跳板冠軍",
"block.create.belt": "滾帶", "advancement.create.encased_fan": "生風",
"block.create.birch_window": "樺窗", "advancement.create.encased_fan.desc": "啟風機",
"block.create.birch_window_pane": "樺窗版", "advancement.create.fan_processing": "以粒處之",
"block.create.black_nixie_tube": "玄光管", "advancement.create.fan_processing.desc": "以風機加工材",
"block.create.black_sail": "玄帆", "advancement.create.funnel": "機場美學",
"block.create.black_seat": "玄席", "advancement.create.glass_pipe": "窺視波流",
"block.create.black_toolbox": "玄匠箱", "advancement.create.hose_pulley": "排放",
"block.create.black_valve_handle": "玄轉輪", "advancement.create.long_travel": "遠足",
"block.create.blaze_burner": "炎靈灶", "advancement.create.mechanical_arm": "手忙者",
"block.create.blue_nixie_tube": "藍光管", "advancement.create.mechanical_mixer": "混而合之",
"block.create.blue_sail": "藍帆", "advancement.create.mechanical_press": "铿!",
"block.create.blue_seat": "藍席", "advancement.create.mechanical_press.desc": "以鍛壓機鍛板金",
"block.create.blue_toolbox": "藍匠箱", "advancement.create.mechanical_pump_0": "施壓",
"block.create.blue_valve_handle": "藍轉輪", "advancement.create.millstone": "磨練",
"block.create.brass_bars": "黃銅檻", "advancement.create.potato_cannon": "噗~碰!",
"block.create.brass_belt_funnel": "黃銅滾帶漏斗", "advancement.create.pulley_maxed": "上天入地",
"block.create.brass_block": "黃銅塊", "advancement.create.root": "恭迎至創藝",
"block.create.brass_casing": "黃銅機殼", "advancement.create.root.desc": "是造機械之時也",
"block.create.brass_door": "黃銅門", "advancement.create.saw_processing": "車間中危機械也",
"block.create.brass_encased_cogwheel": "黃銅齒輪箱", "advancement.create.saw_processing.desc": "以立式機械鋸加工材",
"block.create.brass_encased_large_cogwheel": "黃銅巨齒輪箱", "advancement.create.shifting_gears": "換檔",
"block.create.brass_encased_shaft": "黃銅杆箱", "advancement.create.speed_controller": "工程师恶之",
"block.create.brass_funnel": "黃銅漏斗", "advancement.create.spout": "水花四濺",
"block.create.brass_ladder": "黃銅梯", "advancement.create.steam_engine": "強力",
"block.create.brass_scaffolding": "黃銅脚手架", "advancement.create.steam_engine_maxed": "蒸蒸日上",
"block.create.brass_tunnel": "黃銅隧道", "advancement.create.steam_whistle": "天籟之音",
"block.create.brown_nixie_tube": "褐光管", "advancement.create.stressometer": "多此一舉",
"block.create.brown_sail": "褐帆", "advancement.create.stressometer_maxed": "二力平衡",
"block.create.brown_seat": "褐席", "advancement.create.train": "上車",
"block.create.cogwheel": "齒輪", "advancement.create.train_whistle": "嗚!嗚!",
"block.create.cut_asurine_brick_slab": "割皓鋅岩磚版", "advancement.create.water_supply": "取自水窪",
"block.create.cut_asurine_brick_stairs": "割皓鋅岩磚階", "advancement.create.water_wheel": "水力學",
"block.create.cut_asurine_brick_wall": "割皓鋅岩磚垣", "advancement.create.windmill": "微風拂過",
"block.create.cut_asurine_bricks": "割皓鋅岩磚", "advancement.create.windmill_maxed": "強風",
"block.create.cut_asurine_slab": "割皓鋅岩版", "advancement.create.wrench_goggles": "工具齊全",
"block.create.cut_asurine_stairs": "割皓鋅岩階", "block.create.acacia_window": "㭜窗",
"block.create.cut_asurine_wall": "割皓鋅岩垣", "block.create.acacia_window_pane": "㭜窗版",
"block.create.cut_calcite": "割滑方石", "block.create.adjustable_chain_gearshift": "允更鏈速箱",
"block.create.cut_calcite_brick_slab": "割滑方石磚版", "block.create.analog_lever": "細分閘刀",
"block.create.cut_calcite_brick_stairs": "割滑方石磚階", "block.create.andesite_alloy_block": "鈉碤合金塊",
"block.create.cut_calcite_brick_wall": "割滑方石磚垣", "block.create.andesite_bars": "鈉碤檻",
"block.create.cut_calcite_bricks": "割滑方石磚", "block.create.andesite_belt_funnel": "鈉碤滾帶漏斗",
"block.create.cut_calcite_slab": "割滑方石版", "block.create.andesite_casing": "鈉碤機殼",
"block.create.cut_calcite_stairs": "割滑方石階", "block.create.andesite_door": "鈉碤門",
"block.create.cut_calcite_wall": "割滑方石垣", "block.create.andesite_encased_cogwheel": "鈉碤齒輪箱",
"block.create.cut_crimsite": "緋鉄岩", "block.create.andesite_encased_large_cogwheel": "鈉碤巨齒輪箱",
"block.create.cut_crimsite_brick_slab": "割緋鉄岩磚版", "block.create.andesite_encased_shaft": "鈉碤杆箱",
"block.create.cut_crimsite_brick_stairs": "割緋鉄岩磚階", "block.create.andesite_funnel": "鈉碤漏斗",
"block.create.cut_crimsite_brick_wall": "割緋鉄岩磚垣", "block.create.andesite_ladder": "鈉碤梯",
"block.create.cut_crimsite_bricks": "割緋鉄岩磚", "block.create.andesite_pillar": "鈉碤柱",
"block.create.cut_crimsite_slab": "割緋鉄岩版", "block.create.andesite_scaffolding": "鈉碤脚手架",
"block.create.cut_crimsite_stairs": "割緋鉄岩階", "block.create.andesite_tunnel": "鈉碤隧道",
"block.create.cut_crimsite_wall": "割緋鉄岩垣", "block.create.asurine": "皓鋅岩",
"block.create.cut_deepslate": "割板巖", "block.create.asurine_pillar": "皓鋅岩柱",
"block.create.cut_deepslate_brick_slab": "割板巖磚版", "block.create.basin": "盆",
"block.create.cut_deepslate_brick_stairs": "割板巖磚階", "block.create.belt": "滾帶",
"block.create.cut_deepslate_brick_wall": "割板巖磚垣", "block.create.birch_window": "樺窗",
"block.create.cut_deepslate_bricks": "割板巖磚", "block.create.birch_window_pane": "樺窗版",
"block.create.cut_deepslate_slab": "割板巖版", "block.create.black_nixie_tube": "玄光管",
"block.create.cut_deepslate_stairs": "割板巖階", "block.create.black_sail": "玄帆",
"block.create.cut_deepslate_wall": "割板巖垣", "block.create.black_seat": "玄席",
"block.create.cut_diorite": "割閃綠石", "block.create.black_toolbox": "玄匠箱",
"block.create.cut_diorite_brick_slab": "割閃綠石磚版", "block.create.black_valve_handle": "玄轉輪",
"block.create.cut_diorite_brick_stairs": "割閃綠石磚階", "block.create.blaze_burner": "炎靈灶",
"block.create.cut_diorite_brick_wall": "割閃綠石磚垣", "block.create.blue_nixie_tube": "藍光管",
"block.create.cut_diorite_bricks": "割閃綠石磚", "block.create.blue_sail": "藍帆",
"block.create.cut_diorite_slab": "割閃綠石版", "block.create.blue_seat": "藍席",
"block.create.cut_diorite_stairs": "割閃綠石階", "block.create.blue_toolbox": "藍匠箱",
"block.create.cut_diorite_wall": "割閃綠石垣", "block.create.blue_valve_handle": "藍轉輪",
"block.create.cut_dripstone": "割鐘乳石", "block.create.brass_bars": "黃銅檻",
"block.create.cut_dripstone_brick_slab": "割鐘乳石磚版", "block.create.brass_belt_funnel": "黃銅滾帶漏斗",
"block.create.cut_dripstone_brick_stairs": "割鐘乳石磚階", "block.create.brass_block": "黃銅塊",
"block.create.cut_dripstone_brick_wall": "割鐘乳石磚垣", "block.create.brass_casing": "黃銅機殼",
"block.create.cut_dripstone_bricks": "割鐘乳石磚", "block.create.brass_door": "黃銅門",
"block.create.cut_dripstone_slab": "割鐘乳石版", "block.create.brass_encased_cogwheel": "黃銅齒輪箱",
"block.create.cut_dripstone_stairs": "割鐘乳石階", "block.create.brass_encased_large_cogwheel": "黃銅巨齒輪箱",
"block.create.cut_dripstone_wall": "割鐘乳石垣", "block.create.brass_encased_shaft": "黃銅杆箱",
"block.create.cut_granite": "割花崗巖", "block.create.brass_funnel": "黃銅漏斗",
"block.create.cut_granite_brick_slab": "割花崗巖磚版", "block.create.brass_ladder": "黃銅梯",
"block.create.cut_granite_brick_stairs": "割花崗巖磚階", "block.create.brass_scaffolding": "黃銅脚手架",
"advancement.create.root": "恭迎至創藝", "block.create.brass_tunnel": "黃銅隧道",
"itemGroup.create.base": "創藝", "block.create.brown_nixie_tube": "褐光管",
"create.menu.ponder_index": "格物索引", "block.create.brown_sail": "褐帆",
"create.ponder.hold_to_ponder": "押 [%1$s] 以格物", "block.create.brown_seat": "褐席",
"create.ponder.pondering": "格物……", "block.create.brown_toolbox": "褐械具箧",
"create.ponder.identify_mode": "塊名已示\n押 [%1$s] 以继之", "block.create.brown_valve_handle": "褐轉輪",
"create.ponder.close": "畢", "block.create.calcite_pillar": "方解石柱",
"create.ponder.identify": "示塊名", "block.create.cart_assembler": "礦車裝配站",
"create.ponder.next_up": "次:", "block.create.chocolate": "巧克力",
"create.ponder.think_back": "三思", "block.create.chute": "滑槽",
"create.ponder.welcome": "恭迎至格物界面", "block.create.clipboard": "記錄板",
"create.ponder.index_title": "格物索引" "block.create.clockwork_bearing": "鐘軸",
"block.create.clutch": "離合器",
"block.create.cogwheel": "齒輪",
"block.create.content_observer": "聰穎偵測器",
"block.create.contraption_controls": "理械台",
"block.create.controller_rail": "可控軌道",
"block.create.controls": "駕𤉖台",
"block.create.copper_backtank": "銅製背罐",
"block.create.copper_bars": "銅柵欄",
"block.create.copper_casing": "銅裝置殼",
"block.create.copper_door": "銅質門",
"block.create.copper_ladder": "銅質梯",
"block.create.copper_scaffolding": "銅鷹架",
"block.create.copper_shingle_slab": "銅質除",
"block.create.copper_shingle_stairs": "銅質阶梯",
"block.create.creative_motor": "創造馬達",
"block.create.crushing_wheel": "粉碎輪",
"block.create.crushing_wheel_controller": "粉碎輪之樞",
"block.create.cuckoo_clock": "布穀鳥鐘",
"block.create.cut_asurine_brick_slab": "割皓鋅岩磚版",
"block.create.cut_asurine_brick_stairs": "割皓鋅岩磚階",
"block.create.cut_asurine_brick_wall": "割皓鋅岩磚垣",
"block.create.cut_asurine_bricks": "割皓鋅岩磚",
"block.create.cut_asurine_slab": "割皓鋅岩版",
"block.create.cut_asurine_stairs": "割皓鋅岩階",
"block.create.cut_asurine_wall": "割皓鋅岩垣",
"block.create.cut_calcite": "割滑方石",
"block.create.cut_calcite_brick_slab": "割滑方石磚版",
"block.create.cut_calcite_brick_stairs": "割滑方石磚階",
"block.create.cut_calcite_brick_wall": "割滑方石磚垣",
"block.create.cut_calcite_bricks": "割滑方石磚",
"block.create.cut_calcite_slab": "割滑方石版",
"block.create.cut_calcite_stairs": "割滑方石階",
"block.create.cut_calcite_wall": "割滑方石垣",
"block.create.cut_crimsite": "緋鉄岩",
"block.create.cut_crimsite_brick_slab": "割緋鉄岩磚版",
"block.create.cut_crimsite_brick_stairs": "割緋鉄岩磚階",
"block.create.cut_crimsite_brick_wall": "割緋鉄岩磚垣",
"block.create.cut_crimsite_bricks": "割緋鉄岩磚",
"block.create.cut_crimsite_slab": "割緋鉄岩版",
"block.create.cut_crimsite_stairs": "割緋鉄岩階",
"block.create.cut_crimsite_wall": "割緋鉄岩垣",
"block.create.cut_deepslate": "割板巖",
"block.create.cut_deepslate_brick_slab": "割板巖磚版",
"block.create.cut_deepslate_brick_stairs": "割板巖磚階",
"block.create.cut_deepslate_brick_wall": "割板巖磚垣",
"block.create.cut_deepslate_bricks": "割板巖磚",
"block.create.cut_deepslate_slab": "割板巖版",
"block.create.cut_deepslate_stairs": "割板巖階",
"block.create.cut_deepslate_wall": "割板巖垣",
"block.create.cut_diorite": "割閃綠石",
"block.create.cut_diorite_brick_slab": "割閃綠石磚版",
"block.create.cut_diorite_brick_stairs": "割閃綠石磚階",
"block.create.cut_diorite_brick_wall": "割閃綠石磚垣",
"block.create.cut_diorite_bricks": "割閃綠石磚",
"block.create.cut_diorite_slab": "割閃綠石版",
"block.create.cut_diorite_stairs": "割閃綠石階",
"block.create.cut_diorite_wall": "割閃綠石垣",
"block.create.cut_dripstone": "割鐘乳石",
"block.create.cut_dripstone_brick_slab": "割鐘乳石磚版",
"block.create.cut_dripstone_brick_stairs": "割鐘乳石磚階",
"block.create.cut_dripstone_brick_wall": "割鐘乳石磚垣",
"block.create.cut_dripstone_bricks": "割鐘乳石磚",
"block.create.cut_dripstone_slab": "割鐘乳石版",
"block.create.cut_dripstone_stairs": "割鐘乳石階",
"block.create.cut_dripstone_wall": "割鐘乳石垣",
"block.create.cut_granite": "割花崗巖",
"block.create.cut_granite_brick_slab": "割花崗巖磚版",
"block.create.cut_granite_brick_stairs": "割花崗巖磚階",
"block.create.deployer": "機械手",
"block.create.depot": "置物臺",
"block.create.elevator_contact": "呼轎廂器",
"block.create.elevator_pulley": "梯廂滑輪",
"block.create.encased_fan": "風機",
"block.create.flywheel": "飛輪",
"block.create.hand_crank": "手搖把手",
"block.create.haunted_bell": "靈魂鐘",
"block.create.honey": "蜜",
"block.create.hose_pulley": "軟管滑輪",
"block.create.large_cogwheel": "大齒輪",
"block.create.large_water_wheel": "大水車",
"block.create.mechanical_saw": "機械鋸",
"block.create.millstone": "石磨",
"block.create.mysterious_cuckoo_clock": "布穀鳥鐘",
"block.create.powered_latch": "閂鎖器",
"block.create.rope_pulley": "繩索滑輪",
"block.create.scoria": "熔渣",
"block.create.shaft": "傳動杆",
"block.create.smart_chute": "智慧式滑槽",
"block.create.water_wheel": "水車",
"block.create.water_wheel_structure": "大水車",
"create.contraption.door_control": "此處廂門控制",
"create.menu.ponder_index": "格物索引",
"create.ponder.categories": "創藝之屬",
"create.ponder.close": "畢",
"create.ponder.cog_speedup.header": "變速以齒",
"create.ponder.cog_speedup.text_1": "齒輪相接,可改其速",
"create.ponder.cog_speedup.text_2": "以齒輪繼大齒輪之旋,其速倍之",
"create.ponder.cog_speedup.text_3": "以大齒輪繼齒輪之旋,其速半之",
"create.ponder.cogwheel.header": "以齒繼力",
"create.ponder.cogwheel.text_1": "齒輪相接,齒牙交互者可傳其力",
"create.ponder.cogwheel.text_2": "以此道相連之齒輪,其向相左",
"create.ponder.cogwheel_casing.header": "套殼齒輪",
"create.ponder.cogwheel_casing.text_1": "齒輪可以黃銅機殼及鈉碤機殼飾之",
"create.ponder.cogwheel_casing.text_2": "有殼飾者莫能連于杆",
"create.ponder.cogwheel_casing.text_3": "可以扳手加以調之",
"create.ponder.creative_motor_mojang.header": "Mojang之秘術",
"create.ponder.hold_to_ponder": "押 [%1$s] 以格物",
"create.ponder.hose_pulley.header": "使軟管滑輪摧取或排放流體",
"create.ponder.hose_pulley.text_1": "以軟管滑輪行流體摧取或充溢之事于開闊之地,其便利哉",
"create.ponder.hose_pulley.text_2": "得以引動力,以調軟管之末之高低",
"create.ponder.hose_pulley.text_3": "返轉其力之向,使以收而待之",
"create.ponder.hose_pulley.text_4": "其側相对者,管道得通也",
"create.ponder.identify": "示塊名",
"create.ponder.identify_mode": "塊名已示\n押 [%1$s] 以继之",
"create.ponder.index_title": "格物索引",
"create.ponder.large_water_wheel.header": "以大水車供旋轉力",
"create.ponder.large_water_wheel.text_1": "大水車隨流水之勢而轉,力之源也",
"create.ponder.large_water_wheel.text_3": "其速恰族車之半……",
"create.ponder.large_water_wheel.text_5": "執木材擊之,其化為同貌",
"create.ponder.next": "下一回",
"create.ponder.next_up": "次:",
"create.ponder.pondering": "格物……",
"create.ponder.previous": "上一回",
"create.ponder.subject": "此回之要",
"create.ponder.think_back": "迴想",
"create.ponder.water_wheel.header": "假大水車之力",
"create.ponder.welcome": "恭迎至格物界面",
"create.recipe.assembly.cutting": "以鋸切之",
"create.recipe.assembly.deploying_item": "以%1$s加之",
"create.recipe.automatic_brewing": "釀",
"create.recipe.automatic_packing": "壓縮",
"create.recipe.automatic_shaped": "自製",
"create.recipe.automatic_shapeless": "攪拌",
"create.recipe.block_cutting": "割方",
"create.recipe.crushing": "碾",
"create.recipe.deploying": "用",
"create.recipe.draining": "分液",
"create.recipe.fan_blasting": "煉",
"create.recipe.fan_blasting.fan": "風機置于熔巖后",
"create.recipe.fan_haunting": "覆魂",
"create.recipe.fan_smoking": "熏",
"create.recipe.fan_smoking.fan": "風機置于焰后",
"create.recipe.fan_washing": "滌",
"create.recipe.fan_washing.fan": "風機置于水后",
"create.recipe.mechanical_crafting": "製造",
"create.recipe.milling": "磨",
"create.recipe.mixing": "攪和",
"create.recipe.mystery_conversion": "幻化",
"create.recipe.packing": "壓塑",
"create.recipe.pressing": "壓",
"create.recipe.sandpaper_polishing": "打磨",
"create.recipe.sawing": "切",
"create.recipe.spout_filling": "注液",
"create.recipe.wood_cutting": "切木",
"create.schedule.condition.threshold.x_units_of_item": "%1$s%2$s %3$s",
"create.schedule.condition.time_of_day.digital_format": "%1$s:%3$s %4$s",
"create.schedule.condition.time_of_day.rotation.every_24": "每日",
"create.tooltip.capacityProvided.high": "大",
"create.tooltip.capacityProvided.low": "小",
"create.tooltip.capacityProvided.medium": "中",
"item.create.andesite_alloy": "安山合金",
"item.create.honeyed_apple": "蜜漬林檎",
"item.create.wand_of_symmetry": "對稱杖",
"item.create.wheat_flour": "麵粉",
"item.create.whisk": "攪拌器",
"item.create.wrench": "扳手",
"item.create.zinc_ingot": "鋅錠",
"item.create.zinc_nugget": "鋅粒",
"itemGroup.create.base": "創藝",
"itemGroup.create.palettes": "營造之方屬創藝"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more