Many crazy things

This commit is contained in:
Anuken
2021-11-14 23:10:15 -05:00
parent 70cf55f314
commit 486622e3e4
86 changed files with 472 additions and 318 deletions

View File

Before

Width:  |  Height:  |  Size: 274 B

After

Width:  |  Height:  |  Size: 274 B

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

View File

@@ -1312,7 +1312,7 @@ block.rotary-pump.name = Rotary Pump
block.thorium-reactor.name = Thorium Reactor
block.mass-driver.name = Mass Driver
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.impulse-pump.name = Impulse Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
@@ -1512,7 +1512,7 @@ block.underflow-gate.description = Opposite of an overflow gate. Outputs to the
block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers.
block.mechanical-pump.description = Pumps and outputs liquids. Does not require power.
block.rotary-pump.description = Pumps and outputs liquids. Requires power.
block.thermal-pump.description = Pumps and outputs liquids.
block.impulse-pump.description = Pumps and outputs liquids.
block.conduit.description = Moves liquids forward. Used in conjunction with pumps and other conduits.
block.pulse-conduit.description = Moves liquids forward. Transports faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids forward. Does not accept input from the sides. Does not leak.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Ротарны насос
block.thorium-reactor.name = Торыявы рэактар
block.mass-driver.name = Электрамагнітная катапульта
block.blast-drill.name = Паветраная буравая ўстаноўка
block.thermal-pump.name = Тэрмальны насос
block.impulse-pump.name = Тэрмальны насос
block.thermal-generator.name = Тэрмальны генератар
block.alloy-smelter.name = Плавільня кінэтычнага сплаву
block.mender.name = Рэгенератар
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = Супрацьлегласць залішня
block.mass-driver.description = Самы прасунуты транспартны блок. Збірае некалькі прадметаў і затым страляе імі ў іншую катапульту на вялікай адлегласці. Патрабуецца энергія для працы.
block.mechanical-pump.description = Танны насос з нізкай прадукцыйнасцю, але без энергаспажывання.
block.rotary-pump.description = Прасунутая помпа. Пампуе больш вадкасці, але патрабуе энергію.
block.thermal-pump.description = Найлепшая помпа.
block.impulse-pump.description = Найлепшая помпа.
block.conduit.description = Асноўны блок транспарціроўкі вадкасці. Перамяшчае вадкасці наперад. Выкарыстоўваецца сумесна з помпамі і іншымі трубаправодамі.
block.pulse-conduit.description = Палепшаны блок транспарціроўкі вадкасці. Транспартуе вадкасці хутчэй і захоўвае больш, чым стандартныя трубаправоды.
block.plated-conduit.description = Перамяшчае вадкасці з той жа хуткасцю, што і імпульсныя трубаправоды, але валодае большай трываласцю. Не бярэ вадкасці са бакоў, акрамя як ад іншых трубаправодаў. \nПротекает менш.

View File

@@ -1238,7 +1238,7 @@ block.rotary-pump.name = Ротационна помпа
block.thorium-reactor.name = Ториев реактор
block.mass-driver.name = Масов Преносител
block.blast-drill.name = Въздушно свредло
block.thermal-pump.name = Термична Помпа
block.impulse-pump.name = Термична Помпа
block.thermal-generator.name = Термичен Генератор
block.alloy-smelter.name = Претопител за Импулсна сплав
block.mender.name = Възстановител
@@ -1423,7 +1423,7 @@ block.underflow-gate.description = Насочва предмети напред
block.mass-driver.description = Структура за пренасяне на предмети на далечни растояния. Събира партиди от предмети и ги изстрелва до други Масови Преносители.
block.mechanical-pump.description = Изпомпва течности. Не изисква електричество.
block.rotary-pump.description = Изпомпва течности. Изисква електричество.
block.thermal-pump.description = Изпомпва течности.
block.impulse-pump.description = Изпомпва течности.
block.conduit.description = Пренася течности еднопосочно. Използва се в комбинация с помпи и други тръбопроводи.
block.pulse-conduit.description = Пренася течности еднопосочно. Пренася по - бързо и съхранява повече от стандартния тръбопровод.
block.plated-conduit.description = Пренася течности еднопосочно. Не приема вход от страни. Не позволява течове.

View File

@@ -1188,7 +1188,7 @@ block.rotary-pump.name = Rotační čerpadlo
block.thorium-reactor.name = Thoriový reaktor
block.mass-driver.name = Hromadný přenašeč
block.blast-drill.name = Tlakovzdušný vrt
block.thermal-pump.name = Tepelné čerpadlo
block.impulse-pump.name = Tepelné čerpadlo
block.thermal-generator.name = Tepelný generátor
block.alloy-smelter.name = Slitinová huť
block.mender.name = Opravář
@@ -1373,7 +1373,7 @@ block.underflow-gate.description = Pokud je směr do stran ucpán, posílá vstu
block.mass-driver.description = Konstrukce pro přepravu položek na velkou vzdálenost. Sesere dávku položek a vystřelí ji k dalšímu hromadnému přenašeči.
block.mechanical-pump.description = Pumpuje kapalinu a předává ji dál. Nevyžaduje energii.
block.rotary-pump.description = Pumpuje kapalinu a předává ji dál. Vyžaduje energii.
block.thermal-pump.description = Pumpuje kapalinu a předává ji dál.
block.impulse-pump.description = Pumpuje kapalinu a předává ji dál.
block.conduit.description = Přepravuje kapaliny vpřed. Používá se spolu s pumpami a dalším potrubím.
block.pulse-conduit.description = Přepravuje kapaliny vpřed. Přepravuje kapaliny rychleji a ukládá jich více, než standadní potrubí.
block.plated-conduit.description = Přepravuje kapaliny vpřed. Nepřijímá kapaliny ze stran. Nemá úniky.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Drejepumpe
block.thorium-reactor.name = Atomreaktor
block.mass-driver.name = Kvante-katapult
block.blast-drill.name = Trykluftbor
block.thermal-pump.name = Termisk Pumpe
block.impulse-pump.name = Termisk Pumpe
block.thermal-generator.name = Termisk Generator
block.alloy-smelter.name = Bronze-digel
block.mender.name = Reparatør
@@ -1276,7 +1276,7 @@ block.underflow-gate.description = Det modsatte af en overflods-låge. Outputter
block.mass-driver.description = Den ultimative transport-blok. Samler en masse genstande og slynger dem hovedkulds gennem luften til den kvante-katapult.
block.mechanical-pump.description = En hverdags-pumpe, der ikke engang kræver strøm.
block.rotary-pump.description = En drønhurtig pumpe. Pumper mere væske, kræver mere strøm.
block.thermal-pump.description = Den allerbedste pumpe.
block.impulse-pump.description = Den allerbedste pumpe.
block.conduit.description = Simpel væske-transport-blok. Transporterer væske fremad. Bruges sammen med pumper, eller i forlængelse af andre rør.
block.pulse-conduit.description = En avanceret væske-transport-blok. Transporterer væske hurtigere og opbevarer mere end normale rør.
block.plated-conduit.description = Transporterer væske lige så hurtigt som højhastigheds-rør. Kan ikke tage væske ind fra siderne.\nLækker mindre.

View File

@@ -1301,7 +1301,7 @@ block.rotary-pump.name = Rotierende Pumpe
block.thorium-reactor.name = Thorium-Reaktor
block.mass-driver.name = Massenbeschleuniger
block.blast-drill.name = Sprengluftbohrer
block.thermal-pump.name = Thermische Pumpe
block.impulse-pump.name = Thermische Pumpe
block.thermal-generator.name = Thermischer Generator
block.alloy-smelter.name = Legierungsschmelze
block.mender.name = Reparateur
@@ -1495,7 +1495,7 @@ block.underflow-gate.description = Das Gegenteil eines Überlauftors. Gibt Mater
block.mass-driver.description = Ein Transportblock mit sehr hoher Reichweite. Sammelt mehrere Materialien und schießt sie zu einem verbundenen Massenbeschleuniger.
block.mechanical-pump.description = Eine Pumpe, die keinen Strom benötigt.
block.rotary-pump.description = Eine Pumpe, die Strom verbraucht.
block.thermal-pump.description = Eine Pumpe.
block.impulse-pump.description = Eine Pumpe.
block.conduit.description = Transportiert Flüssigkeiten. Wird mit Extraktoren, Pumpen oder anderen Kanälen benutzt.
block.pulse-conduit.description = Transportiert Flüssigkeiten. Transportiert Flüssigkeiten schneller und speichert mehr als ein Leitungsrohr.
block.plated-conduit.description = Transportiert Flüssigkeiten. Nimmt keine Flüssigkeiten von der Seite an.\nHat keine Lecks.

View File

@@ -1306,7 +1306,7 @@ block.rotary-pump.name = Bomba Rotatoria
block.thorium-reactor.name = Reactor de Torio
block.mass-driver.name = Teletransportador de Masa
block.blast-drill.name = Taladro de explosión
block.thermal-pump.name = Bomba Térmica
block.impulse-pump.name = Bomba Térmica
block.thermal-generator.name = Generador Térmico
block.alloy-smelter.name = Fundidor de Materia
block.mender.name = Reparador
@@ -1506,7 +1506,7 @@ block.underflow-gate.description = El opuesto de la compuerta de desborde. Sólo
block.mass-driver.description = Estructura de transporte de largo alcance. Acumula varios objetos y los dispara a otro del mismo tipo.
block.mechanical-pump.description = Extrae y bombea líquidos. Funciona sin energía.
block.rotary-pump.description = Extrae y bombea líquidos. Requiere energía.
block.thermal-pump.description = Extrae y bombea líquidos.
block.impulse-pump.description = Extrae y bombea líquidos.
block.conduit.description = Mueve líquidos hacia delante. Se usa junto con bombas y otros conductos.
block.pulse-conduit.description = Transporta líquidos rápidamente y almacena más que los conductos estándar.
block.plated-conduit.description = Transporta líquidos rápidamente pero no acepta líquidos por los lados. Resiste más ante fugas, por lo que no gotea.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Labapump
block.thorium-reactor.name = Tooriumreaktor
block.mass-driver.name = EM-katapult
block.blast-drill.name = Plahvatuspuur
block.thermal-pump.name = Termopump
block.impulse-pump.name = Termopump
block.thermal-generator.name = Termogeneraator
block.alloy-smelter.name = Voogsulatusahi
block.mender.name = Parandaja
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = Ülim ressursside transportimise vahend. Tulistab ressursse pika vahemaa taga asuva vastuvõtva katapuldini. Vajab töötamiseks energiat.
block.mechanical-pump.description = Odav ja aeglane pump, mis ei vaja töötamiseks energiat.
block.rotary-pump.description = Täiustatud pump, mis pumpab paremini kui harilik pump, kuid vajab töötamiseks energiat.
block.thermal-pump.description = Ülim pump, mis vajab töötamiseks palju energiat.
block.impulse-pump.description = Ülim pump, mis vajab töötamiseks palju energiat.
block.conduit.description = Vedelike transportimise vahend, mis liigutab vedelikke edasi. Kasutatakse koos pumpade ja teiste torudega.
block.pulse-conduit.description = Täiustatud toru, mis transpordib ja hoiustab vedelikke kiiremini kui algeline toru.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Ponpa birakaria
block.thorium-reactor.name = Toriozko erreaktorea
block.mass-driver.name = Mukulu igorlea
block.blast-drill.name = Zurrusta zulagailua
block.thermal-pump.name = Ponpa termikoa
block.impulse-pump.name = Ponpa termikoa
block.thermal-generator.name = Sorgailu termikoa
block.alloy-smelter.name = Aleazio urtzailea
block.mender.name = Bedezi
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = Elementuen garraiorako bloke gorena. Hainbat elementu jaso eta beste mukulu-igorle bati jaurtitzen dizkio irismen handiarekin. Energia behar du jarduteko.
block.mechanical-pump.description = Ponpa merke bat, emari motelekoa baina ez du energiarik kontsumitzen.
block.rotary-pump.description = Ponpa aurreratu bat. Likido gehiago barreiatzen du, baina energia behar du.
block.thermal-pump.description = Ponpa gorena.
block.impulse-pump.description = Ponpa gorena.
block.conduit.description = Likidoen garraiorako oinarrizko blokea. Likidoak daramatza. Ponpa eta bestelako hodiekin batera erabilia.
block.pulse-conduit.description = Likidoen garraiorako bloke aurreratua. Hodi arruntek baino azkarrago garraiatzen ditu likidoak eta edukiera handiagoa du.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump
block.thorium-reactor.name = Thorium Reactor
block.mass-driver.name = Massalinko
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.impulse-pump.name = Thermal Pump
block.thermal-generator.name = Lämpögeneraattori
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption.
block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power.
block.thermal-pump.description = The ultimate pump.
block.impulse-pump.description = The ultimate pump.
block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits.
block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump
block.thorium-reactor.name = Thorium Reactor
block.mass-driver.name = Mass Driver
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.impulse-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption.
block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power.
block.thermal-pump.description = The ultimate pump.
block.impulse-pump.description = The ultimate pump.
block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits.
block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1314,7 +1314,7 @@ block.rotary-pump.name = Pompe Rotative
block.thorium-reactor.name = Réacteur à Thorium
block.mass-driver.name = Transporteur de masse
block.blast-drill.name = Foreuse à explosion
block.thermal-pump.name = Pompe thermique
block.impulse-pump.name = Pompe thermique
block.thermal-generator.name = Générateur thermique
block.alloy-smelter.name = Fonderie d'Alliage Superchargé
block.mender.name = Gardien
@@ -1515,7 +1515,7 @@ block.underflow-gate.description = Le contraire d'une barrière de débordement.
block.mass-driver.description = Le moyen de transport de ressources ultime! Cette structure collecte des lots de ressources et les envoie à un autre transporteur de masse, sur une longue distance. Nécessite de l'énergie pour fonctionner.
block.mechanical-pump.description = Une pompe basique et bon marché qui pompe lentement des liquides. Elle ne consomme pas d'énergie.
block.rotary-pump.description = Une pompe avancée, plus rapide, mais utilisant de l'énergie.
block.thermal-pump.description = La pompe ultime.
block.impulse-pump.description = La pompe ultime.
block.conduit.description = Bloc de transport de liquide de base, faisant avancer les liquides. Utilisé avec des pompes et autres conduits.
block.pulse-conduit.description = Conduit avancé permettant le transport de liquide. Transporte les liquides plus rapidement et en stocke plus que les conduits standards.
block.plated-conduit.description = Déplace les liquides au même rythme que les conduits à impulsion, mais est renforcé et empêche les fuites en cas de rupture. N'accepte pas les liquides provenant des côtés, seuls les autres conduits peuvent le faire.

View File

@@ -1208,7 +1208,7 @@ block.rotary-pump.name = Rotary Pump
block.thorium-reactor.name = Thorium Reactor
block.mass-driver.name = Mass Driver
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.impulse-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
@@ -1393,7 +1393,7 @@ block.underflow-gate.description = Csak akkor enged tovább nyersanyagokat előr
block.mass-driver.description = Nagy hatótávolságú nyeranyagszállító. Csomagokban lő át nyersanyagokat egy másik mass drivernek.
block.mechanical-pump.description = Folyadékot szivattyúz. Nem igényel áramot.
block.rotary-pump.description = Folyadékot szivattyúz. Árammal működik.
block.thermal-pump.description = Folyadékot szivattyúz. Sokat termel, sok áramot fogyaszt.
block.impulse-pump.description = Folyadékot szivattyúz. Sokat termel, sok áramot fogyaszt.
block.conduit.description = Folyadékot továbbít.
block.pulse-conduit.description = Folyadékot továbbít. Gyorsabb és nagyobb tárolókapacitású, mint a sima conduit.
block.plated-conduit.description = Folyadékot továbbít. Nem fogad el folyadékot oldalról. Nem önti ki a folyadékot, ha nincs a végén semmi.

View File

@@ -1308,7 +1308,7 @@ block.rotary-pump.name = Pompa Putaran
block.thorium-reactor.name = Reaktor Thorium
block.mass-driver.name = Penggerak Massal
block.blast-drill.name = Bor Ledakan Udara
block.thermal-pump.name = Pompa Suhu Panas
block.impulse-pump.name = Pompa Suhu Panas
block.thermal-generator.name = Generator Panas
block.alloy-smelter.name = Pelebur Paduan Logam
block.mender.name = Mender
@@ -1508,7 +1508,7 @@ block.underflow-gate.description = Kebalikan dari gerbang luap. Mengeluarkan bar
block.mass-driver.description = Blok transportasi barang jarak jauh. Membawa beberapa barang dan menembaknya ke penggerak massal lainnya.
block.mechanical-pump.description = Memompa dan mengeluarkan cairan. Tidak memerlukan tenaga.
block.rotary-pump.description = Memompa dan mengeluarkan cairan. Menggunakan tenaga.
block.thermal-pump.description = Memeompa dan mengluarkan cairan.
block.impulse-pump.description = Memeompa dan mengluarkan cairan.
block.conduit.description = Memindahkan cairan ke depan. Digunakan dengan pompa dan saluran lainnya.
block.pulse-conduit.description = Memindahkan cairan ke depan. Mengantarkan lebih cepat dan banyak daripada saluran biasa.
block.plated-conduit.description = Memindahkan cairan ke depan. Tidak menerima cairan dari samping. Tidak bocor.

View File

@@ -1188,7 +1188,7 @@ block.rotary-pump.name = Pompa a Turbina
block.thorium-reactor.name = Reattore al Torio
block.mass-driver.name = Lancia Materiali
block.blast-drill.name = Trivella ad Impulsi
block.thermal-pump.name = Pompa Termica
block.impulse-pump.name = Pompa Termica
block.thermal-generator.name = Generatore Termico
block.alloy-smelter.name = Altoforno
block.mender.name = Riparatore
@@ -1371,7 +1371,7 @@ block.underflow-gate.description = L'esatto opposto del separatore per eccesso.
block.mass-driver.description = Struttura per il trasporto di oggetti a lungo raggio. Immagazzina lotti di oggetti e li spara ad un altro trasportatore di massa.
block.mechanical-pump.description = Pompa liquidi. Non richiede energia.
block.rotary-pump.description = Pompa liquidi. Richiede energia.
block.thermal-pump.description = Pompa liquidi.
block.impulse-pump.description = Pompa liquidi.
block.conduit.description = Trasporta i liquidi. Spesso usato insieme a pompe e altri condotti.
block.pulse-conduit.description = Trasporta i liquidi più velocemente. Ha una capacità maggiore rispetto ai condotti tradizionali.
block.plated-conduit.description = Trasporta i liquidi. Non accetta liquidi dai lati. Non spande.

View File

@@ -1312,7 +1312,7 @@ block.rotary-pump.name = ロータリーポンプ
block.thorium-reactor.name = トリウムリアクター
block.mass-driver.name = マスドライバー
block.blast-drill.name = エアブラストドリル
block.thermal-pump.name = サーマルポンプ
block.impulse-pump.name = サーマルポンプ
block.thermal-generator.name = サーマル発電機
block.alloy-smelter.name = 合金溶鉱炉
block.mender.name = 修復機
@@ -1513,7 +1513,7 @@ block.underflow-gate.description = オーバーフローゲートの反対の機
block.mass-driver.description = 長距離の輸送が可能な上位アイテム輸送ブロックです。離れた別のマスドライバーにアイテムを発射します。
block.mechanical-pump.description = 安価なポンプです。搬出速度は遅いですが、電力を使わず使用できます。
block.rotary-pump.description = 高度なポンプです。電力が必要ですが、より多く搬出することができます。
block.thermal-pump.description = 最高性能のポンプです。
block.impulse-pump.description = 最高性能のポンプです。
block.conduit.description = 一般的な液体輸送ブロックです。液体版のコンベアーです。ポンプや他のパイプに使うことができます。
block.pulse-conduit.description = 高度な液体輸送ブロックです。通常のパイプより速くたくさんの液体を輸送することができます。
block.plated-conduit.description = パルスパイプと同じ速度で液体を輸送することができ、耐久性に優れています。\nまた、パイプ以外による側面への入力を受け入れません。

View File

@@ -1308,7 +1308,7 @@ block.rotary-pump.name = 동력 펌프
block.thorium-reactor.name = 토륨 원자로
block.mass-driver.name = 매스 드라이버
block.blast-drill.name = 압축 공기분사 드릴
block.thermal-pump.name = 화력 펌프
block.impulse-pump.name = 화력 펌프
block.thermal-generator.name = 지열 발전기
block.alloy-smelter.name = 설금 제련소
block.mender.name = 멘더
@@ -1508,7 +1508,7 @@ block.underflow-gate.description = 오버플로 게이트의 반대. 왼쪽 및
block.mass-driver.description = 최고의 자원 운송 블록. 여러 자원을 모아서 장거리에 걸쳐 다른 매스 드라이버에게 발사합니다. 작동하려면 전원이 필요합니다.
block.mechanical-pump.description = 느린 속도로 액체를 퍼 올리지만, 전력을 사용하지 않는 펌프입니다.
block.rotary-pump.description = 고급 펌프. 더 많은 액체를 퍼 올리지만, 전력이 필요합니다.
block.thermal-pump.description = 가장 강력한 펌프.
block.impulse-pump.description = 가장 강력한 펌프.
block.conduit.description = 기본 액체 운송 블록. 액체를 앞으로 이동시킵니다. 펌프 및 기타 파이프와 함께 사용됩니다.
block.pulse-conduit.description = 고급 액체 운송 블록. 액체를 더 빠르게 운반하고 표준 파이프보다 더 많이 저장합니다.
block.plated-conduit.description = 펄스 파이프와 같은 속도로 이동하지만 더 높은 방어력을 가지고 있습니다. 측면에서 액체들을 받아들이지 않습니다.\n액체가 누설하지 않습니다.
@@ -1877,7 +1877,7 @@ block.underflow-gate.details =
block.mass-driver.details = [lightgray][비공식][]발사하려면 최소 아이템 10개가 필요하다.
block.mechanical-pump.details =
block.rotary-pump.details =
block.thermal-pump.details =
block.impulse-pump.details =
block.conduit.details =
block.pulse-conduit.details =
block.plated-conduit.details =

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotacinis Siurblys
block.thorium-reactor.name = Torio Reaktorius
block.mass-driver.name = Elektromagnetinė Katapulta
block.blast-drill.name = Oro Srovės Grąžtas
block.thermal-pump.name = Šiluminė Pompa
block.impulse-pump.name = Šiluminė Pompa
block.thermal-generator.name = Terminis Generatorius
block.alloy-smelter.name = Lydinio Lydykla
block.mender.name = Taisytojas
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = Veikia priešingai nei perpildymo užtvara. I
block.mass-driver.description = Tobuliausias daiktų gabenimo blokas. Surenka daiktus ir šauna juos į kitą elektromagnetinę katapultą didelias atstumais. Veikimui reikalauja energijos.
block.mechanical-pump.description = pigi pompa su lėta išeiga, bet nenaudoja energijos.
block.rotary-pump.description = Pažangesnė pompa. Pumpuoja daugiau skysčių, bet reikalauja energijos.
block.thermal-pump.description = Tobuliausia pompa.
block.impulse-pump.description = Tobuliausia pompa.
block.conduit.description = Paprastas vandens gabenimo blokas. Gabena skysčius į priekį. Naudojamas kartu su siurbliais ir kitais vamzdžiais.
block.pulse-conduit.description = Pažangus vandens gabenimo blokas. Gabena skysčius greičiau ir talpina daugiau skysčių negu standartinis vamzdis.
block.plated-conduit.description = Gabena skysčius tokiuo pačiu greičiu kaip pulsinis vamzdis, tačiau turi daugiau šarvų. Nepriima skysčių iš šonų, išskyrus kitus vamzdžius.\nMažiau nutekina skysčių.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump
block.thorium-reactor.name = Thoriumreactor
block.mass-driver.name = Mass Driver
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermische Pomp
block.impulse-pump.name = Thermische Pomp
block.thermal-generator.name = Thermische Generator
block.alloy-smelter.name = Legering Smelterij
block.mender.name = Mender
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption.
block.rotary-pump.description = An advanced pump which doubles up speed by using power.
block.thermal-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava.
block.impulse-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava.
block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits.
block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump
block.thorium-reactor.name = Thorium Reactor
block.mass-driver.name = Mass Driver
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.impulse-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption.
block.rotary-pump.description = An advanced pump which doubles up speed by using power.
block.thermal-pump.description = The ultimate pump.
block.impulse-pump.description = The ultimate pump.
block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits.
block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1254,7 +1254,7 @@ block.rotary-pump.name = Wirowa Pompa
block.thorium-reactor.name = Reaktor Torowy
block.mass-driver.name = Katapulta Masy
block.blast-drill.name = Wiertło Wybuchowe
block.thermal-pump.name = Pompa Termalna
block.impulse-pump.name = Pompa Termalna
block.thermal-generator.name = Generator Termalny
block.alloy-smelter.name = Piec Mieszający
block.mender.name = Naprawiacz
@@ -1439,7 +1439,7 @@ block.underflow-gate.description = Odwrotność bramy przepełnieniowej, który
block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości.
block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu.
block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania.
block.thermal-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilania.
block.impulse-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilania.
block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami.
block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury.
block.plated-conduit.description = Przesyła ciecze z taką samą szybkością co rura tytanowa, ale jest bardziej odporna. Wejściami bocznymi mogą być tylko inne rury.\nWycieka z niej mniej cieczy.

View File

@@ -1292,7 +1292,7 @@ block.rotary-pump.name = Bomba rotatória
block.thorium-reactor.name = Reator nuclear
block.mass-driver.name = Catapulta eletromagnética
block.blast-drill.name = Broca de impacto
block.thermal-pump.name = Bomba térmica
block.impulse-pump.name = Bomba térmica
block.thermal-generator.name = Gerador térmico
block.alloy-smelter.name = Fundidora de liga
block.mender.name = Reparador
@@ -1459,7 +1459,7 @@ block.underflow-gate.description = O oposto de um portão de sobrecarga. Apenas
block.mass-driver.description = Estrutura de transporte de itens de longo alcance. Coleta grupos de itens e os atira em outras catapultas electromagnéticas.
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos que não consome energia.
block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia.
block.thermal-pump.description = A bomba final. Bombeia líquidos com o máximo de eficiência, mas requer uma quantidade maior de energia.
block.impulse-pump.description = A bomba final. Bombeia líquidos com o máximo de eficiência, mas requer uma quantidade maior de energia.
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
block.pulse-conduit.description = Bloco avancado de transporte de líquido. Transporta líquidos mais rápido e armazena mais que os canos padrões.
block.plated-conduit.description = Move líquidos na mesma velocidade que canos de pulso, mas possui mais blindagem. Não aceita fluidos dos lados de nada além de outros canos.\nVaza menos.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Bomba Rotatória
block.thorium-reactor.name = Reator a Tório
block.mass-driver.name = Drive de Massa
block.blast-drill.name = Broca de Explosão
block.thermal-pump.name = Bomba térmica
block.impulse-pump.name = Bomba térmica
block.thermal-generator.name = Gerador Térmico
block.alloy-smelter.name = Fundidora de Liga
block.mender.name = Reparador
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = O oposto de um portão de transbordamento. Sa
block.mass-driver.description = Bloco de transporte de itens supremo. Coleta itens severos e atira eles em outro mass driver de uma longa distancia.
block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos, mas sem consumo de energia.
block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia.
block.thermal-pump.description = A bomba final.
block.impulse-pump.description = A bomba final.
block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos.
block.pulse-conduit.description = Bloco avancado de transporte de liquido. Transporta liquidos mais rápido e armazena mais que os canos padrões.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1297,7 +1297,7 @@ block.rotary-pump.name = Pompă Rotativă
block.thorium-reactor.name = Reactor de Toriu
block.mass-driver.name = Distributor în Masă
block.blast-drill.name = Burghiu Tornadă
block.thermal-pump.name = Pompă Termală
block.impulse-pump.name = Pompă Termală
block.thermal-generator.name = Generator Termal
block.alloy-smelter.name = Topitorie Aliaj
block.mender.name = Reparator
@@ -1491,7 +1491,7 @@ block.underflow-gate.description = Opusul porții de revărsare. Transportă mat
block.mass-driver.description = Structură de transport al materialelor pe distanțe mari. Adună mai multe materiale și apoi le lansează către un alt distributor în masă.
block.mechanical-pump.description = Pompează lichide din mediul înconjurător. Nu necesită electricitate.
block.rotary-pump.description = Pompează lichide din mediul înconjurător. Necesită electricitate.
block.thermal-pump.description = Pompează lichide din mediul înconjurător.
block.impulse-pump.description = Pompează lichide din mediul înconjurător.
block.conduit.description = Împinge lichidele în față. Folosit cu pompe și alte conducte.
block.pulse-conduit.description = Împinge lichidele în față. Transportă lichidele mai rapid și stochează mai mult decât conductele standard.
block.plated-conduit.description = Împinge lichidele în față. Nu acceptă lichide din lateral de la altceva în afară de conducte. Lichidul nu se varsă la exterior.

View File

@@ -1309,7 +1309,7 @@ block.rotary-pump.name = Роторный насос
block.thorium-reactor.name = Ториевый реактор
block.mass-driver.name = Электромагнитная катапульта
block.blast-drill.name = Воздушная буровая установка
block.thermal-pump.name = Термальный насос
block.impulse-pump.name = Термальный насос
block.thermal-generator.name = Термальный генератор
block.alloy-smelter.name = Плавильня кинетического сплава
block.mender.name = Регенератор
@@ -1511,7 +1511,7 @@ block.underflow-gate.description = Противоположность избыт
block.mass-driver.description = Постройка для дальней транспортировки предметов. Собирает несколько предметов и затем стреляет ими в другие катапульты.
block.mechanical-pump.description = Перекачивает и выводит жидкости. Не требует энергию.
block.rotary-pump.description = Перекачивает и выводит жидкости. Требует энергию.
block.thermal-pump.description = Перекачивает и выводит жидкости.
block.impulse-pump.description = Перекачивает и выводит жидкости.
block.conduit.description = Перемещает жидкости вперёд. Используется вместе с насосами и другими трубопроводами.
block.pulse-conduit.description = Перемещает жидкости вперёд. Работает быстрее и вмещает в себе больше, чем стандартный трубопровод.
block.plated-conduit.description = Перемещает жидкости вперёд. Не принимает ввод по бокам. Не протекает.

View File

@@ -1301,7 +1301,7 @@ block.rotary-pump.name = Obrtna pumpa
block.thorium-reactor.name = Nuklearni reaktor
block.mass-driver.name = Akcelerator
block.blast-drill.name = Vazdušna bušilica
block.thermal-pump.name = Termalna pumpa
block.impulse-pump.name = Termalna pumpa
block.thermal-generator.name = Termalni generator
block.alloy-smelter.name = Topionica impulsne legure
block.mender.name = Popravljač
@@ -1495,7 +1495,7 @@ block.underflow-gate.description = Opposite of an overflow gate. Outputs to the
block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers.
block.mechanical-pump.description = Pumps and outputs liquids. Does not require power.
block.rotary-pump.description = Pumps and outputs liquids. Requires power.
block.thermal-pump.description = Pumps and outputs liquids.
block.impulse-pump.description = Pumps and outputs liquids.
block.conduit.description = Moves liquids forward. Used in conjunction with pumps and other conduits.
block.pulse-conduit.description = Moves liquids forward. Transports faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids forward. Does not accept input from the sides. Does not leak.

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump
block.thorium-reactor.name = Thorium Reactor
block.mass-driver.name = Mass Driver
block.blast-drill.name = Airblast Drill
block.thermal-pump.name = Thermal Pump
block.impulse-pump.name = Thermal Pump
block.thermal-generator.name = Thermal Generator
block.alloy-smelter.name = Alloy Smelter
block.mender.name = Mender
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption.
block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power.
block.thermal-pump.description = The ultimate pump.
block.impulse-pump.description = The ultimate pump.
block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits.
block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1308,7 +1308,7 @@ block.rotary-pump.name = ปั๊มโรตารี่
block.thorium-reactor.name = เตาปฏิกรณ์ทอเรี่ยม
block.mass-driver.name = เครื่องโอนถ่ายมวล
block.blast-drill.name = เครื่องขุดแอร์บลาสต์
block.thermal-pump.name = ปั๊มความร้อน
block.impulse-pump.name = ปั๊มความร้อน
block.thermal-generator.name = เครื่องกำเนิดไฟฟ้าพลังอัคคี
block.alloy-smelter.name = เครื่องหลอมอัลลอย
block.mender.name = เครื่องซ่อมแซม
@@ -1518,7 +1518,7 @@ block.underflow-gate.description = ตรงข้ามกับประตู
block.mass-driver.description = บล็อกขนส่งไอเท็มทางไกล รวบรวมไอเท็มจำนวนหนึ่งแล้ว\nยิงไปหาเครื่องโอนถ่ายมวลอีกเครื่องที่อยู่ไกลออกไป
block.mechanical-pump.description = ปั้มของเหลวขึ้นมา ไม่ใช้พลังงาน
block.rotary-pump.description = ปั๊มของเหลวได้มากขึ้น แต่ต้องใช้พลังงาน
block.thermal-pump.description = ปั๊มขั้นสุดยอด ปั้มของเหลวขึ้นมาได้เป็นจำนวนมาก
block.impulse-pump.description = ปั๊มขั้นสุดยอด ปั้มของเหลวขึ้นมาได้เป็นจำนวนมาก
block.conduit.description = เคลื่อนย้ายของเหลวไปข้างหน้า ใช้ร่วมกับปั๊มและท่อน้ำอื่นๆ
block.pulse-conduit.description = เคลื่อนย้ายของเหลวไปข้างหน้า เคลื่อนย้ายได้เร็วขึ้นและเก็บของเหลวได้เยอะกว่าท่อน้ำธรรมดา
block.plated-conduit.description = เคลื่อนย้ายของเหลวไปข้างหน้า ไม่รับของเหลวจากด้านข้างนอกจากท่อน้ำด้วยกันเอง\nไม่รั่ว และมีเกราะที่หนากว่า

View File

@@ -1126,7 +1126,7 @@ block.rotary-pump.name = donen boru
block.thorium-reactor.name = Thorium Reaktoru
block.mass-driver.name = kütle surucusu
block.blast-drill.name = Patlatici kazici
block.thermal-pump.name = Termal pompa
block.impulse-pump.name = Termal pompa
block.thermal-generator.name = Magma jeneratoru
block.alloy-smelter.name = Alloy eritici
block.mender.name = Mender
@@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to
block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range.
block.mechanical-pump.description = A cheap pump with slow output, but no power consumption.
block.rotary-pump.description = An advanced pump which doubles up speed by using power.
block.thermal-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava.
block.impulse-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava.
block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits.
block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less.

View File

@@ -1307,7 +1307,7 @@ block.rotary-pump.name = Döner Pompa
block.thorium-reactor.name = Toryum Reaktörü
block.mass-driver.name = Kütle Sürücüsü
block.blast-drill.name = Hava Patlamalı Matkap
block.thermal-pump.name = Termal Pompa
block.impulse-pump.name = Termal Pompa
block.thermal-generator.name = Termal Jeneratör
block.alloy-smelter.name = Alaşım Fırını
block.mender.name = Tamirci
@@ -1508,7 +1508,7 @@ block.underflow-gate.description = Taşma geçidinin zıttıdır. Sol ve sağ ta
block.mass-driver.description = En gelişmiş materyal taşıma bloğu. bir miktar materyalı alır ve onları uzak mesafedeki bir başka kütle sürücüsüne ateşler. Çalışması için enerji gerekir.
block.mechanical-pump.description = Hiç enerji harcamayan, düşük çıktılı, ucuz bir pompa.
block.rotary-pump.description = Daha gelişmiş bir pompa. Daha fazla sıvı depolar ama çalışması için enerji gerekir.
block.thermal-pump.description = En iyi pompa. Çalışması için enerji gerekir.
block.impulse-pump.description = En iyi pompa. Çalışması için enerji gerekir.
block.conduit.description = Temel sıvı taşıma bloğu. Sıvıları ileri taşır. Pompalar ve diğer borularla birlikte kullanılır.
block.pulse-conduit.description = Gelişmiş bir sıvı taşıma bloğu. Sıvıları normal borulardan daha hızlı taşır ve onlardan daha fazla sıvı alır.
block.plated-conduit.description = Sıvıları dalga borusuyla aynı güçte taşır ancak daha fazla zırha sahiptir. Borular dışında başka bir şekilde yandan sıvı kabul etmez.\nDaha az sızıntı yapar.

View File

@@ -1265,7 +1265,7 @@ block.rotary-pump.name = Роторний насос
block.thorium-reactor.name = Торієвий реактор
block.mass-driver.name = Електромагнітна катапульта
block.blast-drill.name = Бурова установка
block.thermal-pump.name = Тепловий насос
block.impulse-pump.name = Тепловий насос
block.thermal-generator.name = Теплогенератор
block.alloy-smelter.name = Сплавовий завод
block.mender.name = Ремонтник
@@ -1461,7 +1461,7 @@ block.underflow-gate.description = Повна протилежність над
block.mass-driver.description = Найкращий блок для транспортування предметів. Збирає кілька предметів, а потім вистрілює їх до іншої електромагнітної катапульти на велику відстань. Для роботи потребує енергію.
block.mechanical-pump.description = Дешевий насос із повільним виходом, але не потребує енергоспоживання.
block.rotary-pump.description = Удосконалений насос. Насоси більше викачують, але потребують енергію.
block.thermal-pump.description = Найкращий насос.
block.impulse-pump.description = Найкращий насос.
block.conduit.description = Пересуває рідини вперед. Застосовується спільно з насосами та іншими трубопроводами.
block.pulse-conduit.description = Пересуває рідини вперед. Швидше транспортує і зберігає більше рідини, ніж стандартні трубопроводи.
block.plated-conduit.description = Пересуває рідини вперед. Не приймає рідин із боків окрім інших трубопроводів. Не протікає.

View File

@@ -1308,7 +1308,7 @@ block.rotary-pump.name = Bơm điện
block.thorium-reactor.name = Lò phản ứng Thorium
block.mass-driver.name = Máy phóng điện từ
block.blast-drill.name = Máy khoan thủy lực
block.thermal-pump.name = Bơm nhiệt
block.impulse-pump.name = Bơm nhiệt
block.thermal-generator.name = Máy phát nhiệt điện
block.alloy-smelter.name = Lò luyện hợp kim
block.mender.name = Máy sửa chữa
@@ -1508,7 +1508,7 @@ block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vậ
block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các máy phóng điện từ khác.
block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng.
block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng.
block.thermal-pump.description = Bơm chất lỏng.
block.impulse-pump.description = Bơm chất lỏng.
block.conduit.description = Đẩy chất lỏng đến trước, dùng với bơm và các ống dẫn khác.
block.pulse-conduit.description = Đẩy chất lỏng đến trước, vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn.
block.plated-conduit.description = Đẩy chất lỏng đến trước, không nhận đầu vào ở bên, không bị rò rỉ.

View File

@@ -1309,7 +1309,7 @@ block.rotary-pump.name = 回转泵
block.thorium-reactor.name = 钍反应堆
block.mass-driver.name = 质量驱动器
block.blast-drill.name = 爆破钻头
block.thermal-pump.name = 热能泵
block.impulse-pump.name = 热能泵
block.thermal-generator.name = 热能发电机
block.alloy-smelter.name = 合金冶炼厂
block.mender.name = 修理器
@@ -1509,7 +1509,7 @@ block.underflow-gate.description = 与溢流门相反,当两侧均堵塞时才
block.mass-driver.description = 远距离物品传输建筑,收集若干物品后将其发射到远处的另一个质量驱动器。
block.mechanical-pump.description = 泵送液体,不需要电力。
block.rotary-pump.description = 泵送液体,需要电力。
block.thermal-pump.description = 泵送液体,需要大量电力。
block.impulse-pump.description = 泵送液体,需要大量电力。
block.conduit.description = 向前方传输液体。 与泵或者其他导管联合使用。
block.pulse-conduit.description = 向前方传输液体。 比普通导管传输液体更快,且能储存更多液体。
block.plated-conduit.description = 向前方传输液体,不接受侧面输入。 不会发生泄露。

View File

@@ -1301,7 +1301,7 @@ block.rotary-pump.name = 迴旋泵
block.thorium-reactor.name = 釷反應堆
block.mass-driver.name = 質量驅動器
block.blast-drill.name = 氣爆鑽頭
block.thermal-pump.name = 熱能泵
block.impulse-pump.name = 熱能泵
block.thermal-generator.name = 地熱發電機
block.alloy-smelter.name = 合金冶煉廠
block.mender.name = 修理方塊
@@ -1495,7 +1495,7 @@ block.underflow-gate.description = 反向的溢流器。如果側面被阻擋,
block.mass-driver.description = 終極物品運輸方塊。收集大量物品,然後將它們射向另一個質量驅動器。需要能源以運作。
block.mechanical-pump.description = 一種便宜的泵,輸出速度慢,但不使用能量。
block.rotary-pump.description = 高級的泵。抽更多液體,但需要能量。
block.thermal-pump.description = 終極的泵。
block.impulse-pump.description = 終極的泵。
block.conduit.description = 基本液體運輸方塊。將液體往前輸送。用於提取器、泵或其他管線。
block.pulse-conduit.description = 高級的液體運輸方塊。比標準管線更快地輸送並儲存更多液體。
block.plated-conduit.description = 用和脈衝管線相同的速率運送液體,但有更強的裝甲。除了其他管線以外,不會接受來自側面的其他液體\n比較不會漏液。

View File

@@ -108,7 +108,7 @@
63627=mass-driver|block-mass-driver-ui
63626=mechanical-pump|block-mechanical-pump-ui
63625=rotary-pump|block-rotary-pump-ui
63624=thermal-pump|block-thermal-pump-ui
63624=impulse-pump|block-impulse-pump-ui
63623=conduit|block-conduit-ui
63622=pulse-conduit|block-pulse-conduit-ui
63621=plated-conduit|block-plated-conduit-ui
@@ -436,3 +436,8 @@
63270=heat-reactor|block-heat-reactor-ui
63269=core-bastion|block-core-bastion-ui
63268=incite|unit-incite-ui
63267=oxidizer|block-oxidizer-ui
63266=reinforced-pump|block-reinforced-pump-ui
63265=oxide|item-oxide-ui
63264=oxygen|liquid-oxygen-ui
63263=hydrogen|liquid-hydrogen-ui

Binary file not shown.

View File

@@ -60,7 +60,7 @@ public class Blocks implements ContentList{
//crafting
siliconSmelter, siliconCrucible, siliconArcFurnace, kiln, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer,
melter, separator, disassembler, sporePress, pulverizer, incinerator, coalCentrifuge,
heatReactor, carbideCrucible,
oxidizer, heatReactor, carbideCrucible,
cellSynthesisChamber,
//sandbox
@@ -75,13 +75,16 @@ public class Blocks implements ContentList{
//transport
conveyor, titaniumConveyor, plastaniumConveyor, armoredConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, invertedSorter, router,
overflowGate, underflowGate, massDriver,
//transport - alternate
duct, ductRouter, ductBridge, ductUnloader,
surgeConveyor, surgeRouter,
//liquid
mechanicalPump, rotaryPump, thermalPump, conduit, pulseConduit, platedConduit, liquidRouter, liquidContainer, liquidTank, liquidJunction, bridgeConduit, phaseConduit,
mechanicalPump, rotaryPump, impulsePump, conduit, pulseConduit, platedConduit, liquidRouter, liquidContainer, liquidTank, liquidJunction, bridgeConduit, phaseConduit,
reinforcedConduit, reinforcedBridgeConduit, reinforcedLiquidRouter, reinforcedLiquidContainer, reinforcedLiquidTank,
//liquid - reinforced
reinforcedPump, reinforcedConduit, reinforcedBridgeConduit, reinforcedLiquidRouter, reinforcedLiquidContainer, reinforcedLiquidTank,
//power
combustionGenerator, thermalGenerator, steamGenerator, differentialGenerator, rtgGenerator, solarPanel, largeSolarPanel, thoriumReactor,
@@ -943,11 +946,21 @@ public class Blocks implements ContentList{
consumes.power(0.50f);
}};
oxidizer = new HeatProducer("oxidizer"){{
requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 30));
//TODO bigger?
size = 2;
//TODO multi liquid output
//converts oxygen (?) + beryllium into heat + oxide
}};
heatReactor = new HeatProducer("heat-reactor"){{
//TODO quadvent
//TODO coolant?
requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 30));
size = 3;
consumeTime = 60f * 10f;
craftTime = 60f * 10f;
consumes.item(Items.fissileMatter, 1);
}};
@@ -1370,7 +1383,7 @@ public class Blocks implements ContentList{
size = 2;
}};
thermalPump = new Pump("thermal-pump"){{
impulsePump = new Pump("impulse-pump"){{
requirements(Category.liquid, with(Items.copper, 80, Items.metaglass, 90, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35));
pumpAmount = 0.22f;
consumes.power(1.3f);
@@ -1439,6 +1452,21 @@ public class Blocks implements ContentList{
consumes.power(0.30f);
}};
//reinforced stuff
//TODO different name
reinforcedPump = new Pump("reinforced-pump"){{
requirements(Category.liquid, with(Items.beryllium, 70, Items.tungsten, 20, Items.silicon, 20));
//TODO perhaps something else?
consumes.item(Items.beryllium);
pumpAmount = 0.4f;
consumes.power(0.5f);
liquidCapacity = 40f;
hasPower = true;
size = 2;
}};
reinforcedConduit = new ArmoredConduit("reinforced-conduit"){{
requirements(Category.liquid, with(Items.beryllium, 2, Items.graphite, 1));
botColor = Pal.darkestMetal;

View File

@@ -8,7 +8,7 @@ public class Items implements ContentList{
public static Item
scrap, copper, lead, graphite, coal, titanium, thorium, silicon, plastanium,
phaseFabric, surgeAlloy, sporePod, sand, blastCompound, pyratite, metaglass,
beryllium, fissileMatter, dormantCyst, tungsten, carbide;
beryllium, tungsten, oxide, carbide, fissileMatter, dormantCyst;
@Override
public void load(){
@@ -98,6 +98,19 @@ public class Items implements ContentList{
cost = 1.3f;
}};
tungsten = new Item("tungsten", Color.valueOf("768a9a")){{
hardness = 5;
cost = 1.5f;
}};
oxide = new Item("oxide", Color.valueOf("e4ffd6")){{
cost = 1.1f;
}};
carbide = new Item("carbide", Color.valueOf("89769a")){{
cost = 1.3f;
}};
fissileMatter = new Item("fissile-matter", Color.valueOf("5e988d")){{
radioactivity = 1.5f;
}};
@@ -105,14 +118,5 @@ public class Items implements ContentList{
dormantCyst = new Item("dormant-cyst", Color.valueOf("df824d")){{
flammability = 0.1f;
}};
tungsten = new Item("tungsten", Color.valueOf("768a9a")){{
hardness = 5;
cost = 1.5f;
}};
carbide = new Item("carbide", Color.valueOf("89769a")){{
cost = 1.3f;
}};
}
}

View File

@@ -5,7 +5,8 @@ import mindustry.ctype.*;
import mindustry.type.*;
public class Liquids implements ContentList{
public static Liquid water, slag, oil, cryofluid, neoplasm;
public static Liquid water, slag, oil, cryofluid, neoplasm,
ozone, hydrogen;
@Override
public void load(){
@@ -55,5 +56,21 @@ public class Liquids implements ContentList{
colorFrom = Color.valueOf("f98f4a");
colorTo = Color.valueOf("9e172c");
}};
//TODO reactivity, etc
ozone = new Liquid("ozone", Color.valueOf("bdd7ff")){{
gas = true;
barColor = Color.valueOf("97bdf7");
explosiveness = 1f;
flammability = 1f;
}};
//TODO combustion
hydrogen = new Liquid("hydrogen", Color.valueOf("e8d1ff")){{
gas = true;
barColor = Color.valueOf("c599f0");
}};
//TODO dicyanoacetylene
}
}

View File

@@ -104,7 +104,7 @@ public class TechTree implements ContentList{
});
node(rotaryPump, () -> {
node(thermalPump, () -> {
node(impulsePump, () -> {
});
});

View File

@@ -572,6 +572,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
}
public void dumpLiquid(Liquid liquid, float scaling){
dumpLiquid(liquid, scaling, -1);
}
/** @param outputDir output liquid direction relative to rotation, or -1 to use any direction. */
public void dumpLiquid(Liquid liquid, float scaling, int outputDir){
int dump = this.cdump;
if(liquids.get(liquid) <= 0.0001f) return;
@@ -581,6 +586,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
for(int i = 0; i < proximity.size; i++){
incrementDump(proximity.size);
Building other = proximity.get((i + dump) % proximity.size);
if(outputDir != -1 && (relativeTo(other) + rotation) % 4 != outputDir) return;
other = other.getLiquidDestination(self(), liquid);
if(other != null && other.team == team && other.block.hasLiquids && canDumpLiquid(other, liquid) && other.liquids != null){
@@ -1211,13 +1219,8 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
public void displayBars(Table table){
for(Func<Building, Bar> bar : block.bars.list()){
//TODO fix conclusively
try{
table.add(bar.get(self())).growX();
table.row();
}catch(ClassCastException e){
break;
}
table.add(bar.get(self())).growX();
table.row();
}
}

View File

@@ -128,13 +128,13 @@ public class Drawf{
}
public static void liquid(TextureRegion region, float x, float y, float alpha, Color color, float rotation){
Draw.color(color, alpha);
Draw.color(color, alpha * color.a);
Draw.rect(region, x, y, rotation);
Draw.color();
}
public static void liquid(TextureRegion region, float x, float y, float alpha, Color color){
Draw.color(color, alpha);
Draw.color(color, alpha * color.a);
Draw.rect(region, x, y);
Draw.color();
}

View File

@@ -59,7 +59,8 @@ public abstract class SaveFileReader{
"cryofluidmixer", "cryofluid-mixer",
"block-forge", "constructor",
"block-unloader", "payload-unloader",
"block-loader", "payload-loader"
"block-loader", "payload-loader",
"thermal-pump", "impulse-pump"
);
public static final ObjectMap<String, String> modContentNameMap = ObjectMap.of(

View File

@@ -14,9 +14,12 @@ import mindustry.world.meta.*;
import static mindustry.entities.Puddles.*;
/** A better name for this class would be "fluid", but it's too late for that. */
public class Liquid extends UnlockableContent{
protected static final Rand rand = new Rand();
/** TODO If true, this fluid is treated as a gas (and does not create puddles) */
public boolean gas = false;
/** Color used in pipes and on the ground. */
public Color color;
/** Color of this liquid in gas form. */
@@ -58,6 +61,22 @@ public class Liquid extends UnlockableContent{
this(name, new Color(Color.black));
}
@Override
public void init(){
super.init();
if(gas){
//always "boils", it's a gas
boilPoint = -1;
//ensure no accidental global mutation
color = color.cpy();
//all gases are transparent
color.a = 0.5f;
//for gases, gas color is implicitly their color
gasColor = color;
}
}
/** @return true if this liquid will boil in this global environment. */
public boolean willBoil(){
return Attribute.heat.env() >= boilPoint;

View File

@@ -30,19 +30,11 @@ public class Bar extends Element{
public Bar(Prov<CharSequence> name, Prov<Color> color, Floatp fraction){
this.fraction = fraction;
try{
lastValue = value = Mathf.clamp(fraction.get());
}catch(Exception e){ //getting the fraction may involve referring to invalid data
lastValue = value = 0f;
}
lastValue = value = Mathf.clamp(fraction.get());
update(() -> {
try{
this.name = name.get();
this.blinkColor.set(color.get());
setColor(color.get());
}catch(Exception e){ //getting the fraction may involve referring to invalid data
this.name = "";
}
this.name = name.get();
this.blinkColor.set(color.get());
setColor(color.get());
});
}
@@ -85,12 +77,8 @@ public class Bar extends Element{
public void draw(){
if(fraction == null) return;
float computed;
try{
computed = Mathf.clamp(fraction.get());
}catch(Exception e){ //getting the fraction may involve referring to invalid data
computed = 0f;
}
float computed = Mathf.clamp(fraction.get());
if(lastValue > computed){
blink = 1f;

View File

@@ -454,10 +454,14 @@ public class Block extends UnlockableContent{
Liquid liquid = consumes.<ConsumeLiquid>get(ConsumeType.liquid).liquid;
current = entity -> liquid;
}else{
current = entity -> entity.liquids == null ? Liquids.water : entity.liquids.current();
current = entity -> entity.liquids.current();
}
bars.add("liquid", entity -> new Bar(() -> entity.liquids.get(current.get(entity)) <= 0.001f ? Core.bundle.get("bar.liquid") : current.get(entity).localizedName,
() -> current.get(entity).barColor(), () -> entity == null || entity.liquids == null ? 0f : entity.liquids.get(current.get(entity)) / liquidCapacity));
bars.add("liquid", entity -> new Bar(
() -> entity.liquids.get(current.get(entity)) <= 0.001f ? Core.bundle.get("bar.liquid") : current.get(entity).localizedName,
() -> current.get(entity).barColor(),
() -> entity.liquids.get(current.get(entity)) / liquidCapacity)
);
}
if(hasPower && consumes.hasPower()){
@@ -465,12 +469,20 @@ public class Block extends UnlockableContent{
boolean buffered = cons.buffered;
float capacity = cons.capacity;
bars.add("power", entity -> new Bar(() -> buffered ? Core.bundle.format("bar.poweramount", Float.isNaN(entity.power.status * capacity) ? "<ERROR>" : UI.formatAmount((int)(entity.power.status * capacity))) :
Core.bundle.get("bar.power"), () -> Pal.powerBar, () -> Mathf.zero(cons.requestedPower(entity)) && entity.power.graph.getPowerProduced() + entity.power.graph.getBatteryStored() > 0f ? 1f : entity.power.status));
bars.add("power", entity -> new Bar(
() -> buffered ? Core.bundle.format("bar.poweramount", Float.isNaN(entity.power.status * capacity) ? "<ERROR>" : UI.formatAmount((int)(entity.power.status * capacity))) :
Core.bundle.get("bar.power"),
() -> Pal.powerBar,
() -> Mathf.zero(cons.requestedPower(entity)) && entity.power.graph.getPowerProduced() + entity.power.graph.getBatteryStored() > 0f ? 1f : entity.power.status)
);
}
if(hasItems && configurable){
bars.add("items", entity -> new Bar(() -> Core.bundle.format("bar.items", entity.items.total()), () -> Pal.items, () -> (float)entity.items.total() / itemCapacity));
bars.add("items", entity -> new Bar(
() -> Core.bundle.format("bar.items", entity.items.total()),
() -> Pal.items,
() -> (float)entity.items.total() / itemCapacity)
);
}
if(unitCapModifier != 0){
@@ -515,46 +527,46 @@ public class Block extends UnlockableContent{
}
public void drawPlan(BuildPlan req, Eachable<BuildPlan> list, boolean valid){
drawPlan(req, list, valid, 1f);
public void drawPlan(BuildPlan plan, Eachable<BuildPlan> list, boolean valid){
drawPlan(plan, list, valid, 1f);
}
public void drawPlan(BuildPlan req, Eachable<BuildPlan> list, boolean valid, float alpha){
public void drawPlan(BuildPlan plan, Eachable<BuildPlan> list, boolean valid, float alpha){
Draw.reset();
Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime, 6f, 0.28f));
Draw.alpha(alpha);
float prevScale = Draw.scl;
Draw.scl *= req.animScale;
drawRequestRegion(req, list);
Draw.scl *= plan.animScale;
drawRequestRegion(plan, list);
Draw.scl = prevScale;
Draw.reset();
}
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
TextureRegion reg = getRequestRegion(req, list);
Draw.rect(reg, req.drawx(), req.drawy(), !rotate ? 0 : req.rotation * 90);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
TextureRegion reg = getRequestRegion(plan, list);
Draw.rect(reg, plan.drawx(), plan.drawy(), !rotate ? 0 : plan.rotation * 90);
if(req.worldContext && player != null && teamRegion != null && teamRegion.found()){
if(plan.worldContext && player != null && teamRegion != null && teamRegion.found()){
if(teamRegions[player.team().id] == teamRegion) Draw.color(player.team().color);
Draw.rect(teamRegions[player.team().id], req.drawx(), req.drawy());
Draw.rect(teamRegions[player.team().id], plan.drawx(), plan.drawy());
Draw.color();
}
drawRequestConfig(req, list);
drawRequestConfig(plan, list);
}
public TextureRegion getRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
public TextureRegion getRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
return fullIcon;
}
public void drawRequestConfig(BuildPlan req, Eachable<BuildPlan> list){
public void drawRequestConfig(BuildPlan plan, Eachable<BuildPlan> list){
}
public void drawRequestConfigCenter(BuildPlan req, Object content, String region, boolean cross){
public void drawRequestConfigCenter(BuildPlan plan, Object content, String region, boolean cross){
if(content == null){
if(cross){
Draw.rect("cross", req.drawx(), req.drawy());
Draw.rect("cross", plan.drawx(), plan.drawy());
}
return;
}
@@ -562,15 +574,15 @@ public class Block extends UnlockableContent{
if(color == null) return;
Draw.color(color);
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.color();
}
public void drawRequestConfigCenter(BuildPlan req, Object content, String region){
drawRequestConfigCenter(req, content, region, false);
public void drawRequestConfigCenter(BuildPlan plan, Object content, String region){
drawRequestConfigCenter(plan, content, region, false);
}
public void drawRequestConfigTop(BuildPlan req, Eachable<BuildPlan> list){
public void drawRequestConfigTop(BuildPlan plan, Eachable<BuildPlan> list){
}

View File

@@ -51,8 +51,8 @@ public class Door extends Wall{
}
@Override
public TextureRegion getRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
return req.config == Boolean.TRUE ? openRegion : region;
public TextureRegion getRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
return plan.config == Boolean.TRUE ? openRegion : region;
}
public class DoorBuild extends Building{

View File

@@ -15,9 +15,9 @@ public class Thruster extends Wall{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
}
@Override

View File

@@ -66,13 +66,13 @@ public class Conveyor extends Block implements Autotiler{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
int[] bits = getTiling(req, list);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
int[] bits = getTiling(plan, list);
if(bits == null) return;
TextureRegion region = regions[bits[0]][0];
Draw.rect(region, req.drawx(), req.drawy(), region.width * bits[1] * Draw.scl, region.height * bits[2] * Draw.scl, req.rotation * 90);
Draw.rect(region, plan.drawx(), plan.drawy(), region.width * bits[1] * Draw.scl, region.height * bits[2] * Draw.scl, plan.rotation * 90);
}
@Override

View File

@@ -47,19 +47,19 @@ public class DirectionBridge extends Block{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(dirRegion, req.drawx(), req.drawy(), req.rotation * 90);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(dirRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
}
@Override
public void drawRequestConfigTop(BuildPlan req, Eachable<BuildPlan> list){
public void drawRequestConfigTop(BuildPlan plan, Eachable<BuildPlan> list){
otherReq = null;
otherDst = range;
Point2 d = Geometry.d4(req.rotation);
Point2 d = Geometry.d4(plan.rotation);
list.each(other -> {
if(other.block == this && req != other && Mathf.clamp(other.x - req.x, -1, 1) == d.x && Mathf.clamp(other.y - req.y, -1, 1) == d.y){
int dst = Math.max(Math.abs(other.x - req.x), Math.abs(other.y - req.y));
if(other.block == this && plan != other && Mathf.clamp(other.x - plan.x, -1, 1) == d.x && Mathf.clamp(other.y - plan.y, -1, 1) == d.y){
int dst = Math.max(Math.abs(other.x - plan.x), Math.abs(other.y - plan.y));
if(dst <= otherDst){
otherReq = other;
otherDst = dst;
@@ -68,7 +68,7 @@ public class DirectionBridge extends Block{
});
if(otherReq != null){
drawBridge(req.rotation, req.drawx(), req.drawy(), otherReq.drawx(), otherReq.drawy(), null);
drawBridge(plan.rotation, plan.drawx(), plan.drawy(), otherReq.drawx(), otherReq.drawy(), null);
}
}

View File

@@ -46,15 +46,15 @@ public class DirectionalUnloader extends Block{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90);
drawRequestConfig(req, list);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
drawRequestConfig(plan, list);
}
@Override
public void drawRequestConfig(BuildPlan req, Eachable<BuildPlan> list){
drawRequestConfigCenter(req, req.config, "duct-unloader-center");
public void drawRequestConfig(BuildPlan plan, Eachable<BuildPlan> list){
drawRequestConfigCenter(plan, plan.config, "duct-unloader-center");
}
@Override

View File

@@ -50,16 +50,16 @@ public class Duct extends Block implements Autotiler{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
int[] bits = getTiling(req, list);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
int[] bits = getTiling(plan, list);
if(bits == null) return;
Draw.scl(bits[1], bits[2]);
Draw.alpha(0.5f);
Draw.rect(botRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(botRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.color();
Draw.rect(topRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(topRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.scl();
}

View File

@@ -53,9 +53,9 @@ public class DuctRouter extends Block{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
}
public class DuctRouterBuild extends Building{

View File

@@ -61,16 +61,16 @@ public class ItemBridge extends Block{
}
@Override
public void drawRequestConfigTop(BuildPlan req, Eachable<BuildPlan> list){
public void drawRequestConfigTop(BuildPlan plan, Eachable<BuildPlan> list){
otherReq = null;
list.each(other -> {
if(other.block == this && req != other && req.config instanceof Point2 p && p.equals(other.x - req.x, other.y - req.y)){
if(other.block == this && plan != other && plan.config instanceof Point2 p && p.equals(other.x - plan.x, other.y - plan.y)){
otherReq = other;
}
});
if(otherReq != null){
drawBridge(req, otherReq.drawx(), otherReq.drawy(), 0);
drawBridge(plan, otherReq.drawx(), otherReq.drawy(), 0);
}
}

View File

@@ -21,10 +21,10 @@ public class PayloadRouter extends PayloadConveyor{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
super.drawRequestRegion(req, list);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
super.drawRequestRegion(plan, list);
Draw.rect(overRegion, req.drawx(), req.drawy());
Draw.rect(overRegion, plan.drawx(), plan.drawy());
}
public class PayloadRouterBuild extends PayloadConveyorBuild{

View File

@@ -32,8 +32,8 @@ public class Sorter extends Block{
}
@Override
public void drawRequestConfig(BuildPlan req, Eachable<BuildPlan> list){
drawRequestConfigCenter(req, req.config, "center", true);
public void drawRequestConfig(BuildPlan plan, Eachable<BuildPlan> list){
drawRequestConfigCenter(plan, plan.config, "center", true);
}
@Override

View File

@@ -82,17 +82,17 @@ public class StackConveyor extends Block implements Autotiler{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
int[] bits = getTiling(req, list);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
int[] bits = getTiling(plan, list);
if(bits == null) return;
TextureRegion region = regions[0];
Draw.rect(region, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(region, plan.drawx(), plan.drawy(), plan.rotation * 90);
for(int i = 0; i < 4; i++){
if((bits[3] & (1 << i)) == 0){
Draw.rect(edgeRegion, req.drawx(), req.drawy(), (req.rotation - i) * 90);
Draw.rect(edgeRegion, plan.drawx(), plan.drawy(), (plan.rotation - i) * 90);
}
}
}

View File

@@ -3,4 +3,6 @@ package mindustry.world.blocks.heat;
/** Basic interface for any block that produces heat.*/
public interface HeatBlock{
float heat();
/** @return heat as a fraction of max heat */
float heatFrac();
}

View File

@@ -1,47 +1,28 @@
package mindustry.world.blocks.heat;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.util.*;
import arc.util.io.*;
import mindustry.annotations.Annotations.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.entities.units.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.logic.*;
import mindustry.ui.*;
import mindustry.world.*;
import mindustry.world.blocks.power.NuclearReactor.*;
import mindustry.world.meta.*;
import mindustry.world.blocks.production.*;
import mindustry.world.draw.*;
public class HeatProducer extends Block{
public class HeatProducer extends GenericCrafter{
public float heatOutput = 10f;
public float warmupRate = 0.15f;
public float consumeTime = 100;
public @Load("@-heat") TextureRegion heatRegion;
public @Load("@-glow") TextureRegion glowRegion;
public @Load("@-top1") TextureRegion topRegion1;
public @Load("@-top2") TextureRegion topRegion2;
public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f);
public float heatPulse = 0.3f, heatPulseScl = 10f, glowMult = 1.2f;
public Effect consumeEffect = Fx.none;
public HeatProducer(String name){
super(name);
drawer = new DrawHeatOutput();
update = solid = rotate = true;
canOverdrive = false;
}
@Override
public void setStats(){
stats.timePeriod = consumeTime;
super.setStats();
stats.add(Stat.productionTime, consumeTime / 60f, StatUnit.seconds);
//TODO heat prod stats
}
@@ -52,64 +33,20 @@ public class HeatProducer extends Block{
bars.add("heat", (NuclearReactorBuild entity) -> new Bar("bar.heat", Pal.lightOrange, () -> entity.heat));
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(req.rotation > 1 ? topRegion2 : topRegion1, req.drawx(), req.drawy(), req.rotation * 90);
}
@Override
public TextureRegion[] icons(){
return new TextureRegion[]{region, topRegion1};
}
public class HeatProducerBuild extends Building implements HeatBlock{
public class HeatProducerBuild extends GenericCrafterBuild implements HeatBlock{
public float heat;
public float progress;
@Override
public void updateTile(){
if(consValid()){
progress += getProgressIncrease(consumeTime);
if(progress >= 1f){
consume();
consumeEffect.at(this);
progress -= 1f;
}
}
super.updateTile();
//heat approaches target at the same speed regardless of efficiency
heat = Mathf.approachDelta(heat, heatOutput * efficiency() * Mathf.num(consValid()), warmupRate * delta());
}
@Override
public void draw(){
Draw.rect(region, x, y);
Draw.rect(rotation > 1 ? topRegion2 : topRegion1, x, y, rotdeg());
if(heat > 0){
Draw.z(Layer.blockAdditive);
Draw.blend(Blending.additive);
Draw.color(heatColor, heat / heatOutput * (heatColor.a * (1f - heatPulse + Mathf.absin(heatPulseScl, heatPulse))));
Draw.rect(heatRegion, x, y, rotdeg());
Draw.color(Draw.getColor().mul(glowMult));
Draw.rect(glowRegion, x, y);
Draw.blend();
Draw.color();
}
}
@Override
public double sense(LAccess sensor){
if(sensor == LAccess.progress) return Mathf.clamp(progress);
return super.sense(sensor);
}
@Override
public boolean shouldAmbientSound(){
return cons.valid();
public float heatFrac(){
return heat / heatOutput;
}
@Override
@@ -120,14 +57,12 @@ public class HeatProducer extends Block{
@Override
public void write(Writes write){
super.write(write);
write.f(progress);
write.f(heat);
}
@Override
public void read(Reads read, byte revision){
super.read(read, revision);
progress = read.f();
heat = read.f();
}
}

View File

@@ -52,17 +52,17 @@ public class Conduit extends LiquidBlock implements Autotiler{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
int[] bits = getTiling(req, list);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
int[] bits = getTiling(plan, list);
if(bits == null) return;
Draw.scl(bits[1], bits[2]);
Draw.color(botColor);
Draw.alpha(0.5f);
Draw.rect(botRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(botRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.color();
Draw.rect(topRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(topRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.scl();
}

View File

@@ -39,10 +39,10 @@ public abstract class BlockProducer extends PayloadBlock{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(topRegion, req.drawx(), req.drawy());
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(topRegion, plan.drawx(), plan.drawy());
}
@Override

View File

@@ -51,11 +51,11 @@ public class PayloadLoader extends PayloadBlock{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(inRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(topRegion, req.drawx(), req.drawy());
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(inRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(topRegion, plan.drawx(), plan.drawy());
}
public class PayloadLoaderBuild extends PayloadBlockBuild<BuildPayload>{

View File

@@ -87,11 +87,11 @@ public class PayloadMassDriver extends PayloadBlock{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(baseRegion, req.drawx(), req.drawy());
Draw.rect(topRegion, req.drawx(), req.drawy());
Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(region, req.drawx(), req.drawy());
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(baseRegion, plan.drawx(), plan.drawy());
Draw.rect(topRegion, plan.drawx(), plan.drawy());
Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(region, plan.drawx(), plan.drawy());
}
@Override

View File

@@ -64,10 +64,10 @@ public class PayloadSource extends PayloadBlock{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(topRegion, req.drawx(), req.drawy());
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(topRegion, plan.drawx(), plan.drawy());
}
public boolean canProduce(Block b){

View File

@@ -35,9 +35,9 @@ public class PowerDiode extends Block{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(fullIcon, req.drawx(), req.drawy());
Draw.rect(arrow, req.drawx(), req.drawy(), !rotate ? 0 : req.rotation * 90);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(fullIcon, plan.drawx(), plan.drawy());
Draw.rect(arrow, plan.drawx(), plan.drawy(), !rotate ? 0 : plan.rotation * 90);
}
// battery % of the graph on either side, defaults to zero

View File

@@ -302,23 +302,23 @@ public class PowerNode extends PowerBlock{
}
@Override
public void drawRequestConfigTop(BuildPlan req, Eachable<BuildPlan> list){
if(req.config instanceof Point2[] ps){
public void drawRequestConfigTop(BuildPlan plan, Eachable<BuildPlan> list){
if(plan.config instanceof Point2[] ps){
setupColor(1f);
for(Point2 point : ps){
int px = req.x + point.x, py = req.y + point.y;
int px = plan.x + point.x, py = plan.y + point.y;
otherReq = null;
list.each(other -> {
if(other.block != null
&& (px >= other.x - ((other.block.size-1)/2) && py >= other.y - ((other.block.size-1)/2) && px <= other.x + other.block.size/2 && py <= other.y + other.block.size/2)
&& other != req && other.block.hasPower){
&& other != plan && other.block.hasPower){
otherReq = other;
}
});
if(otherReq == null || otherReq.block == null) continue;
drawLaser(player == null ? Team.sharded : player.team(), req.drawx(), req.drawy(), otherReq.drawx(), otherReq.drawy(), size, otherReq.block.size);
drawLaser(player == null ? Team.sharded : player.team(), plan.drawx(), plan.drawy(), otherReq.drawx(), otherReq.drawy(), size, otherReq.block.size);
}
Draw.color();
}

View File

@@ -71,9 +71,9 @@ public class BeamDrill extends Block{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
}
@Override

View File

@@ -82,16 +82,16 @@ public class Drill extends Block{
}
@Override
public void drawRequestConfigTop(BuildPlan req, Eachable<BuildPlan> list){
if(!req.worldContext) return;
Tile tile = req.tile();
public void drawRequestConfigTop(BuildPlan plan, Eachable<BuildPlan> list){
if(!plan.worldContext) return;
Tile tile = plan.tile();
if(tile == null) return;
countOre(tile);
if(returnItem == null || !drawMineItem) return;
Draw.color(returnItem.color);
Draw.rect(itemRegion, req.drawx(), req.drawy());
Draw.rect(itemRegion, plan.drawx(), plan.drawy());
Draw.color();
}

View File

@@ -7,9 +7,11 @@ import arc.util.*;
import arc.util.io.*;
import mindustry.content.*;
import mindustry.entities.*;
import mindustry.entities.units.*;
import mindustry.gen.*;
import mindustry.logic.*;
import mindustry.type.*;
import mindustry.ui.*;
import mindustry.world.*;
import mindustry.world.draw.*;
import mindustry.world.meta.*;
@@ -19,7 +21,13 @@ public class GenericCrafter extends Block{
public @Nullable ItemStack outputItem;
/** Overwrites outputItem if not null. */
public @Nullable ItemStack[] outputItems;
/** Written to outputLiquids as a single-element array if outputLiquids is null. */
public @Nullable LiquidStack outputLiquid;
/** Overwrites outputLiquid if not null. */
public @Nullable LiquidStack[] outputLiquids;
/** Liquid output directions, specified in the same order as outputLiquids. Use -1 to dump in every direction. Rotations are relative to block. */
public int[] liquidOutputDirections = {-1};
public float craftTime = 80;
public Effect craftEffect = Fx.none;
@@ -52,8 +60,27 @@ public class GenericCrafter extends Block{
stats.add(Stat.output, StatValues.items(craftTime, outputItems));
}
if(outputLiquid != null){
stats.add(Stat.output, outputLiquid.liquid, outputLiquid.amount * (60f / craftTime), true);
if(outputLiquids != null){
stats.add(Stat.output, StatValues.liquids(craftTime, outputLiquids));
}
}
@Override
public void setBars(){
super.setBars();
//set up liquid bars for multiple liquid outputs; TODO multiple inputs not yet supported due to inherent complexity
//TODO this will currently screw up input display if input liquids are available
if(outputLiquids != null && outputLiquids.length > 1){
bars.remove("liquid");
for(var stack : outputLiquids){
bars.add("liquid-" + stack.liquid.name, entity -> new Bar(
() -> stack.liquid.localizedName,
() -> stack.liquid.barColor(),
() -> entity.liquids.get(stack.liquid) / liquidCapacity)
);
}
}
}
@@ -70,9 +97,21 @@ public class GenericCrafter extends Block{
if(outputItems == null && outputItem != null){
outputItems = new ItemStack[]{outputItem};
}
if(outputLiquids == null && outputLiquid != null){
outputLiquids = new LiquidStack[]{outputLiquid};
}
super.init();
}
public void drawPlanBase(BuildPlan req, Eachable<BuildPlan> list){
super.drawRequestRegion(req, list);
}
@Override
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
drawer.drawPlan(this, plan, list);
}
@Override
public TextureRegion[] icons(){
return drawer.icons(this);
@@ -102,13 +141,21 @@ public class GenericCrafter extends Block{
@Override
public boolean shouldConsume(){
if(outputItems != null){
for(ItemStack output : outputItems){
for(var output : outputItems){
if(items.get(output.item) + output.amount > itemCapacity){
return false;
}
}
}
return (outputLiquid == null || !(liquids.get(outputLiquid.liquid) >= liquidCapacity - 0.001f)) && enabled;
if(outputLiquids != null){
for(var output : outputLiquids){
if(liquids.get(output.liquid) >= liquidCapacity - 0.001f){
return false;
}
}
}
return enabled;
}
@Override
@@ -141,15 +188,17 @@ public class GenericCrafter extends Block{
consume();
if(outputItems != null){
for(ItemStack output : outputItems){
for(var output : outputItems){
for(int i = 0; i < output.amount; i++){
offload(output.item);
}
}
}
if(outputLiquid != null){
handleLiquid(this, outputLiquid.liquid, outputLiquid.amount);
if(outputLiquids != null){
for(var output : outputLiquids){
handleLiquid(this, output.liquid, output.amount);
}
}
craftEffect.at(x, y);
@@ -163,8 +212,12 @@ public class GenericCrafter extends Block{
}
}
if(outputLiquid != null){
dumpLiquid(outputLiquid.liquid);
if(outputLiquids != null){
for(int i = 0; i < outputLiquids.length; i++){
int dir = liquidOutputDirections.length > i ? liquidOutputDirections[i] : -1;
dumpLiquid(outputLiquids[i].liquid, 2f, dir);
}
}
}

View File

@@ -15,6 +15,8 @@ import static mindustry.Vars.*;
public class Pump extends LiquidBlock{
/** Pump amount per tile. */
public float pumpAmount = 0.2f;
/** Interval in-between item consumptions, if applicable. */
public float consumeTime = 60f * 5f;
public Pump(String name){
super(name);
@@ -41,6 +43,10 @@ public class Pump extends LiquidBlock{
for(Tile other : tile.getLinkedTilesAs(this, tempTiles)){
if(canPump(other)){
if(liquidDrop != null && other.floor().liquidDrop != liquidDrop){
liquidDrop = null;
break;
}
liquidDrop = other.floor().liquidDrop;
amount += other.floor().liquidMultiplier;
}
@@ -81,6 +87,7 @@ public class Pump extends LiquidBlock{
}
public class PumpBuild extends LiquidBuild{
public float consTimer;
public float amount = 0f;
public Liquid liquidDrop = null;
@@ -121,6 +128,12 @@ public class Pump extends LiquidBlock{
if(consValid() && liquidDrop != null){
float maxPump = Math.min(liquidCapacity - liquids.total(), amount * pumpAmount * edelta());
liquids.add(liquidDrop, maxPump);
//does nothing for most pumps, as those do not require items.
if((consTimer += delta()) >= consumeTime){
consume();
consumeTime = 0f;
}
}
dumpLiquid(liquids.current());

View File

@@ -81,9 +81,9 @@ public class WallCrafter extends Block{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90);
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
}
@Override

View File

@@ -45,8 +45,8 @@ public class ItemSource extends Block{
}
@Override
public void drawRequestConfig(BuildPlan req, Eachable<BuildPlan> list){
drawRequestConfigCenter(req, req.config, "center", true);
public void drawRequestConfig(BuildPlan plan, Eachable<BuildPlan> list){
drawRequestConfigCenter(plan, plan.config, "center", true);
}
@Override

View File

@@ -41,8 +41,8 @@ public class LiquidSource extends Block{
}
@Override
public void drawRequestConfig(BuildPlan req, Eachable<BuildPlan> list){
drawRequestConfigCenter(req, req.config, "center", true);
public void drawRequestConfig(BuildPlan plan, Eachable<BuildPlan> list){
drawRequestConfigCenter(plan, plan.config, "center", true);
}
public class LiquidSourceBuild extends Building{

View File

@@ -44,8 +44,8 @@ public class Unloader extends Block{
}
@Override
public void drawRequestConfig(BuildPlan req, Eachable<BuildPlan> list){
drawRequestConfigCenter(req, req.config, "unloader-center");
public void drawRequestConfig(BuildPlan plan, Eachable<BuildPlan> list){
drawRequestConfigCenter(plan, plan.config, "unloader-center");
}
@Override

View File

@@ -32,11 +32,11 @@ public class Reconstructor extends UnitBlock{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(inRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(topRegion, req.drawx(), req.drawy());
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(inRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(topRegion, plan.drawx(), plan.drawy());
}
@Override

View File

@@ -116,10 +116,10 @@ public class UnitFactory extends UnitBlock{
}
@Override
public void drawRequestRegion(BuildPlan req, Eachable<BuildPlan> list){
Draw.rect(region, req.drawx(), req.drawy());
Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90);
Draw.rect(topRegion, req.drawx(), req.drawy());
public void drawRequestRegion(BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(region, plan.drawx(), plan.drawy());
Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90);
Draw.rect(topRegion, plan.drawx(), plan.drawy());
}
public static class UnitPlan{

View File

@@ -2,7 +2,10 @@ package mindustry.world.draw;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.util.*;
import mindustry.entities.units.*;
import mindustry.world.*;
import mindustry.world.blocks.production.*;
import mindustry.world.blocks.production.GenericCrafter.*;
/** An implementation of custom rendering behavior for a crafter block.
@@ -20,6 +23,11 @@ public class DrawBlock{
}
/** Draws the planned version of this block. */
public void drawPlan(GenericCrafter crafter, BuildPlan plan, Eachable<BuildPlan> list){
crafter.drawPlanBase(plan, list);
}
/** Load any relevant texture regions. */
public void load(Block block){

View File

@@ -0,0 +1,58 @@
package mindustry.world.draw;
import arc.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
import arc.util.*;
import mindustry.entities.units.*;
import mindustry.graphics.*;
import mindustry.world.*;
import mindustry.world.blocks.heat.*;
import mindustry.world.blocks.production.*;
import mindustry.world.blocks.production.GenericCrafter.*;
public class DrawHeatOutput extends DrawBlock{
public TextureRegion heat, glow, top1, top2;
public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f);
public float heatPulse = 0.3f, heatPulseScl = 10f, glowMult = 1.2f;
@Override
public void draw(GenericCrafterBuild build){
Draw.rect(build.block.region, build.x, build.y);
Draw.rect(build.rotation > 1 ? top2 : top1, build.x, build.y, build.rotdeg());
if(build instanceof HeatBlock heater && heater.heat() > 0){
Draw.z(Layer.blockAdditive);
Draw.blend(Blending.additive);
Draw.color(heatColor, heater.heatFrac() * (heatColor.a * (1f - heatPulse + Mathf.absin(heatPulseScl, heatPulse))));
Draw.rect(heat, build.x, build.y, build.rotdeg());
Draw.color(Draw.getColor().mul(glowMult));
Draw.rect(glow, build.x, build.y);
Draw.blend();
Draw.color();
}
}
@Override
public void drawPlan(GenericCrafter block, BuildPlan plan, Eachable<BuildPlan> list){
Draw.rect(block.region, plan.drawx(), plan.drawy());
Draw.rect(plan.rotation > 1 ? top2 : top1, plan.drawx(), plan.drawy(), plan.rotation * 90);
}
@Override
public void load(Block block){
heat = Core.atlas.find(block.name + "-heat");
glow = Core.atlas.find(block.name + "-glow");
top1 = Core.atlas.find(block.name + "-top1");
top2 = Core.atlas.find(block.name + "-top2");
}
@Override
public TextureRegion[] icons(Block block){
return new TextureRegion[]{block.region, top1};
}
}

View File

@@ -61,6 +61,14 @@ public class StatValues{
};
}
public static StatValue liquids(float timePeriod, LiquidStack... stacks){
return table -> {
for(var stack : stacks){
table.add(new LiquidDisplay(stack.liquid, stack.amount * (60f / timePeriod), true)).padRight(5);
}
};
}
public static StatValue items(ItemStack... stacks){
return items(true, stacks);
}