mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-15 13:33:44 +01:00
Merge remote-tracking branch 'origin/mc1.16/dev' into mc1.16/chromatic-projector
# Conflicts: # src/main/java/com/simibubi/create/AllContainerTypes.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java
This commit is contained in:
commit
59dd21b85a
154 changed files with 6751 additions and 3343 deletions
|
@ -130,8 +130,8 @@ dependencies {
|
|||
// i'll leave this here commented for easier testing
|
||||
//runtimeOnly fg.deobf("vazkii.arl:AutoRegLib:1.4-35.69")
|
||||
//runtimeOnly fg.deobf("vazkii.quark:Quark:r2.0-212.984")
|
||||
// runtimeOnly fg.deobf("slimeknights.mantle:Mantle:1.16.3-1.6.40")
|
||||
// runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.3-3.0.1.24")
|
||||
//runtimeOnly fg.deobf("slimeknights.mantle:Mantle:1.16.5-1.6.103")
|
||||
//runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.0.3.168")
|
||||
|
||||
annotationProcessor 'org.spongepowered:mixin:0.8:processor'
|
||||
}
|
||||
|
|
|
@ -407,21 +407,21 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
|
|||
6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json
|
||||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
|
||||
a6d814f94926d88764c38862cc4ece9c367e023b assets/create/lang/en_ud.json
|
||||
d1838140c8383ee4537db90eb8f657d0c268fe91 assets/create/lang/en_us.json
|
||||
4fcda300efe5a2ad8695b5ae3f24a54ea109a954 assets/create/lang/unfinished/de_de.json
|
||||
6a1dde57b2224d4b0287ebc705d6a75d329b5e1f assets/create/lang/unfinished/es_es.json
|
||||
93ee0e30a56b405a9e766d353c36276e36a84b5c assets/create/lang/unfinished/es_mx.json
|
||||
49a691320c73e09f921cd0ea97398126231e99fa assets/create/lang/unfinished/fr_fr.json
|
||||
cf14b3828b6c11013f606f277d88fb63245bb2a8 assets/create/lang/unfinished/it_it.json
|
||||
73c1c1489833cbcb28bb1ce90541c8c8bdf329c0 assets/create/lang/unfinished/ja_jp.json
|
||||
924303b9bcf56aedbbfc46108655f71324308e12 assets/create/lang/unfinished/ko_kr.json
|
||||
079aea6843e756efbfca0976983be1957863717c assets/create/lang/unfinished/nl_nl.json
|
||||
b7bab15167400ee48a9728f81446e572c494fd8d assets/create/lang/unfinished/pl_pl.json
|
||||
07e84cc3eee3faa1ab3d26e0c85c7f09c8573368 assets/create/lang/unfinished/pt_br.json
|
||||
6ffb0cf20d712aee23a42a9ec440dd7dc92293d6 assets/create/lang/unfinished/ru_ru.json
|
||||
0ae98a18e59f478da41d8c5d832737b65f6a8c8a assets/create/lang/unfinished/zh_cn.json
|
||||
4c96e5a76e72368a59190b7588d389fdd2cc75e1 assets/create/lang/unfinished/zh_tw.json
|
||||
e9c463e0cf56ed28ee26a33debeae3ecc2e941d2 assets/create/lang/en_ud.json
|
||||
dceb2a935135d2ef502cdcba7c9d58f64062513f assets/create/lang/en_us.json
|
||||
eb40acb99f3c7af50b840f3c2058d7a7bdd5cff7 assets/create/lang/unfinished/de_de.json
|
||||
bcbfd3a6768daf265a1c01a424e985a3fdec6504 assets/create/lang/unfinished/es_es.json
|
||||
50dec8a7eb983ac4d29f3eeba3273dbaeca26902 assets/create/lang/unfinished/es_mx.json
|
||||
cc723673107651024f3fc0e43690ac467ff729b2 assets/create/lang/unfinished/fr_fr.json
|
||||
99452bacb5d80715ea0a52106b7e2734a32c55d4 assets/create/lang/unfinished/it_it.json
|
||||
f3058ea623666a43029af307f632197c8ff8dcab assets/create/lang/unfinished/ja_jp.json
|
||||
d756b02573d6a3a3b73bd03ec69fe760825e1606 assets/create/lang/unfinished/ko_kr.json
|
||||
281712735ab6437a417dde63c855e18eb19493a0 assets/create/lang/unfinished/nl_nl.json
|
||||
24056aefb7ff79a2127c194fe2918ab9e745d6b5 assets/create/lang/unfinished/pl_pl.json
|
||||
0f9c83a9f70d809d8f66c0438529b169b92ffdb1 assets/create/lang/unfinished/pt_br.json
|
||||
ff35273842d3190aa361f2a8ca7edae80f97864d assets/create/lang/unfinished/ru_ru.json
|
||||
139a31cfd09d4aaca33d118d28de735ba72f4f0d assets/create/lang/unfinished/zh_cn.json
|
||||
19bfa8f57e8b395a2cfd98039f44301a61c1f73c assets/create/lang/unfinished/zh_tw.json
|
||||
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
|
||||
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
|
||||
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
|
||||
|
@ -1452,6 +1452,7 @@ ebdf23b99b7895e347c29057c8070a6e16e56beb assets/create/models/item/limestone_cob
|
|||
288da8b29a4e9d0d0b694567a61b5a816a2859b8 assets/create/models/item/limestone_cobblestone_wall.json
|
||||
8065de871ad2fbaed711735561b8ed91a2ce0004 assets/create/models/item/limestone_pillar.json
|
||||
d245aa4994ff197b1ffeb7980d05f96bd20cdeb3 assets/create/models/item/linear_chassis.json
|
||||
2866bff509b060cd3ee99b4eef25a4e1e4639703 assets/create/models/item/linked_controller.json
|
||||
d912be3e87f2beaa8e22747f867739139667241b assets/create/models/item/magenta_seat.json
|
||||
928c5e3747fb758d2610475258cc168b0d4ee7b6 assets/create/models/item/magenta_valve_handle.json
|
||||
932facf4bf93b471e8630f4132a4284a9f4d0d39 assets/create/models/item/mechanical_arm.json
|
||||
|
@ -1651,8 +1652,8 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
|
|||
866fbb0ce2878a73e0440d1caf6534c8bd7c384f assets/create/models/item/zinc_ingot.json
|
||||
a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json
|
||||
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
|
||||
096382a4c025b5ffdde9c496ee9da0d5345fbe17 assets/create/sounds.json
|
||||
5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
|
||||
6490fa0587db770cf7c794b47f3bcd2b691f4226 assets/create/sounds.json
|
||||
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
|
||||
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
|
||||
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
|
||||
83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json
|
||||
|
@ -1712,6 +1713,7 @@ c9c4060ed207226b69fada2d61e01a97d7077eae data/create/advancements/nixie_tube.jso
|
|||
4b621e5bb48fbb120853ec02c05c915d86bd6dd8 data/create/advancements/pipe_spill.json
|
||||
72025d8bf73ab8096c29f12d0c8d9a346f09cd64 data/create/advancements/polished_rose_quartz.json
|
||||
62d29ec01eff5d21968636a0479361ecdc11ae30 data/create/advancements/press.json
|
||||
f80479b50e248ee8d6d1abb7d08866cf711ac2b2 data/create/advancements/recipes/building_blocks/andesite.json
|
||||
5012e9d559439d0d62d0b34c2e39de048e8c7699 data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json
|
||||
2e253226c408dffb9dfb828b846f70ebd1cfb16e data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json
|
||||
3f022f89aeb5034f2292ca71daa9f311e8af40ff data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json
|
||||
|
@ -1738,6 +1740,8 @@ a61045a27757950d96fee77768bfd96f935f98b2 data/create/advancements/recipes/buildi
|
|||
a75f1162ac89cd50a1ca8e525dd059fb359a6550 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json
|
||||
230c3da350aa45524712d5dd28b84aa59b2883e9 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_thermal.json
|
||||
38410d4b3bbbf33c1c8913735abd1b3d71fb3829 data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json
|
||||
8850272a97541e331482531c52cc94197fe808be data/create/advancements/recipes/building_blocks/diorite.json
|
||||
0abb698cabe5f71675773e5eeadeccb509f1cb90 data/create/advancements/recipes/building_blocks/granite.json
|
||||
22067545c460d95831d9dddf361da9becac3396e data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json
|
||||
e525d8eda8d0aac6791ae935ed4f3f75cc521460 data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json
|
||||
295c5a61d6f175a65d25e19cbd7ca90d3b4a93b2 data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json
|
||||
|
@ -1975,7 +1979,7 @@ bfb3673a30db807aa298f2fd128ec863a65818af data/create/advancements/recipes/create
|
|||
47cc716674e1741f4115b04a20ac4c4a5b2a6d8a data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json
|
||||
bd79e63c29d68fbf87ded63ac1eedba3d7287996 data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall.json
|
||||
0ed4c084f05b2bd4c134293ad3554d6e31a1d568 data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json
|
||||
a453d05704cadb3279318192aac87e623738cdaa data/create/advancements/recipes/create.palettes/andesite_pillar.json
|
||||
cc8e078ccce06e9489d8b62d88b6a2e4d4ca2d79 data/create/advancements/recipes/create.palettes/andesite_pillar.json
|
||||
d6f31097aef040e12eb288ab755d459f55269a70 data/create/advancements/recipes/create.palettes/andesite_pillar_from_andesite_stonecutting.json
|
||||
f10a4369147cc5e36d3ab1b0008d29fd36ffc8f6 data/create/advancements/recipes/create.palettes/birch_window.json
|
||||
bfea45da3f8df1c63f6c7ff1b63ad7e08c1d44b0 data/create/advancements/recipes/create.palettes/birch_window_pane.json
|
||||
|
@ -1990,6 +1994,7 @@ b4651c8202331483e82b28b04edc6cd97e62ad1d data/create/advancements/recipes/create
|
|||
b2813566e6715c2d377dd4ef461b012cae7eb190 data/create/advancements/recipes/create.palettes/crimson_window_pane.json
|
||||
25991d5667252d551e02c4fbbfa27ebf4353d28d data/create/advancements/recipes/create.palettes/dark_oak_window.json
|
||||
4819383b1a7885b4401fdc25955d2c51f75b6236 data/create/advancements/recipes/create.palettes/dark_oak_window_pane.json
|
||||
02cd339174aaf2c14e14f886d90fbbcae91783b6 data/create/advancements/recipes/create.palettes/dark_scoria.json
|
||||
ebd6413d530325eef6fcf42a0ee0ac840c1f7366 data/create/advancements/recipes/create.palettes/dark_scoria_bricks_from_dark_scoria_stonecutting.json
|
||||
030ce9b61b8af158cf54e7a9ab673ccb7251483f data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab.json
|
||||
ac44d03859cfd4c00ddcbd1dafbb9acc51d849d7 data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json
|
||||
|
@ -2004,7 +2009,7 @@ eef6f85b20fb997af1b0c2383a45100be2e0cd34 data/create/advancements/recipes/create
|
|||
8d44f675237a92513678a77da7a1f329475a3453 data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json
|
||||
702527e6735770a6fcc3ad446df39d3b1b80709e data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall.json
|
||||
ce069a666d223f733bfa1cc9ca5e3e5e27de1ebc data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json
|
||||
c5d7f1e79302d47ea02cb63b99b286b90ec0287b data/create/advancements/recipes/create.palettes/dark_scoria_pillar.json
|
||||
64f9ba8df2fd2357ad397b75156a4af9c26fa91b data/create/advancements/recipes/create.palettes/dark_scoria_pillar.json
|
||||
f3d6314d272d84c456c5df512dcc555b7694ded2 data/create/advancements/recipes/create.palettes/dark_scoria_pillar_from_dark_scoria_stonecutting.json
|
||||
83e3c29d5d651a6bc6fd9d5843d8d75f4cda2b77 data/create/advancements/recipes/create.palettes/diorite_bricks_from_diorite_stonecutting.json
|
||||
4649497555ca4269b1f3859f0275ca1ff7c85377 data/create/advancements/recipes/create.palettes/diorite_bricks_slab.json
|
||||
|
@ -2020,8 +2025,9 @@ f3d6314d272d84c456c5df512dcc555b7694ded2 data/create/advancements/recipes/create
|
|||
600c57c4dc3a3741d5db7ec01340e1c6a01d54b4 data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json
|
||||
8b4990d3657e23a86c3e71eba77370c56692c93b data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall.json
|
||||
e741ca0e76875ee12beecd45db764444956d5342 data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json
|
||||
9edb9886a6b2792dc38d5d61a2be2b7a3fd28eeb data/create/advancements/recipes/create.palettes/diorite_pillar.json
|
||||
08e8495b798d54366f132da060e93e94e23f6354 data/create/advancements/recipes/create.palettes/diorite_pillar.json
|
||||
87d34b8ca3dc73a778ab94ef4d852f418112adb3 data/create/advancements/recipes/create.palettes/diorite_pillar_from_diorite_stonecutting.json
|
||||
17135274809b7a0f38294d2e6412b787e985e4d5 data/create/advancements/recipes/create.palettes/dolomite.json
|
||||
dbf201ceafc310f5cc6624c81777d50348844285 data/create/advancements/recipes/create.palettes/dolomite_bricks_from_dolomite_stonecutting.json
|
||||
6716447628cce96a1f520766d019f09380ec67e5 data/create/advancements/recipes/create.palettes/dolomite_bricks_slab.json
|
||||
52ae39c6f63860fa5a60c1ae70ef00eca5b961c9 data/create/advancements/recipes/create.palettes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json
|
||||
|
@ -2036,7 +2042,7 @@ a8904096a05eeb7e746563e1a4b97b39173d1708 data/create/advancements/recipes/create
|
|||
124c586970edc5c15079bec53c734a2beb670130 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json
|
||||
2e9f1556a11d4d7190233be3af64453396865da9 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall.json
|
||||
1a1e8764ba05f72ffd7e5872a8f2fc9cf2108308 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json
|
||||
4652a46d4b6590b988d57d855def253ebeb380fe data/create/advancements/recipes/create.palettes/dolomite_pillar.json
|
||||
4b56a0490151fbc66dee82546b9e271a5a85fa12 data/create/advancements/recipes/create.palettes/dolomite_pillar.json
|
||||
a8752ee9bf9afc665c5d940d251c1cf4a83a0ae9 data/create/advancements/recipes/create.palettes/dolomite_pillar_from_dolomite_stonecutting.json
|
||||
ea981a446d8cc22d6b7fb4667e86dc18a48a4720 data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_from_andesite_stonecutting.json
|
||||
44dc6bc5a7303129db2268a025f49dcb222597a7 data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab.json
|
||||
|
@ -2103,6 +2109,7 @@ d51bee4b276805ecf1a93a37ec6d610e75c0117e data/create/advancements/recipes/create
|
|||
17e02efc06d935c094bde5bb73a5127bc98e4758 data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json
|
||||
05331b5f1701453ecdfd0b3e6429b22ec209ba67 data/create/advancements/recipes/create.palettes/framed_glass_from_glass_colorless_stonecutting.json
|
||||
605476eaf4e964936c031732cfef534edfdd749a data/create/advancements/recipes/create.palettes/framed_glass_pane.json
|
||||
1b17b217e487b958e35ab0ad509bb8caceebda40 data/create/advancements/recipes/create.palettes/gabbro.json
|
||||
b835dd583d670e2d7f6af4dd74e44f5817b03b21 data/create/advancements/recipes/create.palettes/gabbro_bricks_from_gabbro_stonecutting.json
|
||||
2bfac04754aaf07423b330134984d887ae43f00a data/create/advancements/recipes/create.palettes/gabbro_bricks_slab.json
|
||||
f05bb35d52866abc7dae9c7f3f5fc85257760564 data/create/advancements/recipes/create.palettes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json
|
||||
|
@ -2117,7 +2124,7 @@ c90a07c41b2e034437c8a765de7b517f89383830 data/create/advancements/recipes/create
|
|||
f9d917def55875dcba621246f80dc83904be3d73 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json
|
||||
b081b91a5e11e8ce9b2455b944eb554f5f2e419e data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall.json
|
||||
093f372d84c557791cebcb286b3505f32c4dc7c0 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json
|
||||
dacb04ebd8bc20c2a0689a9e75ea67c07e43c56b data/create/advancements/recipes/create.palettes/gabbro_pillar.json
|
||||
4b0f4a396397a791d08fe422fb4cfb922554779c data/create/advancements/recipes/create.palettes/gabbro_pillar.json
|
||||
35288551f5146ebbf8dbbe987928dd2a1bdc7ea8 data/create/advancements/recipes/create.palettes/gabbro_pillar_from_gabbro_stonecutting.json
|
||||
6a9a8b37ec264084ce0481200225017739546025 data/create/advancements/recipes/create.palettes/granite_bricks_from_granite_stonecutting.json
|
||||
2ac84cb0b8b629bdfd740a6613df2a7e45964bf2 data/create/advancements/recipes/create.palettes/granite_bricks_slab.json
|
||||
|
@ -2133,7 +2140,7 @@ c39e86c111a2c76ef9cb7046d2b87262524b06b9 data/create/advancements/recipes/create
|
|||
06d3f3150db99f808a5fd4141c0fc6235d979ce5 data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json
|
||||
6bbc97d2ac655a532eaf345fca64431dbf8af27d data/create/advancements/recipes/create.palettes/granite_cobblestone_wall.json
|
||||
d6b622a2cf302d0c39e0d38d24b0a17e1461d13b data/create/advancements/recipes/create.palettes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json
|
||||
03c3a88e1a320afe9866a1c09ef34b46763c8ec1 data/create/advancements/recipes/create.palettes/granite_pillar.json
|
||||
5b9fe440648ae9f37b5d079cfcd1d9a72afa74fa data/create/advancements/recipes/create.palettes/granite_pillar.json
|
||||
97cc61b1b510849ebc0bf51cf2b8107a5c43fc17 data/create/advancements/recipes/create.palettes/granite_pillar_from_granite_stonecutting.json
|
||||
cbb40e82dba460ee126966a52f0164e740ac1f11 data/create/advancements/recipes/create.palettes/horizontal_framed_glass_from_glass_colorless_stonecutting.json
|
||||
29e2e2aeca3800c8ba432be30d54d046a3991217 data/create/advancements/recipes/create.palettes/horizontal_framed_glass_pane.json
|
||||
|
@ -2148,6 +2155,7 @@ cbb40e82dba460ee126966a52f0164e740ac1f11 data/create/advancements/recipes/create
|
|||
c0dd961f07e85a183af7b942ed0e4bfe8f775373 data/create/advancements/recipes/create.palettes/layered_limestone_from_limestone_stonecutting.json
|
||||
5d06584a83074f8a8d1a52d93d13f2718bc99152 data/create/advancements/recipes/create.palettes/layered_scoria_from_scoria_stonecutting.json
|
||||
b09e64b4989ef08b7ea6b9011681c2fbf780d949 data/create/advancements/recipes/create.palettes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json
|
||||
519234f31ee8cacc0f916df40703ba171c6a90e5 data/create/advancements/recipes/create.palettes/limestone.json
|
||||
52c1902f260173fe610a4a03294a51c4cea3b37b data/create/advancements/recipes/create.palettes/limestone_bricks_from_limestone_stonecutting.json
|
||||
e6eb6c433541b7c4e3e5b64f240618e6df67ed58 data/create/advancements/recipes/create.palettes/limestone_bricks_slab.json
|
||||
72f0586690ca4413082b2cbecf7938ba6e4756b4 data/create/advancements/recipes/create.palettes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json
|
||||
|
@ -2162,7 +2170,7 @@ d7b36c7fcf429eea7c57f2ae967e73b8e18d0d58 data/create/advancements/recipes/create
|
|||
749936c7c33273c1833154a1eb1e13604ece8565 data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json
|
||||
c0e3f97a6f807ea8147f58bf4ca002725d1877b6 data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall.json
|
||||
a01c91b927f50d367c3bfcca5f370002a991d45a data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json
|
||||
8b1ef23c71f0088230dcdd12374494bfdf700409 data/create/advancements/recipes/create.palettes/limestone_pillar.json
|
||||
acf08b6a32e3678d63443fdb97e7332e05eb61f6 data/create/advancements/recipes/create.palettes/limestone_pillar.json
|
||||
d040f53dfb09a29c39d534d3595e35d058fe5557 data/create/advancements/recipes/create.palettes/limestone_pillar_from_limestone_stonecutting.json
|
||||
3ee8ab0478344042136058be6cf870289c096bdd data/create/advancements/recipes/create.palettes/mossy_andesite_from_andesite_stonecutting.json
|
||||
c427e2626e468abee6fb4de83bf76f2d3c051449 data/create/advancements/recipes/create.palettes/mossy_dark_scoria_from_dark_scoria_stonecutting.json
|
||||
|
@ -2297,6 +2305,7 @@ e46847d02ab7bfb2bc1da1a4ad4b7b54a3a28559 data/create/advancements/recipes/create
|
|||
75480d0c13a80d9edf93a0eff947e5165db011c1 data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json
|
||||
7b4b27211174e774169132a50da7bfd63ff28b30 data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall.json
|
||||
81a759d9b069faedee49107642d947ea1bf1ac6c data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json
|
||||
28c7dd5fb1594295f977eff41ac677aab9660831 data/create/advancements/recipes/create.palettes/scoria.json
|
||||
874023eabafb85aefacc86f395c5d4ef0cc9cfac data/create/advancements/recipes/create.palettes/scoria_bricks_from_scoria_stonecutting.json
|
||||
a9969fd00f8cba428715d27a8ab6af6ba6473c8a data/create/advancements/recipes/create.palettes/scoria_bricks_slab.json
|
||||
1d129bb8d359de50344dcb46f77899b0651d7817 data/create/advancements/recipes/create.palettes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json
|
||||
|
@ -2311,7 +2320,7 @@ dc5df4f4feddc24a7c78b25b6ed3e7ed458342f1 data/create/advancements/recipes/create
|
|||
b852a9a59499c113f387ac06fdb27d3d455f18e3 data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json
|
||||
a43d45efa0fb0d3eaace93c18d80a14d4dcddf38 data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall.json
|
||||
e340721aa78f260c2666214aa149241a37de216e data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json
|
||||
53cc5b006a19158e04094308accb66a7c35d2b26 data/create/advancements/recipes/create.palettes/scoria_pillar.json
|
||||
68fc67ead3fd31885b30a5cf3e71dd33fb040634 data/create/advancements/recipes/create.palettes/scoria_pillar.json
|
||||
53712a9ae59976dece952bea7ecaf73b679448f0 data/create/advancements/recipes/create.palettes/scoria_pillar_from_scoria_stonecutting.json
|
||||
6b148def2f8789f9ff1d41bb71ab3608438a7207 data/create/advancements/recipes/create.palettes/smelting/dolomite.json
|
||||
070720cc271767b26ad51fa089b4cf2a64d309be data/create/advancements/recipes/create.palettes/smelting/gabbro.json
|
||||
|
@ -2326,6 +2335,7 @@ d40c7ce6b79630ace624d17b92667286998d93bc data/create/advancements/recipes/create
|
|||
cd5ee73117872ee98434be1d24b4f271f7e94a48 data/create/advancements/recipes/create.palettes/vertical_framed_glass_pane.json
|
||||
f26d1a1ee183b1b19d018fbdefc70f0bf29b41d0 data/create/advancements/recipes/create.palettes/warped_window.json
|
||||
faf33c9c630eecab88bb969e3b9f7fd9e9f6ccf6 data/create/advancements/recipes/create.palettes/warped_window_pane.json
|
||||
5b3447ec4802fb27f1ee9a3b1bbe1936fac48fb3 data/create/advancements/recipes/create.palettes/weathered_limestone.json
|
||||
ef0d351d13f7e9c633581b537c59bddc1fa4c3a4 data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json
|
||||
1c931e15af3e5b5f78a0a62b8c159fdf9f0d7f3e data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab.json
|
||||
bba639941526cc23570e328e0b5e2a5545667219 data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json
|
||||
|
@ -2340,7 +2350,7 @@ b77c5aecd0b6dd37a0c69431ab7a4a40fe0770eb data/create/advancements/recipes/create
|
|||
8ea05c6cdb313ff395d1f21cfb40e2d939dadf20 data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json
|
||||
4d838d8ceaf207a59554444d82b80c31807341bc data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall.json
|
||||
e548127075559307b767b802f4809ed52eedd543 data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json
|
||||
23ba836640a4d543db6f1cb72cc86a6543fe2fbe data/create/advancements/recipes/create.palettes/weathered_limestone_pillar.json
|
||||
efab7b7f3829998a91fc506e4be3b6345f5ca168 data/create/advancements/recipes/create.palettes/weathered_limestone_pillar.json
|
||||
9790a16fd56e47cb5abbfad4062672303c224d9f data/create/advancements/recipes/create.palettes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json
|
||||
e00155bcd00f50750e2cc4d6aa30c2f2d6e62922 data/create/advancements/recipes/decorations/smelting/glass_pane_from_framed_glass_pane.json
|
||||
bf9131527df4ad259b5a509753ba66417d764da2 data/create/advancements/recipes/decorations/smelting/glass_pane_from_horizontal_framed_glass_pane.json
|
||||
|
@ -2447,7 +2457,7 @@ d370ee874b5b6b98e9a8c368218fe61f644d956d data/create/loot_tables/blocks/cuckoo_c
|
|||
fe24fd296812fea3f838defa2ca6270523d9d48e data/create/loot_tables/blocks/cyan_valve_handle.json
|
||||
fd309e1d39dcbcb25c3361edecd8c9afa0f847d0 data/create/loot_tables/blocks/dark_oak_window.json
|
||||
58e6307ba0efa65a0715662a391fe7dc6fba0c68 data/create/loot_tables/blocks/dark_oak_window_pane.json
|
||||
7a40002e4c05f6456b52558b9ee9607cfc868a69 data/create/loot_tables/blocks/dark_scoria.json
|
||||
6769787b0c7a8d2762bae1c4826275bde8647b4e data/create/loot_tables/blocks/dark_scoria.json
|
||||
502160551afd210c68582a1dfd41a2df720f53a1 data/create/loot_tables/blocks/dark_scoria_bricks.json
|
||||
d37adba01cd1220e265dbdc025b3f8d01b992289 data/create/loot_tables/blocks/dark_scoria_bricks_slab.json
|
||||
265bb133af68497d9b4ba4bd418a198506caa45b data/create/loot_tables/blocks/dark_scoria_bricks_stairs.json
|
||||
|
@ -2468,7 +2478,7 @@ bdaba62199f7a65e1149b742aaaf0c23a1e149b0 data/create/loot_tables/blocks/diorite_
|
|||
5141eec8eebed0feec906618dd3474ea402fbf28 data/create/loot_tables/blocks/diorite_cobblestone_stairs.json
|
||||
f3c963cfd51069876140373f410e868706744e9b data/create/loot_tables/blocks/diorite_cobblestone_wall.json
|
||||
fdcf47cddebca81730ac122925b01daeddf9233d data/create/loot_tables/blocks/diorite_pillar.json
|
||||
7aa075c7fbe97447422bfcb95afb3bbe3b26301c data/create/loot_tables/blocks/dolomite.json
|
||||
0be81285de44699dabb2c1e046ae109b2e39a4e9 data/create/loot_tables/blocks/dolomite.json
|
||||
7ecdbfa3ebfc6865833bafed06ed7cd6eef58345 data/create/loot_tables/blocks/dolomite_bricks.json
|
||||
ecc855c3ce298855038eb7b53137cab519bca55a data/create/loot_tables/blocks/dolomite_bricks_slab.json
|
||||
699815e110c76bcb793efdfedcb8ac3a5b9b7131 data/create/loot_tables/blocks/dolomite_bricks_stairs.json
|
||||
|
@ -2524,7 +2534,7 @@ f37526c092c645045c22674dea6c7b1ec503c9c3 data/create/loot_tables/blocks/flywheel
|
|||
ce0bb978b11935bc2d1218445f8ab18099af6b8a data/create/loot_tables/blocks/framed_glass.json
|
||||
89bd90ecd7a1ce1f75bd873989cc58a84c8dcef9 data/create/loot_tables/blocks/framed_glass_pane.json
|
||||
4063880eda871fe63a4eb549a19daecabce849e5 data/create/loot_tables/blocks/furnace_engine.json
|
||||
1070cba1c0f46cf7ebe31089f35333f5eadda6e4 data/create/loot_tables/blocks/gabbro.json
|
||||
88b3438e50322b731cdd8589e36a9ea497cfe56e data/create/loot_tables/blocks/gabbro.json
|
||||
0356e003d8890d31b89d0ad98e32aae892da71f9 data/create/loot_tables/blocks/gabbro_bricks.json
|
||||
bd93e42ebca985b8aeeaf0ea5fb736d496183615 data/create/loot_tables/blocks/gabbro_bricks_slab.json
|
||||
e51893e1601c470da466b35b17251238e15d0361 data/create/loot_tables/blocks/gabbro_bricks_stairs.json
|
||||
|
@ -2581,7 +2591,7 @@ b403848d3a4b4ad7a048e70c21e200e40d0c67e3 data/create/loot_tables/blocks/light_bl
|
|||
f7893090c6ecb4862c90c408b7f9ce8316f8b608 data/create/loot_tables/blocks/lime_seat.json
|
||||
cae6d16c8967164698efbce3b91018a8e79a81e9 data/create/loot_tables/blocks/lime_valve_handle.json
|
||||
7dfd638cc6f0d22bbc8fcbdb7212a3bfc8c85223 data/create/loot_tables/blocks/limesand.json
|
||||
9d585f677a32a2336df5f17b5b389cdee867939f data/create/loot_tables/blocks/limestone.json
|
||||
d476eed7b5f0c7438d2e517fc60cd23f19234056 data/create/loot_tables/blocks/limestone.json
|
||||
57134f7d3d32fc1c48f2a20c4be84388587092bc data/create/loot_tables/blocks/limestone_bricks.json
|
||||
1b59a36aa1a889c42d4b8b939f5eeee2967222d0 data/create/loot_tables/blocks/limestone_bricks_slab.json
|
||||
41ed1d0750e8ddd7e7e75fd7e4cafde6346d1afe data/create/loot_tables/blocks/limestone_bricks_stairs.json
|
||||
|
@ -2727,7 +2737,7 @@ aa6af37356d65105efab2503ffe75f778cfe873b data/create/loot_tables/blocks/rotation
|
|||
30de11bec82606fead9d6bff7bba0232e97f1039 data/create/loot_tables/blocks/sail_frame.json
|
||||
069701cb804b6522c18624a0d4f3f949ff8b0281 data/create/loot_tables/blocks/schematic_table.json
|
||||
a2b172dc749176d4df34729007019605fc6dd150 data/create/loot_tables/blocks/schematicannon.json
|
||||
af1bbbb8236b4ab05a6a8edc6db960bc758cbdf3 data/create/loot_tables/blocks/scoria.json
|
||||
5c1bd2b940fa04ab487155ca10c551dd9b0fbf37 data/create/loot_tables/blocks/scoria.json
|
||||
bb670ac5dd2fa4c743bc268cd0547926eb6cdb68 data/create/loot_tables/blocks/scoria_bricks.json
|
||||
a7217ea301a282d0ef52f2d8c06dd8683398408d data/create/loot_tables/blocks/scoria_bricks_slab.json
|
||||
58a188f3ebfeb3d19323c3f8dfa3e020a7f6cdc4 data/create/loot_tables/blocks/scoria_bricks_stairs.json
|
||||
|
@ -2759,7 +2769,7 @@ d0156602dd5f4a274c293df67e19374820c72890 data/create/loot_tables/blocks/vertical
|
|||
1afc5ede08e72221e33910603fa7acd0b3c7a2ee data/create/loot_tables/blocks/warped_window.json
|
||||
f334fd2b9a92b0646674239e7e34e142fe2c5fad data/create/loot_tables/blocks/warped_window_pane.json
|
||||
2883c63ceb1273009dbf91cb0693756cadf79a1a data/create/loot_tables/blocks/water_wheel.json
|
||||
611d6195db52c074de484ec52d7ac9eb96b4ff10 data/create/loot_tables/blocks/weathered_limestone.json
|
||||
6cbc693f915f409bc21c6084a4f75071bd660f7b data/create/loot_tables/blocks/weathered_limestone.json
|
||||
c1f379baad36a20fc767be094db10480a0378184 data/create/loot_tables/blocks/weathered_limestone_bricks.json
|
||||
43be7e49b9a8a75077066aa824a0f784aa741683 data/create/loot_tables/blocks/weathered_limestone_bricks_slab.json
|
||||
c2a62f12680d04ed4f586c501bb026e367243dd2 data/create/loot_tables/blocks/weathered_limestone_bricks_stairs.json
|
||||
|
@ -2782,6 +2792,7 @@ e3969f1c5966c4992b3280a06e1d6c5000c37df5 data/create/loot_tables/blocks/weighted
|
|||
37248ca92d474e440b91c27e3c8e78e568328100 data/create/loot_tables/blocks/zinc_ore.json
|
||||
b65bac8bc2fbfd476040c1aab1c0588b8bd59ebe data/create/recipes/acacia_window.json
|
||||
35b4da9c14da60584c32e959efc2223f64bb3ec2 data/create/recipes/acacia_window_pane.json
|
||||
57fc55848415db3e9b74e2cc2f6dacfb1b13a6cc data/create/recipes/andesite.json
|
||||
96bb0bceb7798c96d5cf9b9c24b8ef822080cb1e data/create/recipes/andesite_bricks_from_andesite_stonecutting.json
|
||||
01867b07039615dc69bad1b9fd217a1d86e69062 data/create/recipes/andesite_bricks_slab.json
|
||||
376ada0e08cc797c705c22ec35fe54baa5f24efe data/create/recipes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json
|
||||
|
@ -3102,6 +3113,7 @@ a022f2d541f04a9e2bed6b72af4e74703076fcbe data/create/recipes/cutting/warped_hyph
|
|||
1bd01df5540df7db06afde28a3f9ebe4d25e4001 data/create/recipes/cutting/warped_stem.json
|
||||
f2c317e03ac4d42fb631e1625607061e10c480fe data/create/recipes/dark_oak_window.json
|
||||
d9dbae6e237eb38e53a619a0f1b339fca7c59b4d data/create/recipes/dark_oak_window_pane.json
|
||||
2ff8ac7eaabef52dcb173d7af388c28307559aaa data/create/recipes/dark_scoria.json
|
||||
55596a590962e3ddd40949917661f0bd94408274 data/create/recipes/dark_scoria_bricks_from_dark_scoria_stonecutting.json
|
||||
2489fc29c47d3c9cb63f5f2f09dc79ea1ca1728e data/create/recipes/dark_scoria_bricks_slab.json
|
||||
86f4d54ebcc5bc8786c72167395d8efee833744c data/create/recipes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json
|
||||
|
@ -3118,6 +3130,7 @@ f3a72b45daef00035ecb17b9cd7f8985a5f9e9ef data/create/recipes/dark_scoria_cobbles
|
|||
0f2c14d40ed9013d45e331000ea03d39430f9d22 data/create/recipes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json
|
||||
31b7e65165cb0dbcd95362a81905b19fe4282cf3 data/create/recipes/dark_scoria_pillar.json
|
||||
681f45f03b15dc1a8a72cf72042e725d3f0cc7ef data/create/recipes/dark_scoria_pillar_from_dark_scoria_stonecutting.json
|
||||
0871ced2a434838e2db8f3df85af84b0cb4e40ad data/create/recipes/diorite.json
|
||||
25c0fe29d1c2cedcaf21fac6cdfcce45dbf810bf data/create/recipes/diorite_bricks_from_diorite_stonecutting.json
|
||||
ff4a8687bdff339a10e0b813788bca272332abd9 data/create/recipes/diorite_bricks_slab.json
|
||||
7c49a389f9222fdfd6653d9fbcb1ca05bf207aa8 data/create/recipes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json
|
||||
|
@ -3134,6 +3147,7 @@ f764471aab017775e0d7a6d43a9e36b186db3ac2 data/create/recipes/diorite_cobblestone
|
|||
d3628d5ce836d3b9072be3d4cf30416146cccad2 data/create/recipes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json
|
||||
d69d767a77ae62f8e53342dffda4c627906439d7 data/create/recipes/diorite_pillar.json
|
||||
3019172274fdfcc606ad0f5569db433913231c28 data/create/recipes/diorite_pillar_from_diorite_stonecutting.json
|
||||
2f1bf27611c640ec454be0e73ed75f596a4f1add data/create/recipes/dolomite.json
|
||||
6ee0f10522f4acfe554e4743fa2ba1d8297a12f2 data/create/recipes/dolomite_bricks_from_dolomite_stonecutting.json
|
||||
88a9b8e89e67455a9c4f1c3dbff813a3c3bd1609 data/create/recipes/dolomite_bricks_slab.json
|
||||
3adfb9924ada35d58275533425802b4829f058ac data/create/recipes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json
|
||||
|
@ -3229,6 +3243,7 @@ c83e77a9799b6ca34dd73aa76b56159f2103c48c data/create/recipes/filling/milk_bucket
|
|||
fb8e4378cd2240644a4b5c0d06e27ad772ec7695 data/create/recipes/filling/sweet_roll.json
|
||||
5b8bbde7f8b270ab75fac18d6858f2fadbc0efa3 data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json
|
||||
d697de0c9b706ca4e18da7a2d769e7e5fe8d769d data/create/recipes/framed_glass_pane.json
|
||||
147e7a160b82c8128f8fa7c3c6e7f7d652b89a36 data/create/recipes/gabbro.json
|
||||
a0dae50faaa1b7142bb4309675e3084c68daa547 data/create/recipes/gabbro_bricks_from_gabbro_stonecutting.json
|
||||
a19f047fa8507e994eb026795c86bc10ff5c373b data/create/recipes/gabbro_bricks_slab.json
|
||||
84d83643f7987864eca0e2ca7cda4330ad9f1f86 data/create/recipes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json
|
||||
|
@ -3245,6 +3260,7 @@ f7407fd04cfe7558d53c44cb33dfd8ff8a736ae3 data/create/recipes/gabbro_cobblestone_
|
|||
8171880f4374f9102949b85e9a17e0b313caf3a6 data/create/recipes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json
|
||||
6e52667c2f9ec62a95ba27676fdc07a8222f1746 data/create/recipes/gabbro_pillar.json
|
||||
da3743119130ef0946b05b21a84c2fe5926dccd5 data/create/recipes/gabbro_pillar_from_gabbro_stonecutting.json
|
||||
dc21523e591068eb5df7b287c9eef7b773b7d5d0 data/create/recipes/granite.json
|
||||
5664bad03fce4a4724e8fd21c9c02ca6ae900df9 data/create/recipes/granite_bricks_from_granite_stonecutting.json
|
||||
1c5265828318670a11bd1e439b6a6005edb37487 data/create/recipes/granite_bricks_slab.json
|
||||
0f460bda24ff799a9ef948933cfb50ef038739d4 data/create/recipes/granite_bricks_slab_from_granite_bricks_stonecutting.json
|
||||
|
@ -3274,6 +3290,7 @@ b49c314e171f31a39f38aabad767d8d3be613602 data/create/recipes/layered_gabbro_from
|
|||
9712031277020c39e8e643690a6a968c5e275a75 data/create/recipes/layered_limestone_from_limestone_stonecutting.json
|
||||
fdfbe941eb56a98c3d28639154b7bcd4dcc66dfa data/create/recipes/layered_scoria_from_scoria_stonecutting.json
|
||||
cc070e83594b20cf697aa5dbb8c4e09dbf576d00 data/create/recipes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json
|
||||
90253fc317a2551c50da7693df4a60e8543d2d64 data/create/recipes/limestone.json
|
||||
3b43347da62a69c6e76e6a0261f840f46ff90038 data/create/recipes/limestone_bricks_from_limestone_stonecutting.json
|
||||
aed4b037af6921e9337213dc09a215ab7a18adde data/create/recipes/limestone_bricks_slab.json
|
||||
7222e1f13c6aec69ea37c84b4aca3e2322ef00d2 data/create/recipes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json
|
||||
|
@ -3443,7 +3460,7 @@ f2a140cbaddefd387fd94f0ce94df763a585dd4f data/create/recipes/paved_weathered_lim
|
|||
9f02f552173ae1c85750bb16aa6bbbfb87a5a7f1 data/create/recipes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json
|
||||
cc4a5a893b10ffdfcc10085323d89d34a1b8f122 data/create/recipes/paved_weathered_limestone_wall.json
|
||||
d996f6505433a74cd8bdab04c0e0bac1b9a2da16 data/create/recipes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json
|
||||
c83e29f260eee9844c85995d45bedef6100cb91d data/create/recipes/polished_dark_scoria.json
|
||||
c32e1418b17011c8c423d44ee20f2b86e82e7626 data/create/recipes/polished_dark_scoria.json
|
||||
753c85bfb84a5d31f9670478042321702a589dc8 data/create/recipes/polished_dark_scoria_from_dark_scoria_stonecutting.json
|
||||
d3c78c504672fec3316b206505c2cb5fc8daf822 data/create/recipes/polished_dark_scoria_slab.json
|
||||
bcc5a7325b7f7110e6b382e7ad60fc547222d3ad data/create/recipes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json
|
||||
|
@ -3451,7 +3468,7 @@ c7d7e5f39099a71482cdfbebe1ef2dfd508ae768 data/create/recipes/polished_dark_scori
|
|||
364d77f01b380bbb0036810f6e0df09773ea8e1c data/create/recipes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json
|
||||
396b6c97b5e7f608b293dee51be97717c3430bc4 data/create/recipes/polished_dark_scoria_wall.json
|
||||
62b0769e0208831db822f6d2b986fff6aee60729 data/create/recipes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json
|
||||
53930b3b32b076c9786e5c61d8cc7fe70a47fed7 data/create/recipes/polished_dolomite.json
|
||||
a1561acc26948db5cffc041d85b1d26204754caf data/create/recipes/polished_dolomite.json
|
||||
da91fd1ccaac64f7ef9737f3c773490d0c0b10d1 data/create/recipes/polished_dolomite_from_dolomite_stonecutting.json
|
||||
75288e75b604eacfbc19cb51cb4d4759bdeaafa5 data/create/recipes/polished_dolomite_slab.json
|
||||
9a89eaf5f00d8fb10297de61248f8d11dded8c4b data/create/recipes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json
|
||||
|
@ -3459,7 +3476,7 @@ da91fd1ccaac64f7ef9737f3c773490d0c0b10d1 data/create/recipes/polished_dolomite_f
|
|||
e2dce404e4bcde076615ed0d0cf6fab769d441d5 data/create/recipes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json
|
||||
8f2f4643886d166609b198704dcadb5e87b6323e data/create/recipes/polished_dolomite_wall.json
|
||||
3b5d553e408a8b6385932e2a8082fcb5bdead0d1 data/create/recipes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json
|
||||
d9d2b6f6f4c8223c4cfc6258ba9013463691d88c data/create/recipes/polished_gabbro.json
|
||||
5873547a8561849a73c0d2cca3faba3e8b65b33d data/create/recipes/polished_gabbro.json
|
||||
ba3e1444b9d1804411cc9c7536c657806dc37c1d data/create/recipes/polished_gabbro_from_gabbro_stonecutting.json
|
||||
b7d29a29fde4868b4ceef1437e5d00975068bc58 data/create/recipes/polished_gabbro_slab.json
|
||||
f7a62c1edc74e54fc0c747f23d7da182d49ef7b6 data/create/recipes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json
|
||||
|
@ -3467,7 +3484,7 @@ f7a62c1edc74e54fc0c747f23d7da182d49ef7b6 data/create/recipes/polished_gabbro_sla
|
|||
7df6fd466badaa3cef5e2ad0e78bbb3b6429805e data/create/recipes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json
|
||||
ec70334e13e05cff7e04e7dc6b23be273c235e50 data/create/recipes/polished_gabbro_wall.json
|
||||
5176a8fe5a48592c7b487518a57c962c24e3e751 data/create/recipes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json
|
||||
bb7d651a6c79bd97390c7b1743c4fe58c9973c39 data/create/recipes/polished_limestone.json
|
||||
59a01eb264c302fe455639bcafa4afb97de2379e data/create/recipes/polished_limestone.json
|
||||
0e88c98c9ef0d15523b23b00f8afde71d9d8e3e9 data/create/recipes/polished_limestone_from_limestone_stonecutting.json
|
||||
135fd40e291c7cfdc73c14496654008da9dd797d data/create/recipes/polished_limestone_slab.json
|
||||
4ce225832ab45daf6b5bc013c6f8762fdbe9ff0f data/create/recipes/polished_limestone_slab_from_polished_limestone_stonecutting.json
|
||||
|
@ -3475,7 +3492,7 @@ fee3d0ec8d4f27d82acd5d0e3a2a142900e18be3 data/create/recipes/polished_limestone_
|
|||
6780c8bd8747ebb6db7e0adfc486ce00e7e2cf26 data/create/recipes/polished_limestone_stairs_from_polished_limestone_stonecutting.json
|
||||
44b1f3873fe8150abbacab10ff3cc2033a01b4a0 data/create/recipes/polished_limestone_wall.json
|
||||
d68a27e463d31ba5eed19181c0335824601b9e68 data/create/recipes/polished_limestone_wall_from_polished_limestone_stonecutting.json
|
||||
300b9c979ac848fb6ae69eeb6e89c9e22056c562 data/create/recipes/polished_scoria.json
|
||||
82b5b5fc1d2f789b48a48a7dc846aeb505b0c3c1 data/create/recipes/polished_scoria.json
|
||||
9d6926822ea6f2bb38ba55204278fe82fd453d16 data/create/recipes/polished_scoria_from_scoria_stonecutting.json
|
||||
814efd67d3f061d0c0ba104993c868e075a4fd3e data/create/recipes/polished_scoria_slab.json
|
||||
8696f262927ae55ce72af1a34cae68fd6ccc4050 data/create/recipes/polished_scoria_slab_from_polished_scoria_stonecutting.json
|
||||
|
@ -3483,7 +3500,7 @@ efe648aa4fd0f22faa78c016dbe2d083462e1ad6 data/create/recipes/polished_scoria_sta
|
|||
ba6dd9ad0c69b088c1a9e33000bd5b9bcedb0ca0 data/create/recipes/polished_scoria_stairs_from_polished_scoria_stonecutting.json
|
||||
8319042a131a9dcabae016009b807b91c491f8d3 data/create/recipes/polished_scoria_wall.json
|
||||
bc9a83e7793768723031ff14269e43c83687b9f3 data/create/recipes/polished_scoria_wall_from_polished_scoria_stonecutting.json
|
||||
31a0826653da3e752da8507a46b16dc17334693b data/create/recipes/polished_weathered_limestone.json
|
||||
d9d188d55d9bb94bceaad8de3ccb02532b021576 data/create/recipes/polished_weathered_limestone.json
|
||||
73b468de08f3e0542b7020129faff3a40b3fee67 data/create/recipes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json
|
||||
c0924d72a856c3182b89996a6ceaffd56930c455 data/create/recipes/polished_weathered_limestone_slab.json
|
||||
1f5503d22859a08eef824d33f6ed48335f66c423 data/create/recipes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json
|
||||
|
@ -3499,6 +3516,7 @@ a104ef6eb8872a40ea7b2ef67ae54cec943162f0 data/create/recipes/pressing/iron_ingot
|
|||
654e274b07af172c22838d47e0974367c20101d4 data/create/recipes/pressing/path.json
|
||||
bd57ccc8eb4357b4a5af021db7b806b514cd2558 data/create/recipes/pressing/sugar_cane.json
|
||||
141173778757d87e7f2e9466bdab6ff1263c8e98 data/create/recipes/sandpaper_polishing/rose_quartz.json
|
||||
5ab9c8271a9e1d4a863940aeafd1f8816cb37a29 data/create/recipes/scoria.json
|
||||
d59c68621c78ff5d2c51be4440dea603480efed8 data/create/recipes/scoria_bricks_from_scoria_stonecutting.json
|
||||
a7a28cf77955c2b4ed3687205dd24162e461aa30 data/create/recipes/scoria_bricks_slab.json
|
||||
0577ffde98e7a027b21c430cd71cdafdd3cee3a3 data/create/recipes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json
|
||||
|
@ -3629,6 +3647,7 @@ e2c1774577aeb0756fb1d092245d9d77e40ba5f8 data/create/recipes/splashing/yellow_co
|
|||
dc6093427210bd7034a0e2184f6a1630c7b33b3e data/create/recipes/vertical_framed_glass_pane.json
|
||||
40ec72d571002206c276aec5de72459155e043ce data/create/recipes/warped_window.json
|
||||
8f4b0a3cfb0073f1414bf18c0d4e5e751c4a9185 data/create/recipes/warped_window_pane.json
|
||||
e483f41ab4e959bda4d88c23817913843d0fbef6 data/create/recipes/weathered_limestone.json
|
||||
f75f25d3259dd51c29bee6ada2a4540a7a2bbeab data/create/recipes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json
|
||||
f58ef5eb552fc7dcd89f30aa4231286ecef5e00a data/create/recipes/weathered_limestone_bricks_slab.json
|
||||
ca9b163b3aaa526d6c3b070c2a7e50a56a38c6f4 data/create/recipes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json
|
||||
|
@ -3707,6 +3726,7 @@ f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/co
|
|||
0d188ad2c33d10ee8f0d455c4e63a4460a8302fb data/minecraft/tags/blocks/stairs.json
|
||||
92584f914c53e00c111f9ff5e3894e2e3594946b data/minecraft/tags/blocks/walls.json
|
||||
09d26bcd0f94459f945219997277c4fbf14adeb7 data/minecraft/tags/fluids/water.json
|
||||
49cadea86f6b63d5065b859a0d0e7ad772cf51d6 data/minecraft/tags/items/piglin_loved.json
|
||||
29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/items/slabs.json
|
||||
0d188ad2c33d10ee8f0d455c4e63a4460a8302fb data/minecraft/tags/items/stairs.json
|
||||
92584f914c53e00c111f9ff5e3894e2e3594946b data/minecraft/tags/items/walls.json
|
||||
|
|
|
@ -469,6 +469,7 @@
|
|||
"item.create.integrated_circuit": "\u0287\u0131n\u0254\u0279\u0131\u0186 p\u01DD\u0287\u0250\u0279b\u01DD\u0287uI",
|
||||
"item.create.iron_sheet": "\u0287\u01DD\u01DD\u0265S uo\u0279I",
|
||||
"item.create.lapis_sheet": "\u0287\u01DD\u01DD\u0265S s\u0131d\u0250\uA780",
|
||||
"item.create.linked_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 p\u01DD\u029Eu\u0131\uA780",
|
||||
"item.create.minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W",
|
||||
"item.create.minecart_coupling": "bu\u0131\u05DFdno\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W",
|
||||
"item.create.polished_rose_quartz": "z\u0287\u0279\u0250n\u1F49 \u01DDso\u1D1A p\u01DD\u0265s\u0131\u05DFo\u0500",
|
||||
|
|
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Integrated Circuit",
|
||||
"item.create.iron_sheet": "Iron Sheet",
|
||||
"item.create.lapis_sheet": "Lapis Sheet",
|
||||
"item.create.linked_controller": "Linked Controller",
|
||||
"item.create.minecart_contraption": "Minecart Contraption",
|
||||
"item.create.minecart_coupling": "Minecart Coupling",
|
||||
"item.create.polished_rose_quartz": "Polished Rose Quartz",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "Contains: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "Bind mode active",
|
||||
"create.linked_controller.press_keybind": "Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "Bottomless Supply",
|
||||
"create.hint.hose_pulley": "The targeted body of fluid is considered infinite.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "No Targets",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime squishes",
|
||||
"create.subtitle.saw_idle": "Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "Wrench used",
|
||||
"create.subtitle.mixing": "Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "Item slides",
|
||||
"create.subtitle.deny": "Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "Crafter crafts",
|
||||
"create.subtitle.saw_process": "Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "Component breaks",
|
||||
"create.subtitle.cogs": "Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "Deployer applies polish",
|
||||
"create.subtitle.deny": "Declining boop",
|
||||
"create.subtitle.controller_click": "Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "Schematicannon fires",
|
||||
"create.subtitle.copper_armor_equip": "Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "Contraption moves",
|
||||
"create.subtitle.crafter_craft": "Crafter crafts",
|
||||
"create.subtitle.cranking": "Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "Component breaks",
|
||||
"create.subtitle.depot_plop": "Item lands",
|
||||
"create.subtitle.confirm": "Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 942",
|
||||
"_": "Missing Localizations: 953",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Integrierter Schaltkreis",
|
||||
"item.create.iron_sheet": "Eisenblech",
|
||||
"item.create.lapis_sheet": "Lapislazuliblech",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "Loren Vorrichtung",
|
||||
"item.create.minecart_coupling": "Lorenkupplung",
|
||||
"item.create.polished_rose_quartz": "Polierter Rosenquarz",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "Propeller ziehen von unterhalb",
|
||||
"create.tooltip.chute.contains": "Enthält: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "Endlose Versorgung",
|
||||
"create.hint.hose_pulley": "Das angewählte Gewässer wird als unendlich betrachtet.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "Keine Ziele",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Schleim matscht",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "Lohe kaut glücklich",
|
||||
"create.subtitle.schematicannon_launch_block": "Bauplankanone schießt",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Bauplankanone endet",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Schleim matscht",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "Bauplankanone schießt",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 643",
|
||||
"_": "Missing Localizations: 654",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Chip de circuito integrado",
|
||||
"item.create.iron_sheet": "Lámina de hierro",
|
||||
"item.create.lapis_sheet": "Lámina de lapislázuli",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "Artilugio de vagoneta",
|
||||
"item.create.minecart_coupling": "Acoplamiento de vagoneta",
|
||||
"item.create.polished_rose_quartz": "Cuarzo rosado pulido",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "Los ventiladores tiran desde abajo",
|
||||
"create.tooltip.chute.contains": "Contiene: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "Suministro sin fondo",
|
||||
"create.hint.hose_pulley": "La masa de fluido objetivo se considera infinita",
|
||||
"create.hint.mechanical_arm_no_targets.title": "No hay objetivos",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime aplastado",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "Blaze mastica felizmente",
|
||||
"create.subtitle.schematicannon_launch_block": "Disparos de Schematicannon",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Acabados de Schematicannon",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime aplastado",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "Disparos de Schematicannon",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "La Prensa Mecánica se activa",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1266",
|
||||
"_": "Missing Localizations: 1277",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Circuito Integrado",
|
||||
"item.create.iron_sheet": "Lámina de Hierro",
|
||||
"item.create.lapis_sheet": "Lámina de Lapislázuli",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "Artefacto de Vagón",
|
||||
"item.create.minecart_coupling": "Acoplamiento de Vagonetas",
|
||||
"item.create.polished_rose_quartz": "Cuarzo Rosa Pulido",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply",
|
||||
"create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1194",
|
||||
"_": "Missing Localizations: 1205",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Circuit intégré",
|
||||
"item.create.iron_sheet": "Plaque de Fer",
|
||||
"item.create.lapis_sheet": "Feuille de lapis",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "Engin de wagonnet",
|
||||
"item.create.minecart_coupling": "Lien pour wagonnet",
|
||||
"item.create.polished_rose_quartz": "Quartz rose poli",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply",
|
||||
"create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Bruit de slime",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "Tir de schémacanon",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Fin de schémacanon",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Bruit de slime",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "Tir de schémacanon",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "Activation de la presse mechanique",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 660",
|
||||
"_": "Missing Localizations: 671",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Circuito integrato",
|
||||
"item.create.iron_sheet": "Lamiera di ferro",
|
||||
"item.create.lapis_sheet": "Lamiera di lapislazzuli",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "Contrazione per carrello da miniera",
|
||||
"item.create.minecart_coupling": "Aggancio per carrelli da miniera",
|
||||
"item.create.polished_rose_quartz": "Quarzo rosa levigato",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "I ventilatori tirano da sotto",
|
||||
"create.tooltip.chute.contains": "Contiene: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "Buco senza fondo",
|
||||
"create.hint.hose_pulley": "Il corpo fluido selezionato è considerato infinito.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "Nessun bersaglio",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime schiacciato",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "Il blaze lo gusta felicemente",
|
||||
"create.subtitle.schematicannon_launch_block": "Tiri del cannoneschematico",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Finiture cannoneschematico",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime schiacciato",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "Tiri del cannoneschematico",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "Pressa meccanica attiva",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 24",
|
||||
"_": "Missing Localizations: 35",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "集積回路",
|
||||
"item.create.iron_sheet": "鉄板",
|
||||
"item.create.lapis_sheet": "ラピスラズリ板",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "からくり付きトロッコ",
|
||||
"item.create.minecart_coupling": "トロッコ連結器",
|
||||
"item.create.polished_rose_quartz": "磨かれたローズクォーツ",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "ファンが下から吸い込んでいます",
|
||||
"create.tooltip.chute.contains": "内容物: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "底なし搬出",
|
||||
"create.hint.hose_pulley": "対象となる液体は無限とみなされています。",
|
||||
"create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "歯車がゴロゴロと鳴る",
|
||||
"create.subtitle.slime_added": "スライムがぐしゃっとつぶれる",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "からくりが止まる",
|
||||
"create.subtitle.wrench_rotate": "レンチを使う",
|
||||
"create.subtitle.mixing": "混ぜる音",
|
||||
"create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "アイテムが滑る",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "ブレイズの咀嚼音",
|
||||
"create.subtitle.schematicannon_launch_block": "概略図砲が発射する",
|
||||
"create.subtitle.funnel_flap": "ファンネルがはためく",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "概略図砲が作業を終える",
|
||||
"create.subtitle.scroll_value": "スクロールのカチカチ音",
|
||||
"create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "ハンドクランクが回る",
|
||||
"create.subtitle.wrench_remove": "機械を壊す",
|
||||
"create.subtitle.cogs": "歯車がゴロゴロと鳴る",
|
||||
"create.subtitle.slime_added": "スライムがぐしゃっとつぶれる",
|
||||
"create.subtitle.wrench_rotate": "レンチを使う",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "概略図砲が発射する",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る",
|
||||
"create.subtitle.contraption_assemble": "からくりが動く",
|
||||
"create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする",
|
||||
"create.subtitle.cranking": "ハンドクランクが回る",
|
||||
"create.subtitle.crafter_click": "メカニカルクラフターのカチカチ音",
|
||||
"create.subtitle.wrench_remove": "機械を壊す",
|
||||
"create.subtitle.depot_plop": "デプロイヤーにアイテムが入れられる",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 713",
|
||||
"_": "Missing Localizations: 724",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "집적 회로",
|
||||
"item.create.iron_sheet": "철 판",
|
||||
"item.create.lapis_sheet": "청금석 판",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "광산 수레 장치",
|
||||
"item.create.minecart_coupling": "광산 수레 커플링",
|
||||
"item.create.polished_rose_quartz": "윤나는 장밋빛 석영",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "선풍기가 아래에서 당김",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply",
|
||||
"create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "목표 없음",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "슬라임이 철퍽거림",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "블레이즈가 행복하게 섭취함",
|
||||
"create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "청사진 대포가 끝남",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "슬라임이 철퍽거림",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "압착기가 가동됨",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1577",
|
||||
"_": "Missing Localizations: 1588",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit",
|
||||
"item.create.iron_sheet": "IJzeren Platen",
|
||||
"item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption",
|
||||
"item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling",
|
||||
"item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply",
|
||||
"create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 38",
|
||||
"_": "Missing Localizations: 11",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -58,7 +58,7 @@
|
|||
"block.create.cogwheel": "Koło zębate",
|
||||
"block.create.content_observer": "Detektor zawartości",
|
||||
"block.create.controller_rail": "Tory sterujące",
|
||||
"block.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
|
||||
"block.create.copper_backtank": "Miedziany zbiornik w plecaku",
|
||||
"block.create.copper_block": "Blok miedzi",
|
||||
"block.create.copper_casing": "Miedziana Obudowa",
|
||||
"block.create.copper_ore": "Ruda miedzi",
|
||||
|
@ -439,7 +439,7 @@
|
|||
"item.create.chocolate_glazed_berries": "Jagody w czekoladzie",
|
||||
"item.create.chromatic_compound": "Związek chromatyczny",
|
||||
"item.create.cinder_flour": "Rozżarzona mąka",
|
||||
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
|
||||
"item.create.copper_backtank": "Miedziany zbiornik w plecaku",
|
||||
"item.create.copper_ingot": "Sztabka miedzi",
|
||||
"item.create.copper_nugget": "Bryłka miedzi",
|
||||
"item.create.copper_sheet": "Arkusz miedzi",
|
||||
|
@ -458,8 +458,8 @@
|
|||
"item.create.crushed_tin_ore": "Rozkruszona ruda cyny",
|
||||
"item.create.crushed_uranium_ore": "Rozkruszona ruda uranu",
|
||||
"item.create.crushed_zinc_ore": "Rozkruszona ruda cynku",
|
||||
"item.create.diving_boots": "UNLOCALIZED: Diving Boots",
|
||||
"item.create.diving_helmet": "UNLOCALIZED: Diving Helmet",
|
||||
"item.create.diving_boots": "Buty do nurkowania",
|
||||
"item.create.diving_helmet": "Hełm do nurkowania",
|
||||
"item.create.dough": "Ciasto",
|
||||
"item.create.electron_tube": "Lampa elektronowa",
|
||||
"item.create.empty_blaze_burner": "Pusty płomienny palnik",
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Układ scalony",
|
||||
"item.create.iron_sheet": "Arkusz żelaza",
|
||||
"item.create.lapis_sheet": "Arkusz lazurytu",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "Maszyna w wagoniku",
|
||||
"item.create.minecart_coupling": "Łącznik wagoników",
|
||||
"item.create.polished_rose_quartz": "Wypolerowany kwarc różowy",
|
||||
|
@ -682,7 +683,7 @@
|
|||
"create.recipe.fan_blasting.fan": "Wiatrak za lawą",
|
||||
"create.recipe.pressing": "Tłoczenie",
|
||||
"create.recipe.mixing": "Mieszanie",
|
||||
"create.recipe.deploying": "UNLOCALIZED: Deploying",
|
||||
"create.recipe.deploying": "Aplikowanie",
|
||||
"create.recipe.automatic_shapeless": "Zautomatyzowanie nieokreślone konstruowanie",
|
||||
"create.recipe.automatic_brewing": "Zautomatyzowane warzenie",
|
||||
"create.recipe.packing": "Prasowanie",
|
||||
|
@ -749,15 +750,15 @@
|
|||
"create.orientation.alongX": "Wzdłuż X",
|
||||
|
||||
"create.gui.terrainzapper.title": "Ręczny kształter",
|
||||
"create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals",
|
||||
"create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders",
|
||||
"create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern",
|
||||
"create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid",
|
||||
"create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard",
|
||||
"create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard",
|
||||
"create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll",
|
||||
"create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll",
|
||||
"create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll",
|
||||
"create.gui.terrainzapper.searchDiagonal": "Wzdłuż linii ukośnych",
|
||||
"create.gui.terrainzapper.searchFuzzy": "Ignoruj krawędzie materiałów",
|
||||
"create.gui.terrainzapper.patternSection": "Wzór",
|
||||
"create.gui.terrainzapper.pattern.solid": "Ciągły",
|
||||
"create.gui.terrainzapper.pattern.checkered": "Szachownica",
|
||||
"create.gui.terrainzapper.pattern.inversecheckered": "Odrócona szachownica",
|
||||
"create.gui.terrainzapper.pattern.chance25": "Obrót o 25%",
|
||||
"create.gui.terrainzapper.pattern.chance50": "Obrót o 50%",
|
||||
"create.gui.terrainzapper.pattern.chance75": "Obrót o 75%",
|
||||
"create.gui.terrainzapper.placement": "Położenie",
|
||||
"create.gui.terrainzapper.placement.merged": "Połączony",
|
||||
"create.gui.terrainzapper.placement.attached": "Przyłączony",
|
||||
|
@ -766,8 +767,8 @@
|
|||
"create.gui.terrainzapper.brush.cuboid": "Prostopadłościan",
|
||||
"create.gui.terrainzapper.brush.sphere": "Kula",
|
||||
"create.gui.terrainzapper.brush.cylinder": "Walec",
|
||||
"create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface",
|
||||
"create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster",
|
||||
"create.gui.terrainzapper.brush.surface": "Powierzchnia",
|
||||
"create.gui.terrainzapper.brush.cluster": "Grupa",
|
||||
"create.gui.terrainzapper.tool": "Narzędzie",
|
||||
"create.gui.terrainzapper.tool.fill": "Wypełnianie",
|
||||
"create.gui.terrainzapper.tool.place": "Stawianie",
|
||||
|
@ -777,8 +778,8 @@
|
|||
"create.gui.terrainzapper.tool.flatten": "Wypłaszczanie",
|
||||
|
||||
"create.terrainzapper.shiftRightClickToSet": "Shift+Prawe kliknięcie, aby wybrać kształt",
|
||||
"create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material",
|
||||
"create.terrainzapper.usingBlock": "Używając: %1$s",
|
||||
"create.terrainzapper.leftClickToSet": "Kliknij LPM na blok aby ustawić materiał",
|
||||
|
||||
"create.minecart_coupling.two_couplings_max": "Wagoniki nie mogą mieć więcej niż dwa łączniki każdy",
|
||||
"create.minecart_coupling.unloaded": "Część twojego pociągu wydaje się być w niezaładowanych Chunkach.",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "Wiatraki ciągną od dołu",
|
||||
"create.tooltip.chute.contains": "Zawiera: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "Niewyczerpany zapas",
|
||||
"create.hint.hose_pulley": "Wybrane zbiornik cieczy jest uznany za nieskończony",
|
||||
"create.hint.mechanical_arm_no_targets.title": "Brak celi",
|
||||
|
@ -1131,35 +1138,40 @@
|
|||
"create.command.killTPSCommand.status.usage.1": "[Create]: Użyj \"/killtps start\", aby sztucznie spowolnić serwer\n",
|
||||
"create.command.killTPSCommand.argument.tickTime": "tickTime",
|
||||
|
||||
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
|
||||
"create.contraption.minecart_contraption_too_big": "Ta maszyna w wagoniku jest zbyt duża, aby ją podnieść",
|
||||
|
||||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Szlam plaska",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "Maszyna staje",
|
||||
"create.subtitle.mixing": "Dźwięki mieszania",
|
||||
"create.subtitle.mechanical_press_activation_belt": "Mechaniczna prasa stuka",
|
||||
"create.subtitle.worldshaper_place": "Kształter strzela",
|
||||
"create.subtitle.depot_slide": "Przedmiot ślizga się",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "Płomyk szczęśliwie przeżuwa",
|
||||
"create.subtitle.schematicannon_launch_block": "Schematoarmata strzela",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.funnel_flap": "Lejek trzepocze",
|
||||
"create.subtitle.schematicannon_finish": "Schematoarmata skończyła",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.scroll_value": "Kliknięcie",
|
||||
"create.subtitle.crafter_craft": "Mechaniczny stół rzemieślniczy konstruuje",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "Ręczna korba obraca się",
|
||||
"create.subtitle.wrench_remove": "Komponent niszczy się",
|
||||
"create.subtitle.cogs": "Koła zębate terkoczą",
|
||||
"create.subtitle.slime_added": "Szlam plaska",
|
||||
"create.subtitle.wrench_rotate": "Klucz skrzypi",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "Aplikator poleruje",
|
||||
"create.subtitle.deny": "Dźwięk odmowy",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "Schematoarmata strzela",
|
||||
"create.subtitle.copper_armor_equip": "Sprzęt do nurkowania pobrzękuje",
|
||||
"create.subtitle.mechanical_press_activation": "Mechaniczna prasa się uruchamia",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
"create.subtitle.contraption_assemble": "Maszyna przesuwa się",
|
||||
"create.subtitle.crafter_click": "Mechaniczny stół rzemieślniczy stuka",
|
||||
"create.subtitle.depot_plop": "Przedmiot ląduje",
|
||||
"create.subtitle.confirm": "Dźwięk potwierdzenia",
|
||||
|
||||
|
||||
"_": "->------------------------] Item Descriptions [------------------------<-",
|
||||
|
@ -1538,11 +1550,11 @@
|
|||
"create.ponder.blaze_burner.text_3": "Z użyciem płomiennego ciasta, palnik może uzyskać szczególnie wysoką temperaturę",
|
||||
"create.ponder.blaze_burner.text_4": "Dostarczanie płomykowi przedmiotów może zostać zautomatyzowane z użyciem aplikatorów lub mechanicznych ramion",
|
||||
|
||||
"create.ponder.brass_funnel.header": "Mosiężny lejek",
|
||||
"create.ponder.brass_funnel.text_1": "Andezytowe lejki mogą pobierać jedynie pojedyncze przedmioty",
|
||||
"create.ponder.brass_funnel.text_2": "Mosiężne lejki mogą pobierać nawet pełne stosy",
|
||||
"create.ponder.brass_funnel.header": "Mosiężny lej",
|
||||
"create.ponder.brass_funnel.text_1": "Andezytowe leje mogą pobierać jedynie pojedyncze przedmioty",
|
||||
"create.ponder.brass_funnel.text_2": "Mosiężne leje mogą pobierać nawet pełne stosy",
|
||||
"create.ponder.brass_funnel.text_3": "Przewijanie na slocie filtrującym pozwala na precyzyjną kontrolę nad maksymalną wielkością stosu",
|
||||
"create.ponder.brass_funnel.text_4": "Użycie przedmiotów patrząc na slot filtrujący spowoduje, że lejek będzie przesyłał tylko pasujące przedmioty",
|
||||
"create.ponder.brass_funnel.text_4": "Użycie przedmiotu patrząc na slot filtrujący spowoduje, że lej będzie przesyłał tylko pasujące przedmioty",
|
||||
|
||||
"create.ponder.brass_tunnel.header": "Używanie mosiężnych tuneli",
|
||||
"create.ponder.brass_tunnel.text_1": "Mosiężne tunele mogą być użyte do przykrycia Twoich taśmociągów",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1629",
|
||||
"_": "Missing Localizations: 1640",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit",
|
||||
"item.create.iron_sheet": "Placas de Ferro",
|
||||
"item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption",
|
||||
"item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling",
|
||||
"item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "UNLOCALIZED: Fans pull from Below",
|
||||
"create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply",
|
||||
"create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 557",
|
||||
"_": "Missing Localizations: 568",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "Интегральная схема",
|
||||
"item.create.iron_sheet": "Железный лист",
|
||||
"item.create.lapis_sheet": "Лазуритовый лист",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "Вагонеточная штуковина",
|
||||
"item.create.minecart_coupling": "Связыватель вагонеток",
|
||||
"item.create.polished_rose_quartz": "Полированный розовый кварц",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу",
|
||||
"create.tooltip.chute.contains": "Содержит: %1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "Безграничное снабжение",
|
||||
"create.hint.hose_pulley": "Целевой водный резервуар считается бесконечным.",
|
||||
"create.hint.mechanical_arm_no_targets.title": "Нет целей",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Намазывание слизи",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "Всполох радостно жуёт",
|
||||
"create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Схематичная пушка закончила работу",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Намазывание слизи",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "Механический пресс активирован",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 43",
|
||||
"_": "Missing Localizations: 54",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.integrated_circuit": "集成电路板",
|
||||
"item.create.iron_sheet": "铁板",
|
||||
"item.create.lapis_sheet": "青金石板",
|
||||
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
|
||||
"item.create.minecart_contraption": "装配过的矿车",
|
||||
"item.create.minecart_coupling": "矿车连轴器",
|
||||
"item.create.polished_rose_quartz": "磨制玫瑰石英",
|
||||
|
@ -1105,6 +1106,12 @@
|
|||
"create.tooltip.chute.fans_pull_down": "鼓风机从下方进行吸引",
|
||||
"create.tooltip.chute.contains": "内含物品:%1$s x%2$s",
|
||||
|
||||
"create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active",
|
||||
"create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key",
|
||||
"create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s",
|
||||
"create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1",
|
||||
"create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2",
|
||||
|
||||
"create.hint.hose_pulley.title": "无限供应",
|
||||
"create.hint.hose_pulley": "目标液体对象被视为无限量的。",
|
||||
"create.hint.mechanical_arm_no_targets.title": "没有目标",
|
||||
|
@ -1136,28 +1143,33 @@
|
|||
|
||||
"_": "->------------------------] Subtitles [------------------------<-",
|
||||
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "粘液:挤碎声",
|
||||
"create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns",
|
||||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.blaze_munch": "烈焰人:咀嚼",
|
||||
"create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "蓝图加农炮:叮",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "粘液:挤碎声",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
|
||||
"create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.mechanical_press_activation": "辊压机:工作中",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
|
||||
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:item/linked_controller/item"
|
||||
}
|
|
@ -49,6 +49,15 @@
|
|||
],
|
||||
"subtitle": "create.subtitle.contraption_disassemble"
|
||||
},
|
||||
"controller_click": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:entity.item_frame.add_item",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.controller_click"
|
||||
},
|
||||
"copper_armor_equip": {
|
||||
"sounds": [
|
||||
{
|
||||
|
@ -205,6 +214,42 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"saw_activate_stone": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:ui.stonecutter.take_result",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.saw_activate_stone"
|
||||
},
|
||||
"saw_activate_wood": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:entity.boat.paddle_land",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.saw_activate_wood"
|
||||
},
|
||||
"saw_idle": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:entity.boat.paddle_land",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.saw_idle"
|
||||
},
|
||||
"saw_process": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:block.sand.place",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.saw_process"
|
||||
},
|
||||
"schematicannon_finish": {
|
||||
"sounds": [
|
||||
{
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
"trigger": "create:bracket_apply",
|
||||
"conditions": {
|
||||
"accepted_entries": [
|
||||
"create:large_cogwheel",
|
||||
"create:cogwheel"
|
||||
"create:cogwheel",
|
||||
"create:large_cogwheel"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:andesite"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_andesite_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:andesite_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:andesite"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_andesite_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:diorite"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_diorite_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:diorite_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:diorite"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_diorite_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:granite"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_granite_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:granite_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:granite"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_granite_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_andesite": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_andesite",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:dark_scoria"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_dark_scoria_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:dark_scoria_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:dark_scoria"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_dark_scoria_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_dark_scoria": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_dark_scoria",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_diorite": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_diorite",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:dolomite"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_dolomite_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:dolomite_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:dolomite"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_dolomite_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_dolomite": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_dolomite",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:gabbro"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_gabbro_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:gabbro_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:gabbro"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_gabbro_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_gabbro": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_gabbro",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_granite": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_granite",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:limestone"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_limestone_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:limestone_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:limestone"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_limestone_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_limestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_limestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:scoria"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_scoria_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:scoria_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:scoria"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_scoria_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_scoria": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_scoria",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"create:weathered_limestone"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_weathered_limestone_cobblestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"item": "create:weathered_limestone_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "create:weathered_limestone"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_weathered_limestone_cobblestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
]
|
||||
},
|
||||
"criteria": {
|
||||
"has_ingredient": {
|
||||
"has_weathered_limestone": {
|
||||
"trigger": "minecraft:inventory_changed",
|
||||
"conditions": {
|
||||
"items": [
|
||||
|
@ -25,7 +25,7 @@
|
|||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_ingredient",
|
||||
"has_weathered_limestone",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -5,13 +5,37 @@
|
|||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:dark_scoria"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
"type": "minecraft:alternatives",
|
||||
"children": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"enchantments": [
|
||||
{
|
||||
"enchantment": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "create:dark_scoria"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"name": "create:dark_scoria_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -5,13 +5,37 @@
|
|||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:dolomite"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
"type": "minecraft:alternatives",
|
||||
"children": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"enchantments": [
|
||||
{
|
||||
"enchantment": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "create:dolomite"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"name": "create:dolomite_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -5,13 +5,37 @@
|
|||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:gabbro"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
"type": "minecraft:alternatives",
|
||||
"children": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"enchantments": [
|
||||
{
|
||||
"enchantment": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "create:gabbro"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"name": "create:gabbro_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -5,13 +5,37 @@
|
|||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:limestone"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
"type": "minecraft:alternatives",
|
||||
"children": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"enchantments": [
|
||||
{
|
||||
"enchantment": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "create:limestone"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"name": "create:limestone_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -5,13 +5,37 @@
|
|||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:scoria"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
"type": "minecraft:alternatives",
|
||||
"children": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"enchantments": [
|
||||
{
|
||||
"enchantment": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "create:scoria"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"name": "create:scoria_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -5,13 +5,37 @@
|
|||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "create:weathered_limestone"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
"type": "minecraft:alternatives",
|
||||
"children": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"enchantments": [
|
||||
{
|
||||
"enchantment": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"name": "create:weathered_limestone"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
],
|
||||
"name": "create:weathered_limestone_cobblestone"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:andesite_cobblestone"
|
||||
},
|
||||
"result": "minecraft:andesite",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:dark_scoria_cobblestone"
|
||||
},
|
||||
"result": "create:dark_scoria",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
9
src/generated/resources/data/create/recipes/diorite.json
Normal file
9
src/generated/resources/data/create/recipes/diorite.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:diorite_cobblestone"
|
||||
},
|
||||
"result": "minecraft:diorite",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:dolomite_cobblestone"
|
||||
},
|
||||
"result": "create:dolomite",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
9
src/generated/resources/data/create/recipes/gabbro.json
Normal file
9
src/generated/resources/data/create/recipes/gabbro.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:gabbro_cobblestone"
|
||||
},
|
||||
"result": "create:gabbro",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
9
src/generated/resources/data/create/recipes/granite.json
Normal file
9
src/generated/resources/data/create/recipes/granite.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:granite_cobblestone"
|
||||
},
|
||||
"result": "minecraft:granite",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:limestone_cobblestone"
|
||||
},
|
||||
"result": "create:limestone",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XX",
|
||||
"XX"
|
||||
"##",
|
||||
"##"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"#": {
|
||||
"item": "create:dark_scoria"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XX",
|
||||
"XX"
|
||||
"##",
|
||||
"##"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"#": {
|
||||
"item": "create:dolomite"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XX",
|
||||
"XX"
|
||||
"##",
|
||||
"##"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"#": {
|
||||
"item": "create:gabbro"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XX",
|
||||
"XX"
|
||||
"##",
|
||||
"##"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"#": {
|
||||
"item": "create:limestone"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XX",
|
||||
"XX"
|
||||
"##",
|
||||
"##"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"#": {
|
||||
"item": "create:scoria"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XX",
|
||||
"XX"
|
||||
"##",
|
||||
"##"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"#": {
|
||||
"item": "create:weathered_limestone"
|
||||
}
|
||||
},
|
||||
|
|
9
src/generated/resources/data/create/recipes/scoria.json
Normal file
9
src/generated/resources/data/create/recipes/scoria.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:scoria_cobblestone"
|
||||
},
|
||||
"result": "create:scoria",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"type": "minecraft:smelting",
|
||||
"ingredient": {
|
||||
"item": "create:weathered_limestone_cobblestone"
|
||||
},
|
||||
"result": "create:weathered_limestone",
|
||||
"experience": 0.1,
|
||||
"cookingtime": 200
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"create:golden_sheet",
|
||||
"create:crushed_gold_ore"
|
||||
]
|
||||
}
|
|
@ -2,6 +2,8 @@ package com.simibubi.create;
|
|||
|
||||
import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateContainer;
|
||||
import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateScreen;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerContainer;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerScreen;
|
||||
import com.simibubi.create.content.logistics.item.filter.AttributeFilterContainer;
|
||||
import com.simibubi.create.content.logistics.item.filter.AttributeFilterScreen;
|
||||
import com.simibubi.create.content.logistics.item.filter.FilterContainer;
|
||||
|
@ -22,25 +24,27 @@ import net.minecraft.inventory.container.Container;
|
|||
public class AllContainerTypes {
|
||||
|
||||
public static final ContainerEntry<SchematicTableContainer> SCHEMATIC_TABLE =
|
||||
register("schematic_table", SchematicTableContainer::new, () -> SchematicTableScreen::new);
|
||||
register("schematic_table", SchematicTableContainer::new, () -> SchematicTableScreen::new);
|
||||
|
||||
public static final ContainerEntry<SchematicannonContainer> SCHEMATICANNON =
|
||||
register("schematicannon", SchematicannonContainer::new, () -> SchematicannonScreen::new);
|
||||
register("schematicannon", SchematicannonContainer::new, () -> SchematicannonScreen::new);
|
||||
|
||||
public static final ContainerEntry<AdjustableCrateContainer> FLEXCRATE =
|
||||
register("flexcrate", AdjustableCrateContainer::new, () -> AdjustableCrateScreen::new);
|
||||
register("flexcrate", AdjustableCrateContainer::new, () -> AdjustableCrateScreen::new);
|
||||
|
||||
public static final ContainerEntry<FilterContainer> FILTER =
|
||||
register("filter", FilterContainer::new, () -> FilterScreen::new);
|
||||
register("filter", FilterContainer::new, () -> FilterScreen::new);
|
||||
|
||||
public static final ContainerEntry<AttributeFilterContainer> ATTRIBUTE_FILTER =
|
||||
register("attribute_filter", AttributeFilterContainer::new, () -> AttributeFilterScreen::new);
|
||||
register("attribute_filter", AttributeFilterContainer::new, () -> AttributeFilterScreen::new);
|
||||
|
||||
public static final ContainerEntry<LinkedControllerContainer> LINKED_CONTROLLER =
|
||||
register("linked_controller", LinkedControllerContainer::new, () -> LinkedControllerScreen::new);
|
||||
|
||||
private static <C extends Container, S extends Screen & IHasContainer<C>> ContainerEntry<C> register(String name, ForgeContainerFactory<C> factory, NonNullSupplier<ScreenFactory<C, S>> screenFactory) {
|
||||
return Create.registrate().container(name, factory, screenFactory).register();
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
}
|
||||
public static void register() {}
|
||||
|
||||
}
|
||||
|
|
|
@ -41,6 +41,8 @@ import com.simibubi.create.content.curiosities.tools.SandPaperItem;
|
|||
import com.simibubi.create.content.curiosities.tools.SandPaperItemRenderer.SandPaperModel;
|
||||
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperItem;
|
||||
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperModel;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerItem;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerModel;
|
||||
import com.simibubi.create.content.logistics.item.filter.FilterItem;
|
||||
import com.simibubi.create.content.schematics.item.SchematicAndQuillItem;
|
||||
import com.simibubi.create.content.schematics.item.SchematicItem;
|
||||
|
@ -56,6 +58,7 @@ import net.minecraft.item.Food;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Rarity;
|
||||
import net.minecraft.tags.ITag;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class AllItems {
|
||||
|
@ -145,11 +148,11 @@ public class AllItems {
|
|||
COPPER_SHEET = taggedIngredient("copper_sheet", forgeItemTag("plates/copper"), PLATES.tag),
|
||||
BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass"), PLATES.tag),
|
||||
IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron"), PLATES.tag),
|
||||
GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), PLATES.tag),
|
||||
GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), PLATES.tag, ItemTags.PIGLIN_LOVED),
|
||||
LAPIS_SHEET = taggedIngredient("lapis_sheet", forgeItemTag("plates/lapis_lazuli"), PLATES.tag),
|
||||
|
||||
CRUSHED_IRON = taggedIngredient("crushed_iron_ore", CRUSHED_ORES.tag),
|
||||
CRUSHED_GOLD = taggedIngredient("crushed_gold_ore", CRUSHED_ORES.tag),
|
||||
CRUSHED_GOLD = taggedIngredient("crushed_gold_ore", CRUSHED_ORES.tag, ItemTags.PIGLIN_LOVED),
|
||||
CRUSHED_COPPER = taggedIngredient("crushed_copper_ore", CRUSHED_ORES.tag),
|
||||
CRUSHED_ZINC = taggedIngredient("crushed_zinc_ore", CRUSHED_ORES.tag),
|
||||
CRUSHED_BRASS = taggedIngredient("crushed_brass", CRUSHED_ORES.tag);
|
||||
|
@ -214,6 +217,12 @@ public class AllItems {
|
|||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<LinkedControllerItem> LINKED_CONTROLLER =
|
||||
REGISTRATE.item("linked_controller", LinkedControllerItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> LinkedControllerModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<SymmetryWandItem> WAND_OF_SYMMETRY =
|
||||
REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new))
|
||||
|
|
|
@ -152,12 +152,37 @@ public class AllSoundEvents {
|
|||
.playExisting(SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 1f, 1f)
|
||||
.category(SoundCategory.PLAYERS)
|
||||
.build(),
|
||||
|
||||
|
||||
AUTO_POLISH = create("deployer_polish").subtitle("Deployer applies polish")
|
||||
.playExisting(SoundEvents.UI_STONECUTTER_TAKE_RESULT, 1f, 1f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
CONTROLLER_CLICK = create("controller_click").subtitle("Controller clicks")
|
||||
.playExisting(SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, .35f, 1f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
SAW_ACTIVATE_WOOD = create("saw_activate_wood").subtitle("Mechanical Saw activates")
|
||||
.playExisting(SoundEvents.ENTITY_BOAT_PADDLE_LAND, .75f, 1.5f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
SAW_ACTIVATE_STONE = create("saw_activate_stone").subtitle("Mechanical Saw activates")
|
||||
.playExisting(SoundEvents.UI_STONECUTTER_TAKE_RESULT, .125f, 1.25f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
SAW_PROCESS = create("saw_process").subtitle("Mechanical Saw processes")
|
||||
.playExisting(SoundEvents.BLOCK_SAND_PLACE, .075f, .75f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
SAW_IDLE = create("saw_idle").subtitle("Mechanical Saw turns")
|
||||
.playExisting(SoundEvents.ENTITY_BOAT_PADDLE_LAND)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
BLAZE_MUNCH = create("blaze_munch").subtitle("Blaze Burner munches")
|
||||
.playExisting(SoundEvents.ENTITY_GENERIC_EAT, .5f, 1f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
|
@ -172,7 +197,7 @@ public class AllSoundEvents {
|
|||
for (SoundEntry entry : entries.values())
|
||||
entry.register(registry);
|
||||
}
|
||||
|
||||
|
||||
public static void prepare() {
|
||||
for (SoundEntry entry : entries.values())
|
||||
entry.prepare();
|
||||
|
@ -363,7 +388,7 @@ public class AllSoundEvents {
|
|||
this.wrappedEvents = wrappedEvents;
|
||||
compiledEvents = Lists.newArrayList();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void prepare() {
|
||||
for (int i = 0; i < wrappedEvents.size(); i++) {
|
||||
|
@ -376,7 +401,7 @@ public class AllSoundEvents {
|
|||
|
||||
@Override
|
||||
public void register(IForgeRegistry<SoundEvent> registry) {
|
||||
for (Pair<SoundEvent, Couple<Float>> pair : compiledEvents)
|
||||
for (Pair<SoundEvent, Couple<Float>> pair : compiledEvents)
|
||||
registry.register(pair.getFirst());
|
||||
}
|
||||
|
||||
|
@ -435,7 +460,7 @@ public class AllSoundEvents {
|
|||
public CustomSoundEntry(String id, String subtitle, SoundCategory category) {
|
||||
super(id, subtitle, category);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void prepare() {
|
||||
ResourceLocation location = getLocation();
|
||||
|
|
|
@ -8,8 +8,8 @@ import static com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTT
|
|||
import java.util.IdentityHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.simibubi.create.content.palettes.PaletteBlockPatterns;
|
||||
import com.simibubi.create.content.palettes.PaletteBlockPatterns.CTs;
|
||||
import com.simibubi.create.content.palettes.PaletteBlockPattern;
|
||||
import com.simibubi.create.content.palettes.PaletteBlockPattern.CTs;
|
||||
import com.simibubi.create.content.palettes.PaletteStoneVariants;
|
||||
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
|
||||
import com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTType;
|
||||
|
@ -23,7 +23,7 @@ import net.minecraft.item.DyeColor;
|
|||
public class AllSpriteShifts {
|
||||
|
||||
static final Map<WoodType, CTSpriteShiftEntry> WOODEN_WINDOWS = new IdentityHashMap<>();
|
||||
static final Map<PaletteStoneVariants, Map<PaletteBlockPatterns.CTs, CTSpriteShiftEntry>> PALETTE_VARIANT_PATTERNS =
|
||||
static final Map<PaletteStoneVariants, Map<PaletteBlockPattern.CTs, CTSpriteShiftEntry>> PALETTE_VARIANT_PATTERNS =
|
||||
new IdentityHashMap<>();
|
||||
|
||||
public static final Map<DyeColor, SpriteShiftEntry> DYED_BELTS = new IdentityHashMap<>(),
|
||||
|
@ -69,7 +69,7 @@ public class AllSpriteShifts {
|
|||
return WOODEN_WINDOWS.get(woodType);
|
||||
}
|
||||
|
||||
public static CTSpriteShiftEntry getVariantPattern(PaletteStoneVariants variant, PaletteBlockPatterns.CTs texture) {
|
||||
public static CTSpriteShiftEntry getVariantPattern(PaletteStoneVariants variant, PaletteBlockPattern.CTs texture) {
|
||||
return PALETTE_VARIANT_PATTERNS.get(variant)
|
||||
.get(texture);
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ public class AllSpriteShifts {
|
|||
IdentityHashMap<CTs, CTSpriteShiftEntry> map = new IdentityHashMap<>();
|
||||
PALETTE_VARIANT_PATTERNS.put(paletteStoneVariants, map);
|
||||
|
||||
for (PaletteBlockPatterns.CTs texture : PaletteBlockPatterns.CTs.values()) {
|
||||
for (PaletteBlockPattern.CTs texture : PaletteBlockPattern.CTs.values()) {
|
||||
String textureName = Lang.asId(texture.name());
|
||||
String target = "palettes/" + variantName + "/" + textureName;
|
||||
map.put(texture, getCT(texture.type, target));
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package com.simibubi.create.compat.jei;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
|
@ -81,12 +81,12 @@ public class CreateJEI implements IModPlugin {
|
|||
}
|
||||
|
||||
public IIngredientManager ingredientManager;
|
||||
final List<CreateRecipeCategory<?>> ALL = new ArrayList<>();
|
||||
final CreateRecipeCategory<?>
|
||||
private final List<CreateRecipeCategory<?>> allCategories = new ArrayList<>();
|
||||
private final CreateRecipeCategory<?>
|
||||
|
||||
milling = register("milling", MillingCategory::new).recipes(AllRecipeTypes.MILLING)
|
||||
.catalyst(AllBlocks.MILLSTONE::get)
|
||||
.build(),
|
||||
milling = register("milling", MillingCategory::new).recipes(AllRecipeTypes.MILLING)
|
||||
.catalyst(AllBlocks.MILLSTONE::get)
|
||||
.build(),
|
||||
|
||||
crushing = register("crushing", CrushingCategory::new).recipes(AllRecipeTypes.CRUSHING)
|
||||
.recipesExcluding(AllRecipeTypes.MILLING::getType, AllRecipeTypes.CRUSHING::getType)
|
||||
|
@ -106,7 +106,9 @@ public class CreateJEI implements IModPlugin {
|
|||
.build(),
|
||||
|
||||
blasting = register("fan_blasting", FanBlastingCategory::new)
|
||||
.recipesExcluding(() -> IRecipeType.SMELTING, () -> IRecipeType.SMOKING)
|
||||
.recipesExcluding(() -> IRecipeType.SMELTING, () -> IRecipeType.BLASTING)
|
||||
.recipes(() -> IRecipeType.BLASTING)
|
||||
.removeRecipes(() -> IRecipeType.SMOKING)
|
||||
.catalystStack(ProcessingViaFanCategory.getFan("fan_blasting"))
|
||||
.build(),
|
||||
|
||||
|
@ -213,20 +215,21 @@ public class CreateJEI implements IModPlugin {
|
|||
|
||||
@Override
|
||||
public void registerCategories(IRecipeCategoryRegistration registration) {
|
||||
ALL.forEach(registration::addRecipeCategories);
|
||||
allCategories.forEach(registration::addRecipeCategories);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipes(IRecipeRegistration registration) {
|
||||
ingredientManager = registration.getIngredientManager();
|
||||
ALL.forEach(c -> c.recipes.forEach(s -> registration.addRecipes(s.get(), c.getUid())));
|
||||
allCategories.forEach(c -> c.recipes.forEach(s -> registration.addRecipes(s.get(), c.getUid())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
|
||||
ALL.forEach(c -> c.recipeCatalysts.forEach(s -> registration.addRecipeCatalyst(s.get(), c.getUid())));
|
||||
allCategories.forEach(c -> c.recipeCatalysts.forEach(s -> registration.addRecipeCatalyst(s.get(), c.getUid())));
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
@Override
|
||||
public void registerGuiHandlers(IGuiHandlerRegistration registration) {
|
||||
SlotMover slotMover = new SlotMover();
|
||||
|
@ -239,98 +242,106 @@ public class CreateJEI implements IModPlugin {
|
|||
}
|
||||
|
||||
private class CategoryBuilder<T extends IRecipe<?>> {
|
||||
CreateRecipeCategory<T> category;
|
||||
private CreateRecipeCategory<T> category;
|
||||
private List<Consumer<List<IRecipe<?>>>> recipeListConsumers = new ArrayList<>();
|
||||
private Predicate<CRecipes> pred;
|
||||
|
||||
CategoryBuilder(String name, Supplier<CreateRecipeCategory<T>> category) {
|
||||
public CategoryBuilder(String name, Supplier<CreateRecipeCategory<T>> category) {
|
||||
this.category = category.get();
|
||||
this.category.setCategoryId(name);
|
||||
this.pred = Predicates.alwaysTrue();
|
||||
pred = Predicates.alwaysTrue();
|
||||
}
|
||||
|
||||
CategoryBuilder<T> catalyst(Supplier<IItemProvider> supplier) {
|
||||
return catalystStack(() -> new ItemStack(supplier.get()
|
||||
.asItem()));
|
||||
}
|
||||
|
||||
CategoryBuilder<T> catalystStack(Supplier<ItemStack> supplier) {
|
||||
category.recipeCatalysts.add(supplier);
|
||||
return this;
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipes(AllRecipeTypes recipeTypeEntry) {
|
||||
public CategoryBuilder<T> recipes(AllRecipeTypes recipeTypeEntry) {
|
||||
return recipes(recipeTypeEntry::getType);
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipes(Supplier<IRecipeType<T>> recipeType) {
|
||||
public CategoryBuilder<T> recipes(Supplier<IRecipeType<? extends T>> recipeType) {
|
||||
return recipes(r -> r.getType() == recipeType.get());
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipes(ResourceLocation serializer) {
|
||||
public CategoryBuilder<T> recipes(ResourceLocation serializer) {
|
||||
return recipes(r -> r.getSerializer()
|
||||
.getRegistryName()
|
||||
.equals(serializer));
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipes(Predicate<IRecipe<?>> pred) {
|
||||
public CategoryBuilder<T> recipes(Predicate<IRecipe<?>> pred) {
|
||||
return recipeList(() -> findRecipes(pred));
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipes(Predicate<IRecipe<?>> pred, Function<IRecipe<?>, T> converter) {
|
||||
public CategoryBuilder<T> recipes(Predicate<IRecipe<?>> pred, Function<IRecipe<?>, T> converter) {
|
||||
return recipeList(() -> findRecipes(pred), converter);
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipeList(Supplier<List<? extends IRecipe<?>>> list) {
|
||||
public CategoryBuilder<T> recipeList(Supplier<List<? extends IRecipe<?>>> list) {
|
||||
return recipeList(list, null);
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipeList(Supplier<List<? extends IRecipe<?>>> list, Function<IRecipe<?>, T> converter) {
|
||||
category.recipes.add(() -> {
|
||||
if (!this.pred.test(AllConfigs.SERVER.recipes))
|
||||
return Collections.emptyList();
|
||||
public CategoryBuilder<T> recipeList(Supplier<List<? extends IRecipe<?>>> list, Function<IRecipe<?>, T> converter) {
|
||||
recipeListConsumers.add(recipes -> {
|
||||
List<? extends IRecipe<?>> toAdd = list.get();
|
||||
if (converter != null)
|
||||
return list.get()
|
||||
toAdd = toAdd
|
||||
.stream()
|
||||
.map(converter)
|
||||
.collect(Collectors.toList());
|
||||
return list.get();
|
||||
recipes.addAll(toAdd);
|
||||
});
|
||||
return this;
|
||||
}
|
||||
|
||||
CategoryBuilder<T> recipesExcluding(Supplier<IRecipeType<? extends T>> recipeType,
|
||||
public CategoryBuilder<T> recipesExcluding(Supplier<IRecipeType<? extends T>> recipeType,
|
||||
Supplier<IRecipeType<? extends T>> excluded) {
|
||||
category.recipes.add(() -> {
|
||||
if (!this.pred.test(AllConfigs.SERVER.recipes))
|
||||
return Collections.emptyList();
|
||||
return findRecipesByTypeExcluding(recipeType.get(), excluded.get());
|
||||
recipeListConsumers.add(recipes -> {
|
||||
recipes.addAll(findRecipesByTypeExcluding(recipeType.get(), excluded.get()));
|
||||
});
|
||||
return this;
|
||||
}
|
||||
|
||||
CategoryBuilder<T> enableWhen(Function<CRecipes, ConfigBool> configValue) {
|
||||
this.pred = c -> configValue.apply(c)
|
||||
public CategoryBuilder<T> removeRecipes(Supplier<IRecipeType<? extends T>> recipeType) {
|
||||
recipeListConsumers.add(recipes -> {
|
||||
removeRecipesByType(recipes, recipeType.get());
|
||||
});
|
||||
return this;
|
||||
}
|
||||
|
||||
public CategoryBuilder<T> catalyst(Supplier<IItemProvider> supplier) {
|
||||
return catalystStack(() -> new ItemStack(supplier.get()
|
||||
.asItem()));
|
||||
}
|
||||
|
||||
public CategoryBuilder<T> catalystStack(Supplier<ItemStack> supplier) {
|
||||
category.recipeCatalysts.add(supplier);
|
||||
return this;
|
||||
}
|
||||
|
||||
public CategoryBuilder<T> enableWhen(Function<CRecipes, ConfigBool> configValue) {
|
||||
pred = c -> configValue.apply(c)
|
||||
.get();
|
||||
return this;
|
||||
}
|
||||
|
||||
CategoryBuilder<T> enableWhenBool(Function<CRecipes, Boolean> configValue) {
|
||||
this.pred = configValue::apply;
|
||||
public CategoryBuilder<T> enableWhenBool(Function<CRecipes, Boolean> configValue) {
|
||||
pred = configValue::apply;
|
||||
return this;
|
||||
}
|
||||
|
||||
CreateRecipeCategory<T> build() {
|
||||
ALL.add(category);
|
||||
public CreateRecipeCategory<T> build() {
|
||||
if (pred.test(AllConfigs.SERVER.recipes))
|
||||
category.recipes.add(() -> {
|
||||
List<IRecipe<?>> recipes = new ArrayList<>();
|
||||
for (Consumer<List<IRecipe<?>>> consumer : recipeListConsumers)
|
||||
consumer.accept(recipes);
|
||||
return recipes;
|
||||
});
|
||||
allCategories.add(category);
|
||||
return category;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static List<IRecipe<?>> findRecipesByType(IRecipeType<?> type) {
|
||||
return findRecipes(r -> r.getType() == type);
|
||||
}
|
||||
|
||||
static List<IRecipe<?>> findRecipes(Predicate<IRecipe<?>> predicate) {
|
||||
public static List<IRecipe<?>> findRecipes(Predicate<IRecipe<?>> predicate) {
|
||||
return Minecraft.getInstance().world.getRecipeManager()
|
||||
.getRecipes()
|
||||
.stream()
|
||||
|
@ -338,24 +349,44 @@ public class CreateJEI implements IModPlugin {
|
|||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
static List<IRecipe<?>> findRecipesByTypeExcluding(IRecipeType<?> type, IRecipeType<?> excludingType) {
|
||||
List<IRecipe<?>> byType = findRecipes(r -> r.getType() == type);
|
||||
List<IRecipe<?>> byExcludingType = findRecipes(r -> r.getType() == excludingType);
|
||||
byType.removeIf(recipe -> {
|
||||
for (IRecipe<?> r : byExcludingType) {
|
||||
ItemStack[] matchingStacks = recipe.getIngredients()
|
||||
.get(0)
|
||||
.getMatchingStacks();
|
||||
if (matchingStacks.length == 0)
|
||||
return true;
|
||||
if (r.getIngredients()
|
||||
.get(0)
|
||||
.test(matchingStacks[0]))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
public static List<IRecipe<?>> findRecipesByType(IRecipeType<?> type) {
|
||||
return findRecipes(recipe -> recipe.getType() == type);
|
||||
}
|
||||
|
||||
public static List<IRecipe<?>> findRecipesByTypeExcluding(IRecipeType<?> type, IRecipeType<?> excludingType) {
|
||||
List<IRecipe<?>> byType = findRecipesByType(type);
|
||||
removeRecipesByType(byType, excludingType);
|
||||
return byType;
|
||||
}
|
||||
|
||||
public static List<IRecipe<?>> findRecipesByTypeExcluding(IRecipeType<?> type, IRecipeType<?>... excludingTypes) {
|
||||
List<IRecipe<?>> byType = findRecipesByType(type);
|
||||
for (IRecipeType<?> excludingType : excludingTypes)
|
||||
removeRecipesByType(byType, excludingType);
|
||||
return byType;
|
||||
}
|
||||
|
||||
public static void removeRecipesByType(List<IRecipe<?>> recipes, IRecipeType<?> type) {
|
||||
List<IRecipe<?>> byType = findRecipesByType(type);
|
||||
recipes.removeIf(recipe -> {
|
||||
for (IRecipe<?> r : byType)
|
||||
if (doInputsMatch(recipe, r))
|
||||
return true;
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
public static boolean doInputsMatch(IRecipe<?> recipe1, IRecipe<?> recipe2) {
|
||||
ItemStack[] matchingStacks = recipe1.getIngredients()
|
||||
.get(0)
|
||||
.getMatchingStacks();
|
||||
if (matchingStacks.length == 0)
|
||||
return true;
|
||||
if (recipe2.getIngredients()
|
||||
.get(0)
|
||||
.test(matchingStacks[0]))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -31,13 +31,13 @@ import net.minecraftforge.fluids.FluidStack;
|
|||
|
||||
public abstract class CreateRecipeCategory<T extends IRecipe<?>> implements IRecipeCategory<T> {
|
||||
|
||||
public List<Supplier<? extends Object>> recipeCatalysts = new ArrayList<>();
|
||||
public List<Supplier<List<? extends IRecipe<?>>>> recipes = new ArrayList<>();
|
||||
public ResourceLocation uid;
|
||||
public final List<Supplier<List<? extends IRecipe<?>>>> recipes = new ArrayList<>();
|
||||
public final List<Supplier<? extends Object>> recipeCatalysts = new ArrayList<>();
|
||||
|
||||
protected ResourceLocation uid;
|
||||
protected String name;
|
||||
private IDrawable icon;
|
||||
private IDrawable background;
|
||||
private IDrawable icon;
|
||||
|
||||
public CreateRecipeCategory(IDrawable icon, IDrawable background) {
|
||||
this.background = background;
|
||||
|
@ -49,11 +49,6 @@ public abstract class CreateRecipeCategory<T extends IRecipe<?>> implements IRec
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IDrawable getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getUid() {
|
||||
return uid;
|
||||
|
@ -70,6 +65,11 @@ public abstract class CreateRecipeCategory<T extends IRecipe<?>> implements IRec
|
|||
return background;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IDrawable getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
protected static AllGuiTextures getRenderedSlot(IRecipe<?> recipe, int index) {
|
||||
AllGuiTextures jeiSlot = AllGuiTextures.JEI_SLOT;
|
||||
if (!(recipe instanceof ProcessingRecipe))
|
||||
|
|
|
@ -21,7 +21,6 @@ import mezz.jei.api.ingredients.IIngredients;
|
|||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraft.util.math.vector.Vector3f;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
|
||||
public abstract class ProcessingViaFanCategory<T extends IRecipe<?>> extends CreateRecipeCategory<T> {
|
||||
|
||||
|
@ -41,7 +40,7 @@ public abstract class ProcessingViaFanCategory<T extends IRecipe<?>> extends Cre
|
|||
|
||||
public static Supplier<ItemStack> getFan(String name) {
|
||||
return () -> AllBlocks.ENCASED_FAN.asStack()
|
||||
.setDisplayName(Lang.translate("recipe." + name + ".fan").formatted(TextFormatting.RESET));
|
||||
.setDisplayName(Lang.translate("recipe." + name + ".fan").styled(style -> style.withItalic(false)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -21,6 +21,7 @@ import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock;
|
|||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.item.TooltipHelper;
|
||||
import com.simibubi.create.foundation.sound.SoundScapes;
|
||||
import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup;
|
||||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
@ -476,6 +477,10 @@ public abstract class KineticTileEntity extends SmartTileEntity
|
|||
return d.getAxisDirection() == AxisDirection.POSITIVE ? axisSpeed : -axisSpeed;
|
||||
}
|
||||
|
||||
public static float convertToLinear(float speed) { return speed / 512f; }
|
||||
|
||||
public static float convertToAngular(float speed) { return speed * 3 / 10f; }
|
||||
|
||||
public boolean isOverStressed() {
|
||||
return overStressed;
|
||||
}
|
||||
|
@ -575,14 +580,14 @@ public abstract class KineticTileEntity extends SmartTileEntity
|
|||
float componentSpeed = Math.abs(getSpeed());
|
||||
if (componentSpeed == 0)
|
||||
return;
|
||||
float pitch = MathHelper.clamp((componentSpeed / 256f) + .45f, .5f, 1.25f);
|
||||
float pitch = MathHelper.clamp((componentSpeed / 256f) + .45f, .85f, 1f);
|
||||
|
||||
if (isNoisy())
|
||||
SoundScapes.playGeneralKineticAmbience(pos, pitch);
|
||||
SoundScapes.play(AmbienceGroup.KINETIC, pos, pitch);
|
||||
|
||||
Block block = getBlockState().getBlock();
|
||||
if (ICogWheel.isSmallCog(block) || ICogWheel.isLargeCog(block) || block instanceof GearboxBlock)
|
||||
SoundScapes.playCogwheelAmbience(pos, pitch);
|
||||
SoundScapes.play(AmbienceGroup.COG, pos, pitch);
|
||||
}
|
||||
|
||||
protected boolean isNoisy() {
|
||||
|
|
|
@ -9,10 +9,10 @@ import com.simibubi.create.AllSoundEvents;
|
|||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode;
|
||||
import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.State;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack;
|
||||
import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
|
||||
|
|
|
@ -8,8 +8,8 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||
|
||||
import com.simibubi.create.AllTags;
|
||||
import com.simibubi.create.content.contraptions.particle.AirFlowParticleData;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing.Type;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing.Type;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
|
|
|
@ -3,22 +3,22 @@ package com.simibubi.create.content.contraptions.components.fan;
|
|||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing.SplashingWrapper;
|
||||
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing.SplashingInv;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
public class SplashingRecipe extends ProcessingRecipe<InWorldProcessing.SplashingInv> {
|
||||
public class SplashingRecipe extends ProcessingRecipe<InWorldProcessing.SplashingWrapper> {
|
||||
|
||||
public SplashingRecipe(ProcessingRecipeParams params) {
|
||||
super(AllRecipeTypes.SPLASHING, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(SplashingInv inv, World worldIn) {
|
||||
public boolean matches(SplashingWrapper inv, World worldIn) {
|
||||
if (inv.isEmpty())
|
||||
return false;
|
||||
return ingredients.get(0)
|
||||
|
|
|
@ -9,9 +9,9 @@ import java.util.stream.Collectors;
|
|||
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
|
||||
|
|
|
@ -10,7 +10,7 @@ import com.simibubi.create.AllSoundEvents;
|
|||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity;
|
||||
import com.simibubi.create.content.contraptions.processing.BasinTileEntity;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.advancement.ITriggerable;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
|
|
|
@ -10,14 +10,18 @@ import java.util.stream.Collectors;
|
|||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.AllTags;
|
||||
import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.processing.ProcessingInventory;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.item.ItemHelper;
|
||||
import com.simibubi.create.foundation.sound.SoundScapes;
|
||||
import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
import com.simibubi.create.foundation.utility.TreeCutter;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import com.simibubi.create.foundation.utility.recipe.RecipeConditions;
|
||||
|
@ -31,10 +35,12 @@ import net.minecraft.block.CactusBlock;
|
|||
import net.minecraft.block.ChorusPlantBlock;
|
||||
import net.minecraft.block.KelpBlock;
|
||||
import net.minecraft.block.KelpTopBlock;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.StemGrownBlock;
|
||||
import net.minecraft.block.SugarCaneBlock;
|
||||
import net.minecraft.entity.item.ItemEntity;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraft.item.crafting.IRecipeType;
|
||||
|
@ -53,6 +59,8 @@ import net.minecraft.util.math.BlockPos;
|
|||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
|
@ -70,6 +78,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
private int recipeIndex;
|
||||
private final LazyOptional<IItemHandler> invProvider;
|
||||
private FilteringBehaviour filtering;
|
||||
private boolean processingStarted;
|
||||
|
||||
public SawTileEntity(TileEntityType<? extends SawTileEntity> type) {
|
||||
super(type);
|
||||
|
@ -77,6 +86,7 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
inventory.remainingTime = -1;
|
||||
recipeIndex = 0;
|
||||
invProvider = LazyOptional.of(() -> inventory);
|
||||
processingStarted = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -92,6 +102,11 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
compound.put("Inventory", inventory.serializeNBT());
|
||||
compound.putInt("RecipeIndex", recipeIndex);
|
||||
super.write(compound, clientPacket);
|
||||
|
||||
if (!clientPacket || !processingStarted)
|
||||
return;
|
||||
processingStarted = false;
|
||||
NBTHelper.putMarker(compound, "ProcessingStarted");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -99,6 +114,40 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
super.fromTag(state, compound, clientPacket);
|
||||
inventory.deserializeNBT(compound.getCompound("Inventory"));
|
||||
recipeIndex = compound.getInt("RecipeIndex");
|
||||
if (compound.contains("ProcessingStarted"))
|
||||
processingStarted = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void tickAudio() {
|
||||
super.tickAudio();
|
||||
if (getSpeed() == 0)
|
||||
return;
|
||||
|
||||
SoundScapes.play(AmbienceGroup.SAW, pos, 1);
|
||||
|
||||
ItemStack stackInSlot = inventory.getStackInSlot(0);
|
||||
if (stackInSlot.isEmpty())
|
||||
return;
|
||||
|
||||
boolean isWood = false;
|
||||
Item item = stackInSlot.getItem();
|
||||
if (item instanceof BlockItem) {
|
||||
Block block = ((BlockItem) item).getBlock();
|
||||
isWood = block.getSoundType(block.getDefaultState(), world, pos, null) == SoundType.WOOD;
|
||||
}
|
||||
|
||||
if (processingStarted) {
|
||||
processingStarted = false;
|
||||
if (!isWood)
|
||||
AllSoundEvents.SAW_ACTIVATE_STONE.playAt(world, pos, 1, 1, true);
|
||||
else
|
||||
AllSoundEvents.SAW_ACTIVATE_WOOD.playAt(world, pos, 1, 1, true);
|
||||
return;
|
||||
}
|
||||
|
||||
AllSoundEvents.SAW_PROCESS.playAt(world, pos, 1, 1, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -123,9 +172,6 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
if (inventory.remainingTime > 0)
|
||||
spawnParticles(inventory.getStackInSlot(0));
|
||||
|
||||
if (world.isRemote && !isVirtual())
|
||||
return;
|
||||
|
||||
if (inventory.remainingTime < 20 && !inventory.appliedRecipe) {
|
||||
applyRecipe();
|
||||
inventory.appliedRecipe = true;
|
||||
|
@ -320,7 +366,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
|
||||
List<? extends IRecipe<?>> recipes = getRecipes();
|
||||
boolean valid = !recipes.isEmpty();
|
||||
int time = 100;
|
||||
processingStarted = true;
|
||||
int time = 50;
|
||||
|
||||
if (recipes.isEmpty()) {
|
||||
inventory.remainingTime = inventory.recipeDuration = 10;
|
||||
|
@ -367,14 +414,16 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
@Override
|
||||
public void onBlockBroken(BlockState stateToBreak) {
|
||||
super.onBlockBroken(stateToBreak);
|
||||
TreeCutter.findTree(world, breakingPos).destroyBlocks(world, null, this::dropItemFromCutTree);
|
||||
TreeCutter.findTree(world, breakingPos)
|
||||
.destroyBlocks(world, null, this::dropItemFromCutTree);
|
||||
}
|
||||
|
||||
public void dropItemFromCutTree(BlockPos pos, ItemStack stack) {
|
||||
float distance = (float) Math.sqrt(pos.distanceSq(breakingPos));
|
||||
Vector3d dropPos = VecHelper.getCenterOf(pos);
|
||||
ItemEntity entity = new ItemEntity(world, dropPos.x, dropPos.y, dropPos.z, stack);
|
||||
entity.setMotion(Vector3d.of(breakingPos.subtract(this.pos)).scale(distance / 20f));
|
||||
entity.setMotion(Vector3d.of(breakingPos.subtract(this.pos))
|
||||
.scale(distance / 20f));
|
||||
world.addEntity(entity);
|
||||
}
|
||||
|
||||
|
@ -385,7 +434,8 @@ public class SawTileEntity extends BlockBreakingKineticTileEntity {
|
|||
}
|
||||
|
||||
public static boolean isSawable(BlockState stateToBreak) {
|
||||
if (stateToBreak.isIn(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(stateToBreak) || stateToBreak.isIn(BlockTags.LEAVES))
|
||||
if (stateToBreak.isIn(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(stateToBreak)
|
||||
|| stateToBreak.isIn(BlockTags.LEAVES))
|
||||
return true;
|
||||
Block block = stateToBreak.getBlock();
|
||||
if (block instanceof BambooBlock)
|
||||
|
|
|
@ -1,5 +1,31 @@
|
|||
package com.simibubi.create.content.contraptions.components.structureMovement;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.commons.lang3.mutable.MutableInt;
|
||||
import org.apache.commons.lang3.tuple.MutablePair;
|
||||
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllMovementBehaviours;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.actors.SeatEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionSeatMappingPacket;
|
||||
import com.simibubi.create.foundation.collision.Matrix3d;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.block.material.PushReaction;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
@ -29,27 +55,6 @@ import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData;
|
|||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.apache.commons.lang3.mutable.MutableInt;
|
||||
import org.apache.commons.lang3.tuple.MutablePair;
|
||||
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllMovementBehaviours;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.actors.SeatEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionSeatMappingPacket;
|
||||
import com.simibubi.create.foundation.collision.Matrix3d;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
public abstract class AbstractContraptionEntity extends Entity implements IEntityAdditionalSpawnData {
|
||||
|
||||
private static final DataParameter<Boolean> STALLED =
|
||||
|
@ -463,6 +468,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit
|
|||
|
||||
removePassengers();
|
||||
moveCollidedEntitiesOnDisassembly(transform);
|
||||
AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(world, getBlockPos());
|
||||
}
|
||||
|
||||
private void moveCollidedEntitiesOnDisassembly(StructureTransform transform) {
|
||||
|
|
|
@ -119,7 +119,7 @@ public abstract class Contraption {
|
|||
|
||||
public Optional<List<AxisAlignedBB>> simplifiedEntityColliders;
|
||||
public AbstractContraptionEntity entity;
|
||||
public CombinedInvWrapper inventory;
|
||||
public ContraptionInvWrapper inventory;
|
||||
public CombinedTankWrapper fluidInventory;
|
||||
public AxisAlignedBB bounds;
|
||||
public BlockPos anchor;
|
||||
|
@ -252,7 +252,7 @@ public abstract class Contraption {
|
|||
.stream()
|
||||
.map(MountedStorage::getItemHandler)
|
||||
.collect(Collectors.toList());
|
||||
inventory = new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class));
|
||||
inventory = new ContraptionInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class));
|
||||
|
||||
List<IFluidHandler> fluidHandlers = fluidStorage.values()
|
||||
.stream()
|
||||
|
@ -739,7 +739,7 @@ public abstract class Contraption {
|
|||
for (MountedFluidStorage mountedStorage : fluidStorage.values())
|
||||
fluidHandlers[index++] = mountedStorage.getFluidHandler();
|
||||
|
||||
inventory = new CombinedInvWrapper(handlers);
|
||||
inventory = new ContraptionInvWrapper(handlers);
|
||||
fluidInventory = new CombinedTankWrapper(fluidHandlers);
|
||||
|
||||
if (nbt.contains("BoundsFront"))
|
||||
|
@ -1053,8 +1053,10 @@ public abstract class Contraption {
|
|||
BlockFlags.IS_MOVING | BlockFlags.DEFAULT, 512);
|
||||
}
|
||||
|
||||
for (int i = 0; i < inventory.getSlots(); i++)
|
||||
inventory.setStackInSlot(i, ItemStack.EMPTY);
|
||||
for (int i = 0; i < inventory.getSlots(); i++) {
|
||||
if (!inventory.isSlotExternal(i))
|
||||
inventory.setStackInSlot(i, ItemStack.EMPTY);
|
||||
}
|
||||
for (int i = 0; i < fluidInventory.getTanks(); i++)
|
||||
fluidInventory.drain(fluidInventory.getFluidInTank(i), FluidAction.EXECUTE);
|
||||
|
||||
|
@ -1261,4 +1263,24 @@ public abstract class Contraption {
|
|||
return pos.equals(te.getPos());
|
||||
}
|
||||
}
|
||||
|
||||
public static class ContraptionInvWrapper extends CombinedInvWrapper {
|
||||
protected final boolean isExternal;
|
||||
|
||||
public ContraptionInvWrapper(boolean isExternal, IItemHandlerModifiable... itemHandler) {
|
||||
super(itemHandler);
|
||||
this.isExternal = isExternal;
|
||||
}
|
||||
|
||||
public ContraptionInvWrapper(IItemHandlerModifiable... itemHandler) {
|
||||
this(false, itemHandler);
|
||||
}
|
||||
|
||||
public boolean isSlotExternal(int slot) {
|
||||
if (isExternal)
|
||||
return true;
|
||||
IItemHandlerModifiable handler = getHandlerFromIndex(getIndexForSlot(slot));
|
||||
return handler instanceof ContraptionInvWrapper && ((ContraptionInvWrapper) handler).isSlotExternal(slot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
|
|||
protected Axis rotationAxis;
|
||||
protected float prevAngle;
|
||||
protected float angle;
|
||||
protected float angleDelta;
|
||||
|
||||
public ControlledContraptionEntity(EntityType<?> type, World world) {
|
||||
super(type, world);
|
||||
|
@ -130,6 +131,7 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
|
|||
public void setPositionAndRotationDirect(double x, double y, double z, float yw, float pt, int inc, boolean t) {}
|
||||
|
||||
protected void tickContraption() {
|
||||
angleDelta = angle - prevAngle;
|
||||
prevAngle = angle;
|
||||
tickActors();
|
||||
|
||||
|
@ -171,7 +173,7 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
|
|||
return false;
|
||||
if (!VecHelper.onSameAxis(blockInfo.pos, BlockPos.ZERO, facing.getAxis()))
|
||||
return false;
|
||||
context.motion = Vector3d.of(facing.getDirectionVec()).scale(angle - prevAngle);
|
||||
context.motion = Vector3d.of(facing.getDirectionVec()).scale(angleDelta / 360.0);
|
||||
context.relativeMotion = context.motion;
|
||||
int timer = context.data.getInt("StationaryTimer");
|
||||
if (timer > 0) {
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.List;
|
|||
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity;
|
||||
|
@ -116,7 +117,7 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity
|
|||
}
|
||||
|
||||
public float getAngularSpeed() {
|
||||
float speed = (isWindmill() ? getGeneratedSpeed() : getSpeed()) * 3 / 10f;
|
||||
float speed = convertToAngular(isWindmill() ? getGeneratedSpeed() : getSpeed());
|
||||
if (getSpeed() == 0)
|
||||
speed = 0;
|
||||
if (world.isRemote) {
|
||||
|
@ -216,14 +217,13 @@ public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity
|
|||
movedContraption.getContraption()
|
||||
.stop(world);
|
||||
disassemble();
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
if (speed == 0 && !isWindmill())
|
||||
return;
|
||||
assemble();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!running)
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ga
|
|||
import static net.minecraft.state.properties.BlockStateProperties.FACING;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider;
|
||||
|
@ -107,6 +108,7 @@ public class GantryCarriageTileEntity extends KineticTileEntity implements IDisp
|
|||
GantryContraptionEntity.create(world, contraption, shaftOrientation);
|
||||
BlockPos anchor = pos;
|
||||
movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ());
|
||||
AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(world, pos);
|
||||
world.addEntity(movedContraption);
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ public class MountedContraption extends Contraption {
|
|||
protected ContraptionType getType() {
|
||||
return ContraptionType.MOUNTED;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean assemble(World world, BlockPos pos) throws AssemblyException {
|
||||
BlockState state = world.getBlockState(pos);
|
||||
|
@ -61,17 +61,17 @@ public class MountedContraption extends Contraption {
|
|||
return false;
|
||||
if (!searchMovedStructure(world, pos, null))
|
||||
return false;
|
||||
|
||||
|
||||
Axis axis = state.get(RAIL_SHAPE) == RailShape.EAST_WEST ? Axis.X : Axis.Z;
|
||||
addBlock(pos, Pair.of(new BlockInfo(pos, AllBlocks.MINECART_ANCHOR.getDefaultState()
|
||||
.with(BlockStateProperties.HORIZONTAL_AXIS, axis), null), null));
|
||||
|
||||
|
||||
if (blocks.size() == 1)
|
||||
return false;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean addToInitialFrontier(World world, BlockPos pos, Direction direction, Queue<BlockPos> frontier) {
|
||||
frontier.clear();
|
||||
|
@ -149,18 +149,18 @@ public class MountedContraption extends Contraption {
|
|||
protected boolean customBlockRemoval(IWorld world, BlockPos pos, BlockState state) {
|
||||
return AllBlocks.MINECART_ANCHOR.has(state);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canBeStabilized(Direction facing, BlockPos localPos) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addExtraInventories(Entity cart) {
|
||||
if (!(cart instanceof IInventory))
|
||||
return;
|
||||
IItemHandlerModifiable handlerFromInv = new InvWrapper((IInventory) cart);
|
||||
inventory = new CombinedInvWrapper(handlerFromInv, inventory);
|
||||
IItemHandlerModifiable handlerFromInv = new ContraptionInvWrapper(true, new InvWrapper((IInventory) cart));
|
||||
inventory = new ContraptionInvWrapper(handlerFromInv, inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -270,7 +270,7 @@ public abstract class LinearActuatorTileEntity extends KineticTileEntity
|
|||
}
|
||||
|
||||
public float getMovementSpeed() {
|
||||
float movementSpeed = MathHelper.clamp(getSpeed() / 512f, -.49f, .49f) + clientOffsetDiff / 2f;
|
||||
float movementSpeed = MathHelper.clamp(convertToLinear(getSpeed()), -.49f, .49f) + clientOffsetDiff / 2f;
|
||||
if (world.isRemote)
|
||||
movementSpeed *= ServerSpeedProvider.get();
|
||||
return movementSpeed;
|
||||
|
|
|
@ -84,7 +84,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity {
|
|||
applyContraptionPosition();
|
||||
forceMove = true;
|
||||
world.addEntity(movedContraption);
|
||||
|
||||
|
||||
AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(world, pos);
|
||||
}
|
||||
|
||||
|
@ -118,7 +118,7 @@ public class MechanicalPistonTileEntity extends LinearActuatorTileEntity {
|
|||
|
||||
@Override
|
||||
public float getMovementSpeed() {
|
||||
float movementSpeed = MathHelper.clamp(getSpeed() / 512f, -.49f, .49f);
|
||||
float movementSpeed = MathHelper.clamp(convertToLinear(getSpeed()), -.49f, .49f);
|
||||
if (world.isRemote)
|
||||
movementSpeed *= ServerSpeedProvider.get();
|
||||
Direction pistonDirection = getBlockState().get(BlockStateProperties.FACING);
|
||||
|
|
|
@ -4,6 +4,8 @@ import com.simibubi.create.AllItems;
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController;
|
||||
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
|
@ -78,6 +80,11 @@ public class MinecartCouplingItem extends Item {
|
|||
if (event.getWorld().isRemote)
|
||||
return true;
|
||||
|
||||
for (boolean forward : Iterate.trueAndFalse) {
|
||||
if (controller.hasContraptionCoupling(forward))
|
||||
couplings--;
|
||||
}
|
||||
|
||||
CouplingHandler.status(player, "removed");
|
||||
controller.decouple();
|
||||
if (!player.isCreative())
|
||||
|
|
|
@ -175,7 +175,7 @@ public class HosePulleyTileEntity extends KineticTileEntity {
|
|||
}
|
||||
|
||||
public float getMovementSpeed() {
|
||||
float movementSpeed = getSpeed() / 512f;
|
||||
float movementSpeed = convertToLinear(getSpeed());
|
||||
if (world.isRemote)
|
||||
movementSpeed *= ServerSpeedProvider.get();
|
||||
return movementSpeed;
|
||||
|
|
|
@ -172,8 +172,8 @@ public class GoggleOverlayRenderer {
|
|||
ms.pop();
|
||||
}
|
||||
|
||||
private static final class TooltipScreen extends Screen {
|
||||
private TooltipScreen(ITextComponent p_i51108_1_) {
|
||||
public static final class TooltipScreen extends Screen {
|
||||
public TooltipScreen(ITextComponent p_i51108_1_) {
|
||||
super(p_i51108_1_);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import javax.annotation.Nonnull;
|
|||
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.fan.IAirCurrentSource;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.simibubi.create.content.logistics;
|
||||
package com.simibubi.create.content.contraptions.processing;
|
||||
|
||||
import static com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.getHeatLevelOf;
|
||||
|
||||
|
@ -12,7 +12,6 @@ import javax.annotation.Nullable;
|
|||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe;
|
||||
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
|
||||
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
|
@ -37,9 +36,6 @@ import net.minecraft.nbt.CompoundNBT;
|
|||
import net.minecraft.particles.ParticleTypes;
|
||||
import net.minecraft.particles.RedstoneParticleData;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.tileentity.BlastFurnaceTileEntity;
|
||||
import net.minecraft.tileentity.FurnaceTileEntity;
|
||||
import net.minecraft.tileentity.SmokerTileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
|
@ -50,13 +46,8 @@ import net.minecraftforge.items.wrapper.RecipeWrapper;
|
|||
|
||||
public class InWorldProcessing {
|
||||
|
||||
public static class SplashingInv extends RecipeWrapper {
|
||||
public SplashingInv() {
|
||||
super(new ItemStackHandler(1));
|
||||
}
|
||||
}
|
||||
|
||||
public static SplashingInv splashingInv = new SplashingInv();
|
||||
private static final RecipeWrapper WRAPPER = new RecipeWrapper(new ItemStackHandler(1));
|
||||
private static final SplashingWrapper SPLASHING_WRAPPER = new SplashingWrapper();
|
||||
|
||||
public enum Type {
|
||||
SMOKING, BLASTING, SPLASHING, NONE
|
||||
|
@ -104,16 +95,27 @@ public class InWorldProcessing {
|
|||
|
||||
private static boolean canProcess(ItemStack stack, Type type, World world) {
|
||||
if (type == Type.BLASTING) {
|
||||
return true;
|
||||
WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<FurnaceRecipe> smeltingRecipe = world.getRecipeManager()
|
||||
.getRecipe(IRecipeType.SMELTING, WRAPPER, world);
|
||||
|
||||
if (smeltingRecipe.isPresent())
|
||||
return true;
|
||||
|
||||
WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<BlastingRecipe> blastingRecipe = world.getRecipeManager()
|
||||
.getRecipe(IRecipeType.BLASTING, WRAPPER, world);
|
||||
|
||||
if (blastingRecipe.isPresent())
|
||||
return true;
|
||||
|
||||
return !stack.getItem().isFireproof();
|
||||
}
|
||||
|
||||
if (type == Type.SMOKING) {
|
||||
// FIXME this does not need to be a TE
|
||||
SmokerTileEntity smoker = new SmokerTileEntity();
|
||||
smoker.setLocation(world, BlockPos.ZERO);
|
||||
smoker.setInventorySlotContents(0, stack);
|
||||
WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<SmokingRecipe> recipe = world.getRecipeManager()
|
||||
.getRecipe(IRecipeType.SMOKING, smoker, world);
|
||||
.getRecipe(IRecipeType.SMOKING, WRAPPER, world);
|
||||
return recipe.isPresent();
|
||||
}
|
||||
|
||||
|
@ -124,8 +126,8 @@ public class InWorldProcessing {
|
|||
}
|
||||
|
||||
public static boolean isWashable(ItemStack stack, World world) {
|
||||
splashingInv.setInventorySlotContents(0, stack);
|
||||
Optional<SplashingRecipe> recipe = AllRecipeTypes.SPLASHING.find(splashingInv, world);
|
||||
SPLASHING_WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<SplashingRecipe> recipe = AllRecipeTypes.SPLASHING.find(SPLASHING_WRAPPER, world);
|
||||
return recipe.isPresent();
|
||||
}
|
||||
|
||||
|
@ -179,38 +181,29 @@ public class InWorldProcessing {
|
|||
|
||||
private static List<ItemStack> process(ItemStack stack, Type type, World world) {
|
||||
if (type == Type.SPLASHING) {
|
||||
splashingInv.setInventorySlotContents(0, stack);
|
||||
Optional<SplashingRecipe> recipe = AllRecipeTypes.SPLASHING.find(splashingInv, world);
|
||||
SPLASHING_WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<SplashingRecipe> recipe = AllRecipeTypes.SPLASHING.find(SPLASHING_WRAPPER, world);
|
||||
if (recipe.isPresent())
|
||||
return applyRecipeOn(stack, recipe.get());
|
||||
return null;
|
||||
}
|
||||
|
||||
// FIXME this does not need to be a TE
|
||||
SmokerTileEntity smoker = new SmokerTileEntity();
|
||||
smoker.setLocation(world, BlockPos.ZERO);
|
||||
smoker.setInventorySlotContents(0, stack);
|
||||
WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<SmokingRecipe> smokingRecipe = world.getRecipeManager()
|
||||
.getRecipe(IRecipeType.SMOKING, smoker, world);
|
||||
.getRecipe(IRecipeType.SMOKING, WRAPPER, world);
|
||||
|
||||
if (type == Type.BLASTING) {
|
||||
// FIXME this does not need to be a TE
|
||||
FurnaceTileEntity furnace = new FurnaceTileEntity();
|
||||
furnace.setLocation(world, BlockPos.ZERO);
|
||||
furnace.setInventorySlotContents(0, stack);
|
||||
Optional<FurnaceRecipe> smeltingRecipe = world.getRecipeManager()
|
||||
.getRecipe(IRecipeType.SMELTING, furnace, world);
|
||||
|
||||
if (!smokingRecipe.isPresent()) {
|
||||
WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<FurnaceRecipe> smeltingRecipe = world.getRecipeManager()
|
||||
.getRecipe(IRecipeType.SMELTING, WRAPPER, world);
|
||||
|
||||
if (smeltingRecipe.isPresent())
|
||||
return applyRecipeOn(stack, smeltingRecipe.get());
|
||||
|
||||
// FIXME this does not need to be a TE
|
||||
BlastFurnaceTileEntity blastFurnace = new BlastFurnaceTileEntity();
|
||||
blastFurnace.setLocation(world, BlockPos.ZERO);
|
||||
blastFurnace.setInventorySlotContents(0, stack);
|
||||
WRAPPER.setInventorySlotContents(0, stack);
|
||||
Optional<BlastingRecipe> blastingRecipe = world.getRecipeManager()
|
||||
.getRecipe(IRecipeType.BLASTING, blastFurnace, world);
|
||||
.getRecipe(IRecipeType.BLASTING, WRAPPER, world);
|
||||
|
||||
if (blastingRecipe.isPresent())
|
||||
return applyRecipeOn(stack, blastingRecipe.get());
|
||||
|
@ -299,6 +292,7 @@ public class InWorldProcessing {
|
|||
|
||||
return stacks;
|
||||
}
|
||||
|
||||
public static void spawnParticlesForProcessing(@Nullable World world, Vector3d vec, Type type) {
|
||||
if (world == null || !world.isRemote)
|
||||
return;
|
||||
|
@ -325,4 +319,10 @@ public class InWorldProcessing {
|
|||
}
|
||||
}
|
||||
|
||||
public static class SplashingWrapper extends RecipeWrapper {
|
||||
public SplashingWrapper() {
|
||||
super(new ItemStackHandler(1));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -99,7 +99,7 @@ public class GantryShaftTileEntity extends KineticTileEntity {
|
|||
BlockState blockState = getBlockState();
|
||||
if (!AllBlocks.GANTRY_SHAFT.has(blockState))
|
||||
return 0;
|
||||
return MathHelper.clamp(-getSpeed() / 512f, -.49f, .49f);
|
||||
return MathHelper.clamp(convertToLinear(-getSpeed()), -.49f, .49f);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.relays.advanced.sequencer;
|
|||
|
||||
import java.util.Vector;
|
||||
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
|
@ -23,23 +24,27 @@ public class Instruction {
|
|||
this.value = value;
|
||||
}
|
||||
|
||||
int getDuration(float initialProgress, float speed) {
|
||||
int offset = speed > 0 && speedModifier.value < 0 ? 1 : 2;
|
||||
int getDuration(float currentProgress, float speed) {
|
||||
speed *= speedModifier.value;
|
||||
speed = Math.abs(speed);
|
||||
|
||||
double degreesPerTick = (speed * 360) / 60 / 20;
|
||||
double metersPerTick = speed / 512;
|
||||
double target = value - currentProgress;
|
||||
|
||||
switch (instruction) {
|
||||
|
||||
case TURN_ANGLE:
|
||||
return (int) ((1 - initialProgress) * value / degreesPerTick + 1);
|
||||
double degreesPerTick = KineticTileEntity.convertToAngular(speed);
|
||||
int ticks = (int) (target / degreesPerTick);
|
||||
double degreesErr = target - degreesPerTick*ticks;
|
||||
return ticks + (degreesPerTick > 2*degreesErr ? 0 : 1);
|
||||
|
||||
case TURN_DISTANCE:
|
||||
return (int) ((1 - initialProgress) * value / metersPerTick + offset);
|
||||
double metersPerTick = KineticTileEntity.convertToLinear(speed);
|
||||
int offset = speed > 0 && speedModifier.value < 0 ? 1 : 2;
|
||||
return (int) (target / metersPerTick + offset);
|
||||
|
||||
case DELAY:
|
||||
return (int) ((1 - initialProgress) * value + 1);
|
||||
return (int) target;
|
||||
|
||||
case AWAIT:
|
||||
return -1;
|
||||
|
@ -52,6 +57,27 @@ public class Instruction {
|
|||
return 0;
|
||||
}
|
||||
|
||||
float getTickProgress(float speed) {
|
||||
switch(instruction) {
|
||||
|
||||
case TURN_ANGLE:
|
||||
return KineticTileEntity.convertToAngular(speed);
|
||||
|
||||
case TURN_DISTANCE:
|
||||
return KineticTileEntity.convertToLinear(speed);
|
||||
|
||||
case DELAY:
|
||||
return 1;
|
||||
|
||||
case AWAIT:
|
||||
case END:
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int getSpeedModifier() {
|
||||
switch (instruction) {
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
Vector<Instruction> instructions;
|
||||
int currentInstruction;
|
||||
int currentInstructionDuration;
|
||||
float currentInstructionProgress;
|
||||
int timer;
|
||||
boolean poweredPreviously;
|
||||
|
||||
|
@ -23,6 +24,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
instructions = Instruction.createDefault();
|
||||
currentInstruction = -1;
|
||||
currentInstructionDuration = -1;
|
||||
currentInstructionProgress = 0;
|
||||
timer = 0;
|
||||
poweredPreviously = false;
|
||||
}
|
||||
|
@ -39,6 +41,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
return;
|
||||
if (timer < currentInstructionDuration) {
|
||||
timer++;
|
||||
currentInstructionProgress += getInstruction(currentInstruction).getTickProgress(speed);
|
||||
return;
|
||||
}
|
||||
run(currentInstruction + 1);
|
||||
|
@ -59,8 +62,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
run(-1);
|
||||
|
||||
// Update instruction time with regards to new speed
|
||||
float initialProgress = timer / (float) currentInstructionDuration;
|
||||
currentInstructionDuration = instruction.getDuration(initialProgress, getTheoreticalSpeed());
|
||||
currentInstructionDuration = instruction.getDuration(currentInstructionProgress, getTheoreticalSpeed());
|
||||
timer = 0;
|
||||
}
|
||||
|
||||
|
@ -109,6 +111,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
detachKinetics();
|
||||
currentInstruction = -1;
|
||||
currentInstructionDuration = -1;
|
||||
currentInstructionProgress = 0;
|
||||
timer = 0;
|
||||
if (!world.isBlockPowered(pos))
|
||||
world.setBlockState(pos, getBlockState().with(SequencedGearshiftBlock.STATE, 0), 3);
|
||||
|
@ -120,6 +123,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
detachKinetics();
|
||||
currentInstructionDuration = instruction.getDuration(0, getTheoreticalSpeed());
|
||||
currentInstruction = instructionIndex;
|
||||
currentInstructionProgress = 0;
|
||||
timer = 0;
|
||||
world.setBlockState(pos, getBlockState().with(SequencedGearshiftBlock.STATE, instructionIndex + 1), 3);
|
||||
}
|
||||
|
@ -133,6 +137,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
public void write(CompoundNBT compound, boolean clientPacket) {
|
||||
compound.putInt("InstructionIndex", currentInstruction);
|
||||
compound.putInt("InstructionDuration", currentInstructionDuration);
|
||||
compound.putFloat("InstructionProgress", currentInstructionProgress);
|
||||
compound.putInt("Timer", timer);
|
||||
compound.putBoolean("PrevPowered", poweredPreviously);
|
||||
compound.put("Instructions", Instruction.serializeAll(instructions));
|
||||
|
@ -143,6 +148,7 @@ public class SequencedGearshiftTileEntity extends SplitShaftTileEntity {
|
|||
protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) {
|
||||
currentInstruction = compound.getInt("InstructionIndex");
|
||||
currentInstructionDuration = compound.getInt("InstructionDuration");
|
||||
currentInstructionProgress = compound.getFloat("InstructionProgress");
|
||||
poweredPreviously = compound.getBoolean("PrevPowered");
|
||||
timer = compound.getInt("Timer");
|
||||
instructions = Instruction.deserializeAll(compound.getList("Instructions", NBT.TAG_COMPOUND));
|
||||
|
|
|
@ -2,8 +2,8 @@ package com.simibubi.create.content.contraptions.relays.belt.transport;
|
|||
|
||||
import java.util.Random;
|
||||
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
|
||||
import com.simibubi.create.content.logistics.InWorldProcessing;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
|
|
|
@ -3,11 +3,13 @@ package com.simibubi.create.content.curiosities.armor;
|
|||
import com.simibubi.create.AllItems;
|
||||
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.inventory.EquipmentSlotType;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.potion.EffectInstance;
|
||||
import net.minecraft.potion.Effects;
|
||||
import net.minecraft.tags.FluidTags;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
@ -34,7 +36,9 @@ public class DivingHelmetItem extends CopperArmorItem {
|
|||
if (!AllItems.DIVING_HELMET.get()
|
||||
.isWornBy(entity))
|
||||
return;
|
||||
if (!entity.isInWater())
|
||||
if (!entity.areEyesInFluid(FluidTags.WATER))
|
||||
return;
|
||||
if (entity instanceof PlayerEntity && ((PlayerEntity) entity).isCreative())
|
||||
return;
|
||||
|
||||
ItemStack backtank = ItemStack.EMPTY;
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package com.simibubi.create.content.logistics;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency;
|
||||
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public interface IRedstoneLinkable {
|
||||
|
||||
public int getTransmittedStrength();
|
||||
|
||||
public void setReceivedStrength(int power);
|
||||
|
||||
public boolean isListening();
|
||||
|
||||
public boolean isAlive();
|
||||
|
||||
public Pair<Frequency, Frequency> getNetworkKey();
|
||||
|
||||
public BlockPos getLocation();
|
||||
|
||||
}
|
|
@ -18,11 +18,11 @@ import net.minecraft.item.Item;
|
|||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RedstoneLinkNetworkHandler {
|
||||
|
||||
static final Map<IWorld, Map<Pair<Frequency, Frequency>, Set<LinkBehaviour>>> connections = new IdentityHashMap<>();
|
||||
static final Map<IWorld, Map<Pair<Frequency, Frequency>, Set<IRedstoneLinkable>>> connections =
|
||||
new IdentityHashMap<>();
|
||||
|
||||
public static class Frequency {
|
||||
public static final Frequency EMPTY = new Frequency(ItemStack.EMPTY);
|
||||
|
@ -60,7 +60,7 @@ public class RedstoneLinkNetworkHandler {
|
|||
if (this == obj)
|
||||
return true;
|
||||
return obj instanceof Frequency ? ((Frequency) obj).item == item && ((Frequency) obj).color == color
|
||||
: false;
|
||||
: false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -75,45 +75,40 @@ public class RedstoneLinkNetworkHandler {
|
|||
Create.LOGGER.debug("Removed Redstone Network Space for " + WorldHelper.getDimensionID(world));
|
||||
}
|
||||
|
||||
public Set<LinkBehaviour> getNetworkOf(LinkBehaviour actor) {
|
||||
Map<Pair<Frequency, Frequency>, Set<LinkBehaviour>> networksInWorld = networksIn(actor.getWorld());
|
||||
public Set<IRedstoneLinkable> getNetworkOf(IWorld world, IRedstoneLinkable actor) {
|
||||
Map<Pair<Frequency, Frequency>, Set<IRedstoneLinkable>> networksInWorld = networksIn(world);
|
||||
Pair<Frequency, Frequency> key = actor.getNetworkKey();
|
||||
if (!networksInWorld.containsKey(key))
|
||||
networksInWorld.put(key, new LinkedHashSet<>());
|
||||
return networksInWorld.get(key);
|
||||
}
|
||||
|
||||
public void addToNetwork(LinkBehaviour actor) {
|
||||
getNetworkOf(actor).add(actor);
|
||||
updateNetworkOf(actor);
|
||||
public void addToNetwork(IWorld world, IRedstoneLinkable actor) {
|
||||
getNetworkOf(world, actor).add(actor);
|
||||
updateNetworkOf(world, actor);
|
||||
}
|
||||
|
||||
public void removeFromNetwork(LinkBehaviour actor) {
|
||||
Set<LinkBehaviour> network = getNetworkOf(actor);
|
||||
public void removeFromNetwork(IWorld world, IRedstoneLinkable actor) {
|
||||
Set<IRedstoneLinkable> network = getNetworkOf(world, actor);
|
||||
network.remove(actor);
|
||||
if (network.isEmpty()) {
|
||||
networksIn(actor.getWorld()).remove(actor.getNetworkKey());
|
||||
networksIn(world).remove(actor.getNetworkKey());
|
||||
return;
|
||||
}
|
||||
updateNetworkOf(actor);
|
||||
updateNetworkOf(world, actor);
|
||||
}
|
||||
|
||||
public void updateNetworkOf(LinkBehaviour actor) {
|
||||
Set<LinkBehaviour> network = getNetworkOf(actor);
|
||||
public void updateNetworkOf(IWorld world, IRedstoneLinkable actor) {
|
||||
Set<IRedstoneLinkable> network = getNetworkOf(world, actor);
|
||||
int power = 0;
|
||||
|
||||
for (Iterator<LinkBehaviour> iterator = network.iterator(); iterator.hasNext();) {
|
||||
LinkBehaviour other = iterator.next();
|
||||
if (other.tileEntity.isRemoved()) {
|
||||
for (Iterator<IRedstoneLinkable> iterator = network.iterator(); iterator.hasNext();) {
|
||||
IRedstoneLinkable other = iterator.next();
|
||||
if (!other.isAlive()) {
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
World world = actor.getWorld();
|
||||
if (!world.isBlockPresent(other.tileEntity.getPos())) {
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
if (world.getTileEntity(other.tileEntity.getPos()) != other.tileEntity) {
|
||||
if (!world.isAreaLoaded(other.getLocation(), 0)) {
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
|
@ -124,28 +119,31 @@ public class RedstoneLinkNetworkHandler {
|
|||
power = Math.max(other.getTransmittedStrength(), power);
|
||||
}
|
||||
|
||||
// fix one-to-one loading order problem
|
||||
if (actor.isListening()) {
|
||||
actor.newPosition = true;
|
||||
actor.updateReceiver(power);
|
||||
if (actor instanceof LinkBehaviour) {
|
||||
LinkBehaviour linkBehaviour = (LinkBehaviour) actor;
|
||||
// fix one-to-one loading order problem
|
||||
if (linkBehaviour.isListening()) {
|
||||
linkBehaviour.newPosition = true;
|
||||
linkBehaviour.setReceivedStrength(power);
|
||||
}
|
||||
}
|
||||
|
||||
for (LinkBehaviour other : network) {
|
||||
for (IRedstoneLinkable other : network) {
|
||||
if (other != actor && other.isListening() && withinRange(actor, other))
|
||||
other.updateReceiver(power);
|
||||
other.setReceivedStrength(power);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean withinRange(LinkBehaviour from, LinkBehaviour to) {
|
||||
public static boolean withinRange(IRedstoneLinkable from, IRedstoneLinkable to) {
|
||||
if (from == to)
|
||||
return true;
|
||||
return from.getPos().withinDistance(to.getPos(), AllConfigs.SERVER.logistics.linkRange.get());
|
||||
return from.getLocation()
|
||||
.withinDistance(to.getLocation(), AllConfigs.SERVER.logistics.linkRange.get());
|
||||
}
|
||||
|
||||
public Map<Pair<Frequency, Frequency>, Set<LinkBehaviour>> networksIn(IWorld world) {
|
||||
public Map<Pair<Frequency, Frequency>, Set<IRedstoneLinkable>> networksIn(IWorld world) {
|
||||
if (!connections.containsKey(world)) {
|
||||
Create.LOGGER.warn(
|
||||
"Tried to Access unprepared network space of " + WorldHelper.getDimensionID(world));
|
||||
Create.LOGGER.warn("Tried to Access unprepared network space of " + WorldHelper.getDimensionID(world));
|
||||
return new HashMap<>();
|
||||
}
|
||||
return connections.get(world);
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkBehaviour;
|
||||
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
public class LinkedControllerBindPacket extends LinkedControllerPacketBase {
|
||||
|
||||
private int button;
|
||||
private BlockPos linkLocation;
|
||||
|
||||
public LinkedControllerBindPacket(int button, BlockPos linkLocation) {
|
||||
this.button = button;
|
||||
this.linkLocation = linkLocation;
|
||||
}
|
||||
|
||||
public LinkedControllerBindPacket(PacketBuffer buffer) {
|
||||
this.button = buffer.readVarInt();
|
||||
this.linkLocation = buffer.readBlockPos();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer) {
|
||||
buffer.writeVarInt(button);
|
||||
buffer.writeBlockPos(linkLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handle(ServerPlayerEntity player, ItemStack heldItem) {
|
||||
ItemStackHandler frequencyItems = LinkedControllerItem.getFrequencyItems(heldItem);
|
||||
LinkBehaviour linkBehaviour = TileEntityBehaviour.get(player.world, linkLocation, LinkBehaviour.TYPE);
|
||||
if (linkBehaviour == null)
|
||||
return;
|
||||
|
||||
Pair<Frequency, Frequency> pair = linkBehaviour.getNetworkKey();
|
||||
frequencyItems.setStackInSlot(button * 2, pair.getKey()
|
||||
.getStack()
|
||||
.copy());
|
||||
frequencyItems.setStackInSlot(button * 2 + 1, pair.getValue()
|
||||
.getStack()
|
||||
.copy());
|
||||
|
||||
heldItem.getTag()
|
||||
.put("Items", frequencyItems.serializeNBT());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,229 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.CreateClient;
|
||||
import com.simibubi.create.content.contraptions.goggles.GoggleOverlayRenderer.TooltipScreen;
|
||||
import com.simibubi.create.foundation.item.TooltipHelper;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
import net.minecraft.client.GameSettings;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import net.minecraft.client.util.InputMappings;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
|
||||
public class LinkedControllerClientHandler {
|
||||
|
||||
enum Mode {
|
||||
IDLE, ACTIVE, BIND
|
||||
}
|
||||
|
||||
public static Mode MODE = Mode.IDLE;
|
||||
public static int PACKET_RATE = 5;
|
||||
public static Collection<Integer> currentlyPressed = new HashSet<>();
|
||||
private static BlockPos selectedLocation = BlockPos.ZERO;
|
||||
private static Vector<KeyBinding> controls;
|
||||
|
||||
private static int packetCooldown;
|
||||
|
||||
public static Vector<KeyBinding> getControls() {
|
||||
if (controls == null) {
|
||||
GameSettings gameSettings = Minecraft.getInstance().gameSettings;
|
||||
controls = new Vector<>(6);
|
||||
controls.add(gameSettings.keyBindForward);
|
||||
controls.add(gameSettings.keyBindBack);
|
||||
controls.add(gameSettings.keyBindLeft);
|
||||
controls.add(gameSettings.keyBindRight);
|
||||
controls.add(gameSettings.keyBindJump);
|
||||
controls.add(gameSettings.keySneak);
|
||||
}
|
||||
return controls;
|
||||
}
|
||||
|
||||
public static void toggleBindMode(BlockPos location) {
|
||||
if (MODE == Mode.IDLE) {
|
||||
MODE = Mode.BIND;
|
||||
selectedLocation = location;
|
||||
} else {
|
||||
MODE = Mode.IDLE;
|
||||
onReset();
|
||||
}
|
||||
}
|
||||
|
||||
public static void toggle() {
|
||||
if (MODE == Mode.IDLE)
|
||||
MODE = Mode.ACTIVE;
|
||||
else {
|
||||
MODE = Mode.IDLE;
|
||||
onReset();
|
||||
}
|
||||
}
|
||||
|
||||
protected static void onReset() {
|
||||
getControls().forEach(kb -> kb.setPressed(isActuallyPressed(kb)));
|
||||
packetCooldown = 0;
|
||||
selectedLocation = BlockPos.ZERO;
|
||||
|
||||
if (!currentlyPressed.isEmpty())
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(currentlyPressed, false));
|
||||
currentlyPressed.clear();
|
||||
}
|
||||
|
||||
protected static boolean isActuallyPressed(KeyBinding kb) {
|
||||
return InputMappings.isKeyDown(Minecraft.getInstance()
|
||||
.getWindow()
|
||||
.getHandle(),
|
||||
kb.getKey()
|
||||
.getKeyCode());
|
||||
}
|
||||
|
||||
public static void tick() {
|
||||
LinkedControllerItemRenderer.tick();
|
||||
if (MODE == Mode.IDLE)
|
||||
return;
|
||||
if (packetCooldown > 0)
|
||||
packetCooldown--;
|
||||
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
ClientPlayerEntity player = mc.player;
|
||||
ItemStack heldItem = player.getHeldItemMainhand();
|
||||
|
||||
if (mc.gameSettings.keyBindInventory.isPressed() || InputMappings.isKeyDown(mc.getWindow()
|
||||
.getHandle(), GLFW.GLFW_KEY_ESCAPE)) {
|
||||
MODE = Mode.IDLE;
|
||||
onReset();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
heldItem = player.getHeldItemOffhand();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
MODE = Mode.IDLE;
|
||||
onReset();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Vector<KeyBinding> controls = getControls();
|
||||
Collection<Integer> pressedKeys = new HashSet<>();
|
||||
for (int i = 0; i < controls.size(); i++) {
|
||||
if (isActuallyPressed(controls.get(i)))
|
||||
pressedKeys.add(i);
|
||||
}
|
||||
|
||||
Collection<Integer> newKeys = new HashSet<>(pressedKeys);
|
||||
Collection<Integer> releasedKeys = currentlyPressed;
|
||||
newKeys.removeAll(releasedKeys);
|
||||
releasedKeys.removeAll(pressedKeys);
|
||||
|
||||
if (MODE == Mode.ACTIVE) {
|
||||
// Released Keys
|
||||
if (!releasedKeys.isEmpty()) {
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(releasedKeys, false));
|
||||
AllSoundEvents.CONTROLLER_CLICK.playAt(player.world, player.getBlockPos(), 1f, .5f, true);
|
||||
}
|
||||
|
||||
// Newly Pressed Keys
|
||||
if (!newKeys.isEmpty()) {
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(newKeys, true));
|
||||
packetCooldown = PACKET_RATE;
|
||||
AllSoundEvents.CONTROLLER_CLICK.playAt(player.world, player.getBlockPos(), 1f, .75f, true);
|
||||
}
|
||||
|
||||
// Keepalive Pressed Keys
|
||||
if (packetCooldown == 0) {
|
||||
if (!pressedKeys.isEmpty()) {
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(pressedKeys, true));
|
||||
packetCooldown = PACKET_RATE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (MODE == Mode.BIND) {
|
||||
VoxelShape shape = mc.world.getBlockState(selectedLocation)
|
||||
.getShape(mc.world, selectedLocation);
|
||||
if (!shape.isEmpty())
|
||||
CreateClient.OUTLINER.showAABB("controller", shape.getBoundingBox()
|
||||
.offset(selectedLocation))
|
||||
.colored(0xB73C2D)
|
||||
.lineWidth(1 / 16f);
|
||||
|
||||
for (Integer integer : newKeys) {
|
||||
LinkBehaviour linkBehaviour = TileEntityBehaviour.get(mc.world, selectedLocation, LinkBehaviour.TYPE);
|
||||
if (linkBehaviour != null) {
|
||||
AllPackets.channel.sendToServer(new LinkedControllerBindPacket(integer, selectedLocation));
|
||||
Lang.sendStatus(mc.player, "linked_controller.key_bound", controls.get(integer)
|
||||
.getBoundKeyLocalizedText()
|
||||
.getString());
|
||||
}
|
||||
MODE = Mode.IDLE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
currentlyPressed = pressedKeys;
|
||||
controls.forEach(kb -> kb.setPressed(false));
|
||||
}
|
||||
|
||||
public static void renderOverlay(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay,
|
||||
float partialTicks) {
|
||||
if (MODE != Mode.BIND)
|
||||
return;
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
||||
ms.push();
|
||||
Screen tooltipScreen = new TooltipScreen(null);
|
||||
tooltipScreen.init(mc, mc.getWindow()
|
||||
.getScaledWidth(),
|
||||
mc.getWindow()
|
||||
.getScaledHeight());
|
||||
|
||||
Object[] keys = new Object[6];
|
||||
Vector<KeyBinding> controls = getControls();
|
||||
for (int i = 0; i < controls.size(); i++) {
|
||||
KeyBinding keyBinding = controls.get(i);
|
||||
keys[i] = keyBinding.getBoundKeyLocalizedText()
|
||||
.getString();
|
||||
}
|
||||
|
||||
List<ITextComponent> list = new ArrayList<>();
|
||||
list.add(Lang.createTranslationTextComponent("linked_controller.bind_mode")
|
||||
.formatted(TextFormatting.GOLD));
|
||||
list.addAll(
|
||||
TooltipHelper.cutTextComponent(Lang.createTranslationTextComponent("linked_controller.press_keybind", keys),
|
||||
TextFormatting.GRAY, TextFormatting.GRAY));
|
||||
|
||||
int width = 0;
|
||||
int height = list.size() * mc.fontRenderer.FONT_HEIGHT;
|
||||
for (ITextComponent iTextComponent : list)
|
||||
width = Math.max(width, mc.fontRenderer.getWidth(iTextComponent));
|
||||
int x = (tooltipScreen.width / 3) - width / 2;
|
||||
int y = tooltipScreen.height - height;
|
||||
|
||||
tooltipScreen.renderTooltip(ms, list, x, y);
|
||||
|
||||
ms.pop();
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,152 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import com.simibubi.create.foundation.gui.IClearableContainer;
|
||||
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.ClickType;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.ContainerType;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
|
||||
public class LinkedControllerContainer extends Container implements IClearableContainer {
|
||||
|
||||
public PlayerEntity player;
|
||||
protected PlayerInventory playerInventory;
|
||||
public ItemStack mainItem;
|
||||
public ItemStackHandler filterInventory;
|
||||
|
||||
public LinkedControllerContainer(ContainerType<?> type, int id, PlayerInventory inv, PacketBuffer extraData) {
|
||||
this(type, id, inv, extraData.readItemStack());
|
||||
}
|
||||
|
||||
public LinkedControllerContainer(ContainerType<?> type, int id, PlayerInventory inv, ItemStack filterItem) {
|
||||
super(type, id);
|
||||
player = inv.player;
|
||||
playerInventory = inv;
|
||||
this.mainItem = filterItem;
|
||||
init();
|
||||
}
|
||||
|
||||
protected void init() {
|
||||
this.filterInventory = createFilterInventory();
|
||||
// readData(mainItem);
|
||||
addPlayerSlots();
|
||||
addLinkSlots();
|
||||
detectAndSendChanges();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearContents() {
|
||||
for (int i = 0; i < filterInventory.getSlots(); i++)
|
||||
filterInventory.setStackInSlot(i, ItemStack.EMPTY);
|
||||
}
|
||||
|
||||
protected void addPlayerSlots() {
|
||||
int x = 22;
|
||||
int y = 142;
|
||||
|
||||
for (int hotbarSlot = 0; hotbarSlot < 9; ++hotbarSlot)
|
||||
this.addSlot(new Slot(playerInventory, hotbarSlot, x + hotbarSlot * 18, y + 58));
|
||||
for (int row = 0; row < 3; ++row)
|
||||
for (int col = 0; col < 9; ++col)
|
||||
this.addSlot(new Slot(playerInventory, col + row * 9 + 9, x + col * 18, y + row * 18));
|
||||
}
|
||||
|
||||
protected void addLinkSlots() {
|
||||
int slot = 0;
|
||||
int x = 12;
|
||||
int y = 44;
|
||||
|
||||
for (int column = 0; column < 6; column++) {
|
||||
for (int row = 0; row < 2; ++row)
|
||||
addSlot(new SlotItemHandler(filterInventory, slot++, x, y + row * 18));
|
||||
x += 24;
|
||||
if (column == 3)
|
||||
x += 11;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canMergeSlot(ItemStack stack, Slot slotIn) {
|
||||
return canDragIntoSlot(slotIn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDragIntoSlot(Slot slotIn) {
|
||||
return slotIn.inventory == playerInventory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(PlayerEntity playerIn) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, PlayerEntity player) {
|
||||
if (slotId == playerInventory.currentItem && clickTypeIn != ClickType.THROW)
|
||||
return ItemStack.EMPTY;
|
||||
|
||||
ItemStack held = playerInventory.getItemStack();
|
||||
if (slotId < 36)
|
||||
return super.slotClick(slotId, dragType, clickTypeIn, player);
|
||||
if (clickTypeIn == ClickType.THROW)
|
||||
return ItemStack.EMPTY;
|
||||
|
||||
int slot = slotId - 36;
|
||||
if (clickTypeIn == ClickType.CLONE) {
|
||||
if (player.isCreative() && held.isEmpty()) {
|
||||
ItemStack stackInSlot = filterInventory.getStackInSlot(slot)
|
||||
.copy();
|
||||
stackInSlot.setCount(64);
|
||||
playerInventory.setItemStack(stackInSlot);
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
if (held.isEmpty()) {
|
||||
filterInventory.setStackInSlot(slot, ItemStack.EMPTY);
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
ItemStack insert = held.copy();
|
||||
insert.setCount(1);
|
||||
filterInventory.setStackInSlot(slot, insert);
|
||||
return held;
|
||||
}
|
||||
|
||||
protected ItemStackHandler createFilterInventory() {
|
||||
return LinkedControllerItem.getFrequencyItems(mainItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) {
|
||||
if (index < 36) {
|
||||
ItemStack stackToInsert = playerInventory.getStackInSlot(index);
|
||||
for (int i = 0; i < filterInventory.getSlots(); i++) {
|
||||
ItemStack stack = filterInventory.getStackInSlot(i);
|
||||
if (stack.isEmpty()) {
|
||||
ItemStack copy = stackToInsert.copy();
|
||||
copy.setCount(1);
|
||||
filterInventory.insertItem(i, copy, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
filterInventory.extractItem(index - 36, 1, false);
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContainerClosed(PlayerEntity playerIn) {
|
||||
super.onContainerClosed(playerIn);
|
||||
mainItem.getOrCreateTag()
|
||||
.put("Items", filterInventory.serializeNBT());
|
||||
// saveData(filterItem);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class LinkedControllerInputPacket extends LinkedControllerPacketBase {
|
||||
|
||||
private Collection<Integer> activatedButtons;
|
||||
private boolean press;
|
||||
|
||||
public LinkedControllerInputPacket(Collection<Integer> activatedButtons, boolean press) {
|
||||
this.activatedButtons = activatedButtons;
|
||||
this.press = press;
|
||||
}
|
||||
|
||||
public LinkedControllerInputPacket(PacketBuffer buffer) {
|
||||
activatedButtons = new ArrayList<>();
|
||||
press = buffer.readBoolean();
|
||||
int size = buffer.readVarInt();
|
||||
for (int i = 0; i < size; i++)
|
||||
activatedButtons.add(buffer.readVarInt());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer) {
|
||||
buffer.writeBoolean(press);
|
||||
buffer.writeVarInt(activatedButtons.size());
|
||||
activatedButtons.forEach(buffer::writeVarInt);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handle(ServerPlayerEntity player, ItemStack heldItem) {
|
||||
World world = player.getEntityWorld();
|
||||
UUID uniqueID = player.getUniqueID();
|
||||
BlockPos pos = player.getBlockPos();
|
||||
|
||||
LinkedControllerServerHandler.receivePressed(world, pos, uniqueID, activatedButtons.stream()
|
||||
.map(i -> LinkedControllerItem.toFrequency(heldItem, i))
|
||||
.collect(Collectors.toList()), press);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllContainerTypes;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler;
|
||||
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemUseContext;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
public class LinkedControllerItem extends Item implements INamedContainerProvider {
|
||||
|
||||
public LinkedControllerItem(Properties p_i48487_1_) {
|
||||
super(p_i48487_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onItemUse(ItemUseContext ctx) {
|
||||
PlayerEntity player = ctx.getPlayer();
|
||||
if (player == null)
|
||||
return ActionResultType.PASS;
|
||||
World world = ctx.getWorld();
|
||||
|
||||
if (!player.isSneaking() && player.isAllowEdit()
|
||||
&& AllBlocks.REDSTONE_LINK.has(world.getBlockState(ctx.getPos()))) {
|
||||
if (world.isRemote)
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> this.toggleBindMode(ctx.getPos()));
|
||||
player.getCooldownTracker()
|
||||
.setCooldown(this, 2);
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
return onItemRightClick(world, player, ctx.getHand()).getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, Hand hand) {
|
||||
ItemStack heldItem = player.getHeldItem(hand);
|
||||
|
||||
if (player.isSneaking() && hand == Hand.MAIN_HAND) {
|
||||
if (!world.isRemote && player instanceof ServerPlayerEntity && player.isAllowEdit())
|
||||
NetworkHooks.openGui((ServerPlayerEntity) player, this, buf -> {
|
||||
buf.writeItemStack(heldItem);
|
||||
});
|
||||
return ActionResult.success(heldItem);
|
||||
}
|
||||
|
||||
if (!player.isSneaking()) {
|
||||
if (world.isRemote)
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::toggleActive);
|
||||
player.getCooldownTracker()
|
||||
.setCooldown(this, 2);
|
||||
}
|
||||
|
||||
return ActionResult.pass(heldItem);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private void toggleBindMode(BlockPos pos) {
|
||||
LinkedControllerClientHandler.toggleBindMode(pos);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private void toggleActive() {
|
||||
LinkedControllerClientHandler.toggle();
|
||||
}
|
||||
|
||||
public static ItemStackHandler getFrequencyItems(ItemStack stack) {
|
||||
ItemStackHandler newInv = new ItemStackHandler(12);
|
||||
if (AllItems.LINKED_CONTROLLER.get() != stack.getItem())
|
||||
throw new IllegalArgumentException("Cannot get frequency items from non-controller: " + stack);
|
||||
CompoundNBT invNBT = stack.getOrCreateChildTag("Items");
|
||||
if (!invNBT.isEmpty())
|
||||
newInv.deserializeNBT(invNBT);
|
||||
return newInv;
|
||||
}
|
||||
|
||||
public static Couple<RedstoneLinkNetworkHandler.Frequency> toFrequency(ItemStack controller, int slot) {
|
||||
ItemStackHandler frequencyItems = getFrequencyItems(controller);
|
||||
return Couple.create(Frequency.of(frequencyItems.getStackInSlot(slot * 2)),
|
||||
Frequency.of(frequencyItems.getStackInSlot(slot * 2 + 1)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container createMenu(int id, PlayerInventory inv, PlayerEntity player) {
|
||||
ItemStack heldItem = player.getHeldItemMainhand();
|
||||
return new LinkedControllerContainer(AllContainerTypes.LINKED_CONTROLLER.get(), id, inv, heldItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextComponent getDisplayName() {
|
||||
return new TranslationTextComponent(getTranslationKey());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,134 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerClientHandler.Mode;
|
||||
import com.simibubi.create.foundation.block.render.CustomRenderedItemModelRenderer;
|
||||
import com.simibubi.create.foundation.item.PartialItemModelRenderer;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.MatrixStacker;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.HandSide;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
public class LinkedControllerItemRenderer extends CustomRenderedItemModelRenderer<LinkedControllerModel> {
|
||||
|
||||
static LerpedFloat equipProgress;
|
||||
static Vector<LerpedFloat> buttons;
|
||||
|
||||
static {
|
||||
equipProgress = LerpedFloat.linear()
|
||||
.startWithValue(0);
|
||||
buttons = new Vector<>(6);
|
||||
for (int i = 0; i < 6; i++)
|
||||
buttons.add(LerpedFloat.linear()
|
||||
.startWithValue(0));
|
||||
}
|
||||
|
||||
static void tick() {
|
||||
boolean active = LinkedControllerClientHandler.MODE != Mode.IDLE;
|
||||
equipProgress.chase(active ? 1 : 0, .2f, Chaser.EXP);
|
||||
equipProgress.tickChaser();
|
||||
|
||||
if (!active)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < buttons.size(); i++) {
|
||||
LerpedFloat lerpedFloat = buttons.get(i);
|
||||
lerpedFloat.chase(LinkedControllerClientHandler.currentlyPressed.contains(i) ? 1 : 0, .4f, Chaser.EXP);
|
||||
lerpedFloat.tickChaser();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void render(ItemStack stack, LinkedControllerModel model, PartialItemModelRenderer renderer,
|
||||
ItemCameraTransforms.TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light,
|
||||
int overlay) {
|
||||
float pt = AnimationTickHolder.getPartialTicks();
|
||||
MatrixStacker msr = MatrixStacker.of(ms);
|
||||
|
||||
ms.push();
|
||||
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
boolean rightHanded = mc.gameSettings.mainHand == HandSide.RIGHT;
|
||||
TransformType mainHand =
|
||||
rightHanded ? TransformType.FIRST_PERSON_RIGHT_HAND : TransformType.FIRST_PERSON_LEFT_HAND;
|
||||
TransformType offHand =
|
||||
rightHanded ? TransformType.FIRST_PERSON_LEFT_HAND : TransformType.FIRST_PERSON_RIGHT_HAND;
|
||||
|
||||
boolean active = false;
|
||||
boolean noControllerInMain = !AllItems.LINKED_CONTROLLER.isIn(mc.player.getHeldItemMainhand());
|
||||
|
||||
if (transformType == mainHand || (transformType == offHand && noControllerInMain)) {
|
||||
float equip = equipProgress.getValue(pt);
|
||||
int handModifier = transformType == TransformType.FIRST_PERSON_LEFT_HAND ? -1 : 1;
|
||||
msr.translate(0, equip / 4, equip / 4 * handModifier);
|
||||
msr.rotateY(equip * -30 * handModifier);
|
||||
msr.rotateZ(equip * -30);
|
||||
active = true;
|
||||
}
|
||||
|
||||
if (transformType == TransformType.GUI) {
|
||||
if (stack == mc.player.getHeldItemMainhand())
|
||||
active = true;
|
||||
if (stack == mc.player.getHeldItemOffhand() && noControllerInMain)
|
||||
active = true;
|
||||
}
|
||||
|
||||
active &= LinkedControllerClientHandler.MODE != Mode.IDLE;
|
||||
renderer.render(active ? model.getPartial("powered") : model.getOriginalModel(), light);
|
||||
|
||||
if (!active) {
|
||||
ms.pop();
|
||||
return;
|
||||
}
|
||||
|
||||
IBakedModel button = model.getPartial("button");
|
||||
float s = 1 / 16f;
|
||||
float b = s * -.75f;
|
||||
int index = 0;
|
||||
|
||||
if (LinkedControllerClientHandler.MODE == Mode.BIND) {
|
||||
int i = (int) MathHelper.lerp((MathHelper.sin(AnimationTickHolder.getRenderTime() / 4f) + 1) / 2, 5, 15);
|
||||
light = i << 20;
|
||||
}
|
||||
|
||||
ms.push();
|
||||
msr.translate(2 * s, 0, 8 * s);
|
||||
button(renderer, ms, light, pt, button, b, index++);
|
||||
msr.translate(4 * s, 0, 0);
|
||||
button(renderer, ms, light, pt, button, b, index++);
|
||||
msr.translate(-2 * s, 0, 2 * s);
|
||||
button(renderer, ms, light, pt, button, b, index++);
|
||||
msr.translate(0, 0, -4 * s);
|
||||
button(renderer, ms, light, pt, button, b, index++);
|
||||
ms.pop();
|
||||
|
||||
msr.translate(3 * s, 0, 3 * s);
|
||||
button(renderer, ms, light, pt, button, b, index++);
|
||||
msr.translate(2 * s, 0, 0);
|
||||
button(renderer, ms, light, pt, button, b, index++);
|
||||
|
||||
ms.pop();
|
||||
}
|
||||
|
||||
protected void button(PartialItemModelRenderer renderer, MatrixStack ms, int light, float pt, IBakedModel button,
|
||||
float b, int index) {
|
||||
ms.push();
|
||||
ms.translate(0, b * buttons.get(index)
|
||||
.getValue(pt), 0);
|
||||
renderer.renderSolid(button, light);
|
||||
ms.pop();
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue