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

This commit is contained in:
zelophed 2021-07-25 04:13:08 +02:00
commit 74d57f38fe
181 changed files with 1616 additions and 1922 deletions

View file

@ -6,18 +6,18 @@ org.gradle.daemon = false
# mod version info
mod_version = 0.3.2c
minecraft_version = 1.16.5
forge_version = 36.1.32
forge_version = 36.2.0
# build dependency versions
forgegradle_version = 4.1.+
mixingradle_version = 0.7-SNAPSHOT
shadow_version = 5.2.0
shadow_version = 6.1.0
cursegradle_version = 1.4.0
# dependency versions
registrate_version = 1.0.4
flywheel_version = 1.16-0.1.1.24
jei_version = 7.7.0.106
flywheel_version = 1.16-0.2.0.28
jei_version = 7.7.1.110
# curseforge information
projectId = 328085

View file

@ -425,21 +425,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
58e72b5fe2423b661e4892a817e08985c3944318 assets/create/lang/en_ud.json
6d3a0bf566fc8de302cd48ae4686582cb78110b5 assets/create/lang/en_us.json
67dce8f635842cd12a9ae98fedd492b4cfb9eb28 assets/create/lang/unfinished/de_de.json
83079afe226e306ea0c144afdb62cd54385ade16 assets/create/lang/unfinished/es_es.json
e357c238bb1b704d997434beebace6424f5a6abf assets/create/lang/unfinished/es_mx.json
67d49ab1b8a6d253a0b402021e40b3ead6ad4407 assets/create/lang/unfinished/fr_fr.json
991986bd6fffc6c9ac170451c2bc9897f451ce3f assets/create/lang/unfinished/it_it.json
4ff92f6333ec6a831a30a1c0e01f6cb40035b531 assets/create/lang/unfinished/ja_jp.json
eeadeb375d666a118a106ff413b5b3befefaaae5 assets/create/lang/unfinished/ko_kr.json
1a5f20e1c0dd6fdaa872d7cfa29c40f5223de3ae assets/create/lang/unfinished/nl_nl.json
7f9feb8db7cc5f42050e5f927ea764e2940c9a7d assets/create/lang/unfinished/pl_pl.json
8ea9e0639ac1a143baa7f82885ebd413bffefd01 assets/create/lang/unfinished/pt_br.json
0b42660049fbf141e9cc9501454dfdf7a3e71816 assets/create/lang/unfinished/ru_ru.json
52f37952e0167f97d5cf1e4d5b2ed5eccd379ea6 assets/create/lang/unfinished/zh_cn.json
355e85057e3d39d51f7aaee908884db96e4bfdd9 assets/create/lang/unfinished/zh_tw.json
fb760b12b4bc8114744d3acc6a597b2fad88d988 assets/create/lang/en_ud.json
66e8ae18a98d86c66393c908ab51eae5060b8e04 assets/create/lang/en_us.json
9e94c2420840c516e24dfd7968aaad61da24b5a2 assets/create/lang/unfinished/de_de.json
f5c05d84c11e6db204c42169228329c8d361ca51 assets/create/lang/unfinished/es_es.json
edf3dab78e95aa442c3c667d8d1d574bfc69d5d7 assets/create/lang/unfinished/es_mx.json
23a46ae0bc7b2181f26eeed70801714a254d2587 assets/create/lang/unfinished/fr_fr.json
5e95153e640edc367b963489df8c92c459badcd3 assets/create/lang/unfinished/it_it.json
a951315b2591051dad6c53739fe554fe78595250 assets/create/lang/unfinished/ja_jp.json
419a1fc9af7d7ea0ccd612847df74e0b45380864 assets/create/lang/unfinished/ko_kr.json
dbc823d8cb38598e75871a2187b2a58d7f77f86a assets/create/lang/unfinished/nl_nl.json
ac609477c295be1705d3efc07848ffe6779fd397 assets/create/lang/unfinished/pl_pl.json
95e17b968103e0ef62411489e699d39ac7ff0b64 assets/create/lang/unfinished/pt_br.json
b37f50f613b0df44032fe5d618a5ce7227be8087 assets/create/lang/unfinished/ru_ru.json
2254cfb88d58f6932451a1548341f10749deb2df assets/create/lang/unfinished/zh_cn.json
6192a7ede669ae6b6f8de6701b8a924d6a756c4a 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
@ -1316,7 +1316,7 @@ f56bf22324faf8958eaef4d94b958f1108d52e5a assets/create/models/item/copper_tiles.
5583368909c319acfcf0f7a419bedf23272fe613 assets/create/models/item/copper_valve_handle.json
4e253e7c0626dfd76e2d39786ce1a34e0baaa62d assets/create/models/item/crafter_slot_cover.json
1f947dafff30da701b7675f5b026ccab3129b079 assets/create/models/item/crafting_blueprint.json
6fa0ffd887f51034d7ac923b1cabb6ab44d33fe9 assets/create/models/item/creative_cake.json
db68f1fcc5b91f3ee0cc023538d965d76dd13506 assets/create/models/item/creative_blaze_cake.json
7b333dea353afaa27b182aedc647c9e9e34e92ef assets/create/models/item/creative_crate.json
f7d06c52c3ca8c22ad67f5741471f06ac22e7fcb assets/create/models/item/creative_fluid_tank.json
5b39403f6c81f05e566b621b62e267267de47c41 assets/create/models/item/creative_motor.json
@ -3239,7 +3239,6 @@ ff39e629b242ae91e23aec86b0a1f757dd938305 data/create/recipes/dolomite_pillar.jso
b4a8d14d9a20e812e0acb691b5b511a87e8b0576 data/create/recipes/dolomite_pillar_from_dolomite_stonecutting.json
d81ceba2946286d374801e698a4ca2116395cbad data/create/recipes/emptying/builders_tea.json
20b7c7c62fa2e33199e08188dd8836844a6d9cfd data/create/recipes/emptying/honey_bottle.json
28a0f9a45671de2e6db19fa66374e245feeed142 data/create/recipes/emptying/milk_bucket.json
0e11aa1accb71ed62e212f23a7069b7b7b4e8119 data/create/recipes/fancy_andesite_bricks_from_andesite_stonecutting.json
8b86fc9a9416adeaab3f26192a73a481887675c3 data/create/recipes/fancy_andesite_bricks_slab.json
c7b762b25c7a6705dba3e922e981be851ac4f36b data/create/recipes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json
@ -3311,7 +3310,6 @@ d2ab9ce73636773165564506580f2ec13bd1fc50 data/create/recipes/fancy_weathered_lim
244f27eadefefbc966ac384ac087c57d19484321 data/create/recipes/filling/gunpowder.json
c8ca74a6cd071308a1750a2ad1153e79422598a0 data/create/recipes/filling/honey_bottle.json
d20703b67dd5e4c9b75718db02d575b1c7415c12 data/create/recipes/filling/honeyed_apple.json
c83e77a9799b6ca34dd73aa76b56159f2103c48c data/create/recipes/filling/milk_bucket.json
08ce1420d1551ecfef5988977436c087123851a6 data/create/recipes/filling/redstone.json
fb8e4378cd2240644a4b5c0d06e27ad772ec7695 data/create/recipes/filling/sweet_roll.json
5b8bbde7f8b270ab75fac18d6858f2fadbc0efa3 data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json
@ -3755,7 +3753,7 @@ eac71740fb12bdb38b5dfaa2268613d7ba82b809 data/create/tags/blocks/windmill_sails.
081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data/create/tags/items/create_ingots.json
94c62bf22678ef55b2b8a5398a7960e5b00682dc data/create/tags/items/crushed_ores.json
6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json
94826d9ceac981342c753460b7f7ea9d23dd13a0 data/create/tags/items/upright_on_belt.json
f1092005b5d01e1f29457e90f75e5750f7f0226b data/create/tags/items/upright_on_belt.json
50936b211d94167a35ec78c89954082a336b6269 data/create/tags/items/valve_handles.json
16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/blocks/glass/colorless.json
81d3eb40b048160fcc2d6bb7ff12b49276297efd data/forge/tags/blocks/glass_panes.json
@ -3768,7 +3766,6 @@ f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/blocks/storage_blocks/c
7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/blocks/storage_blocks/zinc.json
6b73c57912934d09233ad2966110968a6109f2c9 data/forge/tags/fluids/chocolate.json
391c9b2be5740aea943a8a5fe27eb327e2d973b0 data/forge/tags/fluids/honey.json
aa729fedc4fcca0f0a18bf7b00075af06bf5357f data/forge/tags/fluids/milk.json
d6a4e4fe1204b718010543a28a9b9ec4e0977bd7 data/forge/tags/fluids/tea.json
d9ffc62a496946fc4848934e7c0a6e917337f8be data/forge/tags/items/beacon_payment.json
05ca51cdc60a5e109b5a0e3b782de13d34ebcb24 data/forge/tags/items/cobblestone.json

View file

@ -435,7 +435,6 @@
"entity.create.seat": "\u0287\u0250\u01DDS",
"entity.create.stationary_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0250uo\u0131\u0287\u0250\u0287S",
"entity.create.super_glue": "\u01DDn\u05DF\u2141 \u0279\u01DDdnS",
"fluid.create.milk": "\u029E\u05DF\u0131W",
"fluid.create.potion": "uo\u0131\u0287o\u0500",
"fluid.create.tea": "\u0250\u01DD\u27D8 s,\u0279\u01DDp\u05DF\u0131n\u15FA",
"item.create.andesite_alloy": "\u028Eo\u05DF\u05DF\u2C6F \u01DD\u0287\u0131s\u01DDpu\u2C6F",
@ -460,7 +459,7 @@
"item.create.copper_sheet": "\u0287\u01DD\u01DD\u0265S \u0279\u01DDddo\u0186",
"item.create.crafter_slot_cover": "\u0279\u01DD\u028Co\u0186 \u0287o\u05DFS \u0279\u01DD\u0287\u025F\u0250\u0279\u0186",
"item.create.crafting_blueprint": "\u0287u\u0131\u0279d\u01DDn\u05DF\u15FA bu\u0131\u0287\u025F\u0250\u0279\u0186",
"item.create.creative_cake": "\u01DD\u029E\u0250\u0186 \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186",
"item.create.creative_blaze_cake": "\u01DD\u029E\u0250\u0186 \u01DDz\u0250\u05DF\u15FA \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186",
"item.create.crushed_aluminum_ore": "\u01DD\u0279O \u026Fnu\u0131\u026Fn\u05DF\u2C6F p\u01DD\u0265sn\u0279\u0186",
"item.create.crushed_brass": "ss\u0250\u0279\u15FA p\u01DD\u0265sn\u0279\u0186",
"item.create.crushed_copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186 p\u01DD\u0265sn\u0279\u0186",

View file

@ -441,7 +441,6 @@
"entity.create.stationary_contraption": "Stationary Contraption",
"entity.create.super_glue": "Super Glue",
"fluid.create.milk": "Milk",
"fluid.create.potion": "Potion",
"fluid.create.tea": "Builder's Tea",
@ -467,7 +466,7 @@
"item.create.copper_sheet": "Copper Sheet",
"item.create.crafter_slot_cover": "Crafter Slot Cover",
"item.create.crafting_blueprint": "Crafting Blueprint",
"item.create.creative_cake": "Creative Cake",
"item.create.creative_blaze_cake": "Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Crushed Aluminum Ore",
"item.create.crushed_brass": "Crushed Brass",
"item.create.crushed_copper_ore": "Crushed Copper Ore",
@ -1412,10 +1411,10 @@
"block.create.creative_crate.tooltip.condition1": "When Item in Filter Slot",
"block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
"item.create.creative_cake.tooltip": "CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "_Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "_Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "Stationäre Vorrichtung",
"entity.create.super_glue": "Superkleber",
"fluid.create.milk": "Milch",
"fluid.create.potion": "Trank",
"fluid.create.tea": "Bauherrentee",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "Kupferblech",
"item.create.crafter_slot_cover": "Handwerkseinheit Slot Abdeckung",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Zerkleinertes Aluminiumerz",
"item.create.crushed_brass": "Zerkleinertes Messing",
"item.create.crushed_copper_ore": "Zerkleinertes Kupfererz",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "Wenn Gegenstand in Filter Slot",
"block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Gegenstands zur Verfügung stellen. In diese Kiste _eingefügte_ Gegenstände werden _entsorgt_.",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "Artilugio estacionario",
"entity.create.super_glue": "Pegamento",
"fluid.create.milk": "Leche",
"fluid.create.potion": "Poción",
"fluid.create.tea": "Té del Constructor",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "Lámina de cobre",
"item.create.crafter_slot_cover": "Tapa de ranura del ensamblador mecánico",
"item.create.crafting_blueprint": "Plano de elaboración",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Mineral de aluminio molido",
"item.create.crushed_brass": "Latón molido",
"item.create.crushed_copper_ore": "Mineral de cobre molido",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "Cuando el elemento está en la ranura para filtros",
"block.create.creative_crate.tooltip.behaviour1": "Todo lo que se _extraiga_ de este contenedor proporcionará un suministro _ilimitado_ del elemento especificado. Los objetos _insertados_ en esta caja serán _evitados_.",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "RAÍL DE CONTROL",
"block.create.controller_rail.tooltip.summary": "Un raíl energizado _unidireccional_ capaz de _controlar con precisión_ la _velocidad de movimiento_ de una vagoneta.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "Artefacto Estacionario",
"entity.create.super_glue": "Super Pegamento",
"fluid.create.milk": "Leche",
"fluid.create.potion": "Poción",
"fluid.create.tea": "Té del Constructor",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "Lámina de Cobre",
"item.create.crafter_slot_cover": "Cubierta de Ranura del Crafter",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Mineral de Aluminio Molido",
"item.create.crushed_brass": "Latón Molido",
"item.create.crushed_copper_ore": "Mineral de Cobre Molido",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot",
"block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "Engin stationnaire",
"entity.create.super_glue": "Colle extra-forte",
"fluid.create.milk": "Lait",
"fluid.create.potion": "Potion",
"fluid.create.tea": "Thé du constructeur",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "Plaques de cuivre",
"item.create.crafter_slot_cover": "Couvercle",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Aluminium concassé",
"item.create.crushed_brass": "Laiton concassé",
"item.create.crushed_copper_ore": "Cuivre concassé",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "Quand un objet se trouve dans l'emplacement de filtrage",
"block.create.creative_crate.tooltip.behaviour1": "Tout ce qui _extrait_ de ce conteneur aura une _alimentation illimitée_ de l'objet spécifié. Les objets _insérés_ dans cette caisse seront _éliminés_.",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "Contrazione stazionaria",
"entity.create.super_glue": "Super colla",
"fluid.create.milk": "Latte",
"fluid.create.potion": "Pozione",
"fluid.create.tea": "Tè del costruttore",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "Lamiera di rame",
"item.create.crafter_slot_cover": "Rivestimento per slot da costruzione",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Alluminio grezzo frantumato",
"item.create.crushed_brass": "Ottone frantumato",
"item.create.crushed_copper_ore": "Rame grezzo frantumato",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "Quando un oggetto è nel filtro",
"block.create.creative_crate.tooltip.behaviour1": "Qualsiasi _estrazione_ da questo contenitore fornisce _provviste infinite_ dell'oggetto in questione. Gli oggetti _inseriti_ in questo baule verranno _svuotati_.",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "BINARIO DI CONTROLLO",
"block.create.controller_rail.tooltip.summary": "Un _binario alimentato unidirezionale_ capace di _controllare precisamente_ la _velocità di movimento_ di un carrello da miniera.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "付設からくり",
"entity.create.super_glue": "超粘着剤",
"fluid.create.milk": "牛乳",
"fluid.create.potion": "ポーション",
"fluid.create.tea": "建築家のお茶",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "銅板",
"item.create.crafter_slot_cover": "クラフタースロットカバー",
"item.create.crafting_blueprint": "クラフトブループリント",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "砕いたアルミニウム鉱石",
"item.create.crushed_brass": "砕いた真鍮",
"item.create.crushed_copper_ore": "砕いた銅鉱石",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき",
"block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定されたアイテムが_無限_に_搬出_されます。このクレートに_搬入_されたアイテムは_消滅_します。",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "コントローラーレール",
"block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "고정된 구조물",
"entity.create.super_glue": "강력 접착제",
"fluid.create.milk": "우유",
"fluid.create.potion": "포션",
"fluid.create.tea": "건축가의 차",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "구리 판",
"item.create.crafter_slot_cover": "조합기 슬롯 덮개",
"item.create.crafting_blueprint": "조합 청사진",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore",
"item.create.crushed_brass": "분쇄된 황동",
"item.create.crushed_copper_ore": "분쇄된 구리 광석",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시",
"block.create.creative_crate.tooltip.behaviour1": "선택된 아이템을 _무한정_으로 _빼낼_ 수 있습니다. 대신 _들어간_ 아이템은 _삭제_됩니다.",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "_광산 수레_의 _이동속도_를 _세밀하게_ _조정_할 수 있는 _양방향_ _전동 레일_입니다.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1767",
"_": "Missing Localizations: 1766",
"_": "->------------------------] Game Elements [------------------------<-",
@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
"fluid.create.milk": "UNLOCALIZED: Milk",
"fluid.create.potion": "UNLOCALIZED: Potion",
"fluid.create.tea": "UNLOCALIZED: Builder's Tea",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "UNLOCALIZED: Copper Sheet",
"item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore",
"item.create.crushed_brass": "Gemalen Brons",
"item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot",
"block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "Maszyna stacjonarna",
"entity.create.super_glue": "Super Glue",
"fluid.create.milk": "Mleko",
"fluid.create.potion": "Mikstura",
"fluid.create.tea": "Herbatka Budowniczego",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "Arkusz miedzi",
"item.create.crafter_slot_cover": "Przykrywka na slot stołu rzemieślniczego",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Rozkruszona ruda żelaza",
"item.create.crushed_brass": "Rozkruszony mosiądz",
"item.create.crushed_copper_ore": "Rozkruszona ruda miedzi",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "Kiedy przedmiot jest w slocie na filtr",
"block.create.creative_crate.tooltip.behaviour1": "Bloki _wyciągające_ przedmioty z tego bloku będą miały _nieskończony zapas_ wybranego przedmiotu. Przedmioty włożone do tej skrzynki będą _usuwane_.",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "TORY STERUJĄCE",
"block.create.controller_rail.tooltip.summary": "_Wielokierunkowy_ zasilany tor pozwalający na _dokładną kontrolę_ nad _prędkością wagonika_.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 1808",
"_": "Missing Localizations: 1807",
"_": "->------------------------] Game Elements [------------------------<-",
@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
"fluid.create.milk": "UNLOCALIZED: Milk",
"fluid.create.potion": "UNLOCALIZED: Potion",
"fluid.create.tea": "UNLOCALIZED: Builder's Tea",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "UNLOCALIZED: Copper Sheet",
"item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore",
"item.create.crushed_brass": "UNLOCALIZED: Crushed Brass",
"item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot",
"block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL",
"block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "Стационарная штуковина",
"entity.create.super_glue": "Супер-клей",
"fluid.create.milk": "Молоко",
"fluid.create.potion": "Зелье",
"fluid.create.tea": "Чай Строителя",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "Медный лист",
"item.create.crafter_slot_cover": "Крышка на слот крафтера",
"item.create.crafting_blueprint": "Создание чертежа",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "Дроблёная алюминиевая руда",
"item.create.crushed_brass": "Дроблёная латунь",
"item.create.crushed_copper_ore": "Дроблёная медная руда",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "Когда предмет в слоте фильтра",
"block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _вставленные_ в этот ящик, будут _аннулированы_.",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "КОНТРОЛИРУЮЩАЯ РЕЛЬСА",
"block.create.controller_rail.tooltip.summary": "_Все-направленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.",

View file

@ -1,5 +1,5 @@
{
"_": "Missing Localizations: 297",
"_": "Missing Localizations: 5",
"_": "->------------------------] Game Elements [------------------------<-",
@ -28,12 +28,12 @@
"block.create.belt": "传送带",
"block.create.birch_window": "白桦窗户",
"block.create.birch_window_pane": "白桦窗户板",
"block.create.black_nixie_tube": "UNLOCALIZED: Black Nixie Tube",
"block.create.black_nixie_tube": "黑色辉光管",
"block.create.black_sail": "黑色风帆",
"block.create.black_seat": "黑色坐垫",
"block.create.black_valve_handle": "黑色阀门手轮",
"block.create.blaze_burner": "烈焰人燃烧室",
"block.create.blue_nixie_tube": "UNLOCALIZED: Blue Nixie Tube",
"block.create.blue_nixie_tube": "蓝色辉光管",
"block.create.blue_sail": "蓝色风帆",
"block.create.blue_seat": "蓝色坐垫",
"block.create.blue_valve_handle": "蓝色阀门手轮",
@ -43,7 +43,7 @@
"block.create.brass_encased_shaft": "黄铜传动杆箱",
"block.create.brass_funnel": "黄铜漏斗",
"block.create.brass_tunnel": "黄铜隧道",
"block.create.brown_nixie_tube": "UNLOCALIZED: Brown Nixie Tube",
"block.create.brown_nixie_tube": "棕色辉光管",
"block.create.brown_sail": "棕色风帆",
"block.create.brown_seat": "棕色坐垫",
"block.create.brown_valve_handle": "棕色阀门手轮",
@ -61,7 +61,7 @@
"block.create.cogwheel": "齿轮",
"block.create.content_observer": "物品侦测器",
"block.create.controller_rail": "控制铁轨",
"block.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"block.create.copper_backtank": "铜制背罐",
"block.create.copper_block": "铜块",
"block.create.copper_casing": "铜机壳",
"block.create.copper_ore": "铜矿石",
@ -76,7 +76,7 @@
"block.create.crushing_wheel": "粉碎轮",
"block.create.crushing_wheel_controller": "粉碎轮控制器",
"block.create.cuckoo_clock": "布谷鸟闹钟",
"block.create.cyan_nixie_tube": "UNLOCALIZED: Cyan Nixie Tube",
"block.create.cyan_nixie_tube": "青色辉光管",
"block.create.cyan_sail": "青色风帆",
"block.create.cyan_seat": "青色坐垫",
"block.create.cyan_valve_handle": "青色阀门手轮",
@ -183,16 +183,16 @@
"block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯",
"block.create.granite_cobblestone_wall": "花岗岩圆石墙",
"block.create.granite_pillar": "竖纹花岗岩",
"block.create.gray_nixie_tube": "UNLOCALIZED: Gray Nixie Tube",
"block.create.gray_nixie_tube": "灰色辉光管",
"block.create.gray_sail": "灰色风帆",
"block.create.gray_seat": "灰色坐垫",
"block.create.gray_valve_handle": "灰色阀门手轮",
"block.create.green_nixie_tube": "UNLOCALIZED: Green Nixie Tube",
"block.create.green_nixie_tube": "绿色辉光管",
"block.create.green_sail": "绿色风帆",
"block.create.green_seat": "绿色坐垫",
"block.create.green_valve_handle": "绿色阀门手轮",
"block.create.hand_crank": "手摇曲柄",
"block.create.haunted_bell": "UNLOCALIZED: Haunted Bell",
"block.create.haunted_bell": "怪异钟",
"block.create.honey": "蜂蜜",
"block.create.horizontal_framed_glass": "竖直边框玻璃",
"block.create.horizontal_framed_glass_pane": "竖直边框玻璃板",
@ -210,16 +210,16 @@
"block.create.layered_limestone": "层叠石灰岩",
"block.create.layered_scoria": "层叠熔渣",
"block.create.layered_weathered_limestone": "层叠风化石灰岩",
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
"block.create.light_blue_nixie_tube": "UNLOCALIZED: Light Blue Nixie Tube",
"block.create.lectern_controller": "遥控器讲台",
"block.create.light_blue_nixie_tube": "淡蓝色辉光管",
"block.create.light_blue_sail": "淡蓝色风帆",
"block.create.light_blue_seat": "淡蓝色坐垫",
"block.create.light_blue_valve_handle": "淡蓝色阀门手轮",
"block.create.light_gray_nixie_tube": "UNLOCALIZED: Light Gray Nixie Tube",
"block.create.light_gray_nixie_tube": "淡灰色辉光管",
"block.create.light_gray_sail": "淡灰色风帆",
"block.create.light_gray_seat": "淡灰色坐垫",
"block.create.light_gray_valve_handle": "淡灰色阀门手轮",
"block.create.lime_nixie_tube": "UNLOCALIZED: Lime Nixie Tube",
"block.create.lime_nixie_tube": "黄绿色辉光管",
"block.create.lime_sail": "黄绿色风帆",
"block.create.lime_seat": "黄绿色坐垫",
"block.create.lime_valve_handle": "黄绿色阀门手轮",
@ -236,7 +236,7 @@
"block.create.limestone_pillar": "竖纹石灰岩",
"block.create.linear_chassis": "机壳底盘",
"block.create.lit_blaze_burner": "烈焰人燃烧室(已点燃)",
"block.create.magenta_nixie_tube": "UNLOCALIZED: Magenta Nixie Tube",
"block.create.magenta_nixie_tube": "品红色辉光管",
"block.create.magenta_sail": "品红色风帆",
"block.create.magenta_seat": "品红色坐垫",
"block.create.magenta_valve_handle": "品红色阀门手轮",
@ -320,8 +320,8 @@
"block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶",
"block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯",
"block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙",
"block.create.peculiar_bell": "UNLOCALIZED: Peculiar Bell",
"block.create.pink_nixie_tube": "UNLOCALIZED: Pink Nixie Tube",
"block.create.peculiar_bell": "奇异钟",
"block.create.pink_nixie_tube": "粉色辉光管",
"block.create.pink_sail": "粉红色风帆",
"block.create.pink_seat": "粉红色坐垫",
"block.create.pink_valve_handle": "粉红色阀门手轮",
@ -356,12 +356,12 @@
"block.create.powered_toggle_latch": "转换锁存器",
"block.create.pulley_magnet": "滑轮磁铁",
"block.create.pulse_repeater": "脉冲中继器",
"block.create.purple_nixie_tube": "UNLOCALIZED: Purple Nixie Tube",
"block.create.purple_nixie_tube": "紫色辉光管",
"block.create.purple_sail": "紫色风帆",
"block.create.purple_seat": "紫色坐垫",
"block.create.purple_valve_handle": "紫色阀门手轮",
"block.create.radial_chassis": "旋转底盘",
"block.create.red_nixie_tube": "UNLOCALIZED: Red Nixie Tube",
"block.create.red_nixie_tube": "红色辉光管",
"block.create.red_sail": "红色风帆",
"block.create.red_seat": "红色坐垫",
"block.create.red_valve_handle": "红色阀门手轮",
@ -418,31 +418,30 @@
"block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙",
"block.create.weathered_limestone_pillar": "竖纹风化石灰岩",
"block.create.weighted_ejector": "弹射置物台",
"block.create.white_nixie_tube": "UNLOCALIZED: White Nixie Tube",
"block.create.white_nixie_tube": "白色辉光管",
"block.create.white_sail": "白色风帆",
"block.create.white_seat": "白色坐垫",
"block.create.white_valve_handle": "白色阀门手轮",
"block.create.windmill_bearing": "风车轴承",
"block.create.wooden_bracket": "木质支架",
"block.create.yellow_nixie_tube": "UNLOCALIZED: Yellow Nixie Tube",
"block.create.yellow_nixie_tube": "黄色辉光管",
"block.create.yellow_sail": "黄色风帆",
"block.create.yellow_seat": "黄色坐垫",
"block.create.yellow_valve_handle": "黄色阀门手轮",
"block.create.zinc_block": "锌块",
"block.create.zinc_ore": "锌矿石",
"enchantment.create.capacity": "UNLOCALIZED: Capacity",
"enchantment.create.potato_recovery": "UNLOCALIZED: Potato Recovery",
"enchantment.create.capacity": "扩容",
"enchantment.create.potato_recovery": "土豆回收",
"entity.create.contraption": "装置",
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"entity.create.crafting_blueprint": "合成蓝图",
"entity.create.gantry_contraption": "起重机装置",
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
"entity.create.potato_projectile": "被发射的土豆",
"entity.create.seat": "坐垫",
"entity.create.stationary_contraption": "固定装置",
"entity.create.super_glue": "强力胶",
"fluid.create.milk": "牛奶",
"fluid.create.potion": "药水",
"fluid.create.tea": "茶",
@ -462,13 +461,13 @@
"item.create.chocolate_glazed_berries": "巧克力包层浆果",
"item.create.chromatic_compound": "异彩化合物",
"item.create.cinder_flour": "下界面粉",
"item.create.copper_backtank": "UNLOCALIZED: Copper Backtank",
"item.create.copper_backtank": "铜制背罐",
"item.create.copper_ingot": "铜锭",
"item.create.copper_nugget": "铜粒",
"item.create.copper_sheet": "铜板",
"item.create.crafter_slot_cover": "合成器盖板",
"item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.crafting_blueprint": "合成蓝图",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "粉碎铝矿石",
"item.create.crushed_brass": "粉碎黄铜",
"item.create.crushed_copper_ore": "粉碎铜矿石",
@ -483,8 +482,8 @@
"item.create.crushed_tin_ore": "粉碎锡矿石",
"item.create.crushed_uranium_ore": "粉碎铀矿石",
"item.create.crushed_zinc_ore": "粉碎锌矿石",
"item.create.diving_boots": "UNLOCALIZED: Diving Boots",
"item.create.diving_helmet": "UNLOCALIZED: Diving Helmet",
"item.create.diving_boots": "潜水靴",
"item.create.diving_helmet": "潜水头盔",
"item.create.dough": "面团",
"item.create.electron_tube": "电子管",
"item.create.empty_blaze_burner": "空的烈焰人燃烧室",
@ -497,17 +496,17 @@
"item.create.handheld_worldshaper": "手持式环境塑形器",
"item.create.honey_bucket": "蜂蜜桶",
"item.create.honeyed_apple": "蜜渍苹果",
"item.create.incomplete_cogwheel": "UNLOCALIZED: Incomplete Cogwheel",
"item.create.incomplete_large_cogwheel": "UNLOCALIZED: Incomplete Large Cogwheel",
"item.create.incomplete_precision_mechanism": "UNLOCALIZED: Incomplete Precision Mechanism",
"item.create.incomplete_cogwheel": "齿轮(半成品)",
"item.create.incomplete_large_cogwheel": "大齿轮(半成品)",
"item.create.incomplete_precision_mechanism": "精密机构(半成品)",
"item.create.iron_sheet": "铁板",
"item.create.linked_controller": "UNLOCALIZED: Linked Controller",
"item.create.linked_controller": "无线红石遥控器",
"item.create.minecart_contraption": "装配过的矿车",
"item.create.minecart_coupling": "矿车连轴器",
"item.create.polished_rose_quartz": "磨制玫瑰石英",
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
"item.create.potato_cannon": "土豆加农炮",
"item.create.powdered_obsidian": "黑曜石粉末",
"item.create.precision_mechanism": "UNLOCALIZED: Precision Mechanism",
"item.create.precision_mechanism": "精密机构",
"item.create.propeller": "扇叶",
"item.create.red_sand_paper": "红沙砂纸",
"item.create.refined_radiance": "光辉石",
@ -652,8 +651,8 @@
"advancement.create.flywheel.desc": "将引擎成功连接到飞轮。",
"advancement.create.overstress_flywheel": "高压",
"advancement.create.overstress_flywheel.desc": "过载熔炉引擎。",
"advancement.create.precision_mechanism": "UNLOCALIZED: Complex Curiosities",
"advancement.create.precision_mechanism.desc": "UNLOCALIZED: Assemble a Precision Mechanism.",
"advancement.create.precision_mechanism": "高新技术",
"advancement.create.precision_mechanism.desc": "装配一个精密机构。",
"advancement.create.mechanical_arm": "忙碌的手!",
"advancement.create.mechanical_arm.desc": "制作机械臂,选择输入和输出,放置并给予它动力,然后看着它为你完成所有工作。",
"advancement.create.musical_arm": "没人能在我的 BGM 里打败我!",
@ -680,8 +679,8 @@
"advancement.create.wand_of_symmetry.desc": "制作一个对称之杖",
"advancement.create.extendo_grip": "biu biu biu!",
"advancement.create.extendo_grip.desc": "获得一个伸缩机械手",
"advancement.create.potato_cannon": "UNLOCALIZED: Fwoomp!",
"advancement.create.potato_cannon.desc": "UNLOCALIZED: Defeat an enemy with your Potato Cannon.",
"advancement.create.potato_cannon": "Fwoomp!",
"advancement.create.potato_cannon.desc": "用土豆加农炮击杀一个生物。",
"advancement.create.dual_extendo_grip": "biu——biu——biu——",
"advancement.create.dual_extendo_grip.desc": "双持伸缩机械手,超人般的触碰距离。",
"advancement.create.eob": "Beta 版结束",
@ -694,30 +693,30 @@
"itemGroup.create.palettes": "机械动力建筑方块",
"death.attack.create.crush": "%1$s被压扁了",
"death.attack.create.crush.player": "UNLOCALIZED: %1$s was thrown into Crushing Wheels by %2$s",
"death.attack.create.crush.player": "%1$s被%2$s推进了粉碎机",
"death.attack.create.fan_fire": "%1$s试图接受热风的洗礼",
"death.attack.create.fan_fire.player": "UNLOCALIZED: %1$s was thrown into a smoker by %2$s",
"death.attack.create.fan_fire.player": "%2$s给了%1$s一次热风的洗礼",
"death.attack.create.fan_lava": "%1$s在接受热风的洗礼中浴火焚身",
"death.attack.create.fan_lava.player": "UNLOCALIZED: %1$s was thrown into a smelter by %2$s",
"death.attack.create.fan_lava.player": "%1$s被%2$s火化了",
"death.attack.create.mechanical_drill": "%1$s被钻头钻的坏掉了",
"death.attack.create.mechanical_drill.player": "UNLOCALIZED: %1$s was thrown in front of a Drill by %2$s",
"death.attack.create.mechanical_drill.player": "%1$s因为%2$s和钻头来了一次亲密接触",
"death.attack.create.mechanical_saw": "%1$s被圆锯切成了两截",
"death.attack.create.mechanical_saw.player": "UNLOCALIZED: %1$s was thrown into a Saw by %2$s",
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
"death.attack.create.mechanical_saw.player": "%1$s被%2$s按在圆锯上切碎了",
"death.attack.create.potato_cannon": "%1$s被%2$s的土豆糊了一脸",
"death.attack.create.potato_cannon.item": "%1$s被%2$s用%3$s射死了",
"death.attack.create.cuckoo_clock_explosion": "%1$s被布谷鸟钟炸得粉身碎骨",
"death.attack.create.cuckoo_clock_explosion.player": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock",
"death.attack.create.cuckoo_clock_explosion.player": "%1$s被布谷鸟钟炸得粉身碎骨",
"create.block.deployer.damage_source_name": "二五仔机械手",
"create.block.cart_assembler.invalid": "请将矿车装配器放置在铁轨上",
"create.menu.return": "UNLOCALIZED: Return to Menu",
"create.menu.configure": "UNLOCALIZED: Configure...",
"create.menu.ponder_index": "UNLOCALIZED: Ponder Index",
"create.menu.only_ingame": "UNLOCALIZED: Available in the Pause Menu",
"create.menu.project_page": "UNLOCALIZED: Project Page",
"create.menu.report_bugs": "UNLOCALIZED: Report Issues",
"create.menu.support": "UNLOCALIZED: Support Us",
"create.menu.return": "返回上一级菜单",
"create.menu.configure": "配置...",
"create.menu.ponder_index": "思索内容清单",
"create.menu.only_ingame": "仅在游戏内暂停菜单中可用",
"create.menu.project_page": "在CurseForge上查看",
"create.menu.report_bugs": "报告Create的漏洞",
"create.menu.support": "支持我们",
"create.recipe.crushing": "粉碎",
"create.recipe.milling": "研磨",
@ -729,7 +728,7 @@
"create.recipe.fan_blasting.fan": "在熔岩后放置鼓风机",
"create.recipe.pressing": "金属压片",
"create.recipe.mixing": "混合搅拌",
"create.recipe.deploying": "UNLOCALIZED: Deploying",
"create.recipe.deploying": "自动使用",
"create.recipe.automatic_shapeless": "自动搅拌",
"create.recipe.automatic_brewing": "自动酿造",
"create.recipe.packing": "压块塑形",
@ -743,16 +742,16 @@
"create.recipe.mystery_conversion": "神秘转化",
"create.recipe.spout_filling": "注液",
"create.recipe.draining": "分液",
"create.recipe.sequenced_assembly": "UNLOCALIZED: Sequenced Assembly",
"create.recipe.assembly.next": "UNLOCALIZED: Next: %1$s",
"create.recipe.assembly.step": "UNLOCALIZED: Step %1$s:",
"create.recipe.assembly.progress": "UNLOCALIZED: Progress: %1$s/%2$s",
"create.recipe.assembly.pressing": "UNLOCALIZED: Process in Press",
"create.recipe.assembly.spout_filling_fluid": "UNLOCALIZED: Spout %1$s",
"create.recipe.assembly.deploying_item": "UNLOCALIZED: Deploy %1$s",
"create.recipe.assembly.cutting": "UNLOCALIZED: Cut with Saw",
"create.recipe.assembly.repeat": "UNLOCALIZED: Repeat Sequence %1$s Times",
"create.recipe.assembly.junk": "UNLOCALIZED: Random salvage",
"create.recipe.sequenced_assembly": "流水线装配",
"create.recipe.assembly.next": "下一步:%1$s",
"create.recipe.assembly.step": "第%1$s步",
"create.recipe.assembly.progress": "组装进度:%1$s/%2$s",
"create.recipe.assembly.pressing": "用辊压机辊压",
"create.recipe.assembly.spout_filling_fluid": "注入%1$s",
"create.recipe.assembly.deploying_item": "安装%1$s",
"create.recipe.assembly.cutting": "用动力锯切割",
"create.recipe.assembly.repeat": "该序列需要重复%1$s次",
"create.recipe.assembly.junk": "随机废料",
"create.recipe.processing.chance": "%1$s%%概率",
"create.recipe.heat_requirement.none": "无需加热",
"create.recipe.heat_requirement.heated": "加热",
@ -806,15 +805,15 @@
"create.orientation.alongX": "以x轴对齐",
"create.gui.terrainzapper.title": "手持式环境塑形器",
"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": "对角线延伸",
"create.gui.terrainzapper.searchFuzzy": "模糊模式(忽略材料分界)",
"create.gui.terrainzapper.patternSection": "样式",
"create.gui.terrainzapper.pattern.solid": "填满",
"create.gui.terrainzapper.pattern.checkered": "棋盘格",
"create.gui.terrainzapper.pattern.inversecheckered": "反转棋盘格",
"create.gui.terrainzapper.pattern.chance25": "随机填充25%",
"create.gui.terrainzapper.pattern.chance50": "随机填充50%",
"create.gui.terrainzapper.pattern.chance75": "随机填充75%",
"create.gui.terrainzapper.placement": "放置模式",
"create.gui.terrainzapper.placement.merged": "结合",
"create.gui.terrainzapper.placement.attached": "依附",
@ -823,8 +822,8 @@
"create.gui.terrainzapper.brush.cuboid": "矩形体",
"create.gui.terrainzapper.brush.sphere": "球体",
"create.gui.terrainzapper.brush.cylinder": "圆柱体",
"create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface",
"create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster",
"create.gui.terrainzapper.brush.surface": "连接的面",
"create.gui.terrainzapper.brush.cluster": "连接的立体区域",
"create.gui.terrainzapper.tool": "填充类型",
"create.gui.terrainzapper.tool.fill": "填充",
"create.gui.terrainzapper.tool.place": "复写",
@ -834,8 +833,8 @@
"create.gui.terrainzapper.tool.flatten": "平整",
"create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右击以设置塑形类型",
"create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s",
"create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material",
"create.terrainzapper.usingBlock": "填充材料:%1$s",
"create.terrainzapper.leftClickToSet": "鼠标左击一个方块以设置填充材料",
"create.minecart_coupling.two_couplings_max": "矿车无法被连接两个以上的矿车连轴器",
"create.minecart_coupling.unloaded": "有一部分火车存在于未加载区块中",
@ -1066,11 +1065,11 @@
"create.item_attributes.in_item_group.inverted": "不属于%1$s",
"create.item_attributes.added_by": "由%1$s添加",
"create.item_attributes.added_by.inverted": "不是由%1$s添加",
"create.item_attributes.shulker_level": "UNLOCALIZED: is shulker %1$s",
"create.item_attributes.shulker_level.inverted": "UNLOCALIZED: is shulker not %1$s",
"create.item_attributes.shulker_level.full": "UNLOCALIZED: full",
"create.item_attributes.shulker_level.empty": "UNLOCALIZED: empty",
"create.item_attributes.shulker_level.partial": "UNLOCALIZED: partially filled",
"create.item_attributes.shulker_level": "潜影盒是%1$s的",
"create.item_attributes.shulker_level.inverted": "潜影盒不是%1$s的",
"create.item_attributes.shulker_level.full": "",
"create.item_attributes.shulker_level.empty": "",
"create.item_attributes.shulker_level.partial": "半满",
"create.item_attributes.has_enchant": "有附魔效果%1$s",
"create.item_attributes.has_enchant.inverted": "没有附魔效果%1$s",
"create.item_attributes.color": "染色为%1$s",
@ -1166,27 +1165,27 @@
"create.tooltip.chute.fans_pull_up": "鼓风机从上方进行吸引",
"create.tooltip.chute.fans_pull_down": "鼓风机从下方进行吸引",
"create.tooltip.chute.contains": "内含物品:%1$s x%2$s",
"create.tooltip.brass_tunnel.contains": "UNLOCALIZED: Currently distributing:",
"create.tooltip.brass_tunnel.contains_entry": "UNLOCALIZED: > %1$s x%2$s",
"create.tooltip.brass_tunnel.retrieve": "UNLOCALIZED: Right-Click to retrieve",
"create.tooltip.brass_tunnel.contains": "等待分配的物品:",
"create.tooltip.brass_tunnel.contains_entry": "> %2$s个%1$s",
"create.tooltip.brass_tunnel.retrieve": "鼠标右击取出",
"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.linked_controller.bind_mode": "绑定模式激活",
"create.linked_controller.press_keybind": "按%1$s%2$s%3$s%4$s%5$s或%6$s选择要将该频率绑定到哪个按键。",
"create.linked_controller.key_bound": "该频率已绑定到%1$s",
"create.linked_controller.frequency_slot_1": "按键:%1$s频道 #1",
"create.linked_controller.frequency_slot_2": "按键:%1$s频道 #2",
"create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot",
"create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable",
"create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot",
"create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe",
"create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned",
"create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot",
"create.crafting_blueprint.optional": "UNLOCALIZED: Optional",
"create.crafting_blueprint.crafting_slot": "合成材料格",
"create.crafting_blueprint.filter_items_viable": "可以使用过滤器",
"create.crafting_blueprint.display_slot": "展示的图标",
"create.crafting_blueprint.inferred": "已根据合成配方自动设定",
"create.crafting_blueprint.manually_assigned": "手动设定",
"create.crafting_blueprint.secondary_display_slot": "展示的图标角标",
"create.crafting_blueprint.optional": "可选",
"create.potato_cannon.ammo.attack_damage": "UNLOCALIZED: %1$s Attack Damage",
"create.potato_cannon.ammo.reload_ticks": "UNLOCALIZED: %1$s Reload Ticks",
"create.potato_cannon.ammo.knockback": "UNLOCALIZED: %1$s Knockback",
"create.potato_cannon.ammo.attack_damage": "%1$s 攻击伤害",
"create.potato_cannon.ammo.reload_ticks": "%1$s 装弹时间Ticks",
"create.potato_cannon.ammo.knockback": "%1$s 击退",
"create.hint.hose_pulley.title": "无限供应",
"create.hint.hose_pulley": "目标液体对象被视为无限量的。",
@ -1215,46 +1214,46 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "这一矿车装置似乎太大了,无法变为拾捡状态",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"create.contraption.minecart_contraption_illegal_pickup": "神秘的力量阻止你拾取这个矿车装置。",
"_": "->------------------------] Subtitles [------------------------<-",
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
"create.subtitle.peculiar_bell_use": "UNLOCALIZED: Peculiar Bell tolls",
"create.subtitle.mixing": "UNLOCALIZED: Mixing noises",
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
"create.subtitle.crushing_1": "UNLOCALIZED: Crushing noises",
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
"create.subtitle.contraption_disassemble": "结构:停止移动",
"create.subtitle.peculiar_bell_use": "奇异钟:鸣响",
"create.subtitle.mixing": "搅拌器:搅拌声",
"create.subtitle.mechanical_press_activation_belt": "辊压机:撞击传送带",
"create.subtitle.fwoomp": "土豆加农炮:发射",
"create.subtitle.worldshaper_place": "环境塑型器:放置方块",
"create.subtitle.crushing_1": "磨碎声",
"create.subtitle.depot_slide": "物品:滑入",
"create.subtitle.saw_activate_stone": "动力锯:切割",
"create.subtitle.blaze_munch": "烈焰人:咀嚼",
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel flaps",
"create.subtitle.funnel_flap": "漏斗:垂帘碰撞",
"create.subtitle.schematicannon_finish": "蓝图加农炮:叮",
"create.subtitle.haunted_bell_use": "UNLOCALIZED: Haunted Bell tolls",
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
"create.subtitle.haunted_bell_use": "怪异钟:鸣响",
"create.subtitle.scroll_value": "拨码输入:咔哒",
"create.subtitle.crafter_craft": "动力合成器:合成中",
"create.subtitle.controller_put": "遥控器:放进讲台",
"create.subtitle.cranking": "手摇曲柄:转动",
"create.subtitle.wrench_remove": "部件:被破坏",
"create.subtitle.cogs": "齿轮:嘎吱作响",
"create.subtitle.slime_added": "粘液:挤碎声",
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
"create.subtitle.haunted_bell_convert": "UNLOCALIZED: Haunted Bell awakens",
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
"create.subtitle.controller_click": "UNLOCALIZED: Controller clicks",
"create.subtitle.wrench_rotate": "扳手:拧动",
"create.subtitle.potato_hit": "土豆:击中",
"create.subtitle.saw_activate_wood": "动力锯:切割",
"create.subtitle.haunted_bell_convert": "奇异钟:转化",
"create.subtitle.deployer_polish": "机械手:打磨物品",
"create.subtitle.deny": "提示声:出错",
"create.subtitle.controller_click": "遥控器:按下按钮",
"create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射",
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
"create.subtitle.copper_armor_equip": "潜水装备:铿锵",
"create.subtitle.controller_take": "讲台:取走物品",
"create.subtitle.mechanical_press_activation": "辊压机:工作中",
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
"create.subtitle.depot_plop": "UNLOCALIZED: Item lands",
"create.subtitle.confirm": "UNLOCALIZED: Affirmative ding",
"create.subtitle.contraption_assemble": "结构:开始移动",
"create.subtitle.crafter_click": "动力合成器:咔哒声",
"create.subtitle.depot_plop": "物品:着地",
"create.subtitle.confirm": "提示声:接受",
"_": "->------------------------] Item Descriptions [------------------------<-",
@ -1311,15 +1310,15 @@
"item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_。",
"item.create.extendo_grip.tooltip.condition1": "放置于副手栏时",
"item.create.extendo_grip.tooltip.behaviour1": "增加_主手_所使用物品的_接触距离_。",
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
"item.create.extendo_grip.tooltip.condition2": "当装备铜制背罐时",
"item.create.extendo_grip.tooltip.behaviour2": "使用罐中_气压_来_抵消_伸缩机械手的_耐久_损耗。",
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
"item.create.potato_cannon.tooltip": "土豆加农炮",
"item.create.potato_cannon.tooltip.summary": "把你亲手栽培的蔬菜砸向你的敌人。可以使用_铜制背罐_供能。",
"item.create.potato_cannon.tooltip.condition1": "当右击时",
"item.create.potato_cannon.tooltip.behaviour1": "_发射_你_物品栏_中任一可做弹药的物品。",
"item.create.potato_cannon.tooltip.condition2": "当装备铜制背罐时",
"item.create.potato_cannon.tooltip.behaviour2": "使用罐中_气压_来_抵消_土豆加农炮的_耐久_损耗。",
"item.create.filter.tooltip": "过滤器",
"item.create.filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_使得通过的物品流与_一组_物品或者数个_相嵌套的过滤器_相匹配。",
@ -1360,8 +1359,8 @@
"block.create.schematicannon.tooltip": "蓝图加农炮",
"block.create.schematicannon.tooltip.summary": "发射方块重新构建已在世界中部署的_蓝图_会使用相邻箱子中的物品进行填充_火药_作为燃料。",
"block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
"block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_",
"block.create.schematicannon.tooltip.condition1": "当右击时",
"block.create.schematicannon.tooltip.behaviour1": "打开_配置面板_。",
"block.create.schematic_table.tooltip": "蓝图桌",
"block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_",
@ -1405,18 +1404,18 @@
"block.create.adjustable_crate.tooltip": "可调节板条箱",
"block.create.adjustable_crate.tooltip.summary": "该箱子支持玩家对其容量进行调整最大可以容纳_16组_物品。支持_红石比较器_。",
"block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
"block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.",
"block.create.adjustable_crate.tooltip.condition1": "当右击时",
"block.create.adjustable_crate.tooltip.behaviour1": "打开_配置面板_。",
"block.create.creative_crate.tooltip": "创造板条箱",
"block.create.creative_crate.tooltip.summary": "这种_储存容器_可以无限地复制任何物品。它还可以移除附近的_蓝图加农炮_的材料需求。",
"block.create.creative_crate.tooltip.condition1": "当标记了物品时",
"block.create.creative_crate.tooltip.behaviour1": "任何从容器中_提取_的物品都是_无限量的_而任何_放置_到容器中的物品都会被_送入虚空_",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "控制铁轨",
"block.create.controller_rail.tooltip.summary": "一种_汇流的受红石信号影响的_铁轨可以_较好地控制_经过矿车的_移动速度_。",
@ -1433,61 +1432,61 @@
"item.create.refined_radiance.tooltip": "光辉石",
"item.create.refined_radiance.tooltip.summary": "一种用_光辉_锻造的化合物材料。",
"item.create.refined_radiance.tooltip.condition1": "UNLOCALIZED: Work In Progress",
"item.create.refined_radiance.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.",
"item.create.refined_radiance.tooltip.condition1": "尚未完工",
"item.create.refined_radiance.tooltip.behaviour1": "该材料在未来可能会有更多的用途。",
"item.create.shadow_steel.tooltip": "暗影钢",
"item.create.shadow_steel.tooltip.summary": "一种用_虚空_锻造的化合物材料。",
"item.create.shadow_steel.tooltip.condition1": "UNLOCALIZED: Work In Progress",
"item.create.shadow_steel.tooltip.behaviour1": "UNLOCALIZED: Usages for this material will be available in a future release.",
"item.create.shadow_steel.tooltip.condition1": "尚未完工",
"item.create.shadow_steel.tooltip.behaviour1": "该材料在未来可能会有更多的用途。",
"item.create.linked_controller.tooltip": "UNLOCALIZED: LINKED CONTROLLER",
"item.create.linked_controller.tooltip.summary": "UNLOCALIZED: Grants _handheld_ _control_ over _Redstone Link_ frequencies assigned to its _six_ _buttons_.",
"item.create.linked_controller.tooltip.condition1": "UNLOCALIZED: R-Click",
"item.create.linked_controller.tooltip.behaviour1": "UNLOCALIZED: _Toggles_ the controller. _Movement_ _controls_ are taken over while its active.",
"item.create.linked_controller.tooltip.condition2": "UNLOCALIZED: R-Click while Sneaking",
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
"item.create.linked_controller.tooltip": "无线红石遥控器",
"item.create.linked_controller.tooltip.summary": "提供_六个_可以绑定_无线红石_频道的按钮用于_遥控_附近的_无线红石信号终端_。",
"item.create.linked_controller.tooltip.condition1": "右击时",
"item.create.linked_controller.tooltip.behaviour1": "_拿起_或_放下_遥控器。拿起遥控器时_移动_按键将被用来_操作遥控器_而不是移动玩家。",
"item.create.linked_controller.tooltip.condition2": "潜行右击时",
"item.create.linked_controller.tooltip.behaviour2": "打开手动_配置界面_。",
"item.create.linked_controller.tooltip.condition3": "右击无线红石信号终端时",
"item.create.linked_controller.tooltip.behaviour3": "启用_配对模式_按_六个按键_中的一个来配对_无线红石信号终端_的_频率_。",
"item.create.linked_controller.tooltip.condition4": "右击讲台时",
"item.create.linked_controller.tooltip.behaviour4": "将遥控器放在讲台上以便使用。(潜行右击来取回遥控器。)",
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
"item.create.diving_helmet.tooltip.condition1": "UNLOCALIZED: When Worn",
"item.create.diving_helmet.tooltip.behaviour1": "UNLOCALIZED: Provides the _Water Breathing_ effect, slowly draining _Air Pressure_ from the Backtank.",
"item.create.diving_helmet.tooltip": "潜水头盔",
"item.create.diving_helmet.tooltip.summary": "与_铜制背罐_配合使用为穿戴者提供在_水下_行动一段时间所需的_空气_。",
"item.create.diving_helmet.tooltip.condition1": "戴在头上时",
"item.create.diving_helmet.tooltip.behaviour1": "提供_水下呼吸_效果。缓慢消耗背罐中的_压缩空气_。",
"item.create.copper_backtank.tooltip": "UNLOCALIZED: COPPER BACKTANK",
"item.create.copper_backtank.tooltip.summary": "UNLOCALIZED: A _Wearable_ _Tank_ for carrying Pressurized Air.",
"item.create.copper_backtank.tooltip.condition1": "UNLOCALIZED: When Worn",
"item.create.copper_backtank.tooltip.behaviour1": "UNLOCALIZED: Provides _Pressurized_ _Air_ to Equipment that requires it.",
"item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics",
"item.create.copper_backtank.tooltip.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"item.create.copper_backtank.tooltip": "铜制背罐",
"item.create.copper_backtank.tooltip.summary": "一个可以_背在背上_的_铜罐_用于携带一定量的压缩空气。",
"item.create.copper_backtank.tooltip.condition1": "背在背上时",
"item.create.copper_backtank.tooltip.behaviour1": "为其他需要_压缩空气_的装备提供所需的空气。",
"item.create.copper_backtank.tooltip.condition2": "当放下并接入动力时",
"item.create.copper_backtank.tooltip.behaviour2": "基于转速从周围环境中_收集_并_加压空气_。",
"item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS",
"item.create.diving_boots.tooltip.summary": "UNLOCALIZED: A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.",
"item.create.diving_boots.tooltip.condition1": "UNLOCALIZED: When Worn",
"item.create.diving_boots.tooltip.behaviour1": "UNLOCALIZED: Wielder _sinks_ _faster_ and _cannot_ _swim_. Grants the ability to _walk_ and _jump_ underwater. Wielder also is no longer affected by _Mechanical_ _Belts_.",
"item.create.diving_boots.tooltip": "潜水靴",
"item.create.diving_boots.tooltip.summary": "一双_沉重的靴子_让穿戴者可以更方便的探索海底。",
"item.create.diving_boots.tooltip.condition1": "穿在脚上时",
"item.create.diving_boots.tooltip.behaviour1": "穿戴者_下沉更快_并_无法游泳_。穿戴者可以在水下_行走_和_跳跃_。穿戴者不会被_传送带_移走。",
"item.create.crafting_blueprint.tooltip": "UNLOCALIZED: CRAFTING BLUEPRINT",
"item.create.crafting_blueprint.tooltip.summary": "UNLOCALIZED: _Placed_ on a wall, it can be used to _specify_ _ingredient_ _arrangements_ for easier manual crafting. Each slot represents a Recipe.",
"item.create.crafting_blueprint.condition1": "UNLOCALIZED: R-Click empty Slot",
"item.create.crafting_blueprint.behaviour1": "UNLOCALIZED: Opens a _Crafting_ _menu_ allowing you to _configure_ a _recipe_ and items to display.",
"item.create.crafting_blueprint.condition2": "UNLOCALIZED: R-Click configured Slot",
"item.create.crafting_blueprint.behaviour2": "UNLOCALIZED: _Applies_ the _configured_ _recipe_ with matching Ingredients found in your _Inventory_. _Sneak_ to craft up to a _Stack_ of items.",
"item.create.crafting_blueprint.tooltip": "合成蓝图",
"item.create.crafting_blueprint.tooltip.summary": "_放在_墙上。设置特定的_原料排布_以便更快地手搓物品。每个格子都可以设定一个配方。",
"item.create.crafting_blueprint.condition1": "当右击空的格子时",
"item.create.crafting_blueprint.behaviour1": "打开一个_配方设置界面_用于_设置_一个_合成配方_以及设置显示的图标。",
"item.create.crafting_blueprint.condition2": "当右击设置好的格子时",
"item.create.crafting_blueprint.behaviour2": "使用_物品栏_中的物品制作_设置的配方_。_潜行_以一次合成_一组_。",
"item.create.minecart_coupling.tooltip": "矿车连轴器",
"item.create.minecart_coupling.tooltip.summary": "将多个_矿车_或运输结构链接在一起构成雄伟的火车。",
"item.create.minecart_coupling.tooltip.condition1": "作用与矿车时",
"item.create.minecart_coupling.tooltip.behaviour1": "将两个矿车耦合在一起在移动时将它们保持_恒定的距离_。",
"block.create.peculiar_bell.tooltip": "UNLOCALIZED: PECULIAR BELL",
"block.create.peculiar_bell.tooltip.summary": "UNLOCALIZED: A decorative _Brass Bell_. Placing it right above open _Soul Fire_ may cause side-effects...",
"block.create.peculiar_bell.tooltip": "奇异钟",
"block.create.peculiar_bell.tooltip.summary": "装饰用的_黄铜质钟_。放在_灵魂火_的正上方可能会产生意料之外的后果……",
"block.create.haunted_bell.tooltip": "UNLOCALIZED: HAUNTED BELL",
"block.create.haunted_bell.tooltip.summary": "UNLOCALIZED: A _Cursed Bell_ haunted by lost souls of the Nether.",
"block.create.haunted_bell.tooltip.condition1": "UNLOCALIZED: When Held or Rang",
"block.create.haunted_bell.tooltip.behaviour1": "UNLOCALIZED: Highlights nearby _Lightless Spots_ on which _Hostile Mobs_ can spawn.",
"block.create.haunted_bell.tooltip": "怪异钟",
"block.create.haunted_bell.tooltip.summary": "_被诅咒_的钟其中充满了来自下界的迷失的灵魂。",
"block.create.haunted_bell.tooltip.condition1": "当手持或鸣响时",
"block.create.haunted_bell.tooltip.behaviour1": "标识出附近可能生成_敌对生物_的_黑暗_的地方。",
"_": "->------------------------] Ponder Content [------------------------<-",
@ -1504,11 +1503,11 @@
"create.ponder.replay": "重放",
"create.ponder.think_back": "回想",
"create.ponder.slow_text": "舒适阅读",
"create.ponder.exit": "UNLOCALIZED: Exit",
"create.ponder.welcome": "UNLOCALIZED: Welcome to Ponder",
"create.ponder.categories": "UNLOCALIZED: Available Categories in Create",
"create.ponder.index_description": "UNLOCALIZED: Click one of the icons to learn about its associated Items and Blocks",
"create.ponder.index_title": "UNLOCALIZED: Ponder Index",
"create.ponder.exit": "退出",
"create.ponder.welcome": "欢迎来到思索项目列表",
"create.ponder.categories": "机械动力中包含的条目",
"create.ponder.index_description": "点击一个图标来查看相关的物品和方块。",
"create.ponder.index_title": "思索项目列表",
"create.ponder.shared.rpm16": "16 RPM",
"create.ponder.shared.behaviour_modify_wrench": "可以用扳手调整它的行为。",
"create.ponder.shared.storage_on_contraption": "与装置相接的存储空间,会自动将装置遇到的掉落物拾取到空间内。",
@ -1655,8 +1654,8 @@
"create.ponder.cart_assembler_modes.header": "矿车装置的方向设定",
"create.ponder.cart_assembler_modes.text_1": "矿车装置会随着矿车的运动而发生转向",
"create.ponder.cart_assembler_modes.text_2": "如果装配结构的方向锁定了,那么结构的方向将不再改变",
"create.ponder.cart_assembler_modes.text_3": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change",
"create.ponder.cart_assembler_modes.text_2": "矿车装置上的箭头表明了哪一侧是“前面”",
"create.ponder.cart_assembler_modes.text_3": "如果装配结构的方向锁定了,那么结构的方向将不再改变",
"create.ponder.cart_assembler_rails.header": "另外几种矿车以及铁轨",
"create.ponder.cart_assembler_rails.text_1": "放置在普通轨道上的矿车装配站并不会影响路过矿车装置的运动",
@ -1710,11 +1709,11 @@
"create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮",
"create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反",
"create.ponder.creative_fluid_tank.header": "UNLOCALIZED: Creative Fluid Tanks",
"create.ponder.creative_fluid_tank.text_1": "UNLOCALIZED: Creative Fluid Tanks can be used to provide a bottomless supply of fluid",
"create.ponder.creative_fluid_tank.text_2": "UNLOCALIZED: Right-Click with a fluid containing item to configure it",
"create.ponder.creative_fluid_tank.text_3": "UNLOCALIZED: Pipe Networks can now endlessly draw the assigned fluid from the tank",
"create.ponder.creative_fluid_tank.text_4": "UNLOCALIZED: Any Fluids pushed back into a Creative Fluid Tank will be voided",
"create.ponder.creative_fluid_tank.header": "创造流体储罐",
"create.ponder.creative_fluid_tank.text_1": "创造流体储罐可以提供无限数量的流体",
"create.ponder.creative_fluid_tank.text_2": "使用一个含有流体的容器右击它来设置它提供的流体",
"create.ponder.creative_fluid_tank.text_3": "流体管道可以从中无限提取设置的流体",
"create.ponder.creative_fluid_tank.text_4": "任何被输入创造流体储罐的液体都将被销毁",
"create.ponder.creative_motor.header": "使用创造马达发生旋转",
"create.ponder.creative_motor.text_1": "创造马达不仅能够手动调配输出旋转力,而且体积相当小巧",
@ -1752,11 +1751,11 @@
"create.ponder.deployer_modes.text_1": "在默认情况下,机械手模仿玩家的右击交互",
"create.ponder.deployer_modes.text_2": "使用扳手可以将模式调整为模仿玩家的左击交互",
"create.ponder.deployer_processing.header": "UNLOCALIZED: Processing Items using Deployers",
"create.ponder.deployer_processing.text_1": "UNLOCALIZED: With a fitting held item, Deployers can process items provided beneath them",
"create.ponder.deployer_processing.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Deployer",
"create.ponder.deployer_processing.text_3": "UNLOCALIZED: When items are provided on a belt...",
"create.ponder.deployer_processing.text_4": "UNLOCALIZED: The Deployer will hold and process them automatically",
"create.ponder.deployer_processing.header": "使用机械手处理物品",
"create.ponder.deployer_processing.text_1": "当机械手持有合适的物品时,它可以自动处理下方的物品",
"create.ponder.deployer_processing.text_2": "物品可以被丢在机械手下方,或放在置物台上",
"create.ponder.deployer_processing.text_3": "当传送带上的物品经过机械手下方时...",
"create.ponder.deployer_processing.text_4": "...机械手会使物品停下,然后处理这个物品",
"create.ponder.deployer_redstone.header": "使用红石控制机械手",
"create.ponder.deployer_redstone.text_1": "当被红石充能时,机械手会停止工作",
@ -1774,13 +1773,13 @@
"create.ponder.empty_blaze_burner.text_2": "或者,也可以通过右击烈焰人刷怪笼来填充激活烈焰人燃烧室",
"create.ponder.empty_blaze_burner.text_3": "这样,你便有了一个可供部分机器加工的热源",
"create.ponder.empty_blaze_burner.text_4": "如果是为了美观,空的烈焰人燃烧室也可以被打火石点燃",
"create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: The flame can be transformed using a soul-infused item",
"create.ponder.empty_blaze_burner.text_5": "使用包含灵魂的物品可以将火焰变为灵魂火",
"create.ponder.empty_blaze_burner.text_6": "但是,这样的热源不足以给机器提加工供足够的热量",
"create.ponder.encased_fluid_pipe.header": "UNLOCALIZED: Encasing Fluid Pipes",
"create.ponder.encased_fluid_pipe.text_1": "UNLOCALIZED: Copper Casing can be used to decorate Fluid Pipes",
"create.ponder.encased_fluid_pipe.text_2": "UNLOCALIZED: Aside from being conceiled, Encased Pipes are locked into their connectivity state",
"create.ponder.encased_fluid_pipe.text_3": "UNLOCALIZED: It will no longer react to any neighbouring blocks being added or removed",
"create.ponder.encased_fluid_pipe.header": "遮掩流体管道",
"create.ponder.encased_fluid_pipe.text_1": "铜机壳可以用于装饰流体管道",
"create.ponder.encased_fluid_pipe.text_2": "除了遮掩流体管道之外,装有铜机壳的流体管道将不会改变其连接状态",
"create.ponder.encased_fluid_pipe.text_3": "它将不会对旁边新增加或移除的管道做出反应",
"create.ponder.fan_direction.header": "鼓风机的气流",
"create.ponder.fan_direction.text_1": "鼓风机使用旋转力来制造气流",
@ -1800,34 +1799,34 @@
"create.ponder.fan_source.text_1": "如鼓风机的扇叶向下朝着热源放置,鼓风机可以借此产生旋转力",
"create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: Fluid Pipes can connect two or more fluid sources and targets",
"create.ponder.fluid_pipe_flow.text_2": "UNLOCALIZED: Using a wrench, a straight pipe segment can be given a window",
"create.ponder.fluid_pipe_flow.text_3": "UNLOCALIZED: Windowed pipes will not connect to any other adjacent pipe segments",
"create.ponder.fluid_pipe_flow.text_4": "UNLOCALIZED: Powered by Mechanical Pumps, the Pipes can transport Fluids",
"create.ponder.fluid_pipe_flow.text_5": "UNLOCALIZED: No fluid is being extracted at first",
"create.ponder.fluid_pipe_flow.text_6": "UNLOCALIZED: Once the flow connects them, the endpoints gradually transfer their contents",
"create.ponder.fluid_pipe_flow.text_7": "UNLOCALIZED: Thus, the Pipe blocks themselves never 'physically' contain any fluid",
"create.ponder.fluid_pipe_flow.header": "使用管道运输流体",
"create.ponder.fluid_pipe_flow.text_1": "流体管道可以用于连接两个或多个流体容器",
"create.ponder.fluid_pipe_flow.text_2": "使用扳手为直的管道增加观察窗",
"create.ponder.fluid_pipe_flow.text_3": "带有观察窗的管道不会建立侧向连接",
"create.ponder.fluid_pipe_flow.text_4": "通过使用动力泵,流体管道可以传输流体",
"create.ponder.fluid_pipe_flow.text_5": "一开始,流体不会真正被消耗",
"create.ponder.fluid_pipe_flow.text_6": "当管道内的液体流彻底联通之后,流体才会开始逐渐从一个容器中转移到另一个",
"create.ponder.fluid_pipe_flow.text_7": "这意味着流体管道本身并不真正存储任何流体",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",
"create.ponder.fluid_pipe_interaction.text_1": "UNLOCALIZED: Endpoints of a pipe network can interact with a variety of blocks",
"create.ponder.fluid_pipe_interaction.text_2": "UNLOCALIZED: Any block with fluid storage capabilities can be filled or drained",
"create.ponder.fluid_pipe_interaction.text_3": "UNLOCALIZED: Source blocks right in front of an open end can be picked up...",
"create.ponder.fluid_pipe_interaction.text_4": "UNLOCALIZED: ...while spilling into empty spaces can create fluid sources",
"create.ponder.fluid_pipe_interaction.text_5": "UNLOCALIZED: Pipes can also extract fluids from a handful of other blocks directly",
"create.ponder.fluid_pipe_interaction.header": "抽取和填充流体容器",
"create.ponder.fluid_pipe_interaction.text_1": "流体管道的末端可以与许多种容器连接",
"create.ponder.fluid_pipe_interaction.text_2": "任何可以容纳流体的容器都可以被填充或从中抽取",
"create.ponder.fluid_pipe_interaction.text_3": "开放的管道口可以吸走流体源块...",
"create.ponder.fluid_pipe_interaction.text_4": "...或者将流体源排放出来",
"create.ponder.fluid_pipe_interaction.text_5": "管道也可以从许多其他方块中直接抽取流体",
"create.ponder.fluid_tank_sizes.header": "UNLOCALIZED: Dimensions of a Fluid tank",
"create.ponder.fluid_tank_sizes.text_1": "UNLOCALIZED: Fluid Tanks can be combined to increase the total capacity",
"create.ponder.fluid_tank_sizes.text_2": "UNLOCALIZED: Their base square can be up to 3 blocks wide...",
"create.ponder.fluid_tank_sizes.text_3": "UNLOCALIZED: ...and grow in height by more than 30 additional layers",
"create.ponder.fluid_tank_sizes.text_4": "UNLOCALIZED: Using a Wrench, a tanks' window can be toggled",
"create.ponder.fluid_tank_sizes.header": "流体储罐的大小",
"create.ponder.fluid_tank_sizes.text_1": "多格流体储罐可以被放置在一起来提供更大的容量",
"create.ponder.fluid_tank_sizes.text_2": "流体储罐最大可以有3x3的横截面...",
"create.ponder.fluid_tank_sizes.text_3": "...并且可以有超过30格高",
"create.ponder.fluid_tank_sizes.text_4": "使用扳手可以打开或关闭观察窗",
"create.ponder.fluid_tank_storage.header": "UNLOCALIZED: Storing Fluids in Fluid Tanks",
"create.ponder.fluid_tank_storage.text_1": "UNLOCALIZED: Fluid Tanks can be used to store large amounts of fluid",
"create.ponder.fluid_tank_storage.text_2": "UNLOCALIZED: Pipe networks can push and pull fluids from any side",
"create.ponder.fluid_tank_storage.text_3": "UNLOCALIZED: The contained fluid can be measured by a Comparator",
"create.ponder.fluid_tank_storage.text_4": "UNLOCALIZED: However, in Survival Mode Fluids cannot be added or taken manually",
"create.ponder.fluid_tank_storage.text_5": "UNLOCALIZED: You can use Basins, Item Drains and Spouts to drain or fill fluid containing items",
"create.ponder.fluid_tank_storage.header": "使用流体储罐存储流体",
"create.ponder.fluid_tank_storage.text_1": "流体储罐可以存储大量的流体",
"create.ponder.fluid_tank_storage.text_2": "流体管道可以从任何一面将流体输入/输出流体储罐",
"create.ponder.fluid_tank_storage.text_3": "使用比较器可以检测储罐中的流体储量",
"create.ponder.fluid_tank_storage.text_4": "在生存模式中,无法直接用容器将流体装入或取出储罐",
"create.ponder.fluid_tank_storage.text_5": "要装满/倒空流体容器,可以使用工作盆,分液池或注液器。",
"create.ponder.flywheel.header": "使用飞轮来产生旋转力",
"create.ponder.flywheel.text_1": "飞轮和熔炉引擎必须配套使用,方可产生旋转力",
@ -1902,33 +1901,33 @@
"create.ponder.hand_crank.text_3": "它产生的转速相对较高",
"create.ponder.hand_crank.text_4": "潜行长按右键可以顺时针旋转它",
"create.ponder.hose_pulley.header": "UNLOCALIZED: Source Filling and Draining using Hose Pulleys",
"create.ponder.hose_pulley.text_1": "UNLOCALIZED: Hose Pulleys can be used to fill or drain large bodies of Fluid",
"create.ponder.hose_pulley.text_2": "UNLOCALIZED: With the Kinetic Input, the height of the pulleys' hose can be controlled",
"create.ponder.hose_pulley.text_3": "UNLOCALIZED: The Pulley retracts while the input rotation is inverted",
"create.ponder.hose_pulley.text_4": "UNLOCALIZED: On the opposite side, pipes can be connected",
"create.ponder.hose_pulley.text_5": "UNLOCALIZED: Attached pipe networks can either provide fluid to the hose...",
"create.ponder.hose_pulley.text_6": "UNLOCALIZED: ...or pull from it, draining the pool instead",
"create.ponder.hose_pulley.text_7": "UNLOCALIZED: Fill and Drain speed of the pulley depends entirely on the fluid networks' throughput",
"create.ponder.hose_pulley.header": "使用软管滑轮抽取或排放流体",
"create.ponder.hose_pulley.text_1": "软管滑轮可以用于方便的抽取或填满一个较大区域中的流体",
"create.ponder.hose_pulley.text_2": "通过输入动力可以调节软管末端的高度",
"create.ponder.hose_pulley.text_3": "翻转动力输入的方向可以收起软管",
"create.ponder.hose_pulley.text_4": "管道可以连接在另一侧",
"create.ponder.hose_pulley.text_5": "连接的管道可以将流体输入软管滑轮以在下方放置流体源...",
"create.ponder.hose_pulley.text_6": "...或者提供吸力来抽取世界中的流体",
"create.ponder.hose_pulley.text_7": "软管滑轮的抽取/排放速度取决于连接管道中流体的流速",
"create.ponder.hose_pulley_infinite.header": "UNLOCALIZED: Passively Filling and Draining large bodies of Fluid",
"create.ponder.hose_pulley_infinite.text_1": "UNLOCALIZED: When deploying the Hose Pulley into a large enough ocean...",
"create.ponder.hose_pulley_infinite.text_2": "UNLOCALIZED: It will provide/dispose fluids without affecting the source",
"create.ponder.hose_pulley_infinite.text_3": "UNLOCALIZED: Pipe networks can limitlessly take fluids from/to such pulleys",
"create.ponder.hose_pulley_infinite.header": "从大型水体中抽取或向其排放",
"create.ponder.hose_pulley_infinite.text_1": "当软管被放进足够大的水体中时...",
"create.ponder.hose_pulley_infinite.text_2": "...它在抽取或排放液体时将不会影响流体源",
"create.ponder.hose_pulley_infinite.text_3": "可以从这些软管滑轮中无限的抽取或向其排放流体",
"create.ponder.hose_pulley_level.header": "UNLOCALIZED: Fill and Drain level of Hose Pulleys",
"create.ponder.hose_pulley_level.text_1": "UNLOCALIZED: While fully retracted, the Hose Pulley cannot operate",
"create.ponder.hose_pulley_level.text_2": "UNLOCALIZED: Draining runs from top to bottom",
"create.ponder.hose_pulley_level.text_3": "UNLOCALIZED: The surface level will end up just below where the hose ends",
"create.ponder.hose_pulley_level.text_4": "UNLOCALIZED: Filling runs from bottom to top",
"create.ponder.hose_pulley_level.text_5": "UNLOCALIZED: The filled pool will not grow beyond the layer above the hose end",
"create.ponder.hose_pulley_level.header": "软管滑轮的排水/抽水机制",
"create.ponder.hose_pulley_level.text_1": "当软管彻底收回时,软管滑轮无法工作。",
"create.ponder.hose_pulley_level.text_2": "流体会由上至下被抽取",
"create.ponder.hose_pulley_level.text_3": "流体表面最终将会被抽取到刚好低于软管开口",
"create.ponder.hose_pulley_level.text_4": "流体将会由下至上被填充",
"create.ponder.hose_pulley_level.text_5": "流体最多只能被填充至软管开口所在的高度",
"create.ponder.item_drain.header": "UNLOCALIZED: Emptying Fluid Containers using Item Drains",
"create.ponder.item_drain.text_1": "UNLOCALIZED: Item Drains can extract fluids from items",
"create.ponder.item_drain.text_2": "UNLOCALIZED: Right-click it to pour fluids from your held item into it",
"create.ponder.item_drain.text_3": "UNLOCALIZED: When items are inserted from the side...",
"create.ponder.item_drain.text_4": "UNLOCALIZED: ...they roll across, emptying out their contained fluid",
"create.ponder.item_drain.text_5": "UNLOCALIZED: Pipe Networks can now pull the fluid from the drains' internal buffer",
"create.ponder.item_drain.header": "使用分液池提取物品中的流体",
"create.ponder.item_drain.text_1": "分液池可以提取容器中的流体",
"create.ponder.item_drain.text_2": "右键点击可以将手持的容器中的流体倒入分液池",
"create.ponder.item_drain.text_3": "当物品从侧面输入时...",
"create.ponder.item_drain.text_4": "...物品将会经过分液池顶部,并在过程中将其包含的液体排入分液池",
"create.ponder.item_drain.text_5": "流体管到可以从分液池中抽取液体",
"create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力",
"create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接",
@ -2040,32 +2039,32 @@
"create.ponder.mechanical_plough.text_3": "此外,动力犁可以耕地",
"create.ponder.mechanical_plough.text_4": "...它也可以在不伤害实体的情况下推动它们",
"create.ponder.mechanical_press.header": "使用动力辊机处理物品",
"create.ponder.mechanical_press.text_1": "动力辊机可以处理位于其下方的物品",
"create.ponder.mechanical_press.header": "使用动力辊机处理物品",
"create.ponder.mechanical_press.text_1": "动力辊机可以处理位于其下方的物品",
"create.ponder.mechanical_press.text_2": "在其下方丢入物品,或者将物品放在置物台上,都算作有效的物品输入",
"create.ponder.mechanical_press.text_3": "若物品被输入时正位于传送带上...",
"create.ponder.mechanical_press.text_4": "辊机会使物品停下,然后自动处理这一物品",
"create.ponder.mechanical_press.text_3": "当传送带上的物品经过辊压机下方时....",
"create.ponder.mechanical_press.text_4": "辊机会使物品停下,然后自动处理这一物品",
"create.ponder.mechanical_press_compacting.header": "使用动力辊机压缩物品",
"create.ponder.mechanical_press_compacting.header": "使用动力辊机压缩物品",
"create.ponder.mechanical_press_compacting.text_1": "对放置于工作盆内的物品进行辊轧,可以将这些物品压缩在一起",
"create.ponder.mechanical_press_compacting.text_2": "压缩意指任何同种物品填满了 2x2 或者 3x3 网格的配方,以及一些额外的配方",
"create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃烧室提供热量",
"create.ponder.mechanical_press_compacting.text_4": "过滤槽可用于解决两个配方相互冲突的情况",
"create.ponder.mechanical_pump_flow.header": "UNLOCALIZED: Fluid Transportation using Mechanical Pumps",
"create.ponder.mechanical_pump_flow.text_1": "UNLOCALIZED: Mechanical Pumps govern the flow of their attached pipe networks",
"create.ponder.mechanical_pump_flow.text_2": "UNLOCALIZED: When powered, their arrow indicates the direction of flow",
"create.ponder.mechanical_pump_flow.text_3": "UNLOCALIZED: The network behind is now pulling fluids...",
"create.ponder.mechanical_pump_flow.text_4": "UNLOCALIZED: ...while the network in front is transferring it outward",
"create.ponder.mechanical_pump_flow.text_5": "UNLOCALIZED: Reversing the input rotation reverses the direction of flow",
"create.ponder.mechanical_pump_flow.text_6": "UNLOCALIZED: Use a Wrench to reverse the orientation of pumps manually",
"create.ponder.mechanical_pump_flow.header": "使用动力泵传输流体",
"create.ponder.mechanical_pump_flow.text_1": "动力泵可以控制管道中的液体流向",
"create.ponder.mechanical_pump_flow.text_2": "当接入动力时,其上的箭头指示液体流向",
"create.ponder.mechanical_pump_flow.text_3": "后方的管道中将会产生吸力...",
"create.ponder.mechanical_pump_flow.text_4": "...而液体将被输入前方的管道",
"create.ponder.mechanical_pump_flow.text_5": "反转动力方向将会改变液体流向",
"create.ponder.mechanical_pump_flow.text_6": "使用扳手可以手动改变动力泵的朝向",
"create.ponder.mechanical_pump_speed.header": "UNLOCALIZED: Throughput of Mechanical Pumps",
"create.ponder.mechanical_pump_speed.text_1": "UNLOCALIZED: Regardless of speed, Mechanical Pumps affect pipes connected up to 16 blocks away",
"create.ponder.mechanical_pump_speed.text_2": "UNLOCALIZED: Speeding up the input rotation changes the speed of flow propagation...",
"create.ponder.mechanical_pump_speed.text_3": "UNLOCALIZED: ...aswell as how quickly fluids are transferred",
"create.ponder.mechanical_pump_speed.text_4": "UNLOCALIZED: Pumps can combine their throughputs within shared pipe networks",
"create.ponder.mechanical_pump_speed.text_5": "UNLOCALIZED: Alternating their orientation can help align their flow directions",
"create.ponder.mechanical_pump_speed.header": "动力泵的传输机制",
"create.ponder.mechanical_pump_speed.text_1": "动力泵的压力最多沿管线传递16格与输入动力无关",
"create.ponder.mechanical_pump_speed.text_2": "输入动力将会影响压力改变速度...",
"create.ponder.mechanical_pump_speed.text_3": "...以及流体的传输速度",
"create.ponder.mechanical_pump_speed.text_4": "多个并联动力泵的传输量可以叠加",
"create.ponder.mechanical_pump_speed.text_5": "交替摆放动力泵可以方便的控制液体流动",
"create.ponder.mechanical_saw_breaker.header": "使用动力锯伐木",
"create.ponder.mechanical_saw_breaker.text_1": "向其通入旋转力后,动力锯可以直接砍伐掉它面前的树木",
@ -2078,7 +2077,7 @@
"create.ponder.mechanical_saw_processing.header": "使用动力锯处理物品",
"create.ponder.mechanical_saw_processing.text_1": "面向朝上的动力锯可以将物品处理为其变种",
"create.ponder.mechanical_saw_processing.text_2": "处理过后的物品的弹出方向始终与通入锯中的旋转转向相反",
"create.ponder.mechanical_saw_processing.text_3": "锯子可以",
"create.ponder.mechanical_saw_processing.text_3": "锯子可以配合其两侧的传送带输入输出",
"create.ponder.mechanical_saw_processing.text_4": "若输入原料有多种可能产物,你可以用动力锯上的过滤槽指定只产出某种产物",
"create.ponder.mechanical_saw_processing.text_5": "若没有使用过滤槽,动力锯会在各产物中按顺序循环输出",
@ -2091,22 +2090,22 @@
"create.ponder.nixie_tube.header": "使用辉光管",
"create.ponder.nixie_tube.text_1": "通入红石信号后,辉光管会显示出红石信号的强度",
"create.ponder.nixie_tube.text_2": "使用命名牌在铁砧上为其命名,可以自定义它的显示文本",
"create.ponder.nixie_tube.text_3": "UNLOCALIZED: Right-Click with Dye to change their display colour",
"create.ponder.nixie_tube.text_2": "在其上右键使用更改过名称的命名牌,可以自定义它的显示文本",
"create.ponder.nixie_tube.text_3": "使用染料右键以更改辉光管的显示颜色",
"create.ponder.piston_pole.header": "活塞延长杆",
"create.ponder.piston_pole.text_1": "若无相接的延长杆,动力活塞无法移动其他方块",
"create.ponder.piston_pole.text_2": "在其背面安装的延长杆长度,决定了活塞的推动范围",
"create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange",
"create.ponder.portable_fluid_interface.text_1": "UNLOCALIZED: Fluid Tanks on moving contraptions cannot be accessed by any pipes",
"create.ponder.portable_fluid_interface.text_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption",
"create.ponder.portable_fluid_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween",
"create.ponder.portable_fluid_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection",
"create.ponder.portable_fluid_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL Tanks on the contraption",
"create.ponder.portable_fluid_interface.text_6": "UNLOCALIZED: Fluid can now be inserted...",
"create.ponder.portable_fluid_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption",
"create.ponder.portable_fluid_interface.text_8": "UNLOCALIZED: After no contents have been exchanged for a while, the contraption will continue on its way",
"create.ponder.portable_fluid_interface.header": "装置流体交换",
"create.ponder.portable_fluid_interface.text_1": "管道无法与运动装置内的流体储罐直接交互",
"create.ponder.portable_fluid_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的流体存储进行交互",
"create.ponder.portable_fluid_interface.text_3": "放置第二个接口时,记得要与装置接口相隔 1 格或者 2 格的距离",
"create.ponder.portable_fluid_interface.text_4": "当它们彼此经过时,它们会连接在一起",
"create.ponder.portable_fluid_interface.text_5": "连接状态下,固定侧接口便会作为整个装置的流体存储代理",
"create.ponder.portable_fluid_interface.text_6": "流体可被泵入到装置内....",
"create.ponder.portable_fluid_interface.text_7": "...或是从装置中抽取出来",
"create.ponder.portable_fluid_interface.text_8": "如果一小段时间内没有流体交换,接口将会断开连接,然后装置重新开始运动",
"create.ponder.portable_storage_interface.header": "装置存储交换",
"create.ponder.portable_storage_interface.text_1": "玩家无法与运动装置内的存储空间进行交互",
@ -2114,9 +2113,9 @@
"create.ponder.portable_storage_interface.text_3": "放置第二个接口时,记得要与装置接口相隔 1 格或者 2 格的距离",
"create.ponder.portable_storage_interface.text_4": "当它们彼此经过时,它们会连接在一起",
"create.ponder.portable_storage_interface.text_5": "连接状态下,固定侧接口便会作为整个装置的存储空间代理",
"create.ponder.portable_storage_interface.text_6": "物品被输入到装置内...",
"create.ponder.portable_storage_interface.text_6": "物品被输入到装置内...",
"create.ponder.portable_storage_interface.text_7": "...或是从装置中提取出来",
"create.ponder.portable_storage_interface.text_8": "物品交换完毕后,装置仍然会停留在原地一小会,然后才会继续前行",
"create.ponder.portable_storage_interface.text_8": "如果一小段时间内没有物品交换,接口将会断开连接,然后装置重新开始运动",
"create.ponder.portable_storage_interface_redstone.header": "红石控制",
"create.ponder.portable_storage_interface_redstone.text_1": "通入红石信号可以阻止固定侧接口的连接行为",
@ -2205,24 +2204,24 @@
"create.ponder.smart_chute.text_3": "使用鼠标滚轮可以指定被过滤的物品数量",
"create.ponder.smart_chute.text_4": "通入红石信号,智能溜槽将会完全暂停工作",
"create.ponder.smart_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Smart Pipes",
"create.ponder.smart_pipe.text_1": "UNLOCALIZED: Smart pipes can help control flows by fluid type",
"create.ponder.smart_pipe.text_2": "UNLOCALIZED: When placed directly at the source, they can specify the type of fluid to extract",
"create.ponder.smart_pipe.text_3": "UNLOCALIZED: Simply Right-Click their filter slot with any item containing the desired fluid",
"create.ponder.smart_pipe.text_4": "UNLOCALIZED: When placed further down a pipe network, smart pipes will only let matching fluids continue",
"create.ponder.smart_pipe.header": "使用智能流体管道控制液体流动",
"create.ponder.smart_pipe.text_1": "智能流体管道可以限制通过它的流体种类",
"create.ponder.smart_pipe.text_2": "当紧邻流体源放置时,管道只会抽取设置的流体种类",
"create.ponder.smart_pipe.text_3": "使用任何包含流体的容器右键过滤槽来标记过滤的流体",
"create.ponder.smart_pipe.text_4": "当放在管线中时,只有匹配过滤器的流体才能流入它后方的管道",
"create.ponder.speedometer.header": "使用速度表来监测转速",
"create.ponder.speedometer.text_1": "速度表能显示相接组件的转速",
"create.ponder.speedometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据",
"create.ponder.speedometer.text_3": "红石比较器可以根据速度表的数值输出不同强弱的红石信号",
"create.ponder.spout_filling.header": "UNLOCALIZED: Filling Items using a Spout",
"create.ponder.spout_filling.text_1": "UNLOCALIZED: The Spout can fill fluid holding items provided beneath it",
"create.ponder.spout_filling.text_2": "UNLOCALIZED: The content of a Spout cannot be accessed manually",
"create.ponder.spout_filling.text_3": "UNLOCALIZED: Instead, Pipes can be used to supply it with fluids",
"create.ponder.spout_filling.text_4": "UNLOCALIZED: The Input items can be placed on a Depot under the Spout",
"create.ponder.spout_filling.text_5": "UNLOCALIZED: When items are provided on a belt...",
"create.ponder.spout_filling.text_6": "UNLOCALIZED: The Spout will hold and process them automatically",
"create.ponder.spout_filling.header": "使用注液器填充物品",
"create.ponder.spout_filling.text_1": "注液器可以将流体装入下方经过的,可以接受该流体的物品",
"create.ponder.spout_filling.text_2": "注液器的流体存储无法直接手动交互",
"create.ponder.spout_filling.text_3": "使用管线可以将流体输入注液器",
"create.ponder.spout_filling.text_4": "要被处理的物品可以被放置在其下方的置物台上",
"create.ponder.spout_filling.text_5": "当传送带上的物品经过注液器下方时...",
"create.ponder.spout_filling.text_6": "注液器会使物品停下,然后自动处理这一物品",
"create.ponder.stabilized_bearings.header": "装置固定朝向",
"create.ponder.stabilized_bearings.text_1": "当动力轴承在结构被带动时...",
@ -2255,11 +2254,11 @@
"create.ponder.valve_handle.text_4": "潜行右击可使它顺时针旋转",
"create.ponder.valve_handle.text_5": "可以通过染色来美化阀门手轮",
"create.ponder.valve_pipe.header": "UNLOCALIZED: Controlling Fluid flow using Valves",
"create.ponder.valve_pipe.text_1": "UNLOCALIZED: Valve pipes help control fluids propagating through pipe networks",
"create.ponder.valve_pipe.text_2": "UNLOCALIZED: Their shaft input controls whether fluid is currently allowed through",
"create.ponder.valve_pipe.text_3": "UNLOCALIZED: Given Rotational Force in the opening direction, the valve will open up",
"create.ponder.valve_pipe.text_4": "UNLOCALIZED: It can be closed again by reversing the input rotation",
"create.ponder.valve_pipe.header": "使用阀门管道控制液体流",
"create.ponder.valve_pipe.text_1": "阀门管道可以控制管道网中液体的去处",
"create.ponder.valve_pipe.text_2": "通过其上的传动杆输入动力可以控制它的开关",
"create.ponder.valve_pipe.text_3": "提供旋转向‘打开’方向的力会打开阀门,使得流体可以通过",
"create.ponder.valve_pipe.text_4": "提供另一方向的旋转力可以关闭阀门,阻止流体通过",
"create.ponder.water_wheel.header": "使用水车产生旋转力",
"create.ponder.water_wheel.text_1": "水车利用临近的水流来进行应力发生",

View file

@ -442,7 +442,6 @@
"entity.create.stationary_contraption": "固定結構",
"entity.create.super_glue": "強力膠",
"fluid.create.milk": "牛奶",
"fluid.create.potion": "藥水",
"fluid.create.tea": "茶",
@ -468,7 +467,7 @@
"item.create.copper_sheet": "銅板",
"item.create.crafter_slot_cover": "合成器蓋板",
"item.create.crafting_blueprint": "合成藍圖",
"item.create.creative_cake": "UNLOCALIZED: Creative Cake",
"item.create.creative_blaze_cake": "UNLOCALIZED: Creative Blaze Cake",
"item.create.crushed_aluminum_ore": "碎狀鋁礦石",
"item.create.crushed_brass": "碎狀黃銅",
"item.create.crushed_copper_ore": "碎狀銅礦石",
@ -1413,10 +1412,10 @@
"block.create.creative_crate.tooltip.condition1": "當標記了物品時",
"block.create.creative_crate.tooltip.behaviour1": "容器將會從虛空中提供_無限量_的標記物品並且任何放置到容器中的物品都會被_送入虛空_",
"item.create.creative_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE",
"item.create.creative_blaze_cake.tooltip.summary": "UNLOCALIZED: A very special treat for _Blaze Burners_ that allows _controlling their heat level_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner",
"item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Locks_ the Blaze Burner's heat level. If used again, _cycles_ the Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "控制鐵軌",
"block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度。",

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "create:item/creative_cake"
"layer0": "create:item/creative_blaze_cake"
}
}

View file

@ -1,17 +0,0 @@
{
"type": "create:emptying",
"ingredients": [
{
"item": "minecraft:milk_bucket"
}
],
"results": [
{
"item": "minecraft:bucket"
},
{
"fluid": "create:milk",
"amount": 1000
}
]
}

View file

@ -1,17 +0,0 @@
{
"type": "create:filling",
"ingredients": [
{
"item": "minecraft:bucket"
},
{
"fluidTag": "forge:milk",
"amount": 1000
}
],
"results": [
{
"item": "minecraft:milk_bucket"
}
]
}

View file

@ -3,7 +3,7 @@
"values": [
"create:blaze_cake_base",
"create:blaze_cake",
"create:creative_cake",
"create:creative_blaze_cake",
"create:builders_tea",
"minecraft:glass_bottle",
"minecraft:potion",

View file

@ -1,7 +0,0 @@
{
"replace": false,
"values": [
"create:flowing_milk",
"create:milk"
]
}

View file

@ -19,9 +19,14 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockDisplayReader;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.Tags;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.event.RegistryEvent.MissingMappings.Mapping;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.ForgeFlowingFluid;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
public class AllFluids {
@ -37,11 +42,6 @@ public class AllFluids {
.tag(AllTags.forgeFluidTag("tea"))
.register();
public static final FluidEntry<VirtualFluid> MILK = REGISTRATE.virtualFluid("milk")
.lang(f -> "fluid.create.milk", "Milk")
.tag(Tags.Fluids.MILK)
.register();
public static final FluidEntry<ForgeFlowingFluid.Flowing> HONEY =
REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new)
.lang(f -> "fluid.create.honey", "Honey")
@ -116,5 +116,5 @@ public class AllFluids {
}
}
}

View file

@ -108,7 +108,7 @@ public class AllItems {
.onRegister(i -> i.setBurnTime(6400))
.register();
public static final ItemEntry<CombustibleItem> CREATIVE_CAKE = REGISTRATE.item("creative_cake", CombustibleItem::new)
public static final ItemEntry<CombustibleItem> CREATIVE_BLAZE_CAKE = REGISTRATE.item("creative_blaze_cake", CombustibleItem::new)
.properties(p -> p.rarity(Rarity.EPIC))
.tag(AllItemTags.UPRIGHT_ON_BELT.tag)
.onRegister(i -> i.setBurnTime(Integer.MAX_VALUE))

View file

@ -21,6 +21,7 @@ import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuild
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer;
import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.crafting.IRecipe;
@ -32,7 +33,7 @@ import net.minecraft.util.registry.Registry;
import net.minecraft.world.World;
import net.minecraftforge.event.RegistryEvent;
public enum AllRecipeTypes {
public enum AllRecipeTypes implements IRecipeTypeInfo {
MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new),
CONVERSION(ConversionRecipe::new),
@ -78,16 +79,19 @@ public enum AllRecipeTypes {
this(processingSerializer(processingFactory));
}
@Override
public ResourceLocation getId() {
return id;
}
@SuppressWarnings("unchecked")
@Override
public <T extends IRecipeSerializer<?>> T getSerializer() {
return (T) serializer;
}
@SuppressWarnings("unchecked")
@Override
public <T extends IRecipeType<?>> T getType() {
return (T) type;
}

View file

@ -1,5 +1,6 @@
package com.simibubi.create;
import com.simibubi.create.content.contraptions.base.CutoutRotatingInstance;
import com.simibubi.create.content.contraptions.base.HalfShaftInstance;
import com.simibubi.create.content.contraptions.base.HorizontalHalfShaftInstance;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
@ -489,7 +490,7 @@ public class AllTileEntities {
public static final TileEntityEntry<CrushingWheelTileEntity> CRUSHING_WHEEL = Create.registrate()
.tileEntity("crushing_wheel", CrushingWheelTileEntity::new)
.instance(() -> SingleRotatingInstance::new)
.instance(() -> CutoutRotatingInstance::new)
.validBlocks(AllBlocks.CRUSHING_WHEEL)
.renderer(() -> KineticTileEntityRenderer::new)
.register();
@ -503,7 +504,7 @@ public class AllTileEntities {
public static final TileEntityEntry<WaterWheelTileEntity> WATER_WHEEL = Create.registrate()
.tileEntity("water_wheel", WaterWheelTileEntity::new)
.instance(() -> SingleRotatingInstance::new)
.instance(() -> CutoutRotatingInstance::new)
.validBlocks(AllBlocks.WATER_WHEEL)
.renderer(() -> KineticTileEntityRenderer::new)
.register();

View file

@ -41,6 +41,7 @@ import net.minecraft.util.SoundEvent;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.placement.Placement;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.BiomeLoadingEvent;
import net.minecraftforge.eventbus.api.EventPriority;
@ -108,6 +109,8 @@ public class Create {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT,
() -> () -> CreateClient.addClientListeners(forgeEventBus, modEventBus));
ForgeMod.enableMilkFluid();
}
public static void init(final FMLCommonSetupEvent event) {

View file

@ -51,6 +51,7 @@ import com.simibubi.create.content.schematics.block.SchematicannonScreen;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.CRecipes;
import com.simibubi.create.foundation.config.ConfigBase.ConfigBool;
import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
@ -79,12 +80,6 @@ public class CreateJEI implements IModPlugin {
private static final ResourceLocation ID = new ResourceLocation(Create.ID, "jei_plugin");
@Override
@Nonnull
public ResourceLocation getPluginUid() {
return ID;
}
public IIngredientManager ingredientManager;
private final List<CreateRecipeCategory<?>> allCategories = new ArrayList<>();
private final CreateRecipeCategory<?>
@ -221,6 +216,12 @@ public class CreateJEI implements IModPlugin {
return new CategoryBuilder<T>(name, supplier);
}
@Override
@Nonnull
public ResourceLocation getPluginUid() {
return ID;
}
@Override
public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) {
registration.addRecipeTransferHandler(new BlueprintTransferHandler(), VanillaRecipeCategoryUid.CRAFTING);
@ -269,7 +270,7 @@ public class CreateJEI implements IModPlugin {
pred = Predicates.alwaysTrue();
}
public CategoryBuilder<T> recipes(AllRecipeTypes recipeTypeEntry) {
public CategoryBuilder<T> recipes(IRecipeTypeInfo recipeTypeEntry) {
return recipes(recipeTypeEntry::getType);
}

View file

@ -10,7 +10,6 @@ import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.gui.GuiGameElement;
import com.simibubi.create.foundation.utility.Lang;
import mezz.jei.api.constants.VanillaTypes;
@ -75,17 +74,15 @@ public abstract class ProcessingViaFanCategory<T extends IRecipe<?>> extends Cre
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f));
int scale = 24;
GuiGameElement.of(AllBlockPartials.ENCASED_FAN_INNER)
AnimatedKinetics.defaultBlockElement(AllBlockPartials.ENCASED_FAN_INNER)
.rotateBlock(180, 0, AnimatedKinetics.getCurrentAngle() * 16)
.scale(scale)
.lighting(AnimatedKinetics.DEFAULT_LIGHTING)
.render(matrixStack);
GuiGameElement.of(AllBlocks.ENCASED_FAN.getDefaultState())
AnimatedKinetics.defaultBlockElement(AllBlocks.ENCASED_FAN.getDefaultState())
.rotateBlock(0, 180, 0)
.atLocal(0, 0, 0)
.scale(scale)
.lighting(AnimatedKinetics.DEFAULT_LIGHTING)
.render(matrixStack);
renderAttachedBlock(matrixStack);

View file

@ -26,14 +26,14 @@ public class AnimatedBlazeBurner extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f));
int scale = 23;
defaultBlockElement(AllBlocks.BLAZE_BURNER.getDefaultState())
blockElement(AllBlocks.BLAZE_BURNER.getDefaultState())
.atLocal(0, 1.65, 0)
.scale(scale)
.render(matrixStack);
float offset = (MathHelper.sin(AnimationTickHolder.getRenderTime() / 16f) + 0.5f) / 16f;
PartialModel blaze = AllBlockPartials.BLAZES.get(heatLevel);
defaultBlockElement(blaze)
blockElement(blaze)
.atLocal(1, 1.65 + offset, 1)
.rotate(0, 180, 0)
.scale(scale)

View file

@ -1,9 +1,9 @@
package com.simibubi.create.compat.jei.category.animations;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.gui.AllGuiTextures;
import com.simibubi.create.foundation.utility.MatrixStacker;
public class AnimatedCrafter extends AnimatedKinetics {
@ -14,17 +14,17 @@ public class AnimatedCrafter extends AnimatedKinetics {
AllGuiTextures.JEI_SHADOW.draw(matrixStack, -16, 13);
matrixStack.translate(3, 16, 0);
MatrixStacker.of(matrixStack)
MatrixTransformStack.of(matrixStack)
.rotateX(-12.5f)
.rotateY(-22.5f);
int scale = 22;
defaultBlockElement(cogwheel())
blockElement(cogwheel())
.rotateBlock(90, 0, getCurrentAngle())
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlocks.MECHANICAL_CRAFTER.getDefaultState())
blockElement(AllBlocks.MECHANICAL_CRAFTER.getDefaultState())
.rotateBlock(0, 180, 0)
.scale(scale)
.render(matrixStack);

View file

@ -20,12 +20,12 @@ public class AnimatedCrushingWheels extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(-22.5f));
int scale = 22;
defaultBlockElement(wheel)
blockElement(wheel)
.rotateBlock(0, 90, -getCurrentAngle())
.scale(scale)
.render(matrixStack);
defaultBlockElement(wheel)
blockElement(wheel)
.rotateBlock(0, 90, getCurrentAngle())
.atLocal(2, 0, 0)
.scale(scale)

View file

@ -20,12 +20,12 @@ public class AnimatedDeployer extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f));
int scale = 20;
defaultBlockElement(shaft(Axis.Z))
blockElement(shaft(Axis.Z))
.rotateBlock(0, 0, getCurrentAngle())
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlocks.DEPLOYER.getDefaultState()
blockElement(AllBlocks.DEPLOYER.getDefaultState()
.setValue(DeployerBlock.FACING, Direction.DOWN)
.setValue(DeployerBlock.AXIS_ALONG_FIRST_COORDINATE, false))
.scale(scale)
@ -37,18 +37,18 @@ public class AnimatedDeployer extends AnimatedKinetics {
matrixStack.pushPose();
matrixStack.translate(0, offset * 17, 0);
defaultBlockElement(AllBlockPartials.DEPLOYER_POLE)
blockElement(AllBlockPartials.DEPLOYER_POLE)
.rotateBlock(90, 0, 0)
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlockPartials.DEPLOYER_HAND_HOLDING)
blockElement(AllBlockPartials.DEPLOYER_HAND_HOLDING)
.rotateBlock(90, 0, 0)
.scale(scale)
.render(matrixStack);
matrixStack.popPose();
defaultBlockElement(AllBlocks.DEPOT.getDefaultState())
blockElement(AllBlocks.DEPOT.getDefaultState())
.atLocal(0, 2, 0)
.scale(scale)
.render(matrixStack);

View file

@ -27,7 +27,7 @@ public class AnimatedItemDrain extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f));
int scale = 20;
defaultBlockElement(AllBlocks.ITEM_DRAIN.getDefaultState())
blockElement(AllBlocks.ITEM_DRAIN.getDefaultState())
.scale(scale)
.render(matrixStack);

View file

@ -22,6 +22,24 @@ public abstract class AnimatedKinetics implements IDrawable {
.secondLightRotation(-20.0f, 50.0f)
.build();
/**
* <b>Only use this method outside of subclasses.</b>
* Use {@link #blockElement(BlockState)} if calling from inside a subclass.
*/
public static GuiGameElement.GuiRenderBuilder defaultBlockElement(BlockState state) {
return GuiGameElement.of(state)
.lighting(DEFAULT_LIGHTING);
}
/**
* <b>Only use this method outside of subclasses.</b>
* Use {@link #blockElement(PartialModel)} if calling from inside a subclass.
*/
public static GuiGameElement.GuiRenderBuilder defaultBlockElement(PartialModel partial) {
return GuiGameElement.of(partial)
.lighting(DEFAULT_LIGHTING);
}
public static float getCurrentAngle() {
return (AnimationTickHolder.getRenderTime() * 4f) % 360;
}
@ -34,14 +52,12 @@ public abstract class AnimatedKinetics implements IDrawable {
return AllBlockPartials.SHAFTLESS_COGWHEEL;
}
protected GuiGameElement.GuiRenderBuilder defaultBlockElement(BlockState state) {
return GuiGameElement.of(state)
.lighting(DEFAULT_LIGHTING);
protected GuiGameElement.GuiRenderBuilder blockElement(BlockState state) {
return defaultBlockElement(state);
}
protected GuiGameElement.GuiRenderBuilder defaultBlockElement(PartialModel partial) {
return GuiGameElement.of(partial)
.lighting(DEFAULT_LIGHTING);
protected GuiGameElement.GuiRenderBuilder blockElement(PartialModel partial) {
return defaultBlockElement(partial);
}
@Override

View file

@ -15,12 +15,12 @@ public class AnimatedMillstone extends AnimatedKinetics {
matrixStack.translate(-2, 18, 0);
int scale = 22;
defaultBlockElement(AllBlockPartials.MILLSTONE_COG)
blockElement(AllBlockPartials.MILLSTONE_COG)
.rotateBlock(22.5, getCurrentAngle() * 2, 0)
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlocks.MILLSTONE.getDefaultState())
blockElement(AllBlocks.MILLSTONE.getDefaultState())
.rotateBlock(22.5, 22.5, 0)
.scale(scale)
.render(matrixStack);

View file

@ -18,31 +18,31 @@ public class AnimatedMixer extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f));
int scale = 23;
defaultBlockElement(cogwheel())
blockElement(cogwheel())
.rotateBlock(0, getCurrentAngle() * 2, 0)
.atLocal(0, 0, 0)
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlocks.MECHANICAL_MIXER.getDefaultState())
blockElement(AllBlocks.MECHANICAL_MIXER.getDefaultState())
.atLocal(0, 0, 0)
.scale(scale)
.render(matrixStack);
float animation = ((MathHelper.sin(AnimationTickHolder.getRenderTime() / 32f) + 1) / 5) + .5f;
defaultBlockElement(AllBlockPartials.MECHANICAL_MIXER_POLE)
blockElement(AllBlockPartials.MECHANICAL_MIXER_POLE)
.atLocal(0, animation, 0)
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlockPartials.MECHANICAL_MIXER_HEAD)
blockElement(AllBlockPartials.MECHANICAL_MIXER_HEAD)
.rotateBlock(0, getCurrentAngle() * 4, 0)
.atLocal(0, animation, 0)
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlocks.BASIN.getDefaultState())
blockElement(AllBlocks.BASIN.getDefaultState())
.atLocal(0, 1.65, 0)
.scale(scale)
.render(matrixStack);

View file

@ -24,22 +24,22 @@ public class AnimatedPress extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f));
int scale = basin ? 23 : 24;
defaultBlockElement(shaft(Axis.Z))
blockElement(shaft(Axis.Z))
.rotateBlock(0, 0, getCurrentAngle())
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlocks.MECHANICAL_PRESS.getDefaultState())
blockElement(AllBlocks.MECHANICAL_PRESS.getDefaultState())
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlockPartials.MECHANICAL_PRESS_HEAD)
blockElement(AllBlockPartials.MECHANICAL_PRESS_HEAD)
.atLocal(0, -getAnimatedHeadOffset(), 0)
.scale(scale)
.render(matrixStack);
if (basin)
defaultBlockElement(AllBlocks.BASIN.getDefaultState())
blockElement(AllBlocks.BASIN.getDefaultState())
.atLocal(0, 1.65, 0)
.scale(scale)
.render(matrixStack);

View file

@ -21,18 +21,18 @@ public class AnimatedSaw extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f + 90));
int scale = 25;
defaultBlockElement(shaft(Axis.X))
blockElement(shaft(Axis.X))
.rotateBlock(-getCurrentAngle(), 0, 0)
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlocks.MECHANICAL_SAW.getDefaultState()
blockElement(AllBlocks.MECHANICAL_SAW.getDefaultState()
.setValue(SawBlock.FACING, Direction.UP))
.rotateBlock(0, 0, 0)
.scale(scale)
.render(matrixStack);
defaultBlockElement(AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE)
blockElement(AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE)
.rotateBlock(0, -90, -90)
.scale(scale)
.render(matrixStack);

View file

@ -32,7 +32,7 @@ public class AnimatedSpout extends AnimatedKinetics {
matrixStack.mulPose(Vector3f.YP.rotationDegrees(22.5f));
int scale = 20;
defaultBlockElement(AllBlocks.SPOUT.getDefaultState())
blockElement(AllBlocks.SPOUT.getDefaultState())
.scale(scale)
.render(matrixStack);
@ -42,22 +42,22 @@ public class AnimatedSpout extends AnimatedKinetics {
matrixStack.pushPose();
defaultBlockElement(AllBlockPartials.SPOUT_TOP)
blockElement(AllBlockPartials.SPOUT_TOP)
.scale(scale)
.render(matrixStack);
matrixStack.translate(0, -3 * squeeze / 32f, 0);
defaultBlockElement(AllBlockPartials.SPOUT_MIDDLE)
blockElement(AllBlockPartials.SPOUT_MIDDLE)
.scale(scale)
.render(matrixStack);
matrixStack.translate(0, -3 * squeeze / 32f, 0);
defaultBlockElement(AllBlockPartials.SPOUT_BOTTOM)
blockElement(AllBlockPartials.SPOUT_BOTTOM)
.scale(scale)
.render(matrixStack);
matrixStack.translate(0, -3 * squeeze / 32f, 0);
matrixStack.popPose();
defaultBlockElement(AllBlocks.DEPOT.getDefaultState())
blockElement(AllBlocks.DEPOT.getDefaultState())
.atLocal(0, 2, 0)
.scale(scale)
.render(matrixStack);

View file

@ -1,6 +1,6 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.util.Direction;

View file

@ -0,0 +1,17 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
public class CutoutRotatingInstance extends SingleRotatingInstance {
public CutoutRotatingInstance(MaterialManager<?> modelManager, KineticTileEntity tile) {
super(modelManager, tile);
}
protected InstanceMaterial<RotatingData> getRotatingMaterial() {
return materialManager.defaultCutout()
.material(AllMaterialSpecs.ROTATING);
}
}

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import net.minecraft.state.properties.BlockStateProperties;

View file

@ -1,6 +1,6 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.util.Direction;

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.InstanceMaterial;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel;
@ -84,8 +84,9 @@ public abstract class KineticTileInstance<T extends KineticTileEntity> extends T
return shaft(getRotationAxis());
}
protected final InstanceMaterial<RotatingData> getRotatingMaterial() {
return materialManager.getMaterial(AllMaterialSpecs.ROTATING);
protected InstanceMaterial<RotatingData> getRotatingMaterial() {
return materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING);
}
public static BlockState shaft(Direction.Axis axis) {

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
@ -13,6 +13,8 @@ public class ShaftlessCogInstance extends SingleRotatingInstance {
@Override
protected Instancer<RotatingData> getModel() {
return materialManager.getMaterial(AllMaterialSpecs.ROTATING).getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState());
return materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING)
.getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState());
}
}

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import net.minecraft.block.BlockState;

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.components.actors;
import com.jozufozu.flywheel.backend.instancing.InstanceMaterial;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance;
@ -22,7 +22,8 @@ public class DrillActorInstance extends ActorInstance {
public DrillActorInstance(MaterialManager<?> materialManager, PlacementSimulationWorld contraption, MovementContext context) {
super(materialManager, contraption, context);
InstanceMaterial<ActorData> instanceMaterial = materialManager.getMaterial(AllMaterialSpecs.ACTORS);
InstanceMaterial<ActorData> instanceMaterial = materialManager.defaultSolid()
.material(AllMaterialSpecs.ACTORS);
BlockState state = context.state;

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.actors;
import static net.minecraft.state.properties.BlockStateProperties.FACING;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.RotatingData;

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.actors;
import javax.annotation.Nullable;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices;

View file

@ -1,5 +1,6 @@
package com.simibubi.create.content.contraptions.components.actors;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
@ -11,7 +12,6 @@ import com.simibubi.create.foundation.render.PartialBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld;
@ -46,7 +46,7 @@ public class DrillRenderer extends KineticTileEntityRenderer {
MatrixStack m = matrices.contraptionStack;
m.pushPose();
MatrixStacker.of(m)
MatrixTransformStack.of(m)
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing))

View file

@ -2,16 +2,17 @@ package com.simibubi.create.content.contraptions.components.actors;
import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING;
import com.jozufozu.flywheel.backend.instancing.InstanceMaterial;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld;
@ -36,7 +37,8 @@ public class HarvesterActorInstance extends ActorInstance {
public HarvesterActorInstance(MaterialManager<?> materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) {
super(materialManager, simulationWorld, context);
InstanceMaterial<ModelData> instanceMaterial = materialManager.getTransformMaterial();
InstanceMaterial<ModelData> instanceMaterial = materialManager.defaultCutout()
.material(Materials.TRANSFORMED);
BlockState state = context.state;
@ -74,7 +76,7 @@ public class HarvesterActorInstance extends ActorInstance {
@Override
public void beginFrame() {
MatrixStack ms = new MatrixStack();
MatrixStacker msr = MatrixStacker.of(ms);
MatrixTransformStack msr = MatrixTransformStack.of(ms);
msr.translate(context.localPos)
.centre()

View file

@ -7,7 +7,7 @@ import javax.annotation.Nullable;
import org.apache.commons.lang3.mutable.MutableBoolean;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance;

View file

@ -3,13 +3,14 @@ package com.simibubi.create.content.contraptions.components.crafter;
import java.util.function.Supplier;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.RotatingData;
import com.simibubi.create.content.contraptions.base.SingleRotatingInstance;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.util.Direction;
@ -23,18 +24,20 @@ public class MechanicalCrafterInstance extends SingleRotatingInstance {
protected Instancer<RotatingData> getModel() {
Direction facing = blockState.getValue(MechanicalCrafterBlock.HORIZONTAL_FACING);
Supplier<MatrixStack> ms = () -> {
MatrixStack stack = new MatrixStack();
MatrixStacker stacker = MatrixStacker.of(stack).centre();
if (facing.getAxis() == Direction.Axis.X)
stacker.rotateZ(90);
else if (facing.getAxis() == Direction.Axis.Z)
stacker.rotateX(90);
stacker.unCentre();
return stack;
};
return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState, facing, ms);
return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState, facing, rotateToFace(facing));
}
private Supplier<MatrixStack> rotateToFace(Direction facing) {
return () -> {
MatrixStack stack = new MatrixStack();
TransformStack stacker = MatrixTransformStack.of(stack)
.centre();
if (facing.getAxis() == Direction.Axis.X) stacker.rotateZ(90);
else if (facing.getAxis() == Direction.Axis.Z) stacker.rotateX(90);
stacker.unCentre();
return stack;
};
}
}

View file

@ -5,6 +5,7 @@ import static com.simibubi.create.content.contraptions.base.KineticTileEntityRen
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.simibubi.create.AllBlockPartials;
@ -16,7 +17,6 @@ import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.block.BlockState;
import net.minecraft.client.Minecraft;
@ -112,7 +112,7 @@ public class MechanicalCrafterRenderer extends SafeTileEntityRenderer<Mechanical
Integer x = pair.getKey();
Integer y = pair.getValue();
ms.translate(x * spacing, y * spacing, 0);
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.nudge(x * 13 + y + te.getBlockPos()
.hashCode());
Minecraft.getInstance()

View file

@ -2,13 +2,13 @@ package com.simibubi.create.content.contraptions.components.crank;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.content.contraptions.base.SingleRotatingInstance;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.block.Block;
import net.minecraft.state.properties.BlockStateProperties;
@ -51,7 +51,7 @@ public class HandCrankInstance extends SingleRotatingInstance implements IDynami
float angle = (tile.independentAngle + AnimationTickHolder.getPartialTicks() * tile.chasingVelocity) / 360;
MatrixStack ms = new MatrixStack();
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.translate(getInstancePosition())
.centre()
.rotate(Direction.get(Direction.AxisDirection.POSITIVE, axis), angle)

View file

@ -1,14 +1,14 @@
package com.simibubi.create.content.contraptions.components.crusher;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipe;
import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams;
import com.simibubi.create.foundation.utility.recipe.IRecipeTypeInfo;
import net.minecraftforge.items.wrapper.RecipeWrapper;
public abstract class AbstractCrushingRecipe extends ProcessingRecipe<RecipeWrapper> {
public AbstractCrushingRecipe(AllRecipeTypes recipeType, ProcessingRecipeParams params) {
public AbstractCrushingRecipe(IRecipeTypeInfo recipeType, ProcessingRecipeParams params) {
super(recipeType, params);
}

View file

@ -22,7 +22,7 @@ public class CrushingRecipe extends AbstractCrushingRecipe {
return ingredients.get(0)
.test(inv.getItem(0));
}
@Override
protected int getMaxOutputCount() {
return 7;

View file

@ -3,10 +3,12 @@ package com.simibubi.create.content.contraptions.components.deployer;
import static com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE;
import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING;
import com.jozufozu.flywheel.backend.instancing.InstanceMaterial;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.IRotate;
@ -17,7 +19,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.ren
import com.simibubi.create.foundation.render.AllMaterialSpecs;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld;
@ -44,7 +45,8 @@ public class DeployerActorInstance extends ActorInstance {
public DeployerActorInstance(MaterialManager<?> materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) {
super(materialManager, simulationWorld, context);
InstanceMaterial<ModelData> mat = materialManager.getTransformMaterial();
InstanceMaterial<ModelData> mat = materialManager.defaultSolid()
.material(Materials.TRANSFORMED);
BlockState state = context.state;
DeployerTileEntity.Mode mode = NBTHelper.readEnum(context.tileData, "Mode", DeployerTileEntity.Mode.class);
@ -62,7 +64,8 @@ public class DeployerActorInstance extends ActorInstance {
hand = mat.getModel(handPose, state).createInstance();
Direction.Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state);
shaft = materialManager.getMaterial(AllMaterialSpecs.ROTATING)
shaft = materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING)
.getModel(KineticTileInstance.shaft(axis))
.createInstance();
@ -92,7 +95,7 @@ public class DeployerActorInstance extends ActorInstance {
Vector3d offset = Vector3d.atLowerCornerOf(facing.getNormal()).scale(factor);
MatrixStack ms = new MatrixStack();
MatrixStacker msr = MatrixStacker.of(ms);
MatrixTransformStack msr = MatrixTransformStack.of(ms);
msr.translate(context.localPos)
.translate(offset);
@ -100,7 +103,7 @@ public class DeployerActorInstance extends ActorInstance {
transformModel(msr, pole, hand, yRot, zRot, zRotPole);
}
static void transformModel(MatrixStacker msr, ModelData pole, ModelData hand, float yRot, float zRot, float zRotPole) {
static void transformModel(MatrixTransformStack msr, ModelData pole, ModelData hand, float yRot, float zRot, float zRotPole) {
msr.centre();
msr.rotate(Direction.SOUTH, (float) ((zRot) / 180 * Math.PI));

View file

@ -1,9 +1,9 @@
package com.simibubi.create.content.contraptions.components.deployer;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.BlockState;
@ -31,7 +31,7 @@ public class DeployerFilterSlot extends ValueBoxTransform {
Direction facing = state.getValue(DeployerBlock.FACING);
float xRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0;
float yRot = AngleHelper.horizontalAngle(facing) + 180;
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.rotateY(yRot)
.rotateX(xRot);
}

View file

@ -5,7 +5,7 @@ import static com.simibubi.create.content.contraptions.base.DirectionalKineticBl
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.ITickableInstance;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.simibubi.create.AllBlockPartials;

View file

@ -8,7 +8,7 @@ import javax.annotation.Nullable;
import org.apache.commons.lang3.tuple.Pair;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllTags.AllBlockTags;

View file

@ -2,10 +2,11 @@ package com.simibubi.create.content.contraptions.components.fan;
import static net.minecraft.state.properties.BlockStateProperties.FACING;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileInstance;
import com.simibubi.create.content.contraptions.base.RotatingData;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
@ -25,7 +26,10 @@ public class FanInstance extends KineticTileInstance<EncasedFanTileEntity> {
opposite = direction.getOpposite();
shaft = getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite).createInstance();
fan = getRotatingMaterial().getModel(AllBlockPartials.ENCASED_FAN_INNER, blockState, opposite).createInstance();
fan = modelManager.defaultCutout()
.material(AllMaterialSpecs.ROTATING)
.getModel(AllBlockPartials.ENCASED_FAN_INNER, blockState, opposite)
.createInstance();
setup(shaft);
setup(fan, getFanSpeed());

View file

@ -8,17 +8,17 @@ import java.util.List;
import com.google.common.collect.Lists;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.InstanceData;
import com.jozufozu.flywheel.backend.instancing.InstanceMaterial;
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileInstance;
import com.simibubi.create.content.contraptions.base.RotatingData;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.block.BlockState;
import net.minecraft.util.Direction;
@ -95,7 +95,7 @@ public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> im
private void animate(float angle) {
MatrixStack ms = new MatrixStack();
MatrixStacker msr = MatrixStacker.of(ms);
MatrixTransformStack msr = MatrixTransformStack.of(ms);
msr.translate(getInstancePosition());
@ -163,7 +163,7 @@ public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> im
return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite);
}
protected void transformConnector(MatrixStacker ms, boolean upper, boolean rotating, float angle, boolean flip) {
protected void transformConnector(MatrixTransformStack ms, boolean upper, boolean rotating, float angle, boolean flip) {
float shift = upper ? 1 / 4f : -1 / 8f;
float offset = upper ? 1 / 4f : 1 / 4f;
float radians = (float) (angle / 180 * Math.PI);
@ -189,7 +189,7 @@ public class FlyWheelInstance extends KineticTileInstance<FlywheelTileEntity> im
ms.translate(9 / 16f, 0, 0);
}
protected void rotateToFacing(MatrixStacker buffer, Direction facing) {
protected void rotateToFacing(MatrixTransformStack buffer, Direction facing) {
buffer.centre()
.rotate(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing)))
.unCentre();

View file

@ -1,12 +1,12 @@
package com.simibubi.create.content.contraptions.components.flywheel.engine;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.block.Block;
import net.minecraft.state.properties.BlockStateProperties;
@ -34,7 +34,7 @@ public class EngineInstance extends TileEntityInstance<EngineTileEntity> {
float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing));
MatrixStack ms = new MatrixStack();
MatrixStacker msr = MatrixStacker.of(ms);
MatrixTransformStack msr = MatrixTransformStack.of(ms);
msr.translate(getInstancePosition())
.nudge(tile.hashCode())

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.components.millstone;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.RotatingData;

View file

@ -116,6 +116,7 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity {
if (runningTicks >= 40) {
running = false;
runningTicks = 0;
basinChecker.scheduleUpdate();
return;
}

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.components.mixer;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.RotatingData;

View file

@ -201,6 +201,8 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity {
&& getBasin().filter(BasinTileEntity::canContinueProcessing)
.isPresent())
startProcessingBasin();
else
basinChecker.scheduleUpdate();
pressedItems.clear();
sendData();

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.contraptions.components.press;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
@ -20,7 +21,8 @@ public class PressInstance extends ShaftInstance implements IDynamicInstance {
super(dispatcher, tile);
press = tile;
pressHead = dispatcher.getOrientedMaterial()
pressHead = dispatcher.defaultSolid()
.material(Materials.ORIENTED)
.getModel(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState)
.createInstance();

View file

@ -1,8 +1,8 @@
package com.simibubi.create.content.contraptions.components.saw;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.BlockState;
@ -23,7 +23,7 @@ public class SawFilterSlot extends ValueBoxTransform {
@Override
protected void rotate(BlockState state, MatrixStack ms) {
int yRot = state.getValue(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 270 : 180;
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.rotateY(yRot)
.rotateX(90);
}

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.saw;
import static net.minecraft.state.properties.BlockStateProperties.FACING;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.RotatingData;

View file

@ -4,6 +4,7 @@ import static net.minecraft.state.properties.BlockStateProperties.FACING;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.CreateClient;
@ -17,7 +18,6 @@ import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer;
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld;
@ -194,14 +194,14 @@ public class SawRenderer extends SafeTileEntityRenderer<SawTileEntity> {
MatrixStack m = matrices.contraptionStack;
m.pushPose();
MatrixStacker.of(m)
MatrixTransformStack.of(m)
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))
.rotateX(AngleHelper.verticalAngle(facing));
if (!SawBlock.isHorizontal(state))
MatrixStacker.of(m)
MatrixTransformStack.of(m)
.rotateZ(state.getValue(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 0 : 90);
MatrixStacker.of(m)
MatrixTransformStack.of(m)
.unCentre();
superBuffer.transform(m)

View file

@ -2,10 +2,10 @@ package com.simibubi.create.content.contraptions.components.structureMovement;
import static com.simibubi.create.foundation.utility.AngleHelper.angleLerp;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllEntityTypes;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingContraption;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper;
@ -231,7 +231,7 @@ public class ControlledContraptionEntity extends AbstractContraptionEntity {
Axis axis = getRotationAxis();
for (MatrixStack stack : matrixStacks)
MatrixStacker.of(stack)
MatrixTransformStack.of(stack)
.nudge(getId())
.centre()
.rotate(angle, axis)

View file

@ -2,10 +2,10 @@ package com.simibubi.create.content.contraptions.components.structureMovement;
import java.util.function.BiPredicate;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.block.BlockState;
import net.minecraft.state.properties.BlockStateProperties;
@ -27,7 +27,7 @@ public class DirectionalExtenderScrollOptionSlot extends CenteredSideValueBoxTra
@Override
protected void rotate(BlockState state, MatrixStack ms) {
if (!getSide().getAxis().isHorizontal())
MatrixStacker.of(ms).rotateY(AngleHelper.horizontalAngle(state.getValue(BlockStateProperties.FACING)) - 90);
MatrixTransformStack.of(ms).rotateY(AngleHelper.horizontalAngle(state.getValue(BlockStateProperties.FACING)) - 90);
super.rotate(state, ms);
}
}

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement;
import javax.annotation.Nullable;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance;
import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices;
import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld;

View file

@ -7,6 +7,7 @@ import java.util.UUID;
import javax.annotation.Nullable;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllEntityTypes;
import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption;
@ -18,7 +19,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra
import com.simibubi.create.foundation.item.ItemHelper;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper;
@ -536,7 +536,7 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
}
for (MatrixStack stack : matrixStacks)
MatrixStacker.of(stack)
MatrixTransformStack.of(stack)
.nudge(getId())
.centre()
.rotateY(angleYaw)

View file

@ -1,7 +1,7 @@
package com.simibubi.create.content.contraptions.components.structureMovement.bearing;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.simibubi.create.AllBlockPartials;

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.contraptions.components.structureMovement.bearing;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
@ -32,7 +33,9 @@ public class StabilizedBearingInstance extends ActorInstance {
blockOrientation = BearingInstance.getBlockStateOrientation(facing);
topInstance = materialManager.getOrientedMaterial().getModel(AllBlockPartials.BEARING_TOP, blockState).createInstance();
topInstance = materialManager.defaultSolid()
.material(Materials.ORIENTED)
.getModel(AllBlockPartials.BEARING_TOP, blockState).createInstance();
topInstance.setPosition(context.localPos)
.setRotation(blockOrientation)

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.be
import javax.annotation.Nullable;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;

View file

@ -1,14 +1,14 @@
package com.simibubi.create.content.contraptions.components.structureMovement.chassis;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.client.Minecraft;
import net.minecraft.util.Direction;
@ -52,7 +52,7 @@ public class StickerInstance extends TileEntityInstance<StickerTileEntity> imple
private void animateHead(float offset) {
MatrixStack stack = new MatrixStack();
MatrixStacker.of(stack)
MatrixTransformStack.of(stack)
.translate(getInstancePosition())
.nudge(tile.hashCode())
.centre()

View file

@ -1,8 +1,9 @@
package com.simibubi.create.content.contraptions.components.structureMovement.gantry;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
@ -10,7 +11,6 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
@ -64,7 +64,7 @@ public class GantryCarriageInstance extends ShaftInstance implements IDynamicIns
private void animateCogs(float cogAngle) {
MatrixStack ms = new MatrixStack();
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.translate(getInstancePosition())
.centre()
.rotateY(AngleHelper.horizontalAngle(facing))

View file

@ -1,17 +1,22 @@
package com.simibubi.create.content.contraptions.components.structureMovement.glue;
import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat;
import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer;
import com.jozufozu.flywheel.backend.instancing.ITickableInstance;
import com.jozufozu.flywheel.backend.instancing.InstanceMaterial;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance;
import com.jozufozu.flywheel.backend.material.MaterialGroup;
import com.jozufozu.flywheel.backend.model.BufferedModel;
import com.jozufozu.flywheel.backend.model.ElementBuffer;
import com.jozufozu.flywheel.backend.model.IndexedModel;
import com.jozufozu.flywheel.backend.state.TextureRenderState;
import com.jozufozu.flywheel.core.Formats;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.QuadConverter;
import com.jozufozu.flywheel.core.instancing.ConditionalInstance;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.jozufozu.flywheel.core.model.IModel;
import com.simibubi.create.AllItems;
import com.simibubi.create.AllStitchedTextures;
import com.simibubi.create.Create;
@ -51,14 +56,9 @@ public class GlueInstance extends EntityInstance<SuperGlueEntity> implements ITi
}
private Instancer<OrientedData> getInstancer(MaterialManager<?> materialManager, SuperGlueEntity entity) {
InstanceMaterial<OrientedData> material;
MaterialGroup<?> group = USE_ATLAS ? materialManager.defaultSolid() : materialManager.solid(TextureRenderState.get(TEXTURE));
if (USE_ATLAS)
material = materialManager.getMaterial(Materials.ORIENTED);
else
material = materialManager.getMaterial(Materials.ORIENTED, TEXTURE);
return material.get(entity.getType(), GlueInstance::supplyModel);
return group.material(Materials.ORIENTED).model(entity.getType(), GlueModel::new);
}
@Override
@ -99,64 +99,76 @@ public class GlueInstance extends EntityInstance<SuperGlueEntity> implements ITi
|| AllItems.SUPER_GLUE.isIn(player.getOffhandItem());
}
public static BufferedModel supplyModel() {
Vector3d diff = Vector3d.atLowerCornerOf(Direction.SOUTH.getNormal());
Vector3d extension = diff.normalize()
.scale(1 / 32f - 1 / 128f);
public static class GlueModel implements IModel {
@Override
public void buffer(VecBuffer buffer) {
Vector3d diff = Vector3d.atLowerCornerOf(Direction.SOUTH.getNormal());
Vector3d extension = diff.normalize()
.scale(1 / 32f - 1 / 128f);
Vector3d plane = VecHelper.axisAlingedPlaneOf(diff);
Direction.Axis axis = Direction.getNearest(diff.x, diff.y, diff.z)
.getAxis();
Vector3d plane = VecHelper.axisAlingedPlaneOf(diff);
Direction.Axis axis = Direction.getNearest(diff.x, diff.y, diff.z)
.getAxis();
Vector3d start = Vector3d.ZERO.subtract(extension);
Vector3d end = Vector3d.ZERO.add(extension);
Vector3d start = Vector3d.ZERO.subtract(extension);
Vector3d end = Vector3d.ZERO.add(extension);
plane = plane.scale(1 / 2f);
Vector3d a1 = plane.add(start);
Vector3d b1 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
Vector3d a2 = plane.add(start);
Vector3d b2 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
Vector3d a3 = plane.add(start);
Vector3d b3 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
Vector3d a4 = plane.add(start);
Vector3d b4 = plane.add(end);
plane = plane.scale(1 / 2f);
Vector3d a1 = plane.add(start);
Vector3d b1 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
Vector3d a2 = plane.add(start);
Vector3d b2 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
Vector3d a3 = plane.add(start);
Vector3d b3 = plane.add(end);
plane = VecHelper.rotate(plane, -90, axis);
Vector3d a4 = plane.add(start);
Vector3d b4 = plane.add(end);
VecBuffer buffer = VecBuffer.allocate(Formats.UNLIT_MODEL.getStride() * 8);
float minU;
float maxU;
float minV;
float maxV;
float minU;
float maxU;
float minV;
float maxV;
if (USE_ATLAS) {
TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.getSprite();
minU = sprite.getU0();
maxU = sprite.getU1();
minV = sprite.getV0();
maxV = sprite.getV1();
} else {
minU = minV = 0;
maxU = maxV = 1;
}
if (USE_ATLAS) {
TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.getSprite();
minU = sprite.getU0();
maxU = sprite.getU1();
minV = sprite.getV0();
maxV = sprite.getV1();
} else {
minU = minV = 0;
maxU = maxV = 1;
// pos normal uv
// inside quad
buffer.putVec3((float) a1.x, (float) a1.y, (float) a1.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(maxU, minV);
buffer.putVec3((float) a2.x, (float) a2.y, (float) a2.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(maxU, maxV);
buffer.putVec3((float) a3.x, (float) a3.y, (float) a3.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(minU, maxV);
buffer.putVec3((float) a4.x, (float) a4.y, (float) a4.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(minU, minV);
// outside quad
buffer.putVec3((float) b4.x, (float) b4.y, (float) b4.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(minU, minV);
buffer.putVec3((float) b3.x, (float) b3.y, (float) b3.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(minU, maxV);
buffer.putVec3((float) b2.x, (float) b2.y, (float) b2.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(maxU, maxV);
buffer.putVec3((float) b1.x, (float) b1.y, (float) b1.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(maxU, minV);
}
// pos normal uv
// inside quad
buffer.putVec3((float) a1.x, (float) a1.y, (float) a1.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(maxU, minV);
buffer.putVec3((float) a2.x, (float) a2.y, (float) a2.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(maxU, maxV);
buffer.putVec3((float) a3.x, (float) a3.y, (float) a3.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(minU, maxV);
buffer.putVec3((float) a4.x, (float) a4.y, (float) a4.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(minU, minV);
// outside quad
buffer.putVec3((float) b4.x, (float) b4.y, (float) b4.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(minU, minV);
buffer.putVec3((float) b3.x, (float) b3.y, (float) b3.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(minU, maxV);
buffer.putVec3((float) b2.x, (float) b2.y, (float) b2.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(maxU, maxV);
buffer.putVec3((float) b1.x, (float) b1.y, (float) b1.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(maxU, minV);
@Override
public int vertexCount() {
return 8;
}
buffer.rewind();
@Override
public VertexFormat format() {
return Formats.UNLIT_MODEL;
}
return IndexedModel.fromSequentialQuads(Formats.UNLIT_MODEL, buffer.unwrap(), 8);
@Override
public ElementBuffer createEBO() {
return QuadConverter.getInstance()
.quads2Tris(2);
}
}
}

View file

@ -1,12 +1,12 @@
package com.simibubi.create.content.contraptions.components.structureMovement.glue;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.matrix.MatrixStack.Entry;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.client.Minecraft;
@ -69,7 +69,7 @@ public class SuperGlueRenderer extends EntityRenderer<SuperGlueEntity> {
Direction face = entity.getFacingDirection();
ms.pushPose();
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.rotateY(AngleHelper.horizontalAngleNew(face))
.rotateX(AngleHelper.verticalAngle(face));
Entry peek = ms.last();

View file

@ -4,7 +4,7 @@ import java.util.Arrays;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.instancing.ConditionalInstance;
import com.jozufozu.flywheel.core.instancing.GroupInstance;
import com.jozufozu.flywheel.core.instancing.SelectInstance;

View file

@ -1,7 +1,8 @@
package com.simibubi.create.content.contraptions.components.structureMovement.pulley;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyTileEntity;
@ -20,11 +21,15 @@ public class HosePulleyInstance extends AbstractPulleyInstance {
}
protected Instancer<OrientedData> getMagnetModel() {
return getOrientedMaterial().getModel(AllBlockPartials.HOSE_MAGNET, blockState);
return materialManager.defaultCutout()
.material(Materials.ORIENTED)
.getModel(AllBlockPartials.HOSE_MAGNET, blockState);
}
protected Instancer<OrientedData> getHalfMagnetModel() {
return getOrientedMaterial().getModel(AllBlockPartials.HOSE_HALF_MAGNET, blockState);
return materialManager.defaultCutout()
.material(Materials.ORIENTED)
.getModel(AllBlockPartials.HOSE_HALF_MAGNET, blockState);
}
protected Instancer<OrientedData> getCoilModel() {

View file

@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.pu
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.materials.OrientedData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.AllBlocks;

View file

@ -1,6 +1,6 @@
package com.simibubi.create.content.contraptions.components.structureMovement.render;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext;
import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld;

View file

@ -0,0 +1,25 @@
package com.simibubi.create.content.contraptions.components.structureMovement.render;
import com.jozufozu.flywheel.backend.material.MaterialGroup;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.backend.state.IRenderState;
public class ContraptionGroup<P extends ContraptionProgram> extends MaterialGroup<P> {
private final RenderedContraption contraption;
public ContraptionGroup(RenderedContraption contraption, MaterialManager<P> owner, IRenderState state) {
super(owner, state);
this.contraption = contraption;
}
@Override
public void setup(P program) {
contraption.setup(program);
}
public static <P extends ContraptionProgram> MaterialManager.GroupFactory<P> forContraption(RenderedContraption c) {
return (materialManager, state) -> new ContraptionGroup<>(c, materialManager, state);
}
}

View file

@ -7,7 +7,7 @@ import javax.annotation.Nullable;
import org.apache.commons.lang3.tuple.Pair;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager;
import com.simibubi.create.AllMovementBehaviours;
import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour;

View file

@ -1,22 +0,0 @@
package com.simibubi.create.content.contraptions.components.structureMovement.render;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.instancing.MaterialRenderer;
import com.jozufozu.flywheel.core.WorldContext;
import com.jozufozu.flywheel.core.shader.IProgramCallback;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.util.math.vector.Matrix4f;
public class ContraptionMaterialManager extends MaterialManager<ContraptionProgram> {
public ContraptionMaterialManager(WorldContext<ContraptionProgram> context) {
super(context);
}
@Override
public void render(RenderType layer, Matrix4f viewProjection, double camX, double camY, double camZ, IProgramCallback<ContraptionProgram> callback) {
for (MaterialRenderer<ContraptionProgram> material : atlasRenderers) {
material.render(layer, viewProjection, camX, camY, camZ, callback);
}
}
}

View file

@ -5,9 +5,6 @@ import static org.lwjgl.opengl.GL11.glBindTexture;
import static org.lwjgl.opengl.GL11.glDisable;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL12.GL_TEXTURE_3D;
import static org.lwjgl.opengl.GL13.GL_TEXTURE0;
import static org.lwjgl.opengl.GL13.GL_TEXTURE4;
import static org.lwjgl.opengl.GL13.glActiveTexture;
import static org.lwjgl.opengl.GL20.glUseProgram;
import java.util.List;
@ -16,10 +13,13 @@ import java.util.Random;
import org.apache.commons.lang3.tuple.Pair;
import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.gl.GlTextureUnit;
import com.jozufozu.flywheel.backend.state.RenderLayer;
import com.jozufozu.flywheel.event.BeginFrameEvent;
import com.jozufozu.flywheel.event.GatherContextEvent;
import com.jozufozu.flywheel.event.ReloadRenderersEvent;
import com.jozufozu.flywheel.event.RenderLayerEvent;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllMovementBehaviours;
import com.simibubi.create.CreateClient;
@ -35,7 +35,6 @@ import com.simibubi.create.foundation.render.CreateContexts;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.render.SuperByteBufferCache;
import com.simibubi.create.foundation.render.TileEntityRenderHelper;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
@ -115,7 +114,7 @@ public class ContraptionRenderDispatcher {
layer.setupRenderState();
glEnable(GL_TEXTURE_3D);
glActiveTexture(GL_TEXTURE4); // the shaders expect light volumes to be in texture 4
GlTextureUnit.T4.makeActive(); // the shaders expect light volumes to be in texture 4
if (Backend.getInstance().canUseVBOs()) {
ContraptionProgram structureShader = CreateContexts.STRUCTURE.getProgram(AllProgramSpecs.STRUCTURE);
@ -130,15 +129,18 @@ public class ContraptionRenderDispatcher {
}
if (Backend.getInstance().canUseInstancing()) {
for (RenderedContraption renderer : RENDERERS.values()) {
renderer.materialManager.render(layer, event.viewProjection, event.camX, event.camY, event.camZ, renderer::setup);
RenderLayer renderLayer = RenderLayer.fromRenderType(layer);
if (renderLayer != null) {
for (RenderedContraption renderer : RENDERERS.values()) {
renderer.materialManager.render(renderLayer, event.viewProjection, event.camX, event.camY, event.camZ);
}
}
}
glBindTexture(GL_TEXTURE_3D, 0);
layer.clearRenderState();
glDisable(GL_TEXTURE_3D);
glActiveTexture(GL_TEXTURE0);
GlTextureUnit.T0.makeActive();
glUseProgram(0);
}
@ -236,7 +238,7 @@ public class ContraptionRenderDispatcher {
MatrixStack m = matrices.contraptionStack;
m.pushPose();
MatrixStacker.of(m)
MatrixTransformStack.of(m)
.translate(blockInfo.pos);
MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state);

View file

@ -13,7 +13,8 @@ import com.jozufozu.flywheel.backend.Backend;
import com.jozufozu.flywheel.backend.gl.attrib.CommonAttributes;
import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat;
import com.jozufozu.flywheel.backend.instancing.IInstanceRendered;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialGroup;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.backend.model.ArrayModelRenderer;
import com.jozufozu.flywheel.backend.model.BufferedModel;
import com.jozufozu.flywheel.backend.model.IndexedModel;
@ -60,7 +61,10 @@ public class RenderedContraption extends ContraptionWorldHolder {
public RenderedContraption(Contraption contraption, PlacementSimulationWorld renderWorld) {
super(contraption, renderWorld);
this.lighter = contraption.makeLighter();
this.materialManager = new ContraptionMaterialManager(CreateContexts.CWORLD);
this.materialManager = MaterialManager.builder(CreateContexts.CWORLD)
.setGroupFactory(ContraptionGroup.forContraption(this))
.setIgnoreOriginCoordinate(true)
.build();
this.kinetics = new ContraptionInstanceManager(this, materialManager);
buildLayers();

View file

@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.tr
import static net.minecraft.util.math.MathHelper.lerp;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.simibubi.create.AllBlockPartials;
@ -13,7 +14,6 @@ import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.ColorHelper;
import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.block.BlockState;
@ -80,7 +80,7 @@ public class CouplingRenderer {
double connectorPitch = Math.atan2(endPointDiff.y, endPointDiff.multiply(1, 0, 1)
.length()) * 180 / Math.PI;
MatrixStacker msr = MatrixStacker.of(ms);
MatrixTransformStack msr = MatrixTransformStack.of(ms);
carts.forEachWithContext((cart, isFirst) -> {
CartEndpoint cartTransform = transforms.get(isFirst);

View file

@ -3,6 +3,7 @@ package com.simibubi.create.content.contraptions.fluids;
import static net.minecraft.state.properties.BlockStateProperties.LEVEL_HONEY;
import static net.minecraft.state.properties.BlockStateProperties.WATERLOGGED;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
@ -16,7 +17,6 @@ import com.simibubi.create.foundation.utility.BlockFace;
import net.minecraft.block.BlockState;
import net.minecraft.block.FlowingFluidBlock;
import net.minecraft.entity.LivingEntity;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.FluidState;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.ItemStack;
@ -40,9 +40,16 @@ import net.minecraftforge.fluids.capability.templates.FluidTank;
public class OpenEndedPipe extends FlowSource {
World world;
BlockPos pos;
AxisAlignedBB aoe;
private static final List<IEffectHandler> EFFECT_HANDLERS = new ArrayList<>();
static {
registerEffectHandler(new PotionEffectHandler());
registerEffectHandler(new MilkEffectHandler());
}
private World world;
private BlockPos pos;
private AxisAlignedBB aoe;
private OpenEndFluidHandler fluidHandler;
private BlockPos outputPos;
@ -61,11 +68,57 @@ public class OpenEndedPipe extends FlowSource {
aoe = aoe.expandTowards(0, -1, 0);
}
public static void registerEffectHandler(IEffectHandler handler) {
EFFECT_HANDLERS.add(handler);
}
public World getWorld() {
return world;
}
public BlockPos getPos() {
return pos;
}
public BlockPos getOutputPos() {
return outputPos;
}
public AxisAlignedBB getAOE() {
return aoe;
}
@Override
public void manageSource(World world) {
this.world = world;
}
@Override
public LazyOptional<IFluidHandler> provideHandler() {
return LazyOptional.of(() -> fluidHandler);
}
@Override
public boolean isEndpoint() {
return true;
}
public CompoundNBT serializeNBT() {
CompoundNBT compound = new CompoundNBT();
fluidHandler.writeToNBT(compound);
compound.putBoolean("Pulling", wasPulling);
compound.put("Location", location.serializeNBT());
return compound;
}
public static OpenEndedPipe fromNBT(CompoundNBT compound, BlockPos tilePos) {
BlockFace fromNBT = BlockFace.fromNBT(compound.getCompound("Location"));
OpenEndedPipe oep = new OpenEndedPipe(new BlockFace(tilePos, fromNBT.getFace()));
oep.fluidHandler.readFromNBT(compound);
oep.wasPulling = compound.getBoolean("Pulling");
return oep;
}
private FluidStack removeFluidFromSpace(boolean simulate) {
FluidStack empty = FluidStack.EMPTY;
if (world == null)
@ -125,7 +178,7 @@ public class OpenEndedPipe extends FlowSource {
return false;
if (!FluidHelper.hasBlockState(fluid.getFluid())) {
if (!simulate)
applyEffects(world, fluid);
applyEffects(fluid);
return true;
}
@ -167,78 +220,23 @@ public class OpenEndedPipe extends FlowSource {
return true;
}
private boolean canApplyEffects(World world, FluidStack fluid) {
Fluid fluidType = fluid.getFluid();
if (fluidType.isSame(AllFluids.POTION.get()))
return true;
if (Tags.Fluids.MILK.contains(fluidType))
return true;
private boolean canApplyEffects(FluidStack fluid) {
for (IEffectHandler handler : EFFECT_HANDLERS) {
if (handler.canApplyEffects(this, fluid)) {
return true;
}
}
return false;
}
private void applyEffects(World world, FluidStack fluid) {
Fluid fluidType = fluid.getFluid();
if (fluidType.isSame(AllFluids.POTION.get()))
applyPotionEffects(world, fluid);
if (Tags.Fluids.MILK.contains(fluidType)) {
if (world.getGameTime() % 5 != 0)
return;
List<LivingEntity> list =
world.getEntitiesOfClass(LivingEntity.class, aoe, LivingEntity::isAffectedByPotions);
ItemStack curativeItem = new ItemStack(Items.MILK_BUCKET);
for (LivingEntity livingentity : list)
livingentity.curePotionEffects(curativeItem);
}
}
private void applyPotionEffects(World world, FluidStack fluid) {
if (cachedFluid == null || cachedEffects == null || !fluid.isFluidEqual(cachedFluid)) {
FluidStack copy = fluid.copy();
copy.setAmount(250);
ItemStack bottle = PotionFluidHandler.fillBottle(new ItemStack(Items.GLASS_BOTTLE), fluid);
cachedEffects = PotionUtils.getMobEffects(bottle);
}
if (cachedEffects.isEmpty())
return;
List<LivingEntity> list =
world.getEntitiesOfClass(LivingEntity.class, aoe, LivingEntity::isAffectedByPotions);
for (LivingEntity livingentity : list) {
for (EffectInstance effectinstance : cachedEffects) {
Effect effect = effectinstance.getEffect();
if (effect.isInstantenous()) {
effect.applyInstantenousEffect(null, null, livingentity, effectinstance.getAmplifier(), 0.5D);
continue;
}
livingentity.addEffect(new EffectInstance(effectinstance));
private void applyEffects(FluidStack fluid) {
for (IEffectHandler handler : EFFECT_HANDLERS) {
if (handler.canApplyEffects(this, fluid)) {
handler.applyEffects(this, fluid);
}
}
}
@Override
public LazyOptional<IFluidHandler> provideHandler() {
return LazyOptional.of(() -> fluidHandler);
}
public CompoundNBT serializeNBT() {
CompoundNBT compound = new CompoundNBT();
fluidHandler.writeToNBT(compound);
compound.putBoolean("Pulling", wasPulling);
compound.put("Location", location.serializeNBT());
return compound;
}
public static OpenEndedPipe fromNBT(CompoundNBT compound, BlockPos tilePos) {
BlockFace fromNBT = BlockFace.fromNBT(compound.getCompound("Location"));
OpenEndedPipe oep = new OpenEndedPipe(new BlockFace(tilePos, fromNBT.getFace()));
oep.fluidHandler.readFromNBT(compound);
oep.wasPulling = compound.getBoolean("Pulling");
return oep;
}
private class OpenEndFluidHandler extends FluidTank {
public OpenEndFluidHandler() {
@ -262,7 +260,7 @@ public class OpenEndedPipe extends FlowSource {
setFluid(FluidStack.EMPTY);
if (wasPulling)
wasPulling = false;
if (canApplyEffects(world, resource))
if (canApplyEffects(resource))
resource = FluidHelper.copyStackWithAmount(resource, 1);
int fill = super.fill(resource, action);
@ -326,9 +324,62 @@ public class OpenEndedPipe extends FlowSource {
}
@Override
public boolean isEndpoint() {
return true;
public interface IEffectHandler {
boolean canApplyEffects(OpenEndedPipe pipe, FluidStack fluid);
void applyEffects(OpenEndedPipe pipe, FluidStack fluid);
}
public static class PotionEffectHandler implements IEffectHandler {
@Override
public boolean canApplyEffects(OpenEndedPipe pipe, FluidStack fluid) {
return fluid.getFluid().isSame(AllFluids.POTION.get());
}
@Override
public void applyEffects(OpenEndedPipe pipe, FluidStack fluid) {
if (pipe.cachedFluid == null || pipe.cachedEffects == null || !fluid.isFluidEqual(pipe.cachedFluid)) {
FluidStack copy = fluid.copy();
copy.setAmount(250);
ItemStack bottle = PotionFluidHandler.fillBottle(new ItemStack(Items.GLASS_BOTTLE), fluid);
pipe.cachedEffects = PotionUtils.getMobEffects(bottle);
}
if (pipe.cachedEffects.isEmpty())
return;
List<LivingEntity> list =
pipe.getWorld().getEntitiesOfClass(LivingEntity.class, pipe.getAOE(), LivingEntity::isAffectedByPotions);
for (LivingEntity livingentity : list) {
for (EffectInstance effectinstance : pipe.cachedEffects) {
Effect effect = effectinstance.getEffect();
if (effect.isInstantenous()) {
effect.applyInstantenousEffect(null, null, livingentity, effectinstance.getAmplifier(), 0.5D);
} else {
livingentity.addEffect(new EffectInstance(effectinstance));
}
}
}
}
}
public static class MilkEffectHandler implements IEffectHandler {
@Override
public boolean canApplyEffects(OpenEndedPipe pipe, FluidStack fluid) {
return Tags.Fluids.MILK.contains(fluid.getFluid());
}
@Override
public void applyEffects(OpenEndedPipe pipe, FluidStack fluid) {
World world = pipe.getWorld();
if (world.getGameTime() % 5 != 0)
return;
List<LivingEntity> list =
world.getEntitiesOfClass(LivingEntity.class, pipe.getAOE(), LivingEntity::isAffectedByPotions);
ItemStack curativeItem = new ItemStack(Items.MILK_BUCKET);
for (LivingEntity livingentity : list)
livingentity.curePotionEffects(curativeItem);
}
}
}

View file

@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.fluids;
import static net.minecraft.state.properties.BlockStateProperties.FACING;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.RotatingData;

View file

@ -1,5 +1,6 @@
package com.simibubi.create.content.contraptions.fluids;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
@ -7,7 +8,6 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.foundation.render.PartialBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.IRenderTypeBuffer;
@ -37,7 +37,7 @@ public class PumpRenderer extends KineticTileEntityRenderer {
ms.pushPose();
SuperByteBuffer arrow = PartialBufferer.get(AllBlockPartials.MECHANICAL_PUMP_ARROW, blockState);
Direction direction = blockState.getValue(PumpBlock.FACING);
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.centre()
.rotateY(AngleHelper.horizontalAngle(direction) + 180)
.rotateX(-AngleHelper.verticalAngle(direction) - 90)

View file

@ -13,6 +13,7 @@ import net.minecraft.item.MilkBucketItem;
import net.minecraft.potion.PotionUtils;
import net.minecraft.potion.Potions;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeMod;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
@ -104,8 +105,7 @@ public class GenericItemFilling {
}
private static boolean canFillBucketInternally(FluidStack availableFluid) {
return availableFluid.getFluid()
.isSame(AllFluids.MILK.get().getFlowing());
return false;
}
public static ItemStack fillItem(World world, int requiredAmount, ItemStack stack, FluidStack availableFluid) {
@ -123,12 +123,6 @@ public class GenericItemFilling {
return fillBottle;
}
if (stack.getItem() == Items.BUCKET && canFillBucketInternally(toFill)) {
ItemStack filledBucket = new ItemStack(Items.MILK_BUCKET);
stack.shrink(1);
return filledBucket;
}
ItemStack split = stack.copy();
split.setCount(1);
LazyOptional<IFluidHandlerItem> capability =

View file

@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.fluids.actors;
import java.util.Random;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.content.contraptions.processing.EmptyingByBasin;
import com.simibubi.create.content.contraptions.relays.belt.BeltHelper;
@ -10,7 +11,6 @@ import com.simibubi.create.foundation.fluid.FluidRenderer;
import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour;
import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment;
import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer;
import com.simibubi.create.foundation.utility.MatrixStacker;
import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.client.Minecraft;
@ -48,7 +48,7 @@ public class ItemDrainRenderer extends SmartTileEntityRenderer<ItemDrainTileEnti
if (transported == null)
return;
MatrixStacker msr = MatrixStacker.of(ms);
MatrixTransformStack msr = MatrixTransformStack.of(ms);
Vector3d itemPosition = VecHelper.getCenterOf(te.getBlockPos());
Direction insertedFrom = transported.insertedFrom;

View file

@ -1,8 +1,10 @@
package com.simibubi.create.content.contraptions.fluids.pipes;
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
import com.jozufozu.flywheel.backend.instancing.MaterialManager;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.Materials;
import com.jozufozu.flywheel.core.materials.ModelData;
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
@ -10,7 +12,6 @@ import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
import com.simibubi.create.foundation.utility.AngleHelper;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.MatrixStacker;
import net.minecraft.util.Direction;
import net.minecraft.util.math.MathHelper;
@ -37,7 +38,9 @@ public class FluidValveInstance extends ShaftInstance implements IDynamicInstanc
boolean twist = pipeAxis.isHorizontal() && shaftAxis == Direction.Axis.Z || pipeAxis.isVertical();
pointerRotationOffset = twist ? 90 : 0;
pointer = materialManager.getTransformMaterial().getModel(AllBlockPartials.FLUID_VALVE_POINTER, blockState).createInstance();
pointer = materialManager.defaultSolid()
.material(Materials.TRANSFORMED)
.getModel(AllBlockPartials.FLUID_VALVE_POINTER, blockState).createInstance();
transformPointer((FluidValveTileEntity) tile);
}
@ -56,7 +59,7 @@ public class FluidValveInstance extends ShaftInstance implements IDynamicInstanc
float pointerRotation = MathHelper.lerp(valve.pointer.getValue(AnimationTickHolder.getPartialTicks()), 0, -90);
MatrixStack ms = new MatrixStack();
MatrixStacker.of(ms)
MatrixTransformStack.of(ms)
.translate(getInstancePosition())
.centre()
.rotateY(yRot)

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