Down the Checklist, Part III

- Contraptions no-damage ticks after relocation now get sent to other players
- Fixed signal overlay rendering twice when ctrl is held
- The track system now sends checksums and id lists to prevent de-syncs after incremental changes
- Fixed pig spawner in blaze burner scene
- Fixed trains not processing graph migrations when graph was not present yet
- Fixed previous train name in a station not being serialised
- Fixed z-fighting between bogeys and adjacent blocks
- Added ponder scenes for the Train Track
- Fixed flywheel item model
- Added flywheel tooltip
- Display Board touchups
This commit is contained in:
simibubi 2022-06-23 03:26:16 +02:00
parent dc20f7091c
commit d11fd6dc48
47 changed files with 1435 additions and 440 deletions

View file

@ -559,22 +559,22 @@ bf2b0310500213ff853c748c236eb5d01f61658e assets/create/blockstates/yellow_toolbo
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json f85edc574ee6de0de7693ffb031266643db6724a assets/create/lang/en_ud.json
57a2f5cfc09aac190e97fb9f2ca42b304fab5680 assets/create/lang/en_us.json 2fd1ef9375af6d068257f31cfc5e708f122d8360 assets/create/lang/en_us.json
5dbd68efd854c32656011d3c3cd120a593a19bf8 assets/create/lang/unfinished/de_de.json 11c5a3201a3c15c342c9f68d33ca460d2f1fde68 assets/create/lang/unfinished/de_de.json
7be6eb18aef39f3f8221392653a3882a627233dd assets/create/lang/unfinished/es_cl.json ba66d36b4a9a67a8f0e826aa9c3fb3a31d12959f assets/create/lang/unfinished/es_cl.json
ecde05c35a44688bde60f641e7072b634c9e1d5b assets/create/lang/unfinished/es_es.json 704a322cc044ca04c719a1a08b2321ded2489ef6 assets/create/lang/unfinished/es_es.json
dbbcf41cd1f79d7c2507219e0dc2b31638084299 assets/create/lang/unfinished/fr_fr.json 6a3d4587e6b0e245462630acad6940f3349346bd assets/create/lang/unfinished/fr_fr.json
6afdfa1b7b94bc00b2ce9471d88290c44077a66f assets/create/lang/unfinished/it_it.json 9348d8d8a4d74e550f225764bd76a24293cf95ef assets/create/lang/unfinished/it_it.json
18327c2775e14b3f9963718851b96a38f0c1da5b assets/create/lang/unfinished/ja_jp.json fc4faa5359f05cce4b940635029def93a0a3f1d5 assets/create/lang/unfinished/ja_jp.json
71b6e7609551a6c1dcd74904ec08b4658e480593 assets/create/lang/unfinished/ko_kr.json 832b57bcb0bf7fc9e81c52e32f7042d7c94bc968 assets/create/lang/unfinished/ko_kr.json
3d68851099b7a3da153b5348122554a868942274 assets/create/lang/unfinished/nl_nl.json 5ac1987c570fd90bf2ef57cbfe12bb4379c9c779 assets/create/lang/unfinished/nl_nl.json
492b259e69a13d91e092f81ad2629ab0db9d0340 assets/create/lang/unfinished/pl_pl.json fd78059dc58f805710e83fa5446ef084fc06734c assets/create/lang/unfinished/pl_pl.json
13abb3643e0341ace3f95074215fe3d37482c74b assets/create/lang/unfinished/pt_br.json 22965c458689766a8d23e1bd5f957b4e2f4eb9b2 assets/create/lang/unfinished/pt_br.json
273c495ef88363bc685d94e80b9bd09c4fe5cd16 assets/create/lang/unfinished/pt_pt.json 06e4ab83c9da087ea64e55706a471cd2ba99c11e assets/create/lang/unfinished/pt_pt.json
21c869ff5d2f076aa135c30a8c6de32cfd3529b0 assets/create/lang/unfinished/ro_ro.json 4d3f2a22c68b35bd8a20ce8d2b7f411bc388db84 assets/create/lang/unfinished/ro_ro.json
0a3f87d04dd6bd672039537df9710ce12ea84028 assets/create/lang/unfinished/ru_ru.json fb2c526a98c7f0af30b4f62acad302ea2ea82580 assets/create/lang/unfinished/ru_ru.json
f91a984ecda39e0dfdab621467289cfd48ad90de assets/create/lang/unfinished/zh_cn.json e0fbf7132c91fbce3dd42559518f43ef965c45e8 assets/create/lang/unfinished/zh_cn.json
19c9edd37eb2f911a60f815ff699766a6b5127a7 assets/create/lang/unfinished/zh_tw.json b37921c2b8d6320d17f6070ac5a426f3fd014784 assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json

View file

@ -1953,9 +1953,9 @@
"block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
"item.create.creative_blaze_cake.tooltip": "CREATIVE CAKE", "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.summary": "A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "When Used",
"item.create.creative_blaze_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.behaviour1": "_Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "CONTROLLER RAIL", "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_.", "block.create.controller_rail.tooltip.summary": "A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",
@ -2003,6 +2003,11 @@
"item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics",
"item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", "item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.flywheel.tooltip": "FLYWHEEL",
"block.create.flywheel.tooltip.summary": "_Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "Starts spinning.",
"item.create.diving_boots.tooltip": "DIVING BOOTS", "item.create.diving_boots.tooltip": "DIVING BOOTS",
"item.create.diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.", "item.create.diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.",
"item.create.diving_boots.tooltip.condition1": "When Worn", "item.create.diving_boots.tooltip.condition1": "When Worn",
@ -2632,6 +2637,16 @@
"create.ponder.piston_pole.text_1": "Without attached Poles, a Mechanical Piston cannot move", "create.ponder.piston_pole.text_1": "Without attached Poles, a Mechanical Piston cannot move",
"create.ponder.piston_pole.text_2": "The Length of pole added at its back determines the Extension Range", "create.ponder.piston_pole.text_2": "The Length of pole added at its back determines the Extension Range",
"create.ponder.placement.header": "Placing Train Tracks",
"create.ponder.placement.text_1": "A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "Then place or select a second track",
"create.ponder.placement.text_4": "Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "Contraption Fluid Exchange", "create.ponder.portable_fluid_interface.header": "Contraption Fluid Exchange",
"create.ponder.portable_fluid_interface.text_1": "Fluid Tanks on moving contraptions cannot be accessed by any pipes", "create.ponder.portable_fluid_interface.text_1": "Fluid Tanks on moving contraptions cannot be accessed by any pipes",
"create.ponder.portable_fluid_interface.text_2": "This component can interact with fluid tanks without the need to stop the contraption", "create.ponder.portable_fluid_interface.text_2": "This component can interact with fluid tanks without the need to stop the contraption",
@ -2655,6 +2670,11 @@
"create.ponder.portable_storage_interface_redstone.header": "Redstone Control", "create.ponder.portable_storage_interface_redstone.header": "Redstone Control",
"create.ponder.portable_storage_interface_redstone.text_1": "Redstone power will prevent the stationary interface from engaging", "create.ponder.portable_storage_interface_redstone.text_1": "Redstone power will prevent the stationary interface from engaging",
"create.ponder.portal.header": "Tracks and the Nether",
"create.ponder.portal.text_1": "Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "Controlling signals using the Powered Latch", "create.ponder.powered_latch.header": "Controlling signals using the Powered Latch",
"create.ponder.powered_latch.text_1": "Powered Latches are redstone controllable Levers", "create.ponder.powered_latch.text_1": "Powered Latches are redstone controllable Levers",
"create.ponder.powered_latch.text_2": "Signals at the back switch it on", "create.ponder.powered_latch.text_2": "Signals at the back switch it on",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1177", "_": "Missing Localizations: 1194",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "Wenn platziert und mit kinetischer Energie betrieben", "item.create.copper_backtank.tooltip.condition2": "Wenn platziert und mit kinetischer Energie betrieben",
"item.create.copper_backtank.tooltip.behaviour2": "_Sammelt_ _komprimierte_ _Luft_ mit einer Geschwindigkeit basierend auf der Rotationsgeschwindigkeit.", "item.create.copper_backtank.tooltip.behaviour2": "_Sammelt_ _komprimierte_ _Luft_ mit einer Geschwindigkeit basierend auf der Rotationsgeschwindigkeit.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "TAUCHSCHUHE", "item.create.diving_boots.tooltip": "TAUCHSCHUHE",
"item.create.diving_boots.tooltip.summary": "Ein Paar _schwere_ _Schuhe_, welches es erlaubt, besser auf dem Grund des Ozenas zu reisen.", "item.create.diving_boots.tooltip.summary": "Ein Paar _schwere_ _Schuhe_, welches es erlaubt, besser auf dem Grund des Ozenas zu reisen.",
"item.create.diving_boots.tooltip.condition1": "Wenn getragen", "item.create.diving_boots.tooltip.condition1": "Wenn getragen",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move",
"create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", "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_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_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control",
"create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch",
"create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers",
"create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 827", "_": "Missing Localizations: 844",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "Al colocarlo, y darle Cinética", "item.create.copper_backtank.tooltip.condition2": "Al colocarlo, y darle Cinética",
"item.create.copper_backtank.tooltip.behaviour2": "_Recolecta_ _Aire_ _Comprimido_ a una velocidad dependiente de la velocidad de rotación.", "item.create.copper_backtank.tooltip.behaviour2": "_Recolecta_ _Aire_ _Comprimido_ a una velocidad dependiente de la velocidad de rotación.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "BOTAS DE BUCEO", "item.create.diving_boots.tooltip": "BOTAS DE BUCEO",
"item.create.diving_boots.tooltip.summary": "Un par de _botas_ _pesadas_, permitiendo un mejor recorrido del suelo oceánico.", "item.create.diving_boots.tooltip.summary": "Un par de _botas_ _pesadas_, permitiendo un mejor recorrido del suelo oceánico.",
"item.create.diving_boots.tooltip.condition1": "Al equiparlas", "item.create.diving_boots.tooltip.condition1": "Al equiparlas",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "Sin postes adjuntos, un Pistón Mecanico no se puede mover", "create.ponder.piston_pole.text_1": "Sin postes adjuntos, un Pistón Mecanico no se puede mover",
"create.ponder.piston_pole.text_2": "La longitud del poste agregado en su parte posterior determina el rango de extensión", "create.ponder.piston_pole.text_2": "La longitud del poste agregado en su parte posterior determina el rango de extensión",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "Intercambio de Fluidos en Contrapciones", "create.ponder.portable_fluid_interface.header": "Intercambio de Fluidos en Contrapciones",
"create.ponder.portable_fluid_interface.text_1": "No se puede acceder a los Tanques de Fluido de una Contrapción en movimiento por ninguna tubería", "create.ponder.portable_fluid_interface.text_1": "No se puede acceder a los Tanques de Fluido de una Contrapción en movimiento por ninguna tubería",
"create.ponder.portable_fluid_interface.text_2": "Este componente puede interactuar con los Tanques de Fluidos sin necesidad de detener la contrapción.", "create.ponder.portable_fluid_interface.text_2": "Este componente puede interactuar con los Tanques de Fluidos sin necesidad de detener la contrapción.",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "Control de Redstone", "create.ponder.portable_storage_interface_redstone.header": "Control de Redstone",
"create.ponder.portable_storage_interface_redstone.text_1": "La Redstone evitará que la interfaz estacionaria se active", "create.ponder.portable_storage_interface_redstone.text_1": "La Redstone evitará que la interfaz estacionaria se active",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "Control de señales usando el Cerrojo de Redstone", "create.ponder.powered_latch.header": "Control de señales usando el Cerrojo de Redstone",
"create.ponder.powered_latch.text_1": "Los Cerrojos de Redstone son palancas controlables de Redstone", "create.ponder.powered_latch.text_1": "Los Cerrojos de Redstone son palancas controlables de Redstone",
"create.ponder.powered_latch.text_2": "Las señales en la parte trasera lo encienden", "create.ponder.powered_latch.text_2": "Las señales en la parte trasera lo encienden",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 491", "_": "Missing Localizations: 508",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "Cuando se coloca y es alimentado por cinética", "item.create.copper_backtank.tooltip.condition2": "Cuando se coloca y es alimentado por cinética",
"item.create.copper_backtank.tooltip.behaviour2": "Recoge _aire presurizado_ a un ritmo que depende de la velocidad rotacional.", "item.create.copper_backtank.tooltip.behaviour2": "Recoge _aire presurizado_ a un ritmo que depende de la velocidad rotacional.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "BOTAS DE BUCEO", "item.create.diving_boots.tooltip": "BOTAS DE BUCEO",
"item.create.diving_boots.tooltip.summary": "Un par de _botas_ pesadas, que permiten atravesar mejor el suelo del océano.", "item.create.diving_boots.tooltip.summary": "Un par de _botas_ pesadas, que permiten atravesar mejor el suelo del océano.",
"item.create.diving_boots.tooltip.condition1": "Cuando se llevan puestas", "item.create.diving_boots.tooltip.condition1": "Cuando se llevan puestas",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "Sin las pértigas de extensión unidas, un pistón mecánico no puede moverse", "create.ponder.piston_pole.text_1": "Sin las pértigas de extensión unidas, un pistón mecánico no puede moverse",
"create.ponder.piston_pole.text_2": "La longitud de la pértiga añadida en su parte posterior determina el rango de alcance", "create.ponder.piston_pole.text_2": "La longitud de la pértiga añadida en su parte posterior determina el rango de alcance",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "Interfaz de fluidos portátil", "create.ponder.portable_fluid_interface.header": "Interfaz de fluidos portátil",
"create.ponder.portable_fluid_interface.text_1": "No se puede acceder a los depósitos de fluidos de los artefactos en movimiento por ninguna tubería", "create.ponder.portable_fluid_interface.text_1": "No se puede acceder a los depósitos de fluidos de los artefactos en movimiento por ninguna tubería",
"create.ponder.portable_fluid_interface.text_2": "Este componente puede interactuar con los depósitos de fluidos sin necesidad de detener el artefacto", "create.ponder.portable_fluid_interface.text_2": "Este componente puede interactuar con los depósitos de fluidos sin necesidad de detener el artefacto",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "Interfaz de almacenamiento portátil controlada por redstone", "create.ponder.portable_storage_interface_redstone.header": "Interfaz de almacenamiento portátil controlada por redstone",
"create.ponder.portable_storage_interface_redstone.text_1": "La energía de redstone impedirá que las interfaces de almacenamiento portátil se conecten", "create.ponder.portable_storage_interface_redstone.text_1": "La energía de redstone impedirá que las interfaces de almacenamiento portátil se conecten",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "Controlar señales mediante la palanca motorizada", "create.ponder.powered_latch.header": "Controlar señales mediante la palanca motorizada",
"create.ponder.powered_latch.text_1": "Las palancas motorizadas son palancas controlables por redstone", "create.ponder.powered_latch.text_1": "Las palancas motorizadas son palancas controlables por redstone",
"create.ponder.powered_latch.text_2": "Las señales en la parte trasera la encienden", "create.ponder.powered_latch.text_2": "Las señales en la parte trasera la encienden",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1983", "_": "Missing Localizations: 1996",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1954,9 +1954,9 @@
"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_.", "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_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", "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.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used",
"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.", "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", "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_.", "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "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.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.flywheel.tooltip": "VOLANT D'INERTIE",
"block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.",
"block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche",
"block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.",
"item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", "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.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.condition1": "UNLOCALIZED: When Worn",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move",
"create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", "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_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_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control",
"create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch",
"create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers",
"create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1754", "_": "Missing Localizations: 1767",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1954,9 +1954,9 @@
"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_.", "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_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", "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.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used",
"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.", "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "BINARIO DI CONTROLLO", "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.", "block.create.controller_rail.tooltip.summary": "Un _binario alimentato unidirezionale_ capace di _controllare precisamente_ la _velocità di movimento_ di un carrello da miniera.",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "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.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.flywheel.tooltip": "VOLANO",
"block.create.flywheel.tooltip.summary": "Una grande ruota di metallo per _imbrigliare_ _e_ _stabilizzare_ la forza generata da un _motore_ _collegato_. I volani si collegano ai motori se sono a _1_ _metro_ di distanza e ad un _angolo_ _di_ _90°_ l'uno dall'altro.",
"block.create.flywheel.tooltip.condition1": "Se collegato a un motore in funzione",
"block.create.flywheel.tooltip.behaviour1": "Fornisce la _forza_ _di_ _rotazione_ a una macchina connessa in base alla forza e alla velocità del generatore.",
"item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", "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.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.condition1": "UNLOCALIZED: When Worn",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move",
"create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", "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_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_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control",
"create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch",
"create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers",
"create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 493", "_": "Missing Localizations: 510",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "設置して動力を供給したとき", "item.create.copper_backtank.tooltip.condition2": "設置して動力を供給したとき",
"item.create.copper_backtank.tooltip.behaviour2": "_圧縮空気_を_集めます_。速度は回転速度によって決まります。", "item.create.copper_backtank.tooltip.behaviour2": "_圧縮空気_を_集めます_。速度は回転速度によって決まります。",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "潜水ブーツ", "item.create.diving_boots.tooltip": "潜水ブーツ",
"item.create.diving_boots.tooltip.summary": "海底を歩けるようになる_重いブーツ_。", "item.create.diving_boots.tooltip.summary": "海底を歩けるようになる_重いブーツ_。",
"item.create.diving_boots.tooltip.condition1": "装備したとき", "item.create.diving_boots.tooltip.condition1": "装備したとき",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "ポールが無いとメカニカルピストンは動きません", "create.ponder.piston_pole.text_1": "ポールが無いとメカニカルピストンは動きません",
"create.ponder.piston_pole.text_2": "後ろに付けたポールの長さによって、伸び縮みする長さが決まります", "create.ponder.piston_pole.text_2": "後ろに付けたポールの長さによって、伸び縮みする長さが決まります",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "からくり液体交換", "create.ponder.portable_fluid_interface.header": "からくり液体交換",
"create.ponder.portable_fluid_interface.text_1": "移動しているからくりの液体タンクは、どんなパイプでも出し入れできません", "create.ponder.portable_fluid_interface.text_1": "移動しているからくりの液体タンクは、どんなパイプでも出し入れできません",
"create.ponder.portable_fluid_interface.text_2": "この機械は、からくりをブロックに戻すことなく液体を出し入れできます", "create.ponder.portable_fluid_interface.text_2": "この機械は、からくりをブロックに戻すことなく液体を出し入れできます",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "レッドストーンによる制御", "create.ponder.portable_storage_interface_redstone.header": "レッドストーンによる制御",
"create.ponder.portable_storage_interface_redstone.text_1": "レッドストーン信号を受けている間、設置されたインターフェースは接続を行いません", "create.ponder.portable_storage_interface_redstone.text_1": "レッドストーン信号を受けている間、設置されたインターフェースは接続を行いません",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "パワードラッチによる信号制御", "create.ponder.powered_latch.header": "パワードラッチによる信号制御",
"create.ponder.powered_latch.text_1": "パワードラッチはレッドストーン信号で制御できるレバーです", "create.ponder.powered_latch.text_1": "パワードラッチはレッドストーン信号で制御できるレバーです",
"create.ponder.powered_latch.text_2": "後ろからの信号でオンに", "create.ponder.powered_latch.text_2": "後ろからの信号でオンに",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 493", "_": "Missing Localizations: 510",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "설치되고 동력으로 회전될 때", "item.create.copper_backtank.tooltip.condition2": "설치되고 동력으로 회전될 때",
"item.create.copper_backtank.tooltip.behaviour2": "동력 속도에 따라 _공기_를 _모읍니다_.", "item.create.copper_backtank.tooltip.behaviour2": "동력 속도에 따라 _공기_를 _모읍니다_.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "DIVING BOOTS", "item.create.diving_boots.tooltip": "DIVING BOOTS",
"item.create.diving_boots.tooltip.summary": "해저를 돌아다니기에 적합한 _무거운_ _부츠_ 한 켤레입니다.", "item.create.diving_boots.tooltip.summary": "해저를 돌아다니기에 적합한 _무거운_ _부츠_ 한 켤레입니다.",
"item.create.diving_boots.tooltip.condition1": "착용했을 때", "item.create.diving_boots.tooltip.condition1": "착용했을 때",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "연장 축이 없으면, 기계식 피스톤은 움직일 수 없습니다.", "create.ponder.piston_pole.text_1": "연장 축이 없으면, 기계식 피스톤은 움직일 수 없습니다.",
"create.ponder.piston_pole.text_2": "연장 축의 수가 곧 피스톤이 연장할 수 있는 거리입니다.", "create.ponder.piston_pole.text_2": "연장 축의 수가 곧 피스톤이 연장할 수 있는 거리입니다.",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "구조물 장치의 액체 교환", "create.ponder.portable_fluid_interface.header": "구조물 장치의 액체 교환",
"create.ponder.portable_fluid_interface.text_1": "움직이는 구조물의 액체 탱크는 파이프와 연결되지 않습니다.", "create.ponder.portable_fluid_interface.text_1": "움직이는 구조물의 액체 탱크는 파이프와 연결되지 않습니다.",
"create.ponder.portable_fluid_interface.text_2": "액체 인터페이스는 장치를 멈추지 않아도 탱크와 상호작용할 수 있습니다.", "create.ponder.portable_fluid_interface.text_2": "액체 인터페이스는 장치를 멈추지 않아도 탱크와 상호작용할 수 있습니다.",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "레드스톤 설정", "create.ponder.portable_storage_interface_redstone.header": "레드스톤 설정",
"create.ponder.portable_storage_interface_redstone.text_1": "레드스톤 신호를 받으면 인터페이스가 작동하지 않습니다.", "create.ponder.portable_storage_interface_redstone.text_1": "레드스톤 신호를 받으면 인터페이스가 작동하지 않습니다.",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "레드스톤 걸쇠 사용하기", "create.ponder.powered_latch.header": "레드스톤 걸쇠 사용하기",
"create.ponder.powered_latch.text_1": "레드스톤 걸쇠는 설정 가능한 레버입니다.", "create.ponder.powered_latch.text_1": "레드스톤 걸쇠는 설정 가능한 레버입니다.",
"create.ponder.powered_latch.text_2": "뒤에서 오는 신호는 걸쇠 신호를 키고...", "create.ponder.powered_latch.text_2": "뒤에서 오는 신호는 걸쇠 신호를 키고...",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2327", "_": "Missing Localizations: 2344",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1954,9 +1954,9 @@
"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._", "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_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", "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.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used",
"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.", "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", "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_.", "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "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.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", "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.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.condition1": "UNLOCALIZED: When Worn",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move",
"create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", "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_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_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control",
"create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch",
"create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers",
"create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 866", "_": "Missing Localizations: 883",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "Po postawieniu i zasileniu siłą obrotową", "item.create.copper_backtank.tooltip.condition2": "Po postawieniu i zasileniu siłą obrotową",
"item.create.copper_backtank.tooltip.behaviour2": "_Zbiera_ _sprężone_ _powietrze_, w tempie zależnym od prędkości obrotu.", "item.create.copper_backtank.tooltip.behaviour2": "_Zbiera_ _sprężone_ _powietrze_, w tempie zależnym od prędkości obrotu.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "BUTY DO NURKOWANIA", "item.create.diving_boots.tooltip": "BUTY DO NURKOWANIA",
"item.create.diving_boots.tooltip.summary": "Para _ciężkich_ _butów_, pozwalająca na efektywniejsze _przemierzanie_ _dna_ _oceanu_.", "item.create.diving_boots.tooltip.summary": "Para _ciężkich_ _butów_, pozwalająca na efektywniejsze _przemierzanie_ _dna_ _oceanu_.",
"item.create.diving_boots.tooltip.condition1": "Kiedy na stopach", "item.create.diving_boots.tooltip.condition1": "Kiedy na stopach",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "Bez przyłączonych przedłużeń, mechaniczny tłok nie może się wysunąć", "create.ponder.piston_pole.text_1": "Bez przyłączonych przedłużeń, mechaniczny tłok nie może się wysunąć",
"create.ponder.piston_pole.text_2": "Długość przedłużenia z tyłu ustala maksymalny zasięg tłoka", "create.ponder.piston_pole.text_2": "Długość przedłużenia z tyłu ustala maksymalny zasięg tłoka",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "Przekazywanie cieczy z ruchomych maszyn do stojących bloków", "create.ponder.portable_fluid_interface.header": "Przekazywanie cieczy z ruchomych maszyn do stojących bloków",
"create.ponder.portable_fluid_interface.text_1": "Zwyczajne rury nie mają dostępu do zbiorników z ruchomych maszyn", "create.ponder.portable_fluid_interface.text_1": "Zwyczajne rury nie mają dostępu do zbiorników z ruchomych maszyn",
"create.ponder.portable_fluid_interface.text_2": "Ten blok pozwala na transport cieczy bez potrzeby zatrzymywania maszyny", "create.ponder.portable_fluid_interface.text_2": "Ten blok pozwala na transport cieczy bez potrzeby zatrzymywania maszyny",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "Kontrola Redstonem", "create.ponder.portable_storage_interface_redstone.header": "Kontrola Redstonem",
"create.ponder.portable_storage_interface_redstone.text_1": "Zasilenie Redstonem zapobiegnie połączeniu się interfejsów", "create.ponder.portable_storage_interface_redstone.text_1": "Zasilenie Redstonem zapobiegnie połączeniu się interfejsów",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "Kontrola sygnału z użyciem zaawansowanego zasilanego przełącznika", "create.ponder.powered_latch.header": "Kontrola sygnału z użyciem zaawansowanego zasilanego przełącznika",
"create.ponder.powered_latch.text_1": "Zaawansowane zasilane przełączniki to dźwignie, które można kontrolować przez Redstone", "create.ponder.powered_latch.text_1": "Zaawansowane zasilane przełączniki to dźwignie, które można kontrolować przez Redstone",
"create.ponder.powered_latch.text_2": "Sygnały otrzymane z tyłu włączają je...", "create.ponder.powered_latch.text_2": "Sygnały otrzymane z tyłu włączają je...",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 1360", "_": "Missing Localizations: 1377",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1954,9 +1954,9 @@
"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._", "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_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", "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.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used",
"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.", "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", "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_.", "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "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.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", "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.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.condition1": "UNLOCALIZED: When Worn",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move",
"create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", "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_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_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control",
"create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch",
"create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers",
"create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 2036", "_": "Missing Localizations: 2053",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1954,9 +1954,9 @@
"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._", "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_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", "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.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used",
"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.", "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", "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_.", "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "UNLOCALIZED: When placed, Powered by Kinetics", "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.behaviour2": "UNLOCALIZED: _Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "UNLOCALIZED: DIVING BOOTS", "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.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.condition1": "UNLOCALIZED: When Worn",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move",
"create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "UNLOCALIZED: Contraption Fluid Exchange", "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_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_2": "UNLOCALIZED: This component can interact with fluid tanks without the need to stop the contraption",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control",
"create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch",
"create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers",
"create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 494", "_": "Missing Localizations: 511",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "Când este plasat, Alimentat de Cinetice", "item.create.copper_backtank.tooltip.condition2": "Când este plasat, Alimentat de Cinetice",
"item.create.copper_backtank.tooltip.behaviour2": "_Colectează_ _Presiune de_ _Aer_ într-un ritm depinzând de Viteză de Rotație.", "item.create.copper_backtank.tooltip.behaviour2": "_Colectează_ _Presiune de_ _Aer_ într-un ritm depinzând de Viteză de Rotație.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "BOCANCI DE SCUFUNDARE", "item.create.diving_boots.tooltip": "BOCANCI DE SCUFUNDARE",
"item.create.diving_boots.tooltip.summary": "O pereche de _bocanci_ _grei_, permițând traversare mai bună a fundului Oceanului.", "item.create.diving_boots.tooltip.summary": "O pereche de _bocanci_ _grei_, permițând traversare mai bună a fundului Oceanului.",
"item.create.diving_boots.tooltip.condition1": "Când sunt purtați", "item.create.diving_boots.tooltip.condition1": "Când sunt purtați",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "Fără Brațe atașate, un Piston Mecanic nu se poate mișca", "create.ponder.piston_pole.text_1": "Fără Brațe atașate, un Piston Mecanic nu se poate mișca",
"create.ponder.piston_pole.text_2": "Lungimea unui braț adăugat în spatele lui determină Raza De Extensie", "create.ponder.piston_pole.text_2": "Lungimea unui braț adăugat în spatele lui determină Raza De Extensie",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "Schimb De Fluide în Invenție", "create.ponder.portable_fluid_interface.header": "Schimb De Fluide în Invenție",
"create.ponder.portable_fluid_interface.text_1": "Rezervoarele De Fluid pe invenții mișcătoare nu pot fi accesate de nicio conductă", "create.ponder.portable_fluid_interface.text_1": "Rezervoarele De Fluid pe invenții mișcătoare nu pot fi accesate de nicio conductă",
"create.ponder.portable_fluid_interface.text_2": "Acest component oate interacționa cu rezervoare de fluid fără nevoia de a opri invenția", "create.ponder.portable_fluid_interface.text_2": "Acest component oate interacționa cu rezervoare de fluid fără nevoia de a opri invenția",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "Control Redstone", "create.ponder.portable_storage_interface_redstone.header": "Control Redstone",
"create.ponder.portable_storage_interface_redstone.text_1": "Puterea redstone va preveni interfața staționară de la angajare", "create.ponder.portable_storage_interface_redstone.text_1": "Puterea redstone va preveni interfața staționară de la angajare",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "Controlarea semnalelor folosind Maneta Alimentată", "create.ponder.powered_latch.header": "Controlarea semnalelor folosind Maneta Alimentată",
"create.ponder.powered_latch.text_1": "Manetele Alimentate sunt Manete controlabile cu redstone", "create.ponder.powered_latch.text_1": "Manetele Alimentate sunt Manete controlabile cu redstone",
"create.ponder.powered_latch.text_2": "Semnalele din spate o pornesc", "create.ponder.powered_latch.text_2": "Semnalele din spate o pornesc",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 871", "_": "Missing Localizations: 888",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1954,9 +1954,9 @@
"block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _вставленные_ в этот ящик, будут _аннулированы_.", "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _вставленные_ в этот ящик, будут _аннулированы_.",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", "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.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used",
"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.", "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "КОНТРОЛИРУЮЩАЯ РЕЛЬСА", "block.create.controller_rail.tooltip": "КОНТРОЛИРУЮЩАЯ РЕЛЬСА",
"block.create.controller_rail.tooltip.summary": "_Все-направленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.", "block.create.controller_rail.tooltip.summary": "_Все-направленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "При размещении и питании от кинетической энергии", "item.create.copper_backtank.tooltip.condition2": "При размещении и питании от кинетической энергии",
"item.create.copper_backtank.tooltip.behaviour2": "Собирает и сжимает воздух со скоростью, зависящей от скорости вращения.", "item.create.copper_backtank.tooltip.behaviour2": "Собирает и сжимает воздух со скоростью, зависящей от скорости вращения.",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "БОТИНКИ ДЛЯ ДАЙВИНГА", "item.create.diving_boots.tooltip": "БОТИНКИ ДЛЯ ДАЙВИНГА",
"item.create.diving_boots.tooltip.summary": "Пара _тяжелых_ _ботинок_, позволяющая лучше передвигаться по океанскому дну.", "item.create.diving_boots.tooltip.summary": "Пара _тяжелых_ _ботинок_, позволяющая лучше передвигаться по океанскому дну.",
"item.create.diving_boots.tooltip.condition1": "При ношении", "item.create.diving_boots.tooltip.condition1": "При ношении",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "Без присоединённых Удлинителей, Механический поршень не может двигаться", "create.ponder.piston_pole.text_1": "Без присоединённых Удлинителей, Механический поршень не может двигаться",
"create.ponder.piston_pole.text_2": "Длина стержня, добавленного к его задней части, определяет Диапазон выдвижения.", "create.ponder.piston_pole.text_2": "Длина стержня, добавленного к его задней части, определяет Диапазон выдвижения.",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "Портативном жидкостном интерфейсе на штуковинах", "create.ponder.portable_fluid_interface.header": "Портативном жидкостном интерфейсе на штуковинах",
"create.ponder.portable_fluid_interface.text_1": "Жидкостные баки на движущихся штуковинах не могут быть доступны ни каким трубам", "create.ponder.portable_fluid_interface.text_1": "Жидкостные баки на движущихся штуковинах не могут быть доступны ни каким трубам",
"create.ponder.portable_fluid_interface.text_2": "Этот интерфейс может взаимодействовать с жидкостными баками без необходимости останавливать штуковину", "create.ponder.portable_fluid_interface.text_2": "Этот интерфейс может взаимодействовать с жидкостными баками без необходимости останавливать штуковину",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "Управлении редстоуном", "create.ponder.portable_storage_interface_redstone.header": "Управлении редстоуном",
"create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал предотвратит включение стационарного интерфейса", "create.ponder.portable_storage_interface_redstone.text_1": "Редстоун сигнал предотвратит включение стационарного интерфейса",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "Управлении сигналами при помощи Питаемого рычага", "create.ponder.powered_latch.header": "Управлении сигналами при помощи Питаемого рычага",
"create.ponder.powered_latch.text_1": "Питаемый рычаг - управляемый редстоуном рычаг", "create.ponder.powered_latch.text_1": "Питаемый рычаг - управляемый редстоуном рычаг",
"create.ponder.powered_latch.text_2": "Сигнал сзади включает его", "create.ponder.powered_latch.text_2": "Сигнал сзади включает его",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 491", "_": "Missing Localizations: 508",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "放下并接入动力时", "item.create.copper_backtank.tooltip.condition2": "放下并接入动力时",
"item.create.copper_backtank.tooltip.behaviour2": "基于转速从周围环境中_收集_并_加压空气_", "item.create.copper_backtank.tooltip.behaviour2": "基于转速从周围环境中_收集_并_加压空气_",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "潜水靴", "item.create.diving_boots.tooltip": "潜水靴",
"item.create.diving_boots.tooltip.summary": "一双_沉重的靴子_让穿戴者可以更方便的探索海底。", "item.create.diving_boots.tooltip.summary": "一双_沉重的靴子_让穿戴者可以更方便的探索海底。",
"item.create.diving_boots.tooltip.condition1": "穿在脚上时", "item.create.diving_boots.tooltip.condition1": "穿在脚上时",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "若无相接的活塞杆,动力活塞无法移动其他方块", "create.ponder.piston_pole.text_1": "若无相接的活塞杆,动力活塞无法移动其他方块",
"create.ponder.piston_pole.text_2": "在其背面安装的活塞杆长度,决定了活塞的推动范围", "create.ponder.piston_pole.text_2": "在其背面安装的活塞杆长度,决定了活塞的推动范围",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "装置流体交换", "create.ponder.portable_fluid_interface.header": "装置流体交换",
"create.ponder.portable_fluid_interface.text_1": "管道无法与运动装置内的流体储罐直接交互", "create.ponder.portable_fluid_interface.text_1": "管道无法与运动装置内的流体储罐直接交互",
"create.ponder.portable_fluid_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的流体存储进行交互", "create.ponder.portable_fluid_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的流体存储进行交互",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "红石控制", "create.ponder.portable_storage_interface_redstone.header": "红石控制",
"create.ponder.portable_storage_interface_redstone.text_1": "通入红石信号可以阻止固定侧接口的连接行为", "create.ponder.portable_storage_interface_redstone.text_1": "通入红石信号可以阻止固定侧接口的连接行为",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "使用锁存器控制信号", "create.ponder.powered_latch.header": "使用锁存器控制信号",
"create.ponder.powered_latch.text_1": "锁存器是一种可以用红石信号控制的拉杆", "create.ponder.powered_latch.text_1": "锁存器是一种可以用红石信号控制的拉杆",
"create.ponder.powered_latch.text_2": "后方输入的信号会将其设为开启状态", "create.ponder.powered_latch.text_2": "后方输入的信号会将其设为开启状态",

View file

@ -1,5 +1,5 @@
{ {
"_": "Missing Localizations: 885", "_": "Missing Localizations: 902",
"_": "->------------------------] Game Elements [------------------------<-", "_": "->------------------------] Game Elements [------------------------<-",
@ -1954,9 +1954,9 @@
"block.create.creative_crate.tooltip.behaviour1": "容器將會從虛空中提供_無限量_的標記物品並且任何放置到容器中的物品都會被_送入虛空_", "block.create.creative_crate.tooltip.behaviour1": "容器將會從虛空中提供_無限量_的標記物品並且任何放置到容器中的物品都會被_送入虛空_",
"item.create.creative_blaze_cake.tooltip": "UNLOCALIZED: CREATIVE CAKE", "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.summary": "UNLOCALIZED: A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "UNLOCALIZED: When Used",
"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.", "item.create.creative_blaze_cake.tooltip.behaviour1": "UNLOCALIZED: _Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "控制鐵軌", "block.create.controller_rail.tooltip": "控制鐵軌",
"block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度。", "block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度。",
@ -2004,6 +2004,11 @@
"item.create.copper_backtank.tooltip.condition2": "當放置時,由轉動來補充驅動", "item.create.copper_backtank.tooltip.condition2": "當放置時,由轉動來補充驅動",
"item.create.copper_backtank.tooltip.behaviour2": "旋轉的速度決定收集_壓縮空氣_的速率", "item.create.copper_backtank.tooltip.behaviour2": "旋轉的速度決定收集_壓縮空氣_的速率",
"block.create.flywheel.tooltip": "UNLOCALIZED: FLYWHEEL",
"block.create.flywheel.tooltip.summary": "UNLOCALIZED: _Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "UNLOCALIZED: Starts spinning.",
"item.create.diving_boots.tooltip": "潛水鞋", "item.create.diving_boots.tooltip": "潛水鞋",
"item.create.diving_boots.tooltip.summary": "一雙_沈重的鞋子_提供更好的水下移動", "item.create.diving_boots.tooltip.summary": "一雙_沈重的鞋子_提供更好的水下移動",
"item.create.diving_boots.tooltip.condition1": "當裝備時", "item.create.diving_boots.tooltip.condition1": "當裝備時",
@ -2633,6 +2638,16 @@
"create.ponder.piston_pole.text_1": "若無相接的延長杆,動力活塞無法移動其他方塊", "create.ponder.piston_pole.text_1": "若無相接的延長杆,動力活塞無法移動其他方塊",
"create.ponder.piston_pole.text_2": "在其背面安裝的延長杆長度,決定了活塞的推動範圍", "create.ponder.piston_pole.text_2": "在其背面安裝的延長杆長度,決定了活塞的推動範圍",
"create.ponder.placement.header": "UNLOCALIZED: Placing Train Tracks",
"create.ponder.placement.text_1": "UNLOCALIZED: A new type of rail designed for Train Contraptions",
"create.ponder.placement.text_2": "UNLOCALIZED: To place rows of track in bulk, click on an existing track",
"create.ponder.placement.text_3": "UNLOCALIZED: Then place or select a second track",
"create.ponder.placement.text_4": "UNLOCALIZED: Tracks can also be placed as turns or slopes",
"create.ponder.placement.text_5": "UNLOCALIZED: When connecting, tracks will try to make each turn equally sized",
"create.ponder.placement.text_6": "UNLOCALIZED: Holding the sprint key while connecting...",
"create.ponder.placement.text_7": "UNLOCALIZED: ...will create the longest fitting bend instead",
"create.ponder.placement.text_8": "UNLOCALIZED: Materials in the off-hand will be paved under tracks automatically",
"create.ponder.portable_fluid_interface.header": "移動式液體口", "create.ponder.portable_fluid_interface.header": "移動式液體口",
"create.ponder.portable_fluid_interface.text_1": "任何管道線都無法與移動裝置上的液體罐連接", "create.ponder.portable_fluid_interface.text_1": "任何管道線都無法與移動裝置上的液體罐連接",
"create.ponder.portable_fluid_interface.text_2": "該元件可以與液體罐相互作用,而無需停止裝置", "create.ponder.portable_fluid_interface.text_2": "該元件可以與液體罐相互作用,而無需停止裝置",
@ -2656,6 +2671,11 @@
"create.ponder.portable_storage_interface_redstone.header": "紅石控制", "create.ponder.portable_storage_interface_redstone.header": "紅石控制",
"create.ponder.portable_storage_interface_redstone.text_1": "通入紅石訊號可以阻止固定側介面的連接行為", "create.ponder.portable_storage_interface_redstone.text_1": "通入紅石訊號可以阻止固定側介面的連接行為",
"create.ponder.portal.header": "UNLOCALIZED: Tracks and the Nether",
"create.ponder.portal.text_1": "UNLOCALIZED: Tracks placed up against a nether portal...",
"create.ponder.portal.text_2": "UNLOCALIZED: ...will attempt to create a paired track on the other side",
"create.ponder.portal.text_3": "UNLOCALIZED: Trains on this track are now able to travel across dimensions",
"create.ponder.powered_latch.header": "使用閂鎖器控制訊號", "create.ponder.powered_latch.header": "使用閂鎖器控制訊號",
"create.ponder.powered_latch.text_1": "閂鎖器是一種可以用紅石訊號控制的拉杆", "create.ponder.powered_latch.text_1": "閂鎖器是一種可以用紅石訊號控制的拉杆",
"create.ponder.powered_latch.text_2": "後方輸入的訊號會將其設為開啟狀態", "create.ponder.powered_latch.text_2": "後方輸入的訊號會將其設為開啟狀態",

View file

@ -0,0 +1,38 @@
package com.simibubi.create.content.contraptions.components.structureMovement;
import java.util.function.Supplier;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent.Context;
public class ContraptionRelocationPacket extends SimplePacketBase {
int entityID;
public ContraptionRelocationPacket(int entityID) {
this.entityID = entityID;
}
public ContraptionRelocationPacket(FriendlyByteBuf buffer) {
entityID = buffer.readInt();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeInt(entityID);
}
@Override
public void handle(Supplier<Context> context) {
context.get()
.enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT,
() -> () -> OrientedContraptionEntity.handleRelocationPacket(this)));
context.get()
.setPacketHandled(true);
}
}

View file

@ -22,6 +22,7 @@ import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.Axis;
@ -597,4 +598,10 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity {
return Vec3.ZERO; return Vec3.ZERO;
} }
@OnlyIn(Dist.CLIENT)
public static void handleRelocationPacket(ContraptionRelocationPacket packet) {
if (Minecraft.getInstance().level.getEntity(packet.entityID) instanceof OrientedContraptionEntity oce)
oce.nonDamageTicks = 10;
}
} }

View file

@ -119,8 +119,12 @@ public class GlobalRailwayManager {
// //
public TrackGraph getOrCreateGraph(UUID graphID) { public TrackGraph getOrCreateGraph(UUID graphID, int netId) {
return trackNetworks.computeIfAbsent(graphID, uid -> new TrackGraph(graphID)); return trackNetworks.computeIfAbsent(graphID, uid -> {
TrackGraph trackGraph = new TrackGraph(graphID);
trackGraph.netId = netId;
return trackGraph;
});
} }
public void putGraphWithDefaultGroup(TrackGraph graph) { public void putGraphWithDefaultGroup(TrackGraph graph) {

View file

@ -13,6 +13,7 @@ import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -29,6 +30,7 @@ import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.
import com.simibubi.create.foundation.utility.Color; import com.simibubi.create.foundation.utility.Color;
import com.simibubi.create.foundation.utility.Couple; import com.simibubi.create.foundation.utility.Couple;
import com.simibubi.create.foundation.utility.NBTHelper; import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.foundation.utility.Pair;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@ -41,7 +43,8 @@ import net.minecraft.world.phys.Vec3;
public class TrackGraph { public class TrackGraph {
public static final AtomicInteger netIdGenerator = new AtomicInteger(); public static final AtomicInteger graphNetIdGenerator = new AtomicInteger();
public static final AtomicInteger nodeNetIdGenerator = new AtomicInteger();
public UUID id; public UUID id;
public Color color; public Color color;
@ -54,6 +57,9 @@ public class TrackGraph {
List<TrackEdge> deferredIntersectionUpdates; List<TrackEdge> deferredIntersectionUpdates;
int netId;
int checksum = 0;
public TrackGraph() { public TrackGraph() {
this(UUID.randomUUID()); this(UUID.randomUUID());
} }
@ -66,6 +72,7 @@ public class TrackGraph {
connectionsByNode = new IdentityHashMap<>(); connectionsByNode = new IdentityHashMap<>();
edgePoints = new EdgePointStorage(); edgePoints = new EdgePointStorage();
deferredIntersectionUpdates = new ArrayList<>(); deferredIntersectionUpdates = new ArrayList<>();
netId = nextGraphId();
} }
// //
@ -106,6 +113,7 @@ public class TrackGraph {
} }
public void invalidateBounds() { public void invalidateBounds() {
checksum = 0;
bounds.clear(); bounds.clear();
} }
@ -230,7 +238,11 @@ public class TrackGraph {
} }
public static int nextNodeId() { public static int nextNodeId() {
return netIdGenerator.incrementAndGet(); return nodeNetIdGenerator.incrementAndGet();
}
public static int nextGraphId() {
return graphNetIdGenerator.incrementAndGet();
} }
public void transferAll(TrackGraph toOther) { public void transferAll(TrackGraph toOther) {
@ -267,7 +279,7 @@ public class TrackGraph {
} }
public Set<TrackGraph> findDisconnectedGraphs(@Nullable LevelAccessor level, public Set<TrackGraph> findDisconnectedGraphs(@Nullable LevelAccessor level,
@Nullable Map<Integer, UUID> preAssignedIds) { @Nullable Map<Integer, Pair<Integer, UUID>> splitSubGraphs) {
Set<TrackGraph> dicovered = new HashSet<>(); Set<TrackGraph> dicovered = new HashSet<>();
Set<TrackNodeLocation> vertices = new HashSet<>(nodes.keySet()); Set<TrackNodeLocation> vertices = new HashSet<>(nodes.keySet());
List<TrackNodeLocation> frontier = new ArrayList<>(); List<TrackNodeLocation> frontier = new ArrayList<>();
@ -293,8 +305,11 @@ public class TrackGraph {
frontier.add(connected.getLocation()); frontier.add(connected.getLocation());
if (target != null) { if (target != null) {
if (preAssignedIds != null && preAssignedIds.containsKey(currentNode.getNetId())) if (splitSubGraphs != null && splitSubGraphs.containsKey(currentNode.getNetId())) {
target.setId(preAssignedIds.get(currentNode.getNetId())); Pair<Integer, UUID> ids = splitSubGraphs.get(currentNode.getNetId());
target.setId(ids.getSecond());
target.netId = ids.getFirst();
}
transfer(level, currentNode, target); transfer(level, currentNode, target);
} }
} }
@ -311,6 +326,18 @@ public class TrackGraph {
color = Color.rainbowColor(new Random(id.getLeastSignificantBits()).nextInt()); color = Color.rainbowColor(new Random(id.getLeastSignificantBits()).nextInt());
} }
public void setNetId(int id) {
this.netId = id;
}
public int getChecksum() {
if (checksum == 0)
checksum = nodes.values()
.stream()
.collect(Collectors.summingInt(TrackNode::getNetId));
return checksum;
}
public void transfer(LevelAccessor level, TrackNode node, TrackGraph target) { public void transfer(LevelAccessor level, TrackNode node, TrackGraph target) {
target.addNode(node); target.addNode(node);
target.invalidateBounds(); target.invalidateBounds();

View file

@ -11,12 +11,13 @@ import net.minecraftforge.network.NetworkEvent.Context;
public abstract class TrackGraphPacket extends SimplePacketBase { public abstract class TrackGraphPacket extends SimplePacketBase {
public UUID graphId; public UUID graphId;
public int netId;
public boolean packetDeletesGraph; public boolean packetDeletesGraph;
@Override @Override
public void handle(Supplier<Context> context) { public void handle(Supplier<Context> context) {
context.get() context.get()
.enqueueWork(() -> handle(CreateClient.RAILWAYS, CreateClient.RAILWAYS.getOrCreateGraph(graphId))); .enqueueWork(() -> handle(CreateClient.RAILWAYS, CreateClient.RAILWAYS.getOrCreateGraph(graphId, netId)));
context.get() context.get()
.setPacketHandled(true); .setPacketHandled(true);
} }

View file

@ -0,0 +1,44 @@
package com.simibubi.create.content.logistics.trains;
import java.util.function.Supplier;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.network.NetworkEvent.Context;
public class TrackGraphRequestPacket extends SimplePacketBase {
private int netId;
public TrackGraphRequestPacket(int netId) {
this.netId = netId;
}
public TrackGraphRequestPacket(FriendlyByteBuf buffer) {
netId = buffer.readInt();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeInt(netId);
}
@Override
public void handle(Supplier<Context> context) {
context.get()
.enqueueWork(() -> {
for (TrackGraph trackGraph : Create.RAILWAYS.trackNetworks.values()) {
if (trackGraph.netId == netId) {
Create.RAILWAYS.sync.sendFullGraphTo(trackGraph, context.get()
.getSender());
break;
}
}
});
context.get()
.setPacketHandled(true);
}
}

View file

@ -0,0 +1,83 @@
package com.simibubi.create.content.logistics.trains;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.function.Supplier;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.networking.SimplePacketBase;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.network.NetworkEvent.Context;
public class TrackGraphRollCallPacket extends SimplePacketBase {
int[] ints;
public TrackGraphRollCallPacket() {
GlobalRailwayManager manager = Create.RAILWAYS;
ints = new int[manager.trackNetworks.size() * 2];
int i = 0;
for (TrackGraph trackGraph : manager.trackNetworks.values()) {
ints[i] = trackGraph.netId;
ints[i + 1] = trackGraph.getChecksum();
i += 2;
}
}
public TrackGraphRollCallPacket(FriendlyByteBuf buffer) {
ints = new int[buffer.readVarInt()];
for (int i = 0; i < ints.length; i++)
ints[i] = buffer.readInt();
}
@Override
public void write(FriendlyByteBuf buffer) {
buffer.writeVarInt(ints.length);
for (int i : ints)
buffer.writeInt(i);
}
@Override
public void handle(Supplier<Context> context) {
context.get()
.enqueueWork(() -> {
GlobalRailwayManager manager = Create.RAILWAYS.sided(null);
Set<UUID> unusedIds = new HashSet<>(manager.trackNetworks.keySet());
List<Integer> failedIds = new ArrayList<>();
Map<Integer, UUID> idByNetId = new HashMap<>();
manager.trackNetworks.forEach((uuid, g) -> idByNetId.put(g.netId, uuid));
for (int i = 0; i < ints.length; i += 2) {
UUID uuid = idByNetId.get(ints[i]);
if (uuid == null) {
failedIds.add(ints[i]);
continue;
}
unusedIds.remove(uuid);
TrackGraph trackGraph = manager.trackNetworks.get(uuid);
if (trackGraph.getChecksum() == ints[i + 1])
continue;
Create.LOGGER.warn("Track network: " + uuid.toString()
.substring(0, 6) + " failed its checksum; Requesting refresh");
failedIds.add(ints[i]);
}
for (Integer failed : failedIds)
AllPackets.channel.sendToServer(new TrackGraphRequestPacket(failed));
for (UUID unused : unusedIds)
manager.trackNetworks.remove(unused);
});
context.get()
.setPacketHandled(true);
}
}

View file

@ -24,44 +24,56 @@ import net.minecraftforge.network.PacketDistributor;
public class TrackGraphSync { public class TrackGraphSync {
List<TrackGraphPacket> queuedPackets = new ArrayList<>(); List<TrackGraphPacket> queuedPackets = new ArrayList<>();
int rollCallIn;
public void serverTick() { public void serverTick() {
flushGraphPacket(null); flushGraphPacket();
if (queuedPackets.isEmpty())
return; if (!queuedPackets.isEmpty()) {
for (TrackGraphPacket packet : queuedPackets) { for (TrackGraphPacket packet : queuedPackets) {
if (!packet.packetDeletesGraph && !Create.RAILWAYS.trackNetworks.containsKey(packet.graphId)) if (!packet.packetDeletesGraph && !Create.RAILWAYS.trackNetworks.containsKey(packet.graphId))
continue; continue;
AllPackets.channel.send(PacketDistributor.ALL.noArg(), packet); AllPackets.channel.send(PacketDistributor.ALL.noArg(), packet);
rollCallIn = 3;
} }
queuedPackets.clear(); queuedPackets.clear();
} }
if (rollCallIn <= 0)
return;
rollCallIn--;
if (rollCallIn > 0)
return;
sendRollCall();
}
// //
public void nodeAdded(TrackGraph graph, TrackNode node) { public void nodeAdded(TrackGraph graph, TrackNode node) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
currentGraphSyncPacket.addedNodes.put(node.getNetId(), Pair.of(node.getLocation(), node.getNormal())); currentGraphSyncPacket.addedNodes.put(node.getNetId(), Pair.of(node.getLocation(), node.getNormal()));
} }
public void edgeAdded(TrackGraph graph, TrackNode node1, TrackNode node2, TrackEdge edge) { public void edgeAdded(TrackGraph graph, TrackNode node1, TrackNode node2, TrackEdge edge) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
currentGraphSyncPacket.addedEdges currentGraphSyncPacket.addedEdges
.add(Pair.of(Couple.create(node1.getNetId(), node2.getNetId()), edge.getTurn())); .add(Pair.of(Couple.create(node1.getNetId(), node2.getNetId()), edge.getTurn()));
} }
public void pointAdded(TrackGraph graph, TrackEdgePoint point) { public void pointAdded(TrackGraph graph, TrackEdgePoint point) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
currentGraphSyncPacket.addedEdgePoints.add(point); currentGraphSyncPacket.addedEdgePoints.add(point);
} }
public void pointRemoved(TrackGraph graph, TrackEdgePoint point) { public void pointRemoved(TrackGraph graph, TrackEdgePoint point) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
currentGraphSyncPacket.removedEdgePoints.add(point.getId()); currentGraphSyncPacket.removedEdgePoints.add(point.getId());
} }
public void nodeRemoved(TrackGraph graph, TrackNode node) { public void nodeRemoved(TrackGraph graph, TrackNode node) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
int nodeId = node.getNetId(); int nodeId = node.getNetId();
if (currentGraphSyncPacket.addedNodes.remove(nodeId) == null) if (currentGraphSyncPacket.addedNodes.remove(nodeId) == null)
currentGraphSyncPacket.removedNodes.add(nodeId); currentGraphSyncPacket.removedNodes.add(nodeId);
@ -75,15 +87,15 @@ public class TrackGraphSync {
} }
public void graphSplit(TrackGraph graph, Set<TrackGraph> additional) { public void graphSplit(TrackGraph graph, Set<TrackGraph> additional) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
additional.forEach(rg -> currentGraphSyncPacket.splitSubGraphs.put(rg.nodesById.keySet() additional.forEach(rg -> currentGraphSyncPacket.splitSubGraphs.put(rg.nodesById.keySet()
.stream() .stream()
.findFirst() .findFirst()
.get(), rg.id)); .get(), Pair.of(rg.netId, rg.id)));
} }
public void graphRemoved(TrackGraph graph) { public void graphRemoved(TrackGraph graph) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
currentGraphSyncPacket.packetDeletesGraph = true; currentGraphSyncPacket.packetDeletesGraph = true;
} }
@ -106,18 +118,19 @@ public class TrackGraphSync {
// //
public void edgeDataChanged(TrackGraph graph, TrackNode node1, TrackNode node2, TrackEdge edge) { public void edgeDataChanged(TrackGraph graph, TrackNode node1, TrackNode node2, TrackEdge edge) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
currentGraphSyncPacket.syncEdgeData(node1, node2, edge); currentGraphSyncPacket.syncEdgeData(node1, node2, edge);
} }
public void edgeDataChanged(TrackGraph graph, TrackNode node1, TrackNode node2, TrackEdge edge, TrackEdge edge2) { public void edgeDataChanged(TrackGraph graph, TrackNode node1, TrackNode node2, TrackEdge edge, TrackEdge edge2) {
flushGraphPacket(graph.id); flushGraphPacket(graph);
currentGraphSyncPacket.syncEdgeData(node1, node2, edge); currentGraphSyncPacket.syncEdgeData(node1, node2, edge);
currentGraphSyncPacket.syncEdgeData(node2, node1, edge2); currentGraphSyncPacket.syncEdgeData(node2, node1, edge2);
} }
public void sendFullGraphTo(TrackGraph graph, ServerPlayer player) { public void sendFullGraphTo(TrackGraph graph, ServerPlayer player) {
TrackGraphSyncPacket packet = new TrackGraphSyncPacket(graph.id); TrackGraphSyncPacket packet = new TrackGraphSyncPacket(graph.id, graph.netId);
packet.fullWipe = true;
int sent = 0; int sent = 0;
for (TrackNode node : graph.nodes.values()) { for (TrackNode node : graph.nodes.values()) {
@ -164,9 +177,13 @@ public class TrackGraphSync {
flushAndCreateNew(graph, player, packet); flushAndCreateNew(graph, player, packet);
} }
private void sendRollCall() {
AllPackets.channel.send(PacketDistributor.ALL.noArg(), new TrackGraphRollCallPacket());
}
private TrackGraphSyncPacket flushAndCreateNew(TrackGraph graph, ServerPlayer player, TrackGraphSyncPacket packet) { private TrackGraphSyncPacket flushAndCreateNew(TrackGraph graph, ServerPlayer player, TrackGraphSyncPacket packet) {
AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), packet); AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> player), packet);
packet = new TrackGraphSyncPacket(graph.id); packet = new TrackGraphSyncPacket(graph.id, graph.netId);
return packet; return packet;
} }
@ -174,7 +191,15 @@ public class TrackGraphSync {
private TrackGraphSyncPacket currentGraphSyncPacket; private TrackGraphSyncPacket currentGraphSyncPacket;
private void flushGraphPacket(@Nullable UUID graphId) { private void flushGraphPacket() {
flushGraphPacket(null, 0);
}
private void flushGraphPacket(TrackGraph graph) {
flushGraphPacket(graph.id, graph.netId);
}
private void flushGraphPacket(@Nullable UUID graphId, int netId) {
if (currentGraphSyncPacket != null) { if (currentGraphSyncPacket != null) {
if (currentGraphSyncPacket.graphId.equals(graphId)) if (currentGraphSyncPacket.graphId.equals(graphId))
return; return;
@ -183,7 +208,7 @@ public class TrackGraphSync {
} }
if (graphId != null) if (graphId != null)
currentGraphSyncPacket = new TrackGraphSyncPacket(graphId); currentGraphSyncPacket = new TrackGraphSyncPacket(graphId, netId);
} }
} }

View file

@ -8,6 +8,7 @@ import java.util.Map.Entry;
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import com.simibubi.create.Create;
import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgeData; import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgeData;
import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgePointType; import com.simibubi.create.content.logistics.trains.management.edgePoint.EdgePointType;
import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.TrackEdgePoint; import com.simibubi.create.content.logistics.trains.management.edgePoint.signal.TrackEdgePoint;
@ -25,13 +26,16 @@ public class TrackGraphSyncPacket extends TrackGraphPacket {
List<Integer> removedNodes; List<Integer> removedNodes;
List<TrackEdgePoint> addedEdgePoints; List<TrackEdgePoint> addedEdgePoints;
List<UUID> removedEdgePoints; List<UUID> removedEdgePoints;
Map<Integer, UUID> splitSubGraphs; Map<Integer, Pair<Integer, UUID>> splitSubGraphs;
Map<Couple<Integer>, Pair<Integer, List<UUID>>> updatedEdgeData; Map<Couple<Integer>, Pair<Integer, List<UUID>>> updatedEdgeData;
boolean fullWipe;
static final int NULL_GROUP = 0, PASSIVE_GROUP = 1, GROUP = 2; static final int NULL_GROUP = 0, PASSIVE_GROUP = 1, GROUP = 2;
public TrackGraphSyncPacket(UUID graphId) { public TrackGraphSyncPacket(UUID graphId, int netId) {
this.graphId = graphId; this.graphId = graphId;
this.netId = netId;
addedNodes = new HashMap<>(); addedNodes = new HashMap<>();
addedEdges = new ArrayList<>(); addedEdges = new ArrayList<>();
removedNodes = new ArrayList<>(); removedNodes = new ArrayList<>();
@ -46,7 +50,9 @@ public class TrackGraphSyncPacket extends TrackGraphPacket {
int size; int size;
graphId = buffer.readUUID(); graphId = buffer.readUUID();
netId = buffer.readInt();
packetDeletesGraph = buffer.readBoolean(); packetDeletesGraph = buffer.readBoolean();
fullWipe = buffer.readBoolean();
if (packetDeletesGraph) if (packetDeletesGraph)
return; return;
@ -96,13 +102,15 @@ public class TrackGraphSyncPacket extends TrackGraphPacket {
size = buffer.readVarInt(); size = buffer.readVarInt();
for (int i = 0; i < size; i++) for (int i = 0; i < size; i++)
splitSubGraphs.put(buffer.readVarInt(), buffer.readUUID()); splitSubGraphs.put(buffer.readVarInt(), Pair.of(buffer.readInt(), buffer.readUUID()));
} }
@Override @Override
public void write(FriendlyByteBuf buffer) { public void write(FriendlyByteBuf buffer) {
buffer.writeUUID(graphId); buffer.writeUUID(graphId);
buffer.writeInt(netId);
buffer.writeBoolean(packetDeletesGraph); buffer.writeBoolean(packetDeletesGraph);
buffer.writeBoolean(fullWipe);
if (packetDeletesGraph) if (packetDeletesGraph)
return; return;
@ -152,9 +160,10 @@ public class TrackGraphSyncPacket extends TrackGraphPacket {
} }
buffer.writeVarInt(splitSubGraphs.size()); buffer.writeVarInt(splitSubGraphs.size());
splitSubGraphs.forEach((node, uuid) -> { splitSubGraphs.forEach((node, p) -> {
buffer.writeVarInt(node); buffer.writeVarInt(node);
buffer.writeUUID(uuid); buffer.writeInt(p.getFirst());
buffer.writeUUID(p.getSecond());
}); });
} }
@ -165,6 +174,12 @@ public class TrackGraphSyncPacket extends TrackGraphPacket {
return; return;
} }
if (fullWipe) {
manager.removeGraph(graph);
graph = Create.RAILWAYS.sided(null)
.getOrCreateGraph(graphId, netId);
}
for (int nodeId : removedNodes) { for (int nodeId : removedNodes) {
TrackNode node = graph.getNode(nodeId); TrackNode node = graph.getNode(nodeId);
if (node != null) if (node != null)

View file

@ -37,7 +37,7 @@ public class TrackGraphVisualizer {
Vec3 camera = cameraEntity.getEyePosition(); Vec3 camera = cameraEntity.getEyePosition();
Outliner outliner = CreateClient.OUTLINER; Outliner outliner = CreateClient.OUTLINER;
boolean ctrl = AllKeys.isKeyDown(GLFW.GLFW_KEY_LEFT_CONTROL); boolean ctrl = false; // AllKeys.isKeyDown(GLFW.GLFW_KEY_LEFT_CONTROL);
Map<UUID, SignalEdgeGroup> allGroups = Create.RAILWAYS.sided(null).signalEdgeGroups; Map<UUID, SignalEdgeGroup> allGroups = Create.RAILWAYS.sided(null).signalEdgeGroups;
float width = 1 / 8f; float width = 1 / 8f;

View file

@ -258,6 +258,8 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity {
} }
DimensionalCarriageEntity dce = carriage.getDimensional(level); DimensionalCarriageEntity dce = carriage.getDimensional(level);
if (tickCount % 10 == 0)
updateTrackGraph();
if (!dce.pointsInitialised) if (!dce.pointsInitialised)
return; return;

View file

@ -4,7 +4,9 @@ import java.util.UUID;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionRelocationPacket;
import com.simibubi.create.content.logistics.trains.track.BezierTrackPointLocation; import com.simibubi.create.content.logistics.trains.track.BezierTrackPointLocation;
import com.simibubi.create.foundation.networking.AllPackets;
import com.simibubi.create.foundation.networking.SimplePacketBase; import com.simibubi.create.foundation.networking.SimplePacketBase;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.VecHelper; import com.simibubi.create.foundation.utility.VecHelper;
@ -16,6 +18,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.network.NetworkEvent.Context; import net.minecraftforge.network.NetworkEvent.Context;
import net.minecraftforge.network.PacketDistributor;
public class TrainRelocationPacket extends SimplePacketBase { public class TrainRelocationPacket extends SimplePacketBase {
@ -95,7 +98,11 @@ public class TrainRelocationPacket extends SimplePacketBase {
if (TrainRelocator.relocate(train, sender.level, pos, hoveredBezier, direction, lookAngle, false)) { if (TrainRelocator.relocate(train, sender.level, pos, hoveredBezier, direction, lookAngle, false)) {
sender.displayClientMessage(Lang.translate("train.relocate.success") sender.displayClientMessage(Lang.translate("train.relocate.success")
.withStyle(ChatFormatting.GREEN), true); .withStyle(ChatFormatting.GREEN), true);
train.carriages.forEach(c -> c.forEachPresentEntity(e -> e.nonDamageTicks = 10)); train.carriages.forEach(c -> c.forEachPresentEntity(e -> {
e.nonDamageTicks = 10;
AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> e),
new ContraptionRelocationPacket(e.getId()));
}));
return; return;
} }

View file

@ -81,7 +81,7 @@ public class FlapDisplayRenderer extends KineticTileEntityRenderer {
w += section.getSize() + (section.hasGap ? 8 : 1); w += section.getSize() + (section.hasGap ? 8 : 1);
} }
ms.translate(flapTe.xSize * 16 - w / 2 + 1, 4, 0); ms.translate(flapTe.xSize * 16 - w / 2 + 1, 4.5f, 0);
Pose transform = ms.last(); Pose transform = ms.last();
FlapDisplayRenderOutput renderOutput = new FlapDisplayRenderOutput(buffer, color, transform.pose(), light, FlapDisplayRenderOutput renderOutput = new FlapDisplayRenderOutput(buffer, color, transform.pose(), light,
@ -94,9 +94,9 @@ public class FlapDisplayRenderer extends KineticTileEntityRenderer {
String text = section.renderCharsIndividually() || !section.spinning[0] ? section.text String text = section.renderCharsIndividually() || !section.spinning[0] ? section.text
: section.cyclingOptions[((ticks / 3) + i * 13) % section.cyclingOptions.length]; : section.cyclingOptions[((ticks / 3) + i * 13) % section.cyclingOptions.length];
StringDecomposer.iterateFormatted(text, Style.EMPTY, renderOutput); StringDecomposer.iterateFormatted(text, Style.EMPTY, renderOutput);
ms.translate(0, 0, -1 / 4f); // ms.translate(0, 0, -1 / 4f);
renderOutput.finish(0x55000000); // renderOutput.finish(0x55000000);
ms.translate(0, 0, 1 / 4f); // ms.translate(0, 0, 1 / 4f);
ms.translate(section.size + (section.hasGap ? 8 : 1), 0, 0); ms.translate(section.size + (section.hasGap ? 8 : 1), 0, 0);
} }
@ -129,7 +129,7 @@ public class FlapDisplayRenderer extends KineticTileEntityRenderer {
boolean paused) { boolean paused) {
this.bufferSource = buffer; this.bufferSource = buffer;
this.lineIndex = lineIndex; this.lineIndex = lineIndex;
this.a = (color >> 24 & 255) / 255f; this.a = .75f;
this.r = (color >> 16 & 255) / 255f; this.r = (color >> 16 & 255) / 255f;
this.g = (color >> 8 & 255) / 255f; this.g = (color >> 8 & 255) / 255f;
this.b = (color & 255) / 255f; this.b = (color & 255) / 255f;

View file

@ -125,6 +125,9 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable
super.read(tag, clientPacket); super.read(tag, clientPacket);
invalidateRenderBoundingBox(); invalidateRenderBoundingBox();
if (tag.contains("PrevTrainName"))
lastDisassembledTrainName = Component.Serializer.fromJson(tag.getString("PrevTrainName"));
if (!clientPacket) if (!clientPacket)
return; return;
if (!tag.contains("ImminentTrain")) { if (!tag.contains("ImminentTrain")) {
@ -148,6 +151,9 @@ public class StationTileEntity extends SmartTileEntity implements ITransformable
AssemblyException.write(tag, lastException); AssemblyException.write(tag, lastException);
tag.putInt("FailedCarriageIndex", failedCarriageIndex); tag.putInt("FailedCarriageIndex", failedCarriageIndex);
if (lastDisassembledTrainName != null)
tag.putString("PrevTrainName", Component.Serializer.toJson(lastDisassembledTrainName));
super.write(tag, clientPacket); super.write(tag, clientPacket);
if (!clientPacket) if (!clientPacket)

View file

@ -150,6 +150,7 @@ public class StandardBogeyBlock extends Block
private void renderBogey(float wheelAngle, PoseStack ms, int light, VertexConsumer vb, BlockState air) { private void renderBogey(float wheelAngle, PoseStack ms, int light, VertexConsumer vb, BlockState air) {
CachedBufferer.partial(AllBlockPartials.BOGEY_FRAME, air) CachedBufferer.partial(AllBlockPartials.BOGEY_FRAME, air)
.scale(1 - 1 / 512f)
.light(light) .light(light)
.renderInto(ms, vb); .renderInto(ms, vb);
@ -176,6 +177,7 @@ public class StandardBogeyBlock extends Block
.renderInto(ms, vb); .renderInto(ms, vb);
CachedBufferer.partial(AllBlockPartials.BOGEY_DRIVE, air) CachedBufferer.partial(AllBlockPartials.BOGEY_DRIVE, air)
.scale(1 - 1 / 512f)
.light(light) .light(light)
.renderInto(ms, vb); .renderInto(ms, vb);
CachedBufferer.partial(AllBlockPartials.BOGEY_PISTON, air) CachedBufferer.partial(AllBlockPartials.BOGEY_PISTON, air)

View file

@ -10,6 +10,7 @@ import java.util.function.Supplier;
import com.simibubi.create.Create; import com.simibubi.create.Create;
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionBlockChangedPacket; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionBlockChangedPacket;
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionDisassemblyPacket; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionDisassemblyPacket;
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionRelocationPacket;
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionStallPacket; import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionStallPacket;
import com.simibubi.create.content.contraptions.components.structureMovement.TrainCollisionPacket; import com.simibubi.create.content.contraptions.components.structureMovement.TrainCollisionPacket;
import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionUpdatePacket; import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionUpdatePacket;
@ -54,6 +55,8 @@ import com.simibubi.create.content.logistics.item.filter.FilterScreenPacket;
import com.simibubi.create.content.logistics.packet.ConfigureStockswitchPacket; import com.simibubi.create.content.logistics.packet.ConfigureStockswitchPacket;
import com.simibubi.create.content.logistics.packet.FunnelFlapPacket; import com.simibubi.create.content.logistics.packet.FunnelFlapPacket;
import com.simibubi.create.content.logistics.packet.TunnelFlapPacket; import com.simibubi.create.content.logistics.packet.TunnelFlapPacket;
import com.simibubi.create.content.logistics.trains.TrackGraphRequestPacket;
import com.simibubi.create.content.logistics.trains.TrackGraphRollCallPacket;
import com.simibubi.create.content.logistics.trains.TrackGraphSyncPacket; import com.simibubi.create.content.logistics.trains.TrackGraphSyncPacket;
import com.simibubi.create.content.logistics.trains.entity.TrainPacket; import com.simibubi.create.content.logistics.trains.entity.TrainPacket;
import com.simibubi.create.content.logistics.trains.entity.TrainPromptPacket; import com.simibubi.create.content.logistics.trains.entity.TrainPromptPacket;
@ -144,6 +147,7 @@ public enum AllPackets {
C_TRAIN_HONK(HonkPacket.Serverbound.class, HonkPacket.Serverbound::new, PLAY_TO_SERVER), C_TRAIN_HONK(HonkPacket.Serverbound.class, HonkPacket.Serverbound::new, PLAY_TO_SERVER),
OBSERVER_STRESSOMETER(GaugeObservedPacket.class, GaugeObservedPacket::new, PLAY_TO_SERVER), OBSERVER_STRESSOMETER(GaugeObservedPacket.class, GaugeObservedPacket::new, PLAY_TO_SERVER),
EJECTOR_AWARD(EjectorAwardPacket.class, EjectorAwardPacket::new, PLAY_TO_SERVER), EJECTOR_AWARD(EjectorAwardPacket.class, EjectorAwardPacket::new, PLAY_TO_SERVER),
TRACK_GRAPH_REQUEST(TrackGraphRequestPacket.class, TrackGraphRequestPacket::new, PLAY_TO_SERVER),
// Server to Client // Server to Client
SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new, PLAY_TO_CLIENT), SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new, PLAY_TO_CLIENT),
@ -178,6 +182,8 @@ public enum AllPackets {
S_TRAIN_HUD(TrainHUDUpdatePacket.class, TrainHUDUpdatePacket::new, PLAY_TO_CLIENT), S_TRAIN_HUD(TrainHUDUpdatePacket.class, TrainHUDUpdatePacket::new, PLAY_TO_CLIENT),
S_TRAIN_HONK(HonkPacket.class, HonkPacket::new, PLAY_TO_CLIENT), S_TRAIN_HONK(HonkPacket.class, HonkPacket::new, PLAY_TO_CLIENT),
S_TRAIN_PROMPT(TrainPromptPacket.class, TrainPromptPacket::new, PLAY_TO_CLIENT), S_TRAIN_PROMPT(TrainPromptPacket.class, TrainPromptPacket::new, PLAY_TO_CLIENT),
CONTRAPTION_RELOCATION(ContraptionRelocationPacket.class, ContraptionRelocationPacket::new, PLAY_TO_CLIENT),
TRACK_GRAPH_ROLL_CALL(TrackGraphRollCallPacket.class, TrackGraphRollCallPacket::new, PLAY_TO_CLIENT),
; ;

View file

@ -14,6 +14,7 @@ import com.simibubi.create.foundation.ponder.content.fluid.HosePulleyScenes;
import com.simibubi.create.foundation.ponder.content.fluid.PipeScenes; import com.simibubi.create.foundation.ponder.content.fluid.PipeScenes;
import com.simibubi.create.foundation.ponder.content.fluid.PumpScenes; import com.simibubi.create.foundation.ponder.content.fluid.PumpScenes;
import com.simibubi.create.foundation.ponder.content.fluid.SpoutScenes; import com.simibubi.create.foundation.ponder.content.fluid.SpoutScenes;
import com.simibubi.create.foundation.ponder.content.trains.TrackScenes;
import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
@ -294,6 +295,11 @@ public class PonderIndex {
HELPER.forComponents(AllBlocks.REDSTONE_LINK) HELPER.forComponents(AllBlocks.REDSTONE_LINK)
.addStoryBoard("redstone_link", RedstoneScenes::redstoneLink); .addStoryBoard("redstone_link", RedstoneScenes::redstoneLink);
// Trains
HELPER.forComponents(AllBlocks.TRACK)
.addStoryBoard("train_track/placement", TrackScenes::placement)
.addStoryBoard("train_track/portal", TrackScenes::portal);
// Debug scenes, can be found in game via the Brass Hand // Debug scenes, can be found in game via the Brass Hand
if (REGISTER_DEBUG_SCENES) if (REGISTER_DEBUG_SCENES)
DebugScenes.registerAll(); DebugScenes.registerAll();

View file

@ -0,0 +1,342 @@
package com.simibubi.create.foundation.ponder.content.trains;
import java.util.List;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.ponder.ElementLink;
import com.simibubi.create.foundation.ponder.PonderPalette;
import com.simibubi.create.foundation.ponder.SceneBuilder;
import com.simibubi.create.foundation.ponder.SceneBuildingUtil;
import com.simibubi.create.foundation.ponder.element.InputWindowElement;
import com.simibubi.create.foundation.ponder.element.ParrotElement;
import com.simibubi.create.foundation.ponder.element.ParrotElement.FacePointOfInterestPose;
import com.simibubi.create.foundation.ponder.element.WorldSectionElement;
import com.simibubi.create.foundation.utility.Pointing;
import net.minecraft.core.Direction;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
public class TrackScenes {
public static void placement(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("placement", "Placing Train Tracks");
scene.configureBasePlate(0, 0, 15);
scene.scaleSceneView(.5f);
scene.showBasePlate();
// scene.debug.debugSchematic();
scene.idle(10);
ElementLink<WorldSectionElement> bgTrack =
scene.world.showIndependentSection(util.select.position(11, 4, 9), Direction.DOWN);
scene.world.moveSection(bgTrack, util.vector.of(0, -2, 0), 0);
for (int i = 11; i >= 2; i--) {
scene.world.showSectionAndMerge(util.select.position(i, 3, 9), Direction.DOWN, bgTrack);
if (i == 5)
scene.world.showSectionAndMerge(util.select.position(7, 4, 9), Direction.DOWN, bgTrack);
scene.idle(2);
}
scene.overlay.showText(60)
.pointAt(util.vector.topOf(5, 0, 9))
.placeNearTarget()
.text("A new type of rail designed for Train Contraptions");
scene.idle(50);
ElementLink<WorldSectionElement> fgTrack =
scene.world.showIndependentSection(util.select.position(3, 3, 5), Direction.DOWN);
scene.world.moveSection(fgTrack, util.vector.of(0, -2, 0), 0);
scene.idle(20);
Vec3 startTrack = util.vector.topOf(3, 0, 5);
scene.overlay.showText(70)
.pointAt(startTrack)
.placeNearTarget()
.colored(PonderPalette.GREEN)
.attachKeyFrame()
.text("To place rows of track in bulk, click on an existing track");
scene.idle(30);
ItemStack trackStack = AllBlocks.TRACK.asStack();
scene.overlay.showControls(new InputWindowElement(startTrack, Pointing.DOWN).rightClick()
.withItem(trackStack), 40);
scene.idle(6);
AABB bb = new AABB(util.grid.at(3, 1, 5)).contract(0, .75f, 0)
.inflate(0, 0, .85f);
scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, startTrack, bb, 32);
scene.idle(45);
scene.overlay.showControls(new InputWindowElement(startTrack.add(9, 0, 0), Pointing.DOWN).rightClick()
.withItem(trackStack), 40);
scene.idle(6);
scene.overlay.showText(40)
.pointAt(util.vector.topOf(12, 0, 5))
.placeNearTarget()
.colored(PonderPalette.GREEN)
.text("Then place or select a second track");
scene.idle(20);
scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, startTrack, bb.expandTowards(9, 0, 0), 30);
scene.world.showSectionAndMerge(util.select.fromTo(12, 3, 5, 4, 3, 5), Direction.WEST, fgTrack);
scene.idle(55);
scene.world.hideIndependentSection(bgTrack, Direction.UP);
scene.idle(7);
scene.world.hideIndependentSection(fgTrack, Direction.UP);
scene.idle(25);
scene.world.showSection(util.select.position(8, 1, 2), Direction.SOUTH);
scene.idle(10);
scene.addKeyframe();
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(8, 0, 2), Pointing.DOWN).rightClick()
.withItem(trackStack), 15);
scene.idle(15);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(2, 0, 8), Pointing.DOWN).rightClick()
.withItem(trackStack), 15);
scene.idle(7);
scene.world.showSection(util.select.position(2, 1, 8), Direction.DOWN);
scene.idle(25);
scene.overlay.showText(60)
.pointAt(util.vector.topOf(7, 0, 7))
.placeNearTarget()
.text("Tracks can also be placed as turns or slopes");
scene.idle(40);
scene.world.showSection(util.select.position(12, 1, 2), Direction.SOUTH);
scene.idle(10);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(12, 0, 2), Pointing.DOWN).rightClick()
.withItem(trackStack), 10);
scene.idle(15);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(2, 0, 12), Pointing.DOWN).rightClick()
.withItem(trackStack), 10);
scene.idle(7);
scene.world.showSection(util.select.fromTo(12, 1, 3, 12, 1, 5), Direction.DOWN);
scene.idle(3);
scene.world.showSection(util.select.fromTo(12, 1, 6, 6, 1, 12), Direction.DOWN);
scene.idle(3);
scene.world.showSection(util.select.fromTo(5, 1, 12, 2, 1, 12), Direction.DOWN);
scene.idle(25);
scene.overlay.showText(70)
.pointAt(util.vector.topOf(11, 0, 11))
.colored(PonderPalette.GREEN)
.attachKeyFrame()
.placeNearTarget()
.text("When connecting, tracks will try to make each turn equally sized");
scene.idle(70);
scene.world.hideSection(util.select.fromTo(12, 1, 2, 12, 1, 5), Direction.NORTH);
scene.world.hideSection(util.select.fromTo(5, 1, 12, 2, 1, 12), Direction.WEST);
bb = new AABB(util.grid.at(5, 1, 5)).contract(0, .75f, 0)
.inflate(3, 0, 3)
.expandTowards(.85f, 0, .85f);
scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, startTrack, bb, 32);
scene.idle(20);
scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, startTrack, bb.move(4, 0, 4), 32);
scene.idle(30);
scene.world.hideSection(util.select.fromTo(12, 1, 6, 6, 1, 12), Direction.UP);
scene.idle(5);
scene.world.showSection(util.select.position(12, 1, 2), Direction.SOUTH);
scene.idle(20);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(12, 0, 2), Pointing.DOWN).rightClick()
.withItem(trackStack), 10);
scene.idle(10);
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(2, 0, 12), Pointing.DOWN).rightClick()
.withItem(trackStack)
.whileCTRL(), 60);
scene.idle(10);
scene.overlay.showText(60)
.pointAt(util.vector.topOf(2, 0, 12))
.colored(PonderPalette.GREEN)
.attachKeyFrame()
.placeNearTarget()
.text("Holding the sprint key while connecting...");
scene.idle(50);
ElementLink<WorldSectionElement> longBend =
scene.world.showIndependentSection(util.select.position(2, 2, 12), Direction.DOWN);
scene.world.moveSection(longBend, util.vector.of(0, -1, 0), 0);
scene.idle(30);
scene.overlay.showText(60)
.pointAt(util.vector.centerOf(9, 1, 9))
.colored(PonderPalette.GREEN)
.placeNearTarget()
.text("...will create the longest fitting bend instead");
scene.idle(70);
scene.world.hideIndependentSection(longBend, Direction.UP);
scene.world.hideSection(util.select.position(12, 1, 2), Direction.UP);
scene.idle(5);
scene.world.hideSection(util.select.fromTo(8, 1, 2, 2, 1, 8), Direction.UP);
scene.idle(25);
ElementLink<WorldSectionElement> slopeStart =
scene.world.showIndependentSection(util.select.fromTo(12, 6, 2, 12, 9, 12), Direction.DOWN);
scene.world.moveSection(slopeStart, util.vector.of(0, -5, 0), 0);
scene.idle(10);
scene.world.showSectionAndMerge(util.select.fromTo(2, 6, 2, 2, 7, 4), Direction.DOWN, slopeStart);
scene.world.showSectionAndMerge(util.select.fromTo(2, 6, 6, 2, 9, 8), Direction.DOWN, slopeStart);
scene.world.showSectionAndMerge(util.select.fromTo(2, 6, 10, 2, 11, 12), Direction.DOWN, slopeStart);
scene.idle(20);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(12, 3, 11), Pointing.LEFT).withItem(trackStack), 30);
scene.idle(4);
ItemStack smoothStone = new ItemStack(Blocks.SMOOTH_STONE);
scene.overlay.showControls(
new InputWindowElement(util.vector.topOf(12, 3, 11), Pointing.RIGHT).withItem(smoothStone), 26);
scene.idle(30);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(2, 6, 11), Pointing.LEFT).withItem(trackStack), 30);
scene.idle(4);
scene.overlay.showControls(
new InputWindowElement(util.vector.topOf(2, 6, 11), Pointing.RIGHT).withItem(smoothStone), 26);
scene.idle(10);
scene.world.showSectionAndMerge(util.select.position(2, 12, 11), Direction.DOWN, slopeStart);
scene.idle(2);
scene.world.showSectionAndMerge(util.select.fromTo(11, 8, 10, 3, 11, 12), Direction.UP, slopeStart);
scene.idle(20);
scene.overlay.showText(100)
.pointAt(util.vector.blockSurface(util.grid.at(9, 3, 10), Direction.NORTH))
.placeNearTarget()
.attachKeyFrame()
.text("Materials in the off-hand will be paved under tracks automatically");
scene.idle(80);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(12, 2, 7), Pointing.LEFT).withItem(trackStack), 30);
scene.idle(4);
smoothStone = new ItemStack(Blocks.SMOOTH_STONE_SLAB);
scene.overlay.showControls(
new InputWindowElement(util.vector.topOf(12, 2, 7), Pointing.RIGHT).withItem(smoothStone), 26);
scene.idle(30);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(2, 4, 7), Pointing.LEFT).withItem(trackStack), 30);
scene.idle(4);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(2, 4, 7), Pointing.RIGHT).withItem(smoothStone), 26);
scene.idle(10);
scene.world.showSectionAndMerge(util.select.position(2, 10, 7), Direction.DOWN, slopeStart);
scene.idle(2);
scene.world.showSectionAndMerge(util.select.fromTo(11, 7, 6, 3, 11, 8), Direction.UP, slopeStart);
scene.idle(20);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(12, 1, 3), Pointing.LEFT).withItem(trackStack), 30);
scene.idle(4);
smoothStone = AllBlocks.METAL_GIRDER.asStack();
scene.overlay.showControls(
new InputWindowElement(util.vector.topOf(12, 1, 3), Pointing.RIGHT).withItem(smoothStone), 26);
scene.idle(30);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(2, 2, 3), Pointing.LEFT).withItem(trackStack), 30);
scene.idle(4);
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(2, 2, 3), Pointing.RIGHT).withItem(smoothStone), 26);
scene.idle(10);
scene.world.showSectionAndMerge(util.select.position(2, 8, 3), Direction.DOWN, slopeStart);
}
public static void portal(SceneBuilder scene, SceneBuildingUtil util) {
scene.title("portal", "Tracks and the Nether");
scene.configureBasePlate(0, 0, 9);
scene.scaleSceneView(.65f);
scene.setSceneOffsetY(-1);
scene.showBasePlate();
scene.world.showSection(util.select.fromTo(2, 1, 7, 6, 6, 7), Direction.UP);
// scene.debug.debugSchematic();
scene.idle(10);
for (int i = 1; i <= 5; i++) {
scene.world.showSection(util.select.position(4, 1, i), Direction.DOWN);
scene.idle(2);
}
scene.idle(15);
scene.overlay.showText(60)
.pointAt(util.vector.topOf(4, 0, 6))
.placeNearTarget()
.attachKeyFrame()
.text("Tracks placed up against a nether portal...");
scene.idle(50);
scene.world.showSection(util.select.position(4, 1, 6), Direction.DOWN);
scene.idle(20);
scene.overlay.showText(70)
.pointAt(util.vector.topOf(4, 0, 6))
.placeNearTarget()
.text("...will attempt to create a paired track on the other side");
scene.idle(40);
ElementLink<WorldSectionElement> t1 =
scene.world.showIndependentSection(util.select.fromTo(5, 2, 1, 3, 3, 2), Direction.DOWN);
ElementLink<WorldSectionElement> t2 =
scene.world.showIndependentSection(util.select.fromTo(5, 2, 3, 3, 3, 3), Direction.DOWN);
ElementLink<WorldSectionElement> t3 =
scene.world.showIndependentSection(util.select.fromTo(5, 2, 4, 3, 3, 5), Direction.DOWN);
ElementLink<ParrotElement> birb =
scene.special.createBirb(util.vector.centerOf(4, 3, 2), FacePointOfInterestPose::new);
scene.special.movePointOfInterest(util.grid.at(4, 4, 10));
scene.addKeyframe();
scene.idle(30);
for (ElementLink<WorldSectionElement> e : List.of(t1, t2, t3))
scene.world.moveSection(e, util.vector.of(0, 0, 6), 30);
scene.special.moveParrot(birb, util.vector.of(0, 0, 5.6), 28);
for (ElementLink<WorldSectionElement> e : List.of(t3, t2, t1)) {
scene.idle(2);
scene.world.hideIndependentSection(e, Direction.SOUTH);
}
scene.world.hideSection(util.select.layers(0, 1), Direction.UP);
scene.rotateCameraY(360);
scene.idle(15);
scene.special.movePointOfInterest(util.grid.at(4, 4, 0));
ElementLink<WorldSectionElement> nether =
scene.world.showIndependentSection(util.select.layers(7, 1), Direction.UP);
scene.world.moveSection(nether, util.vector.of(0, -7, 0), 0);
scene.special.moveParrot(birb, util.vector.of(0, 0, -.1f), 1);
scene.idle(25);
ElementLink<WorldSectionElement> s1 =
scene.world.showIndependentSection(util.select.fromTo(5, 2, 1, 3, 3, 5), Direction.NORTH);
scene.world.rotateSection(s1, 0, 180, 0, 0);
scene.world.moveSection(s1, util.vector.of(0, 0, 3.5f), 0);
scene.world.moveSection(s1, util.vector.of(0, 0, -3.5f), 18);
scene.special.moveParrot(birb, util.vector.of(0, 0, -3.5f), 18);
scene.idle(30);
scene.overlay.showText(70)
.pointAt(util.vector.topOf(util.grid.at(3, 2, 3)))
.attachKeyFrame()
.placeNearTarget()
.text("Trains on this track are now able to travel across dimensions");
scene.idle(40);
}
}

View file

@ -127,6 +127,7 @@ public class TextWindowElement extends AnimatedOverlayElement {
//PonderUI.renderBox(ms, targetX - 10, 3, boxWidth, boxHeight - 1, 0xaa000000, 0x30eebb00, 0x10eebb00); //PonderUI.renderBox(ms, targetX - 10, 3, boxWidth, boxHeight - 1, 0xaa000000, 0x30eebb00, 0x10eebb00);
int brighterColor = Color.mixColors(color, 0xFFffffdd, 1 / 2f); int brighterColor = Color.mixColors(color, 0xFFffffdd, 1 / 2f);
brighterColor = (0x00ffffff & brighterColor) | 0xff000000;
if (vec != null) { if (vec != null) {
ms.pushPose(); ms.pushPose();
ms.translate(sceneToScreen.x, 0, 0); ms.translate(sceneToScreen.x, 0, 0);

View file

@ -163,9 +163,9 @@
"block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", "block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
"item.create.creative_blaze_cake.tooltip": "CREATIVE CAKE", "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.summary": "A very special treat for your _Blaze Burners_. After eating this cake, Blaze Burners will _never run out of fuel_.",
"item.create.creative_blaze_cake.tooltip.condition1": "R-Click on Blaze Burner", "item.create.creative_blaze_cake.tooltip.condition1": "When Used",
"item.create.creative_blaze_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.behaviour1": "_Cycles_ a Blaze Burner's heat level.",
"block.create.controller_rail.tooltip": "CONTROLLER RAIL", "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_.", "block.create.controller_rail.tooltip.summary": "A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.",
@ -213,6 +213,11 @@
"item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics", "item.create.copper_backtank.tooltip.condition2": "When placed, Powered by Kinetics",
"item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.", "item.create.copper_backtank.tooltip.behaviour2": "_Collects_ _Pressurized_ _Air_ at a rate depending on the Rotational Speed.",
"block.create.flywheel.tooltip": "FLYWHEEL",
"block.create.flywheel.tooltip.summary": "_Embellish_ your _Machines_ with this imposing Wheel of Brass.",
"block.create.flywheel.tooltip.condition1": "When Powered by Kinetics",
"block.create.flywheel.tooltip.behaviour1": "Starts spinning.",
"item.create.diving_boots.tooltip": "DIVING BOOTS", "item.create.diving_boots.tooltip": "DIVING BOOTS",
"item.create.diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.", "item.create.diving_boots.tooltip.summary": "A pair of _heavy_ _boots_, allowing for better traversal of the Ocean floor.",
"item.create.diving_boots.tooltip.condition1": "When Worn", "item.create.diving_boots.tooltip.condition1": "When Worn",

View file

@ -5,6 +5,8 @@
"2": "create:block/flap_display_front", "2": "create:block/flap_display_front",
"3": "create:block/dark_metal_block", "3": "create:block/dark_metal_block",
"4": "create:block/flap_display_side", "4": "create:block/flap_display_side",
"5": "create:block/flap_display_top",
"6": "create:block/flap_display_inside",
"particle": "create:block/flap_display_front" "particle": "create:block/flap_display_front"
}, },
"elements": [ "elements": [
@ -15,10 +17,10 @@
"faces": { "faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2"}, "north": {"uv": [0, 0, 16, 16], "texture": "#2"},
"east": {"uv": [13, 0, 16, 16], "texture": "#4"}, "east": {"uv": [13, 0, 16, 16], "texture": "#4"},
"south": {"uv": [0, 0, 16, 16], "texture": "#3"}, "south": {"uv": [0, 0, 16, 16], "texture": "#6"},
"west": {"uv": [0, 0, 3, 16], "texture": "#4"}, "west": {"uv": [0, 0, 3, 16], "texture": "#4"},
"up": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [0, 0, 3, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#5"}
} }
}, },
{ {
@ -26,32 +28,32 @@
"to": [16, 16, 13], "to": [16, 16, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 6]}, "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 6]},
"faces": { "faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#3"}, "north": {"uv": [0, 0, 16, 16], "texture": "#6"},
"east": {"uv": [10, 0, 13, 16], "texture": "#4"}, "east": {"uv": [3, 0, 6, 16], "texture": "#4"},
"south": {"uv": [0, 0, 16, 16], "texture": "#3"}, "south": {"uv": [0, 0, 16, 16], "texture": "#3"},
"west": {"uv": [10, 0, 13, 16], "texture": "#4"}, "west": {"uv": [10, 0, 13, 16], "texture": "#4"},
"up": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [0, 0, 3, 16], "rotation": 90, "texture": "#5"}
} }
}, },
{ {
"from": [0, 0, 6], "from": [0, 0, 6],
"to": [16, 16, 10], "to": [16, 16, 10],
"faces": { "faces": {
"east": {"uv": [3, 0, 7, 16], "texture": "#4"}, "east": {"uv": [6, 0, 10, 16], "texture": "#4"},
"west": {"uv": [3, 0, 7, 16], "texture": "#4"}, "west": {"uv": [6, 0, 10, 16], "texture": "#4"},
"up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"}
} }
}, },
{ {
"from": [15.95, 0.05, 6], "from": [15.95, 0.05, 6],
"to": [0.05, 15.95, 10], "to": [0.05, 15.95, 10],
"faces": { "faces": {
"east": {"uv": [3, 0, 7, 16], "texture": "#4"}, "east": {"uv": [6, 0, 10, 16], "texture": "#4"},
"west": {"uv": [3, 0, 7, 16], "texture": "#4"}, "west": {"uv": [6, 0, 10, 16], "texture": "#4"},
"up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"}
} }
} }
] ]

View file

@ -5,8 +5,10 @@
"2": "create:block/flap_display_front", "2": "create:block/flap_display_front",
"3": "create:block/dark_metal_block", "3": "create:block/dark_metal_block",
"4": "create:block/flap_display_side", "4": "create:block/flap_display_side",
"1_2": "create:block/cogwheel", "5": "create:block/flap_display_top",
"particle": "create:block/flap_display_front" "6": "create:block/flap_display_inside",
"particle": "create:block/flap_display_front",
"1_2": "create:block/cogwheel"
}, },
"elements": [ "elements": [
{ {
@ -100,10 +102,10 @@
"faces": { "faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2"}, "north": {"uv": [0, 0, 16, 16], "texture": "#2"},
"east": {"uv": [13, 0, 16, 16], "texture": "#4"}, "east": {"uv": [13, 0, 16, 16], "texture": "#4"},
"south": {"uv": [0, 0, 16, 16], "texture": "#3"}, "south": {"uv": [0, 0, 16, 16], "texture": "#6"},
"west": {"uv": [0, 0, 3, 16], "texture": "#4"}, "west": {"uv": [0, 0, 3, 16], "texture": "#4"},
"up": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [0, 0, 3, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#5"}
} }
}, },
{ {
@ -111,32 +113,32 @@
"to": [16, 16, 13], "to": [16, 16, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 6]}, "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 6]},
"faces": { "faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#3"}, "north": {"uv": [0, 0, 16, 16], "texture": "#6"},
"east": {"uv": [0, 0, 3, 16], "texture": "#4"}, "east": {"uv": [3, 0, 6, 16], "texture": "#4"},
"south": {"uv": [0, 0, 16, 16], "texture": "#3"}, "south": {"uv": [0, 0, 16, 16], "texture": "#3"},
"west": {"uv": [0, 0, 3, 16], "texture": "#4"}, "west": {"uv": [10, 0, 13, 16], "texture": "#4"},
"up": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [7, 0, 10, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [0, 0, 3, 16], "rotation": 90, "texture": "#5"}
} }
}, },
{ {
"from": [0, 0, 6], "from": [0, 0, 6],
"to": [16, 16, 10], "to": [16, 16, 10],
"faces": { "faces": {
"east": {"uv": [3, 0, 7, 16], "texture": "#4"}, "east": {"uv": [6, 0, 10, 16], "texture": "#4"},
"west": {"uv": [3, 0, 7, 16], "texture": "#4"}, "west": {"uv": [6, 0, 10, 16], "texture": "#4"},
"up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"}
} }
}, },
{ {
"from": [15.95, 0.05, 6], "from": [15.95, 0.05, 6],
"to": [0.05, 15.95, 10], "to": [0.05, 15.95, 10],
"faces": { "faces": {
"east": {"uv": [3, 0, 7, 16], "texture": "#4"}, "east": {"uv": [6, 0, 10, 16], "texture": "#4"},
"west": {"uv": [3, 0, 7, 16], "texture": "#4"}, "west": {"uv": [6, 0, 10, 16], "texture": "#4"},
"up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"}, "up": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"},
"down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#4"} "down": {"uv": [3, 0, 7, 16], "rotation": 90, "texture": "#5"}
} }
} }
], ],
@ -147,9 +149,11 @@
"color": 0, "color": 0,
"children": [0, 1, 2, 3, 4, 5] "children": [0, 1, 2, 3, 4, 5]
}, },
6, {
7, "name": "block",
8, "origin": [8, 8, 8],
9 "color": 0,
"children": [6, 7, 8, 9]
}
] ]
} }

View file

@ -1,4 +1,4 @@
# Blender v3.1.2 OBJ File: 'engine.blend' # Blender v3.2.0 OBJ File: 'engine.blend'
# www.blender.org # www.blender.org
mtllib flywheel.mtl mtllib flywheel.mtl
o cube.008_cube.006 o cube.008_cube.006
@ -94,38 +94,6 @@ v 0.750000 0.812500 0.750000
v 0.750000 0.812500 0.250000 v 0.750000 0.812500 0.250000
v 0.250000 0.812500 0.750000 v 0.250000 0.812500 0.750000
v 0.250000 0.812500 0.250000 v 0.250000 0.812500 0.250000
v 1.068750 0.687500 1.873085
v 1.068750 0.312500 1.873085
v 0.940102 0.312500 1.562500
v 0.940102 0.687500 1.562500
v 1.873085 0.687500 1.068751
v 1.873084 0.312500 1.068751
v 1.562500 0.312500 0.940102
v 1.562500 0.687500 0.940102
v 1.873085 0.687500 -0.068750
v 1.873085 0.312500 -0.068750
v 1.562500 0.312500 0.059898
v 1.562500 0.687500 0.059898
v 1.068750 0.687500 -0.873084
v 1.068750 0.312500 -0.873084
v 0.940102 0.312500 -0.562500
v 0.940102 0.687500 -0.562500
v -0.068750 0.687500 -0.873084
v -0.068750 0.312500 -0.873084
v 0.059898 0.312500 -0.562500
v 0.059898 0.687500 -0.562500
v -0.873084 0.687500 -0.068750
v -0.873084 0.312500 -0.068750
v -0.562500 0.312500 0.059898
v -0.562499 0.687500 0.059898
v -0.873084 0.687500 1.068750
v -0.873084 0.312500 1.068750
v -0.562500 0.312500 0.940102
v -0.562500 0.687500 0.940102
v -0.068750 0.687500 1.873084
v -0.068750 0.312500 1.873084
v 0.059898 0.312500 1.562499
v 0.059898 0.687500 1.562499
v 0.250000 0.375000 0.625000 v 0.250000 0.375000 0.625000
v 0.062500 0.375000 0.625000 v 0.062500 0.375000 0.625000
v 0.250000 0.187500 0.625000 v 0.250000 0.187500 0.625000
@ -244,6 +212,54 @@ v 0.625000 0.000000 0.375000
v 0.625000 0.000000 0.625000 v 0.625000 0.000000 0.625000
v 0.625000 1.000000 0.375000 v 0.625000 1.000000 0.375000
v 0.625000 1.000000 0.625000 v 0.625000 1.000000 0.625000
v 1.068750 0.312500 1.873085
v 0.940102 0.312500 1.562500
v 1.873084 0.312500 1.068751
v 1.562500 0.312500 0.940102
v 1.873085 0.312500 -0.068750
v 1.562500 0.312500 0.059898
v 1.068750 0.312500 -0.873084
v 0.940102 0.312500 -0.562500
v -0.068750 0.312500 -0.873084
v 0.059898 0.312500 -0.562500
v -0.873084 0.312500 -0.068750
v -0.562500 0.312500 0.059898
v -0.873084 0.312500 1.068750
v -0.562500 0.312500 0.940102
v -0.068750 0.312500 1.873084
v 0.059898 0.312500 1.562499
v 0.940102 0.500000 1.562500
v 0.059898 0.500000 1.562499
v 1.562500 0.500000 0.940102
v 1.562500 0.500000 0.059898
v 0.940102 0.500000 -0.562500
v 0.059898 0.500000 -0.562500
v -0.562500 0.500000 0.059898
v -0.562500 0.500000 0.940102
v 1.068750 0.500000 1.873085
v -0.068750 0.500000 1.873084
v 1.873085 0.500000 1.068751
v 1.873085 0.500000 -0.068750
v 1.068750 0.500000 -0.873084
v -0.068750 0.500000 -0.873084
v -0.873084 0.500000 -0.068750
v -0.873084 0.500000 1.068750
v 1.068750 0.687500 1.873085
v 0.940102 0.687500 1.562500
v 1.873084 0.687500 1.068751
v 1.562500 0.687500 0.940102
v 1.873085 0.687500 -0.068750
v 1.562500 0.687500 0.059898
v 1.068750 0.687500 -0.873084
v 0.940102 0.687500 -0.562500
v -0.068750 0.687500 -0.873084
v 0.059898 0.687500 -0.562500
v -0.873084 0.687500 -0.068750
v -0.562500 0.687500 0.059898
v -0.873084 0.687500 1.068750
v -0.562500 0.687500 0.940102
v -0.068750 0.687500 1.873084
v 0.059898 0.687500 1.562499
vt 0.375000 0.000000 vt 0.375000 0.000000
vt 0.625000 0.000000 vt 0.625000 0.000000
vt 0.625000 1.000000 vt 0.625000 1.000000
@ -273,11 +289,11 @@ vt 0.562500 0.500000
vt 0.687500 0.500000 vt 0.687500 0.500000
vt 0.687500 0.687500 vt 0.687500 0.687500
vt 0.812500 1.000000 vt 0.812500 1.000000
vt 1.000000 1.000000
vt 0.906250 0.781250 vt 0.906250 0.781250
vt 1.000000 1.000000 vt 1.000000 1.000000
vt 1.000000 1.000000
vt 0.906250 0.781250
vt 0.812500 1.000000 vt 0.812500 1.000000
vt 0.906250 0.781250
vt 0.562500 0.687500 vt 0.562500 0.687500
vt 0.562500 0.500000 vt 0.562500 0.500000
vt 0.687500 0.500000 vt 0.687500 0.500000
@ -634,102 +650,6 @@ vt 0.218750 0.468750
vt 0.468750 0.468750 vt 0.468750 0.468750
vt 0.468750 0.375000 vt 0.468750 0.375000
vt 0.218750 0.375000 vt 0.218750 0.375000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.062500 0.468750
vt 0.500000 0.468750
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.562500 1.000000
vt 0.000000 1.000000
vt 0.125000 0.250000 vt 0.125000 0.250000
vt 0.125000 0.312500 vt 0.125000 0.312500
vt 0.031250 0.312500 vt 0.031250 0.312500
@ -798,130 +718,242 @@ vt 0.125000 0.312500
vt 0.125000 0.406250 vt 0.125000 0.406250
vt 0.218750 0.406250 vt 0.218750 0.406250
vt 0.218750 0.312500 vt 0.218750 0.312500
vn 0.0000 0.0000 1.0000 vt 0.562500 0.812500
vn 0.0000 -1.0000 0.0000 vt 0.000000 0.812500
vn 0.0000 1.0000 0.0000 vt 0.062500 0.656250
vn 0.7071 0.0000 0.7071 vt 0.500000 0.656250
vn 1.0000 0.0000 -0.0000 vt 0.562500 0.906250
vn 0.7071 0.0000 -0.7071 vt 0.000000 0.906250
vn -0.0000 0.0000 -1.0000 vt 0.562500 0.812500
vn -0.7071 0.0000 -0.7071 vt 0.000000 0.812500
vt 0.062500 0.656250
vt 0.500000 0.656250
vt 0.562500 0.906250
vt 0.000000 0.906250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.062500 0.656250
vt 0.500000 0.656250
vt 0.562500 0.906250
vt 0.000000 0.906250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.062500 0.656250
vt 0.500000 0.656250
vt 0.562500 0.906250
vt 0.000000 0.906250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.062500 0.656250
vt 0.500000 0.656250
vt 0.562500 0.906250
vt 0.000000 0.906250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.062500 0.656250
vt 0.500000 0.656250
vt 0.562500 0.906250
vt 0.000000 0.906250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.062500 0.656250
vt 0.500000 0.656250
vt 0.562500 0.906250
vt 0.000000 0.906250
vt 0.562500 0.812500
vt 0.000000 0.812500
vt 0.062500 0.656250
vt 0.500000 0.656250
vt 0.562500 0.906250
vt 0.000000 0.906250
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.062500 0.562500
vt 0.500000 0.562500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vt 0.562500 0.812500
vt 0.500000 0.656250
vt 0.062500 0.656250
vt 0.000000 0.812500
vn -1.0000 0.0000 0.0000 vn -1.0000 0.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 -0.0000
vn 0.7071 0.0000 0.7071
vn 0.7071 -0.0000 -0.7071
vn -0.7071 0.0000 -0.7071
vn -0.7071 0.0000 0.7071 vn -0.7071 0.0000 0.7071
vn -0.6060 -0.2741 -0.7468
vn 0.0995 -0.2741 -0.9565
vn 0.3827 -0.0000 -0.9239
vn -0.3827 -0.0000 -0.9239
vn -0.3822 0.8881 -0.2554
vn -0.0897 0.8881 -0.4509
vn -0.2554 -0.8881 0.3822 vn -0.2554 -0.8881 0.3822
vn -0.4509 -0.8881 0.0896 vn -0.4509 -0.8881 0.0896
vn -0.0207 0.3739 0.9272 vn 0.6066 -0.0001 0.7950
vn -0.6703 0.3739 0.6410 vn -0.3699 0.2562 0.8930
vn -0.3827 -0.0000 0.9239 vn -0.3827 -0.0000 0.9239
vn 0.3827 -0.0000 0.9239 vn 0.3827 -0.0000 0.9239
vn -0.9565 -0.2741 -0.0995
vn -0.9239 -0.0000 -0.3827
vn -0.4509 0.8881 0.0897
vn 0.0896 -0.8881 0.4509 vn 0.0896 -0.8881 0.4509
vn 0.6410 0.3739 0.6703 vn 0.9911 -0.0001 0.1332
vn 0.9239 -0.0000 0.3827 vn 0.9239 -0.0000 0.3827
vn -0.7468 -0.2741 0.6060
vn -0.9239 0.0000 0.3827
vn -0.2554 0.8881 0.3822
vn 0.3822 -0.8881 0.2554 vn 0.3822 -0.8881 0.2554
vn 0.9272 0.3739 0.0207 vn 0.7950 -0.0001 -0.6066
vn 0.9239 0.0000 -0.3827 vn 0.9239 0.0000 -0.3827
vn -0.0995 -0.2741 0.9565
vn 0.0897 0.8881 0.4509
vn 0.4509 -0.8881 -0.0896 vn 0.4509 -0.8881 -0.0896
vn 0.6703 0.3739 -0.6410 vn 0.1332 -0.0002 -0.9911
vn 0.6060 -0.2741 0.7468 vn 0.3827 0.0000 -0.9239
vn 0.3822 0.8881 0.2554
vn 0.2554 -0.8881 -0.3822 vn 0.2554 -0.8881 -0.3822
vn 0.0207 0.3739 -0.9272 vn -0.6066 0.0000 -0.7950
vn 0.9565 -0.2741 0.0995 vn -0.3827 -0.0000 -0.9239
vn 0.4509 0.8881 -0.0897
vn -0.0896 -0.8881 -0.4509 vn -0.0896 -0.8881 -0.4509
vn -0.6410 0.3739 -0.6703 vn -0.9911 0.0000 -0.1332
vn 0.7468 -0.2741 -0.6060 vn -0.9239 -0.0000 -0.3827
vn 0.2554 0.8881 -0.3822
vn -0.3822 -0.8881 -0.2554 vn -0.3822 -0.8881 -0.2554
vn -0.9272 0.3739 -0.0207 vn -0.7950 -0.0001 0.6066
vn -0.9239 -0.0000 0.3827
vn 0.0995 -0.2741 -0.9565
vn 0.7468 -0.2741 -0.6060
vn 0.8184 0.0000 -0.5746
vn 0.3735 -0.2177 -0.9017
vn 0.9565 -0.2741 0.0995
vn 0.9850 0.0000 0.1724
vn 0.6060 -0.2741 0.7468
vn 0.5746 0.0000 0.8184
vn -0.0995 -0.2741 0.9565
vn -0.1724 -0.0001 0.9850
vn -0.7468 -0.2741 0.6060
vn -0.8184 0.0000 0.5746
vn -0.9565 -0.2741 -0.0995
vn -0.9850 0.0000 -0.1724
vn -0.6060 -0.2741 -0.7468
vn -0.5746 0.0000 -0.8184
vn -0.2554 0.8881 0.3822
vn -0.4509 0.8881 0.0896
vn 0.0896 0.8881 0.4509
vn 0.3822 0.8881 0.2554
vn 0.4509 0.8881 -0.0896
vn 0.2554 0.8881 -0.3822
vn -0.0896 0.8881 -0.4509
vn -0.3822 0.8881 -0.2554
vn 0.0995 0.2741 -0.9565
vn 0.7468 0.2741 -0.6060
vn 0.9565 0.2741 0.0995
vn 0.6060 0.2741 0.7468
vn -0.0995 0.2741 0.9565
vn -0.7468 0.2741 0.6060
vn -0.9566 0.2739 -0.0994
vn -0.6060 0.2741 -0.7468
usemtl m_1 usemtl m_1
s off s off
f 235/1/1 236/2/1 238/3/1 237/4/1 f 203/1/1 204/2/1 206/3/1 205/4/1
f 241/5/2 242/6/2 240/7/2 239/8/2 f 209/5/2 210/6/2 208/7/2 207/8/2
f 237/9/3 241/10/3 239/11/3 235/12/3 f 205/9/3 209/10/3 207/11/3 203/12/3
f 242/13/4 238/14/4 236/15/4 240/16/4 f 210/13/4 206/14/4 204/15/4 208/16/4
usemtl m_2 usemtl m_2
f 237/17/5 238/18/5 242/19/5 241/20/5 f 205/17/5 206/18/5 210/19/5 209/20/5
f 239/21/6 240/22/6 236/23/6 235/24/6 f 207/21/6 208/22/6 204/23/6 203/24/6
usemtl m_0 usemtl m_0
f 19/25/4 74/26/4 9/27/4 20/28/4 f 19/25/4 74/26/4 9/27/4 20/28/4
f 9/29/5 20/30/5 41/31/5 f 9/29/6 41/30/6 20/31/6
f 19/32/6 74/33/6 40/34/6 f 19/32/5 40/33/5 74/34/5
f 18/35/7 19/36/7 20/37/7 21/38/7 f 18/35/7 19/36/7 20/37/7 21/38/7
f 20/39/5 21/40/5 41/31/5 f 20/39/6 41/30/6 21/40/6
f 18/41/6 19/42/6 40/34/6 f 18/41/5 40/33/5 19/42/5
f 28/43/2 18/44/2 21/45/2 38/46/2 f 28/43/2 18/44/2 21/45/2 38/46/2
f 21/47/5 38/48/5 41/31/5 f 21/47/6 41/30/6 38/48/6
f 28/49/6 18/50/6 40/34/6 f 28/49/5 40/33/5 18/50/5
f 37/51/8 28/52/8 38/53/8 39/54/8 f 37/51/8 28/52/8 38/53/8 39/54/8
f 38/55/5 39/56/5 41/31/5 f 38/55/6 41/30/6 39/56/6
f 37/57/6 28/58/6 40/34/6 f 37/57/5 40/33/5 28/58/5
f 58/59/3 37/60/3 39/61/3 59/62/3 f 58/59/3 37/60/3 39/61/3 59/62/3
f 39/63/5 59/64/5 41/31/5 f 39/63/6 41/30/6 59/64/6
f 58/65/6 37/66/6 40/34/6 f 58/65/5 40/33/5 37/66/5
f 65/67/9 58/68/9 59/69/9 60/70/9 f 65/67/9 58/68/9 59/69/9 60/70/9
f 59/71/5 60/72/5 41/31/5 f 59/71/6 41/30/6 60/72/6
f 65/73/6 58/74/6 40/34/6 f 65/73/5 40/33/5 58/74/5
f 75/75/1 65/76/1 60/77/1 76/78/1 f 75/75/1 65/76/1 60/77/1 76/78/1
f 60/79/5 76/80/5 41/31/5 f 60/79/6 41/30/6 76/80/6
f 75/81/6 65/82/6 40/34/6 f 75/81/5 40/33/5 65/82/5
f 74/83/10 75/84/10 76/85/10 9/86/10 f 74/83/10 75/84/10 76/85/10 9/86/10
f 76/87/5 9/88/5 41/31/5 f 76/87/6 41/30/6 9/88/6
f 74/89/6 75/90/6 40/34/6 f 74/89/5 40/33/5 75/90/5
f 133/91/1 134/92/1 136/93/1 135/94/1 f 101/91/1 102/92/1 104/93/1 103/94/1
f 135/95/5 136/96/5 140/97/5 139/98/5 f 103/95/5 104/96/5 108/97/5 107/98/5
f 139/99/2 140/100/2 138/101/2 137/102/2 f 107/99/2 108/100/2 106/101/2 105/102/2
f 137/103/6 138/104/6 134/105/6 133/106/6 f 105/103/6 106/104/6 102/105/6 101/106/6
f 140/107/4 136/108/4 134/109/4 138/110/4 f 108/107/4 104/108/4 102/109/4 106/110/4
f 148/111/2 150/112/2 151/113/2 149/114/2 f 116/111/2 118/112/2 119/113/2 117/114/2
f 150/115/5 154/116/5 155/117/5 151/118/5 f 118/115/5 122/116/5 123/117/5 119/118/5
f 154/119/1 152/120/1 153/121/1 155/122/1 f 122/119/1 120/120/1 121/121/1 123/122/1
f 152/123/6 148/124/6 149/125/6 153/126/6 f 120/123/6 116/124/6 117/125/6 121/126/6
f 155/127/4 153/128/4 149/129/4 151/130/4 f 123/127/4 121/128/4 117/129/4 119/130/4
f 164/131/1 166/132/1 167/133/1 165/134/1 f 132/131/1 134/132/1 135/133/1 133/134/1
f 166/135/6 170/136/6 171/137/6 167/138/6 f 134/135/6 138/136/6 139/137/6 135/138/6
f 170/139/2 168/140/2 169/141/2 171/142/2 f 138/139/2 136/140/2 137/141/2 139/142/2
f 168/143/5 164/144/5 165/145/5 169/146/5 f 136/143/5 132/144/5 133/145/5 137/146/5
f 171/147/4 169/148/4 165/149/4 167/150/4 f 139/147/4 137/148/4 133/149/4 135/150/4
f 180/151/2 181/152/2 183/153/2 182/154/2 f 148/151/2 149/152/2 151/153/2 150/154/2
f 182/155/6 183/156/6 187/157/6 186/158/6 f 150/155/6 151/156/6 155/157/6 154/158/6
f 186/159/1 187/160/1 185/161/1 184/162/1 f 154/159/1 155/160/1 153/161/1 152/162/1
f 184/163/5 185/164/5 181/165/5 180/166/5 f 152/163/5 153/164/5 149/165/5 148/166/5
f 187/167/4 183/168/4 181/169/4 185/170/4 f 155/167/4 151/168/4 149/169/4 153/170/4
f 192/171/1 194/172/1 195/173/1 193/174/1 f 160/171/1 162/172/1 163/173/1 161/174/1
f 194/175/5 198/176/5 199/177/5 195/178/5 f 162/175/5 166/176/5 167/177/5 163/178/5
f 198/179/2 196/180/2 197/181/2 199/182/2 f 166/179/2 164/180/2 165/181/2 167/182/2
f 196/183/6 192/184/6 193/185/6 197/186/6 f 164/183/6 160/184/6 161/185/6 165/186/6
f 199/187/3 197/188/3 193/189/3 195/190/3 f 167/187/3 165/188/3 161/189/3 163/190/3
f 204/191/2 205/192/2 207/193/2 206/194/2 f 172/191/2 173/192/2 175/193/2 174/194/2
f 206/195/5 207/196/5 211/197/5 210/198/5 f 174/195/5 175/196/5 179/197/5 178/198/5
f 210/199/1 211/200/1 209/201/1 208/202/1 f 178/199/1 179/200/1 177/201/1 176/202/1
f 208/203/6 209/204/6 205/205/6 204/206/6 f 176/203/6 177/204/6 173/205/6 172/206/6
f 211/207/3 207/208/3 205/209/3 209/210/3 f 179/207/3 175/208/3 173/209/3 177/210/3
f 216/211/1 217/212/1 219/213/1 218/214/1 f 184/211/1 185/212/1 187/213/1 186/214/1
f 218/215/6 219/216/6 223/217/6 222/218/6 f 186/215/6 187/216/6 191/217/6 190/218/6
f 222/219/2 223/220/2 221/221/2 220/222/2 f 190/219/2 191/220/2 189/221/2 188/222/2
f 220/223/5 221/224/5 217/225/5 216/226/5 f 188/223/5 189/224/5 185/225/5 184/226/5
f 223/227/3 219/228/3 217/229/3 221/230/3 f 191/227/3 187/228/3 185/229/3 189/230/3
f 227/231/2 229/232/2 230/233/2 228/234/2 f 195/231/2 197/232/2 198/233/2 196/234/2
f 229/235/6 233/236/6 234/237/6 230/238/6 f 197/235/6 201/236/6 202/237/6 198/238/6
f 233/239/1 231/240/1 232/241/1 234/242/1 f 201/239/1 199/240/1 200/241/1 202/242/1
f 231/243/5 227/244/5 228/245/5 232/246/5 f 199/243/5 195/244/5 196/245/5 200/246/5
f 234/247/3 232/248/3 228/249/3 230/250/3 f 202/247/3 200/248/3 196/249/3 198/250/3
s 1 s 1
f 8/251/6 2/252/6 1/253/6 7/254/6 f 8/251/6 2/252/6 1/253/6 7/254/6
f 2/252/2 4/255/2 3/256/2 1/253/2 f 2/252/2 4/255/2 3/256/2 1/253/2
@ -931,10 +963,10 @@ f 17/263/6 11/264/6 10/265/6 16/266/6
f 11/264/8 13/267/8 12/268/8 10/265/8 f 11/264/8 13/267/8 12/268/8 10/265/8
f 13/269/5 15/270/5 14/271/5 12/272/5 f 13/269/5 15/270/5 14/271/5 12/272/5
f 15/270/10 17/273/10 16/274/10 14/271/10 f 15/270/10 17/273/10 16/274/10 14/271/10
f 27/275/6 201/276/6 22/277/6 26/278/6 f 27/275/6 169/276/6 22/277/6 26/278/6
f 201/276/3 24/279/3 23/280/3 22/277/3 f 169/276/3 24/279/3 23/280/3 22/277/3
f 24/281/5 173/282/5 25/283/5 23/284/5 f 24/281/5 141/282/5 25/283/5 23/284/5
f 173/282/4 27/285/4 26/286/4 25/283/4 f 141/282/4 27/285/4 26/286/4 25/283/4
f 36/287/6 30/288/6 29/289/6 35/290/6 f 36/287/6 30/288/6 29/289/6 35/290/6
f 30/288/9 32/291/9 31/292/9 29/289/9 f 30/288/9 32/291/9 31/292/9 29/289/9
f 32/293/5 34/294/5 33/295/5 31/296/5 f 32/293/5 34/294/5 33/295/5 31/296/5
@ -947,10 +979,10 @@ f 57/311/6 51/312/6 50/313/6 56/314/6
f 51/312/10 53/315/10 52/316/10 50/313/10 f 51/312/10 53/315/10 52/316/10 50/313/10
f 53/317/5 55/318/5 54/319/5 52/320/5 f 53/317/5 55/318/5 54/319/5 52/320/5
f 55/318/8 57/321/8 56/322/8 54/319/8 f 55/318/8 57/321/8 56/322/8 54/319/8
f 189/323/6 126/324/6 61/325/6 64/326/6 f 157/323/6 94/324/6 61/325/6 64/326/6
f 126/324/4 157/327/4 62/328/4 61/325/4 f 94/324/4 125/327/4 62/328/4 61/325/4
f 157/329/5 213/330/5 63/331/5 62/332/5 f 125/329/5 181/330/5 63/331/5 62/332/5
f 213/330/3 189/333/3 64/334/3 63/331/3 f 181/330/3 157/333/3 64/334/3 63/331/3
f 73/335/6 67/336/6 66/337/6 72/338/6 f 73/335/6 67/336/6 66/337/6 72/338/6
f 67/336/7 69/339/7 68/340/7 66/337/7 f 67/336/7 69/339/7 68/340/7 66/337/7
f 69/341/5 71/342/5 70/343/5 68/344/5 f 69/341/5 71/342/5 70/343/5 68/344/5
@ -967,67 +999,83 @@ f 87/377/4 85/378/4 89/379/4 91/380/4
f 92/381/1 88/382/1 87/383/1 91/384/1 f 92/381/1 88/382/1 87/383/1 91/384/1
f 90/385/5 92/386/5 91/380/5 89/379/5 f 90/385/5 92/386/5 91/380/5 89/379/5
f 86/387/3 88/388/3 92/389/3 90/390/3 f 86/387/3 88/388/3 92/389/3 90/390/3
f 95/391/11 123/392/12 124/393/13 96/394/14 f 99/391/1 96/392/1 94/393/1 97/394/1
f 121/395/5 93/396/5 96/397/15 124/398/16 f 100/395/6 95/396/6 96/392/6 99/391/6
f 94/399/17 122/400/18 123/392/6 95/391/6 f 94/397/4 96/398/4 95/399/4 93/400/4
f 93/401/19 121/402/20 122/400/21 94/399/22 f 114/401/2 112/402/2 27/403/2 111/404/2
f 99/403/23 95/404/11 96/405/14 100/406/24 f 115/405/6 114/401/6 111/404/6 110/406/6
f 93/407/5 97/408/5 100/409/25 96/410/15 f 27/407/4 109/408/4 110/409/4 111/410/4
f 98/411/26 94/412/17 95/404/6 99/403/6 f 130/411/1 128/412/1 125/413/1 127/414/1
f 97/413/27 93/414/19 94/412/22 98/411/28 f 131/415/5 130/411/5 127/414/5 126/416/5
f 103/415/29 99/416/23 100/417/24 104/418/30 f 125/417/4 124/418/4 126/419/4 127/420/4
f 97/419/5 101/420/5 104/421/31 100/422/25 f 146/421/2 143/422/2 141/423/2 144/424/2
f 102/423/32 98/424/26 99/416/6 103/415/6 f 147/425/5 142/426/5 143/422/5 146/421/5
f 101/425/33 97/426/27 98/424/28 102/423/34 f 141/427/4 143/428/4 142/429/4 140/430/4
f 107/427/35 103/428/29 104/429/30 108/430/21 f 99/391/1 97/394/1 157/431/1 159/432/1
f 101/431/5 105/432/5 108/433/36 104/434/31 f 100/395/6 99/391/6 159/432/6 158/433/6
f 106/435/37 102/436/32 103/428/6 107/427/6 f 157/434/3 156/435/3 158/436/3 159/437/3
f 105/437/38 101/438/33 102/436/34 106/435/13 f 114/401/2 171/438/2 169/439/2 112/402/2
f 111/439/39 107/440/35 108/441/21 112/442/22 f 115/405/6 170/440/6 171/438/6 114/401/6
f 105/443/5 109/444/5 112/445/40 108/446/36 f 169/441/3 171/442/3 170/443/3 168/444/3
f 110/447/41 106/448/37 107/440/6 111/439/6 f 130/411/1 183/445/1 181/446/1 128/412/1
f 109/449/42 105/450/38 106/448/13 110/447/14 f 131/415/5 182/447/5 183/445/5 130/411/5
f 115/451/43 111/452/39 112/453/22 116/454/28 f 181/448/3 183/449/3 182/450/3 180/451/3
f 109/455/5 113/456/5 116/457/44 112/458/40 f 146/421/2 144/424/2 24/452/2 194/453/2
f 114/459/45 110/460/41 111/452/6 115/451/6 f 147/425/5 146/421/5 194/453/5 193/454/5
f 113/461/46 109/462/42 110/460/14 114/459/24 f 24/455/3 192/456/3 193/457/3 194/458/3
f 119/463/47 115/464/43 116/465/28 120/466/34 f 211/459/11 225/460/12 226/461/6 212/462/6
f 113/467/5 117/468/5 120/469/48 116/470/44 f 235/463/13 236/464/14 225/460/15 211/459/16
f 118/471/49 114/472/45 115/464/6 119/463/6 f 213/465/17 211/466/11 212/467/6 214/468/6
f 117/473/50 113/474/46 114/472/24 118/471/30 f 237/469/18 235/470/13 211/466/16 213/465/19
f 123/475/12 119/476/47 120/477/34 124/478/13 f 215/471/20 213/472/17 214/473/6 216/474/6
f 117/479/5 121/480/5 124/481/16 120/482/48 f 238/475/21 237/476/18 213/472/19 215/471/22
f 122/483/18 118/484/49 119/476/6 123/475/6 f 217/477/23 215/478/20 216/479/6 218/480/6
f 121/485/20 117/486/50 118/484/30 122/483/21 f 239/481/24 238/482/21 215/478/22 217/477/25
f 131/487/1 128/488/1 126/489/1 129/490/1 f 219/483/26 217/484/23 218/485/6 220/486/6
f 132/491/6 127/492/6 128/488/6 131/487/6 f 240/487/27 239/488/24 217/484/25 219/483/28
f 126/493/4 128/494/4 127/495/4 125/496/4 f 221/489/29 219/490/26 220/491/6 222/492/6
f 146/497/2 144/498/2 27/499/2 143/500/2 f 241/493/30 240/494/27 219/490/28 221/489/31
f 147/501/6 146/497/6 143/500/6 142/502/6 f 223/495/32 221/496/29 222/497/6 224/498/6
f 27/503/4 141/504/4 142/505/4 143/506/4 f 242/499/33 241/500/30 221/496/31 223/495/34
f 162/507/1 160/508/1 157/509/1 159/510/1 f 225/501/12 223/502/32 224/503/6 226/504/6
f 163/511/5 162/507/5 159/510/5 158/512/5 f 236/505/14 242/506/33 223/502/34 225/501/15
f 157/513/4 156/514/4 158/515/4 159/516/4 f 226/504/35 224/503/36 234/507/37 228/508/38
f 178/517/2 175/518/2 173/519/2 176/520/2 f 224/498/36 222/497/39 233/509/40 234/510/37
f 179/521/5 174/522/5 175/518/5 178/517/5 f 222/492/39 220/491/41 232/511/42 233/512/40
f 173/523/4 175/524/4 174/525/4 172/526/4 f 220/486/41 218/485/43 231/513/44 232/514/42
f 131/487/1 129/490/1 189/527/1 191/528/1 f 218/480/43 216/479/45 230/515/46 231/516/44
f 132/491/6 131/487/6 191/528/6 190/529/6 f 216/474/45 214/473/47 229/517/48 230/518/46
f 189/530/3 188/531/3 190/532/3 191/533/3 f 214/468/47 212/467/49 227/519/50 229/520/48
f 146/497/2 203/534/2 201/535/2 144/498/2 f 212/462/49 226/461/35 228/521/38 227/522/50
f 147/501/6 202/536/6 203/534/6 146/497/6 f 243/523/51 244/524/5 258/525/5 257/526/52
f 201/537/3 203/538/3 202/539/3 200/540/3 f 235/463/13 243/523/16 257/526/15 236/464/14
f 162/507/1 215/541/1 213/542/1 160/508/1 f 245/527/53 246/528/5 244/529/5 243/530/51
f 163/511/5 214/543/5 215/541/5 162/507/5 f 237/469/18 245/527/19 243/530/16 235/470/13
f 213/544/3 215/545/3 214/546/3 212/547/3 f 247/531/54 248/532/5 246/533/5 245/534/53
f 178/517/2 176/520/2 24/548/2 226/549/2 f 238/475/21 247/531/22 245/534/19 237/476/18
f 179/521/5 178/517/5 226/549/5 225/550/5 f 249/535/55 250/536/5 248/537/5 247/538/54
f 24/551/3 224/552/3 225/553/3 226/554/3 f 239/481/24 249/535/25 247/538/22 238/482/21
l 132 130 f 251/539/56 252/540/5 250/541/5 249/542/55
l 129 130 f 240/487/27 251/539/28 249/542/25 239/488/24
f 253/543/57 254/544/5 252/545/5 251/546/56
f 241/493/30 253/543/31 251/546/28 240/494/27
f 255/547/58 256/548/5 254/549/5 253/550/57
f 242/499/33 255/547/34 253/550/31 241/500/30
f 257/551/52 258/552/5 256/553/5 255/554/58
f 236/505/14 257/551/15 255/554/34 242/506/33
f 258/552/59 228/508/38 234/507/37 256/553/60
f 256/548/60 234/510/37 233/509/40 254/549/61
f 254/544/61 233/512/40 232/511/42 252/545/62
f 252/540/62 232/514/42 231/513/44 250/541/63
f 250/536/63 231/516/44 230/515/46 248/537/64
f 248/532/64 230/518/46 229/517/48 246/533/65
f 246/528/65 229/520/48 227/519/50 244/529/66
f 244/524/66 227/522/50 228/521/38 258/525/59
l 100 98
l 97 98
l 115 113
l 112 113
l 131 129
l 128 129
l 147 145 l 147 145
l 144 145 l 144 145
l 163 161
l 160 161
l 179 177
l 176 177

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B