Compare commits

..

36 Commits
v46 ... v47

Author SHA1 Message Date
Anuken
454267455b Fixed mobile consume frag / Added ability for ship to mine 2018-07-12 15:44:05 -04:00
Anuken
8e9adeb4b4 Fixed web version bugs 2018-07-12 14:06:50 -04:00
Anuken
1f18e7beed Improved glitchy interpolation / Updated uCore 2018-07-12 11:38:09 -04:00
Anuken
b5e8e54107 Added build tools to travis 2018-07-12 10:24:56 -04:00
Anuken
f41e426b69 Reactor balancing / Fixed generators / Fixed pump crash / Travis update 2018-07-12 10:20:38 -04:00
Anuken
6375862a71 Fixed deadlock / Crafter fixes / Autotile fixes / Low FPS ship fixes 2018-07-12 09:11:28 -04:00
Anuken
be2a745d78 Increased ore generation amount 2018-07-11 19:58:49 -04:00
Anuken
d89feb2c75 Bugfixes, minor optimizations 2018-07-11 19:57:27 -04:00
Anuken
b4a20c8fcb Fixed fog glitching around during screenshake 2018-07-11 12:30:07 -04:00
Anuken
73087a92f4 Fixed build error 2018-07-11 12:21:46 -04:00
Anuken
2b58bd5bd8 Optimizations 2018-07-11 12:19:21 -04:00
Anuken
bce0101278 Fixed some multiplayer crashes 2018-07-10 21:04:14 -04:00
Anuken
bba418c79d Added consumers for repair/resupply points 2018-07-10 18:57:50 -04:00
Anuken
cb58eb82fc Added requirement display / Text fixes / Better crash reports 2018-07-10 16:53:35 -04:00
Anuken
3aafffabc1 Added BlockConsumeFragment 2018-07-10 11:41:51 -04:00
Anuken
66b9cdf64c Conduit autotiling / Added Block.onProximityUpdate() 2018-07-10 10:14:10 -04:00
Anuken
d31fbf3b6f Added flyer shadows / Fixed block inventory rebuild spawn / Distributor 2018-07-09 20:18:50 -04:00
Anuken
dbee30a412 Updated uCore / Made splitter distribute properly 2018-07-09 18:14:55 -04:00
Anuken
f3cc881930 Status bar cleanup / Fixed power distribution / Fixed adjacency updates 2018-07-09 14:25:52 -04:00
Anuken
3d9c9e639d Automatic external bundle loading 2018-07-09 11:24:24 -04:00
Anuken
d6969d2c74 Removed unused bundle keys 2018-07-09 11:06:15 -04:00
Anuken
b7e28a73ba Bugfixes / Added tool to re-format bundles with missing text 2018-07-09 11:02:30 -04:00
Anuken
1e8206757d Various bugfixes / Fixed persistent inventory, block crashes 2018-07-08 23:59:02 -04:00
Anuken
a0e94577fc Fixed infinite red square, glitchy shadows 2018-07-08 17:04:32 -04:00
Anuken
a2a0c2f791 Fixed startup error 2018-07-08 16:50:52 -04:00
Anuken
63a0fde121 Offload optimizations / Compile errors fixed / Massive refactor 2018-07-08 16:38:29 -04:00
Anuken
c06152de07 Consumption system more or less complete 2018-07-08 00:04:41 -04:00
Anuken
97b7eb0768 Bugfixes / Compile error fixes / Removed routers 2018-07-07 13:48:20 -04:00
Anuken
d988bb1821 Massive amount of bugfixes / Multi-liquid support / Broken build 2018-07-06 23:24:14 -04:00
Anuken
64f1fbe400 Fixed many various crashes 2018-07-06 12:04:33 -04:00
Anuken
c2c837329c Fixed block construction / Added build version to crash 2018-07-06 10:54:20 -04:00
Anuken
b6531efe08 Merge remote-tracking branch 'origin/4.0' into 4.0 2018-07-06 09:52:26 -04:00
Anuken
2c97a4aefe Fixed importing saves / File chooser bad size 2018-07-06 09:52:18 -04:00
Anuken
df13436688 Merge pull request #135 from cloud9350/patch-1
Update language file for game beta version
2018-07-05 18:54:27 -04:00
Anuken
fa0d89b6df Fixed crash 2018-07-05 17:37:24 -04:00
Gureumi
14fe35bba0 Update bundle_ko.properties 2018-07-05 22:21:12 +09:00
207 changed files with 8348 additions and 7636 deletions

1
.gitignore vendored
View File

@@ -2,6 +2,7 @@
/core/assets/mindustry-saves/ /core/assets/mindustry-saves/
/core/assets/mindustry-maps/ /core/assets/mindustry-maps/
/core/assets/bundles/output/
/deploy/ /deploy/
/desktop/packr-out/ /desktop/packr-out/
/desktop/packr-export/ /desktop/packr-export/

View File

@@ -5,13 +5,14 @@ jdk:
android: android:
components: components:
- android-26 - android-27
# Additional components # Additional components
- extra-google-google_play_services - extra-google-google_play_services
- extra-google-m2repository - extra-google-m2repository
- extra-android-m2repository - extra-android-m2repository
- addon-google_apis-google-26 - addon-google_apis-google-27
- build-tools-27.0.3
script: script:
- ./gradlew desktop:dist - ./gradlew desktop:dist

View File

@@ -20,7 +20,7 @@
<activity <activity
android:name="io.anuke.mindustry.AndroidLauncher" android:name="io.anuke.mindustry.AndroidLauncher"
android:label="@string/app_name" android:label="@string/app_name"
android:screenOrientation="sensor" android:screenOrientation="user"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter> <intent-filter>

View File

@@ -21,7 +21,7 @@ public class Annotations {
Variant variants() default Variant.all; Variant variants() default Variant.all;
/**The local locations where this method is called locally, when invoked.*/ /**The local locations where this method is called locally, when invoked.*/
Loc called() default Loc.none; Loc called() default Loc.none;
/**Whether to forward this packet to all other clients upon recieval. Server only.*/ /**Whether to forward this packet to all other clients upon recieval. Client only.*/
boolean forward() default false; boolean forward() default false;
/**Whether the packet for this method is sent with UDP instead of TCP. /**Whether the packet for this method is sent with UDP instead of TCP.
* UDP is faster, but is prone to packet loss and duplication.*/ * UDP is faster, but is prone to packet loss and duplication.*/
@@ -67,7 +67,7 @@ public class Annotations {
client(false, true), client(false, true),
/**Method can be invoked from anywhere*/ /**Method can be invoked from anywhere*/
both(true, true), both(true, true),
/**Neither server no client.*/ /**Neither server nor client.*/
none(false, false); none(false, false);
/**If true, this method can be invoked ON clients FROM servers.*/ /**If true, this method can be invoked ON clients FROM servers.*/

View File

@@ -129,7 +129,7 @@ public class RemoteWriteGenerator {
method.beginControlFlow("if("+getCheckString(methodEntry.where)+")"); method.beginControlFlow("if("+getCheckString(methodEntry.where)+")");
//add statement to create packet from pool //add statement to create packet from pool
method.addStatement("$1N packet = $2N.obtain($1N.class)", "io.anuke.mindustry.net.Packets.InvokePacket", "com.badlogic.gdx.utils.Pools"); method.addStatement("$1N packet = $2N.obtain($1N.class)", "io.anuke.mindustry.net.Packets.InvokePacket", "io.anuke.ucore.util.Pooling");
//assign buffer //assign buffer
method.addStatement("packet.writeBuffer = TEMP_BUFFER"); method.addStatement("packet.writeBuffer = TEMP_BUFFER");
//assign priority //assign priority

View File

@@ -9,7 +9,7 @@ buildscript {
dependencies { dependencies {
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.0' classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.0'
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6' classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
classpath 'com.android.tools.build:gradle:3.1.0' classpath 'com.android.tools.build:gradle:3.1.3'
classpath "com.badlogicgames.gdx:gdx-tools:1.9.8" classpath "com.badlogicgames.gdx:gdx-tools:1.9.8"
} }
} }
@@ -27,7 +27,7 @@ allprojects {
gdxVersion = '1.9.8' gdxVersion = '1.9.8'
roboVMVersion = '2.3.0' roboVMVersion = '2.3.0'
aiVersion = '1.8.1' aiVersion = '1.8.1'
uCoreVersion = '2241e5402e' uCoreVersion = 'c502931313'
getVersionString = { getVersionString = {
String buildVersion = getBuildVersion() String buildVersion = getBuildVersion()

View File

Before

Width:  |  Height:  |  Size: 296 B

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

View File

Before

Width:  |  Height:  |  Size: 267 B

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

View File

@@ -55,13 +55,7 @@ text.about.button=About
text.name=Name: text.name=Name:
text.unlocked=New Block Unlocked! text.unlocked=New Block Unlocked!
text.unlocked.plural=New Blocks Unlocked! text.unlocked.plural=New Blocks Unlocked!
text.server.rollback=Rollback
text.server.rollback.numberfield=Rollback Amount:
text.blocks.editlogs=Edit Logs
text.block.editlogsnotfound=[red]There are no edit logs for this location.
text.public=Public
text.players={0} players online text.players={0} players online
text.server.player.host={0} (host)
text.players.single={0} player online text.players.single={0} player online
text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry! text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry!
text.server.closing=[accent]Closing server... text.server.closing=[accent]Closing server...
@@ -118,7 +112,6 @@ text.confirmban=Are you sure you want to ban this player?
text.confirmunban=Are you sure you want to unban this player? text.confirmunban=Are you sure you want to unban this player?
text.confirmadmin=Are you sure you want to make this player an admin? text.confirmadmin=Are you sure you want to make this player an admin?
text.confirmunadmin=Are you sure you want to remove admin status from this player? text.confirmunadmin=Are you sure you want to remove admin status from this player?
text.joingame.byip=Join by IP...
text.joingame.title=Join Game text.joingame.title=Join Game
text.joingame.ip=IP: text.joingame.ip=IP:
text.disconnect=Disconnected. text.disconnect=Disconnected.
@@ -130,8 +123,6 @@ text.server.port=Port:
text.server.addressinuse=Address already in use! text.server.addressinuse=Address already in use!
text.server.invalidport=Invalid port number! text.server.invalidport=Invalid port number!
text.server.error=[crimson]Error hosting server: [orange]{0} text.server.error=[crimson]Error hosting server: [orange]{0}
text.tutorial.back=< Prev
text.tutorial.next=Next >
text.save.new=New Save text.save.new=New Save
text.save.overwrite=Are you sure you want to overwrite\nthis save slot? text.save.overwrite=Are you sure you want to overwrite\nthis save slot?
text.overwrite=Overwrite text.overwrite=Overwrite
@@ -141,7 +132,7 @@ text.savefail=Failed to save game!
text.save.delete.confirm=Are you sure you want to delete this save? text.save.delete.confirm=Are you sure you want to delete this save?
text.save.delete=Delete text.save.delete=Delete
text.save.export=Export Save text.save.export=Export Save
text.save.import.invalid=[orange]This save is invalid!\n\nNote that[scarlet]importing saves with custom maps[orange]\nfrom other devices does not work! text.save.import.invalid=[orange]This save is invalid!
text.save.import.fail=[crimson]Failed to import save: [orange]{0} text.save.import.fail=[crimson]Failed to import save: [orange]{0}
text.save.export.fail=[crimson]Failed to export save: [orange]{0} text.save.export.fail=[crimson]Failed to export save: [orange]{0}
text.save.import=Import Save text.save.import=Import Save
@@ -226,21 +217,13 @@ text.editor.exportimage.description=Export a map image file
text.editor.loadimage=Import Terrain text.editor.loadimage=Import Terrain
text.editor.saveimage=Export Terrain text.editor.saveimage=Export Terrain
text.editor.unsaved=[scarlet]You have unsaved changes![]\nAre you sure you want to exit? text.editor.unsaved=[scarlet]You have unsaved changes![]\nAre you sure you want to exit?
text.editor.brushsize=Brush size: {0}
text.editor.noplayerspawn=This map has no player spawnpoint!
text.editor.manyplayerspawns=Maps cannot have more than one\nplayer spawnpoint!
text.editor.manyenemyspawns=Cannot have more than\n{0} enemy spawnpoints!
text.editor.resizemap=Resize Map text.editor.resizemap=Resize Map
text.editor.resizebig=[scarlet]Warning!\n[]Maps larger than 256 units may be laggy and unstable.
text.editor.mapname=Map Name: text.editor.mapname=Map Name:
text.editor.overwrite=[accent]Warning!\nThis overwrites an existing map. text.editor.overwrite=[accent]Warning!\nThis overwrites an existing map.
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it? text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
text.editor.selectmap=Select a map to load: text.editor.selectmap=Select a map to load:
text.width=Width: text.width=Width:
text.height=Height: text.height=Height:
text.randomize=Randomize
text.apply=Apply
text.update=Update
text.menu=Menu text.menu=Menu
text.play=Play text.play=Play
text.load=Load text.load=Load
@@ -269,7 +252,6 @@ text.yes=Yes
text.no=No text.no=No
text.info.title=[accent]Info text.info.title=[accent]Info
text.error.title=[crimson]An error has occured text.error.title=[crimson]An error has occured
text.error.crashmessage=[SCARLET]An unexpected error has occured, which would have caused a crash.\n[]Please report the exact circumstances under which this error occured to the developer: \n[ORANGE]anukendev@gmail.com[]
text.error.crashtitle=An error has occured text.error.crashtitle=An error has occured
text.blocks.blockinfo=Block Info text.blocks.blockinfo=Block Info
text.blocks.powercapacity=Power Capacity text.blocks.powercapacity=Power Capacity
@@ -297,6 +279,10 @@ text.blocks.drilltier=Drillables
text.blocks.drillspeed=Base Drill Speed text.blocks.drillspeed=Base Drill Speed
text.blocks.liquidoutput=Liquid Output text.blocks.liquidoutput=Liquid Output
text.blocks.liquiduse=Liquid Use text.blocks.liquiduse=Liquid Use
text.blocks.coolant=Coolant
text.blocks.coolantuse=Coolant Use
text.blocks.inputliquidfuel=Fuel Liquid
text.blocks.liquidfueluse=Liquid Fuel Use
text.blocks.explosive=Highly explosive! text.blocks.explosive=Highly explosive!
text.blocks.health=Health text.blocks.health=Health
text.blocks.inaccuracy=Inaccuracy text.blocks.inaccuracy=Inaccuracy
@@ -306,6 +292,7 @@ text.blocks.inputfuel=Fuel
text.blocks.fuelburntime=Fuel Burn Time text.blocks.fuelburntime=Fuel Burn Time
text.blocks.inputcapacity=Input capacity text.blocks.inputcapacity=Input capacity
text.blocks.outputcapacity=Output capacity text.blocks.outputcapacity=Output capacity
text.blocks.required=Required:
text.unit.blocks=blocks text.unit.blocks=blocks
text.unit.powersecond=power units/second text.unit.powersecond=power units/second
@@ -332,7 +319,6 @@ setting.difficulty.insane=insane
setting.difficulty.purge=purge setting.difficulty.purge=purge
setting.difficulty.name=Difficulty: setting.difficulty.name=Difficulty:
setting.screenshake.name=Screen Shake setting.screenshake.name=Screen Shake
setting.smoothcam.name=Smooth Camera
setting.indicators.name=Enemy Indicators setting.indicators.name=Enemy Indicators
setting.effects.name=Display Effects setting.effects.name=Display Effects
setting.sensitivity.name=Controller Sensitivity setting.sensitivity.name=Controller Sensitivity
@@ -343,10 +329,8 @@ setting.multithread.name=Multithreading
setting.fps.name=Show FPS setting.fps.name=Show FPS
setting.vsync.name=VSync setting.vsync.name=VSync
setting.lasers.name=Show Power Lasers setting.lasers.name=Show Power Lasers
setting.previewopacity.name=Placing Preview Opacity
setting.healthbars.name=Show Entity Health bars setting.healthbars.name=Show Entity Health bars
setting.minimap.name=Show Minimap setting.minimap.name=Show Minimap
setting.pixelate.name=Pixelate Screen
setting.musicvol.name=Music Volume setting.musicvol.name=Music Volume
setting.mutemusic.name=Mute Music setting.mutemusic.name=Mute Music
setting.sfxvol.name=SFX Volume setting.sfxvol.name=SFX Volume
@@ -457,12 +441,12 @@ block.splitter.name=Splitter
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved. block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
block.router.name=Router block.router.name=Router
block.router.description=Splits items into all 4 directions. Can store items as a buffer. block.router.description=Splits items into all 4 directions. Can store items as a buffer.
block.multiplexer.name=Multiplexer block.distributor.name=Distributor
block.multiplexer.description=A router that can split items into 8 directions. block.distributor.description=A splitter that can split items into 8 directions.
block.sorter.name=Sorter block.sorter.name=Sorter
block.sorter.description=Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. block.sorter.description=Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
block.overflowgate.name=Overflow Gate block.overflow-gate.name=Overflow Gate
block.overflowgate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked. block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
block.bridgeconveyor.name=Bridge Conveyor block.bridgeconveyor.name=Bridge Conveyor
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks. block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
block.smelter.name=Smelter block.smelter.name=Smelter
@@ -512,7 +496,6 @@ block.swarmer.name=Swarmer
block.salvo.name=Salvo block.salvo.name=Salvo
block.ripple.name=Ripple block.ripple.name=Ripple
block.phase-conveyor.name=Phase Conveyor block.phase-conveyor.name=Phase Conveyor
block.overflow-gate.name=Overflow Gate
block.bridge-conveyor.name=Bridge Conveyor block.bridge-conveyor.name=Bridge Conveyor
block.plastanium-compressor.name=Plastanium Compressor block.plastanium-compressor.name=Plastanium Compressor
block.pyratite-mixer.name=Pyratite Mixer block.pyratite-mixer.name=Pyratite Mixer

View File

@@ -1,479 +1,494 @@
text.about = Erstellt von [ROYAL] Anuken. [] \nUrsprünglich ein Eintrag im [orange] GDL [] MM Jam.\n\nCredits: \n- SFX gemacht mit [yellow] bfxr [] - Musik gemacht von [green] RoccoW [] / gefunden auf [lime] FreeMusicArchive.org [] \n\nBesonderer Dank geht an: \n- [coral] MitchellFJN []: Umfangreicher Spieletest und Feedback \n- [sky] Luxray5474 []: Wiki-Arbeit, Code-Beiträge \n- Alle Beta-Tester auf itch.io und Google Play\n text.about=Erstellt von [ROYAL] Anuken. [] \nUrsprünglich ein Eintrag im [orange] GDL [] MM Jam.\n\nCredits: \n- SFX gemacht mit [yellow] bfxr [] - Musik gemacht von [green] RoccoW [] / gefunden auf [lime] FreeMusicArchive.org [] \n\nBesonderer Dank geht an: \n- [coral] MitchellFJN []: Umfangreicher Spieletest und Feedback \n- [sky] Luxray5474 []: Wiki-Arbeit, Code-Beiträge \n- Alle Beta-Tester auf itch.io und Google Play\n
text.discord = Trete dem Mindustry Discord bei! text.discord=Trete dem Mindustry Discord bei!
text.gameover = Der Kern wurde zerstört. text.gameover=Der Kern wurde zerstört.
text.highscore = [YELLOW] Neuer Highscore! text.highscore=[YELLOW] Neuer Highscore!
text.lasted = Du hast bis zur folgenden Welle überlebt text.lasted=Du hast bis zur folgenden Welle überlebt
text.level.highscore = High Score: [accent] {0} text.level.highscore=High Score: [accent] {0}
text.level.delete.title = Löschen bestätigen text.level.delete.title=Löschen bestätigen
text.level.delete = Bist du sicher, dass du die Karte \"[orange] {0}\" löschen möchtest? text.level.select=Level Auswahl
text.level.select = Level Auswahl text.level.mode=Spielmodus:
text.level.mode = Spielmodus: text.savegame=Spiel speichern
text.savegame = Spiel speichern text.loadgame=Spiel laden
text.loadgame = Spiel laden text.joingame=Spiel beitreten
text.joingame = Spiel beitreten text.quit=Verlassen
text.quit = Verlassen text.about.button=Info
text.about.button = Info text.name=Name:
text.name = Name: text.players={0} Spieler online
text.public = Öffentlich text.players.single={0} Spieler online
text.players = {0} Spieler online text.server.mismatch=Paketfehler: Mögliche Client / Server-Version stimmt nicht überein. Stell sicher, dass du und der Host die neueste Version von Mindustry haben!
text.players.single = {0} Spieler online text.server.kicked.kick=Du wurdest vom Server gekickt!
text.server.mismatch = Paketfehler: Mögliche Client / Server-Version stimmt nicht überein. Stell sicher, dass du und der Host die neueste Version von Mindustry haben! text.server.kicked.invalidPassword=Falsches Passwort.
.server.closing = [accent] Server wird geschlossen... text.server.connected={0} ist beigetreten
text.server.kicked.kick = Du wurdest vom Server gekickt! text.server.disconnected={0} hat die Verbindung getrennt.
text.server.kicked.invalidPassword = Falsches Passwort. text.nohost=Server kann nicht auf einer benutzerdefinierten Karte gehostet werden!
text.server.connected = {0} ist beigetreten text.hostserver=Server hosten
text.server.disconnected = {0} hat die Verbindung getrennt. text.host=Host
text.nohost = Server kann nicht auf einer benutzerdefinierten Karte gehostet werden! text.hosting=[accent] Server wird geöffnet...
text.hostserver = Server hosten text.hosts.refresh=Aktualisieren
text.host = Host text.hosts.discovering=Suche nach LAN-Spielen
text.hosting = [accent] Server wird geöffnet... text.server.refreshing=Server wird aktualisiert
text.hosts.refresh = Aktualisieren text.hosts.none=[lightgray] Keine LAN Spiele gefunden!
text.hosts.discovering = Suche nach LAN-Spielen text.host.invalid=[scarlet] Kann keine Verbindung zum Host herstellen.
text.server.refreshing = Server wird aktualisiert text.server.add=Server hinzufügen
text.hosts.none = [lightgray] Keine LAN Spiele gefunden! text.server.delete=Bist du dir sicher das du diesen Server löschen möchtest?
text.host.invalid = [scarlet] Kann keine Verbindung zum Host herstellen. text.server.hostname=Host: {0}
text.server.add = Server hinzufügen text.server.edit=Server bearbeiten
text.server.delete = Bist du dir sicher das du diesen Server löschen möchtest? text.joingame.title=Spiel beitreten
text.server.hostname = Host: {0} text.joingame.ip=IP:
text.server.edit = Server bearbeiten text.disconnect=Verbindung unterbrochen.
text.joingame.byip = Über IP beitreten ... text.connecting=[accent] Verbindet...
text.joingame.title = Spiel beitreten text.connecting.data=[accent] Weltdaten werden geladen...
text.joingame.ip = IP: text.connectfail=[crimson] Verbindung zum Server konnte nicht hergestellt werden: [orange]{0}
text.disconnect = Verbindung unterbrochen. text.server.port=Port:
text.connecting = [accent] Verbindet... text.server.invalidport=Falscher Port!
text.connecting.data = [accent] Weltdaten werden geladen... text.server.error=[crimson] Fehler beim Hosten des Servers: [orange] {0}
text.connectfail = [crimson] Verbindung zum Server konnte nicht hergestellt werden: [orange]{0} text.save.new=Neuer Spielstand
text.server.port = Port: text.save.overwrite=Möchten du diesen Spielstand wirklich überschreiben?
text.server.invalidport = Falscher Port! text.overwrite=Überschreiben
text.server.error = [crimson] Fehler beim Hosten des Servers: [orange] {0} text.save.none=Keine Spielstände gefunden!
text.tutorial.back = < Zurück text.saveload=[accent] Speichern ...
text.tutorial.next = Weiter > text.savefail=Fehler beim Speichern des Spiels!
text.save.new = Neuer Spielstand text.save.delete.confirm=Möchtest du diesen Spielstand wirklich löschen?
text.save.overwrite = Möchten du diesen Spielstand wirklich überschreiben? text.save.delete=Löschen
text.overwrite = Überschreiben text.save.export=Spielstand exportieren
text.save.none = Keine Spielstände gefunden! text.save.import.invalid=[orange] Dieser Spielstand ist ungültig!
text.saveload = [accent] Speichern ... text.save.import.fail=[crimson] Spielstand konnte nicht importiert werden: [orange] {0}
text.savefail = Fehler beim Speichern des Spiels! text.save.export.fail=[crimson] Spielstand konnte nicht exportiert werden: [orange] {0}
text.save.delete.confirm = Möchtest du diesen Spielstand wirklich löschen? text.save.import=Spielstand importieren
text.save.delete = Löschen text.save.newslot=Name speichern:
text.save.export = Spielstand exportieren text.save.rename=Umbenennen
text.save.import.invalid = [orange] Dieser Spielstand ist ungültig! text.save.rename.text=Neuer Name
text.save.import.fail = [crimson] Spielstand konnte nicht importiert werden: [orange] {0} text.selectslot=Wähle einen Spielstand
text.save.export.fail = [crimson] Spielstand konnte nicht exportiert werden: [orange] {0} text.slot=[accent] Platz {0}
text.save.import = Spielstand importieren text.save.corrupted=[orange] Datei beschädigt oder ungültig!
text.save.newslot = Name speichern: text.empty=<leer>
text.save.rename = Umbenennen text.on=An
text.save.rename.text = Neuer Name text.off=Aus
text.selectslot = Wähle einen Spielstand text.save.autosave=Automatisches Speichern: {0}
text.slot = [accent] Platz {0} text.save.map=Karte: {0}
text.save.corrupted = [orange] Datei beschädigt oder ungültig! text.save.wave=Welle: {0}
text.empty = <leer> text.save.date=Zuletzt gespeichert: {0}
text.on = An text.confirm=Bestätigen
text.off = Aus text.delete=Löschen
text.save.autosave = Automatisches Speichern: {0} text.ok=OK
text.save.map = Karte: {0} text.open=Öffnen
text.save.wave = Welle: {0} text.cancel=Abbruch
text.save.date = Zuletzt gespeichert: {0} text.openlink=Link öffnen
text.confirm = Bestätigen text.back=Zurück
text.delete = Löschen text.quit.confirm=Willst du wirklich aufhören?
text.ok = OK text.loading=[accent] Wird geladen ...
text.open = Öffnen text.wave=[orange] Welle {0}
text.cancel = Abbruch text.wave.waiting=Welle in {0}
text.openlink = Link öffnen text.waiting=Warten...
text.back = Zurück text.enemies={0} Feinde
text.quit.confirm = Willst du wirklich aufhören? text.enemies.single={0} Feind
text.loading = [accent] Wird geladen ... text.loadimage=Bild laden
text.wave = [orange] Welle {0} text.saveimage=Bild speichern
text.wave.waiting = Welle in {0} text.editor.badsize=[orange]Ungültige Bildabmessungen! [] Gültige Kartenabmessungen: {0}
text.waiting = Warten... text.editor.errorimageload=Fehler beim Laden des Bildes: [orange] {0}
text.enemies = {0} Feinde text.editor.errorimagesave=Fehler beim Speichern des Bildes: [orange] {0}
text.enemies.single = {0} Feind text.editor.generate=Generieren
text.loadimage = Bild laden text.editor.resize=Grösse\nanpassen
text.saveimage = Bild speichern text.editor.loadmap=Karte\nladen
text.editor.badsize = [orange]Ungültige Bildabmessungen! [] Gültige Kartenabmessungen: {0} text.editor.savemap=Karte\nspeichern
text.editor.errorimageload = Fehler beim Laden des Bildes: [orange] {0} text.editor.loadimage=Bild\nladen
text.editor.errorimagesave = Fehler beim Speichern des Bildes: [orange] {0} text.editor.saveimage=Bild\nspeichern
text.editor.generate = Generieren text.editor.unsaved=[crimson] Du hast Änderungen nicht gespeichert [] Möchtest du wirklich aufhören?
text.editor.resize = Grösse\nanpassen text.editor.resizemap=Grösse der Karte ändern
text.editor.loadmap = Karte\nladen text.editor.mapname=Map Name
text.editor.savemap = Karte\nspeichern text.editor.overwrite=[accent] Warnung! Dies überschreibt eine vorhandene Map.
text.editor.loadimage = Bild\nladen text.editor.selectmap=Wähle eine Map zum Laden:
text.editor.saveimage = Bild\nspeichern text.width=Breite:
text.editor.unsaved = [crimson] Du hast Änderungen nicht gespeichert [] Möchtest du wirklich aufhören? text.height=Höhe:
text.editor.brushsize = Pinselgrösse: {0} text.menu=Menü
text.editor.noplayerspawn = Diese Karte hat keinen Spielerspawnpunkt! text.play=Spielen
text.editor.manyplayerspawns = Maps können nicht mehr als einen Spawnpunkt des Spielers haben! text.load=Laden
text.editor.manyenemyspawns = Kann nicht mehr als {0} feindliche Spawnpunkte haben! text.save=Speichern
text.editor.resizemap = Grösse der Karte ändern text.settings=Einstellungen
text.editor.resizebig = [crimson] Warnung! [] Karten, die grösser als 256 Einheiten sind, können ruckeln und instabil sein. text.tutorial=Tutorial
text.editor.mapname = Map Name text.editor=Bearbeiter
text.editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Map. text.mapeditor=Karten Bearbeiter
text.editor.failoverwrite = [crimson] Die Standardkarte kann nicht überschrieben werden! text.donate=Spenden
text.editor.selectmap = Wähle eine Map zum Laden: text.settings.reset=Auf Standard zurücksetzen
text.width = Breite: text.settings.controls=Steuerung
text.height = Höhe: text.settings.game=Spiel
text.randomize = Zufällig text.settings.sound=Audio
text.apply = Anwenden text.settings.graphics=Grafiken
text.update = Aktualisieren text.upgrades=Verbesserungen
text.menu = Menü text.purchased=[LIME] Erstellt!
text.play = Spielen text.weapons=Waffen
text.load = Laden text.paused=Pausiert
text.save = Speichern text.error.title=[crimson] Ein Fehler ist aufgetreten
text.settings = Einstellungen text.error.crashtitle=EIn Fehler ist aufgetreten!
text.tutorial = Tutorial text.blocks.blockinfo=Blockinfo:
text.editor = Bearbeiter text.blocks.powercapacity=Energiekapazität
text.mapeditor = Karten Bearbeiter text.blocks.powershot=Energie / Schuss
text.donate = Spenden text.blocks.size=Grösse
text.settings.reset = Auf Standard zurücksetzen text.blocks.liquidcapacity=Flüssigkeitskapazität
text.settings.controls = Steuerung text.blocks.maxitemssecond=Max Gegenstände / Sekunde
text.settings.game = Spiel text.blocks.powerrange=Energiereichweite
text.settings.sound = Audio text.blocks.itemcapacity=Gegenstand Kapazität
text.settings.graphics = Grafiken text.blocks.inputliquid=Flüssigkeiten Eingabe
text.upgrades = Verbesserungen text.blocks.inputitem=Eingabe Gegenstand
text.purchased = [LIME] Erstellt! text.blocks.explosive=Hochexplosiv!
text.weapons = Waffen text.blocks.health=Lebenspunkte
text.paused = Pausiert text.blocks.inaccuracy=Ungenauigkeit
text.respawn = Respawn in text.blocks.shots=Schüsse
text.error.title = [crimson] Ein Fehler ist aufgetreten text.blocks.inputcapacity=Eingabekapazität
text.error.crashmessage = [SCARLET] Es ist ein unerwarteter Fehler aufgetreten, der einen Absturz verursacht hätte. [] Bitte geben Sie die genauen Umstände an, unter denen dieser Fehler passiert ist, für den Entwickler: [ORANGE] anukendev@gmail.com [] text.blocks.outputcapacity=Ausgabekapazität
text.error.crashtitle = EIn Fehler ist aufgetreten! setting.difficulty.easy=Leicht
text.mode.break = Zerstörungsmodus: {0} setting.difficulty.normal=Normal
text.mode.place = Platzierungsmodus: {0} setting.difficulty.hard=Schwer
placemode.hold.name = Zeile setting.difficulty.insane=Unmöglich
placemode.areadelete.name = Gebiet setting.difficulty.purge=Auslöschung
placemode.touchdelete.name = berühren setting.difficulty.name=Schwierigkeit
placemode.holddelete.name = halten setting.screenshake.name=Bildschirm wackeln
placemode.none.name = keine setting.indicators.name=Feind Indikatoren
placemode.touch.name = berühren setting.effects.name=Effekte anzeigen
placemode.cursor.name = Mauszeiger setting.sensitivity.name=Kontroller Empfindlichkeit
text.blocks.extrainfo = [accent] Extra Blockinfo: setting.saveinterval.name=Autosave Häufigkeit
text.blocks.blockinfo = Blockinfo: setting.seconds={0} Sekunden
text.blocks.powercapacity = Energiekapazität setting.fps.name=Zeige FPS
text.blocks.powershot = Energie / Schuss setting.vsync.name=VSync
text.blocks.powersecond = Energie / Sekunde setting.lasers.name=Zeige Energielaser
text.blocks.powerdraindamage = Energieabnahme / Schaden setting.healthbars.name=Zeige Objekt Lebensbalken
text.blocks.shieldradius = Schildradius setting.musicvol.name=Musiklautstärke
text.blocks.itemspeedsecond = Gegenstands Geschwindigkeit / Sekunde setting.mutemusic.name=Musik stummschalten
text.blocks.range = Reichweite setting.sfxvol.name=Audioeffekte Lautstärke
text.blocks.size = Grösse setting.mutesound.name=Audioeffekte stummschalten
text.blocks.powerliquid = Energie / Flüssigkeit map.maze.name=Labyrinth
text.blocks.maxliquidsecond = Max Flüssigkeit / Sekunde map.fortress.name=Festung
text.blocks.liquidcapacity = Flüssigkeitskapazität map.sinkhole.name=Sinkloch
text.blocks.liquidsecond = Flüssigkeit / Sekunde map.caves.name=Höhlen
text.blocks.damageshot = Schaden / Schuss map.volcano.name=Vulkan
text.blocks.ammocapacity = Munitionskapazität map.caldera.name=Lavakessel
text.blocks.ammo = Munition map.scorch.name=Flammen
text.blocks.ammoitem = Munition / Gegenstand map.desert.name=Wüste
text.blocks.maxitemssecond = Max Gegenstände / Sekunde map.island.name=Insel
text.blocks.powerrange = Energiereichweite map.grassland.name=Grasland
text.blocks.lasertilerange = Laser Reichweite map.tundra.name=Kältesteppe
text.blocks.capacity = Kapazität map.spiral.name=Spirale
text.blocks.itemcapacity = Gegenstand Kapazität map.tutorial.name=Tutorial
text.blocks.maxpowergenerationsecond = Max Energieerzeugung / Sekunde keybind.move_x.name=bewege_x
text.blocks.powergenerationsecond = Energieerzeugung / Sekunde keybind.move_y.name=bewege_y
text.blocks.generationsecondsitem = Generation Sekunden / Gegenstand keybind.select.name=wählen
text.blocks.input = Eingabe keybind.break.name=Unterbrechung
text.blocks.inputliquid = Flüssigkeiten Eingabe keybind.shoot.name=Schiess
text.blocks.inputitem = Eingabe Gegenstand keybind.zoom_hold.name=zoomen_halten
text.blocks.output = Ausgabe keybind.zoom.name=zoomen
text.blocks.secondsitem = Sekunden / Item keybind.menu.name=Menü
text.blocks.maxpowertransfersecond = Max Energieübertragung / Sekunde keybind.pause.name=Pause
text.blocks.explosive = Hochexplosiv! keybind.dash.name=Bindestrich
text.blocks.repairssecond = Reparaturen / Sekunde keybind.rotate_alt.name=drehen_alt
text.blocks.health = Lebenspunkte keybind.rotate.name=Drehen
text.blocks.inaccuracy = Ungenauigkeit mode.waves.name=Wellen
text.blocks.shots = Schüsse mode.sandbox.name=Sandkasten
text.blocks.shotssecond = Schüsse / Sekunde mode.freebuild.name=Freier Bau
text.blocks.fuel = Treibstoff item.stone.name=Stein
text.blocks.fuelduration = Treibstoffdauer item.coal.name=Kohle
text.blocks.maxoutputsecond = Max Ausgabe / Sekunde item.titanium.name=Titan
text.blocks.inputcapacity = Eingabekapazität item.thorium.name=Uran
text.blocks.outputcapacity = Ausgabekapazität item.sand.name=Sand
text.blocks.poweritem = Energie / Gegenstand liquid.water.name=Wasser
text.placemode = Platzierungsmodus liquid.lava.name=Lava
text.breakmode = Zerstörungsmodus liquid.oil.name=Öl
text.health = Lebenspunkte block.door.name=Tür
setting.difficulty.easy = Leicht block.door-large.name=grosse Tür
setting.difficulty.normal = Normal block.conduit.name=Leitungsrohr
setting.difficulty.hard = Schwer block.pulseconduit.name=Pulsleitungsrohr
setting.difficulty.insane = Unmöglich block.liquidrouter.name=flüssigkeiten verteiler
setting.difficulty.purge = Auslöschung block.conveyor.name=Förderband
setting.difficulty.name = Schwierigkeit block.router.name=Verteiler
setting.screenshake.name = Bildschirm wackeln block.junction.name=Kreuzung
setting.smoothcam.name = Glatte Kamera block.liquidjunction.name=flüssigkeite Kreuzung
setting.indicators.name = Feind Indikatoren block.sorter.name=Sortierer
setting.effects.name = Effekte anzeigen block.smelter.name=Schmelzer
setting.sensitivity.name = Kontroller Empfindlichkeit text.credits=Credits
setting.saveinterval.name = Autosave Häufigkeit text.link.discord.description=the official Mindustry discord chatroom
setting.seconds = {0} Sekunden text.link.github.description=Game source code
setting.fps.name = Zeige FPS text.link.dev-builds.description=Unstable development builds
setting.vsync.name = VSync text.link.trello.description=Official trello board for planned features
setting.lasers.name = Zeige Energielaser text.link.itch.io.description=itch.io page with PC downloads and web version
setting.healthbars.name = Zeige Objekt Lebensbalken text.link.google-play.description=Google Play store listing
setting.pixelate.name = Pixel Bildschirm text.link.wiki.description=official Mindustry wiki
setting.musicvol.name = Musiklautstärke text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
setting.mutemusic.name = Musik stummschalten text.editor.web=The web version does not support the editor!\nDownload the game to use it.
setting.sfxvol.name = Audioeffekte Lautstärke text.web.unsupported=The web version does not support this feature! Download the game to use it.
setting.mutesound.name = Audioeffekte stummschalten text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
map.maze.name = Labyrinth text.host.web=The web version does not support hosting games! Download the game to use this feature.
map.fortress.name = Festung text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
map.sinkhole.name = Sinkloch text.construction.title=Block Construction Guide
map.caves.name = Höhlen text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
map.volcano.name = Vulkan text.deconstruction.title=Block Deconstruction Guide
map.caldera.name = Lavakessel text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
map.scorch.name = Flammen text.showagain=Don't show again next session
map.desert.name = Wüste text.unlocks=Unlocks
map.island.name = Insel text.addplayers=Add/Remove Players
map.grassland.name = Grasland text.newgame=New Game
map.tundra.name = Kältesteppe text.maps=Maps
map.spiral.name = Spirale text.maps.none=[LIGHT_GRAY]No maps found!
map.tutorial.name = Tutorial text.unlocked=New Block Unlocked!
tutorial.intro.text = [gelb] Willkommen zum Tutorial [] Um zu beginnen, drücke 'weiter'. text.unlocked.plural=New Blocks Unlocked!
tutorial.moveDesktop.text = Verwende zum Verschieben die Tasten [orange] [[WASD] []. Halte [orange] Shift [] gedrückt, um zu erhöhen. Halte [orange] CTRL/STRG [] gedrückt, während du das [orange] Scrollrad [] zum Vergrössern oder Verkleinern verwendest. text.server.closing=[accent]Closing server...
tutorial.shoot.text = Ziele mit der Maus, halte die [orange] linke Maustaste [] gedrückt, um zu schiessen. Versuche es mit dem [gelben] Ziel []. text.server.kicked.fastShoot=You are shooting too quickly.
tutorial.moveAndroid.text = Um die Ansicht zu verschieben, ziehe einen Finger über den Bildschirm. Drücke und ziehe, um zu vergrössern oder zu verkleinern. text.server.kicked.clientOutdated=Outdated client! Update your game!
tutorial.placeSelect.text = Versuche, ein [gelbes] Förderband [] aus dem Blockmenü unten rechts auszuwählen. text.server.kicked.serverOutdated=Outdated server! Ask the host to update!
tutorial.placeConveyorDesktop.text = Verwende das [orange] [[scrollwheel] [], um das Förderband nach vorne zu bewegen [orange] vorwärts [], und platziere es dann an der [gelben] markierten Stelle [] mit [orange] [[linke Maustaste] []. text.server.kicked.banned=You are banned on this server.
tutorial.placeConveyorAndroid.text = Verwende die [orange] [[rotieren-Taste] [], um das Förderband nach vorne [orange] zu drehen [], ziehe es mit einem Finger in Position und platziere es dann an der [gelben] markierten Stelle [] mit der [Orange] [[Häkchen][]. text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
tutorial.placeConveyorAndroidInfo.text = Alternativ kannst du das Fadenkreuzsymbol unten links drücken, um zum [orange] [[touch mode] [] zu wechseln, und Blöcke durch Tippen auf den Bildschirm platzieren. Im Touch-Modus können Blöcke mit dem Pfeil unten links gedreht werden. Drücke [gelb] neben [], um es auszuprobieren. text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
tutorial.placeDrill.text = Wähle nun einen [gelben] Steinbohrer [] an der markierten Stelle aus und platziere ihn. text.server.kicked.nameEmpty=Your name must contain at least one character or number.
tutorial.blockInfo.text = Wenn du mehr über einen Block erfahren möchtest, tippe oben rechts auf das [orange] Fragezeichen [], um dessen Beschreibung zu lesen. text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
tutorial.deselectDesktop.text = Du kannst einen Block mit [Orange] [[Rechte Maustaste] [] abwählen. text.server.kicked.customClient=This server does not support custom builds. Download an official version.
tutorial.deselectAndroid.text = Du kannst einen Block abwählen, indem du die [orange] X [] -Taste drücken. text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
tutorial.drillPlaced.text = Der Bohrer erzeugt nun [gelben] Stein, [] gib den Stein nun auf das Förderband aus und bewege ihn dann in den [gelben] Kern []. text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
tutorial.drillInfo.text = Verschiedene Erze benötigen unterschiedliche Bohrer. Stein erfordert Steinbohrer, Eisen erfordert Eisenbohrer usw. text.server.friendlyfire=Friendly Fire
tutorial.drillPlaced2.text = Wenn du Gegenstände in den Kern verschiebst, steckst du sie in dein [gelbes] Inventar [] oben links. Das Platzieren von Blöcken verwendet Gegenstände aus deinem Inventar. text.trace=Trace Player
tutorial.moreDrills.text = Du kannst so viele Bohrer und Förderer miteinander verbinden wie du lust hast. text.trace.playername=Player name: [accent]{0}
tutorial.deleteBlock.text = Du kannst Blöcke löschen, indem du mit der [orange] rechte Maustaste [] auf dem Block klickst, den du löschen möchtest. Versuche, dieses Förderband zu löschen. text.trace.ip=IP: [accent]{0}
tutorial.deleteBlockAndroid.text = Du kannst Blöcke löschen, indem du [orange] das Fadenkreuz [] im [orange] Pausenmodusmenü [] links unten auswählst und auf einen Block tippst. Versuche, dieses Fliessband zu löschen. text.trace.id=Unique ID: [accent]{0}
tutorial.placeTurret.text = Wähle nun einen [gelben] Turm [] an der [gelben] markierten Stelle [] und platziere ihn. text.trace.android=Android Client: [accent]{0}
tutorial.placedTurretAmmo.text = Dieser Turm nimmt nun [gelbe] Munition [] vom Förderband an. Du kannst sehen, wie viel Munition es hat, indem du darüber schweben und den [grünen] grünen Balken [] prüfen. text.trace.modclient=Custom Client: [accent]{0}
tutorial.turretExplanation.text = Geschütze schiessen automatisch auf den nächsten Feind in Reichweite, solange sie genug Munition haben. text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
tutorial.waves.text = Jede [yellow] 60 [] Sekunden wird eine Welle von [coral] Feinden [] an einem bestimmten Orten erscheinen und versuchen, den Kern zu zerstören. text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
tutorial.coreDestruction.text = Dein Ziel ist es, den Kern [yellow] zu verteidigen. Wenn der Kern zerstört wird, verlierst du [coral] das Spiel []. text.trace.lastblockbroken=Last block broken: [accent]{0}
tutorial.pausingDesktop.text = Wenn du jemals eine Pause machen möchtest, drücke die [orange] Pause-Taste [] oben links oder [orange]space[], um das Spiel anzuhalten. Du kannst auch Blöcke immer noch auswählen und platzieren, während du das Spiel pausiert ist, aber Sie können sich nicht bewegen oder schiessen. text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
tutorial.pausingAndroid.text = Wenn du jemals eine Pause machen willst, drück einfach die [orange] Pause-Taste [] oben links, um das Spiel anzuhalten. Sie können immer noch Sachen auswählen und Blöcke während der Pause platzieren. text.trace.lastblockplaced=Last block placed: [accent]{0}
tutorial.purchaseWeapons.text = Du kannst neue [yellow] Waffen [] für deinen Mech kaufen, indem du das Verbesserungs-Menü unten links öffnest. text.invalidid=Invalid client ID! Submit a bug report.
tutorial.switchWeapons.text = Schalte Waffen, indem du entweder auf das Symbol unten links klickst oder Nummern verwendest [orange] [[1-9] []. text.server.bans=Bans
tutorial.spawnWave.text = Hier kommt die erste Welle. Zerstöre sie. text.server.bans.none=No banned players found!
tutorial.pumpDesc.text = In späteren Wellen müsst du möglicherweise [yellow] Pumpen [] verwenden, um Flüssigkeiten für Generatoren oder Extraktoren zu verteilen. text.server.admins=Admins
tutorial.pumpPlace.text = Pumpen arbeiten ähnlich wie Bohrer, ausser dass sie anstelle von Gegenständen Flüssigkeiten produzieren. Versuch mal, eine Pumpe auf das [yellow] gekennzeichnete Öl [] zu setzen. text.server.admins.none=No admins found!
tutorial.conduitUse.text = Stellen Sie nun eine [orange] Leitungsrohr [] von der Pumpe weg. text.server.outdated=[crimson]Outdated Server![]
tutorial.conduitUse2.text = Und noch ein paar mehr ... text.server.outdated.client=[crimson]Outdated Client![]
tutorial.conduitUse3.text = Und noch ein paar mehr ... text.server.version=[lightgray]Version: {0}
tutorial.generator.text = Stellen Sie nun einen [orange] Verbrennungsgenerator [] Block am Ende des Leitungsrohres auf. text.server.custombuild=[yellow]Custom Build
tutorial.generatorExplain.text = Dieser Generator erzeugt nun [yellow] Energie [] aus dem Öl. text.confirmban=Are you sure you want to ban this player?
tutorial.lasers.text = Die Energie wird mit [yellow] Energielasern [] verteilt. Drehe und platziere einen hier. text.confirmunban=Are you sure you want to unban this player?
tutorial.laserExplain.text = Der Generator wird nun Energie in den Laserblock bewegen. Ein [yellow] undurchsichtiger [] Strahl bedeutet, dass er gerade Leistung überträgt, und ein [yellow] transparenter [] Strahl bedeutet, dass dies nicht der Fall ist. text.confirmadmin=Are you sure you want to make this player an admin?
tutorial.laserMore.text = Du kannst überprüfen, wie viel Energie ein Block hat, indem du darüber schweben und den [yellow] gelben Balken [] oben prüfen. text.confirmunadmin=Are you sure you want to remove admin status from this player?
tutorial.healingTurret.text = Dieser Laser kann verwendet werden, um einen [lime] -Reparaturgeschütz [] anzutreiben. Platziere einen hier. text.disconnect.data=Failed to load world data!
tutorial.healingTurretExplain.text = Solange er Kraft hat, repariert dieser Turm in der Nähe Blöcke. [] Wenn du spielst, stelle sicher, dass du so schnell wie möglich einen in deiner Basis bekommst! text.server.addressinuse=Address already in use!
tutorial.smeltery.text = Viele Blöcke benötigen [orange] Stahl [], um eine [orange] Schmelzer [] herzustellen. Platziere einen hier. text.save.difficulty=Difficulty: {0}
tutorial.smelterySetup.text = Diese Schmelzer wird nun [orange] Stahl [] aus dem Eingangs-Eisen produzieren, wobei Kohle als Brennstoff verwendet wird. text.copylink=Copy Link
tutorial.end.text = Und damit ist das Tutorial abgeschlossen! Viel Glück! text.changelog.title=Changelog
keybind.move_x.name = bewege_x text.changelog.loading=Getting changelog...
keybind.move_y.name = bewege_y text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
keybind.select.name = wählen text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
keybind.break.name = Unterbrechung text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
keybind.shoot.name = Schiess text.changelog.current=[yellow][[Current version]
keybind.zoom_hold.name = zoomen_halten text.changelog.latest=[orange][[Latest version]
keybind.zoom.name = zoomen text.saving=[accent]Saving...
keybind.menu.name = Menü text.unknown=Unknown
keybind.pause.name = Pause text.custom=Custom
keybind.dash.name = Bindestrich text.builtin=Built-In
keybind.rotate_alt.name = drehen_alt text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
keybind.rotate.name = Drehen text.map.random=[accent]Random Map
keybind.weapon_1.name = Waffe_1 text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
keybind.weapon_2.name = Waffe_2 text.editor.slope=\\
keybind.weapon_3.name = Waffe_3 text.editor.openin=Open In Editor
keybind.weapon_4.name = Waffe_4 text.editor.oregen=Ore Generation
keybind.weapon_5.name = Waffe_5 text.editor.oregen.info=Ore Generation:
keybind.weapon_6.name = Waffe_6 text.editor.mapinfo=Map Info
mode.waves.name = Wellen text.editor.author=Author:
mode.sandbox.name = Sandkasten text.editor.description=Description:
mode.freebuild.name = Freier Bau text.editor.name=Name:
upgrade.standard.name = Standard text.editor.teams=Teams
upgrade.standard.description = Der Standardmech. text.editor.elevation=Elevation
upgrade.blaster.name = Blaster text.editor.saved=Saved!
upgrade.blaster.description = Schiesst eine langsame, schwache Kugel. text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
upgrade.triblaster.name = Dreifach-Blaster text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
upgrade.triblaster.description = Schiesst 3 Kugeln in einer Ausbreitung. text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
upgrade.clustergun.name = Klumpen-Waffe text.editor.import=Import...
upgrade.clustergun.description = Schiesst eine ungenaue Verbreitung von explosiven Granaten. text.editor.importmap=Import Map
upgrade.beam.name = Strahlkanone text.editor.importmap.description=Import an already existing map
upgrade.beam.description = Schiesst einen weitreichenden durchdringenden Laserstrahl. text.editor.importfile=Import File
upgrade.vulcan.name = Vulkan text.editor.importfile.description=Import an external map file
upgrade.vulcan.description = Schiesst eine Flut von schnellen Kugeln. text.editor.importimage=Import Terrain Image
upgrade.shockgun.name = Schock-Waffe text.editor.importimage.description=Import an external map image file
upgrade.shockgun.description = Erschiesst eine verheerende Explosion von geladenen Granatsplittern. text.editor.export=Export...
item.stone.name = Stein text.editor.exportfile=Export File
item.iron.name = Eisen text.editor.exportfile.description=Export a map file
item.coal.name = Kohle text.editor.exportimage=Export Terrain Image
item.steel.name = Stahl text.editor.exportimage.description=Export a map image file
item.titanium.name = Titan text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
item.dirium.name = Dirium text.fps=FPS: {0}
item.thorium.name = Uran text.tps=TPS: {0}
item.sand.name = Sand text.ping=Ping: {0}ms
liquid.water.name = Wasser text.language.restart=Please restart your game for the language settings to take effect.
liquid.plasma.name = Plasma text.settings.language=Language
liquid.lava.name = Lava text.settings.rebind=Rebind
liquid.oil.name = Öl text.yes=Yes
block.weaponfactory.name = Waffenfabrik text.no=No
block.air.name = Luft text.info.title=[accent]Info
block.blockpart.name = Blockteil text.blocks.targetsair=Targets Air
block.deepwater.name = tiefes Wasser text.blocks.itemspeed=Units Moved
block.water.name = Wasser text.blocks.shootrange=Range
block.lava.name = Lava text.blocks.poweruse=Power Use
block.oil.name = Öl text.blocks.inputitemcapacity=Input Item Capacity
block.stone.name = Stein text.blocks.outputitemcapacity=Input Item Capacity
block.blackstone.name = schwarzer Stein text.blocks.maxpowergeneration=Max Power Generation
block.iron.name = Eisen text.blocks.powertransferspeed=Power Transfer
block.coal.name = Kohle text.blocks.craftspeed=Production Speed
block.titanium.name = Titan text.blocks.inputliquidaux=Aux Liquid
block.thorium.name = Uran text.blocks.inputitems=Input Items
block.dirt.name = Erde text.blocks.outputitem=Output Item
block.sand.name = Sand text.blocks.drilltier=Drillables
block.ice.name = Eis text.blocks.drillspeed=Base Drill Speed
block.snow.name = Schnee text.blocks.liquidoutput=Liquid Output
block.grass.name = Gras text.blocks.liquiduse=Liquid Use
block.sandblock.name = Sandstein text.blocks.coolant=Coolant
block.snowblock.name = Schneeblock text.blocks.coolantuse=Coolant Use
block.stoneblock.name = Steinblock text.blocks.inputliquidfuel=Fuel Liquid
block.blackstoneblock.name = Schwarzer Stein text.blocks.liquidfueluse=Liquid Fuel Use
block.grassblock.name = Grasblock text.blocks.reload=Reload
block.mossblock.name = Moosblock text.blocks.inputfuel=Fuel
block.shrub.name = Busch text.blocks.fuelburntime=Fuel Burn Time
block.rock.name = Felsen text.unit.blocks=blocks
block.icerock.name = Eisfelsen text.unit.powersecond=power units/second
block.blackrock.name = Schwarzer Felsen text.unit.liquidsecond=liquid units/second
block.dirtblock.name = Erdblock text.unit.itemssecond=items/second
block.stonewall.name = Steinwand text.unit.pixelssecond=pixels/second
block.stonewall.fulldescription = Ein billiger Verteidigungsblock. Nützlich zum Schutz des Kerns und der Geschütztürme in den ersten Wellen. text.unit.liquidunits=liquid units
block.ironwall.name = Eisenwand text.unit.powerunits=power units
block.ironwall.fulldescription = Ein grundlegender Verteidigungsblock. Bietet Schutz vor Feinden. text.unit.degrees=degrees
block.steelwall.name = Stahlwand text.unit.seconds=seconds
block.steelwall.fulldescription = Ein Standard-Verteidigungsblock. Bietet angemessen Schutz vor Feinden. text.unit.none=
block.titaniumwall.name = Titanwand text.unit.items=items
block.titaniumwall.fulldescription = Eine starke Abwehrblockade. Bietet Schutz vor Feinden. text.category.general=General
block.duriumwall.name = Diriumwand text.category.power=Power
block.duriumwall.fulldescription = Eine sehr starke Abwehrblockade. Bietet guten Schutz vor Feinden. text.category.liquids=Liquids
block.compositewall.name = Verbundende Wand text.category.items=Items
block.steelwall-large.name = grosse Stahlwand text.category.crafting=Crafting
block.steelwall-large.fulldescription = Ein Standard-Verteidigungsblock. Mehrere Blöcke gross. text.category.shooting=Shooting
block.titaniumwall-large.name = grosse Titanwand setting.fullscreen.name=Fullscreen
block.titaniumwall-large.fulldescription = Eine starke Abwehrblockade. Mehrere Blöcke gross. setting.multithread.name=Multithreading
block.duriumwall-large.name = grosse Diriumwand setting.minimap.name=Show Minimap
block.duriumwall-large.fulldescription = Eine sehr starke Abwehrblockade. Mehrere Blöcke gross. text.keybind.title=Rebind Keys
block.titaniumshieldwall.name = geschützte Wand keybind.block_info.name=block_info
block.titaniumshieldwall.fulldescription = Ein starker Abwehrblock mit einem extra eingebauten Schild. Benötigt Energie. Verwendet Energie, um feindliche Kugeln zu absorbieren. Es wird empfohlen, Verstärker zu verwenden, um diesem Block Energie zuzuführen. keybind.chat.name=chat
block.repairturret.name = Reparaturgeschütz keybind.player_list.name=player_list
block.repairturret.fulldescription = Repariert beschädigte Blöcke in der Nähe in einem langsamen Tempo. Nutzt geringe Mengen an Energie. keybind.console.name=console
block.megarepairturret.name = Reparaturgeschütz II mode.text.help.title=Description of modes
block.megarepairturret.fulldescription = Repariert in der Nähe beschädigte Blöcke in Reichweite zu einem vernünftigen Preis. Verwendet Energie. mode.waves.description=the normal mode. limited resources and automatic incoming waves.
block.shieldgenerator.name = Schildgenerator mode.sandbox.description=infinite resources and no timer for waves.
block.shieldgenerator.fulldescription = Ein fortgeschrittener Verteidigungsblock. Schützt alle Blöcke in einem Radius vor Angriffen. Bei keinem Betrieb langsamer Strom verbrauch, verliert bei Kugelkontakt jedoch schnell Energie. mode.freebuild.description=limited resources and no timer for waves.
block.door.name = Tür content.item.name=Items
block.door.fulldescription = Ein Block, der durch Antippen geöffnet und geschlossen werden kann. content.liquid.name=Liquids
block.door-large.name = grosse Tür content.unit-type.name=Units
block.door-large.fulldescription = Ein Block der mehrere Felder gross ist und der durch Antippen geöffnet und geschlossen werden kann. content.recipe.name=Blocks
block.conduit.name = Leitungsrohr item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
block.conduit.fulldescription = Grundlegender Flüssigkeitstransportblock. Funktioniert wie ein Förderband, aber mit Flüssigkeiten. Am besten mit Pumpen oder anderen Leitungen verwenden. Kann als Brücke für Gegner und Spieler verwendet werden. item.tungsten.name=Tungsten
block.pulseconduit.name = Pulsleitungsrohr item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
block.pulseconduit.fulldescription = Fortschrittlicher Flüssigkeitstransportblock. Transportiert Flüssigkeiten schneller und speichert mehr als normale Leitungsrohre. item.lead.name=Lead
block.liquidrouter.name = flüssigkeiten verteiler item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
block.liquidrouter.fulldescription = Funktioniert ähnlich wie ein Router. Akzeptiert Flüssigkeit von einer Seite und gibt sie auf die anderen Seiten aus. Nützlich zum Aufspalten von Flüssigkeit aus eines einzelnen Leitungsrohres in mehrere andere Leitungensrohre. item.coal.description=A common and readily available fuel.
block.conveyor.name = Förderband item.carbide.name=Carbide
block.conveyor.fulldescription = Grundelement Transport Block. Bewegt Gegenstände nach vorne und legt sie automatisch in Türmen oder ähnliches. Drehbar. Kann als Brücke für Gegner und Spieler verwendet werden. item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
block.steelconveyor.name = Stahlförderband item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
block.steelconveyor.fulldescription = Erweiterter Transportblock Bewegt Gegenstände schneller als Standardförderer. item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
block.poweredconveyor.name = Impulsförderband item.silicon.name=Silicon
block.poweredconveyor.fulldescription = Der ultimative Transportblock für Gegenstände. Bewegt Gegenstände noch schneller als Stahlförderer. item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
block.router.name = Verteiler item.plastanium.name=Plastanium
block.router.fulldescription = Akzeptiert Objekte aus einer Richtung und gibt sie in 3 andere Richtungen aus. Kann auch eine bestimmte Anzahl von Gegenständen speichern. Geeignet zum Aufteilen der Materialien von einem Bohrer in mehrere Geschütze. item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
block.junction.name = Kreuzung item.phase-matter.name=Phase Matter
block.junction.fulldescription = Fungiert als Brücke für zwei kreuzende Förderbänder. Nützlich in Situationen mit zwei verschiedenen Förderbänder, die unterschiedliche Materialien zu verschiedenen Orten transportieren. item.surge-alloy.name=Surge Alloy
block.conveyortunnel.name = Förderbandtunnel item.biomatter.name=Biomatter
block.conveyortunnel.fulldescription = Transportiert Artikel unter Blöcken. Verwendung für einen Tunnel, der in den zu untertunnelnden Block führt, und einen auf der anderen Seite. Stellen Sie sicher, dass beide Tunnel in entgegengesetzte Richtungen weisen, das heisst das die Tunnel voneinander weggucken. item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
block.liquidjunction.name = flüssigkeite Kreuzung item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
block.liquidjunction.fulldescription = Funktioniert als Brücke für zwei kreuzende Leitungsrohre. Nützlich in Situationen mit zwei verschiedenen Leitungen, die unterschiedliche Flüssigkeiten zu verschiedenen Orten transportieren. item.blast-compound.name=Blast Compound
block.liquiditemjunction.name = Flüssigkeit-Gegenstand-Kreuzung item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
block.liquiditemjunction.fulldescription = Fungiert als Brücke zum Überqueren von Leitungsrohre und Förderbändern. item.pyratite.name=Pyratite
block.powerbooster.name = Energieverstärker item.pyratite.description=An extremely flammable substance used in incendiary weapons.
block.powerbooster.fulldescription = Verteilt die Energie an alle Blöcke innerhalb seines Radius. liquid.cryofluid.name=Cryofluid
block.powerlaser.name = Energielaser text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
block.powerlaser.fulldescription = Erzeugt einen Laser, der die Kraft auf den Block davor überträgt. Erzeugt selbst keine Energie. Am besten mit Generatoren oder anderen Lasern verwendet. text.item.flammability=[LIGHT_GRAY]Flammability: {0}
block.powerlaserrouter.name = Laser Verteiler text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
block.powerlaserrouter.fulldescription = Laser, der die Kraft in drei Richtungen gleichzeitig verteilt. Nützlich in Situationen, in denen mehrere Blöcke von einem Generator mit Strom versorgt werden müssen. text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
block.powerlasercorner.name = Laser-Ecke text.item.hardness=[LIGHT_GRAY]Hardness: {0}
block.powerlasercorner.fulldescription = Laser, der die Kraft in zwei Richtungen gleichzeitig verteilt. Nützlich in Situationen, in denen mehrere Blöcke von einem Generator mit Strom versorgt werden müssen und ein Router ungenau ist. text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
block.teleporter.name = Teleporter text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
block.teleporter.fulldescription = Erweiterter Transportblock Teleporter geben Gegenstände in andere Teleporter derselben Farbe ein. Tut nichts, wenn keine Teleporter derselben Farbe existieren. Wenn mehrere Teleporter mit derselben Farbe existieren, wird eine zufällige ausgewählt. Verwendet Energie. Tippen, um die Farbe zu ändern. text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
block.sorter.name = Sortierer block.tungsten-wall.name=Tungsten Wall
block.sorter.fulldescription = Sortiert den Gegenstand nach Materialart. Das zu akzeptierende Material wird durch die Farbe im Block angezeigt. Alle Artikel, die dem Sortiermaterial entsprechen, werden vorwärts ausgegeben, alles andere wird nach links und rechts ausgegeben. block.tungsten-wall-large.name=Large Tungsten Wall
block.core.name = Kern block.carbide-wall.name=Carbide Wall
block.pump.name = Pumpe block.carbide-wall-large.name=Large Carbide Wall
block.pump.fulldescription = Pumpen Flüssigkeiten aus einem Quellblock - meist Wasser, Lava oder Öl. Gibt Flüssigkeit in benachbarte Leitungsrohre aus. block.thorium-wall.name=Thorium Wall
block.fluxpump.name = flux Pumpe block.thorium-wall-large.name=Large Thorium Wall
block.fluxpump.fulldescription = Eine erweiterte Version der Pumpe. Speichert mehr Flüssigkeit und pumpt Flüssigkeit schneller. block.duo.name=Duo
block.smelter.name = Schmelzer block.scorch.name=Scorch
block.smelter.fulldescription = Der essentielle Bastelblock. Wenn 1x Eisen und 1x Kohle eingegeben wird, wird 1x Stahl ausgegeben. block.hail.name=Hail
block.crucible.name = Tiegel block.lancer.name=Lancer
block.crucible.fulldescription = Ein fortgeschrittener Handwerksblock. Braucht Kohle um zu funktionieren. Wenn 1x Titan und 1x Stahl eingegeben wird, wird 1x Dirium ausgegeben. block.titanium-conveyor.name=Titanium Conveyor
block.coalpurifier.name = Kohle-Extraktor block.splitter.name=Splitter
block.coalpurifier.fulldescription = Ein einfacher Extraktorblock. Gibt Kohle aus, wenn der Block mit grossen Mengen Wasser und Stein gefüllt wird. block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
block.titaniumpurifier.name = Titan-Extraktor block.router.description=Splits items into all 4 directions. Can store items as a buffer.
block.titaniumpurifier.fulldescription = Ein Standard-Extraktorblock. Gibt Titan aus wenn er mit grossen Mengen Wasser und Eisen gefüllt wird. block.distributor.name=Distributor
block.oilrefinery.name = Ölraffinerie block.distributor.description=A splitter that can split items into 8 directions.
block.oilrefinery.fulldescription = Veredelt grosse Mengen Öl zu Kohle. Nützlich für die Betankung von Blöcken die Kohle benutzen wie z.b. Waffentürme, wenn Kohleadern knapp sind. block.sorter.description=Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
block.stoneformer.name = Steinformer block.overflow-gate.name=Overflow Gate
block.stoneformer.fulldescription = Verfestigt flüssige Lava zu Stein. Nützlich für die Herstellung von grossen Mengen von Stein für Kohle-Extraktor. block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
block.lavasmelter.name = Lava-Schmelzer block.bridgeconveyor.name=Bridge Conveyor
block.lavasmelter.fulldescription = Verwendet Lava, um Eisen zu Stahl schmelzen. Eine Alternative zum Schmelzer. Nützlich in Situationen, in denen Kohle knapp ist. block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
block.stonedrill.name = Steinbohrer block.arc-smelter.name=Arc Smelter
block.stonedrill.fulldescription = Der wesentliche Bohrer. Wenn er auf Steinplatten gelegt wird, gibt er Steine mit einer langsamen Geschwindigkeit auf endlosen Zeit aus. block.silicon-smelter.name=Silicon Smelter
block.irondrill.name = Eisenbohrer block.phase-weaver.name=Phase Weaver
block.irondrill.fulldescription = Eine grundlegender Bohrer. Wenn es auf Eisenerz gelegt wird, gibt er Eisen auf endloser Zeit langsam aus. block.pulverizer.name=Pulverizer
block.coaldrill.name = Kohlenbohrer block.cryofluidmixer.name=Cryofluid Mixer
block.coaldrill.fulldescription = Eine grundlegender Bohrer. Wenn es auf Kohleerz platziert wird, gibt er für endloser Zeit langsam Kohle aus. block.melter.name=Melter
block.thoriumdrill.name = Uran-Bohrer block.incinerator.name=Incinerator
block.thoriumdrill.fulldescription = Ein fortgeschrittener Bohrer. Wenn es auf Uranerz platziert wird, gibt er Uran mit einer langsamen Geschwindigkeit auf endloser Zeit ab. block.biomattercompressor.name=Biomatter Compressor
block.titaniumdrill.name = Titan-Bohrer block.separator.name=Separator
block.titaniumdrill.fulldescription = Ein fortgeschrittener Bohrer. Wenn es auf Titanerz platziert wird, gibt er Titan langsam aus für undendlich langer Zeit block.centrifuge.name=Centrifuge
block.omnidrill.name = Omni-Bohrer block.power-node.name=Power Node
block.omnidrill.fulldescription = Der ultimative Bohrer. Baut in schnellem Tempo jegliches Erz ab. block.power-node-large.name=Large Power Node
block.coalgenerator.name = Kohle-Generator block.battery.name=Battery
block.coalgenerator.fulldescription = Der wesentliche Generator. Erzeugt Energie aus Kohle. Gibt Energie als Laser an seine 4 Seiten aus. block.battery-large.name=Large Battery
block.thermalgenerator.name = thermischer Generator block.combustion-generator.name=Combustion Generator
block.thermalgenerator.fulldescription = Erzeugt Energie aus Lava. Gibt Energie als Laser an seine 4 Seiten aus. block.turbine-generator.name=Turbine Generator
block.combustiongenerator.name = Verbrennungsgenerator block.tungsten-drill.name=Tungsten Drill
block.combustiongenerator.fulldescription = Erzeugt Energie aus Öl. Gibt Energie als Laser an seine 4 Seiten aus. block.carbide-drill.name=Carbide Drill
block.rtgenerator.name = RTG-Generator block.laser-drill.name=Laser Drill
block.rtgenerator.fulldescription = Erzeugt geringe Mengen an Energie aus dem radioaktiven Zerfall von Uran. Gibt Energie als Laser an seine 4 Seiten aus. block.water-extractor.name=Water Extractor
block.nuclearreactor.name = Kernreaktor block.cultivator.name=Cultivator
block.nuclearreactor.fulldescription = Eine erweiterte Version des RTG-Generators und der ultimative Energie Generator. Erzeugt Strom aus Uran. Erfordert konstante Wasserkühlung. Sehr heiss; explodiert heftig, wenn zu wenig Kühlmittel zugeführt wird. block.dart-ship-factory.name=Dart Ship Factory
block.turret.name = Geschütz block.delta-mech-factory.name=Delta Mech Factory
block.turret.fulldescription = Ein einfacher, billiger Turm. Verwendet Stein für Munition. Hat etwas mehr Reichweite als das Doppelgeschütz. block.dronefactory.name=Drone Factory
block.doubleturret.name = Doppelgeschütz block.repairpoint.name=Repair Point
block.doubleturret.fulldescription = Eine etwas stärkere Version des Geschützes. Verwendet Stein für Munition. Hat deutlich mehr Schaden, hat aber eine geringere Reichweite. Schiesst zwei Kugeln. block.resupplypoint.name=Resupply Point
block.machineturret.name = Gatling Geschütz block.liquidtank.name=Liquid Tank
block.machineturret.fulldescription = Ein Standard-Allround-Turm. Verwendet Eisen für Munition. Hat eine schnelle Feuerrate mit gutem Schaden. block.bridgeconduit.name=Bridge Conduit
block.shotgunturret.name = Splittergeschütz block.mechanical-pump.name=Mechanical Pump
block.shotgunturret.fulldescription = Ein Standard-Turm. Verwendet Eisen für Munition. Schiesst 7 Kugeln auf einmal. Geringere Reichweite, aber höhere Schadensleistung als das Gatling Geschütz block.itemsource.name=Item Source
block.flameturret.name = Flammenwerfer block.itemvoid.name=Item Void
block.flameturret.fulldescription = Fortschrittlicher Nahbereichswaffe. Verwendet Kohle für Munition. Hat eine sehr geringe Reichweite, aber sehr hohen Schaden. Gut für Nahkampf. Empfohlen für den Einsatz hinter Mauern. block.liquidsource.name=Liquid Source
block.sniperturret.name = Schienenkanone block.powervoid.name=Power Void
block.sniperturret.fulldescription = Fortschrittliches Reichweitengeschütz. Verwendet Stahl für Munition. Sehr hoher Schaden, aber niedrige Feuerrate. Teuer zu verwenden, kann aber aufgrund seiner Reichweite weit entfernt von den feindlichen Linien platziert werden. block.powerinfinite.name=Power Infinite
block.mortarturret.name = Flakgeschütz block.unloader.name=Unloader
block.mortarturret.fulldescription = Fortschrittlicher Flächen-Schaden Turm. Verwendet Kohle für Munition. Sehr langsame Feuerrate und Geschosse, aber sehr hoher Einzelziel- und Flächenschaden. Nützlich gegen grosse Mengen von Feinden. block.sortedunloader.name=Sorted Unloader
block.laserturret.name = Laserturm block.vault.name=Vault
block.laserturret.fulldescription = Fortschrittlicher Einzelziel-Turm. Verwendet Strom. Guter Allround-Revolver für mittlere Reichweiten. Nur Einzelziel. Verfehlt nie. block.wave.name=Wave
block.waveturret.name = Teslakanone block.swarmer.name=Swarmer
block.waveturret.fulldescription = Erweiterter Mehrfach-Ziele-Turm. Verwendet Strom. Mittlere Reichweite. Verfehlt nie. Im Durchschnitt zu wenig Schaden, aber kann mehrere Feinde gleichzeitig mit Kettenblitz treffen. block.salvo.name=Salvo
block.plasmaturret.name = Plasmageschütz block.ripple.name=Ripple
block.plasmaturret.fulldescription = Hochentwickelte Version des Flammenwerfers. Verwendet Kohle als Munition. Sehr hoher Schaden, niedriger bis mittlerer Reichweite. block.phase-conveyor.name=Phase Conveyor
block.chainturret.name = Kettengeschütz block.bridge-conveyor.name=Bridge Conveyor
block.chainturret.fulldescription = Die ultimative Schnellfeuer Waffe. Verwendet Uran als Munition. Schiesst grosse Kugeln mit hoher Feuerrate. Mittlere Reichweite. Mehrere Felder gross. Hält extrem viel aus. block.plastanium-compressor.name=Plastanium Compressor
block.titancannon.name = Titan Kanone block.pyratite-mixer.name=Pyratite Mixer
block.titancannon.fulldescription = Die ultimative Langstrecken Kanone. Verwendet Uran als Munition. Schiesst grosse Flächen-Schadenden-Granaten mit einer mittleren Feuerrate ab. Lange Reichweite. Ist mehrere Felder gross. Hält extrem viel aus. block.blast-mixer.name=Blast Mixer
block.playerspawn.name = Spielerspawn block.solidifer.name=Solidifer
block.enemyspawn.name = Gegnerspawn block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit
block.phase-conduit.name=Phase Conduit
block.liquid-router.name=Liquid Router
block.liquid-tank.name=Liquid Tank
block.liquid-junction.name=Liquid Junction
block.bridge-conduit.name=Bridge Conduit
block.rotary-pump.name=Rotary Pump
block.nuclear-reactor.name=Nuclear Reactor

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,491 +1,494 @@
text.about = Dibuat oleh [ROYAL]Anuken.[]\nAwalnya masuk di [orange]GDL[] MM Jam.\n\nKredit:\n- SFX dibuat dengan [YELLOW]bfxr[]\n- Musik dibuat oleh [GREEN]RoccoW[] / ditemukan di [lime]FreeMusicArchive.org[]\n\nTerima kasih khusus kepada:\n- [coral]MitchellFJN[]: playtesting dan umpan balik yang luas\n- [sky]Luxray5474[]: pekerjaan wiki, kontribusi kode\n- Semua penguji beta di itch.io dan Google Play\n text.about=Dibuat oleh [ROYAL]Anuken.[]\nAwalnya masuk di [orange]GDL[] MM Jam.\n\nKredit:\n- SFX dibuat dengan [YELLOW]bfxr[]\n- Musik dibuat oleh [GREEN]RoccoW[] / ditemukan di [lime]FreeMusicArchive.org[]\n\nTerima kasih khusus kepada:\n- [coral]MitchellFJN[]: playtesting dan umpan balik yang luas\n- [sky]Luxray5474[]: pekerjaan wiki, kontribusi kode\n- Semua penguji beta di itch.io dan Google Play\n
text.discord = Bergabunglah dengan Discord Mindustry! text.discord=Bergabunglah dengan Discord Mindustry!
text.gameover = Intinya hancur. text.gameover=Intinya hancur.
text.highscore = [YELLOW]Rekor baru! text.highscore=[YELLOW]Rekor baru!
text.lasted = Anda bertahan sampai gelombang text.lasted=Anda bertahan sampai gelombang
text.level.highscore = Skor Tinggi: [accent]{0} text.level.highscore=Skor Tinggi: [accent]{0}
text.level.delete.title = Konfirmasi Hapus text.level.delete.title=Konfirmasi Hapus
text.level.delete = Yakin ingin menghapus peta \"[orange]{0}\"? text.level.select=Pilih Level
text.level.select = Pilih Level text.level.mode=Modus permainan:
text.level.mode = Modus permainan: text.savegame=Simpan Permainan
text.savegame = Simpan Permainan text.loadgame=Lanjutkan
text.loadgame = Lanjutkan text.joingame=Bermain Bersama
text.joingame = Bermain Bersama text.quit=Keluar
text.quit = Keluar text.about.button=Tentang
text.about.button = Tentang text.name=Nama:
text.name = Nama: text.players={0} pemain online
text.public = Publik text.players.single={0} pemain online
text.players = {0} pemain online text.server.mismatch=Kesalahan paket: kemungkinan versi client / server tidak sesuai.\nPastikan Anda dan host memiliki versi terbaru Mindustry!
text.server.player.host = {0} (host) text.server.closing=[accent]Menutup server...
text.players.single = {0} pemain online text.server.kicked.kick=Anda telah dikeluarkan dari server!
text.server.mismatch = Kesalahan paket: kemungkinan versi client / server tidak sesuai.\nPastikan Anda dan host memiliki versi terbaru Mindustry! text.server.kicked.invalidPassword=Kata sandi salah!
text.server.closing = [accent]Menutup server... text.server.kicked.clientOutdated=Client versi lama! Update game Anda!
text.server.kicked.kick = Anda telah dikeluarkan dari server! text.server.kicked.serverOutdated=Server versi lama! Tanyakan host untuk mengupdate!
text.server.kicked.invalidPassword = Kata sandi salah! text.server.connected={0} telah bergabung.
text.server.kicked.clientOutdated = Client versi lama! Update game Anda! text.server.disconnected={0} telah terputus.
text.server.kicked.serverOutdated = Server versi lama! Tanyakan host untuk mengupdate! text.nohost=Tidak dapat meng-host server pada peta khusus!
text.server.connected = {0} telah bergabung. text.hostserver=Host Server
text.server.disconnected = {0} telah terputus. text.host=Host
text.nohost = Tidak dapat meng-host server pada peta khusus! text.hosting=[accent]Membuka server...
text.hostserver = Host Server text.hosts.refresh=Segarkan
text.host = Host text.hosts.discovering=Mencari game LAN
text.hosting = [accent]Membuka server... text.server.refreshing=Menyegarkan server
text.hosts.refresh = Segarkan text.hosts.none=[lightgray]Tidak ada game LAN yang ditemukan!
text.hosts.discovering = Mencari game LAN text.host.invalid=[scarlet]Tidak dapat terhubung ke host.
text.server.refreshing = Menyegarkan server text.server.friendlyfire=Tembak Sesama
text.hosts.none = [lightgray]Tidak ada game LAN yang ditemukan! text.server.add=Tambahkan Server
text.host.invalid = [scarlet]Tidak dapat terhubung ke host. text.server.delete=Yakin ingin menghapus server ini?
text.server.friendlyfire = Tembak Sesama text.server.hostname=Host: {0}
text.server.add = Tambahkan Server text.server.edit=Sunting Server
text.server.delete = Yakin ingin menghapus server ini? text.joingame.title=Bermain Bersama
text.server.hostname = Host: {0} text.joingame.ip=IP:
text.server.edit = Sunting Server text.disconnect=Sambungan terputus.
text.joingame.byip = Bergabung dengan IP... text.connecting=[accent]Menghubungkan...
text.joingame.title = Bermain Bersama text.connecting.data=[accent]Memuat data level...
text.joingame.ip = IP: text.connectfail=[crimson]Gagal terhubung ke server: [orange]{0}
text.disconnect = Sambungan terputus. text.server.port=Port:
text.connecting = [accent]Menghubungkan... text.server.addressinuse=Alamat sudah di pakai!
text.connecting.data = [accent]Memuat data level... text.server.invalidport=Nomor port salah!
text.connectfail = [crimson]Gagal terhubung ke server: [orange]{0} text.server.error=[crimson]Kesalahan server hosting: [orange]{0}
text.server.port = Port: text.save.new=Simpan Baru
text.server.addressinuse = Alamat sudah di pakai! text.save.overwrite=Yakin ingin mengganti slot simpan ini?
text.server.invalidport = Nomor port salah! text.overwrite=Ganti
text.server.error = [crimson]Kesalahan server hosting: [orange]{0} text.save.none=Tidak ada simpanan ditemukan!
text.tutorial.back = < Sebelumnya text.saveload=[accent]Menyimpan...
text.tutorial.next = Berikutnya > text.savefail=Gagal menyimpan game!
text.save.new = Simpan Baru text.save.delete.confirm=Yakin ingin menghapus save ini?
text.save.overwrite = Yakin ingin mengganti slot simpan ini? text.save.delete=Hapus
text.overwrite = Ganti text.save.export=Ekspor Simpanan
text.save.none = Tidak ada simpanan ditemukan! text.save.import.invalid=[orange]Simpanan ini tidak valid!
text.saveload = [accent]Menyimpan... text.save.import.fail=[crimson]Gagal mengimpor: [orange]{0}
text.savefail = Gagal menyimpan game! text.save.export.fail=[crimson]Gagal mengekspor save: [orange]{0}
text.save.delete.confirm = Yakin ingin menghapus save ini? text.save.import=Impor Simpanan
text.save.delete = Hapus text.save.newslot=Nama simpanan:
text.save.export = Ekspor Simpanan text.save.rename=Ganti nama
text.save.import.invalid = [orange]Simpanan ini tidak valid! text.save.rename.text=Nama baru:
text.save.import.fail = [crimson]Gagal mengimpor: [orange]{0} text.selectslot=Pilih simpanan.
text.save.export.fail = [crimson]Gagal mengekspor save: [orange]{0} text.slot=[accent]Slot{0}
text.save.import = Impor Simpanan text.save.corrupted=[orange]Simpanan rusak atau tidak valid!
text.save.newslot = Nama simpanan: text.empty=<kosong>
text.save.rename = Ganti nama text.on=Hidup
text.save.rename.text = Nama baru: text.off=Mati
text.selectslot = Pilih simpanan. text.save.autosave=Simpan otomatis: {0}
text.slot = [accent]Slot{0} text.save.map=Peta: {0}
text.save.corrupted = [orange]Simpanan rusak atau tidak valid! text.save.wave=Gelombang {0}
text.empty = <kosong> text.save.date=Terakhir Disimpan: {0}
text.on = Hidup text.confirm=Konfirmasi
text.off = Mati text.delete=Hapus
text.save.autosave = Simpan otomatis: {0} text.ok=OK
text.save.map = Peta: {0} text.open=Buka
text.save.wave = Gelombang {0} text.cancel=Batal
text.save.date = Terakhir Disimpan: {0} text.openlink=Buka tautan
text.confirm = Konfirmasi text.back=Kembali
text.delete = Hapus text.quit.confirm=Anda yakin ingin berhenti?
text.ok = OK text.loading=[accent]Memuat...
text.open = Buka text.wave=[orange]Gelombang {0}
text.cancel = Batal text.wave.waiting=Gelombang dimulai {0}
text.openlink = Buka tautan text.waiting=Menunggu...
text.back = Kembali text.enemies={0} musuh
text.quit.confirm = Anda yakin ingin berhenti? text.enemies.single={0} Musuh
text.loading = [accent]Memuat... text.loadimage=Buka Gambar
text.wave = [orange]Gelombang {0} text.saveimage=Simpan Gambar
text.wave.waiting = Gelombang dimulai {0} text.editor.badsize=[orange]Dimensi gambar tidak valid![]\nDimensi peta yang valid: {0}
text.waiting = Menunggu... text.editor.errorimageload=Kesalahan saat memuat file gambar:\n[orange]{0}
text.enemies = {0} musuh text.editor.errorimagesave=Kesalahan saat menyimpan file gambar:\n[orange]{0}
text.enemies.single = {0} Musuh text.editor.generate=Hasilkan
text.loadimage = Buka Gambar text.editor.resize=Ubah ukuran
text.saveimage = Simpan Gambar text.editor.loadmap=Buka Peta
text.oregen = Generator Bijih text.editor.savemap=Simpan Peta
text.editor.badsize = [orange]Dimensi gambar tidak valid![]\nDimensi peta yang valid: {0} text.editor.loadimage=Buka Gambar
text.editor.errorimageload = Kesalahan saat memuat file gambar:\n[orange]{0} text.editor.saveimage=Simpan Gambar
text.editor.errorimagesave = Kesalahan saat menyimpan file gambar:\n[orange]{0} text.editor.unsaved=[scarlet]Anda memiliki perubahan yang belum disimpan![]\nYakin ingin keluar?
text.editor.generate = Hasilkan text.editor.resizemap=Ubah ukuran peta
text.editor.resize = Ubah ukuran text.editor.mapname=Nama Peta:
text.editor.loadmap = Buka Peta text.editor.overwrite=[accent]Peringatan!\nIni akan mengganti peta yang ada.
text.editor.savemap = Simpan Peta text.editor.selectmap=Pilih peta yang akan dimuat:
text.editor.loadimage = Buka Gambar text.width=Lebar:
text.editor.saveimage = Simpan Gambar text.height=Tinggi:
text.editor.unsaved = [scarlet]Anda memiliki perubahan yang belum disimpan![]\nYakin ingin keluar? text.menu=Menu
text.editor.brushsize = Ukuran sikat: {0} text.play=Main
text.editor.noplayerspawn = Peta ini tidak memiliki spawnpoint pemain! text.load=Buka
text.editor.manyplayerspawns = Peta tidak bisa memiliki lebih dari satu\nspawnpoint pemain! text.save=Simpan
text.editor.manyenemyspawns = Tidak dapat memiliki lebih dari\n{0} spawnpoint musuh! text.language.restart=Silakan mulai ulang permainan Anda agar pengaturan bahasa mulai berlaku.
text.editor.resizemap = Ubah ukuran peta text.settings.language=Bahasa
text.editor.resizebig = [scarlet]Peringatan!\n[]Peta yang lebih besar dari 256 unit mungkin nge-lag dan tidak stabil. text.settings=Pengaturan
text.editor.mapname = Nama Peta: text.tutorial=Tutorial
text.editor.overwrite = [accent]Peringatan!\nIni akan mengganti peta yang ada. text.editor=Pengedit
text.editor.failoverwrite = [crimson]Tidak dapat mengganti peta default! text.mapeditor=Pengedit Peta
text.editor.selectmap = Pilih peta yang akan dimuat: text.donate=Sumbangkan
text.width = Lebar: text.settings.reset=Atur ulang ke Default
text.height = Tinggi: text.settings.controls=Kontrol
text.randomize = Acak text.settings.game=Permainan
text.apply = Terapkan text.settings.sound=Suara
text.update = Perbarui text.settings.graphics=Grafis
text.menu = Menu text.upgrades=Perbaruan
text.play = Main text.purchased=[LIME]Dibuat!
text.load = Buka text.weapons=Senjata
text.save = Simpan text.paused=Jeda
text.language.restart = Silakan mulai ulang permainan Anda agar pengaturan bahasa mulai berlaku. text.info.title=[accent]Info
text.settings.language = Bahasa text.error.title=[crimson]Telah terjadi kesalahan
text.settings = Pengaturan text.error.crashtitle=Telah terjadi kesalahan
text.tutorial = Tutorial text.blocks.blockinfo=Info Blok
text.editor = Pengedit text.blocks.powercapacity=Kapasitas Tenaga
text.mapeditor = Pengedit Peta text.blocks.powershot=Tenaga/tembakan
text.donate = Sumbangkan text.blocks.size=Ukuran
text.settings.reset = Atur ulang ke Default text.blocks.liquidcapacity=Kapasitas cairan
text.settings.controls = Kontrol text.blocks.maxitemssecond=Batas barang/detik
text.settings.game = Permainan text.blocks.powerrange=Jangkauan tenaga
text.settings.sound = Suara text.blocks.itemcapacity=Kapasitas Barang
text.settings.graphics = Grafis text.blocks.inputliquid=Cairan yang Masuk
text.upgrades = Perbaruan text.blocks.inputitem=Barang yang Masuk
text.purchased = [LIME]Dibuat! text.blocks.explosive=Mudah meledak!
text.weapons = Senjata text.blocks.health=Darah
text.paused = Jeda text.blocks.inaccuracy=Ketidaktelitian
text.respawn = Respawning dalam text.blocks.shots=Tembakan
text.info.title = [accent]Info text.blocks.inputcapacity=Kapasitas masuk
text.error.title = [crimson]Telah terjadi kesalahan text.blocks.outputcapacity=Kapasitas keluar
text.error.crashmessage = [SCARLET]Kesalahan tak terduga telah terjadi, yang menyebabkan kerusakan.\n[]Tolong laporkan keadaan yang tepat dimana kesalahan ini terjadi pada pengembang:\n[ORANGE] anukendev@gmail.com[] setting.difficulty.easy=mudah
text.error.crashtitle = Telah terjadi kesalahan setting.difficulty.normal=normal
text.mode.break = Mode penghancur: {0} setting.difficulty.hard=sulit
text.mode.place = Mode penaruh: {0} setting.difficulty.insane=sangat susah
placemode.hold.name = garis setting.difficulty.purge=paling susah
placemode.areadelete.name = area setting.difficulty.name=Kesulitan:
placemode.touchdelete.name = sentuh setting.screenshake.name=Layar Bergoyang
placemode.holddelete.name = tahan setting.indicators.name=Indikator Musuh
placemode.none.name = tidak ada setting.effects.name=Efek Tampilan
placemode.touch.name = sentuh setting.sensitivity.name=Sensitivitas Pengendali
placemode.cursor.name = kursor setting.saveinterval.name=Waktu Simpan Otomatis
text.blocks.extrainfo = [accent]info tambahan blok: setting.seconds={0} Detik
text.blocks.blockinfo = Info Blok setting.fullscreen.name=Layar Penuh
text.blocks.powercapacity = Kapasitas Tenaga setting.fps.name=Tunjukkan FPS
text.blocks.powershot = Tenaga/tembakan setting.vsync.name=VSync
text.blocks.powersecond = Tenaga/detik setting.lasers.name=Tampilkan Laser Tenaga
text.blocks.powerdraindamage = Tenaga Dipakai/damage setting.healthbars.name=Tampilkan Bar Darah Entitas
text.blocks.shieldradius = Radius Perisai setting.musicvol.name=Volume Musik
text.blocks.itemspeedsecond = Kecepatan Barang/detik setting.mutemusic.name=Bisukan Musik
text.blocks.range = Jangkauan setting.sfxvol.name=Volume Suara
text.blocks.size = Ukuran setting.mutesound.name=Bisukan Suara
text.blocks.powerliquid = Tenaga/Cairan map.maze.name=labirin
text.blocks.maxliquidsecond = Batas cairan/detik map.fortress.name=benteng
text.blocks.liquidcapacity = Kapasitas cairan map.sinkhole.name=lubang pembuangan
text.blocks.liquidsecond = Cairan/detik map.caves.name=gua
text.blocks.damageshot = Damage/tembakan map.volcano.name=gunung berapi
text.blocks.ammocapacity = Kapasitas Amunisi map.caldera.name=kaldera
text.blocks.ammo = Amunisi map.scorch.name=penghangusan
text.blocks.ammoitem = Amunisi/barang map.desert.name=gurun
text.blocks.maxitemssecond = Batas barang/detik map.island.name=pulau
text.blocks.powerrange = Jangkauan tenaga map.grassland.name=padang rumput
text.blocks.lasertilerange = Kotak jangkauan laser map.tundra.name=tundra
text.blocks.capacity = Kapasitas map.spiral.name=spiral
text.blocks.itemcapacity = Kapasitas Barang map.tutorial.name=tutorial
text.blocks.maxpowergenerationsecond = Batas Penghasil Tenaga/detik keybind.move_x.name=gerak_x
text.blocks.powergenerationsecond = Penghasil Tenaga/detik keybind.move_y.name=gerak_y
text.blocks.generationsecondsitem = Waktu Penghasil (detik)/barang keybind.select.name=pilih
text.blocks.input = Masukan keybind.break.name=hapus
text.blocks.inputliquid = Cairan yang Masuk keybind.shoot.name=tembak
text.blocks.inputitem = Barang yang Masuk keybind.zoom_hold.name=perbesar_tahan
text.blocks.output = Keluar keybind.zoom.name=perbesar
text.blocks.secondsitem = Detik/barang keybind.menu.name=menu
text.blocks.maxpowertransfersecond = Batas transfer tenaga/detik keybind.pause.name=jeda
text.blocks.explosive = Mudah meledak! keybind.dash.name=berlari
text.blocks.repairssecond = Perbaikan/detik keybind.rotate_alt.name=putar_alt
text.blocks.health = Darah keybind.rotate.name=putar
text.blocks.inaccuracy = Ketidaktelitian mode.waves.name=gelombang
text.blocks.shots = Tembakan mode.sandbox.name=sandbox
text.blocks.shotssecond = Tembakan/detik mode.freebuild.name=freebuild
text.blocks.fuel = Bahan Bakar item.stone.name=batu
text.blocks.fuelduration = Durasi Bahan Bakar item.coal.name=batu bara
text.blocks.maxoutputsecond = Batas keluar/detik item.titanium.name=titanium
text.blocks.inputcapacity = Kapasitas masuk item.thorium.name=thorium
text.blocks.outputcapacity = Kapasitas keluar item.sand.name=pasir
text.blocks.poweritem = Tenaga/barang liquid.water.name=air
text.placemode = Mode Penempatan liquid.lava.name=lahar
text.breakmode = Mode Penghancur liquid.oil.name=minyak
text.health = darah block.door.name=pintu
setting.difficulty.easy = mudah block.door-large.name=pintu besar
setting.difficulty.normal = normal block.conduit.name=saluran
setting.difficulty.hard = sulit block.pulseconduit.name=saluran cepat
setting.difficulty.insane = sangat susah block.liquidrouter.name=router cairan
setting.difficulty.purge = paling susah block.conveyor.name=konveyor
setting.difficulty.name = Kesulitan: block.router.name=router
setting.screenshake.name = Layar Bergoyang block.junction.name=persimpangan jalan
setting.smoothcam.name = Kamera Halus block.liquidjunction.name=persimpangan cairan
setting.indicators.name = Indikator Musuh block.sorter.name=penyortir
setting.effects.name = Efek Tampilan block.smelter.name=peleburan
setting.sensitivity.name = Sensitivitas Pengendali text.credits=Credits
setting.saveinterval.name = Waktu Simpan Otomatis text.link.discord.description=the official Mindustry discord chatroom
setting.seconds = {0} Detik text.link.github.description=Game source code
setting.fullscreen.name = Layar Penuh text.link.dev-builds.description=Unstable development builds
setting.fps.name = Tunjukkan FPS text.link.trello.description=Official trello board for planned features
setting.vsync.name = VSync text.link.itch.io.description=itch.io page with PC downloads and web version
setting.lasers.name = Tampilkan Laser Tenaga text.link.google-play.description=Google Play store listing
setting.healthbars.name = Tampilkan Bar Darah Entitas text.link.wiki.description=official Mindustry wiki
setting.pixelate.name = Layar Pixel text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
setting.musicvol.name = Volume Musik text.editor.web=The web version does not support the editor!\nDownload the game to use it.
setting.mutemusic.name = Bisukan Musik text.web.unsupported=The web version does not support this feature! Download the game to use it.
setting.sfxvol.name = Volume Suara text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
setting.mutesound.name = Bisukan Suara text.host.web=The web version does not support hosting games! Download the game to use this feature.
map.maze.name = labirin text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
map.fortress.name = benteng text.construction.title=Block Construction Guide
map.sinkhole.name = lubang pembuangan text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
map.caves.name = gua text.deconstruction.title=Block Deconstruction Guide
map.volcano.name = gunung berapi text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
map.caldera.name = kaldera text.showagain=Don't show again next session
map.scorch.name = penghangusan text.unlocks=Unlocks
map.desert.name = gurun text.addplayers=Add/Remove Players
map.island.name = pulau text.newgame=New Game
map.grassland.name = padang rumput text.maps=Maps
map.tundra.name = tundra text.maps.none=[LIGHT_GRAY]No maps found!
map.spiral.name = spiral text.unlocked=New Block Unlocked!
map.tutorial.name = tutorial text.unlocked.plural=New Blocks Unlocked!
tutorial.intro.text = [yellow]Selamat datang di tutorial.[] Untuk memulai, tekan 'berikutnya'. text.server.kicked.fastShoot=You are shooting too quickly.
tutorial.moveDesktop.text = Untuk bergerak, gunakan tombol [orange][[WASD][]. Tahan tombol [orange]shift[] untuk mempercepat. Tahan [orange]CTRL[] saat menggunakan [orange]scrollwheel[] untuk memperbesar atau memperkecil tampilan. text.server.kicked.banned=You are banned on this server.
tutorial.shoot.text = Gunakan mouse anda untuk mengarahkan, tahan [orange]tombol kiri mouse[] untuk menembak. Cobalah menembaki [yellow]target[]. text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
tutorial.moveAndroid.text = Untuk menggeser tampilan, seret satu jari ke layar. Jepit dan seret untuk memperbesar atau memperkecil tampilan. text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
tutorial.placeSelect.text = Coba pilih [yellow]konveyor[] dari menu blok di kanan bawah. text.server.kicked.nameEmpty=Your name must contain at least one character or number.
tutorial.placeConveyorDesktop.text = Gunakan [orange][[scrollwheel][] untuk memutar konveyor menghadap [orange]ke depan[], lalu letakkan di [yellow]lokasi yang ditandai[] menggunakan [orange][[tombol kiri mouse]][]. text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
tutorial.placeConveyorAndroid.text = Gunakan [orange][[tombol putar]][] untuk memutar konveyor menghadap [orange]ke depan[], seret ke posisi dengan satu jari, lalu letakkan di [yellow]lokasi yang ditandai[] dengan menggunakan [orange][[tanda centang][]. text.server.kicked.customClient=This server does not support custom builds. Download an official version.
tutorial.placeConveyorAndroidInfo.text = Sebagai alternatif, Anda dapat menekan ikon crosshair di kiri bawah untuk beralih ke [orange][[mode sentuh]][], dan letakkan blok dengan mengetuk layar. Dalam mode sentuh, blok bisa diputar dengan panah di kiri bawah. Tekan [yellow]berikutnya[] untuk mencobanya. text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
tutorial.placeDrill.text = Sekarang, pilih dan tempatkan [yellow]pertambangan battu[] di lokasi yang ditandai. text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
tutorial.blockInfo.text = Jika Anda ingin mempelajari lebih lanjut tentang blok, Anda dapat menekan [orange]tanda tanya[] di bagian kanan atas untuk membaca deskripsinya. text.trace=Trace Player
tutorial.deselectDesktop.text = Anda bisa membatalkan pemilihan blok menggunakan [orange][[tombol mouse kanan][]. text.trace.playername=Player name: [accent]{0}
tutorial.deselectAndroid.text = Anda dapat membatalkan pemilihan blok dengan menekan tombol [orange]X (silang)[]. text.trace.ip=IP: [accent]{0}
tutorial.drillPlaced.text = Pertambangannya sekarang akan menghasilkan [yellow]batu[] yang dikeluarkan ke konveyor, lalu memindahkannya ke [yellow]intinya[]. text.trace.id=Unique ID: [accent]{0}
tutorial.drillInfo.text = Bijih yang berbeda membutuhkan pertambangan yang berbeda. Batu membutuhkan pertambangan batu, besi membutuhkan pertambangan besi, dll. text.trace.android=Android Client: [accent]{0}
tutorial.drillPlaced2.text = Memindahkan barang ke dalam inti menempatkannya di [yellow]inventaris barang[] Anda, di kiri atas. Menempatkan blok menggunakan barang dari inventaris Anda. text.trace.modclient=Custom Client: [accent]{0}
tutorial.moreDrills.text = Anda bisa menghubungkan banyak pertambangan dan konveyor bersama-sama, seperti biasa. text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
tutorial.deleteBlock.text = Anda dapat menghapus blok dengan mengeklik [orange]tombol mouse kanan[] di blok yang ingin Anda hapus. Coba hapus konveyor ini. text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
tutorial.deleteBlockAndroid.text = Anda dapat menghapus blok dengan [orange]memilih crosshair[] di [orange]menu mode penghancur[] di kiri bawah dan mengetuk bloknya. Coba hapus konveyor ini. text.trace.lastblockbroken=Last block broken: [accent]{0}
tutorial.placeTurret.text = Sekarang, pilih dan tempatkan [yellow]turret[] di [yellow]lokasi yang ditandai[]. text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
tutorial.placedTurretAmmo.text = Turret ini sekarang akan menerima [yellow]amunisi[] dari konveyor. Anda dapat melihat berapa banyak amunisi yang dimiliki dengan menggeser kursor di bloknya dan memeriksa di [green]bilah hijau[]. text.trace.lastblockplaced=Last block placed: [accent]{0}
tutorial.turretExplanation.text = Turret secara otomatis akan menembak musuh terdekat dalam jangkauan, selama mereka memiliki cukup amunisi. text.invalidid=Invalid client ID! Submit a bug report.
tutorial.waves.text = Setiap [yellow]60[] detik, gelombang [coral]musuh[] akan muncul di lokasi tertentu dan berusaha menghancurkan intinya. text.server.bans=Bans
tutorial.coreDestruction.text = Tujuan Anda adalah untuk [yellow]mempertahankan intinya[]. Jika intinya hancur, Anda [coral]kalah dalam permainan[]. text.server.bans.none=No banned players found!
tutorial.pausingDesktop.text = Jika Anda perlu istirahat sebentar, tekan [orange]tombol jeda[] di bagian kiri atas atau [orange]tombol spasi[] untuk menghentikan sementara permainan. Anda masih bisa memilih dan menempatkan blok sambil berhenti, tapi tidak bisa bergerak atau menembak. text.server.admins=Admins
tutorial.pausingAndroid.text = Jika Anda perlu istirahat sebentar, tekan [orange]tombol jeda[] di kiri atas untuk menjeda permainan. Anda masih bisa menghapus dan menempatkan blok sambil berhenti sebentar. text.server.admins.none=No admins found!
tutorial.purchaseWeapons.text = Anda bisa membeli [yellow]senjata baru[] untuk robot Anda dengan membuka menu upgrade di kiri bawah. text.server.outdated=[crimson]Outdated Server![]
tutorial.switchWeapons.text = Untuk mengganti senjata, klik ikonnya di kiri bawah, atau gunakan angka [orange][[1-9][]. text.server.outdated.client=[crimson]Outdated Client![]
tutorial.spawnWave.text = Gelombang sekarang datang. Hancurkan mereka. text.server.version=[lightgray]Version: {0}
tutorial.pumpDesc.text = Pada gelombang selanjutnya, Anda mungkin perlu menggunakan [yellow]pompa[] untuk mendistribusikan cairan untuk generator atau ekstraktor. text.server.custombuild=[yellow]Custom Build
tutorial.pumpPlace.text = Pompa bekerja seperti dengan pertambangan, namun mereka menghasilkan cairan dan bukan barang. Cobalah menempatkan pompa pada [yellow]minyak yang ditunjuk[]. text.confirmban=Are you sure you want to ban this player?
tutorial.conduitUse.text = Sekarang tempatkan [orange]saluran[] yang mengarah jauh dari pompa. text.confirmunban=Are you sure you want to unban this player?
tutorial.conduitUse2.text = Dan beberapa lagi... text.confirmadmin=Are you sure you want to make this player an admin?
tutorial.conduitUse3.text = Dan beberapa lagi... text.confirmunadmin=Are you sure you want to remove admin status from this player?
tutorial.generator.text = Sekarang, tempatkan [orange]blok generator pembakaran[] di ujung saluran. text.disconnect.data=Failed to load world data!
tutorial.generatorExplain.text = Generator ini sekarang akan menciptakan [yellow]tenaga[] dari minyak. text.save.difficulty=Difficulty: {0}
tutorial.lasers.text = Tenaga didistribusikan menggunakan [yellow]laser tenaga[]. Putar dan tempatkan di sini. text.copylink=Copy Link
tutorial.laserExplain.text = Generator sekarang akan memindahkan tenaga ke blok laser. Sinar [yellow]terang[] menandakan bahwa saat ini mentransmisikan tenaga, dan sinar [yellow]transparan[] berarti tidak. text.changelog.title=Changelog
tutorial.laserMore.text = Anda dapat memeriksa berapa banyak tenaga yang dimiliki blok dengan memindahkan kursor/mengetuk di atasnya dan memeriksa [yellow]bar kuning[] di bagian atas. text.changelog.loading=Getting changelog...
tutorial.healingTurret.text = Laser ini bisa digunakan untuk menyalakan [lime]turret perbaikan[]. Tempatkan satu di sini. text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
tutorial.healingTurretExplain.text = Selama memiliki tenaga, turret ini akan [lime]memperbaiki blok terdekat[]. Saat bermain, pastikan Anda memasukkannya ke markas Anda secepat mungkin! text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
tutorial.smeltery.text = Banyak blok yang membutuhkan [orange]baja[] agar dapat dibangun, yang membutuhkan [orange]peleburan[] untuk dibuat. Tempatkan satu di sini. text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
tutorial.smelterySetup.text = Peleburan ini sekarang akan menghasilkan [orange]baja[] dari besi yang masuk, dengan batubara sebagai bahan bakarnya. text.changelog.current=[yellow][[Current version]
tutorial.tunnelExplain.text = Perhatikan juga bahwa barang-barang itu masuk melalui [orange]blok terowongan[] dan muncul di sisi lain, melewati blok batu. Perlu diingat bahwa terowongan hanya bisa melalui sampai 2 blok. text.changelog.latest=[orange][[Latest version]
tutorial.end.text = Dan itu menyimpulkan tutorialnya! Semoga berhasil! text.saving=[accent]Saving...
keybind.move_x.name = gerak_x text.unknown=Unknown
keybind.move_y.name = gerak_y text.custom=Custom
keybind.select.name = pilih text.builtin=Built-In
keybind.break.name = hapus text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
keybind.shoot.name = tembak text.map.random=[accent]Random Map
keybind.zoom_hold.name = perbesar_tahan text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
keybind.zoom.name = perbesar text.editor.slope=\\
keybind.menu.name = menu text.editor.openin=Open In Editor
keybind.pause.name = jeda text.editor.oregen=Ore Generation
keybind.dash.name = berlari text.editor.oregen.info=Ore Generation:
keybind.rotate_alt.name = putar_alt text.editor.mapinfo=Map Info
keybind.rotate.name = putar text.editor.author=Author:
keybind.weapon_1.name = senjata_1 text.editor.description=Description:
keybind.weapon_2.name = senjata_2 text.editor.name=Name:
keybind.weapon_3.name = senjata_3 text.editor.teams=Teams
keybind.weapon_4.name = senjata_4 text.editor.elevation=Elevation
keybind.weapon_5.name = senjata_5 text.editor.saved=Saved!
keybind.weapon_6.name = senjata_6 text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
mode.waves.name = gelombang text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
mode.sandbox.name = sandbox text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
mode.freebuild.name = freebuild text.editor.import=Import...
upgrade.standard.name = standar text.editor.importmap=Import Map
upgrade.standard.description = Robot standar. text.editor.importmap.description=Import an already existing map
upgrade.blaster.name = blaster text.editor.importfile=Import File
upgrade.blaster.description = Menembakan sebuah peluru yang lemah dan lambat. text.editor.importfile.description=Import an external map file
upgrade.triblaster.name = triblaster text.editor.importimage=Import Terrain Image
upgrade.triblaster.description = Menembakan 3 peluru secara menyebar. text.editor.importimage.description=Import an external map image file
upgrade.clustergun.name = clustergun text.editor.export=Export...
upgrade.clustergun.description = Menembakan sebuah granat eksplosif yang tidak akurat. text.editor.exportfile=Export File
upgrade.beam.name = meriam sinar text.editor.exportfile.description=Export a map file
upgrade.beam.description = Menembakan sinar laser jarak jauh. text.editor.exportimage=Export Terrain Image
upgrade.vulcan.name = vulcan text.editor.exportimage.description=Export a map image file
upgrade.vulcan.description = Menembakkan rombongan peluru dengan cepat. text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
upgrade.shockgun.name = shockgun text.fps=FPS: {0}
upgrade.shockgun.description = Menembakkan ledakan yang menghancurkan dari pecahan peluru yang terisi. text.tps=TPS: {0}
item.stone.name = batu text.ping=Ping: {0}ms
item.iron.name = besi text.settings.rebind=Rebind
item.coal.name = batu bara text.yes=Yes
item.steel.name = baja text.no=No
item.titanium.name = titanium text.blocks.targetsair=Targets Air
item.dirium.name = dirium text.blocks.itemspeed=Units Moved
item.thorium.name = thorium text.blocks.shootrange=Range
item.sand.name = pasir text.blocks.poweruse=Power Use
liquid.water.name = air text.blocks.inputitemcapacity=Input Item Capacity
liquid.plasma.name = plasma text.blocks.outputitemcapacity=Input Item Capacity
liquid.lava.name = lahar text.blocks.maxpowergeneration=Max Power Generation
liquid.oil.name = minyak text.blocks.powertransferspeed=Power Transfer
block.weaponfactory.name = pabrik senjata text.blocks.craftspeed=Production Speed
block.weaponfactory.fulldescription = Dipakai untuk membuat senjata bagi robot pemain. Klik untuk memakai. Otomatis mengambil sumber daya dari inti. text.blocks.inputliquidaux=Aux Liquid
block.air.name = udara text.blocks.inputitems=Input Items
block.blockpart.name = bagian blok text.blocks.outputitem=Output Item
block.deepwater.name = air dangkal text.blocks.drilltier=Drillables
block.water.name = air text.blocks.drillspeed=Base Drill Speed
block.lava.name = lahar text.blocks.liquidoutput=Liquid Output
block.oil.name = minyak text.blocks.liquiduse=Liquid Use
block.stone.name = batu text.blocks.coolant=Coolant
block.blackstone.name = batu hitam text.blocks.coolantuse=Coolant Use
block.iron.name = besi text.blocks.inputliquidfuel=Fuel Liquid
block.coal.name = batu bara text.blocks.liquidfueluse=Liquid Fuel Use
block.titanium.name = titanium text.blocks.reload=Reload
block.thorium.name = thorium text.blocks.inputfuel=Fuel
block.dirt.name = tanah text.blocks.fuelburntime=Fuel Burn Time
block.sand.name = pasir text.unit.blocks=blocks
block.ice.name = es text.unit.powersecond=power units/second
block.snow.name = salju text.unit.liquidsecond=liquid units/second
block.grass.name = rumput text.unit.itemssecond=items/second
block.sandblock.name = blok pasir text.unit.pixelssecond=pixels/second
block.snowblock.name = blok salju text.unit.liquidunits=liquid units
block.stoneblock.name = blok batu text.unit.powerunits=power units
block.blackstoneblock.name = blok batu hitam text.unit.degrees=degrees
block.grassblock.name = blok rumput text.unit.seconds=seconds
block.mossblock.name = blok lumut text.unit.none=
block.shrub.name = belukar text.unit.items=items
block.rock.name = batu text.category.general=General
block.icerock.name = batu es text.category.power=Power
block.blackrock.name = batu hitam text.category.liquids=Liquids
block.dirtblock.name = blok tanah text.category.items=Items
block.stonewall.name = dinding batu text.category.crafting=Crafting
block.stonewall.fulldescription = Sebuah blok defensif yang murah. Berguna untuk melindungi inti dan turret di beberapa gelombang pertama. text.category.shooting=Shooting
block.ironwall.name = dinding besi setting.multithread.name=Multithreading
block.ironwall.fulldescription = Blok defensif dasar. Menyediakan perlindungan dari musuh. setting.minimap.name=Show Minimap
block.steelwall.name = dinding baja text.keybind.title=Rebind Keys
block.steelwall.fulldescription = Sebuah blok defensif standar. Perlindungan yang memadai dari musuh. keybind.block_info.name=block_info
block.titaniumwall.name = dinding titanium keybind.chat.name=chat
block.titaniumwall.fulldescription = Blok pertahanan yang kuat. Menyediakan perlindungan dari musuh. keybind.player_list.name=player_list
block.duriumwall.name = dinding dirium keybind.console.name=console
block.duriumwall.fulldescription = Blok pertahanan yang sangat kuat. Menyediakan perlindungan dari musuh. mode.text.help.title=Description of modes
block.compositewall.name = dinding komposit mode.waves.description=the normal mode. limited resources and automatic incoming waves.
block.steelwall-large.name = dinding baja besar mode.sandbox.description=infinite resources and no timer for waves.
block.steelwall-large.fulldescription = Sebuah blok defensif standar. Membentang beberapa ubin. mode.freebuild.description=limited resources and no timer for waves.
block.titaniumwall-large.name = dinding titanium besar content.item.name=Items
block.titaniumwall-large.fulldescription = Blok pertahanan yang kuat. Membentang beberapa ubin. content.liquid.name=Liquids
block.duriumwall-large.name = dinding dirium yang besar content.unit-type.name=Units
block.duriumwall-large.fulldescription = Blok pertahanan yang sangat kuat. Membentang beberapa ubin. content.recipe.name=Blocks
block.titaniumshieldwall.name = dinding perisai item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
block.titaniumshieldwall.fulldescription = Sebuah blok defensif yang kuat, dengan tambahan perisai. Membutuhkan tenaga. Menggunakan energi untuk menyerap peluru musuh. Dianjurkan untuk menggunakan pemercepat tenaga untuk memberi energi pada blok ini. item.tungsten.name=Tungsten
block.repairturret.name = turret perbaikan item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
block.repairturret.fulldescription = Memperbaiki blok terdekat yang rusak dengan lambat. Menggunakan sedikit tenaga. item.lead.name=Lead
block.megarepairturret.name = perbaikan turret II item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
block.megarepairturret.fulldescription = Memperbaiki blok yang rusak dengan normal. Menggunakan tenaga. item.coal.description=A common and readily available fuel.
block.shieldgenerator.name = pembangkit perisai item.carbide.name=Carbide
block.shieldgenerator.fulldescription = Blok defensif yang maju. Mellindungi semua blok dalam radius dari serangan. Menggunakan tenaga dengan lambat saat menganggur, namun menyalurkan energi dengan cepat pada kontak peluru. item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
block.door.name = pintu item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
block.door.fulldescription = Blok yang bisa dibuka dan ditutup dengan mengetuknya. item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
block.door-large.name = pintu besar item.silicon.name=Silicon
block.door-large.fulldescription = Blok yang bisa dibuka dan ditutup dengan mengetuknya. item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
block.conduit.name = saluran item.plastanium.name=Plastanium
block.conduit.fulldescription = Blok pengangkut cairan dasar. Bekerja seperti konveyor, tapi dengan cairan. Terbaik digunakan dengan pompa atau saluran lainnya. Bisa digunakan sebagai jembatan di atas cairan untuk musuh dan pemain. item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
block.pulseconduit.name = saluran cepat item.phase-matter.name=Phase Matter
block.pulseconduit.fulldescription = Blok pengangkut cairan tingkat lanjut. Mengangkut cairan lebih cepat dan menyimpan lebih banyak dari pada saluran standar. item.surge-alloy.name=Surge Alloy
block.liquidrouter.name = router cairan item.biomatter.name=Biomatter
block.liquidrouter.fulldescription = Bekerja seperti router. Menerima masukan cairan dari satu sisi dan mengeluarkannya ke sisi yang lain. Berguna untuk pemisahan cairan dari satu saluran ke beberapa saluran lainnya. item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
block.conveyor.name = konveyor item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
block.conveyor.fulldescription = Blok dasar pengangkut barang. Memindahkan barang ke depan dan secara otomatis menyimpannya ke turret, ekstraktor, dan pertambangan. Bisa diputar. Bisa digunakan sebagai jembatan di atas cairan untuk musuh dan pemain. item.blast-compound.name=Blast Compound
block.steelconveyor.name = konveyor baja item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
block.steelconveyor.fulldescription = Blok transportasi barang lanjutan. Memindahkan barang lebih cepat dari konveyor standar. item.pyratite.name=Pyratite
block.poweredconveyor.name = konveyor cepat item.pyratite.description=An extremely flammable substance used in incendiary weapons.
block.poweredconveyor.fulldescription = Blok terbaik untuk pengangkutan barang. Memindahkan barang lebih cepat dari konveyor baja. liquid.cryofluid.name=Cryofluid
block.router.name = router text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
block.router.fulldescription = Menerima item dari satu arah dan mengeluarkannya ke 3 arah. Bisa juga menyimpan sejumlah barang. Berguna untuk membelah bahan dari satu pertambangan ke beberapa turret. text.item.flammability=[LIGHT_GRAY]Flammability: {0}
block.junction.name = persimpangan jalan text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
block.junction.fulldescription = Bertindak sebagai jembatan untuk dua sabuk persimpangan. Berguna dalam situasi dengan dua konveyor berbeda yang membawa bahan berbeda ke lokasi yang berbeda. text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
block.conveyortunnel.name = terowongan konveyor text.item.hardness=[LIGHT_GRAY]Hardness: {0}
block.conveyortunnel.fulldescription = Memindahkan barang di bawah blok. Untuk menggunakan, tempatkan satu terowongan yang menuju ke terowongan di bawah blok, dan satu di sisi lain. Pastikan kedua terowongan menghadap ke arah yang berlawanan, yaitu menuju blok yang mereka masukkan atau keluarkan. text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
block.liquidjunction.name = persimpangan cairan text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
block.liquidjunction.fulldescription = Bertindak sebagai jembatan untuk dua saluran persimpangan. Berguna dalam situasi dengan dua saluran berbeda yang membawa cairan berbeda ke lokasi yang berbeda. text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
block.liquiditemjunction.name = persimpangan barang-cairan block.tungsten-wall.name=Tungsten Wall
block.liquiditemjunction.fulldescription = Bertindak sebagai jembatan untuk menyilang saluran dan konveyor. block.tungsten-wall-large.name=Large Tungsten Wall
block.powerbooster.name = pemercepat tenaga block.carbide-wall.name=Carbide Wall
block.powerbooster.fulldescription = Mendistribusikan tenaga ke semua blok dalam radiusnya. block.carbide-wall-large.name=Large Carbide Wall
block.powerlaser.name = laser tenaga block.thorium-wall.name=Thorium Wall
block.powerlaser.fulldescription = Membuat laser yang mentransmisikan daya ke blok di depannya. Tidak menghasilkan tenaga itu sendiri. Terbaik digunakan dengan generator atau laser lainnya. block.thorium-wall-large.name=Large Thorium Wall
block.powerlaserrouter.name = router laser block.duo.name=Duo
block.powerlaserrouter.fulldescription = Laser yang mendistribusikan tenaga ke tiga arah sekaligus. Berguna dalam situasi di mana diperlukan tenaga ke beberapa blok dari satu generator. block.scorch.name=Scorch
block.powerlasercorner.name = sudut laser block.hail.name=Hail
block.powerlasercorner.fulldescription = Laser yang mendistribusikan tenaga ke dua arah sekaligus. Berguna dalam situasi di mana diperlukan tenaga ke beberapa blok dari satu generator, dan arah router kurang tepat. block.lancer.name=Lancer
block.teleporter.name = teleporter block.titanium-conveyor.name=Titanium Conveyor
block.teleporter.fulldescription = Blok transportasi barang lanjutan. Teleporter memasukkan barang ke teleporter lain dengan warna yang sama. Tidak ada apa-apa jika tidak ada teleporter dengan warna yang sama. Jika beberapa teleporter memiliki warna yang sama, teleporter dipilih secara acak. Menggunakan tenaga. Ketuk/klik untuk mengubah warna. block.splitter.name=Splitter
block.sorter.name = penyortir block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
block.sorter.fulldescription = Menyortir barang menurut jenis bahannya. Bahan yang diterima ditandai dengan warna di blok. Semua item yang sesuai dengan jenis bahan dilepaskan ke depan, segala sesuatu yang lain dikeluarkan ke kiri dan kanan. block.router.description=Splits items into all 4 directions. Can store items as a buffer.
block.core.name = inti block.distributor.name=Distributor
block.pump.name = pompa block.distributor.description=A splitter that can split items into 8 directions.
block.pump.fulldescription = Memompa cairan dari sumber blok- biasanya air, lahar atau minyak. Mengeluarkan cairan ke saluran terdekat. block.sorter.description=Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
block.fluxpump.name = pompa flux block.overflow-gate.name=Overflow Gate
block.fluxpump.fulldescription = Sebuah versi lanjutan dari pompa. Menyimpan lebih banyak cairan dan memompa cairan lebih cepat. block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
block.smelter.name = peleburan block.bridgeconveyor.name=Bridge Conveyor
block.smelter.fulldescription = Blok kerajinan esensial. Saat dimasukkan 1 besi dan 1 batu bara sebagai bahan bakar, akan mengeluarkan satu baja. Disarankan untuk memasukkan besi dan batu bara ke sabuk yang berbeda untuk mencegah penyumbatan. block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
block.crucible.name = peleburan dirium block.arc-smelter.name=Arc Smelter
block.crucible.fulldescription = Sebuah blok kerajinan yang maju. Saat dimasukkan 1 titanium, 1 baja dan 1 batu bara sebagai bahan bakar, mengeluarkan satu dirium. Disarankan untuk memasukkan batubara, baja dan titanium pada sabuk yang berbeda untuk mencegah penyumbatan. block.silicon-smelter.name=Silicon Smelter
block.coalpurifier.name = ekstraktor batubara block.phase-weaver.name=Phase Weaver
block.coalpurifier.fulldescription = Blok ekstraktor dasar. mengeluarkan batu bara saat dipasok dengan air dan batu dalam skala yang besar. block.pulverizer.name=Pulverizer
block.titaniumpurifier.name = ekstraktor titanium block.cryofluidmixer.name=Cryofluid Mixer
block.titaniumpurifier.fulldescription = Blok ekstraktor standar. mengeluarkan titanium bila dipasok dengan air dan besi dalam skala yang besar. block.melter.name=Melter
block.oilrefinery.name = penyulingan minyak block.incinerator.name=Incinerator
block.oilrefinery.fulldescription = Menyuling sejumlah minyak menjadi batubara. Berguna untuk memasok turret berbasis batubara saat penambangan batubara langka. block.biomattercompressor.name=Biomatter Compressor
block.stoneformer.name = pembentuk batu block.separator.name=Separator
block.stoneformer.fulldescription = Mengubah lahar ke dalam batu. Berguna untuk menghasilkan batu dalam jumlah besar untuk pemurni batu bara. block.centrifuge.name=Centrifuge
block.lavasmelter.name = peleburan lava block.power-node.name=Power Node
block.lavasmelter.fulldescription = Menggunakan lahar untuk mengubah besi menjadi baja. Sebuah alternatif untuk peleburan batubara. Berguna dalam situasi di mana pertambangan batubara langka. block.power-node-large.name=Large Power Node
block.stonedrill.name = pertambangan batu block.battery.name=Battery
block.stonedrill.fulldescription = Pertambangan penting. Saat diletakkan di atas ubin batu, akan menghasilkan batu pada kecepatan yang lambat tanpa batas waktu. block.battery-large.name=Large Battery
block.irondrill.name = pertambangan besi block.combustion-generator.name=Combustion Generator
block.irondrill.fulldescription = Pertambangan dasar. Saat diletakkan di atas ubin bijih besi, akan mengeluarkan besi pada kecepatan yang lambat tanpa batas waktu. block.turbine-generator.name=Turbine Generator
block.coaldrill.name = pertambangan batubara block.tungsten-drill.name=Tungsten Drill
block.coaldrill.fulldescription = Pertambangan dasar. Saat ditempatkan di ubin bijih batubara, akan mengeluarkan batu bara pada kecepatan yang lambat tanpa batas waktu. block.carbide-drill.name=Carbide Drill
block.thoriumdrill.name = pertambangan thorium block.laser-drill.name=Laser Drill
block.thoriumdrill.fulldescription = Sebuah pertambangan yang canggih. Saat ditempatkan di ubin bijih thorium, akan mengeluarkan thorium pada kecepatan lambat tanpa batas waktu. block.water-extractor.name=Water Extractor
block.titaniumdrill.name = pertambangan titanium block.cultivator.name=Cultivator
block.titaniumdrill.fulldescription = Sebuah pertambangan yang canggih. Saat ditempatkan pada ubin bijih titanium, akan mengeluarkan titanium pada kecepatan lambat tanpa batas waktu. block.dart-ship-factory.name=Dart Ship Factory
block.omnidrill.name = pertambangan super block.delta-mech-factory.name=Delta Mech Factory
block.omnidrill.fulldescription = Pertambangan yang terbaik. Akan saya tambang bijih apapun itu ditempatkan pada kecepatan tinggi. block.dronefactory.name=Drone Factory
block.coalgenerator.name = pembangkit tenaga batubara block.repairpoint.name=Repair Point
block.coalgenerator.fulldescription = Generator penting. Menghasilkan tenaga dari batu bara. Keluarkan tenaga sebagai laser ke 4 sisinya. block.resupplypoint.name=Resupply Point
block.thermalgenerator.name = pembangkit tenaga panas block.liquidtank.name=Liquid Tank
block.thermalgenerator.fulldescription = Menghasilkan tenaga dari lahar. Mengeluarkan tenaga sebagai laser ke 4 sisi. block.bridgeconduit.name=Bridge Conduit
block.combustiongenerator.name = pembangkit tenaga minyak block.mechanical-pump.name=Mechanical Pump
block.combustiongenerator.fulldescription = Menghasilkan tenaga dari minyak. Mengeluarkan tenaga sebagai laser ke 4 sisi. block.itemsource.name=Item Source
block.rtgenerator.name = pembangkit tenaga radioaktif block.itemvoid.name=Item Void
block.rtgenerator.fulldescription = Menghasilkan sedikit tenaga dari peluruhan radioaktif thorium. Mengeluarkan tenaga sebagai laser ke 4 sisi. block.liquidsource.name=Liquid Source
block.nuclearreactor.name = reaktor nuklir block.powervoid.name=Power Void
block.nuclearreactor.fulldescription = Versi lanjutan Pembangkit Tenaga Radioaktif, dan generator tenaga tertinggi. Menghasilkan tenaga dari thorium. Membutuhkan pendinginan air konstan. Sangat mudah menguap; akan meledak dengan hebat jika tidak cukup jumlah pendingin yang diberikan. block.powerinfinite.name=Power Infinite
block.turret.name = turret block.unloader.name=Unloader
block.turret.fulldescription = Sebuah menara dasar yang murah. Menggunakan batu untuk amunisi. Memiliki jangkauan yang sedikit lebih banyak daripada turret ganda. block.sortedunloader.name=Sorted Unloader
block.doubleturret.name = turret ganda block.vault.name=Vault
block.doubleturret.fulldescription = Versi turret standar yang sedikit lebih bertenaga. Menggunakan batu untuk amunisi. Memberikan damage secara signifikan lebih banyak, namun memiliki jangkauan yang lebih rendah. Menembak dua peluru. block.wave.name=Wave
block.machineturret.name = turret cepat block.swarmer.name=Swarmer
block.machineturret.fulldescription = Sebuah menara standar. Menggunakan besi untuk amunisi. Memiliki tembakan yang cepat dengan damage yang layak. block.salvo.name=Salvo
block.shotgunturret.name = turret split block.ripple.name=Ripple
block.shotgunturret.fulldescription = Sebuah turret standar. Menggunakan besi untuk amunisi. Menembakkan 7 peluru. Jaraknya pendek, namun damage-nya lebih tinggi daripada turret cepat. block.phase-conveyor.name=Phase Conveyor
block.flameturret.name = turret api block.bridge-conveyor.name=Bridge Conveyor
block.flameturret.fulldescription = Turret jarak dekat lanjutan. Menggunakan batubara untuk amunisi. Memiliki jangkauan yang pendek, namun sangat tinggi damage-nya. Bagus untuk jarak dekat. Dianjurkan untuk digunakan dibalik dinding. block.plastanium-compressor.name=Plastanium Compressor
block.sniperturret.name = turret railgun block.pyratite-mixer.name=Pyratite Mixer
block.sniperturret.fulldescription = Turret jarak jauh lanjutan. Menggunakan baja untuk amunisi. Kerusakan yang sangat tinggi, namun menembak dengan lambat. Mahal untuk digunakan, tapi bisa ditempatkan jauh dari garis musuh karena jangkauannya. block.blast-mixer.name=Blast Mixer
block.mortarturret.name = turret flak block.solidifer.name=Solidifer
block.mortarturret.fulldescription = Turret dengan akurasi pendek dan damage eksplosif. Menggunakan batubara untuk amunisi. Menembakkan peluru yang meledak lalu menjadi pecahan peluru. Berguna untuk kerumunan musuh yang besar. block.solar-panel.name=Solar Panel
block.laserturret.name = turret laser block.solar-panel-large.name=Large Solar Panel
block.laserturret.fulldescription = Turret satu target. Menggunakan tenaga. Memiliki jarak sedang yang bagus. Target tunggal saja. Tidak pernah meleset. block.oil-extractor.name=Oil Extractor
block.waveturret.name = turret tesla block.javelin-ship-factory.name=Javelin Ship factory
block.waveturret.fulldescription = Turret target banyak. Menggunakan tenaga. Jaraknya sedang. Tidak pernah meleset. Rata-rata damage-nya kecil, namun bisa menembak beberapa musuh bersamaan dengan petir berantai. block.drone-factory.name=Drone Factory
block.plasmaturret.name = turret plasma block.fabricator-factory.name=Fabricator Factory
block.plasmaturret.fulldescription = Versi yang sangat maju dari turret api. Menggunakan batubara sebagai amunisi. Damage yang sangat tinggi, jaraknya pendek sampai sedang. block.repair-point.name=Repair Point
block.chainturret.name = turret berantai block.resupply-point.name=Resupply Point
block.chainturret.fulldescription = Menara api yang menembak dengan cepat. Menggunakan thorium sebagai amunisi. Menembak peluru besar dengan kecepatan tinggi. Jaraknya sedang. Membentang beberapa ubin. Sangat tangguh. block.pulse-conduit.name=Pulse Conduit
block.titancannon.name = meriam titan block.phase-conduit.name=Phase Conduit
block.titancannon.fulldescription = Turret jarak jauh terakhir. Menggunakan thorium sebagai amunisi. Menembakkan peluru yang meledak dengan cipratan besar dengan kecepatan sedang. Jarak jauh. Membentang beberapa ubin. Sangat tangguh. block.liquid-router.name=Liquid Router
block.playerspawn.name = spawn pemain block.liquid-tank.name=Liquid Tank
block.enemyspawn.name = spawn musuh block.liquid-junction.name=Liquid Junction
block.bridge-conduit.name=Bridge Conduit
block.rotary-pump.name=Rotary Pump
block.nuclear-reactor.name=Nuclear Reactor

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,488 +1,494 @@
text.about = Stworzony przez [ROYAL] Anuken. []\nPierwotnie wpis w [orange] GDL [] MM Jam.\n\nNapisy:\n- SFX wykonane z pomocą [YELLOW] bfxr []\n- Muzyka wykonana przez [GREEN] RoccoW [] / znaleziona na [lime] FreeMusicArchive.org []\n\nSpecjalne podziękowania dla:\n- [coral] MitchellFJN []: obszerne testowanie i feedback\n- [niebo] Luxray5474 []: prace związane z wiki, pomoc z kodem\n- Wszystkich beta testerów na itch.io i Google Play\n text.about=Stworzony przez [ROYAL] Anuken. []\nPierwotnie wpis w [orange] GDL [] MM Jam.\n\nNapisy:\n- SFX wykonane z pomocą [YELLOW] bfxr []\n- Muzyka wykonana przez [GREEN] RoccoW [] / znaleziona na [lime] FreeMusicArchive.org []\n\nSpecjalne podziękowania dla:\n- [coral] MitchellFJN []: obszerne testowanie i feedback\n- [niebo] Luxray5474 []: prace związane z wiki, pomoc z kodem\n- Wszystkich beta testerów na itch.io i Google Play\n
text.discord = Odwiedź nasz serwer Discord text.discord=Odwiedź nasz serwer Discord
text.gameover = Rdzeń został zniszczony. text.gameover=Rdzeń został zniszczony.
text.highscore = [YELLOW] Nowy rekord! text.highscore=[YELLOW] Nowy rekord!
text.lasted = Wytrwałeś do fali text.lasted=Wytrwałeś do fali
text.level.highscore = Rekord: [accent]{0} text.level.highscore=Rekord: [accent]{0}
text.level.delete.title = Potwierdź kasowanie text.level.delete.title=Potwierdź kasowanie
text.level.delete = Czy na pewno chcesz usunąć mapę \"[orange]{0}\"? text.level.select=Wybrany poziom
text.level.select = Wybrany poziom text.level.mode=Tryb gry:
text.level.mode = Tryb gry: text.savegame=Zapisz Grę
text.savegame = Zapisz G text.loadgame=Wczytaj g
text.loadgame = Wczytaj grę text.joingame=Gra wieloosobowa
text.joingame = Gra wieloosobowa text.quit=Wyjdź
text.quit = Wyjdź text.about.button=O grze
text.about.button = O grze text.name=Nazwa:
text.name = Nazwa: text.players={0} graczy online
text.public = Publiczny text.players.single={0} gracz online
text.players = {0} graczy online text.server.mismatch=Błąd pakietu: możliwa niezgodność wersji klienta/serwera.\nUpewnij się, że Ty i host macie najnowszą wersję Mindustry!
text.server.player.host = {0} (host) text.server.closing=[accent] Zamykanie serwera ...
text.players.single = {0} gracz online text.server.kicked.kick=Zostałeś wyrzucony z serwera!
text.server.mismatch = Błąd pakietu: możliwa niezgodność wersji klienta/serwera.\nUpewnij się, że Ty i host macie najnowszą wersję Mindustry! text.server.kicked.invalidPassword=Nieprawidłowe hasło!
text.server.closing = [accent] Zamykanie serwera ... text.server.kicked.clientOutdated=Nieaktualna gra! Zaktualizują ją!
text.server.kicked.kick = Zostałeś wyrzucony z serwera! text.server.kicked.serverOutdated=Nieaktualna gra! Zaktualizują ją!
text.server.kicked.invalidPassword = Nieprawidłowe hasło! text.server.connected={0} dołączył do gry .
text.server.kicked.clientOutdated = Nieaktualna gra! Zaktualizują ją! text.server.disconnected={0} został rozłączony.
text.server.kicked.serverOutdated = Nieaktualna gra! Zaktualizują ją! text.nohost=Nie można hostować serwera na mapie niestandardowej!
text.server.connected = {0} dołączył do gry . text.hostserver=Serwer hosta
text.server.disconnected = {0} został rozłączony. text.host=Host
text.nohost = Nie można hostować serwera na mapie niestandardowej! text.hosting=[accent] Otwieranie serwera ...
text.hostserver = Serwer hosta text.hosts.refresh=Odśwież
text.host = Host text.hosts.discovering=Wyszukiwanie gier w sieci LAN
text.hosting = [accent] Otwieranie serwera ... text.server.refreshing=Odświeżanie serwera
text.hosts.refresh = Odśwież text.hosts.none=[lightgray] Brak serwerów w sieci LAN!
text.hosts.discovering = Wyszukiwanie gier w sieci LAN text.host.invalid=[scarlet] Nie można połączyć się z hostem.
text.server.refreshing = Odświeżanie serwera text.server.friendlyfire=Bratobójczy ogień
text.hosts.none = [lightgray] Brak serwerów w sieci LAN! text.server.add=Dodaj serwer
text.host.invalid = [scarlet] Nie można połączyć się z hostem. text.server.delete=Czy na pewno chcesz usunąć ten serwer?
text.server.friendlyfire = Bratobójczy ogień text.server.hostname=Host: {0}
text.server.add = Dodaj serwer text.server.edit=Edytuj serwer
text.server.delete = Czy na pewno chcesz usunąć ten serwer? text.joingame.title=Dołącz do gry
text.server.hostname = Host: {0} text.joingame.ip=IP:
text.server.edit = Edytuj serwer text.disconnect=Rozłączony.
text.joingame.byip = Dołącz przez IP... text.connecting=[accent]Łączenie ...
text.joingame.title = Dołącz do gry text.connecting.data=[accent]Ładowanie danych świata...
text.joingame.ip = IP: text.connectfail=[crimson]Nie można połączyć się z serwerem: [orange] {0}
text.disconnect = Rozłączony. text.server.port=Port:
text.connecting = [accent]Łączenie ... text.server.addressinuse=Adres jest już w użyciu!
text.connecting.data = [accent]Ładowanie danych świata... text.server.invalidport=Nieprawidłowy numer portu.
text.connectfail = [crimson]Nie można połączyć się z serwerem: [orange] {0} text.server.error=[crimson] Błąd hostowania serwera: [orange] {0}
text.server.port = Port: text.save.new=Nowy zapis
text.server.addressinuse = Adres jest już w użyciu! text.save.overwrite=Czy na pewno chcesz nadpisać zapis gry?
text.server.invalidport = Nieprawidłowy numer portu. text.overwrite=Nadpisz
text.server.error = [crimson] Błąd hostowania serwera: [orange] {0} text.save.none=Nie znaleziono zapisów gry!
text.tutorial.back = < Cofnij text.saveload=[akcent]Zapisywanie...
text.tutorial.next = Dalej > text.savefail=Nie udało się zapisać gry!
text.save.new = Nowy zapis text.save.delete.confirm=Czy na pewno chcesz usunąć ten zapis gry?
text.save.overwrite = Czy na pewno chcesz nadpisać zapis gry? text.save.delete=Usuń
text.overwrite = Nadpisz text.save.export=Eksportuj
text.save.none = Nie znaleziono zapisów gry! text.save.import.invalid=[orange]Zapis gry jest niepoprawny!
text.saveload = [akcent]Zapisywanie... text.save.import.fail=[crimson]Nie udało się zaimportować zapisu: [orange] {0}
text.savefail = Nie udało się zapisać gry! text.save.export.fail=[crimson]Nie można wyeksportować zapisu: [orange] {0}
text.save.delete.confirm = Czy na pewno chcesz usunąć ten zapis gry? text.save.import=Importuj
text.save.delete = Usuń text.save.newslot=Zapisz nazwę:
text.save.export = Eksportuj text.save.rename=Zmień nazwę
text.save.import.invalid = [orange]Zapis gry jest niepoprawny! text.save.rename.text=Zmień nazwę
text.save.import.fail = [crimson]Nie udało się zaimportować zapisu: [orange] {0} text.selectslot=Wybierz zapis.
text.save.export.fail = [crimson]Nie można wyeksportować zapisu: [orange] {0} text.slot=[accent]Slot {0}
text.save.import = Importuj text.save.corrupted=[orange]Zapis gry jest uszkodzony lub nieprawidłowy!
text.save.newslot = Zapisz nazwę: text.empty=<pusto>
text.save.rename = Zmień nazwę text.on=Włączone
text.save.rename.text = Zmień nazwę text.off=Wyłączone
text.selectslot = Wybierz zapis. text.save.autosave=Zapisywanie automatyczne
text.slot = [accent]Slot {0} text.save.map=Mapa: {0}
text.save.corrupted = [orange]Zapis gry jest uszkodzony lub nieprawidłowy! text.save.wave=Fala: {0}
text.empty = <pusto> text.save.date=Ostatnio zapisano: {0}
text.on = Włączone text.confirm=Potwierdź
text.off = Wyłączone text.delete=Usuń
text.save.autosave = Zapisywanie automatyczne text.ok=Ok
text.save.map = Mapa: {0} text.open=Otwórz
text.save.wave = Fala: {0} text.cancel=Anuluj
text.save.date = Ostatnio zapisano: {0} text.openlink=Otwórz link
text.confirm = Potwierdź text.back=Wróć
text.delete = Usuń text.quit.confirm=Czy na pewno chcesz wyjść?
text.ok = Ok text.loading=[accent]Ładowanie ...
text.open = Otwórz text.wave=[orange]Fala {0}
text.cancel = Anuluj text.wave.waiting=Fala w {0}
text.openlink = Otwórz link text.waiting=Oczekiwanie...
text.back = Wróć text.enemies={0} wrogów
text.quit.confirm = Czy na pewno chcesz wyjść? text.enemies.single={0} wróg
text.loading = [accent]Ładowanie ... text.loadimage=Załaduj obraz
text.wave = [orange]Fala {0} text.saveimage=Zapisz obraz
text.wave.waiting = Fala w {0} text.editor.badsize=[orange]Nieprawidłowe wymiary obrazu![]\nWymiary poprawne: {0}
text.waiting = Oczekiwanie... text.editor.errorimageload=Błąd podczas ładowania pliku obrazu: [orange]{0}
text.enemies = {0} wrogów text.editor.errorimagesave=Błąd podczas zapisywania pliku obrazu: [orange]{0}
text.enemies.single = {0} wróg text.editor.generate=Generuj
text.loadimage = Załaduj obraz text.editor.resize=Zmień rozmiar
text.saveimage = Zapisz obraz text.editor.loadmap=Załaduj mapę
text.editor.badsize = [orange]Nieprawidłowe wymiary obrazu![]\nWymiary poprawne: {0} text.editor.savemap=Zapisz mapę
text.editor.errorimageload = Błąd podczas ładowania pliku obrazu: [orange]{0} text.editor.loadimage=Załaduj obraz
text.editor.errorimagesave = Błąd podczas zapisywania pliku obrazu: [orange]{0} text.editor.saveimage=Zapisz obraz
text.editor.generate = Generuj text.editor.unsaved=[scarlet]Masz niezapisane zmiany![]\nCzy na pewno chcesz wyjść?
text.editor.resize = Zmień rozmiar text.editor.resizemap=Zmień rozmiar mapy
text.editor.loadmap = Załaduj mapę text.editor.mapname=Nazwa mapy:
text.editor.savemap = Zapisz mapę text.editor.overwrite=[accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy.
text.editor.loadimage = Załaduj obraz text.editor.selectmap=Wybierz mapę do załadowania:
text.editor.saveimage = Zapisz obraz text.width=Szerokość:
text.editor.unsaved = [scarlet]Masz niezapisane zmiany![]\nCzy na pewno chcesz wyjść? text.height=Wysokość:
text.editor.brushsize = Rozmiar pędzla: {0} text.menu=Menu
text.editor.noplayerspawn = Ta mapa nie ma ustawionego spawnu gracza! text.play=Graj
text.editor.manyplayerspawns = Mapy nie mogą mieć więcej niż jeden punkt spawnu gracza! text.load=Wczytaj
text.editor.manyenemyspawns = Nie może mieć więcej niż {0} punktów spawnu wroga! text.save=Zapisz
text.editor.resizemap = Zmień rozmiar mapy text.language.restart=Uruchom grę ponownie aby ustawiony język zaczął funkcjonować.
text.editor.resizebig = [scarlet]Uwaga![]\nMapy większe niż 256 jednostek mogą przycinać i być niestabilne. text.settings.language=Język
text.editor.mapname = Nazwa mapy: text.settings=Ustawienia
text.editor.overwrite = [accent]Uwaga!\nSpowoduje to nadpisanie istniejącej mapy. text.tutorial=Poradnik
text.editor.failoverwrite = [crimson]Nie można nadpisać mapy podstawowej! text.editor=Edytor
text.editor.selectmap = Wybierz mapę do załadowania: text.mapeditor=Edytor map
text.width = Szerokość: text.donate=Wspomóż nas
text.height = Wysokość: text.settings.reset=Przywróć domyślne
text.randomize = Wylosuj text.settings.controls=Sterowanie
text.apply = Zastosuj text.settings.game=Gra
text.update = Zaktualizuj text.settings.sound=Dźwięk
text.menu = Menu text.settings.graphics=Grafika
text.play = Graj text.upgrades=Ulepszenia
text.load = Wczytaj text.purchased=[LIME]Stworzono!
text.save = Zapisz text.weapons=Bronie
text.language.restart = Uruchom grę ponownie aby ustawiony język zaczął funkcjonować. text.paused=Wstrzymano
text.settings.language = Język text.info.title=[accent]Informacje
text.settings = Ustawienia text.error.title=[crimson]Wystąpił błąd
text.tutorial = Poradnik text.error.crashtitle=Wystąpił błąd
text.editor = Edytor text.blocks.blockinfo=Informacje o bloku
text.mapeditor = Edytor map text.blocks.powercapacity=Moc znamionowa
text.donate = Wspomóż nas text.blocks.powershot=moc / strzał
text.settings.reset = Przywróć domyślne text.blocks.size=Rozmiar
text.settings.controls = Sterowanie text.blocks.liquidcapacity=Pojemność cieczy
text.settings.game = Gra text.blocks.maxitemssecond=Maksymalna liczba przedmiotów / Sekunda
text.settings.sound = Dźwięk text.blocks.powerrange=Zakres mocy
text.settings.graphics = Grafika text.blocks.itemcapacity=Pojemność przedmiotów
text.upgrades = Ulepszenia text.blocks.inputliquid=Potrzebna ciecz
text.purchased = [LIME]Stworzono! text.blocks.inputitem=Potrzebne przedmioty
text.weapons = Bronie text.blocks.explosive=Wysoce wybuchowy!
text.paused = Wstrzymano text.blocks.health=Zdrowie
text.respawn = Odrodzenie za text.blocks.inaccuracy=Niedokładność
text.info.title = [accent]Informacje text.blocks.shots=Strzały
text.error.title = [crimson]Wystąpił błąd text.blocks.inputcapacity=Pojemność wejściowa
text.error.crashmessage = [SCARLET]Wystąpił nieoczekiwany błąd, który spowodowałby awarię.[]\nProszę, powiadom dewelopera gry o tym błędzie, pisząc jak do niego doszło: [ORANGE]anukendev@gmail.com[] text.blocks.outputcapacity=Wydajność wyjściowa
text.error.crashtitle = Wystąpił błąd setting.difficulty.easy=łatwy
text.mode.break = Tryb przerw: {0} setting.difficulty.normal=normalny
text.mode.place = Tryb układania: {0} setting.difficulty.hard=trudny
placemode.hold.name = linia setting.difficulty.insane=szalony
placemode.areadelete.name = obszar setting.difficulty.purge=Czystka
placemode.touchdelete.name = Dotyk setting.difficulty.name=Poziom trudności
placemode.holddelete.name = Przytrzymać setting.screenshake.name=Trzęsienie się ekranu
placemode.none.name = żaden setting.indicators.name=Wskaźniki wroga
placemode.touch.name = Dotyk setting.effects.name=Wyświetlanie efektów
placemode.cursor.name = kursor setting.sensitivity.name=Czułość kontrolera
text.blocks.extrainfo = [accent]Dodatkowe informacje o bloku: setting.saveinterval.name=Interwał automatycznego zapisywania
text.blocks.blockinfo = Informacje o bloku setting.seconds=Sekundy
text.blocks.powercapacity = Moc znamionowa setting.fps.name=Widoczny licznik FPS
text.blocks.powershot = moc / strzał setting.vsync.name=Synchronizacja pionowa
text.blocks.powersecond = moc / sekunda setting.lasers.name=Pokaż lasery zasilające
text.blocks.powerdraindamage = siła ataku / obrażenia setting.healthbars.name=Pokaż paski zdrowia jednostki
text.blocks.shieldradius = Promień osłony setting.musicvol.name=Głośność muzyki
text.blocks.itemspeedsecond = prędkość / sekundy setting.mutemusic.name=Wycisz muzykę
text.blocks.range = Zakres setting.sfxvol.name=Głośność dźwięków
text.blocks.size = Rozmiar setting.mutesound.name=Wycisz dźwięki
text.blocks.powerliquid = moc / ciecz map.maze.name=labirynt
text.blocks.maxliquidsecond = maksymalna ilość cieczy / sekunda map.fortress.name=twierdza
text.blocks.liquidcapacity = Pojemność cieczy map.sinkhole.name=wgłębienie
text.blocks.liquidsecond = ciecz / sekunda map.caves.name=jaskinie
text.blocks.damageshot = obrażenia / strzał map.volcano.name=wulkan
text.blocks.ammocapacity = Pojemność amunicji map.caldera.name=kaldera
text.blocks.ammo = Amunicja: map.scorch.name=opalacz
text.blocks.ammoitem = amunicja / przedmiot map.desert.name=pustynia
text.blocks.maxitemssecond = Maksymalna liczba przedmiotów / Sekunda map.island.name=wyspa
text.blocks.powerrange = Zakres mocy map.grassland.name=łąka
text.blocks.lasertilerange = Zasięg lasera map.tundra.name=tundra
text.blocks.capacity = Wydajność map.spiral.name=spirala
text.blocks.itemcapacity = Pojemność przedmiotów map.tutorial.name=Poradnik
text.blocks.maxpowergenerationsecond = maksymalne generowanie energii / sekunda keybind.move_x.name=Poruszanie w poziomie
text.blocks.powergenerationsecond = wytwarzanie energii / sekunda keybind.move_y.name=Poruszanie w pionie
text.blocks.generationsecondsitem = sekunda / przedmiot keybind.select.name=Wybieranie
text.blocks.input = Wkład keybind.break.name=Niszczenie
text.blocks.inputliquid = Potrzebna ciecz keybind.shoot.name=Strzelanie
text.blocks.inputitem = Potrzebne przedmioty keybind.zoom_hold.name=Inicjator przybliżania
text.blocks.output = Wyjście keybind.zoom.name=Przybliżanie
text.blocks.secondsitem = sekundy / przedmiot keybind.menu.name=menu
text.blocks.maxpowertransfersecond = maksymalny transfer mocy / sekundę keybind.pause.name=pauza
text.blocks.explosive = Wysoce wybuchowy! keybind.dash.name=przyśpieszenie
text.blocks.repairssecond = naprawa / sekunda keybind.rotate_alt.name=Obracanie (1)
text.blocks.health = Zdrowie keybind.rotate.name=Obracanie (2)
text.blocks.inaccuracy = Niedokładność mode.waves.name=Fale
text.blocks.shots = Strzały mode.sandbox.name=sandbox
text.blocks.shotssecond = Strzały / Sekunda mode.freebuild.name=budowanie
text.blocks.fuel = Paliwo item.stone.name=kamień
text.blocks.fuelduration = Wydajność paliwa item.coal.name=węgiel
text.blocks.maxoutputsecond = maksymalne wyjście / sekunda item.titanium.name=tytan
text.blocks.inputcapacity = Pojemność wejściowa item.thorium.name=uran
text.blocks.outputcapacity = Wydajność wyjściowa item.sand.name=piasek
text.blocks.poweritem = moc / przedmiot liquid.water.name=woda
text.placemode = Tryb miejsca liquid.lava.name=lawa
text.breakmode = Tryb przerwania liquid.oil.name=olej
text.health = Zdrowie: block.door.name=drzwi
setting.difficulty.easy = łatwy block.door-large.name=duże drzwi
setting.difficulty.normal = normalny block.conduit.name=Rura
setting.difficulty.hard = trudny block.pulseconduit.name=Rura impulsowa
setting.difficulty.insane = szalony block.liquidrouter.name=Rozdzielacz płynów
setting.difficulty.purge = Czystka block.conveyor.name=Przenośnik
setting.difficulty.name = Poziom trudności block.router.name=Rozdzielacz
setting.screenshake.name = Trzęsienie się ekranu block.junction.name=węzeł
setting.smoothcam.name = Płynna kamera block.liquidjunction.name=Węzeł dla płynów
setting.indicators.name = Wskaźniki wroga block.sorter.name=Sortownik
setting.effects.name = Wyświetlanie efektów block.smelter.name=huta
setting.sensitivity.name = Czułość kontrolera text.credits=Credits
setting.saveinterval.name = Interwał automatycznego zapisywania text.link.discord.description=the official Mindustry discord chatroom
setting.seconds = Sekundy text.link.github.description=Game source code
setting.fps.name = Widoczny licznik FPS text.link.dev-builds.description=Unstable development builds
setting.vsync.name = Synchronizacja pionowa text.link.trello.description=Official trello board for planned features
setting.lasers.name = Pokaż lasery zasilające text.link.itch.io.description=itch.io page with PC downloads and web version
setting.healthbars.name = Pokaż paski zdrowia jednostki text.link.google-play.description=Google Play store listing
setting.pixelate.name = Rozpikselizowany obraz text.link.wiki.description=official Mindustry wiki
setting.musicvol.name = Głośność muzyki text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
setting.mutemusic.name = Wycisz muzykę text.editor.web=The web version does not support the editor!\nDownload the game to use it.
setting.sfxvol.name = Głośność dźwięków text.web.unsupported=The web version does not support this feature! Download the game to use it.
setting.mutesound.name = Wycisz dźwięki text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
map.maze.name = labirynt text.host.web=The web version does not support hosting games! Download the game to use this feature.
map.fortress.name = twierdza text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
map.sinkhole.name = wgłębienie text.construction.title=Block Construction Guide
map.caves.name = jaskinie text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
map.volcano.name = wulkan text.deconstruction.title=Block Deconstruction Guide
map.caldera.name = kaldera text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
map.scorch.name = opalacz text.showagain=Don't show again next session
map.desert.name = pustynia text.unlocks=Unlocks
map.island.name = wyspa text.addplayers=Add/Remove Players
map.grassland.name = łąka text.newgame=New Game
map.tundra.name = tundra text.maps=Maps
map.spiral.name = spirala text.maps.none=[LIGHT_GRAY]No maps found!
map.tutorial.name = Poradnik text.unlocked=New Block Unlocked!
tutorial.intro.text = [yellow]Witamy w poradniku do gry.[]\nAby rozpocząć, naciśnij \"Dalej\". text.unlocked.plural=New Blocks Unlocked!
tutorial.moveDesktop.text = Aby się poruszać, użyj klawiszy [orange]W A S[] oraz [orange]D[]. Przytrzymaj [orange]shift[], aby przyśpieszyć.\nPrzytrzymując [orange]ctrl[] podczas kręcenia [orange]rolką myszy[] możesz zmieniać poziom przybliżenia mapy. text.server.kicked.fastShoot=You are shooting too quickly.
tutorial.shoot.text = Do celowania używasz kursora myszy.\n[orange]Lewy przycisk myszy[] służy do strzelania. Poćwicz na [yellow]celu[]. text.server.kicked.banned=You are banned on this server.
tutorial.moveAndroid.text = Aby przesunąć widok, przeciągnij jednym palcem po ekranie. Ściśnij i przeciągnij, aby powiększyć lub pomniejszyć. text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
tutorial.placeSelect.text = Wybierz [yellow]przenośnik[] z menu blokowego w prawym dolnym rogu. text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
tutorial.placeConveyorDesktop.text = Użyj [orange]rolki myszy[] aby obrócić przenośnik [orange]do przodu[], a następnie umieść go w [yellow]oznaczonym miejscu[] za pomocą [orange]lewego przycisku myszy[]. text.server.kicked.nameEmpty=Your name must contain at least one character or number.
tutorial.placeConveyorAndroid.text = Użyj [orange]przycisk obracania[], aby obrócić przenośnik [orange]do przodu[]. Jednym palcem przeciągnij go na [yellow]wskazaną pozycję[], a następnie umieść go za pomocą [orange]znacznika wyboru[]. text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
tutorial.placeConveyorAndroidInfo.text = Możesz też nacisnąć ikonę celownika w lewym dolnym rogu, aby przełączyć na [pomarańczowy] [[tryb dotykowy] [] i umieścić bloki, dotykając ekranu. W trybie dotykowym bloki można obracać strzałką w lewym dolnym rogu. Naciśnij [żółty] następny [], aby go wypróbować. text.server.kicked.customClient=This server does not support custom builds. Download an official version.
tutorial.placeDrill.text = Teraz wybierz i umieść [yellow]wiertło do kamienia[] w oznaczonym miejscu. text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
tutorial.blockInfo.text = Jeśli chcesz się dowiedzieć więcej na temat wybranego bloku, kliknij [orange]znak zapytania[] w prawym górnym rogu, aby przeczytać jego opis. text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
tutorial.deselectDesktop.text = Możesz anulować wybór bloku za pomocą [orange]prawego przycisku myszy[]. text.trace=Trace Player
tutorial.deselectAndroid.text = Możesz odznaczyć blok, naciskając przycisk [orange]X[]. text.trace.playername=Player name: [accent]{0}
tutorial.drillPlaced.text = Wiertło będzie teraz produkować [yellow]kamień[] i podawać go na przenośnik, który przeniesie go do [yellow]rdzenia[] text.trace.ip=IP: [accent]{0}
tutorial.drillInfo.text = Różne rudy wymagają różnych wierteł. Kamień wymaga wiertła do kamieniu, żelazo wymaga wiertła do żelaza, itd. text.trace.id=Unique ID: [accent]{0}
tutorial.drillPlaced2.text = Przeniesienie przedmiotów do rdzenia powoduje umieszczenie ich w [yellow]inwentarzu przedmiotów[] w lewym górnym rogu. Stawianie bloków te przedmioty zużywa. text.trace.android=Android Client: [accent]{0}
tutorial.moreDrills.text = Możesz połączyć wiertła i przenośników w przedstawiony sposób: text.trace.modclient=Custom Client: [accent]{0}
tutorial.deleteBlock.text = Możesz usuwać bloki, klikając [orange]prawy przycisk myszy[] na bloku, który chcesz usunąć.\nSpróbuj usunąć [yellow]oznaczony[] przenośnik. text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
tutorial.deleteBlockAndroid.text = Możesz usuwać bloki za pomocą [orange]krzyżyka[] w [orange]menu przerywania[] w lewym dolnym rogu i stukając w blok.\nSpróbuj usunąć [yellow]oznaczony[] przenośnik. text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
tutorial.placeTurret.text = Teraz wybierz i umieść [yellow]działko[] w [yellow]zaznaczonym miejscu[]. text.trace.lastblockbroken=Last block broken: [accent]{0}
tutorial.placedTurretAmmo.text = Działko przyjmie teraz [yellow]amunicję[] z przenośnika. Możesz zobaczyć, ile ma amunicji, najeżdżając na działko kursorem i sprawdzając [green]zielony pasek[]. text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
tutorial.turretExplanation.text = Wieżyczki będą strzelać automatycznie do najbliższego wroga w zasięgu, o ile będą miały wystarczającą ilość amunicji. text.trace.lastblockplaced=Last block placed: [accent]{0}
tutorial.waves.text = Co każde [yellow]60[] sekund, fala [coral]wrogów[] pojawi się w określonym miejscu na mapie i spróbuje zniszczyć rdzeń. text.invalidid=Invalid client ID! Submit a bug report.
tutorial.coreDestruction.text = Twoim celem jest [yellow]obrona rdzenia[]. Zniszczenie rdzenia jest równoznaczne z [coral]przegraną[]. text.server.bans=Bans
tutorial.pausingDesktop.text = Jeśli chcesz zrobić przerwę, naciśnij [orange]spację[] lub [orange]przycisk pauzy[] w lewym górnym rogu. Nadal możesz wybierać i wstawiać klocki podczas pauzy, ale nie możesz niszczyć i strzelać. text.server.bans.none=No banned players found!
tutorial.pausingAndroid.text = Jeśli chcesz zrobić przerwę, naciśnij [orange]przycisk pauzy[]. Nadal możesz stawiać i niszczyć bloki. text.server.admins=Admins
tutorial.purchaseWeapons.text = Możesz kupić nowe [żółte] bronie [] dla swojego mecha, otwierając menu aktualizacji w lewym dolnym rogu. text.server.admins.none=No admins found!
tutorial.switchWeapons.text = Zmień broń, klikając jej ikonę w lewym dolnym rogu lub używając cyfr [orange][1-9[]. text.server.outdated=[crimson]Outdated Server![]
tutorial.spawnWave.text = Fala wrogów nadchodzi! Zniszcz ich. text.server.outdated.client=[crimson]Outdated Client![]
tutorial.pumpDesc.text = W późniejszych falach może być konieczne użycie [yellow]pompy[] do rozprowadzania cieczy dla generatorów lub ekstraktorów. text.server.version=[lightgray]Version: {0}
tutorial.pumpPlace.text = Pompy działają podobnie do wierteł, z tym wyjątkiem, że wytwarzają ciecze zamiast ród.\nSpróbuj umieścić pompę na [yellow]oleju[]. text.server.custombuild=[yellow]Custom Build
tutorial.conduitUse.text = Teraz umieść [orange]rurę[] wychodzącą od pompy. text.confirmban=Are you sure you want to ban this player?
tutorial.conduitUse2.text = I tak jeszcze jedną... text.confirmunban=Are you sure you want to unban this player?
tutorial.conduitUse3.text = I jeszcze jedeną... text.confirmadmin=Are you sure you want to make this player an admin?
tutorial.generator.text = Teraz umieść [orange]generator spalinowy[] na końcu kanału. text.confirmunadmin=Are you sure you want to remove admin status from this player?
tutorial.generatorExplain.text = Generator ten będzie teraz wytwarzać [yellow]energię[] z oleju. text.disconnect.data=Failed to load world data!
tutorial.lasers.text = Energia jest dystrybuowana za pomocą [yellow]przekaźników[]. Umieść takowy przekaźnik na [yellow]wskazanej pozycji[]. text.save.difficulty=Difficulty: {0}
tutorial.laserExplain.text = Generator przeniesie teraz moc do przekaźnika. Wiązka [orange]nieprzeźroczysta[] oznacza, że aktualnie transmituje moc. Wiązka [yellow]przeźroczysta[] wskazuje na brak przekazywanej energii. text.copylink=Copy Link
tutorial.laserMore.text = Możesz sprawdzić ile energii przechowuje blok najeżdżając na niego kursorem i sprawdzając [yellow]żółty pasek[]. text.changelog.title=Changelog
tutorial.healingTurret.text = Energia może być używany do zasilania [lime]wież naprawczych[]. Umieść takową [yellow]tutaj[]. text.changelog.loading=Getting changelog...
tutorial.healingTurretExplain.text = Dopóki dostarczana jest do niej energia będzie [lime]naprawiać pobliskie bloki[]. Podczas gry ustawiłeś ją niedaleko swojej bazy tak szybko, jak to tylko możliwe! text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
tutorial.smeltery.text = Wiele bloków wymaga do pracy [orange]stali[], którą można wytwarzać w [orange]hucie[]. A skoro tak, to postaw ją teraz. text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
tutorial.smelterySetup.text = Huta wytworzy teraz z żelaza [orange]stal[], wykorzystując węgiel jako paliwo. text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
tutorial.tunnelExplain.text = Zwróć też uwagę, że przedmioty przechodzą przez [orange]tunel[] i wynurzają się po drugiej stronie, przechodząc przez kamienny blok. Pamiętaj, że tunele mogą przechodzić tylko do 2 bloków. text.changelog.current=[yellow][[Current version]
tutorial.end.text = I na tym poradnik się kończy!\nPozostaje tylko życzyć Ci [orange]powodzenia[]! text.changelog.latest=[orange][[Latest version]
keybind.move_x.name = Poruszanie w poziomie text.saving=[accent]Saving...
keybind.move_y.name = Poruszanie w pionie text.unknown=Unknown
keybind.select.name = Wybieranie text.custom=Custom
keybind.break.name = Niszczenie text.builtin=Built-In
keybind.shoot.name = Strzelanie text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
keybind.zoom_hold.name = Inicjator przybliżania text.map.random=[accent]Random Map
keybind.zoom.name = Przybliżanie text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
keybind.menu.name = menu text.editor.slope=\\
keybind.pause.name = pauza text.editor.openin=Open In Editor
keybind.dash.name = przyśpieszenie text.editor.oregen=Ore Generation
keybind.rotate_alt.name = Obracanie (1) text.editor.oregen.info=Ore Generation:
keybind.rotate.name = Obracanie (2) text.editor.mapinfo=Map Info
keybind.weapon_1.name = Broń 1 text.editor.author=Author:
keybind.weapon_2.name = Broń 2 text.editor.description=Description:
keybind.weapon_3.name = Broń 3 text.editor.name=Name:
keybind.weapon_4.name = Broń 4 text.editor.teams=Teams
keybind.weapon_5.name = Broń 5 text.editor.elevation=Elevation
keybind.weapon_6.name = Broń 6 text.editor.saved=Saved!
mode.waves.name = Fale text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
mode.sandbox.name = sandbox text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
mode.freebuild.name = budowanie text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
upgrade.standard.name = Standardowy text.editor.import=Import...
upgrade.standard.description = Standardowy mech. text.editor.importmap=Import Map
upgrade.blaster.name = blaster text.editor.importmap.description=Import an already existing map
upgrade.blaster.description = Wystrzeliwuje powolną, słabą kulę. text.editor.importfile=Import File
upgrade.triblaster.name = triblaster text.editor.importfile.description=Import an external map file
upgrade.triblaster.description = Strzela 3 pociskami w rozprzestrzenianiu. text.editor.importimage=Import Terrain Image
upgrade.clustergun.name = clustergun text.editor.importimage.description=Import an external map image file
upgrade.clustergun.description = Wystrzeliwuje w różnych kierunkach kilka granatów. text.editor.export=Export...
upgrade.beam.name = Działko laserowe text.editor.exportfile=Export File
upgrade.beam.description = Strzela laserem o dalekim zasięgu. text.editor.exportfile.description=Export a map file
upgrade.vulcan.name = wulkan text.editor.exportimage=Export Terrain Image
upgrade.vulcan.description = Wystrzeliwuje grad szybkich pocisków. text.editor.exportimage.description=Export a map image file
upgrade.shockgun.name = Działko elektryczne text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
upgrade.shockgun.description = Wystrzeliwuje niszczycielski podmuch naładowanych odłamków. text.fps=FPS: {0}
item.stone.name = kamień text.tps=TPS: {0}
item.iron.name = żelazo text.ping=Ping: {0}ms
item.coal.name = węgiel text.settings.rebind=Rebind
item.steel.name = stal text.yes=Yes
item.titanium.name = tytan text.no=No
item.dirium.name = dirium text.blocks.targetsair=Targets Air
item.thorium.name = uran text.blocks.itemspeed=Units Moved
item.sand.name = piasek text.blocks.shootrange=Range
liquid.water.name = woda text.blocks.poweruse=Power Use
liquid.plasma.name = plazma text.blocks.inputitemcapacity=Input Item Capacity
liquid.lava.name = lawa text.blocks.outputitemcapacity=Input Item Capacity
liquid.oil.name = olej text.blocks.maxpowergeneration=Max Power Generation
block.weaponfactory.name = fabryka broni text.blocks.powertransferspeed=Power Transfer
block.air.name = Powietrze. text.blocks.craftspeed=Production Speed
block.blockpart.name = Kawałek bloku text.blocks.inputliquidaux=Aux Liquid
block.deepwater.name = głęboka woda text.blocks.inputitems=Input Items
block.water.name = woda text.blocks.outputitem=Output Item
block.lava.name = lawa text.blocks.drilltier=Drillables
block.oil.name = olej text.blocks.drillspeed=Base Drill Speed
block.stone.name = kamień text.blocks.liquidoutput=Liquid Output
block.blackstone.name = czarny kamień text.blocks.liquiduse=Liquid Use
block.iron.name = żelazo text.blocks.coolant=Coolant
block.coal.name = węgiel text.blocks.coolantuse=Coolant Use
block.titanium.name = tytan text.blocks.inputliquidfuel=Fuel Liquid
block.thorium.name = uran text.blocks.liquidfueluse=Liquid Fuel Use
block.dirt.name = ziemia text.blocks.reload=Reload
block.sand.name = piasek text.blocks.inputfuel=Fuel
block.ice.name = lód text.blocks.fuelburntime=Fuel Burn Time
block.snow.name = śnieg text.unit.blocks=blocks
block.grass.name = trawa text.unit.powersecond=power units/second
block.sandblock.name = blok z piasku text.unit.liquidsecond=liquid units/second
block.snowblock.name = blok ze śniegu text.unit.itemssecond=items/second
block.stoneblock.name = blok z kamienia text.unit.pixelssecond=pixels/second
block.blackstoneblock.name = blok z czarnego kamienia text.unit.liquidunits=liquid units
block.grassblock.name = blok z trawy text.unit.powerunits=power units
block.mossblock.name = porośnięty blok text.unit.degrees=degrees
block.shrub.name = krzew text.unit.seconds=seconds
block.rock.name = kamyk text.unit.none=
block.icerock.name = kamyk lodowy text.unit.items=items
block.blackrock.name = czarny kamyk text.category.general=General
block.dirtblock.name = Brudny blok text.category.power=Power
block.stonewall.name = Kamienna ściana text.category.liquids=Liquids
block.stonewall.fulldescription = Tani blok obronny. Przydatny do ochrony rdzenia i wież w pierwszych kilku falach. text.category.items=Items
block.ironwall.name = Żelazna ściana text.category.crafting=Crafting
block.ironwall.fulldescription = Podstawowy blok obronny. Zapewnia ochronę przed wrogami. text.category.shooting=Shooting
block.steelwall.name = stalowa ściana setting.fullscreen.name=Fullscreen
block.steelwall.fulldescription = Standardowy blok obronny. odpowiednia ochrona przed wrogami. setting.multithread.name=Multithreading
block.titaniumwall.name = tytanowa ściana setting.minimap.name=Show Minimap
block.titaniumwall.fulldescription = Silny blok obronny. Zapewnia ochronę przed wrogami. text.keybind.title=Rebind Keys
block.duriumwall.name = ściana z dirium keybind.block_info.name=block_info
block.duriumwall.fulldescription = Bardzo silny blok obronny. Zapewnia ochronę przed wrogami. keybind.chat.name=chat
block.compositewall.name = ściana kompozytowa keybind.player_list.name=player_list
block.steelwall-large.name = duża stalowa ściana keybind.console.name=console
block.steelwall-large.fulldescription = Standardowy blok obronny. Rozpiętość wielu płytek. mode.text.help.title=Description of modes
block.titaniumwall-large.name = duża tytanowa ściana mode.waves.description=the normal mode. limited resources and automatic incoming waves.
block.titaniumwall-large.fulldescription = Silny blok obronny. Rozpiętość wielu płytek. mode.sandbox.description=infinite resources and no timer for waves.
block.duriumwall-large.name = duża ściana z dirium mode.freebuild.description=limited resources and no timer for waves.
block.duriumwall-large.fulldescription = Bardzo silny blok obronny. Rozpiętość wielu płytek. content.item.name=Items
block.titaniumshieldwall.name = Ściana z polem obronnym content.liquid.name=Liquids
block.titaniumshieldwall.fulldescription = Silny blok obronny z dodatkową wbudowaną tarczą. Wymaga zasilania. Używa energii do pochłaniania pocisków wroga. W celu dostarczenia zasilania zaleca się stosowanie wzmacniaczy energii. content.unit-type.name=Units
block.repairturret.name = Wieża naprawcza content.recipe.name=Blocks
block.repairturret.fulldescription = Naprawia pobliskie uszkodzone bloki w niedużej prędkości. Wykorzystuje niewielkie ilości energii. item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
block.megarepairturret.name = Wieża naprawcza II item.tungsten.name=Tungsten
block.megarepairturret.fulldescription = Naprawia pobliskie uszkodzone bloki z przyzwoitą prędkośą. Do działania wykorzystuje energię. item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
block.shieldgenerator.name = Generator tarczy item.lead.name=Lead
block.shieldgenerator.fulldescription = Zaawansowany blok obronny. Osłania wszystkie bloki w promieniu przed atakiem wroga. Zużywa energię z niewielką prędkością gdy jest w stanie bezczynności, ale z kolei gdy jest w użyciu, energię pobiera bardzo szybko. item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
block.door.name = drzwi item.coal.description=A common and readily available fuel.
block.door.fulldescription = Blok, który można otworzyć i zamknąć poprzez dotknięcie item.carbide.name=Carbide
block.door-large.name = duże drzwi item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
block.door-large.fulldescription = Blok, który można otworzyć i zamknąć poprzez dotknięcie item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
block.conduit.name = Rura item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
block.conduit.fulldescription = Podstawowy blok transportu cieczy. Działa jak przenośnik, tylko że z płynami. Najlepiej stosować z pompami bądź razem innymi rurami.\nMoże być używany jako pomost nad płynami dla wrogów i graczy. item.silicon.name=Silicon
block.pulseconduit.name = Rura impulsowa item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
block.pulseconduit.fulldescription = Zaawansowany blok transportu cieczy. Transportuje ciecze szybciej i przechowuje więcej niż rury standardowe. item.plastanium.name=Plastanium
block.liquidrouter.name = Rozdzielacz płynów item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
block.liquidrouter.fulldescription = Działa podobnie do zwykłego rozdzielacza. Akceptuje wejście cieczy z jednej strony i przekazuje ją na pozostałe strony. Przydatny do rozdzielania cieczy z jednej rury do wielu. item.phase-matter.name=Phase Matter
block.conveyor.name = Przenośnik item.surge-alloy.name=Surge Alloy
block.conveyor.fulldescription = Podstawowy blok transportu przedmiotów. Przenosi przedmioty do przodu i automatycznie umieszcza je w blokach. Może być używany jako pomost nad płynami dla wrogów i graczy. item.biomatter.name=Biomatter
block.steelconveyor.name = Przenośnik stalowy item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
block.steelconveyor.fulldescription = Zaawansowany blok transportu przedmiotów. Przenosi elementy szybciej niż standardowe przenośniki. item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
block.poweredconveyor.name = przenośnik impulsowy item.blast-compound.name=Blast Compound
block.poweredconveyor.fulldescription = Najszybszy blok transportowy przedmiotów. item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
block.router.name = Rozdzielacz item.pyratite.name=Pyratite
block.router.fulldescription = Przyjmuje przedmioty z jednego kierunku i przekazuje je w 3 innych kierunkach. Może również przechowywać pewną liczbę przedmiotów. Przydatny do dzielenia materiałów z jednego wiertła na wiele dział. item.pyratite.description=An extremely flammable substance used in incendiary weapons.
block.junction.name = węzeł liquid.cryofluid.name=Cryofluid
block.junction.fulldescription = Działa jako pomost dla dwóch skrzyżowanych przenośników taśmowych. Przydatny w sytuacjach, gdy dwa różne przenośniki przenoszą różne materiały do różnych lokalizacji. text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
block.conveyortunnel.name = tunel przenośnikowy text.item.flammability=[LIGHT_GRAY]Flammability: {0}
block.conveyortunnel.fulldescription = Transportuje przedmiot pod blokami. Aby użyć, umieść jeden tunel prowadzący do bloku, który ma zostać tunelowany, i jeden po drugiej stronie. Upewnij się, że oba tunele są skierowane w przeciwnych kierunkach, czyli w wejście do bloku podającego, a wyjście do bloku odbierającego. text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
block.liquidjunction.name = Węzeł dla płynów text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
block.liquidjunction.fulldescription = Skrzyżowanie dla rurociągów. Przydatne w sytuacji, w której transportujemy różne ciecze w rurach, które muszą się przeciąć. text.item.hardness=[LIGHT_GRAY]Hardness: {0}
block.liquiditemjunction.name = Węzeł rur i przenośników text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
block.liquiditemjunction.fulldescription = Skrzyżowanie przenośników taśmowych oraz rur. text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
block.powerbooster.name = Wzmacniacz energii text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
block.powerbooster.fulldescription = Dystrybuuje moc do wszystkich bloków w swoim promieniu. block.tungsten-wall.name=Tungsten Wall
block.powerlaser.name = Przekaźnik block.tungsten-wall-large.name=Large Tungsten Wall
block.powerlaser.fulldescription = Tworzy laser, który przesyła moc do bloku przed nim. Nie generuje energii. Najlepiej stosować z generatorami lub innymi przekaźnikami. block.carbide-wall.name=Carbide Wall
block.powerlaserrouter.name = Duży rozdzielacz energii block.carbide-wall-large.name=Large Carbide Wall
block.powerlaserrouter.fulldescription = Przekaźnik, który dystrybuuje energię w trzech kierunkach jednocześnie. Przydatne w sytuacjach, w których wymagane jest zasilanie wielu bloków z jednego generatora. block.thorium-wall.name=Thorium Wall
block.powerlasercorner.name = Rozdzielacz energii block.thorium-wall-large.name=Large Thorium Wall
block.powerlasercorner.fulldescription = Przekaźnik, który dystrybuuje energię w dwóch kierunkach jednocześnie. Przydatny w sytuacjach, gdy wymagane jest zasilanie wielu bloków z jednego generatora, a router jest nieprecyzyjny. block.duo.name=Duo
block.teleporter.name = teleporter block.scorch.name=Scorch
block.teleporter.fulldescription = Zaawansowany blok transportu przedmiotów. Teleporty przenoszą przedmioty do innych teleportów tego samego koloru. Jeżeli nie istnieją teleporty z tym samym kolorem, to nie niczego nigdzie nie przenosi. Jeśli istnieje wiele teleportów tego samego koloru, wybierany jest losowy. Zużywa energię. Stuknij aby zmienić kolor. block.hail.name=Hail
block.sorter.name = Sortownik block.lancer.name=Lancer
block.sorter.fulldescription = Sortuje przedmioty według rodzaju materiału. Materiał do zaakceptowania jest oznaczony w bloku. Wszystkie pasujące przedmioty są wysyłane do przodu, wszystko inne jest wyprowadzane na lewo i na prawo. block.titanium-conveyor.name=Titanium Conveyor
block.core.name = Rdzeń block.splitter.name=Splitter
block.pump.name = pompa block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
block.pump.fulldescription = Pompuje ciecze z bloku źródłowego - zwykle wody, lawy lub oleju. Wyprowadza ciecz do pobliskich rur. block.router.description=Splits items into all 4 directions. Can store items as a buffer.
block.fluxpump.name = pompa strumieniowa block.distributor.name=Distributor
block.fluxpump.fulldescription = Zaawansowana wersja pompy. Przechowuje więcej cieczy i szybciej pompuje. block.distributor.description=A splitter that can split items into 8 directions.
block.smelter.name = huta block.sorter.description=Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
block.smelter.fulldescription = Niezbędny blok rzemieślniczy. Po wprowadzeniu 1 żelaza i 1 węgla jako paliwa, wytwarza 1 stal. Zaleca się wprowadzanie żelaza i węgla na różne pasy, aby zapobiec zatkaniu. block.overflow-gate.name=Overflow Gate
block.crucible.name = tygiel block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
block.crucible.fulldescription = Zaawansowany blok rzemieślniczy. Po wprowadzeniu 1 tytanu, 1 stali i 1 węgla jako paliwa, otrzymuje 1 dirium. Zaleca się wprowadzanie węgla, stali i tytanu z różnych taśm, aby zapobiec zatkaniu. block.bridgeconveyor.name=Bridge Conveyor
block.coalpurifier.name = ekstraktor węgla block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
block.coalpurifier.fulldescription = Wyprowadza węgiel, gdy jest dostarczana duża ilością wody i kamienia. block.arc-smelter.name=Arc Smelter
block.titaniumpurifier.name = ekstraktor tytanu block.silicon-smelter.name=Silicon Smelter
block.titaniumpurifier.fulldescription = Wyprowadza tytan, gdy jest dostarczana duża ilości wody i żelaza. block.phase-weaver.name=Phase Weaver
block.oilrefinery.name = Rafineria ropy block.pulverizer.name=Pulverizer
block.oilrefinery.fulldescription = Rafinuje duże ilości oleju do postaci węgla. Przydatne do napędzania działek napędzanych węglem, gry nie ma w pobliżu wystarcząjacej ilości rud węgla. block.cryofluidmixer.name=Cryofluid Mixer
block.stoneformer.name = Wytwarzacz kamienia block.melter.name=Melter
block.stoneformer.fulldescription = Schładza lawę do postaci kamień. Przydatny do produkcji ogromnych ilości kamienia do oczyszczania węgla. block.incinerator.name=Incinerator
block.lavasmelter.name = Huta lawowa block.biomattercompressor.name=Biomatter Compressor
block.lavasmelter.fulldescription = Używa lawy, by przekształcić żelazo w stal. Alternatywa dla zwykłych hut. Przydatny w sytuacjach, gdy brakuje węgla. block.separator.name=Separator
block.stonedrill.name = wiertło do kamienia block.centrifuge.name=Centrifuge
block.stonedrill.fulldescription = Niezbędne wiertło. Po umieszczeniu na kamiennym podłożu, powoli i w nieskończoność wydobywa kamień. block.power-node.name=Power Node
block.irondrill.name = wiertło do żelaza block.power-node-large.name=Large Power Node
block.irondrill.fulldescription = Po umieszczeniu na rudzie żelaza, powoli i w nieskończoność wydobywa żelazo. block.battery.name=Battery
block.coaldrill.name = wiertło do węgla block.battery-large.name=Large Battery
block.coaldrill.fulldescription = Po umieszczeniu na rudzie węgla, powoli i w nieskończoność wydobywa węgiel. block.combustion-generator.name=Combustion Generator
block.thoriumdrill.name = wiertło do uranu block.turbine-generator.name=Turbine Generator
block.thoriumdrill.fulldescription = Wiertło zaawansowane. Po umieszczeniu na rudzie uranu, wydobywa uran w wolnym tempie przez czas nieokreślony. block.tungsten-drill.name=Tungsten Drill
block.titaniumdrill.name = wiertło do tytanu block.carbide-drill.name=Carbide Drill
block.titaniumdrill.fulldescription = Wiertło zaawansowane. Po umieszczeniu na rudzie tytanu, wydobywa tytan w wolnym tempie przez czas nieokreślony. block.laser-drill.name=Laser Drill
block.omnidrill.name = omnidril block.water-extractor.name=Water Extractor
block.omnidrill.fulldescription = Wiertło wielofunkcyjne. W szybkim tempie wydobywa każdą rudę. block.cultivator.name=Cultivator
block.coalgenerator.name = generator na węgiel block.dart-ship-factory.name=Dart Ship Factory
block.coalgenerator.fulldescription = Niezbędny generator. Generuje energię z węgla na wszystkie strony. block.delta-mech-factory.name=Delta Mech Factory
block.thermalgenerator.name = generator termiczny block.dronefactory.name=Drone Factory
block.thermalgenerator.fulldescription = Generuje energię z lawy. Generuje energię z węgla na wszystkie strony. block.repairpoint.name=Repair Point
block.combustiongenerator.name = generator spalinowy block.resupplypoint.name=Resupply Point
block.combustiongenerator.fulldescription = Generuje moc z oleju. Generuje energię z węgla na wszystkie strony. block.liquidtank.name=Liquid Tank
block.rtgenerator.name = Generator RTG block.bridgeconduit.name=Bridge Conduit
block.rtgenerator.fulldescription = Generuje niewielkie ilości energii z rozpadu promieniotwórczego uranu. Generuje energię z węgla na wszystkie strony. block.mechanical-pump.name=Mechanical Pump
block.nuclearreactor.name = reaktor jądrowy block.itemsource.name=Item Source
block.nuclearreactor.fulldescription = Zaawansowana wersja generatora RTG i zarazem najlepsze źródło energii. Generuje ją z uranu. Wymaga stałego chłodzenia wodą. Wybucha niemal natychmiast w momencie, gdy dostarczona zostanie niewystarczająca ilość płynu chłodzącego. block.itemvoid.name=Item Void
block.turret.name = działko block.liquidsource.name=Liquid Source
block.turret.fulldescription = Podstawowa, nieduża wieżyczka. Używa kamienia jako amunicji. Ma nieco większy zasięg niż działko podwójne. block.powervoid.name=Power Void
block.doubleturret.name = działko podwójne block.powerinfinite.name=Power Infinite
block.doubleturret.fulldescription = Nieco mocniejsza wersja działka. Używa kamienia jako amunicji. Znacznie więcej obrażeń, ale ma mniejszy zasięg. Wystrzeliwuje dwie kule. block.unloader.name=Unloader
block.machineturret.name = działko szybkostrzelne block.sortedunloader.name=Sorted Unloader
block.machineturret.fulldescription = Standardowa, wszechstronna wieża. Używa żelaza jako amunicji. Strzela dość szybko i ma przyzwoite uszkodzenia. block.vault.name=Vault
block.shotgunturret.name = działko odłamkowe block.wave.name=Wave
block.shotgunturret.fulldescription = Standardowa wieża. Używa żelaza do amunicji. Wystrzeliwuje 7 pocisków. Niższy zasięg, ale większe obrażenia niż działko szybkostrzelne. block.swarmer.name=Swarmer
block.flameturret.name = miotacz ognia block.salvo.name=Salvo
block.flameturret.fulldescription = Zaawansowana wieżyczka bliskiego zasięgu. Używa węgla jako amunicji. Ma bardzo niski zasięg, ale bardzo duże obrażenia. Dobra na krótkie dystanse. Zalecana do stosowania za ścianami. block.ripple.name=Ripple
block.sniperturret.name = karabin block.phase-conveyor.name=Phase Conveyor
block.sniperturret.fulldescription = Zaawansowana wieżyczka dalekiego zasięgu. Używa stali jako amunicji. Ma bardzo duże obrażenia, ale niski współczynnik ognia. Kosztowne w użyciu, ale można je umieścić z dala od linii wroga ze względu na jego zasięg. block.bridge-conveyor.name=Bridge Conveyor
block.mortarturret.name = Miotacz odłamków block.plastanium-compressor.name=Plastanium Compressor
block.mortarturret.fulldescription = Zaawansowana, bardzo dokładne działko rozpryskowe. Używa węgla jako amunicji. Wystrzeliwuje grad eksplodujących pocisków. Przydatny dla dużych hord wrogów. block.pyratite-mixer.name=Pyratite Mixer
block.laserturret.name = działo laserowe block.blast-mixer.name=Blast Mixer
block.laserturret.fulldescription = Zaawansowana wieża z jednym celem. Używa energii. Dobra wieża o średnim zasięgu. Atakuje tylko 1 cel i nigdy nie pudłuje. block.solidifer.name=Solidifer
block.waveturret.name = Działo Tesli block.solar-panel.name=Solar Panel
block.waveturret.fulldescription = Zaawansowana wieża celującai. Używa mocy. Średni zasięg. Nigdy nie trafia. Stosuje niskie obrażenia, ale może trafić wielu wrogów jednocześnie z oświetleniem łańcuszkiem. block.solar-panel-large.name=Large Solar Panel
block.plasmaturret.name = Działo plazmowe block.oil-extractor.name=Oil Extractor
block.plasmaturret.fulldescription = Wysoce zaawansowana wersja miotacza ognia. Używa węgla jako amunicji. Zadaje bardzo duże obrażenia i posiada średni zasięg. block.javelin-ship-factory.name=Javelin Ship factory
block.chainturret.name = Działo uranowe block.drone-factory.name=Drone Factory
block.chainturret.fulldescription = Najlepsze działo szybkiego ognia. Używa uranu jako amunicji. Wystrzeliwuje duże spirale z dużą szybkością. Posiada średni zasięg. block.fabricator-factory.name=Fabricator Factory
block.titancannon.name = Potężne działo uranowe block.repair-point.name=Repair Point
block.titancannon.fulldescription = Najlepsze działo dalekiego zasięgu. Używa uranu jako amunicji. Wystrzeliwuje duże pociski z odłamkami. Ma średnią szybkostrzelność i duży promień rażenia. block.resupply-point.name=Resupply Point
block.playerspawn.name = Spawn gracza block.pulse-conduit.name=Pulse Conduit
block.enemyspawn.name = Spawn wroga block.phase-conduit.name=Phase Conduit
block.liquid-router.name=Liquid Router
block.liquid-tank.name=Liquid Tank
block.liquid-junction.name=Liquid Junction
block.bridge-conduit.name=Bridge Conduit
block.rotary-pump.name=Rotary Pump
block.nuclear-reactor.name=Nuclear Reactor

View File

@@ -3,9 +3,8 @@ text.discord=Junte-se ao Discord do Mindustry! (Lá nós falamos em inglês)
text.gameover=O núcleo foi destruído. text.gameover=O núcleo foi destruído.
text.highscore=[YELLOW]Novo recorde! text.highscore=[YELLOW]Novo recorde!
text.lasted=Você durou até a horda text.lasted=Você durou até a horda
text.level.highscore= Melhor\npontuação: [accent] {0} text.level.highscore=Melhor\npontuação: [accent] {0}
text.level.delete.title=Confirmar exclusão text.level.delete.title=Confirmar exclusão
text.level.delete=Você tem certeza que quer excluir\no mapa "[orange]{0}"?
text.level.select=Seleção de Fase text.level.select=Seleção de Fase
text.level.mode=Modo de Jogo: text.level.mode=Modo de Jogo:
text.savegame=Salvar Jogo text.savegame=Salvar Jogo
@@ -33,7 +32,6 @@ text.loading=[accent]Carregando...
text.wave=[orange]Horda {0} text.wave=[orange]Horda {0}
text.wave.waiting=Horda em {0} text.wave.waiting=Horda em {0}
text.waiting=Aguardando... text.waiting=Aguardando...
text.countdown=Horda em {0}
text.enemies={0} Inimigos restantes text.enemies={0} Inimigos restantes
text.enemies.single={0} Inimigo restante text.enemies.single={0} Inimigo restante
text.loadimage=Carregar\nImagem text.loadimage=Carregar\nImagem
@@ -48,21 +46,12 @@ text.editor.savemap=Salvar\n Mapa
text.editor.loadimage=Carregar\n Imagem text.editor.loadimage=Carregar\n Imagem
text.editor.saveimage=Salvar\nImagem text.editor.saveimage=Salvar\nImagem
text.editor.unsaved=[scarlet]Você tem alterações não salvas![]\nTem certeza que quer sair? text.editor.unsaved=[scarlet]Você tem alterações não salvas![]\nTem certeza que quer sair?
text.editor.brushsize=Tamanho do pincel: {0}
text.editor.noplayerspawn=Este mapa não tem ponto de spawn para o jogador!
text.editor.manyplayerspawns=Mapas não podem ter mais de um\nponto de spawn para jogador!
text.editor.manyenemyspawns=Não pode haver mais de\n{0} pontos de spawn para inimigos!
text.editor.resizemap=Redimensionar Mapa text.editor.resizemap=Redimensionar Mapa
text.editor.resizebig=[scarlet]Aviso!\n[]Mapas maiores que 256 unidades podem ser 'lentos' e instáveis
text.editor.mapname=Nome do Mapa: text.editor.mapname=Nome do Mapa:
text.editor.overwrite=[accent]Aviso!\nIsso sobrescreve um mapa existente. text.editor.overwrite=[accent]Aviso!\nIsso sobrescreve um mapa existente.
text.editor.failoverwrite=[crimson]Não é possível salvar sobre o mapa padrão!
text.editor.selectmap=Selecione uma mapa para carregar: text.editor.selectmap=Selecione uma mapa para carregar:
text.width=Largura: text.width=Largura:
text.height=Altura: text.height=Altura:
text.randomize=Aleatório
text.apply=Aplicar
text.update=Atualizar
text.menu=Menu text.menu=Menu
text.play=Jogar text.play=Jogar
text.load=Carregar text.load=Carregar
@@ -81,58 +70,27 @@ text.upgrades=Melhorias
text.purchased=[LIME]Comprado! text.purchased=[LIME]Comprado!
text.weapons=Arsenal text.weapons=Arsenal
text.paused=Pausado text.paused=Pausado
text.respawn=Reaparecendo em
text.error.title=[crimson]Um erro ocorreu text.error.title=[crimson]Um erro ocorreu
text.error.crashmessage=[SCARLET]Um erro inesperado aconteceu, que pode ter causado o jogo a fechar. []Por favor, informe as exatas circunstâncias em que o erro ocorreu ao desenvolvidor:\n[ORANGE]anukendev@gmail.com[]
text.error.crashtitle=Um erro ocorreu. text.error.crashtitle=Um erro ocorreu.
text.blocks.extrainfo=[accent]Informação extra:
text.blocks.blockinfo=Informação do Bloco text.blocks.blockinfo=Informação do Bloco
text.blocks.powercapacity=Capacidade de Energia text.blocks.powercapacity=Capacidade de Energia
text.blocks.powershot=Energia/tiro text.blocks.powershot=Energia/tiro
text.blocks.powersecond=Energia/segundo
text.blocks.powerdraindamage=Energia/dano
text.blocks.shieldradius=Raio do Escudo
text.blocks.itemspeedsecond=Itens/segundo
text.blocks.range=Alcance
text.blocks.size=Tamanho text.blocks.size=Tamanho
text.blocks.powerliquid=Energia/Líquido
text.blocks.maxliquidsecond=Entrada Máx. Líquido/segundo
text.blocks.liquidcapacity=Capacidade de Líquido text.blocks.liquidcapacity=Capacidade de Líquido
text.blocks.liquidsecond=Líquido/segundo
text.blocks.damageshot=Dano/tiro
text.blocks.ammocapacity=Munição Máxima
text.blocks.ammo=Munição
text.blocks.ammoitem=Munição/item
text.blocks.maxitemssecond=Máximo de itens/segundo text.blocks.maxitemssecond=Máximo de itens/segundo
text.blocks.powerrange=Alcance da Energia text.blocks.powerrange=Alcance da Energia
text.blocks.lasertilerange=Alcance do Laser (em células)
text.blocks.capacity=Capacidade
text.blocks.itemcapacity=Capacidade de Itens text.blocks.itemcapacity=Capacidade de Itens
text.blocks.powergenerationsecond=Geração de Energia/segundo
text.blocks.generationsecondsitem=Tempo de geração/item
text.blocks.input=Entrada
text.blocks.inputliquid=Líquido de entrada text.blocks.inputliquid=Líquido de entrada
text.blocks.inputitem=Item de entrada text.blocks.inputitem=Item de entrada
text.blocks.output=Saída
text.blocks.secondsitem=Segundos/item
text.blocks.maxpowertransfersecond=Transferência máxima de Energia/segundo
text.blocks.explosive=Altamente Explosivo! text.blocks.explosive=Altamente Explosivo!
text.blocks.repairssecond=Reparo/segundo
text.blocks.health=Saúde text.blocks.health=Saúde
text.blocks.inaccuracy=Imprecisão text.blocks.inaccuracy=Imprecisão
text.blocks.shots=Tiros text.blocks.shots=Tiros
text.blocks.shotssecond=Taxa de tiro
text.placemode=Modo construção
text.breakmode=Modo remoção
text.health=Saúde
setting.difficulty.easy=Fácil setting.difficulty.easy=Fácil
setting.difficulty.normal=Normal setting.difficulty.normal=Normal
setting.difficulty.hard=Difícil setting.difficulty.hard=Difícil
setting.difficulty.name=Dificuldade setting.difficulty.name=Dificuldade
setting.screenshake.name=Balanço da Tela setting.screenshake.name=Balanço da Tela
#Tremor da tela?
setting.smoothcam.name=Câmera suave
#Suavizar Câmera?
setting.indicators.name=Indicadores de Inimigos setting.indicators.name=Indicadores de Inimigos
setting.effects.name=Particulas setting.effects.name=Particulas
setting.sensitivity.name=Sensibilidade do Controle setting.sensitivity.name=Sensibilidade do Controle
@@ -140,7 +98,6 @@ setting.fps.name=Mostrar FPS
setting.vsync.name=VSync setting.vsync.name=VSync
setting.lasers.name=Mostrar lasers setting.lasers.name=Mostrar lasers
setting.healthbars.name=Mostrar barra de saúde de entidades setting.healthbars.name=Mostrar barra de saúde de entidades
setting.pixelate.name=Pixelar Tela
setting.musicvol.name=Volume da Música setting.musicvol.name=Volume da Música
setting.mutemusic.name=Desligar Musica setting.mutemusic.name=Desligar Musica
setting.sfxvol.name=Volume de Efeitos setting.sfxvol.name=Volume de Efeitos
@@ -158,54 +115,10 @@ map.grassland.name=grassland
map.tundra.name=tundra map.tundra.name=tundra
map.spiral.name=spiral map.spiral.name=spiral
map.tutorial.name=tutorial map.tutorial.name=tutorial
tutorial.intro.text=[yellow]Bem-vindo ao tutorial.[] Para começar aperte 'próximo'.
tutorial.moveDesktop.text=Para mover, use as teclas [orange][[WASD][]. Segure [orange]shift[] para mover rápido. Segure [orange]CTRL[] enquanto usa a [orange]roda do mouse[] para aumentar ou diminuir o zoom.
tutorial.shootInternal.text=Use o mouse para mirar, segure [orange]botão esquerdo do mouse[] para atirar. Tente praticar no [yellow]alvo[].
tutorial.moveAndroid.text=Para arrastar a visão, passe um dedo pela tela. Pince com os dedos para aumentar ou diminuir o zoom.
tutorial.placeSelect.text=Tente selecionar uma [yellow]esteira[] do menu de blocos no canto inferior direito.
tutorial.placeConveyorDesktop.text=Use a [orange][[roda do mouse][] para girar a esteira até que aponte [orange]para frente[], então coloque-a no [yellow]local marcado[] usando o [orange][[botão esquerdo do mouse][].
tutorial.placeConveyorAndroid.text=Use o [orange][[botão de girar][] para girar a esteira para que aponte [orange]para frente[], arraste-a para a posição e então coloque-a na [yellow]posição marcada[] usando o [orange][[botão de confirmação][].
tutorial.placeConveyorAndroidInfo.text=Você também pode apertar no ícone com uma cruz no canto inferior esquerdo para alterar para o [orange][[modo de toque][], e colocar blocos apertando na tela. No modo de toque, blocos podem ser girados com a seta no canto inferior esquerdo. Aperte [yellow]próximo[] para tentar.
tutorial.placeDrill.text=Agora selecione e coloque uma [yellow]broca de pedra[] no local marcado.
tutorial.blockInfo.text=Se quiser saber mais sobre os blocos, você pode apertar o [orange]símbolo de interrogação[] no canto superior direito para ler mais.
tutorial.deselectDesktop.text=Você pode cancelar a seleção de um bloco usando o [orange][botão direito do mouse[].
tutorial.deselectAndroid.text=ocê pode cancelar a seleção de um bloco apertando o botão [orange]X[].
tutorial.drillPlaced.text=A broca produzirá [yellow]pedra[], direcionando o produzido para a esteira a qual moverá a pedra para o [yellow]núcleo[].
tutorial.drillInfo.text=Minérios diferentes precisam de diferentes brocas. Pedra precisam de brocas de pedra, Ferro de brocas de ferro, etc.
tutorial.drillPlaced2.text=Itens movidos para o núcleo são colocados em seu [yellow]inventário[], no canto superior esquerdo. Colocar blocos gasta os recursos do inventário.
tutorial.moreDrills.text=Você pode conectar várias brocas e esteiras, veja.
tutorial.deleteBlock.text=Você pode excluir blocos clickando com o [orange]botão direito do mouse[] no bloco que quiser destruir. Tente excluir esta esteira.
tutorial.deleteBlockAndroid.text=Você pode excluir blocos [orange]apertando na cruz[] no [orange]menu modo de quebra[] no canto inferior esquerdo e então apertando no bloco desejado. Tente excluir esta esteira.
tutorial.placeTurret.text=Agora, selecione e construa uma [yellow]torre[] no [yellow]local marcado[].
tutorial.placedTurretAmmo.text=Esta torre aceitará [yellow]munição[] da esteira. Você pode ver quanta munição elas tem passando o mouse sobre elas e verificando a [green]barra verde[].
tutorial.turretExplanation.text=As torres irão atirar no inimigo mais próximo que estiver ao alcance, contanto que tenham munição suficiente.
tutorial.waves.text=A cada [yellow]60[] segundos, uma horda de [coral]inimigos[] irá aparecer em locais específicos e tentará destruir o núcleo.
tutorial.coreDestruction.text=Seu objetivo é [yellow]defender o núcleo[]. Se o núcleo for destruído, vecê [coral]perde o jogo[].
tutorial.pausingDesktop.text=Se você precisar parar por alguns instantes, aperte o [orange]botão de pausa[] no canto superior esquerdo ou [orange]barra de espaço[] para pausar o jogo. Você pode colocar blocos enquanto o jogo esta pausado, porém não poderá se mover ou atirar.
tutorial.pausingAndroid.text=Se você precisar parar por alguns instantes, aperte o [orange]botão de pausa[] no canto superior esquerdo ou [orange]barra de espaço[] para pausar o jogo. Você pode colocar blocos enquanto o jogo esta pausado.
tutorial.purchaseWeapons.text=Você pode comprar novas [yellow]armas[] para seu mecha, basta abrir o menu de melhorias no canto inferior esquerdo.
tutorial.switchWeapons.text=Alterne entre suas armas clickando em seu ícone ou usando as teclas numéricas [orange][[1-9][].
tutorial.spawnWave.text=Uma horda esta vindo. Destrúa-os.
tutorial.pumpDesc.text=Em hordas mais avançadas, você talvez precise de [yellow]bombas[] para distribuir líquidos para geradores ou extratores.
tutorial.pumpPlace.text=Bombas trabalham de forma semelhante às brocas, porém elas produzem líquidos ao envés de minérios. Tente colocar uma bomba na [yellow]célula de petróleo designada[].
tutorial.conduitUse.text=Agora coloque um [orange]cano[] levando para longe da bomba.
tutorial.conduitUse2.text=E mais alguns...
tutorial.conduitUse3.text=E mais alguns...
tutorial.generator.text=Agora coloque um [orange]gerador a combustão[] no final do cano.
tutorial.generatorExplain.text=Este gerador irá produzir [yellow]energia[] do petróleo.
tutorial.lasers.text=Energia é distribuida usando [yellow]lasers[]. Gire e coloque um aqui.
tutorial.laserExplain.text=O gerador irá mover energia para o bloco do laser. Um feixe [yellow]opaco[] significa que a energia está sendo transmitida, e um feixe [yellow]transparente[] significa que não.
tutorial.laserMore.text=Você pode verificar quanta energia um bloco tem ao passar o mouse sobre eles e verificando a [yellow]barra amarela[] no topo.
tutorial.healingTurret.text=Este laser pode ser usado para energizar uma [lime]torre de reparo[]. Coloque uma aqui.
tutorial.healingTurretExplain.text=Enquanto tiver energia, esta torre irá [lime]reparar blocos próximos.[] Quando jogar, tenha certeza de construir uma dessas próximas do núcleo o mais rápido possível!
tutorial.smeltery.text=Muitos blocos precisam de [orange]aço[] para serem construídos, o que requer uma [orange]fundidora[] para ser feito. Coloque uma aqui.
tutorial.smelterySetup.text=Esta fundidora irá produzir [orange]aço[] quando receber carvão e ferro.
tutorial.end.text=E este é o fim do Tutorial! Boa Sorte!
keybind.move_x.name=move_x keybind.move_x.name=move_x
keybind.move_y.name=move_y keybind.move_y.name=move_y
keybind.select.name=selecionar keybind.select.name=selecionar
keybind.break.name=quebrar keybind.break.name=quebrar
keybind.shootInternal.name=atirar
keybind.zoom_hold.name=segurar_zoom keybind.zoom_hold.name=segurar_zoom
keybind.zoom.name=zoom keybind.zoom.name=zoom
keybind.menu.name=menu keybind.menu.name=menu
@@ -213,259 +126,369 @@ keybind.pause.name=pausar
keybind.dash.name=Correr keybind.dash.name=Correr
keybind.rotate_alt.name=girar_alt* keybind.rotate_alt.name=girar_alt*
keybind.rotate.name=girar keybind.rotate.name=girar
keybind.weapon_1.name=Arma 1
keybind.weapon_2.name=Arma 2
keybind.weapon_3.name=Arma 3
keybind.weapon_4.name=Arma 4
keybind.weapon_5.name=Arma 5
keybind.weapon_6.name=Arma 6
mode.waves.name=hordas mode.waves.name=hordas
mode.sandbox.name=sandbox mode.sandbox.name=sandbox
#CAIXINHA DE AREIA
mode.freebuild.name=construção \nlivre mode.freebuild.name=construção \nlivre
weapon.blaster.name=Blaster
weapon.blaster.description=Atira um projétil lento e fraco.
weapon.triblaster.name=Blaster Triplo
weapon.triblaster.description=Atira 3 balas que se espalham.
weapon.multigun.name=Escopeta
weapon.multigun.description=Atira balas com baixa precisão e uma\n alta taxa de disparo.
weapon.flamer.name=Lança-Chamas
weapon.railgun.name=Rifle Sniper
weapon.flamer.description=É um lança-chamas. O que mais ele faria?
weapon.railgun.description=Atira um projétil de longo alcance.
weapon.mortar.name=Morteiro
weapon.mortar.description=Atira um projétil lento, porém devastador.
item.stone.name=Pedra item.stone.name=Pedra
item.iron.name=Ferro
item.coal.name=Carvão item.coal.name=Carvão
item.steel.name=Aço
item.titanium.name=Titânio item.titanium.name=Titânio
item.dirium.name=Dírio
item.thorium.name=Urânio item.thorium.name=Urânio
liquid.water.name=Água liquid.water.name=Água
liquid.plasma.name=Plasma
liquid.lava.name=Lava liquid.lava.name=Lava
liquid.oil.name=Petróleo liquid.oil.name=Petróleo
block.air.name=Ar
block.blockpart.name=blockpart
#que?
block.deepwater.name=Água Profunda
block.water.name=Água
block.lava.name=Lava
block.oil.name=Petróleo
block.stone.name=Pedra
block.blackstone.name=Pedra Escura
block.iron.name=Ferro
block.coal.name=Carvão
block.titanium.name=Titânio
block.thorium.name=Urânio
block.dirt.name=Terra
block.sand.name=Areia
block.ice.name=Gelo
block.snow.name=Neve
block.grass.name=Grama
block.sandblock.name=Bloco de Areia
block.snowblock.name=Bloco de Neve
block.stoneblock.name=Rocha
block.blackstoneblock.name=Rocha Escura
block.grassblock.name=Bloco de Grama
block.mossblock.name=Musgo
block.shrub.name=Arbusto
block.rock.name=Rocha
block.icerock.name=Rocha de Gelo
block.blackrock.name=Rocha Escura
block.dirtblock.name=Bloco de Terra
block.stonewall.name=Parede de Pedra
block.stonewall.fulldescription=Um bloco defensivo barato. Útil para proteger o núcleo e torres nas primeiras hordas.
block.ironwall.name=Parede de Ferro
block.ironwall.fulldescription=Um bloco defensivo básico. Fornece proteção contra inimigos.
block.steelwall.name=Parede de aço
block.steelwall.fulldescription=Um bloco defensivo padrão. Fornece proteção contra inimigos.
block.titaniumwall.name=Parede de Titânio
block.titaniumwall.fulldescription=Um bloco defensivo forte. Fornece proteção contra inimigos.
block.duriumwall.name=Parede de Dírio
block.duriumwall.fulldescription=Um bloco defensivo muito forte. Fornece proteção contra inimigos.
block.compositewall.name=Parede de Composto
block.compositewall.fulldescription= Um bloco defensivo extremamente forte. Fornece a melhor proteção contra inimigos.
block.steelwall-large.name=Parede Grande de Aço
block.steelwall-large.fulldescription=Um bloco defensivo padrão. Ocupa multiplas células.
block.titaniumwall-large.name=Parede Grande de Titânio
block.titaniumwall-large.fulldescription=Um bloco defensivo forte. Ocupa multiplas células.
block.duriumwall-large.name=Parede Grande de Dírio
block.duriumwall-large.fulldescription=Um bloco defensivo muito forte. Ocupa multiplas células.
block.titaniumshieldwall.name=Parede com Escudo
block.titaniumshieldwall.fulldescription=Um bloco defensivo forte, com um escudo de energia imbutido. Usa energia passivamente e para absorver projéteis inimigos. É recomendado usar distribuidores de energia para abastecer este bloco.
#A strong defensive block, with an extra built-in shield. Requires power. Uses energy to absorb enemy bullets. It is recommended to use power boosters to provide energy to this block.
block.repairturret.name=Torre de Reparo
block.repairturret.fulldescription=Lentamente repara blocos danificados dentro do seu alcance. Consome um pouco de energia.
#Repairs nearby damaged blocks in range at a slow rate. Uses small amounts of power.
block.repairturret.description=[powerinfo]Consome Energia.[white]\nRepara blocos próximos.
block.megarepairturret.name=Torre de Reparo II
block.megarepairturret.fulldescription=Repara blocos danificados dentro do seu alcance. Consome um pouco de energia.
block.megarepairturret.description=[powerinfo]Consome Energia.[white]\nRepara blocos próximos.
block.shieldgenerator.name=Gerador de Escudo
block.shieldgenerator.fulldescription= Um bloco defensivo avançado. Protege todos os blocos em um raio. Lentamente usa energia quando parado, mas rapidamente drena em contato com projéteis.
#An advanced defensive block. Shields all the blocks in a radius from attack. Uses power at a slow rate when idle, but drains energy quickly on bullet contact.
block.door.name=Porta block.door.name=Porta
block.door.fulldescription=Um bloco que pode ser aberto e fechado ao tocar nele.
block.door.description=Abre e Fecha.\n[interact]Toque para alternar o estado.
block.door-large.name=Porta Grande block.door-large.name=Porta Grande
block.door-large.fulldescription=Um bloco que pode ser aberto e fechado ao tocar nele.
block.door-large.description=Abre e Fecha.\n[interact]Toque para alternar o estado.
block.conduit.name=Cano block.conduit.name=Cano
block.conduit.fulldescription=Bloco de transporte de líquido básico. Funciona como uma esteira, mas com líquidos. Pode ser usado como uma ponte para inimigos e jogadores.
#Basic liquid transport block. Works like a conveyor, but with liquids. Best used with pumps or other conduits. Can be used as a bridge over liquids for enemies and players.
block.pulseconduit.name=Cano de impulso block.pulseconduit.name=Cano de impulso
block.pulseconduit.fulldescription=Bloco de transporte de líquido avançado. Transporta líquidos mais rapidamente e armazena mais que canos normais.
#Advanced liquid transport block. Transports liquids faster and stores more than standard conduits.
block.liquidrouter.name=Roteador de líquido block.liquidrouter.name=Roteador de líquido
block.liquidrouter.fulldescription=Aceita líquido de uma direção e o redireciona para as outras 3 direções. Útil para dividir o líquido entre vários canos.
#Works similarly to a router. Accepts liquid input from one side and outputs it to the other sides. Useful for splitting liquid from a single conduit into multiple other conduits.
block.liquidrouter.description=Divide líquidos em 3 direções.
block.conveyor.name=Esteira block.conveyor.name=Esteira
block.conveyor.fulldescription=Bloco de transporte básico. Movimenta itens para frente e automaticamente os deposita em torres ou blocos de fabricação. Pode ser girado. Pode ser usado como uma ponte para inimigos e jogadores.
#Basic item transport block. Moves items forward and automatically deposits them into turrets or crafters. Rotatable. Can be used as a bridge over liquids for enemies and players.
block.steelconveyor.name=Esteira de aço
block.steelconveyor.fulldescription=Bloco de transporte avançado. Movimenta itens mais rapidamente que esteiras normais.
#Advanced item transport block. Moves items faster than standard conveyors.
block.poweredconveyor.name=Esteira de Impulso
block.poweredconveyor.fulldescription=O Bloco supremo de transporte. Movimenta itens mais rapidamente que esteiras de aço.
#The ultimate item transport block. Moves items faster than carbide conveyors.
block.router.name=Roteador block.router.name=Roteador
block.router.fulldescription=Aceita itens de uma direção e os redireciona para as outras 3 direções. Pode guardar uma certa quantidade de itens. Útil para dividir materiais entre várias torres.
block.router.description=Divide materiais em 3 direções. block.router.description=Divide materiais em 3 direções.
block.junction.name=Junção block.junction.name=Junção
block.junction.fulldescription=Funciona como uma ponte para 2 linhas de esteiras que se cruzam. Útil em situações onde duas esteiras carregam diferentes materiais para diferentes locais.
block.junction.description=Funciona como uma junção para as esteiras.
block.conveyortunnel.name=Túnel de esteira
block.conveyortunnel.fulldescription=Transporta itens por baixo de blocos. Para usar coloque um túnel apontado para o bloco que deseja passar por baixo, e outro apontado para o primeiro túnel.
block.conveyortunnel.description=Transporta intes por baixo de blocos.
block.liquidjunction.name=Junção de líquido block.liquidjunction.name=Junção de líquido
block.liquidjunction.fulldescription=Funciona como uma ponte para 2 canos que se cruzam. Útil em situações onde 2 canos diferentes carregam diferentes líquidos para diferentes locais.
block.liquiditemjunction.name=liquid-item junction
block.liquiditemjunction.fulldescription=Acts as a bridge for crossing conduits and conveyors.
block.liquiditemjunction.description=Serves as a junction for items and liquids.
block.powerbooster.name=Distribuidor de energia
block.powerbooster.fulldescription=Distribui energia para todos os blocos dentro de seu raio.
block.powerbooster.description=Distribui energia em um raio.
block.powerlaser.name=Laser
#Laser de energia?
block.powerlaser.fulldescription=Cria um laser que transmite energia para o bloco à sua frente. Melhor usado com geradores ou outros lasers. Não gera energia.
block.powerlaser.description=Transmite energia.
block.powerlaserrouter.name=laser duplo
block.powerlaserrouter.fulldescription=Divide a entrada de energia em 3 lasers. Útil em situações onde é necessário conectar muitos blocos a partir de um gerador.
block.powerlaserrouter.description=Divide a entrada de energia em 3 lasers.
block.powerlasercorner.name=laser triplo
#*Essa nomeação ficou escrota
block.powerlasercorner.fulldescription=Laser que distribui energia para duas direções ao mesmo tempo. Útil em situações onde é necessário conectar muitos blocos a partir de um gerador.
block.powerlasercorner.description=Divide a entrada de energia em 2 lasers.
block.teleporter.name=Teleportador
block.teleporter.fulldescription=Bloco avançado de transporte de itens. Teleportadores transferem itens para outros teleportadores da mesma cor. Não faz nada se não houverem outros da mesma cor. Se houverem múltiplos da mesma cor, um aleatório será selecionado. Toque nas flechas para mudar de cor.
block.teleporter.description=[interact]Tap block to config[]
block.sorter.name=Ordenador block.sorter.name=Ordenador
block.sorter.fulldescription=Separa itens pelo tipo de material. O material a ser aceito é indicado pela cor do bloco. Todos os itens que correspondem ao material a ser separado são direcionados para frente, todo o resto é direcionado para os lados.
block.sorter.description=[interact]Aperte no bloco para configurar[] block.sorter.description=[interact]Aperte no bloco para configurar[]
block.core.name=núcleo
block.pump.name=bomba
block.pump.fulldescription=Bombeia líquidos de um bloco, geralmente água, lava ou petróleo. Os líquidos são bombeados para canos próximos.
block.pump.description=Bombeia líquidos para canos próximos.
block.fluxpump.name=Bomba de fluxo
block.fluxpump.fulldescription=Uma versão avançada da bomba comum. Guarda mais líquido e bombeia mais rápido.
block.fluxpump.description=Bombeia líquidos para canos próximos.
block.smelter.name=Fornalha block.smelter.name=Fornalha
block.smelter.fulldescription=O bloco de produção essencial. Quando recebe 1 carvão e\n1 ferro produz 1 aço text.credits=Credits
block.smelter.description=Converte carvão + ferro em aço. text.link.discord.description=the official Mindustry discord chatroom
block.crucible.name=Usina de fundição text.link.github.description=Game source code
block.crucible.fulldescription=Um bloco de produção avançado. Quando recebe 1 titânio e 1 aço produz 1 dírio. text.link.dev-builds.description=Unstable development builds
block.crucible.description=Converte aço + titânio em dírio. text.link.trello.description=Official trello board for planned features
block.coalpurifier.name=Extrator de carvão text.link.itch.io.description=itch.io page with PC downloads and web version
block.coalpurifier.fulldescription=Um bloco extrator básico. Produz carvão quando fornecido com grandes quantidades de água e pedra. text.link.google-play.description=Google Play store listing
block.coalpurifier.description=Converte pedra + água em carvão. text.link.wiki.description=official Mindustry wiki
block.titaniumpurifier.name=Extrator de titânio text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
block.titaniumpurifier.fulldescription=Um bloco extrator padrão. Produz titânio quando fornecido com grandes quantidas de água e ferro. text.editor.web=The web version does not support the editor!\nDownload the game to use it.
block.titaniumpurifier.description=Converte água e ferro em titânio. text.web.unsupported=The web version does not support this feature! Download the game to use it.
block.oilrefinery.name=Refinaria de Petróleo text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
block.oilrefinery.fulldescription=Refina grande quantidades de petróleo para produzir carvão. Útil para abastecer torres que utilizam carvão quando jazidas de carvão são escassas. text.host.web=The web version does not support hosting games! Download the game to use this feature.
block.oilrefinery.description=Converte petróleo em carvão. text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
block.stoneformer.name=Formador de Pedra text.construction.title=Block Construction Guide
block.stoneformer.fulldescription=Solidifica lava para formar pedra. Útil para produzir grandes quantidades de pedra para extratores de carvão. text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
block.stoneformer.description=Converte lava em pedra. text.deconstruction.title=Block Deconstruction Guide
block.lavasmelter.name=Fornalha à Lava text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
block.lavasmelter.fulldescription=Usa lava para converter ferro em aço. Uma alternativa para a fundidora. Útil em situações onde não há carvão por perto. text.showagain=Don't show again next session
block.lavasmelter.description=Converte ferro + lava em aço. text.unlocks=Unlocks
block.stonedrill.name=Broca de pedra text.joingame=Join Game
block.stonedrill.fulldescription=A broca essencial. Quando colocada em uma jazida de pedra gera pedra indefinidamente. text.addplayers=Add/Remove Players
block.stonedrill.description=Gera 1 pedra a cada 4 segundos. text.newgame=New Game
#Mines 1 stone every 4 seconds. text.maps=Maps
block.irondrill.name=Broca de Ferro text.maps.none=[LIGHT_GRAY]No maps found!
block.irondrill.fulldescription=Uma broca básica. Quando colocada sobre uma jazida de ferro, lentamente gera ferro. text.about.button=About
#A basic drill. When placed on tungsten ore tiles, outputs tungsten at a slow pace indefinitely. text.name=Name:
block.irondrill.description=Gera 1 ferro a cada 5 segundos. text.unlocked=New Block Unlocked!
block.coaldrill.name=Broca de Carvão text.unlocked.plural=New Blocks Unlocked!
block.coaldrill.fulldescription=Uma broca básica. Quando colocada sobre uma jazida de carvão, lentamente gera carvão. text.players={0} players online
block.coaldrill.description=Gera 1 carvão a cada 5 segundos. text.players.single={0} player online
block.thoriumdrill.name=Broca de Urânio text.server.mismatch=Packet error: possible client/server version mismatch.\nMake sure you and the host have the\nlatest version of Mindustry!
block.thoriumdrill.fulldescription=Uma broca avançada. Quando colocada sobre uma jazida de urânio, lentamente gera urânio. text.server.closing=[accent]Closing server...
block.thoriumdrill.description=Gera 1 Urânio a cada 7 segundos. text.server.kicked.kick=You have been kicked from the server!
block.titaniumdrill.name=Broca de Titânio text.server.kicked.fastShoot=You are shooting too quickly.
block.titaniumdrill.fulldescription=Uma broca avançada. Quando colocada sobre uma jazida de titânio, lentamente gera titânio. text.server.kicked.invalidPassword=Invalid password!
block.titaniumdrill.description=Gera 1 Titânio a cada 5 segundos. text.server.kicked.clientOutdated=Outdated client! Update your game!
block.omnidrill.name=Omnibroca text.server.kicked.serverOutdated=Outdated server! Ask the host to update!
block.omnidrill.fulldescription=A broca suprema. Rapidamente extrai qualquer minério em que é colocada. text.server.kicked.banned=You are banned on this server.
#The ultimate drill. Will mine any ore it is placed on at a rapid pace. text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
block.omnidrill.description=Gera 1 de qualquer recurso a cada 3 segundos. text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
block.coalgenerator.name=Gerador à Carvão text.server.kicked.nameEmpty=Your name must contain at least one character or number.
#Crase ou não? text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
block.coalgenerator.fulldescription=O gerador essencial. Gera energia a partir de carvão. Distribui energia em forma de laser para os 4 lados. text.server.kicked.customClient=This server does not support custom builds. Download an official version.
block.coalgenerator.description=Gera energia a partir de carvão. text.server.connected={0} has joined.
block.thermalgenerator.name=Gerador Térmico text.server.disconnected={0} has disconnected.
block.thermalgenerator.fulldescription=Gera energia a partir de lava. Distribui energia em forma de laser para os 4 lados. text.nohost=Can't host server on a custom map!
block.thermalgenerator.description=Gera energia a partir de lava. text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
block.combustiongenerator.name=Gerador à Combustão text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
block.combustiongenerator.fulldescription=Gera energia a partir de petróleo. Distribui energia em forma de laser para os 4 lados. text.hostserver=Host Server
block.combustiongenerator.description=Gera energia a partir de petróleo. text.host=Host
block.rtgenerator.name=Gerador RTG text.hosting=[accent]Opening server...
block.rtgenerator.fulldescription=Gera pouca quantidade de energia a partir do decaimento radioativo do urânio. Distribui energia em forma de laser para os 4 lados. text.hosts.refresh=Refresh
block.rtgenerator.description=Gera energia a partir de Urânio. text.hosts.discovering=Discovering LAN games
block.nuclearreactor.name=Reator Nuclear text.server.refreshing=Refreshing server
block.nuclearreactor.fulldescription=Uma versão avançada do gerador RTG. Gera energia a partir de Urânio. Requer constante resfriamento à água. Altamente volátil; explodirá violentamente se não for suprido com quantiddades suficientes de água. text.hosts.none=[lightgray]No LAN games found!
block.turret.name=Torre Comum text.host.invalid=[scarlet]Can't connect to host.
block.turret.fulldescription=Uma torre básica e barata. Usa pedra como munição. Tem alcance um pouco maior que a torre dupla. text.server.friendlyfire=Friendly Fire
block.turret.description=[turretinfo]Munição: pedra text.trace=Trace Player
block.doubleturret.name=Torre Dupla text.trace.playername=Player name: [accent]{0}
block.doubleturret.fulldescription=Uma versão um pouco mais poderosa do que a torre comum. Usa pedra como munição. Causa um dano maior, porém tem menor alcance. Atira dois projéteis. text.trace.ip=IP: [accent]{0}
block.doubleturret.description=[turretinfo]Munição: pedra text.trace.id=Unique ID: [accent]{0}
block.machineturret.name=Torre Automática text.trace.android=Android Client: [accent]{0}
block.machineturret.fulldescription=Uma torre padrão completa. Usa ferro como munição. Tem alta taxa de disparo e dano decente. text.trace.modclient=Custom Client: [accent]{0}
block.machineturret.description=[turretinfo]Munição: ferro text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
block.shotgunturret.name=Torre Splitter text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
#Splitter turret text.trace.lastblockbroken=Last block broken: [accent]{0}
block.shotgunturret.fulldescription=Uma torre padrão. Usa ferro como munição. Atira 7 balas em forma de cone. Pouco alcance, porém maior dano do que a Torre Dupla. text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
block.shotgunturret.description=[turretinfo]Munição: ferro text.trace.lastblockplaced=Last block placed: [accent]{0}
block.flameturret.name=Torre lança-\nchamas text.invalidid=Invalid client ID! Submit a bug report.
block.flameturret.fulldescription=Torre avançada de baixo alcance. Usa carvão. Pouco alcance mas alto dano. Boa para trechos estreitos. Recomenda-se usá-la atŕas de paredes. text.server.bans=Bans
block.flameturret.description=[turretinfo]Munição: carvão text.server.bans.none=No banned players found!
block.sniperturret.name=Torre Sniper text.server.admins=Admins
#Torre Railgun? text.server.admins.none=No admins found!
block.sniperturret.fulldescription=Torre avançada de longo alcance. Usa aço como munição. Dano altíssimo, porém baixa taxa de disparo. Cara para usar, porém pode ser colocada longe das linhas inimigas dado seu alcance. text.server.add=Add Server
block.sniperturret.description=[turretinfo]Munição: aço text.server.delete=Are you sure you want to delete this server?
block.mortarturret.name=Torre Flak text.server.hostname=Host: {0}
block.mortarturret.fulldescription=Torre avançada de dano em área. Usa carvão. Taxa de disparo e balas lentas, mas alto dano em alvo único ou distribuído. text.server.edit=Edit Server
block.mortarturret.description=[turretinfo]Munição: carvão text.server.outdated=[crimson]Outdated Server![]
block.laserturret.name=Torre laser text.server.outdated.client=[crimson]Outdated Client![]
block.laserturret.fulldescription=Torre de alvo único avançada. Usa energia. Boa torre de alcance médio e uso geral. Alvo único apenas. Nunca erra. text.server.version=[lightgray]Version: {0}
block.laserturret.description=[turretinfo]Usa Energia text.server.custombuild=[yellow]Custom Build
block.waveturret.name=Torre Tesla text.confirmban=Are you sure you want to ban this player?
block.waveturret.fulldescription=Torre de múltiplos alvos avançada. Usa Energia. Alcance médio. Nunca erra. Dano médio-baixo, porém pode acertar vários inimigos simultaneamente com raios conectados. text.confirmunban=Are you sure you want to unban this player?
block.waveturret.description=[turretinfo]Usa Energia text.confirmadmin=Are you sure you want to make this player an admin?
block.plasmaturret.name=Torre de Plasma text.confirmunadmin=Are you sure you want to remove admin status from this player?
block.plasmaturret.fulldescription=Versão altamente avançada da Torre lança-chamas. Usa carvão. Dano altíssimo e alcance médio-baixo. text.joingame.title=Join Game
block.plasmaturret.description=[turretinfo]Munição: carvão text.joingame.ip=IP:
block.chainturret.name=Canhão automático text.disconnect=Disconnected.
block.chainturret.fulldescription=A torre de tiro rápido mais avançada. Usa Urânio como munição. Atira grandes projéteis rapidamente. Alcance médio. Ocupa várias células. Extremamente resistente. text.disconnect.data=Failed to load world data!
block.chainturret.description=[turretinfo]Munição: Urânio text.connecting=[accent]Connecting...
block.titancannon.name=Canhão Titã text.connecting.data=[accent]Loading world data...
block.titancannon.fulldescription=A torre de longo alcance mais avançada. Usa Urânio como munição. Atira várias balas de dano em área à uma taxa de disparo média. Alto alcance. Ocupa várias células. Extremamente resistente. text.connectfail=[crimson]Failed to connect to server: [orange]{0}
block.titancannon.description=[turretinfo]Munição: Urânio text.server.port=Port:
block.playerspawn.name=playerspawn text.server.addressinuse=Address already in use!
block.enemyspawn.name=enemyspawn text.server.invalidport=Invalid port number!
text.server.error=[crimson]Error hosting server: [orange]{0}
text.save.new=New Save
text.save.none=No saves found!
text.save.delete.confirm=Are you sure you want to delete this save?
text.save.delete=Delete
text.save.export=Export Save
text.save.import.invalid=[orange]This save is invalid!
text.save.import.fail=[crimson]Failed to import save: [orange]{0}
text.save.export.fail=[crimson]Failed to export save: [orange]{0}
text.save.import=Import Save
text.save.newslot=Save name:
text.save.rename=Rename
text.save.rename.text=New name:
text.on=On
text.off=Off
text.save.autosave=Autosave: {0}
text.save.map=Map: {0}
text.save.difficulty=Difficulty: {0}
text.copylink=Copy Link
text.changelog.title=Changelog
text.changelog.loading=Getting changelog...
text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
text.changelog.current=[yellow][[Current version]
text.changelog.latest=[orange][[Latest version]
text.saving=[accent]Saving...
text.unknown=Unknown
text.custom=Custom
text.builtin=Built-In
text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
text.map.random=[accent]Random Map
text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
text.editor.slope=\\
text.editor.openin=Open In Editor
text.editor.oregen=Ore Generation
text.editor.oregen.info=Ore Generation:
text.editor.mapinfo=Map Info
text.editor.author=Author:
text.editor.description=Description:
text.editor.name=Name:
text.editor.teams=Teams
text.editor.elevation=Elevation
text.editor.saved=Saved!
text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
text.editor.import=Import...
text.editor.importmap=Import Map
text.editor.importmap.description=Import an already existing map
text.editor.importfile=Import File
text.editor.importfile.description=Import an external map file
text.editor.importimage=Import Terrain Image
text.editor.importimage.description=Import an external map image file
text.editor.export=Export...
text.editor.exportfile=Export File
text.editor.exportfile.description=Export a map file
text.editor.exportimage=Export Terrain Image
text.editor.exportimage.description=Export a map image file
text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
text.fps=FPS: {0}
text.tps=TPS: {0}
text.ping=Ping: {0}ms
text.language.restart=Please restart your game for the language settings to take effect.
text.settings.language=Language
text.settings.rebind=Rebind
text.yes=Yes
text.no=No
text.info.title=[accent]Info
text.blocks.targetsair=Targets Air
text.blocks.itemspeed=Units Moved
text.blocks.shootrange=Range
text.blocks.poweruse=Power Use
text.blocks.inputitemcapacity=Input Item Capacity
text.blocks.outputitemcapacity=Input Item Capacity
text.blocks.maxpowergeneration=Max Power Generation
text.blocks.powertransferspeed=Power Transfer
text.blocks.craftspeed=Production Speed
text.blocks.inputliquidaux=Aux Liquid
text.blocks.inputitems=Input Items
text.blocks.outputitem=Output Item
text.blocks.drilltier=Drillables
text.blocks.drillspeed=Base Drill Speed
text.blocks.liquidoutput=Liquid Output
text.blocks.liquiduse=Liquid Use
text.blocks.coolant=Coolant
text.blocks.coolantuse=Coolant Use
text.blocks.inputliquidfuel=Fuel Liquid
text.blocks.liquidfueluse=Liquid Fuel Use
text.blocks.reload=Reload
text.blocks.inputfuel=Fuel
text.blocks.fuelburntime=Fuel Burn Time
text.blocks.inputcapacity=Input capacity
text.blocks.outputcapacity=Output capacity
text.unit.blocks=blocks
text.unit.powersecond=power units/second
text.unit.liquidsecond=liquid units/second
text.unit.itemssecond=items/second
text.unit.pixelssecond=pixels/second
text.unit.liquidunits=liquid units
text.unit.powerunits=power units
text.unit.degrees=degrees
text.unit.seconds=seconds
text.unit.none=
text.unit.items=items
text.category.general=General
text.category.power=Power
text.category.liquids=Liquids
text.category.items=Items
text.category.crafting=Crafting
text.category.shooting=Shooting
setting.difficulty.insane=insane
setting.difficulty.purge=purge
setting.saveinterval.name=Autosave Interval
setting.seconds={0} Seconds
setting.fullscreen.name=Fullscreen
setting.multithread.name=Multithreading
setting.minimap.name=Show Minimap
text.keybind.title=Rebind Keys
keybind.shoot.name=shoot
keybind.block_info.name=block_info
keybind.chat.name=chat
keybind.player_list.name=player_list
keybind.console.name=console
mode.text.help.title=Description of modes
mode.waves.description=the normal mode. limited resources and automatic incoming waves.
mode.sandbox.description=infinite resources and no timer for waves.
mode.freebuild.description=limited resources and no timer for waves.
content.item.name=Items
content.liquid.name=Liquids
content.unit-type.name=Units
content.recipe.name=Blocks
item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
item.tungsten.name=Tungsten
item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
item.lead.name=Lead
item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
item.coal.description=A common and readily available fuel.
item.carbide.name=Carbide
item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
item.silicon.name=Silicon
item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
item.plastanium.name=Plastanium
item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
item.phase-matter.name=Phase Matter
item.surge-alloy.name=Surge Alloy
item.biomatter.name=Biomatter
item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
item.sand.name=Sand
item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
item.blast-compound.name=Blast Compound
item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
item.pyratite.name=Pyratite
item.pyratite.description=An extremely flammable substance used in incendiary weapons.
liquid.cryofluid.name=Cryofluid
text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
text.item.flammability=[LIGHT_GRAY]Flammability: {0}
text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
text.item.hardness=[LIGHT_GRAY]Hardness: {0}
text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
block.tungsten-wall.name=Tungsten Wall
block.tungsten-wall-large.name=Large Tungsten Wall
block.carbide-wall.name=Carbide Wall
block.carbide-wall-large.name=Large Carbide Wall
block.thorium-wall.name=Thorium Wall
block.thorium-wall-large.name=Large Thorium Wall
block.duo.name=Duo
block.scorch.name=Scorch
block.hail.name=Hail
block.lancer.name=Lancer
block.titanium-conveyor.name=Titanium Conveyor
block.splitter.name=Splitter
block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
block.distributor.name=Distributor
block.distributor.description=A splitter that can split items into 8 directions.
block.overflow-gate.name=Overflow Gate
block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
block.bridgeconveyor.name=Bridge Conveyor
block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
block.arc-smelter.name=Arc Smelter
block.silicon-smelter.name=Silicon Smelter
block.phase-weaver.name=Phase Weaver
block.pulverizer.name=Pulverizer
block.cryofluidmixer.name=Cryofluid Mixer
block.melter.name=Melter
block.incinerator.name=Incinerator
block.biomattercompressor.name=Biomatter Compressor
block.separator.name=Separator
block.centrifuge.name=Centrifuge
block.power-node.name=Power Node
block.power-node-large.name=Large Power Node
block.battery.name=Battery
block.battery-large.name=Large Battery
block.combustion-generator.name=Combustion Generator
block.turbine-generator.name=Turbine Generator
block.tungsten-drill.name=Tungsten Drill
block.carbide-drill.name=Carbide Drill
block.laser-drill.name=Laser Drill
block.water-extractor.name=Water Extractor
block.cultivator.name=Cultivator
block.dart-ship-factory.name=Dart Ship Factory
block.delta-mech-factory.name=Delta Mech Factory
block.dronefactory.name=Drone Factory
block.repairpoint.name=Repair Point
block.resupplypoint.name=Resupply Point
block.liquidtank.name=Liquid Tank
block.bridgeconduit.name=Bridge Conduit
block.mechanical-pump.name=Mechanical Pump
block.itemsource.name=Item Source
block.itemvoid.name=Item Void
block.liquidsource.name=Liquid Source
block.powervoid.name=Power Void
block.powerinfinite.name=Power Infinite
block.unloader.name=Unloader
block.sortedunloader.name=Sorted Unloader
block.vault.name=Vault
block.wave.name=Wave
block.swarmer.name=Swarmer
block.salvo.name=Salvo
block.ripple.name=Ripple
block.phase-conveyor.name=Phase Conveyor
block.bridge-conveyor.name=Bridge Conveyor
block.plastanium-compressor.name=Plastanium Compressor
block.pyratite-mixer.name=Pyratite Mixer
block.blast-mixer.name=Blast Mixer
block.solidifer.name=Solidifer
block.solar-panel.name=Solar Panel
block.solar-panel-large.name=Large Solar Panel
block.oil-extractor.name=Oil Extractor
block.javelin-ship-factory.name=Javelin Ship factory
block.drone-factory.name=Drone Factory
block.fabricator-factory.name=Fabricator Factory
block.repair-point.name=Repair Point
block.resupply-point.name=Resupply Point
block.pulse-conduit.name=Pulse Conduit
block.phase-conduit.name=Phase Conduit
block.liquid-router.name=Liquid Router
block.liquid-tank.name=Liquid Tank
block.liquid-junction.name=Liquid Junction
block.bridge-conduit.name=Bridge Conduit
block.rotary-pump.name=Rotary Pump
block.nuclear-reactor.name=Nuclear Reactor

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,500 +1,494 @@
text.about = Створено [ROYAL] Anuken. []\nСпочатку запис у [orange] GDL [] MM Jam.\nТворці:\n- SFX зроблено з [YELLOW] bfxr []\n- Музика зроблена [GREEN] RoccoW [] / Знайдено на [lime] FreeMusicArchive.org [] \nОсоблива подяка:\n- [coral] MitchellFJN []: екстенсивне тестування та відгуки\n- [sky] Luxray5474 []: робота з вікі, вклади коду\n- Всі бета-тестери на itch.io та Google Play\n text.about=Створено [ROYAL] Anuken. []\nСпочатку запис у [orange] GDL [] MM Jam.\nТворці:\n- SFX зроблено з [YELLOW] bfxr []\n- Музика зроблена [GREEN] RoccoW [] / Знайдено на [lime] FreeMusicArchive.org [] \nОсоблива подяка:\n- [coral] MitchellFJN []: екстенсивне тестування та відгуки\n- [sky] Luxray5474 []: робота з вікі, вклади коду\n- Всі бета-тестери на itch.io та Google Play\n
text.discord = Приєднуйтесь до нашого Discord! text.discord=Приєднуйтесь до нашого Discord!
text.changes = [SCARLET] Увага! \n[] Деякі важливі механіки гри були змінені.\n- [accent] Телепорти [] тепер використовують електроенергію. \n- [accent] Домінна піч [] та [accent] Тиглі [] тепер мають ліміт. \n- [accent] Тиглі [] зараз вимагають вугілля як паливо. text.gameover=Ядро було зруйновано.
text.gameover = Ядро було зруйновано. text.highscore=[YELLOW] Новий рекорд!
text.highscore = [YELLOW] Новий рекорд! text.lasted=Ви тримались до хвилі
text.lasted = Ви тримались до хвилі text.level.highscore=Рекорд: [accent] {0}
text.level.highscore = Рекорд: [accent] {0} text.level.delete.title=Підтвердьте видалення
text.level.delete.title = Підтвердьте видалення text.level.select=Вибір рівня
text.level.delete = Ви впевнені, що хочете видалити карту \"[orange] {0} \"? text.level.mode=Ігровий режим
text.level.select = Вибір рівня text.savegame=Зберегти гру
text.level.mode = Ігровий режим text.loadgame=Завантажити гру
text.savegame = Зберегти гру text.joingame=Приєднатися\nдо гри
text.loadgame = Завантажити гру
text.joingame = Приєднатися\nдо гри
text.newgame=Нова гра text.newgame=Нова гра
text.quit = Вийти text.quit=Вийти
text.about.button = Про text.about.button=Про
text.name = Назва: text.name=Назва:
text.public = Публічний text.players={0} гравців онлайн
text.players = {0} гравців онлайн text.players.single={0} гравців онлайн
text.server.player.host = {0} (host) text.server.mismatch=Пакетна помилка: невідповідність версії версії клієнта / сервера. Переконайтеся, що ви та хост мають останню версію Mindustry!
text.players.single = {0} гравців онлайн text.server.closing=[accent] Закриття сервера ...
text.server.mismatch = Пакетна помилка: невідповідність версії версії клієнта / сервера. Переконайтеся, що ви та хост мають останню версію Mindustry! text.server.kicked.kick=Ви були вигнані з сервера!
text.server.closing = [accent] Закриття сервера ... text.server.kicked.invalidPassword=Невірний пароль!
text.server.kicked.kick = Ви були вигнані з сервера! text.server.kicked.clientOutdated=Застарілий клієнт! Оновіть свою гру!
text.server.kicked.invalidPassword = Невірний пароль! text.server.kicked.serverOutdated=Застарілий сервер! Попросіть хост оновити!
text.server.kicked.clientOutdated = Застарілий клієнт! Оновіть свою гру! text.server.connected={0} приєднався.
text.server.kicked.serverOutdated = Застарілий сервер! Попросіть хост оновити! text.server.disconnected={0} від'єднано.
text.server.connected = {0} приєднався. text.nohost=Неможливо розмістити сервер на власній карті!
text.server.disconnected = {0} від'єднано. text.hostserver=Хост-сервер
text.nohost = Неможливо розмістити сервер на власній карті! text.host=Хост
text.hostserver = Хост-сервер text.hosting=[accent] Відкриття сервера ...
text.host = Хост text.hosts.refresh=Оновити
text.hosting = [accent] Відкриття сервера ... text.hosts.discovering=Знайомство з мережевими іграми
text.hosts.refresh = Оновити text.server.refreshing=Оновити сервери
text.hosts.discovering = Знайомство з мережевими іграми text.hosts.none=[lightgray] Ніяких ігор у мережі не знайдено!
text.server.refreshing = Оновити сервери text.host.invalid=[scarlet] Неможливо підключитися до хосту.
text.hosts.none = [lightgray] Ніяких ігор у мережі не знайдено! text.server.friendlyfire=Дружній вогонь
text.host.invalid = [scarlet] Неможливо підключитися до хосту. text.server.add=Додати сервер
text.server.friendlyfire = Дружній вогонь text.server.delete=Ви впевнені, що хочете видалити цей сервер?
text.server.add = Додати сервер text.server.hostname=Хост: {0}
text.server.delete = Ви впевнені, що хочете видалити цей сервер? text.server.edit=Редагувати сервер
text.server.hostname = Хост: {0} text.joingame.title=Приєднатися до гри
text.server.edit = Редагувати сервер text.joingame.ip=IP
text.joingame.byip = [] Приєднатися по IP ...[] text.disconnect=Роз'єднано
text.joingame.title = Приєднатися до гри text.connecting=[accent] Підключення ...
text.joingame.ip = IP text.connecting.data=[accent] Завантаження світових даних ...
text.disconnect = Роз'єднано text.connectfail=[crimson] Не вдалося підключитися до сервера: [orange] {0}
text.connecting = [accent] Підключення ... text.server.port=Порт
text.connecting.data = [accent] Завантаження світових даних ... text.server.addressinuse=Адреса вже використовується!
text.connectfail = [crimson] Не вдалося підключитися до сервера: [orange] {0} text.server.invalidport=Недійсний номер порту.
text.server.port = Порт text.server.error=[crimson] Помилка хостингу сервера: [orange] {0}
text.server.addressinuse = Адреса вже використовується! text.save.new=Нове збереження
text.server.invalidport = Недійсний номер порту. text.save.overwrite=Ви впевнені, що хочете перезаписати цей слот для збереження?
text.server.error = [crimson] Помилка хостингу сервера: [orange] {0} text.overwrite=Перезаписати
text.tutorial.back = < Попер. text.save.none=Не знайдено жодних збережень!
text.tutorial.next = Далі > text.saveload=[accent] Збереження ...
text.save.new = Нове збереження text.savefail=Не вдалося зберегти гру!
text.save.overwrite = Ви впевнені, що хочете перезаписати цей слот для збереження? text.save.delete.confirm=Ви впевнені, що хочете видалити це збереження?
text.overwrite = Перезаписати text.save.delete=Видалити
text.save.none = Не знайдено жодних збережень! text.save.export=Експорт збереження
text.saveload = [accent] Збереження ... text.save.import.invalid=[orange] Це збереження недійсне!
text.savefail = Не вдалося зберегти гру! text.save.import.fail=[crimson] Не вдалося імпортувати збереження: [orange] {0}
text.save.delete.confirm = Ви впевнені, що хочете видалити це збереження? text.save.export.fail=[crimson] Не вдалося експортувати збереження: [orange] {0}
text.save.delete = Видалити text.save.import=Імпортувати збереження
text.save.export = Експорт збереження text.save.newslot=Назва збереження:
text.save.import.invalid = [orange] Це збереження недійсне! text.save.rename=Переіменувати
text.save.import.fail = [crimson] Не вдалося імпортувати збереження: [orange] {0} text.save.rename.text=Нова назва:
text.save.export.fail = [crimson] Не вдалося експортувати збереження: [orange] {0} text.selectslot=Виберіть збереження.
text.save.import = Імпортувати збереження text.slot=[accent] слот {0}
text.save.newslot = Назва збереження: text.save.corrupted=[orange] Збережений файл пошкоджений або він невірний!
text.save.rename = Переіменувати text.empty=<порожньо>
text.save.rename.text = Нова назва: text.on=Увімкнути
text.selectslot = Виберіть збереження. text.off=Вимкнути
text.slot = [accent] слот {0} text.save.autosave=Автозбереження: {0}
text.save.corrupted = [orange] Збережений файл пошкоджений або він невірний! text.save.map=Карта
text.empty = <порожньо> text.save.wave=Хвиля {0}
text.on = Увімкнути text.save.difficulty=Складність
text.off = Вимкнути text.save.date=Останнє збережено: {0}
text.save.autosave = Автозбереження: {0} text.confirm=Підтвердити
text.save.map = Карта text.delete=Видалити
text.save.wave = Хвиля {0} text.ok=ОК
text.save.difficulty = Складність text.open=Відкрити
text.save.date = Останнє збережено: {0} text.cancel=Скасувати
text.confirm = Підтвердити text.openlink=Відкрити посилання
text.delete = Видалити text.back=Назад
text.ok = ОК text.quit.confirm=Ти впевнений що хочеш піти?
text.open = Відкрити text.loading=[accent] Завантаження ...
text.cancel = Скасувати text.wave=[orange] хвиля {0}
text.openlink = Відкрити посилання text.wave.waiting=Хвиля через {0}
text.back = Назад text.waiting=Очікування…
text.quit.confirm = Ти впевнений що хочеш піти? text.enemies={0} Вороги
text.loading = [accent] Завантаження ... text.enemies.single=Противник
text.wave = [orange] хвиля {0} text.loadimage=Завантажити зображення
text.wave.waiting = Хвиля через {0} text.saveimage=Зберегти зображення
text.waiting = Очікування… text.editor.badsize=[orange] Недійсні розміри зображення! [] Дійсні розміри карти: {0}
text.enemies = {0} Вороги text.editor.errorimageload=Помилка завантаження файлу зображень: [orange] {0}
text.enemies.single = Противник text.editor.errorimagesave=Помилка збереження файлу зображення: [orange] {0}
text.loadimage = Завантажити зображення text.editor.generate=Генератор
text.saveimage = Зберегти зображення text.editor.resize=Змінити розмір
text.oregen = Генерація руд text.editor.loadmap=// Завантажити карту
text.editor.badsize = [orange] Недійсні розміри зображення! [] Дійсні розміри карти: {0} text.editor.savemap=Зберегти карту
text.editor.errorimageload = Помилка завантаження файлу зображень: [orange] {0} text.editor.loadimage=Завантажити зображення
text.editor.errorimagesave = Помилка збереження файлу зображення: [orange] {0} text.editor.saveimage=Зберегти зображення
text.editor.generate = Генератор text.editor.unsaved=[scarlet] У вас є незбережені зміни! [] Ви впевнені, що хочете вийти?
text.editor.resize = Змінити розмір text.editor.resizemap=Змінити розмір карти
text.editor.loadmap = // Завантажити карту text.editor.mapname=Назва карти:
text.editor.savemap = Зберегти карту text.editor.overwrite=[accent] Попередження! Це перезаписує існуючу карту.
text.editor.loadimage = Завантажити зображення text.editor.selectmap=Виберіть карту для завантаження:
text.editor.saveimage = Зберегти зображення text.width=Ширина
text.editor.unsaved = [scarlet] У вас є незбережені зміни! [] Ви впевнені, що хочете вийти? text.height=Висота
text.editor.brushsize = Розмір пензля: {0} text.menu=Меню
text.editor.noplayerspawn = Ця карта не має ігрового поля для гравця! text.play=Відтворити
text.editor.manyplayerspawns = Карти не можуть мати більше одного ігрового поля для гравців! text.load=Завантаження
text.editor.manyenemyspawns = Не може бути більше ніж {0} ворожих точок! text.save=Зберегти
text.editor.resizemap = Змінити розмір карти text.language.restart=Будь ласка, перезапустіть свою гру, щоб налаштування мови набули чинності.
text.editor.resizebig = [scarlet] Попередження! [] Карти, розмір яких перевищує 256 одиниць, можуть виснути і можуть бути нестабільними. text.settings.language=Мова
text.editor.mapname = Назва карти: text.settings=Налаштування
text.editor.overwrite = [accent] Попередження! Це перезаписує існуючу карту. text.tutorial=Навчальний\nпосібник
text.editor.failoverwrite = [crimson] Неможливо перезаписати карту за замовчуванням! text.editor=Редактор
text.editor.selectmap = Виберіть карту для завантаження: text.mapeditor=Редактор карт
text.width = Ширина text.donate=Підтримати проект
text.height = Висота text.settings.reset=Скинути до стандартних
text.randomize = Рандомізувати text.settings.controls=Елементи управління
text.apply = Застосувати text.settings.game=Гра
text.update = Оновити text.settings.sound=Звук
text.menu = Меню text.settings.graphics=Графіка
text.play = Відтворити text.upgrades=Оновлення
text.load = Завантаження text.purchased=[LIME] Створено!
text.save = Зберегти text.weapons=Зброя
text.language.restart = Будь ласка, перезапустіть свою гру, щоб налаштування мови набули чинності. text.paused=Пауза
text.settings.language = Мова text.info.title=[accent] інформація
text.settings = Налаштування text.error.title=[crimson] Виникла помилка
text.tutorial = Навчальний\nпосібник text.error.crashtitle=Виникла помилка
text.editor = Редактор text.blocks.blockinfo=Блокування інформації
text.mapeditor = Редактор карт text.blocks.powercapacity=Потужність
text.donate = Підтримати проект text.blocks.powershot=Потужність / постріл
text.settings.reset = Скинути до стандартних text.blocks.size=Розмір
text.settings.controls = Елементи управління text.blocks.liquidcapacity=Ємкість рідини
text.settings.game = Гра text.blocks.maxitemssecond=Макс. Елементи / секунду
text.settings.sound = Звук text.blocks.powerrange=Радіус потужності
text.settings.graphics = Графіка text.blocks.itemcapacity=Ємкість предмету
text.upgrades = Оновлення text.blocks.inputliquid=Ввід речовини
text.purchased = [LIME] Створено! text.blocks.inputitem=Вхідний матеріал
text.weapons = Зброя text.blocks.explosive=Вибухонебезпечний!
text.paused = Пауза text.blocks.health=Здоров'я
text.respawn = Відновлення за text.blocks.inaccuracy=Неточність
text.info.title = [accent] інформація text.blocks.shots=Постріли
text.error.title = [crimson] Виникла помилка text.blocks.inputcapacity=Вхідна ємність
text.error.crashmessage = [SCARLET] Виникла несподівана помилка, що призвела до збою. [] Будь ласка, повідомте про конкретні обставини, розробнику: [ORANGE] anukendev@gmail.com [] text.blocks.outputcapacity=Випускна ємність
text.error.crashtitle = Виникла помилка setting.difficulty.easy=Легкий
text.mode.break = Режим зносу: {0} setting.difficulty.normal=Нормальний
text.mode.place = Режим будівництва: {0} setting.difficulty.hard=Важкий
placemode.hold.name = Лінія setting.difficulty.insane=Божевільний
placemode.areadelete.name = Площа setting.difficulty.purge=Очистити
placemode.touchdelete.name = Дотик setting.difficulty.name=Складність
placemode.holddelete.name = Утримування. setting.screenshake.name=Тряска екрана
placemode.none.name = (None) setting.indicators.name=Індикатори ворога
placemode.touch.name = Дотик setting.effects.name=Ефекти відображення
placemode.cursor.name = курсор setting.sensitivity.name=Чутливість контролера
text.blocks.extrainfo = [accent] додатковий інформаційний блок: setting.saveinterval.name=Інтервал автозбереження
text.blocks.blockinfo = Блокування інформації setting.seconds={0} секунд
text.blocks.powercapacity = Потужність setting.fullscreen.name=Повноекранний
text.blocks.powershot = Потужність / постріл setting.multithread.name=Багатопотоковий [scarlet] (нестабільний!)
text.blocks.powersecond = Потужність / секунда setting.fps.name=Показати FPS
text.blocks.powerdraindamage = Потужність дренажу / пошкодження setting.vsync.name=VSunc
text.blocks.shieldradius = Радіус щита setting.lasers.name=Показати енергетичні лазери
text.blocks.itemspeedsecond = Швидкість / секунда setting.healthbars.name=Показати здоров'я
text.blocks.range = Радіус setting.musicvol.name=Гучність музики
text.blocks.size = Розмір setting.mutemusic.name=Вимкнути музику
text.blocks.powerliquid = Потужність / Рідина setting.sfxvol.name=Гучність ефектів
text.blocks.maxliquidsecond = Макс. Рідина / секунда setting.mutesound.name=Вимкнути звук
text.blocks.liquidcapacity = Ємкість рідини map.maze.name=Лабіринт
text.blocks.liquidsecond = Рідина / секунда map.fortress.name=Фортеця
text.blocks.damageshot = Пошкодження / постріл map.sinkhole.name=Свердловина
text.blocks.ammocapacity = Місткість боєприпасів map.caves.name=Печери
text.blocks.ammo = Набої map.volcano.name=Вулкан
text.blocks.ammoitem = Боєприпаси / предмет map.caldera.name=Кальдера
text.blocks.maxitemssecond = Макс. Елементи / секунду map.scorch.name=Мертва земля
text.blocks.powerrange = Радіус потужності map.desert.name=Пустеля
text.blocks.lasertilerange = Радіус лазерних плиток map.island.name=Острів
text.blocks.capacity = Ємкість map.grassland.name=Пасовища
text.blocks.itemcapacity = Ємкість предмету map.tundra.name=Тундра
text.blocks.maxpowergenerationsecond = Максимальна потужність / секунда map.spiral.name=Спіраль
text.blocks.powergenerationsecond = Потужність / секунда map.tutorial.name=Навчання
text.blocks.generationsecondsitem = Генерація за секунду / предмет text.keybind.title=Ключ перемотки
text.blocks.input = Ввід keybind.move_x.name=move_x
text.blocks.inputliquid = Ввід речовини keybind.move_y.name=move_y
text.blocks.inputitem = Вхідний матеріал keybind.select.name=Вибрати
text.blocks.output = Вивід keybind.break.name={0}break{/0}{1}; {/1}
text.blocks.secondsitem = Секунда / предмет keybind.shoot.name=Постріл
text.blocks.maxpowertransfersecond = Максимальна передача потужності / секунда keybind.zoom_hold.name=zoom_hold
text.blocks.explosive = Вибухонебезпечний! keybind.zoom.name=Збільшити
text.blocks.repairssecond = Ремонт / секунда keybind.block_info.name=Інформація про блок
text.blocks.health = Здоров'я keybind.menu.name=Меню
text.blocks.inaccuracy = Неточність keybind.pause.name=Пауза
text.blocks.shots = Постріли keybind.dash.name=Тире
text.blocks.shotssecond = Постріли / секунду keybind.chat.name=Чат
text.blocks.fuel = Паливо: keybind.player_list.name=Список гравців
text.blocks.fuelduration = Тривалість палива keybind.console.name=// Консоль 1
text.blocks.maxoutputsecond = Макс. Вихід / секунду keybind.rotate_alt.name=rotate_alt
text.blocks.inputcapacity = Вхідна ємність keybind.rotate.name=Повернути
text.blocks.outputcapacity = Випускна ємність mode.waves.name=Хвилі
text.blocks.poweritem = Потужність / виріб mode.sandbox.name=Пісочниця
text.placemode = Місцевий режим mode.freebuild.name=Вільний режим
text.breakmode = Перерваний режим item.stone.name=Камінь
text.health = Здоров'я item.coal.name=Вугівалля
setting.difficulty.easy = Легкий item.titanium.name=Титан
setting.difficulty.normal = Нормальний item.thorium.name=Уран
setting.difficulty.hard = Важкий item.sand.name=Пісок
setting.difficulty.insane = Божевільний liquid.water.name=Вода
setting.difficulty.purge = Очистити liquid.lava.name=Лава
setting.difficulty.name = Складність liquid.oil.name=Нафта
setting.screenshake.name = Тряска екрана block.door.name=Двері
setting.smoothcam.name = Гладка камера block.door-large.name=Великі двері
setting.indicators.name = Індикатори ворога block.conduit.name=Трубопровід
setting.effects.name = Ефекти відображення block.pulseconduit.name=Імпульсний канал
setting.sensitivity.name = Чутливість контролера block.liquidrouter.name=маршрутизатор для рідини
setting.saveinterval.name = Інтервал автозбереження block.conveyor.name=Конвеєр
setting.seconds = {0} секунд block.router.name=Маршрутизатор
setting.fullscreen.name = Повноекранний block.junction.name=Міст
setting.multithread.name = Багатопотоковий [scarlet] (нестабільний!) block.liquidjunction.name=Міст для рідини
setting.fps.name = Показати FPS block.sorter.name=Сортувальник
setting.vsync.name = VSunc block.smelter.name=Плавильня
setting.lasers.name = Показати енергетичні лазери text.credits=Credits
setting.healthbars.name = Показати здоров'я text.link.discord.description=the official Mindustry discord chatroom
setting.pixelate.name = Пікселяція екрану text.link.github.description=Game source code
setting.musicvol.name = Гучність музики text.link.dev-builds.description=Unstable development builds
setting.mutemusic.name = Вимкнути музику text.link.trello.description=Official trello board for planned features
setting.sfxvol.name = Гучність ефектів text.link.itch.io.description=itch.io page with PC downloads and web version
setting.mutesound.name = Вимкнути звук text.link.google-play.description=Google Play store listing
map.maze.name = Лабіринт text.link.wiki.description=official Mindustry wiki
map.fortress.name = Фортеця text.linkfail=Failed to open link!\nThe URL has been copied to your cliboard.
map.sinkhole.name = Свердловина text.editor.web=The web version does not support the editor!\nDownload the game to use it.
map.caves.name = Печери text.web.unsupported=The web version does not support this feature! Download the game to use it.
map.volcano.name = Вулкан text.multiplayer.web=This version of the game does not support multiplayer!\nTo play multiplayer from your browser, use the "multiplayer web version" link at the itch.io page.
map.caldera.name = Кальдера text.host.web=The web version does not support hosting games! Download the game to use this feature.
map.scorch.name = Мертва земля text.map.delete=Are you sure you want to delete the map "[orange]{0}[]"?
map.desert.name = Пустеля text.construction.title=Block Construction Guide
map.island.name = Острів text.construction=You've just selected [accent]block construction mode[].\n\nTo begin placing, simply tap a valid location near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Shift the selection[] by holding and dragging any block in the selection.\n- [accent]Place blocks in a line[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel construction or selection[] by pressing the X at the bottom left.
map.grassland.name = Пасовища text.deconstruction.title=Block Deconstruction Guide
map.tundra.name = Тундра text.deconstruction=You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left.
map.spiral.name = Спіраль text.showagain=Don't show again next session
map.tutorial.name = Навчання text.unlocks=Unlocks
tutorial.intro.text = [yellow] Ласкаво просимо до підручника. [] Для початку натисніть \"далі\". text.addplayers=Add/Remove Players
tutorial.moveDesktop.text = Для переміщення використовуйте клавіші [orange] [[WASD] []. Утримуйте [orange] SHIFT[], для прискорення. Утримуйте [orange] CTRL [], використовуючи [orange] колесо прокручування [] для збільшення або зменшення. text.maps=Maps
tutorial.shoot.text = Використовуйте мишу, щоб націлитись, утримуйте [orange] ліву кнопку миші [], щоб стріляти. Попрактикуйтесь на [yellow] мішені []. text.maps.none=[LIGHT_GRAY]No maps found!
tutorial.moveAndroid.text = Щоб перетягнути панораму, перетягніть один палець по екрану. Використовуйте два пальця, щоб збільшити чи зменшити маштаб. text.unlocked=New Block Unlocked!
tutorial.placeSelect.text = Спробуйте вибрати [yellow] конвеєр [] у меню блоку внизу справа. text.unlocked.plural=New Blocks Unlocked!
tutorial.placeConveyorDesktop.text = Використовуйте [orange] [[колесико миші] [], щоб повернути конвеєр [orange] вперед [], а потім помістіть його в [yellow] позначене місце [], використовуючи [orange] [[ліву кнопку миші] []. text.server.kicked.fastShoot=You are shooting too quickly.
tutorial.placeConveyorAndroid.text = Використовуйте [orange] [[кнопку оберту] [], щоб обернути конвеєр [оранжевий] вперед [], перетягуйте його одним пальцем, а потім помістіть його в [yellow] позначене місце [], використовуючи [orange] [[галочка][]. text.server.kicked.banned=You are banned on this server.
tutorial.placeConveyorAndroidInfo.text = Крім того, ви можете натиснути піктограму перехрестя внизу ліворуч, щоб переключитися на [orange] [[сенсорний режим]] [], і помістити блоки, натиснувши на екран. У сенсорному режимі блоки можна повертати зі стрілкою внизу ліворуч. Натисніть [yellow] наступний [], щоб спробувати. text.server.kicked.recentKick=You have been kicked recently.\nWait before connecting again.
tutorial.placeDrill.text = Тепер виберіть та розмістіть [yellow] кам'яне свердло [] у зазначеному місці. text.server.kicked.nameInUse=There is someone with that name\nalready on this server.
tutorial.blockInfo.text = Якщо ви хочете дізнатись більше про блок, ви можете торкнутися [orange] знак питання [] у верхньому правому куті, щоб прочитати його опис. text.server.kicked.nameEmpty=Your name must contain at least one character or number.
tutorial.deselectDesktop.text = Ви можете вимкнути блок, використовуючи [orange] [[клацання правою кнопкою миші] []. text.server.kicked.idInUse=You are already on this server! Connecting with two accounts is not permitted.
tutorial.deselectAndroid.text = Ви можете скасувати вибір блоку, натиснувши кнопку [orange] X []. text.server.kicked.customClient=This server does not support custom builds. Download an official version.
tutorial.drillPlaced.text = Дриль тепер видобуває [yellow] камінь, [] та виведе його на конвеєр, а потім переміщає його в [yellow] ядро []. text.host.info=The [accent]host[] button hosts a server on ports [scarlet]6567[] and [scarlet]6568.[]\nAnybody on the same [LIGHT_GRAY]wifi or local network[] should be able to see your server in their server list.\n\nIf you want people to be able to connect from anywhere by IP, [accent]port forwarding[] is required.\n\n[LIGHT_GRAY]Note: If someone is experiencing trouble connecting to your LAN game, make sure you have allowed Mindustry access to your local network in your firewall settings.
tutorial.drillInfo.text = Різні руди потребують різних дрилі. Камінь вимагає кам'яні свердла, залізо вимагає залізні свердла та ін text.join.info=Here, you can enter a [accent]server IP[] to connect to, or discover [accent]local network[] servers to connect to.\nBoth LAN and WAN multiplayer is supported.\n\n[LIGHT_GRAY]Note: There is no automatic global server list; if you want to connect to someone by IP, you would need to ask the host for their IP.
tutorial.drillPlaced2.text = Переміщення елементів у ядро ​​вказує їх у ваш [yellow] предметний інвентар [] у верхньому лівому куті. Розміщення блоків використовує предмети з вашого інвентарю. text.trace=Trace Player
tutorial.moreDrills.text = Ви можете пов'язати багато свердлів і конвеєрів разом в одну гілку конвеєра. text.trace.playername=Player name: [accent]{0}
tutorial.deleteBlock.text = Ви можете видалити блоки, натиснувши правою клавішею [orange] правою кнопкою миші [] по блоці, який ви хочете видалити. Спробуйте видалити цей конвеєр. text.trace.ip=IP: [accent]{0}
tutorial.deleteBlockAndroid.text = Ви можете видалити блоки за допомогою [orange], перехрестя [] в меню [mode] зламу [orange] у нижньому лівому куті та натиснувши на блок. Спробуйте видалити цей конвеєр. text.trace.id=Unique ID: [accent]{0}
tutorial.placeTurret.text = Тепер виділіть та розмістіть [yellow] турель [] у [yellow] позначеному місці []. text.trace.android=Android Client: [accent]{0}
tutorial.placedTurretAmmo.text = Ця турель тепер приймає [yellow] боєприпас [] з конвеєра. Ви можете побачити, скільки боєприпасів вона має, натискаючи на неї і перевіряючи [green] зелену полоску []. text.trace.modclient=Custom Client: [accent]{0}
tutorial.turretExplanation.text = Турелі будуть автоматично стріляти у найближчого ворога, якщо вони мають достатню кількість боєприпасів. text.trace.totalblocksbroken=Total blocks broken: [accent]{0}
tutorial.waves.text = Кожні [yellow] 60 [] секунд, хвиля [coral] ворогів [] буде виникати в певних місцях і намагатися знищити ядро. text.trace.structureblocksbroken=Structure blocks broken: [accent]{0}
tutorial.coreDestruction.text = Ваша мета полягає в тому, щоб [yellow] захищати ядро []. Якщо ядро ​​знищено, ви [coral] програєте[]. text.trace.lastblockbroken=Last block broken: [accent]{0}
tutorial.pausingDesktop.text = Якщо вам коли-небудь потрібно зробити перерву, натисніть кнопку [orange] паузи [] у верхньому лівому куті або на кнопку [orange] пропуск [], щоб призупинити гру. Ви можете вибрати і розмістити блоки під час призупинення, але не можете переміщатися чи стріляти. text.trace.totalblocksplaced=Total blocks placed: [accent]{0}
tutorial.pausingAndroid.text = Якщо вам коли-небудь потрібно зробити перерву, натисніть кнопку [orange] пауза [] у верхньому лівому куті, щоб призупинити гру. Ти можеш ще знищувати та будувати блоки під час призупинення. text.trace.lastblockplaced=Last block placed: [accent]{0}
tutorial.purchaseWeapons.text = Ви можете придбати нову [yellow] зброю [] для вашого механізму, відкривши меню оновлення в лівому нижньому кутку. text.invalidid=Invalid client ID! Submit a bug report.
tutorial.switchWeapons.text = Перемикати зброю будь-яким натисканням його піктограми внизу ліворуч або за допомогою цифр [orange] [[1-9] []. text.server.bans=Bans
tutorial.spawnWave.text = Ось хвиля зараз. Знищи їх text.server.bans.none=No banned players found!
tutorial.pumpDesc.text = У пізніших хвилях, можливо, доведеться використовувати [yellow] насоси [] для розподілу рідин для генераторів або екстракторів. text.server.admins=Admins
tutorial.pumpPlace.text = Насоси працюють аналогічно свердлам, за винятком того, що вони виробляють рідини замість предметів. Спробуйте встановити насос на [yellow] призначене мастило []. text.server.admins.none=No admins found!
tutorial.conduitUse.text = Тепер покладіть [orange] трубопровід [], віддаляючись від насоса. text.server.outdated=[crimson]Outdated Server![]
tutorial.conduitUse2.text = І ще кілька ... text.server.outdated.client=[crimson]Outdated Client![]
tutorial.conduitUse3.text = І ще кілька ... text.server.version=[lightgray]Version: {0}
tutorial.generator.text = Тепер, помістіть блок [orange] ​​базовий генератор енергії [] в кінці каналу. text.server.custombuild=[yellow]Custom Build
tutorial.generatorExplain.text = Цей генератор тепер створить [yellow] енергію [] від масла. text.confirmban=Are you sure you want to ban this player?
tutorial.lasers.text = Потужність розподіляється за допомогою [yellow] лазерів потужності []. Поверніть і помістіть його тут. text.confirmunban=Are you sure you want to unban this player?
tutorial.laserExplain.text = Тепер генератор переведе енергію в лазерний блок. Промінь [yellow] непрозорий [] означає, що в даний час він передає потужність, а промінь [yellow] прозорий [] означає, що це не так. text.confirmadmin=Are you sure you want to make this player an admin?
tutorial.laserMore.text = Ви можете перевірити, скільки енергії в блоку, наведіть курсор миші на нього і перевірте [yellow] жовту стрічку [] у верхній частині екрана. text.confirmunadmin=Are you sure you want to remove admin status from this player?
tutorial.healingTurret.text = Цей лазер може бути використаний для живлення турелі для ремонту [lime] []. Помістіть одну тут. text.disconnect.data=Failed to load world data!
tutorial.healingTurretExplain.text = Поки вона має енергію, ця турель може [lime] відремонтувати блоки. [] Під час гри постарайтеся збудувати одну таку чим швидше! text.copylink=Copy Link
tutorial.smeltery.text = Для багатьох блоків потрібна [orange] сталь [], для цього потрібна[orange] доминна піч [] . Місце тут. text.changelog.title=Changelog
tutorial.smelterySetup.text = Ця піч буде тепер виробляти [orange] сталь [] із вхідного заліза, використовуючи вугілля як паливо. text.changelog.loading=Getting changelog...
tutorial.tunnelExplain.text = Також зауважте, що елементи проходять через [yellow] тунельний блок [] і з'являються з іншого боку, проходячи через кам'яний блок. Майте на увазі, що тунелі можуть проходити лише до 2 блоків. text.changelog.error.android=[orange]Note that the changelog sometimes does not work on Android 4.4 and below!\nThis is due to an internal Android bug.
tutorial.end.text = Ви завершили підручник! Удачі! text.changelog.error.ios=[orange]The changelog is currently not supported in iOS.
text.keybind.title = Ключ перемотки text.changelog.error=[scarlet]Error getting changelog!\nCheck your internet connection.
keybind.move_x.name = move_x text.changelog.current=[yellow][[Current version]
keybind.move_y.name = move_y text.changelog.latest=[orange][[Latest version]
keybind.select.name = Вибрати text.saving=[accent]Saving...
keybind.break.name = {0}break{/0}{1}; {/1} text.unknown=Unknown
keybind.shoot.name = Постріл text.custom=Custom
keybind.zoom_hold.name = zoom_hold text.builtin=Built-In
keybind.zoom.name = Збільшити text.map.delete.confirm=Are you sure you want to delete this map? This action cannot be undone!
keybind.block_info.name = Інформація про блок text.map.random=[accent]Random Map
keybind.menu.name = Меню text.map.nospawn=This map does not have any cores for the player to spawn in! Add a [ROYAL]blue[] core to this map in the editor.
keybind.pause.name = Пауза text.editor.slope=\\
keybind.dash.name = Тире text.editor.openin=Open In Editor
keybind.chat.name = Чат text.editor.oregen=Ore Generation
keybind.player_list.name = Список гравців text.editor.oregen.info=Ore Generation:
keybind.console.name = // Консоль 1 text.editor.mapinfo=Map Info
keybind.rotate_alt.name = rotate_alt text.editor.author=Author:
keybind.rotate.name = Повернути text.editor.description=Description:
keybind.weapon_1.name = Зброя! text.editor.name=Name:
keybind.weapon_2.name = Зброя! text.editor.teams=Teams
keybind.weapon_3.name = Зброя! text.editor.elevation=Elevation
keybind.weapon_4.name = Зброя! text.editor.saved=Saved!
keybind.weapon_5.name = Зброя! text.editor.save.noname=Your map does not have a name! Set one in the 'map info' menu.
keybind.weapon_6.name = Зброя! text.editor.save.overwrite=Your map overwrites a built-in map! Pick a different name in the 'map info' menu.
mode.waves.name = Хвилі text.editor.import.exists=[scarlet]Unable to import:[] a built-in map named '{0}' already exists!
mode.sandbox.name = Пісочниця text.editor.import=Import...
mode.freebuild.name = Вільний режим text.editor.importmap=Import Map
upgrade.standard.name = Стандартний text.editor.importmap.description=Import an already existing map
upgrade.standard.description = Стандартний механ. text.editor.importfile=Import File
upgrade.blaster.name = Бластер text.editor.importfile.description=Import an external map file
upgrade.blaster.description = Стріляє повільно, слабкі кулі. text.editor.importimage=Import Terrain Image
upgrade.triblaster.name = Трипластер text.editor.importimage.description=Import an external map image file
upgrade.triblaster.description = Вистрілює 3 кулі в розповсюдженні. text.editor.export=Export...
upgrade.clustergun.name = Касетна гармата text.editor.exportfile=Export File
upgrade.clustergun.description = Вистрілює неточними вибуховими гранатами. text.editor.exportfile.description=Export a map file
upgrade.beam.name = Пушечна гармата text.editor.exportimage=Export Terrain Image
upgrade.beam.description = Вистрілює далекобійним,пробірний лазерний промінь. text.editor.exportimage.description=Export a map image file
upgrade.vulcan.name = Вулкан text.editor.overwrite.confirm=[scarlet]Warning![] A map with this name already exists. Are you sure you want to overwrite it?
upgrade.vulcan.description = Вистрілює шквал швидких куль. text.fps=FPS: {0}
upgrade.shockgun.name = Шок-пушка text.tps=TPS: {0}
upgrade.shockgun.description = Стріляє руйнівним вибухом заряженої шрапнелі. text.ping=Ping: {0}ms
item.stone.name = Камінь text.settings.rebind=Rebind
item.iron.name = Залізо text.yes=Yes
item.coal.name = Вугівалля text.no=No
item.steel.name = Сталь text.blocks.targetsair=Targets Air
item.titanium.name = Титан text.blocks.itemspeed=Units Moved
item.dirium.name = Дириум text.blocks.shootrange=Range
item.thorium.name = Уран text.blocks.poweruse=Power Use
item.sand.name = Пісок text.blocks.inputitemcapacity=Input Item Capacity
liquid.water.name = Вода text.blocks.outputitemcapacity=Input Item Capacity
liquid.plasma.name = Плазма text.blocks.maxpowergeneration=Max Power Generation
liquid.lava.name = Лава text.blocks.powertransferspeed=Power Transfer
liquid.oil.name = Нафта text.blocks.craftspeed=Production Speed
block.weaponfactory.name = Фабрика зброї text.blocks.inputliquidaux=Aux Liquid
block.weaponfactory.fulldescription = Використовується для створення зброї для гравця mech. Натисніть, щоб використати. Автоматично приймає ресурси з основного ядра. text.blocks.inputitems=Input Items
block.air.name = Повітря text.blocks.outputitem=Output Item
block.blockpart.name = Блокчастина text.blocks.drilltier=Drillables
block.deepwater.name = Глибока вода text.blocks.drillspeed=Base Drill Speed
block.water.name = Вода text.blocks.liquidoutput=Liquid Output
block.lava.name = Лава text.blocks.liquiduse=Liquid Use
block.oil.name = Нафта text.blocks.coolant=Coolant
block.stone.name = Камінь text.blocks.coolantuse=Coolant Use
block.blackstone.name = Чорний камінь text.blocks.inputliquidfuel=Fuel Liquid
block.iron.name = Залізо text.blocks.liquidfueluse=Liquid Fuel Use
block.coal.name = Вугілля text.blocks.reload=Reload
block.titanium.name = Титан text.blocks.inputfuel=Fuel
block.thorium.name = Уран text.blocks.fuelburntime=Fuel Burn Time
block.dirt.name = Бруд text.unit.blocks=blocks
block.sand.name = Пісок text.unit.powersecond=power units/second
block.ice.name = Лід text.unit.liquidsecond=liquid units/second
block.snow.name = Сніг text.unit.itemssecond=items/second
block.grass.name = Трава text.unit.pixelssecond=pixels/second
block.sandblock.name = Блок піску text.unit.liquidunits=liquid units
block.snowblock.name = Блок снігу text.unit.powerunits=power units
block.stoneblock.name = Блок камню text.unit.degrees=degrees
block.blackstoneblock.name = Блок чорного камню text.unit.seconds=seconds
block.grassblock.name = Блок бруду text.unit.none=
block.mossblock.name = Моссблок text.unit.items=items
block.shrub.name = Чагарник text.category.general=General
block.rock.name = Камень text.category.power=Power
block.icerock.name = Ледяний камень text.category.liquids=Liquids
block.blackrock.name = Чорний камінь text.category.items=Items
block.dirtblock.name = Блок землі text.category.crafting=Crafting
block.stonewall.name = Кам'яна стіна text.category.shooting=Shooting
block.stonewall.fulldescription = Недорогий захисний блок. Корисно для захисту ядра та турелі в перші кілька хвиль. setting.minimap.name=Show Minimap
block.ironwall.name = Залізна стіна mode.text.help.title=Description of modes
block.ironwall.fulldescription = Основний захисний блок. Забезпечує захист від ворогів. mode.waves.description=the normal mode. limited resources and automatic incoming waves.
block.steelwall.name = Сталева стіна mode.sandbox.description=infinite resources and no timer for waves.
block.steelwall.fulldescription = Стандартний захисний блок. адекватний захист від ворогів. mode.freebuild.description=limited resources and no timer for waves.
block.titaniumwall.name = Титанова стіна content.item.name=Items
block.titaniumwall.fulldescription = Сильний захисний блок. Забезпечує захист від ворогів. content.liquid.name=Liquids
block.duriumwall.name = Діріумова стіна content.unit-type.name=Units
block.duriumwall.fulldescription = Дуже сильний захисний блок. Забезпечує захист від ворогів. content.recipe.name=Blocks
block.compositewall.name = Композитна стіна item.stone.description=A common raw material. Used for separating and refining into other materials, or melting into lava.
block.steelwall-large.name = Велика сталева стіна item.tungsten.name=Tungsten
block.steelwall-large.fulldescription = Стандартний захисний блок. Поєднує в собі кілька блоків. item.tungsten.description=A common, but very useful structure material. Used in drills and heat-resistant blocks such as generators and smelteries.
block.titaniumwall-large.name = Велика титанова стіна item.lead.name=Lead
block.titaniumwall-large.fulldescription = Сильний захисний блок. Поєднує в собі кілька блоків. item.lead.description=A basic starter material. Used extensively in electronics and liquid transportation blocks.
block.duriumwall-large.name = Велика дирмітова стіна item.coal.description=A common and readily available fuel.
block.duriumwall-large.fulldescription = Дуже сильний захисний блок.Поєднує в собі кілька блоків. item.carbide.name=Carbide
block.titaniumshieldwall.name = Стіна з щитом item.carbide.description=A tough alloy made with tungsten and carbon. Used in advanced transportation blocks and high-tier drills.
block.titaniumshieldwall.fulldescription = Сильний захисний блок з додатковим вбудованим щитом. Потрібна енергія. Використовує енергію для поглинання ворожих куль. Рекомендується використовувати силові пристосування для забезпечення енергії цього блоку. item.titanium.description=A rare super-light metal used extensively in liquid transportation, drills and aircraft.
block.repairturret.name = Ремонтна турель item.thorium.description=A dense, radioactive metal used as structural support and nuclear fuel.
block.repairturret.fulldescription = Ремонтує недалекі пошкодженні блоки.Повільний темп. Використовує невелику кількість енергії. item.silicon.name=Silicon
block.megarepairturret.name = Ремонтна турель II item.silcion.description=An extremely useful semiconductor, with applications in solar panels and many complex electronics.
block.megarepairturret.fulldescription = Ремонтує недалекі пошкодженні блоки.Збільшений радіус та швидший темп ремонту . Використовує багато енергії. item.plastanium.name=Plastanium
block.shieldgenerator.name = Генератор щиту item.plastanium.description=A light, ductile material used in advanced aircraft and fragmentation ammunition.
block.shieldgenerator.fulldescription = Передовий захисний блок. Захищає всі блоки в радіусі від нападу. Не вкористовує енергію при бездіяльності, але швидко витрачає енергію на захист від куль. item.phase-matter.name=Phase Matter
block.door.name = Двері item.surge-alloy.name=Surge Alloy
block.door.fulldescription = Блок, який можна відкрити та закрити, торкнувшись його. item.biomatter.name=Biomatter
block.door-large.name = Великі двері item.biomatter.description=A clump of organic mush; used for conversion into oil or as a basic fuel.
block.door-large.fulldescription = Блок, який можна відкрити та закрити, торкнувшись його. item.sand.description=A common material that is used extensively in smelting, both in alloying and as a flux.
block.conduit.name = Трубопровід item.blast-compound.name=Blast Compound
block.conduit.fulldescription = Основний транспортний блок. Працює як конвеєр, але з рідинами. Найкраще використовується з насосами або іншими трубопроводами. Може використовуватися як міст через рідини для ворогів та гравців. item.blast-compound.description=A volatile compound used in bombs and explosives. While it can burned as fuel, this is not advised.
block.pulseconduit.name = Імпульсний канал item.pyratite.name=Pyratite
block.pulseconduit.fulldescription = Покращенний блок перевезення рідин. Транспортує рідини швидше і зберігає більше стандартних каналів. item.pyratite.description=An extremely flammable substance used in incendiary weapons.
block.liquidrouter.name = маршрутизатор для рідини liquid.cryofluid.name=Cryofluid
block.liquidrouter.fulldescription = Працює аналогічно маршрутизатору. Приймає рідину ввід з одного боку і виводить його на інші сторони. Корисний для розщеплення рідини з одного каналу на кілька інших трубопроводів. text.item.explosiveness=[LIGHT_GRAY]Explosiveness: {0}
block.conveyor.name = Конвеєр text.item.flammability=[LIGHT_GRAY]Flammability: {0}
block.conveyor.fulldescription = Базовий транспортний блок. Переміщує предмети вперед і автоматично вкладає їх у турелі або ремісники. Поворотний Може використовуватися як міст через рідину для ворогів та гравців. text.item.radioactivity=[LIGHT_GRAY]Radioactivity: {0}
block.steelconveyor.name = Сталевий конвеєр text.item.fluxiness=[LIGHT_GRAY]Flux Power: {0}
block.steelconveyor.fulldescription = Розширений блок транспортування предметів. Переміщення елементів швидше, ніж стандартні конвеєри. text.item.hardness=[LIGHT_GRAY]Hardness: {0}
block.poweredconveyor.name = Імпульсний конвеєр text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
block.poweredconveyor.fulldescription = Кінцевий транспортний блок. Переміщення елементів швидше, ніж сталеві конвеєри. text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
block.router.name = Маршрутизатор text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
block.router.fulldescription = Приймає елементи з одного напрямку і виводить їх на 3 інших напрямках. Можна також зберігати певну кількість предметів. Використовується для розщеплення матеріалів з одного свердла на декілька башточок. block.tungsten-wall.name=Tungsten Wall
block.junction.name = Міст block.tungsten-wall-large.name=Large Tungsten Wall
block.junction.fulldescription = Виступає як міст для двох перехресних конвеєрних стрічок. Корисне у ситуаціях з двома різними конвеєрами, що несуть різні матеріали в різних місцях. block.carbide-wall.name=Carbide Wall
block.conveyortunnel.name = Конвеєрний тунель block.carbide-wall-large.name=Large Carbide Wall
block.conveyortunnel.fulldescription = Транспортує предмети під блоками. Щоб використати, помістіть один тунель, що веде у блок, щоб бути підсвіченим, а один - з іншого боку. Переконайтеся, що обидва тунелі стикаються з протилежними напрямками, тобто до блоків, які вони вводять або виводять. block.thorium-wall.name=Thorium Wall
block.liquidjunction.name = Міст для рідини block.thorium-wall-large.name=Large Thorium Wall
block.liquidjunction.fulldescription = Діє як міст для двох перехресних трубопроводів. Корисно в ситуаціях з двома різними трубами, що несуть різні рідини в різних місцях. block.duo.name=Duo
block.liquiditemjunction.name = Перехрестя рідкого пункту block.scorch.name=Scorch
block.liquiditemjunction.fulldescription = Виступає як міст для перетину трубопроводів і конвеєрів. block.hail.name=Hail
block.powerbooster.name = Підсилювач потужності block.lancer.name=Lancer
block.powerbooster.fulldescription = Поширює енергію на всі блоки в межах його радіуса. block.titanium-conveyor.name=Titanium Conveyor
block.powerlaser.name = Енергетичний лазер block.splitter.name=Splitter
block.powerlaser.fulldescription = Створює лазер, який передає енергію блоку перед ним. Не створює жодної сили сама. Найкраще використовується з генераторами або іншими лазерами. block.splitter.description=Outputs items into two opposite directions immediately after they are recieved.
block.powerlaserrouter.name = Лазерний маршрутизатор block.router.description=Splits items into all 4 directions. Can store items as a buffer.
block.powerlaserrouter.fulldescription = Лазер, який розподіляє енергію у три напрямки одночасно. Корисно в ситуаціях, коли потрібно живити кілька блоків від одного генератора. block.distributor.name=Distributor
block.powerlasercorner.name = Лазерний кут block.distributor.description=A splitter that can split items into 8 directions.
block.powerlasercorner.fulldescription = Лазер, який розподіляє енергію одночасно на два напрямки. Корисно в ситуаціях, коли потрібно живити кілька блоків від одного генератора, а маршрутизатор неточний. block.sorter.description=Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
block.teleporter.name = Телепорт block.overflow-gate.name=Overflow Gate
block.teleporter.fulldescription = Продвинутий блок транспортування предметів.Щоб телепортувати предмети з одного місця в інше потрібно збудувати 2 телепорти і назначити на них одинаковий колір. Використовує енергію. Натисніть, щоб змінити колір. block.overflow-gate.description=A combination splitter and router that only outputs to the left and right if the front path is blocked.
block.sorter.name = Сортувальник block.bridgeconveyor.name=Bridge Conveyor
block.sorter.fulldescription = Сортує предмети за типом матеріалу. Матеріал для прийняття позначається кольором у блоці. Всі елементи, що відповідають матеріалу сортування, виводяться вперед, а все інше виводить ліворуч і праворуч. block.bridgeconveyor.description=A conveyor that can go over other blocks, for up to two total blocks.
block.core.name = Ядро block.arc-smelter.name=Arc Smelter
block.pump.name = Насос block.silicon-smelter.name=Silicon Smelter
block.pump.fulldescription = Насоси рідини з вихідного блоку - зазвичай вода, лава чи олія. Виводить рідину в сусідні трубопроводи. block.phase-weaver.name=Phase Weaver
block.fluxpump.name = Флюсовий насос block.pulverizer.name=Pulverizer
block.fluxpump.fulldescription = Розширений варіант насоса. Зберігає більше рідини та перекачує швидше. block.cryofluidmixer.name=Cryofluid Mixer
block.smelter.name = Плавильня block.melter.name=Melter
block.smelter.fulldescription = Основний ремісничий блок. Коли вводиться 1 залізо та 1 вугілля в якості палива, виводить одну сталь. Рекомендується вводити залізо та вугілля на різних поясах, щоб запобігти засміченню. block.incinerator.name=Incinerator
block.crucible.name = Тигель block.biomattercompressor.name=Biomatter Compressor
block.crucible.fulldescription = Розширений блок обробки. При введенні 1 титану, 1 сталі та 1 вугілля в якості пального, виводить один дирний. Рекомендується вводити вугілля, сталь та титан на різних поясах, щоб запобігти засміченню. block.separator.name=Separator
block.coalpurifier.name = вугільний екстрактор block.centrifuge.name=Centrifuge
block.coalpurifier.fulldescription = Основний екстрактор. Виходить вугілля при постачанні великої кількості води та каменю. block.power-node.name=Power Node
block.titaniumpurifier.name = Титановий екстрактор block.power-node-large.name=Large Power Node
block.titaniumpurifier.fulldescription = Стандартний блок екстрактора. Виходить титан при постачанні великої кількості води та заліза. block.battery.name=Battery
block.oilrefinery.name = Нафтопереробний завод block.battery-large.name=Large Battery
block.oilrefinery.fulldescription = Очищує велику кількість нафти і перетворює на вугілля. Корисний для заправки вугільних башточок, коли вугільні родовища є дефіцитними. block.combustion-generator.name=Combustion Generator
block.stoneformer.name = Кам'янний екстрактор block.turbine-generator.name=Turbine Generator
block.stoneformer.fulldescription = Здавлюється рідка лава в камінь. Корисно для виготовлення великої кількості каменю для очищувачів вугілля. block.tungsten-drill.name=Tungsten Drill
block.lavasmelter.name = Лавовий завод block.carbide-drill.name=Carbide Drill
block.lavasmelter.fulldescription = Використовує лаву для перетворення залізо на сталь. Альтернатива плавильні. Корисно в ситуаціях, коли вугілля є дефіцитним. block.laser-drill.name=Laser Drill
block.stonedrill.name = Кам'янна свердловина block.water-extractor.name=Water Extractor
block.stonedrill.fulldescription = Основна свердловина.Розміщюється на кам'яній плитці виводить камінь повільними темпами. block.cultivator.name=Cultivator
block.irondrill.name = Залізна свердловина block.dart-ship-factory.name=Dart Ship Factory
block.irondrill.fulldescription = Базова свердловина.Розміщюється на родовищі залізної руди, випускає залізо в повільному темпі. block.delta-mech-factory.name=Delta Mech Factory
block.coaldrill.name = Вугільна свердловина block.dronefactory.name=Drone Factory
block.coaldrill.fulldescription = Базова свердловина.Розміщюється на родовищі вугільної руди ,видобуває вугілля повільними темпами. block.repairpoint.name=Repair Point
block.thoriumdrill.name = Уранова свердловина block.resupplypoint.name=Resupply Point
block.thoriumdrill.fulldescription = Продвинута свердловина. Розміщюється на родовищі уранової руди.Видобуток урану відбувається повільними темпами. block.liquidtank.name=Liquid Tank
block.titaniumdrill.name = Титанова свердловина block.bridgeconduit.name=Bridge Conduit
block.titaniumdrill.fulldescription = Продвинута свердловина.Розміщюється на родовищі титанової руди, Видобуток титану відбувається повільним темпом. block.mechanical-pump.name=Mechanical Pump
block.omnidrill.name = Убер свердловина block.itemsource.name=Item Source
block.omnidrill.fulldescription = Кінцева свердловина.Дуже швидко видобуває будь-який вид руди. block.itemvoid.name=Item Void
block.coalgenerator.name = Вугільний генератор block.liquidsource.name=Liquid Source
block.coalgenerator.fulldescription = Основний генератор. Генерує енергію з вугілля. Виводиться потужність лазерів на 4 сторони. block.powervoid.name=Power Void
block.thermalgenerator.name = Теплогенератор block.powerinfinite.name=Power Infinite
block.thermalgenerator.fulldescription = Генерує енергію від лави. Виводиться потужність лазерів на 4 сторони. block.unloader.name=Unloader
block.combustiongenerator.name = Генератор горіння block.sortedunloader.name=Sorted Unloader
block.combustiongenerator.fulldescription = Генерує енергію з нафти. Виводиться потужність лазерів на 4 сторони. block.vault.name=Vault
block.rtgenerator.name = RTG генератор block.wave.name=Wave
block.rtgenerator.fulldescription = Генерує невелику кількість енергії з радіоактивного розпаду урану. Виводиться потужність лазерів на 4 сторони. block.swarmer.name=Swarmer
block.nuclearreactor.name = Ядерний реактор block.salvo.name=Salvo
block.nuclearreactor.fulldescription = Розширений варіант RTG Generator і кінцевий генератор електроенергії. Генерує енергію з урану. Потребує постійного водяного охолодження.Сильно вибухне якщо не буде постачання води у великії кількості block.ripple.name=Ripple
block.turret.name = Турель block.phase-conveyor.name=Phase Conveyor
block.turret.fulldescription = Базова, дешева турель. Використовує камінь для боєприпасів. Має трохи більше діапазону, ніж подвійна турель. block.bridge-conveyor.name=Bridge Conveyor
block.doubleturret.name = Подвійна турель block.plastanium-compressor.name=Plastanium Compressor
block.doubleturret.fulldescription = Дещо потужна версія турель. Використовує камінь для боєприпасів. Значно більший урон, але менший діапазон. Вистрілює дві кулі. block.pyratite-mixer.name=Pyratite Mixer
block.machineturret.name = Кулеметна турель block.blast-mixer.name=Blast Mixer
block.machineturret.fulldescription = Стандартна всеосяжна турель. Використовує залізо для боєприпасів. Має швидку швидкість пострілу і гідну шкоду. block.solidifer.name=Solidifer
block.shotgunturret.name = Розріджуюча турель block.solar-panel.name=Solar Panel
block.shotgunturret.fulldescription = Стандартна турель. Використовує залізо для боєприпасів. Вистрілює 7 куль навколо себе.Наносить значних ушкоджень,звісно якщо поцілить :) block.solar-panel-large.name=Large Solar Panel
block.flameturret.name = Вогнемет block.oil-extractor.name=Oil Extractor
block.flameturret.fulldescription = Продвинута турель ближнього діапазону. Використовує вугілля для боєприпасів. Має дуже низький радіус, але дуже високий збиток. Добре для близьких дистанцій. Рекомендується використовувати за стінами. block.javelin-ship-factory.name=Javelin Ship factory
block.sniperturret.name = Лазерна турель. block.drone-factory.name=Drone Factory
block.sniperturret.fulldescription = Продвинута далекобійна турель. Використовує сталь для боєприпасів. Дуже високий збиток, але низький рівень урону. Дорогі для використання, але можуть бути розташовані далеко від ліній ворога через його радіус. block.fabricator-factory.name=Fabricator Factory
block.mortarturret.name = Флак турель block.repair-point.name=Repair Point
block.mortarturret.fulldescription = Продвинута,неточна турель. Використовує вугілля для боєприпасів. Стріляє кулями, що вибухають у шрапнеллв. Корисне для великих натовпів ворогів. block.resupply-point.name=Resupply Point
block.laserturret.name = Лазерна турель block.pulse-conduit.name=Pulse Conduit
block.laserturret.fulldescription = Продвинута однопушечна турель. Використовує енергію. Хороша на середніх дистанціях. Ніколи не пропускає. block.phase-conduit.name=Phase Conduit
block.waveturret.name = Тесла block.liquid-router.name=Liquid Router
block.waveturret.fulldescription = Передова багатоцільова турель. Використовує енергію. Середній радіус. Ніколи не пропускає. Активно знижує, але може вражати декількох ворогів одночасно з ланцюговим освітленням. block.liquid-tank.name=Liquid Tank
block.plasmaturret.name = Плазмова турель block.liquid-junction.name=Liquid Junction
block.plasmaturret.fulldescription = Дуже продвинута версія Вогнеметної турелі. Використовує вугілля як боєприпаси. Дуже високий урон, від близької до середньої дистанції. block.bridge-conduit.name=Bridge Conduit
block.chainturret.name = Уранова турель block.rotary-pump.name=Rotary Pump
block.chainturret.fulldescription = Остаточна швидкістна вежа. Використовує уран як боєприпаси. Вистрілює великі кулі при високій швидкості вогню. Середній радіус. Промінь кілька плиток. Надзвичайно жорсткий. block.nuclear-reactor.name=Nuclear Reactor
block.titancannon.name = Титанова гармата
block.titancannon.fulldescription = Найбільш далекобійна турель. Використовує уран як боєприпаси. Вистрілює великі снаряди. Далекобійний. Промінь кілька плиток. Надзвичайно жорсткий.
block.playerspawn.name = Спавн Гравця
block.enemyspawn.name = Спавн ворогів

View File

@@ -3,6 +3,8 @@ precision mediump float;
precision mediump int; precision mediump int;
#endif #endif
#define SPACE 1.0
uniform sampler2D u_texture; uniform sampler2D u_texture;
uniform vec4 u_color; uniform vec4 u_color;
@@ -11,30 +13,15 @@ uniform vec2 u_texsize;
varying vec4 v_color; varying vec4 v_color;
varying vec2 v_texCoord; varying vec2 v_texCoord;
bool id(vec4 v){
return v.a > 0.1;
}
void main() { void main() {
vec2 T = v_texCoord.xy;
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y); vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
bool any = false; vec4 c = texture2D(u_texture, v_texCoord.xy);
float step = 1.0; gl_FragColor = mix(c * v_color, u_color,
(1.0-step(0.1, texture2D(u_texture, v_texCoord.xy).a)) *
vec4 c = texture2D(u_texture, T); step(0.1, texture2D(u_texture, v_texCoord.xy + vec2(0, SPACE) * v).a +
texture2D(u_texture, v_texCoord.xy + vec2(0, -SPACE) * v).a +
if(texture2D(u_texture, T).a < 0.1 && texture2D(u_texture, v_texCoord.xy + vec2(SPACE, 0) * v).a +
(id(texture2D(u_texture, T + vec2(0, step) * v)) || id(texture2D(u_texture, T + vec2(0, -step) * v)) || texture2D(u_texture, v_texCoord.xy + vec2(-SPACE, 0) * v).a));
id(texture2D(u_texture, T + vec2(step, 0) * v)) || id(texture2D(u_texture, T + vec2(-step, 0) * v))))
any = true;
if(any){
gl_FragColor = u_color;
}else{
gl_FragColor = c * v_color;
}
} }

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

@@ -4,21 +4,19 @@
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Tile" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Tile" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.Content" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.Content" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.Maps" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.Maps" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.Player" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.units.BaseUnit" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Map" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.Map" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.SpawnGroup" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.SpawnGroup" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.core.GameState" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.core.GameState" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.EventType" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.EventType" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.SaveFileVersion" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.io.SaveFileVersion" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.type.Recipe" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.ucore.entities.impl.EffectEntity" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.ucore.entities.impl.EffectEntity" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packets" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packets" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packet" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Packet" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.effect" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.effect" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.bullet.Bullet" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.entities.bullet.Bullet" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.type.Recipe" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.game.Team" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Streamable" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.net.Streamable" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.meta.BlockBar" /> <extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.meta.BlockBar" />
<extend-configuration-property name="gdx.reflect.include" value="io.anuke.mindustry.world.mapgen.WorldGenerator" />
<extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.utils.Predicate" /> <extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.utils.Predicate" />
</module> </module>

View File

@@ -1,6 +1,5 @@
package io.anuke.mindustry; package io.anuke.mindustry;
import com.badlogic.gdx.utils.async.AsyncExecutor;
import io.anuke.mindustry.core.*; import io.anuke.mindustry.core.*;
import io.anuke.mindustry.io.BundleLoader; import io.anuke.mindustry.io.BundleLoader;
import io.anuke.ucore.core.Timers; import io.anuke.ucore.core.Timers;
@@ -10,7 +9,6 @@ import io.anuke.ucore.util.Log;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class Mindustry extends ModuleCore { public class Mindustry extends ModuleCore {
private AsyncExecutor exec = new AsyncExecutor(1);
@Override @Override
public void init(){ public void init(){

View File

@@ -168,7 +168,7 @@ public class Vars{
for(EntityGroup<?> group : Entities.getAllGroups()){ for(EntityGroup<?> group : Entities.getAllGroups()){
group.setRemoveListener(entity -> { group.setRemoveListener(entity -> {
if(entity instanceof SyncTrait && Net.client()){ if(entity instanceof SyncTrait && Net.client()){
netClient.addRemovedEntity(((SyncTrait) entity).getID()); netClient.addRemovedEntity((entity).getID());
} }
}); });
} }

View File

@@ -7,18 +7,11 @@ import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.type.Liquid;
public class Liquids implements ContentList { public class Liquids implements ContentList {
public static Liquid none, water, lava, oil, cryofluid; public static Liquid water, lava, oil, cryofluid;
@Override @Override
public void load() { public void load() {
none = new Liquid("none", Color.CLEAR){
@Override
public boolean isHidden(){
return true;
}
};
water = new Liquid("water", Color.valueOf("486acd")) { water = new Liquid("water", Color.valueOf("486acd")) {
{ {
heatCapacity = 0.4f; heatCapacity = 0.4f;
@@ -48,8 +41,8 @@ public class Liquids implements ContentList {
cryofluid = new Liquid("cryofluid", Color.SKY) { cryofluid = new Liquid("cryofluid", Color.SKY) {
{ {
heatCapacity = 0.75f; heatCapacity = 0.9f;
temperature = 0.4f; temperature = 0.25f;
tier = 1; tier = 1;
effect = StatusEffects.freezing; effect = StatusEffects.freezing;
} }

View File

@@ -48,7 +48,7 @@ public class Mechs implements ContentList {
}}; }};
dart = new Mech("dart-ship", true){{ dart = new Mech("dart-ship", true){{
drillPower = -1; drillPower = 1;
speed = 0.4f; speed = 0.4f;
maxSpeed = 3f; maxSpeed = 3f;
drag = 0.1f; drag = 0.1f;

View File

@@ -44,11 +44,11 @@ public class Recipes implements ContentList{
//starter lead transporation //starter lead transporation
new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.lead, 2)); new Recipe(distribution, DistributionBlocks.junction, new ItemStack(Items.lead, 2));
new Recipe(distribution, DistributionBlocks.router, new ItemStack(Items.lead, 6)); new Recipe(distribution, DistributionBlocks.splitter, new ItemStack(Items.lead, 6));
//advanced carbide transporation //advanced carbide transporation
new Recipe(distribution, DistributionBlocks.splitter, new ItemStack(Items.carbide, 2), new ItemStack(Items.tungsten, 2)); //new Recipe(distribution, DistributionBlocks.splitter, new ItemStack(Items.carbide, 2), new ItemStack(Items.tungsten, 2));
new Recipe(distribution, DistributionBlocks.multiplexer, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8)); new Recipe(distribution, DistributionBlocks.distributor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8));
new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 4)); new Recipe(distribution, DistributionBlocks.sorter, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 4));
new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 8)); new Recipe(distribution, DistributionBlocks.overflowGate, new ItemStack(Items.carbide, 4), new ItemStack(Items.tungsten, 8));
new Recipe(distribution, DistributionBlocks.bridgeConveyor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8)); new Recipe(distribution, DistributionBlocks.bridgeConveyor, new ItemStack(Items.carbide, 8), new ItemStack(Items.tungsten, 8));

View File

@@ -145,17 +145,14 @@ public class Blocks extends BlockList implements ContentList{
rock = new Rock("rock") {{ rock = new Rock("rock") {{
variants = 2; variants = 2;
varyShadow = true;
}}; }};
icerock = new Rock("icerock") {{ icerock = new Rock("icerock") {{
variants = 2; variants = 2;
varyShadow = true;
}}; }};
blackrock = new Rock("blackrock") {{ blackrock = new Rock("blackrock") {{
variants = 1; variants = 1;
varyShadow = true;
}}; }};
} }
} }

View File

@@ -13,52 +13,51 @@ import io.anuke.mindustry.world.blocks.production.*;
public class CraftingBlocks extends BlockList implements ContentList { public class CraftingBlocks extends BlockList implements ContentList {
public static Block smelter, arcsmelter, siliconsmelter, plastaniumCompressor, phaseWeaver, alloysmelter, alloyfuser, public static Block smelter, arcsmelter, siliconsmelter, plastaniumCompressor, phaseWeaver, alloysmelter, alloyfuser,
pyratiteMixer, blastMixer, pyratiteMixer, blastMixer,
cryofluidmixer, melter, separator, centrifuge, biomatterCompressor, pulverizer, oilRefinery, solidifier, incinerator; cryofluidmixer, melter, separator, centrifuge, biomatterCompressor, pulverizer, solidifier, incinerator;
@Override @Override
public void load() { public void load() {
smelter = new Smelter("smelter") {{ smelter = new Smelter("smelter") {{
health = 70; health = 70;
inputs = new ItemStack[]{new ItemStack(Items.tungsten, 3)};
fuel = Items.coal;
result = Items.carbide; result = Items.carbide;
craftTime = 45f; craftTime = 45f;
burnDuration = 35f; burnDuration = 35f;
useFlux = true; useFlux = true;
consumes.items(new ItemStack[]{new ItemStack(Items.tungsten, 3)});
consumes.item(Items.coal);
}}; }};
arcsmelter = new PowerSmelter("arc-smelter") {{ arcsmelter = new PowerSmelter("arc-smelter") {{
health = 90; health = 90;
craftEffect = BlockFx.smeltsmoke; craftEffect = BlockFx.smeltsmoke;
inputs = new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.tungsten, 2)};
result = Items.carbide; result = Items.carbide;
powerUse = 0.1f;
craftTime = 30f; craftTime = 30f;
size = 2; size = 2;
useFlux = true; useFlux = true;
fluxNeeded = 2; fluxNeeded = 2;
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.tungsten, 2)});
consumes.power(0.1f);
}}; }};
siliconsmelter = new PowerSmelter("silicon-smelter") {{ siliconsmelter = new PowerSmelter("silicon-smelter") {{
health = 90; health = 90;
craftEffect = BlockFx.smeltsmoke; craftEffect = BlockFx.smeltsmoke;
inputs = new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.sand, 2)};
result = Items.silicon; result = Items.silicon;
powerUse = 0.05f;
craftTime = 40f; craftTime = 40f;
size = 2; size = 2;
hasLiquids = false; hasLiquids = false;
flameColor = Color.valueOf("ffef99"); flameColor = Color.valueOf("ffef99");
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.sand, 2)});
consumes.power(0.05f);
}}; }};
plastaniumCompressor = new PlastaniumCompressor("plastanium-compressor") {{ plastaniumCompressor = new PlastaniumCompressor("plastanium-compressor") {{
inputLiquid = Liquids.oil;
inputItem = new ItemStack(Items.titanium, 2);
hasItems = true; hasItems = true;
liquidUse = 0.3f;
liquidCapacity = 60f; liquidCapacity = 60f;
powerUse = 0.5f;
craftTime = 80f; craftTime = 80f;
output = Items.plastanium; output = Items.plastanium;
itemCapacity = 30; itemCapacity = 30;
@@ -67,66 +66,75 @@ public class CraftingBlocks extends BlockList implements ContentList {
hasPower = hasLiquids = true; hasPower = hasLiquids = true;
craftEffect = BlockFx.formsmoke; craftEffect = BlockFx.formsmoke;
updateEffect = BlockFx.plasticburn; updateEffect = BlockFx.plasticburn;
consumes.liquid(Liquids.oil, 0.3f);
consumes.power(0.4f);
consumes.item(Items.titanium, 2);
}}; }};
phaseWeaver = new PhaseWeaver("phase-weaver") {{ phaseWeaver = new PhaseWeaver("phase-weaver") {{
health = 90; health = 90;
craftEffect = BlockFx.smeltsmoke; craftEffect = BlockFx.smeltsmoke;
inputs = new ItemStack[]{new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10)};
result = Items.phasematter; result = Items.phasematter;
powerUse = 0.4f;
craftTime = 120f; craftTime = 120f;
size = 2; size = 2;
consumes.items(new ItemStack[]{new ItemStack(Items.thorium, 4), new ItemStack(Items.sand, 10)});
consumes.power(0.5f);
}}; }};
alloysmelter = new PowerSmelter("alloy-smelter") {{ alloysmelter = new PowerSmelter("alloy-smelter") {{
health = 90; health = 90;
craftEffect = BlockFx.smeltsmoke; craftEffect = BlockFx.smeltsmoke;
inputs = new ItemStack[]{new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)};
result = Items.surgealloy; result = Items.surgealloy;
powerUse = 0.3f;
craftTime = 50f; craftTime = 50f;
size = 2; size = 2;
useFlux = true; useFlux = true;
fluxNeeded = 4; fluxNeeded = 4;
consumes.power(0.3f);
consumes.items(new ItemStack[]{new ItemStack(Items.titanium, 2), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)});
}}; }};
alloyfuser = new PowerSmelter("alloy-fuser") {{ alloyfuser = new PowerSmelter("alloy-fuser") {{
health = 90; health = 90;
craftEffect = BlockFx.smeltsmoke; craftEffect = BlockFx.smeltsmoke;
inputs = new ItemStack[]{new ItemStack(Items.titanium, 3), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)};
result = Items.surgealloy; result = Items.surgealloy;
powerUse = 0.4f;
craftTime = 30f; craftTime = 30f;
size = 3; size = 3;
useFlux = true; useFlux = true;
fluxNeeded = 4; fluxNeeded = 4;
consumes.items(new ItemStack[]{new ItemStack(Items.titanium, 3), new ItemStack(Items.lead, 4), new ItemStack(Items.silicon, 3), new ItemStack(Items.plastanium, 2)});
consumes.power(0.4f);
}}; }};
cryofluidmixer = new LiquidMixer("cryofluidmixer") {{ cryofluidmixer = new LiquidMixer("cryofluidmixer") {{
health = 200; health = 200;
inputLiquid = Liquids.water;
outputLiquid = Liquids.cryofluid; outputLiquid = Liquids.cryofluid;
inputItem = Items.titanium;
liquidPerItem = 50f; liquidPerItem = 50f;
itemCapacity = 50; itemCapacity = 50;
powerUse = 0.1f;
size = 2; size = 2;
hasPower = true;
consumes.power(0.1f);
consumes.item(Items.titanium);
consumes.liquid(Liquids.water, 0.3f);
}}; }};
blastMixer = new GenericCrafter("blast-mixer") {{ blastMixer = new GenericCrafter("blast-mixer") {{
itemCapacity = 20; itemCapacity = 20;
hasItems = true; hasItems = true;
hasPower = true; hasPower = true;
inputLiquid = Liquids.oil; hasLiquids = true;
liquidUse = 0.05f;
inputItem = new ItemStack(Items.pyratite, 1);
output = Items.blastCompound; output = Items.blastCompound;
powerUse = 0.04f;
size = 2; size = 2;
consumes.liquid(Liquids.oil, 0.05f);
consumes.item(Items.pyratite, 1);
consumes.power(0.04f);
}}; }};
pyratiteMixer = new PowerSmelter("pyratite-mixer") {{ pyratiteMixer = new PowerSmelter("pyratite-mixer") {{
@@ -134,27 +142,27 @@ public class CraftingBlocks extends BlockList implements ContentList {
itemCapacity = 20; itemCapacity = 20;
hasItems = true; hasItems = true;
hasPower = true; hasPower = true;
inputs = new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2)};
result = Items.pyratite; result = Items.pyratite;
powerUse = 0.02f;
size = 2; size = 2;
consumes.power(0.02f);
consumes.items(new ItemStack[]{new ItemStack(Items.coal, 1), new ItemStack(Items.lead, 2), new ItemStack(Items.sand, 2)});
}}; }};
melter = new PowerCrafter("melter") {{ melter = new PowerCrafter("melter") {{
health = 200; health = 200;
outputLiquid = Liquids.lava; outputLiquid = Liquids.lava;
outputLiquidAmount = 0.05f; outputLiquidAmount = 0.75f;
input = new ItemStack(Items.stone, 1);
itemCapacity = 50; itemCapacity = 50;
craftTime = 10f; craftTime = 10f;
powerUse = 0.1f;
hasLiquids = hasPower = true; hasLiquids = hasPower = true;
consumes.power(0.1f);
consumes.item(Items.stone, 2);
}}; }};
separator = new Separator("separator") {{ separator = new Separator("separator") {{
liquid = Liquids.water;
item = Items.stone;
results = new Item[]{ results = new Item[]{
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand,
@@ -164,15 +172,15 @@ public class CraftingBlocks extends BlockList implements ContentList {
Items.coal, Items.coal, Items.coal, Items.coal,
Items.titanium Items.titanium
}; };
liquidUse = 0.2f;
filterTime = 40f; filterTime = 40f;
itemCapacity = 40; itemCapacity = 40;
health = 50; health = 50;
consumes.item(Items.stone, 2);
consumes.liquid(Liquids.water, 0.3f);
}}; }};
centrifuge = new Separator("centrifuge") {{ centrifuge = new Separator("centrifuge") {{
liquid = Liquids.water;
item = Items.stone;
results = new Item[]{ results = new Item[]{
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand, Items.sand,
@@ -184,9 +192,7 @@ public class CraftingBlocks extends BlockList implements ContentList {
Items.thorium, Items.thorium,
}; };
liquidUse = 0.3f;
hasPower = true; hasPower = true;
powerUse = 0.2f;
filterTime = 15f; filterTime = 15f;
itemCapacity = 60; itemCapacity = 60;
health = 50 * 4; health = 50 * 4;
@@ -195,53 +201,49 @@ public class CraftingBlocks extends BlockList implements ContentList {
spinnerThickness = 1.5f; spinnerThickness = 1.5f;
spinnerSpeed = 3f; spinnerSpeed = 3f;
size = 2; size = 2;
consumes.item(Items.stone, 2);
consumes.power(0.2f);
consumes.liquid(Liquids.water, 0.5f);
}}; }};
biomatterCompressor = new Compressor("biomattercompressor") {{ biomatterCompressor = new Compressor("biomattercompressor") {{
input = new ItemStack(Items.biomatter, 1);
liquidCapacity = 60f; liquidCapacity = 60f;
itemCapacity = 50; itemCapacity = 50;
powerUse = 0.06f;
craftTime = 25f; craftTime = 25f;
outputLiquid = Liquids.oil; outputLiquid = Liquids.oil;
outputLiquidAmount = 0.1f; outputLiquidAmount = 0.14f;
size = 2; size = 2;
health = 320; health = 320;
hasLiquids = true; hasLiquids = true;
consumes.item(Items.biomatter, 1);
consumes.power(0.06f);
}}; }};
pulverizer = new Pulverizer("pulverizer") {{ pulverizer = new Pulverizer("pulverizer") {{
inputItem = new ItemStack(Items.stone, 2);
itemCapacity = 40; itemCapacity = 40;
powerUse = 0.2f;
output = Items.sand; output = Items.sand;
health = 80; health = 80;
craftEffect = BlockFx.pulverize; craftEffect = BlockFx.pulverize;
craftTime = 60f; craftTime = 60f;
updateEffect = BlockFx.pulverizeSmall; updateEffect = BlockFx.pulverizeSmall;
hasItems = hasPower = true; hasItems = hasPower = true;
}};
oilRefinery = new GenericCrafter("oilrefinery") {{ consumes.item(Items.stone, 2);
inputLiquid = Liquids.oil; consumes.power(0.2f);
powerUse = 0.05f;
liquidUse = 0.1f;
liquidCapacity = 56f;
output = Items.coal;
health = 80;
craftEffect = BlockFx.purifyoil;
hasItems = hasLiquids = hasPower = true;
}}; }};
solidifier = new GenericCrafter("solidifer") {{ solidifier = new GenericCrafter("solidifer") {{
inputLiquid = Liquids.lava;
liquidUse = 1f;
liquidCapacity = 21f; liquidCapacity = 21f;
craftTime = 14; craftTime = 14;
output = Items.stone; output = Items.stone;
itemCapacity = 20;
health = 80; health = 80;
craftEffect = BlockFx.purifystone; craftEffect = BlockFx.purifystone;
hasLiquids = hasItems = true; hasLiquids = hasItems = true;
consumes.liquid(Liquids.lava, 1f);
}}; }};
incinerator = new Incinerator("incinerator") {{ incinerator = new Incinerator("incinerator") {{

View File

@@ -56,7 +56,7 @@ public class DebugBlocks extends BlockList implements ContentList{
@Override @Override
public void update(Tile tile) { public void update(Tile tile) {
SorterEntity entity = tile.entity(); SorterEntity entity = tile.entity();
entity.items.items[entity.sortItem.id] = 1; entity.items.set(entity.sortItem, 1);
tryDump(tile, entity.sortItem); tryDump(tile, entity.sortItem);
} }
@@ -79,9 +79,8 @@ public class DebugBlocks extends BlockList implements ContentList{
public void update(Tile tile) { public void update(Tile tile) {
LiquidSourceEntity entity = tile.entity(); LiquidSourceEntity entity = tile.entity();
tile.entity.liquids.amount = liquidCapacity; tile.entity.liquids.add(entity.source, liquidCapacity);
tile.entity.liquids.liquid = entity.source; tryDumpLiquid(tile, entity.source);
tryDumpLiquid(tile);
} }
@Override @Override

View File

@@ -35,11 +35,11 @@ public class DefenseBlocks extends BlockList implements ContentList {
}}; }};
thoriumWall = new Wall("thorium-wall") {{ thoriumWall = new Wall("thorium-wall") {{
health = 110 * wallHealthMultiplier; health = 200 * wallHealthMultiplier;
}}; }};
thoriumWallLarge = new Wall("thorium-wall-large") {{ thoriumWallLarge = new Wall("thorium-wall-large") {{
health = 110 * wallHealthMultiplier*4; health = 200 * wallHealthMultiplier*4;
size = 2; size = 2;
}}; }};

View File

@@ -5,7 +5,7 @@ import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.distribution.*; import io.anuke.mindustry.world.blocks.distribution.*;
public class DistributionBlocks extends BlockList implements ContentList{ public class DistributionBlocks extends BlockList implements ContentList{
public static Block conveyor, titaniumconveyor, router, multiplexer, junction, public static Block conveyor, titaniumconveyor, distributor, junction,
bridgeConveyor, phaseConveyor, sorter, splitter, overflowGate, massDriver; bridgeConveyor, phaseConveyor, sorter, splitter, overflowGate, massDriver;
@Override @Override
@@ -21,13 +21,6 @@ public class DistributionBlocks extends BlockList implements ContentList{
speed = 0.07f; speed = 0.07f;
}}; }};
router = new Router("router");
multiplexer = new Router("multiplexer") {{
size = 2;
itemCapacity = 80;
}};
junction = new Junction("junction") {{ junction = new Junction("junction") {{
speed = 26; speed = 26;
capacity = 32; capacity = 32;
@@ -46,6 +39,10 @@ public class DistributionBlocks extends BlockList implements ContentList{
splitter = new Splitter("splitter"); splitter = new Splitter("splitter");
distributor = new Splitter("distributor") {{
size = 2;
}};
overflowGate = new OverflowGate("overflow-gate"); overflowGate = new OverflowGate("overflow-gate");
massDriver = new MassDriver("mass-driver"){{ massDriver = new MassDriver("mass-driver"){{

View File

@@ -20,15 +20,16 @@ public class LiquidBlocks extends BlockList implements ContentList{
rotaryPump = new Pump("rotary-pump") {{ rotaryPump = new Pump("rotary-pump") {{
shadow = "shadow-rounded-2"; shadow = "shadow-rounded-2";
pumpAmount = 0.25f; pumpAmount = 0.25f;
powerUse = 0.015f; consumes.power(0.015f);
liquidCapacity = 30f; liquidCapacity = 30f;
hasPower = true;
size = 2; size = 2;
tier = 1; tier = 1;
}}; }};
thermalPump = new Pump("thermal-pump") {{ thermalPump = new Pump("thermal-pump") {{
pumpAmount = 0.3f; pumpAmount = 0.3f;
powerUse = 0.02f; consumes.power(0.05f);
liquidCapacity = 40f; liquidCapacity = 40f;
size = 2; size = 2;
tier = 2; tier = 2;

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.content.blocks; package io.anuke.mindustry.content.blocks;
import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.content.fx.BlockFx;
import io.anuke.mindustry.type.ContentList; import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
@@ -32,7 +33,7 @@ public class PowerBlocks extends BlockList implements ContentList {
powerCapacity = 40f; powerCapacity = 40f;
itemDuration = 30f; itemDuration = 30f;
powerPerLiquid = 0.7f; powerPerLiquid = 0.7f;
auxLiquidUse = 0.05f; consumes.liquid(Liquids.water, 0.05f);
size = 2; size = 2;
}}; }};

View File

@@ -29,17 +29,17 @@ public class ProductionBlocks extends BlockList implements ContentList {
laserdrill = new Drill("laser-drill") {{ laserdrill = new Drill("laser-drill") {{
drillTime = 180; drillTime = 180;
size = 2; size = 2;
powerUse = 0.2f;
hasPower = true; hasPower = true;
tier = 4; tier = 4;
updateEffect = BlockFx.pulverizeMedium; updateEffect = BlockFx.pulverizeMedium;
drillEffect = BlockFx.mineBig; drillEffect = BlockFx.mineBig;
consumes.power(0.2f);
}}; }};
blastdrill = new Drill("blast-drill") {{ blastdrill = new Drill("blast-drill") {{
drillTime = 120; drillTime = 120;
size = 3; size = 3;
powerUse = 0.5f;
drawRim = true; drawRim = true;
hasPower = true; hasPower = true;
tier = 5; tier = 5;
@@ -48,13 +48,14 @@ public class ProductionBlocks extends BlockList implements ContentList {
drillEffect = BlockFx.mineHuge; drillEffect = BlockFx.mineHuge;
rotateSpeed = 6f; rotateSpeed = 6f;
warmupSpeed = 0.01f; warmupSpeed = 0.01f;
consumes.power(0.5f);
}}; }};
plasmadrill = new Drill("plasma-drill") {{ plasmadrill = new Drill("plasma-drill") {{
heatColor = Color.valueOf("ff461b"); heatColor = Color.valueOf("ff461b");
drillTime = 90; drillTime = 90;
size = 4; size = 4;
powerUse = 0.7f;
hasLiquids = true; hasLiquids = true;
hasPower = true; hasPower = true;
tier = 5; tier = 5;
@@ -64,38 +65,43 @@ public class ProductionBlocks extends BlockList implements ContentList {
updateEffectChance = 0.04f; updateEffectChance = 0.04f;
drillEffect = BlockFx.mineHuge; drillEffect = BlockFx.mineHuge;
warmupSpeed = 0.005f; warmupSpeed = 0.005f;
consumes.power(0.7f);
}}; }};
waterextractor = new SolidPump("water-extractor") {{ waterextractor = new SolidPump("water-extractor") {{
result = Liquids.water; result = Liquids.water;
powerUse = 0.2f;
pumpAmount = 0.1f; pumpAmount = 0.1f;
size = 2; size = 2;
liquidCapacity = 30f; liquidCapacity = 30f;
rotateSpeed = 1.4f; rotateSpeed = 1.4f;
consumes.power(0.2f);
}}; }};
oilextractor = new Fracker("oil-extractor") {{ oilextractor = new Fracker("oil-extractor") {{
result = Liquids.oil; result = Liquids.oil;
inputLiquid = Liquids.water;
updateEffect = BlockFx.pulverize; updateEffect = BlockFx.pulverize;
liquidCapacity = 50f; liquidCapacity = 50f;
updateEffectChance = 0.05f; updateEffectChance = 0.05f;
inputLiquidUse = 0.3f; pumpAmount = 0.08f;
powerUse = 0.6f;
pumpAmount = 0.06f;
size = 3; size = 3;
liquidCapacity = 30f; liquidCapacity = 30f;
consumes.item(Items.sand);
consumes.power(0.5f);
consumes.liquid(Liquids.water, 0.3f);
}}; }};
cultivator = new Cultivator("cultivator") {{ cultivator = new Cultivator("cultivator") {{
result = Items.biomatter; result = Items.biomatter;
inputLiquid = Liquids.water;
liquidUse = 0.2f;
drillTime = 260; drillTime = 260;
size = 2; size = 2;
hasLiquids = true; hasLiquids = true;
hasPower = true; hasPower = true;
consumes.power(0.08f);
consumes.liquid(Liquids.water, 0.2f);
}}; }};
} }

View File

@@ -19,6 +19,7 @@ public class StorageBlocks extends BlockList implements ContentList {
vault = new Vault("vault") {{ vault = new Vault("vault") {{
size = 3; size = 3;
health = 600; health = 600;
itemCapacity = 2000;
}}; }};
unloader = new Unloader("unloader") {{ unloader = new Unloader("unloader") {{

View File

@@ -73,10 +73,10 @@ public class TurretBlocks extends BlockList implements ContentList {
health = 360; health = 360;
drawer = (tile, entity) -> { drawer = (tile, entity) -> {
Draw.rect(name, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90); Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
Draw.color(entity.liquids.liquid.color); Draw.color(entity.liquids.current().color);
Draw.alpha(entity.liquids.amount / liquidCapacity); Draw.alpha(entity.liquids.total() / liquidCapacity);
Draw.rect(name + "-liquid", tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90); Draw.rect(name + "-liquid", tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
Draw.color(); Draw.color();
}; };
@@ -145,7 +145,7 @@ public class TurretBlocks extends BlockList implements ContentList {
ammoUseEffect = ShootFx.shellEjectBig; ammoUseEffect = ShootFx.shellEjectBig;
drawer = (tile, entity) -> { drawer = (tile, entity) -> {
Draw.rect(name, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90); Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
float offsetx = (int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 3f); float offsetx = (int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 3f);
float offsety = -(int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 2f); float offsety = -(int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 2f);

View File

@@ -16,19 +16,16 @@ public class UnitBlocks extends BlockList implements ContentList {
type = UnitTypes.drone; type = UnitTypes.drone;
produceTime = 800; produceTime = 800;
size = 2; size = 2;
requirements = new ItemStack[]{ consumes.power(0.08f);
new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30) consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)});
};
}}; }};
fabricatorFactory = new UnitFactory("fabricator-factory") {{ fabricatorFactory = new UnitFactory("fabricator-factory") {{
type = UnitTypes.fabricator; type = UnitTypes.fabricator;
produceTime = 1600; produceTime = 1600;
size = 2; size = 2;
powerUse = 0.2f; consumes.power(0.2f);
requirements = new ItemStack[]{ consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)});
new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)
};
}}; }};
resupplyPoint = new ResupplyPoint("resupply-point") {{ resupplyPoint = new ResupplyPoint("resupply-point") {{

View File

@@ -20,7 +20,6 @@ import io.anuke.mindustry.input.MobileInput;
import io.anuke.mindustry.io.Map; import io.anuke.mindustry.io.Map;
import io.anuke.mindustry.io.Saves; import io.anuke.mindustry.io.Saves;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Recipe; import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.ui.dialogs.FloatingDialog; import io.anuke.mindustry.ui.dialogs.FloatingDialog;
import io.anuke.ucore.core.*; import io.anuke.ucore.core.*;
@@ -166,7 +165,9 @@ public class Control extends Module{
Player[] old = players; Player[] old = players;
players = new Player[index + 1]; players = new Player[index + 1];
System.arraycopy(old, 0, players, 0, old.length); System.arraycopy(old, 0, players, 0, old.length);
}
if(inputs.length != index + 1){
InputHandler[] oldi = inputs; InputHandler[] oldi = inputs;
inputs = new InputHandler[index + 1]; inputs = new InputHandler[index + 1];
System.arraycopy(oldi, 0, inputs, 0, oldi.length); System.arraycopy(oldi, 0, inputs, 0, oldi.length);
@@ -262,11 +263,7 @@ public class Control extends Module{
if(entity == null) return; if(entity == null) return;
for (int i = 0; i < entity.items.items.length; i++) { entity.items.forEach((item, amount) -> control.database().unlockContent(item));
if(entity.items.items[i] <= 0) continue;
Item item = Item.getByID(i);
control.database().unlockContent(item);
}
if(players[0].inventory.hasItem()){ if(players[0].inventory.hasItem()){
control.database().unlockContent(players[0].inventory.getItem().item); control.database().unlockContent(players[0].inventory.getItem().item);
@@ -274,7 +271,7 @@ public class Control extends Module{
for(int i = 0 ; i < Recipe.all().size; i ++){ for(int i = 0 ; i < Recipe.all().size; i ++){
Recipe recipe = Recipe.all().get(i); Recipe recipe = Recipe.all().get(i);
if(!recipe.debugOnly && entity.items.hasItems(recipe.requirements, 1.4f)){ if(!recipe.debugOnly && entity.items.has(recipe.requirements, 1.4f)){
if(control.database().unlockContent(recipe)){ if(control.database().unlockContent(recipe)){
ui.hudfrag.showUnlock(recipe); ui.hudfrag.showUnlock(recipe);
} }

View File

@@ -54,12 +54,12 @@ public class Logic extends Module {
if(debug) { if(debug) {
for (Item item : Item.all()) { for (Item item : Item.all()) {
if (item.type == ItemType.material) { if (item.type == ItemType.material) {
tile.entity.items.addItem(item, 1000); tile.entity.items.add(item, 1000);
} }
} }
}else{ }else{
tile.entity.items.addItem(Items.tungsten, 50); tile.entity.items.add(Items.tungsten, 50);
tile.entity.items.addItem(Items.lead, 20); tile.entity.items.add(Items.lead, 20);
} }
} }
} }
@@ -158,13 +158,6 @@ public class Logic extends Module {
for(EntityGroup group : unitGroups){ for(EntityGroup group : unitGroups){
if(!group.isEmpty()){ if(!group.isEmpty()){
EntityPhysics.collideGroups(bulletGroup, group); EntityPhysics.collideGroups(bulletGroup, group);
/*
for(EntityGroup other : unitGroups){
if(!other.isEmpty()){
EntityPhysics.collideGroups(group, other);
}
}*/
} }
} }

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.core; package io.anuke.mindustry.core;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.utils.Base64Coder; import com.badlogic.gdx.utils.Base64Coder;
import com.badlogic.gdx.utils.IntSet; import com.badlogic.gdx.utils.IntSet;
@@ -175,7 +176,7 @@ public class NetClient extends Module {
ui.loadfrag.hide(); ui.loadfrag.hide();
ui.join.hide(); ui.join.hide();
Net.setClientLoaded(true); Net.setClientLoaded(true);
Call.connectConfirm(); Gdx.app.postRunnable(Call::connectConfirm);
Timers.runTask(40f, Platform.instance::updateRPC); Timers.runTask(40f, Platform.instance::updateRPC);
} }
@@ -250,7 +251,7 @@ public class NetClient extends Module {
} }
@Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true) @Remote(variants = Variant.one, priority = PacketPriority.low, unreliable = true)
public static void onSnapshot(byte[] chunk, int snapshotID, short chunkID, short totalLength, int base){ public static void onSnapshot(byte[] chunk, int snapshotID, short chunkID, int totalLength, int base){
if(NetServer.showSnapshotSize) Log.info("Recieved snapshot: len {0} ID {1} chunkID {2} totalLength {3} base {4} client-base {5}", chunk.length, snapshotID, chunkID, totalLength, base, netClient.lastSnapshotBaseID); if(NetServer.showSnapshotSize) Log.info("Recieved snapshot: len {0} ID {1} chunkID {2} totalLength {3} base {4} client-base {5}", chunk.length, snapshotID, chunkID, totalLength, base, netClient.lastSnapshotBaseID);
//skip snapshot IDs that have already been recieved OR snapshots that are too far in front //skip snapshot IDs that have already been recieved OR snapshots that are too far in front

View File

@@ -449,7 +449,7 @@ public class NetServer extends Module{
/**Sends a raw byte[] snapshot to a client, splitting up into chunks when needed.*/ /**Sends a raw byte[] snapshot to a client, splitting up into chunks when needed.*/
private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){ private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){
if(bytes.length < maxSnapshotSize){ if(bytes.length < maxSnapshotSize){
Call.onSnapshot(userid, bytes, snapshotID, (short)0, (short)bytes.length, base); Call.onSnapshot(userid, bytes, snapshotID, (short)0, bytes.length, base);
}else{ }else{
int remaining = bytes.length; int remaining = bytes.length;
int offset = 0; int offset = 0;
@@ -464,7 +464,7 @@ public class NetServer extends Module{
}else { }else {
toSend = Arrays.copyOfRange(bytes, offset, Math.min(offset + maxSnapshotSize, bytes.length)); toSend = Arrays.copyOfRange(bytes, offset, Math.min(offset + maxSnapshotSize, bytes.length));
} }
Call.onSnapshot(userid, toSend, snapshotID, (short)chunkid, (short)bytes.length, base); Call.onSnapshot(userid, toSend, snapshotID, (short)chunkid, bytes.length, base);
remaining -= used; remaining -= used;
offset += used; offset += used;
@@ -494,14 +494,12 @@ public class NetServer extends Module{
return; return;
} }
String ip = player.con.address;
if(action == AdminAction.wave) { if(action == AdminAction.wave) {
//no verification is done, so admins can hypothetically spam waves //no verification is done, so admins can hypothetically spam waves
//not a real issue, because server owners may want to do just that //not a real issue, because server owners may want to do just that
state.wavetime = 0f; state.wavetime = 0f;
}else if(action == AdminAction.ban){ }else if(action == AdminAction.ban){
netServer.admins.banPlayerIP(ip); netServer.admins.banPlayerIP(other.con.address);
netServer.kick(other.con.id, KickReason.banned); netServer.kick(other.con.id, KickReason.banned);
Log.info("&lc{0} has banned {1}.", player.name, other.name); Log.info("&lc{0} has banned {1}.", player.name, other.name);
}else if(action == AdminAction.kick){ }else if(action == AdminAction.kick){

View File

@@ -4,8 +4,6 @@ import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Base64Coder; import com.badlogic.gdx.utils.Base64Coder;
import io.anuke.mindustry.core.ThreadHandler.ThreadProvider; import io.anuke.mindustry.core.ThreadHandler.ThreadProvider;
import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Settings;
import io.anuke.ucore.entities.EntityGroup;
import io.anuke.ucore.entities.trait.Entity;
import io.anuke.ucore.function.Consumer; import io.anuke.ucore.function.Consumer;
import io.anuke.ucore.scene.ui.TextField; import io.anuke.ucore.scene.ui.TextField;
@@ -87,7 +85,6 @@ public abstract class Platform {
@Override public void stop() {} @Override public void stop() {}
@Override public void notify(Object object) {} @Override public void notify(Object object) {}
@Override public void wait(Object object) {} @Override public void wait(Object object) {}
@Override public <T extends Entity> void switchContainer(EntityGroup<T> group) {}
}; };
} }

View File

@@ -219,12 +219,13 @@ public class Renderer extends RendererModule{
Graphics.endShaders(); Graphics.endShaders();
} }
drawAllTeams(false); drawAllTeams(false);
blocks.skipLayer(Layer.turret); blocks.skipLayer(Layer.turret);
blocks.drawBlocks(Layer.laser); blocks.drawBlocks(Layer.laser);
drawFlyerShadows();
drawAllTeams(true); drawAllTeams(true);
drawAndInterpolate(bulletGroup); drawAndInterpolate(bulletGroup);
@@ -251,6 +252,35 @@ public class Renderer extends RendererModule{
batch.end(); batch.end();
} }
private void drawFlyerShadows(){
Graphics.surface(effectSurface, true, false);
float trnsX = 12, trnsY = -13;
Graphics.end();
Core.batch.getTransformMatrix().translate(trnsX, trnsY, 0);
Graphics.begin();
for(EntityGroup<? extends BaseUnit> group : unitGroups){
if(!group.isEmpty()){
drawAndInterpolate(group, unit -> unit.isFlying() && !unit.isDead(), Unit::drawShadow);
}
}
if(!playerGroup.isEmpty()){
drawAndInterpolate(playerGroup, unit -> unit.isFlying() && !unit.isDead(), Unit::drawShadow);
}
Graphics.end();
Core.batch.getTransformMatrix().translate(-trnsX, -trnsY, 0);
Graphics.begin();
//TODO this actually isn't necessary
Draw.color(0, 0, 0, 0.15f);
Graphics.flushSurface();
Draw.color();
}
private void drawAllTeams(boolean flying){ private void drawAllTeams(boolean flying){
for(Team team : Team.all){ for(Team team : Team.all){
EntityGroup<BaseUnit> group = unitGroups[team.ordinal()]; EntityGroup<BaseUnit> group = unitGroups[team.ordinal()];

View File

@@ -1,20 +1,16 @@
package io.anuke.mindustry.core; package io.anuke.mindustry.core;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Queue;
import com.badlogic.gdx.utils.TimeUtils; import com.badlogic.gdx.utils.TimeUtils;
import io.anuke.ucore.core.Timers; import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.entities.EntityGroup;
import io.anuke.ucore.entities.EntityGroup.ArrayContainer;
import io.anuke.ucore.entities.trait.Entity;
import io.anuke.ucore.util.Log; import io.anuke.ucore.util.Log;
import static io.anuke.mindustry.Vars.control; import static io.anuke.mindustry.Vars.control;
import static io.anuke.mindustry.Vars.logic; import static io.anuke.mindustry.Vars.logic;
public class ThreadHandler { public class ThreadHandler {
private final Array<Runnable> toRun = new Array<>(); private final Queue<Runnable> toRun = new Queue<>();
private final ThreadProvider impl; private final ThreadProvider impl;
private float delta = 1f; private float delta = 1f;
private float smoothDelta = 1f; private float smoothDelta = 1f;
@@ -37,7 +33,7 @@ public class ThreadHandler {
public void run(Runnable r){ public void run(Runnable r){
if(enabled) { if(enabled) {
synchronized (toRun) { synchronized (toRun) {
toRun.add(r); toRun.addLast(r);
} }
}else{ }else{
r.run(); r.run();
@@ -55,7 +51,7 @@ public class ThreadHandler {
public void runDelay(Runnable r){ public void runDelay(Runnable r){
if(enabled) { if(enabled) {
synchronized (toRun) { synchronized (toRun) {
toRun.add(r); toRun.addLast(r);
} }
}else{ }else{
Gdx.app.postRunnable(r); Gdx.app.postRunnable(r);
@@ -89,9 +85,6 @@ public class ThreadHandler {
public void setEnabled(boolean enabled){ public void setEnabled(boolean enabled){
if(enabled){ if(enabled){
logic.doUpdate = false; logic.doUpdate = false;
for(EntityGroup<?> group : Entities.getAllGroups()){
impl.switchContainer(group);
}
Timers.runTask(2f, () -> { Timers.runTask(2f, () -> {
impl.start(this::runLogic); impl.start(this::runLogic);
this.enabled = true; this.enabled = true;
@@ -99,9 +92,6 @@ public class ThreadHandler {
}else{ }else{
this.enabled = false; this.enabled = false;
impl.stop(); impl.stop();
for(EntityGroup<?> group : Entities.getAllGroups()){
group.setContainer(new ArrayContainer<>());
}
Timers.runTask(2f, () -> { Timers.runTask(2f, () -> {
logic.doUpdate = true; logic.doUpdate = true;
}); });
@@ -113,7 +103,7 @@ public class ThreadHandler {
} }
public boolean doInterpolate(){ public boolean doInterpolate(){
return enabled && Math.abs(Gdx.graphics.getFramesPerSecond() - getTPS()) > 15; return enabled && Gdx.graphics.getFramesPerSecond() - getTPS() > 20 && getTPS() < 30;
} }
public boolean isOnThread(){ public boolean isOnThread(){
@@ -125,11 +115,17 @@ public class ThreadHandler {
while (true) { while (true) {
long time = TimeUtils.nanoTime(); long time = TimeUtils.nanoTime();
synchronized (toRun) { while(true){
for(Runnable r : toRun){ Runnable r;
r.run(); synchronized (toRun){
if(toRun.size > 0){
r = toRun.removeFirst();
}else{
break;
} }
toRun.clear(); }
r.run();
} }
logic.doUpdate = true; logic.doUpdate = true;
@@ -175,6 +171,5 @@ public class ThreadHandler {
void stop(); void stop();
void wait(Object object) throws InterruptedException; void wait(Object object) throws InterruptedException;
void notify(Object object); void notify(Object object);
<T extends Entity> void switchContainer(EntityGroup<T> group);
} }
} }

View File

@@ -147,7 +147,7 @@ public class UI extends SceneModule{
} }
Graphics.end(); Graphics.end();
Draw.color();
} }
@Override @Override
@@ -225,7 +225,7 @@ public class UI extends SceneModule{
public void loadAnd(String text, Callable call){ public void loadAnd(String text, Callable call){
loadfrag.show(text); loadfrag.show(text);
Timers.runTask(6f, () -> { Timers.runTask(7f, () -> {
call.run(); call.run();
loadfrag.hide(); loadfrag.hide();
}); });

View File

@@ -10,6 +10,7 @@ import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.EventType.TileChangeEvent; import io.anuke.mindustry.game.EventType.TileChangeEvent;
import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.*; import io.anuke.mindustry.io.*;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
@@ -93,11 +94,11 @@ public class World extends Module{
} }
public int width(){ public int width(){
return tiles.length; return tiles == null ? 0 : tiles.length;
} }
public int height(){ public int height(){
return tiles[0].length; return tiles == null ? 0 : tiles[0].length;
} }
public int toPacked(int x, int y){ public int toPacked(int x, int y){
@@ -170,6 +171,10 @@ public class World extends Module{
for(int x = 0; x < tiles.length; x ++) { for(int x = 0; x < tiles.length; x ++) {
for (int y = 0; y < tiles[0].length; y++) { for (int y = 0; y < tiles[0].length; y++) {
tiles[x][y].updateOcclusion(); tiles[x][y].updateOcclusion();
if(tiles[x][y].entity != null){
tiles[x][y].entity.updateProximity();
}
} }
} }
@@ -263,6 +268,28 @@ public class World extends Module{
} }
} }
public void setBlock(Tile tile, Block block, Team team){
tile.setBlock(block);
if (block.isMultiblock()) {
int offsetx = -(block.size - 1) / 2;
int offsety = -(block.size - 1) / 2;
for (int dx = 0; dx < block.size; dx++) {
for (int dy = 0; dy < block.size; dy++) {
int worldx = dx + offsetx + tile.x;
int worldy = dy + offsety + tile.y;
if (!(worldx == tile.x && worldy == tile.y)) {
Tile toplace = world.tile(worldx, worldy);
if (toplace != null) {
toplace.setLinked((byte) (dx + offsetx), (byte) (dy + offsety));
toplace.setTeam(team);
}
}
}
}
}
}
/**Raycast, but with world coordinates.*/ /**Raycast, but with world coordinates.*/
public GridPoint2 raycastWorld(float x, float y, float x2, float y2){ public GridPoint2 raycastWorld(float x, float y, float x2, float y2){
return raycast(Mathf.scl2(x, tilesize), Mathf.scl2(y, tilesize), return raycast(Mathf.scl2(x, tilesize), Mathf.scl2(y, tilesize),

View File

@@ -39,14 +39,16 @@ public class MapEditor{
return tags; return tags;
} }
public void beginEdit(MapTileData map, ObjectMap<String, String> tags){ public void beginEdit(MapTileData map, ObjectMap<String, String> tags, boolean clear){
this.map = map; this.map = map;
this.brushSize = 1; this.brushSize = 1;
this.tags = tags; this.tags = tags;
if(clear) {
for (int x = 0; x < map.width(); x++) { for (int x = 0; x < map.width(); x++) {
for (int y = 0; y < map.height(); y++) { for (int y = 0; y < map.height(); y++) {
map.write(x, y, DataPosition.floor, (byte)Blocks.stone.id); map.write(x, y, DataPosition.floor, (byte) Blocks.stone.id);
}
} }
} }

View File

@@ -3,7 +3,6 @@ package io.anuke.mindustry.editor;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
@@ -26,7 +25,6 @@ import io.anuke.ucore.core.Timers;
import io.anuke.ucore.function.Consumer; import io.anuke.ucore.function.Consumer;
import io.anuke.ucore.function.Listenable; import io.anuke.ucore.function.Listenable;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Pixmaps;
import io.anuke.ucore.input.Input; import io.anuke.ucore.input.Input;
import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.actions.Actions;
import io.anuke.ucore.scene.builders.build; import io.anuke.ucore.scene.builders.build;
@@ -107,7 +105,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
MapMeta meta = MapIO.readMapMeta(stream); MapMeta meta = MapIO.readMapMeta(stream);
MapTileData data = MapIO.readTileData(stream, meta, false); MapTileData data = MapIO.readTileData(stream, meta, false);
editor.beginEdit(data, meta.tags); editor.beginEdit(data, meta.tags, false);
view.clearStack(); view.clearStack();
}catch (Exception e){ }catch (Exception e){
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false))); ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
@@ -115,17 +113,17 @@ public class MapEditorDialog extends Dialog implements Disposable{
} }
}); });
}, true, mapExtension); }, true, mapExtension);
}, }/*,
"$text.editor.importimage", "$text.editor.importimage.description", "icon-file-image", (Listenable)() -> { "$text.editor.importimage", "$text.editor.importimage.description", "icon-file-image", (Listenable)() -> {
if(gwt){ if(gwt){
ui.showError("text.web.unsupported"); ui.showError("$text.web.unsupported");
}else { }else {
Platform.instance.showFileChooser("$text.loadimage", "Image Files", file -> { Platform.instance.showFileChooser("$text.loadimage", "Image Files", file -> {
ui.loadAnd(() -> { ui.loadAnd(() -> {
try{ try{
MapTileData data = MapIO.readPixmap(new Pixmap(file)); MapTileData data = MapIO.readPixmap(new Pixmap(file));
editor.beginEdit(data, editor.getTags()); editor.beginEdit(data, editor.getTags(), false);
view.clearStack(); view.clearStack();
}catch (Exception e){ }catch (Exception e){
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false))); ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
@@ -134,7 +132,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
}); });
}, true, "png"); }, true, "png");
} }
})); }*/));
t.addImageTextButton("$text.editor.export", "icon-save-map", isize, () -> createDialog("$text.editor.export", t.addImageTextButton("$text.editor.export", "icon-save-map", isize, () -> createDialog("$text.editor.export",
"$text.editor.exportfile", "$text.editor.exportfile.description", "icon-file", (Listenable)() -> { "$text.editor.exportfile", "$text.editor.exportfile.description", "icon-file", (Listenable)() -> {
@@ -165,11 +163,11 @@ public class MapEditorDialog extends Dialog implements Disposable{
Log.err(e); Log.err(e);
} }
} }
}, }/*,
"$text.editor.exportimage", "$text.editor.exportimage.description", "icon-file-image", (Listenable)() -> { "$text.editor.exportimage", "$text.editor.exportimage.description", "icon-file-image", (Listenable)() -> {
if(gwt){ if(gwt){
ui.showError("text.web.unsupported"); ui.showError("$text.web.unsupported");
}else { }else{
Platform.instance.showFileChooser("$text.saveimage", "Image Files", file -> { Platform.instance.showFileChooser("$text.saveimage", "Image Files", file -> {
file = file.parent().child(file.nameWithoutExtension() + ".png"); file = file.parent().child(file.nameWithoutExtension() + ".png");
FileHandle result = file; FileHandle result = file;
@@ -183,7 +181,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
}); });
}, false, "png"); }, false, "png");
} }
})); }*/));
t.row(); t.row();
@@ -213,7 +211,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
MapMeta meta = MapIO.readMapMeta(stream); MapMeta meta = MapIO.readMapMeta(stream);
MapTileData data = MapIO.readTileData(stream, meta, false); MapTileData data = MapIO.readTileData(stream, meta, false);
editor.beginEdit(data, meta.tags); editor.beginEdit(data, meta.tags, false);
view.clearStack(); view.clearStack();
}catch (IOException e){ }catch (IOException e){
ui.showError(Bundles.format("text.editor.errormapload", Strings.parseException(e, false))); ui.showError(Bundles.format("text.editor.errormapload", Strings.parseException(e, false)));
@@ -254,7 +252,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
view.clearStack(); view.clearStack();
Core.scene.setScrollFocus(view); Core.scene.setScrollFocus(view);
if(!shownWithMap){ if(!shownWithMap){
editor.beginEdit(new MapTileData(256, 256), new ObjectMap<>()); editor.beginEdit(new MapTileData(256, 256), new ObjectMap<>(), true);
} }
shownWithMap = false; shownWithMap = false;
@@ -348,7 +346,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
shownWithMap = true; shownWithMap = true;
DataInputStream stream = new DataInputStream(is); DataInputStream stream = new DataInputStream(is);
MapMeta meta = MapIO.readMapMeta(stream); MapMeta meta = MapIO.readMapMeta(stream);
editor.beginEdit(MapIO.readTileData(stream, meta, false), meta.tags); editor.beginEdit(MapIO.readTileData(stream, meta, false), meta.tags, false);
is.close(); is.close();
show(); show();
}catch (Exception e){ }catch (Exception e){
@@ -368,13 +366,11 @@ public class MapEditorDialog extends Dialog implements Disposable{
public void updateSelectedBlock(){ public void updateSelectedBlock(){
Block block = editor.getDrawBlock(); Block block = editor.getDrawBlock();
int i = 0;
for(int j = 0; j < Block.all().size; j ++){ for(int j = 0; j < Block.all().size; j ++){
if(block.id == j){ if(block.id == j && j < blockgroup.getButtons().size){
blockgroup.getButtons().get(i).setChecked(true); blockgroup.getButtons().get(j).setChecked(true);
break; break;
} }
i++;
} }
} }

View File

@@ -9,6 +9,7 @@ import com.badlogic.gdx.utils.Queue;
import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote; import io.anuke.annotations.Annotations.Remote;
import io.anuke.mindustry.Vars; import io.anuke.mindustry.Vars;
import io.anuke.mindustry.content.Mechs;
import io.anuke.mindustry.entities.effect.ItemDrop; import io.anuke.mindustry.entities.effect.ItemDrop;
import io.anuke.mindustry.entities.effect.ScorchDecal; import io.anuke.mindustry.entities.effect.ScorchDecal;
import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.traits.*;
@@ -273,6 +274,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
return isLocal ? Float.MAX_VALUE : 40; return isLocal ? Float.MAX_VALUE : 40;
} }
@Override
public void drawShadow(){
Draw.rect(mech.iconRegion, x + elevation*elevationScale, y - elevation*elevationScale, rotation - 90);
}
@Override @Override
public void draw(){ public void draw(){
if((debug && (!showPlayer || !showUI)) || dead) return; if((debug && (!showPlayer || !showUI)) || dead) return;
@@ -368,7 +374,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
float wobblyness = 0.6f; float wobblyness = 0.6f;
trail.update(x + Angles.trnsx(rotation + 180f, 5f) + Mathf.range(wobblyness), trail.update(x + Angles.trnsx(rotation + 180f, 5f) + Mathf.range(wobblyness),
y + Angles.trnsy(rotation + 180f, 5f) + Mathf.range(wobblyness)); y + Angles.trnsy(rotation + 180f, 5f) + Mathf.range(wobblyness));
trail.draw(mech.trailColor, mech.trailColor, 5f * (isFlying() ? 1f : boostHeat)); trail.draw(mech.trailColor, 5f * (isFlying() ? 1f : boostHeat));
}else{ }else{
trail.clear(); trail.clear();
} }
@@ -467,7 +473,9 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
updateMech(); updateMech();
} }
if(isLocal) {
avoidOthers(8f); avoidOthers(8f);
}
if(!isShooting()) { if(!isShooting()) {
updateBuilding(this); updateBuilding(this);
@@ -534,7 +542,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
pointerY = vec.y; pointerY = vec.y;
updateShooting(); updateShooting();
movement.limit(speed); movement.limit(speed * Timers.delta());
if(getCarrier() == null){ if(getCarrier() == null){
velocity.add(movement); velocity.add(movement);
@@ -591,18 +599,13 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
} }
movement.set(targetX - x, targetY - y).limit(mech.speed); movement.set(targetX - x, targetY - y).limit(mech.speed);
movement.setAngle(Mathf.slerpDelta(movement.angle(), velocity.angle(), 0.05f)); movement.setAngle(Mathf.slerp(movement.angle(), velocity.angle(), 0.05f));
if(distanceTo(targetX, targetY) < attractDst){ if(distanceTo(targetX, targetY) < attractDst){
movement.setZero(); movement.setZero();
} }
velocity.add(movement); velocity.add(movement);
updateVelocityStatus(mech.drag, mech.maxSpeed);
//hovering effect
x += Mathf.sin(Timers.time() + id * 999, 25f, 0.08f);
y += Mathf.cos(Timers.time() + id * 999, 25f, 0.08f);
if(velocity.len() <= 0.2f){ if(velocity.len() <= 0.2f){
rotation += Mathf.sin(Timers.time() + id * 99, 10f, 1f); rotation += Mathf.sin(Timers.time() + id * 99, 10f, 1f);
@@ -610,6 +613,12 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
rotation = Mathf.slerpDelta(rotation, velocity.angle(), velocity.len()/10f); rotation = Mathf.slerpDelta(rotation, velocity.angle(), velocity.len()/10f);
} }
updateVelocityStatus(mech.drag, mech.maxSpeed);
//hovering effect
x += Mathf.sin(Timers.time() + id * 999, 25f, 0.08f);
y += Mathf.cos(Timers.time() + id * 999, 25f, 0.08f);
//update shooting if not building, not mining and there's ammo left //update shooting if not building, not mining and there's ammo left
if(!isBuilding() && inventory.hasAmmo() && getMineTile() == null){ if(!isBuilding() && inventory.hasAmmo() && getMineTile() == null){
@@ -654,12 +663,15 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
/**Resets all values of the player.*/ /**Resets all values of the player.*/
public void reset(){ public void reset(){
status.clear();
team = Team.blue; team = Team.blue;
inventory.clear(); inventory.clear();
placeQueue.clear(); placeQueue.clear();
dead = true; dead = true;
trail.clear(); trail.clear();
health = maxHealth(); health = maxHealth();
mech = (mobile ? Mechs.starterMobile : Mechs.starterDesktop);
placeQueue.clear();
add(); add();
} }
@@ -739,13 +751,12 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
public void write(DataOutput buffer) throws IOException { public void write(DataOutput buffer) throws IOException {
super.writeSave(buffer, !isLocal); super.writeSave(buffer, !isLocal);
buffer.writeUTF(name); //TODO writing strings is very inefficient buffer.writeUTF(name); //TODO writing strings is very inefficient
buffer.writeBoolean(isAdmin); buffer.writeByte(Bits.toByte(isAdmin) | (Bits.toByte(dead) << 1) | (Bits.toByte(isBoosting) << 2));
buffer.writeInt(Color.rgba8888(color)); buffer.writeInt(Color.rgba8888(color));
buffer.writeBoolean(dead);
buffer.writeByte(mech.id); buffer.writeByte(mech.id);
buffer.writeBoolean(isBoosting);
buffer.writeInt(mining == null ? -1 : mining.packedPosition()); buffer.writeInt(mining == null ? -1 : mining.packedPosition());
buffer.writeInt(spawner); buffer.writeInt(spawner);
buffer.writeShort((short)(baseRotation * 2));
writeBuilding(buffer); writeBuilding(buffer);
} }
@@ -755,17 +766,19 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
float lastx = x, lasty = y, lastrot = rotation; float lastx = x, lasty = y, lastrot = rotation;
super.readSave(buffer); super.readSave(buffer);
name = buffer.readUTF(); name = buffer.readUTF();
isAdmin = buffer.readBoolean(); byte bools = buffer.readByte();
isAdmin = (bools & 1) != 0;
dead = (bools & 2) != 0;
boolean boosting = (bools & 4) != 0;
color.set(buffer.readInt()); color.set(buffer.readInt());
dead = buffer.readBoolean();
mech = Upgrade.getByID(buffer.readByte()); mech = Upgrade.getByID(buffer.readByte());
boolean boosting = buffer.readBoolean();
int mine = buffer.readInt(); int mine = buffer.readInt();
spawner = buffer.readInt(); spawner = buffer.readInt();
float baseRotation = buffer.readShort()/2f;
readBuilding(buffer, !isLocal); readBuilding(buffer, !isLocal);
interpolator.read(lastx, lasty, x, y, time, rotation); interpolator.read(lastx, lasty, x, y, time, rotation, baseRotation);
rotation = lastrot; rotation = lastrot;
if(isLocal){ if(isLocal){

View File

@@ -1,6 +1,9 @@
package io.anuke.mindustry.entities; package io.anuke.mindustry.entities;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectSet;
import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote; import io.anuke.annotations.Annotations.Remote;
import io.anuke.mindustry.content.fx.Fx; import io.anuke.mindustry.content.fx.Fx;
@@ -10,11 +13,14 @@ import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.CallBlocks; import io.anuke.mindustry.gen.CallBlocks;
import io.anuke.mindustry.net.In; import io.anuke.mindustry.net.In;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Edges;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Wall; import io.anuke.mindustry.world.blocks.Wall;
import io.anuke.mindustry.world.blocks.modules.InventoryModule; import io.anuke.mindustry.world.consumers.Consume;
import io.anuke.mindustry.world.blocks.modules.LiquidModule; import io.anuke.mindustry.world.modules.ConsumeModule;
import io.anuke.mindustry.world.blocks.modules.PowerModule; import io.anuke.mindustry.world.modules.InventoryModule;
import io.anuke.mindustry.world.modules.LiquidModule;
import io.anuke.mindustry.world.modules.PowerModule;
import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers; import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.EntityGroup; import io.anuke.ucore.entities.EntityGroup;
@@ -34,6 +40,8 @@ public class TileEntity extends BaseEntity implements TargetTrait {
/**This value is only used for debugging.*/ /**This value is only used for debugging.*/
public static int sleepingEntities = 0; public static int sleepingEntities = 0;
private static final ObjectSet<Tile> tmpTiles = new ObjectSet<>();
public Tile tile; public Tile tile;
public Timer timer; public Timer timer;
public float health; public float health;
@@ -41,7 +49,11 @@ public class TileEntity extends BaseEntity implements TargetTrait {
public PowerModule power; public PowerModule power;
public InventoryModule items; public InventoryModule items;
public LiquidModule liquids; public LiquidModule liquids;
public ConsumeModule cons;
//list of (cached) tiles with entities in proximity, used for outputting to
//TODO implement
private Array<Tile> proximity = new Array<>(8);
private boolean dead = false; private boolean dead = false;
private boolean sleeping; private boolean sleeping;
private float sleepTime; private float sleepTime;
@@ -57,12 +69,7 @@ public class TileEntity extends BaseEntity implements TargetTrait {
timer = new Timer(tile.block().timers); timer = new Timer(tile.block().timers);
if(added){ if(added){
//if(!tile.block().autoSleep) { //TODO only autosleep when creating a fresh block!
add(); add();
/*}else{
sleeping = true;
sleepingEntities ++;
}*/
} }
return this; return this;
@@ -135,6 +142,60 @@ public class TileEntity extends BaseEntity implements TargetTrait {
return tile; return tile;
} }
public boolean consumed(Class<? extends Consume> type){
return tile.block().consumes.get(type).valid(tile.block(), this);
}
public void removeFromProximity(){
GridPoint2[] nearby = Edges.getEdges(tile.block().size);
for (GridPoint2 point : nearby) {
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
//remove this tile from all nearby tile's proximities
if(other != null){
other = other.target();
other.block().onProximityUpdate(other);
}
if(other != null && other.entity != null){
other.entity.proximity.removeValue(tile, true);
}
}
}
public void updateProximity(){
tmpTiles.clear();
proximity.clear();
GridPoint2[] nearby = Edges.getEdges(tile.block().size);
for (GridPoint2 point : nearby) {
Tile other = world.tile(tile.x + point.x, tile.y + point.y);
if(other != null){
other.block().onProximityUpdate(other);
other = other.target();
}
if(other != null && other.entity != null){
tmpTiles.add(other);
//add this tile to proximity of nearby tiles
if(!other.entity.proximity.contains(tile, true)){
other.entity.proximity.add(tile);
}
}
}
//using a set to prevent duplicates
for(Tile tile : tmpTiles){
proximity.add(tile);
}
tile.block().onProximityUpdate(tile);
}
public Array<Tile> proximity(){
return proximity;
}
@Override @Override
public Team getTeam() { public Team getTeam() {
return tile.getTeam(); return tile.getTeam();
@@ -160,6 +221,9 @@ public class TileEntity extends BaseEntity implements TargetTrait {
} }
tile.block().update(tile); tile.block().update(tile);
if(cons != null){
cons.update(this);
}
} }
} }
@@ -170,8 +234,10 @@ public class TileEntity extends BaseEntity implements TargetTrait {
@Remote(called = Loc.server, in = In.blocks) @Remote(called = Loc.server, in = In.blocks)
public static void onTileDamage(Tile tile, float health){ public static void onTileDamage(Tile tile, float health){
if(tile.entity != null){
tile.entity.health = health; tile.entity.health = health;
} }
}
@Remote(called = Loc.server, in = In.blocks) @Remote(called = Loc.server, in = In.blocks)
public static void onTileDestroyed(Tile tile){ public static void onTileDestroyed(Tile tile){

View File

@@ -38,6 +38,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
public static final float velocityPercision = 8f; public static final float velocityPercision = 8f;
/**Maximum absolute value of a velocity vector component.*/ /**Maximum absolute value of a velocity vector component.*/
public static final float maxAbsVelocity = 127f/velocityPercision; public static final float maxAbsVelocity = 127f/velocityPercision;
public static final float elevationScale = 4f;
private static final Vector2 moveVector = new Vector2(); private static final Vector2 moveVector = new Vector2();
@@ -52,6 +53,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
protected Vector2 velocity = new Translator(0f, 0.0001f); protected Vector2 velocity = new Translator(0f, 0.0001f);
protected float hitTime; protected float hitTime;
protected float drownTime; protected float drownTime;
protected float elevation;
@Override @Override
public UnitInventory getInventory() { public UnitInventory getInventory() {
@@ -224,6 +226,10 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
if(isFlying()) { if(isFlying()) {
x += velocity.x / getMass() * Timers.delta(); x += velocity.x / getMass() * Timers.delta();
y += velocity.y / getMass() * Timers.delta(); y += velocity.y / getMass() * Timers.delta();
if(tile != null){
elevation = Mathf.lerpDelta(elevation, tile.elevation, 0.04f);
}
}else{ }else{
boolean onLiquid = floor.isLiquid; boolean onLiquid = floor.isLiquid;
@@ -298,6 +304,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
public void drawUnder(){} public void drawUnder(){}
public void drawOver(){} public void drawOver(){}
public void drawShadow(){}
public void drawView(){ public void drawView(){
Fill.circle(x, y, getViewDistance()); Fill.circle(x, y, getViewDistance());

View File

@@ -87,6 +87,7 @@ public class UnitInventory implements Saveable{
} }
public void addAmmo(AmmoType type){ public void addAmmo(AmmoType type){
if(type == null) return;
totalAmmo += type.quantityMultiplier; totalAmmo += type.quantityMultiplier;
//find ammo entry by type //find ammo entry by type

View File

@@ -19,6 +19,9 @@ import static io.anuke.mindustry.Vars.*;
public class Units { public class Units {
private static Rectangle rect = new Rectangle(); private static Rectangle rect = new Rectangle();
private static Rectangle hitrect = new Rectangle(); private static Rectangle hitrect = new Rectangle();
private static Unit result;
private static float cdist;
private static boolean boolResult;
/**Validates a target. /**Validates a target.
* @param target The target to validate * @param target The target to validate
@@ -49,20 +52,20 @@ public class Units {
rect.setSize(type.size * tilesize, type.size * tilesize); rect.setSize(type.size * tilesize, type.size * tilesize);
rect.setCenter(tile.drawx(), tile.drawy()); rect.setCenter(tile.drawx(), tile.drawy());
boolean[] value = new boolean[1]; boolResult = false;
Units.getNearby(rect, unit -> { Units.getNearby(rect, unit -> {
if (value[0]) return; if (boolResult) return;
if (!unit.isFlying()) { if (!unit.isFlying()) {
unit.getHitbox(hitrect); unit.getHitbox(hitrect);
if (hitrect.overlaps(rect)) { if (hitrect.overlaps(rect)) {
value[0] = true; boolResult = true;
} }
} }
}); });
return value[0]; return boolResult;
} }
/**Returns whether there are any entities on this tile, with the hitbox expanded.*/ /**Returns whether there are any entities on this tile, with the hitbox expanded.*/
@@ -138,8 +141,8 @@ public class Units {
/**Returns the closest enemy of this team. Filter by predicate.*/ /**Returns the closest enemy of this team. Filter by predicate.*/
public static Unit getClosestEnemy(Team team, float x, float y, float range, Predicate<Unit> predicate){ public static Unit getClosestEnemy(Team team, float x, float y, float range, Predicate<Unit> predicate){
Unit[] result = {null}; result = null;
float[] cdist = {0}; cdist = 0f;
rect.setSize(range*2f).setCenter(x, y); rect.setSize(range*2f).setCenter(x, y);
@@ -149,20 +152,20 @@ public class Units {
float dist = Vector2.dst(e.x, e.y, x, y); float dist = Vector2.dst(e.x, e.y, x, y);
if (dist < range) { if (dist < range) {
if (result[0] == null || dist < cdist[0]) { if (result == null || dist < cdist) {
result[0] = e; result = e;
cdist[0] = dist; cdist = dist;
} }
} }
}); });
return result[0]; return result;
} }
/**Returns the closest ally of this team. Filter by predicate.*/ /**Returns the closest ally of this team. Filter by predicate.*/
public static Unit getClosest(Team team, float x, float y, float range, Predicate<Unit> predicate){ public static Unit getClosest(Team team, float x, float y, float range, Predicate<Unit> predicate){
Unit[] result = {null}; result = null;
float[] cdist = {0}; cdist = 0f;
rect.setSize(range*2f).setCenter(x, y); rect.setSize(range*2f).setCenter(x, y);
@@ -172,14 +175,14 @@ public class Units {
float dist = Vector2.dst(e.x, e.y, x, y); float dist = Vector2.dst(e.x, e.y, x, y);
if (dist < range) { if (dist < range) {
if (result[0] == null || dist < cdist[0]) { if (result == null || dist < cdist) {
result[0] = e; result = e;
cdist[0] = dist; cdist = dist;
} }
} }
}); });
return result[0]; return result;
} }
/**Iterates over all units in a rectangle.*/ /**Iterates over all units in a rectangle.*/

View File

@@ -91,9 +91,10 @@ public class Fire extends TimedEntity implements SaveTrait, SyncTrait, Poolable
time = Mathf.clamp(time + Timers.delta(), 0, lifetime()); time = Mathf.clamp(time + Timers.delta(), 0, lifetime());
if(time >= lifetime()){ if(time >= lifetime() || tile == null){
CallEntity.onFireRemoved(getID()); CallEntity.onFireRemoved(getID());
remove(); remove();
return;
} }
TileEntity entity = tile.target().entity; TileEntity entity = tile.target().entity;

View File

@@ -57,7 +57,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
for (int i = 0; i < Mathf.clamp(amount/3, 1, 8); i++) { for (int i = 0; i < Mathf.clamp(amount/3, 1, 8); i++) {
Timers.run(i*3, () -> create(item, x, y, tile, () -> {})); Timers.run(i*3, () -> create(item, x, y, tile, () -> {}));
} }
tile.entity.items.addItem(item, amount); tile.entity.items.add(item, amount);
} }
public static void create(Item item, float fromx, float fromy, PosTrait to, Runnable done){ public static void create(Item item, float fromx, float fromy, PosTrait to, Runnable done){

View File

@@ -58,7 +58,12 @@ public interface BuilderTrait extends Entity{
/**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/ /**Build power, can be any float. 1 = builds recipes in normal time, 0 = doesn't build at all.*/
float getBuildPower(Tile tile); float getBuildPower(Tile tile);
default void writeBuilding(DataOutput output) throws IOException{ /**Whether this type of builder can begin creating new blocks.*/
default boolean canCreateBlocks(){
return true;
}
default void writeBuilding(DataOutput output) throws IOException {
BuildRequest request = getCurrentRequest(); BuildRequest request = getCurrentRequest();
if(request != null){ if(request != null){
@@ -172,9 +177,9 @@ public interface BuilderTrait extends Entity{
Tile tile = world.tile(current.x, current.y); Tile tile = world.tile(current.x, current.y);
if (!(tile.block() instanceof BuildBlock)) { if (!(tile.block() instanceof BuildBlock)) {
if(!current.remove && Build.validPlace(unit.getTeam(), current.x, current.y, current.recipe.result, current.rotation)) { if(canCreateBlocks() && !current.remove && Build.validPlace(unit.getTeam(), current.x, current.y, current.recipe.result, current.rotation)) {
Build.beginPlace(unit.getTeam(), current.x, current.y, current.recipe, current.rotation); Build.beginPlace(unit.getTeam(), current.x, current.y, current.recipe, current.rotation);
}else if(current.remove && Build.validBreak(unit.getTeam(), current.x, current.y)){ }else if(canCreateBlocks() && current.remove && Build.validBreak(unit.getTeam(), current.x, current.y)){
Build.beginBreak(unit.getTeam(), current.x, current.y); Build.beginBreak(unit.getTeam(), current.x, current.y);
}else{ }else{
getPlaceQueue().removeFirst(); getPlaceQueue().removeFirst();

View File

@@ -41,6 +41,7 @@ public interface CarryTrait extends TeamTrait, SolidTrait, TargetTrait{
@Remote(called = Loc.both, targets = Loc.both, forward = true, in = In.entities) @Remote(called = Loc.both, targets = Loc.both, forward = true, in = In.entities)
static void setCarryOf(Player player, CarryTrait trait, CarriableTrait unit){ static void setCarryOf(Player player, CarryTrait trait, CarriableTrait unit){
if(trait == null) return;
if(player != null){ //when a server recieves this called from a player, set the carrier to the player. if(player != null){ //when a server recieves this called from a player, set the carrier to the player.
trait = player; trait = player;
} }

View File

@@ -71,6 +71,10 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
return type; return type;
} }
public Tile getSpawner(){
return world.tile(spawner);
}
/**internal constructor used for deserialization, DO NOT USE*/ /**internal constructor used for deserialization, DO NOT USE*/
public BaseUnit(){} public BaseUnit(){}
@@ -279,7 +283,9 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
return; return;
} }
if(!Net.client()){
avoidOthers(8f); avoidOthers(8f);
}
if(squad != null){ if(squad != null){
squad.update(); squad.update();

View File

@@ -32,6 +32,11 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
} }
@Override
public void drawShadow(){
Draw.rect(type.region, x + elevation*elevationScale, y - elevation*elevationScale, rotation - 90);
}
@Override @Override
public CarriableTrait getCarry() { public CarriableTrait getCarry() {
return carrying; return carrying;
@@ -71,7 +76,7 @@ public abstract class FlyingUnit extends BaseUnit implements CarryTrait{
@Override @Override
public void drawOver() { public void drawOver() {
trail.draw(Palette.lightTrail, Palette.lightTrail, 5f); trail.draw(Palette.lightTrail, 5f);
} }
@Override @Override

View File

@@ -149,7 +149,7 @@ public class Drone extends FlyingUnit implements BuilderTrait {
@Override @Override
public void drawOver() { public void drawOver() {
trail.draw(Palette.lightTrail, Palette.lightTrail, 3f); trail.draw(Palette.lightTrail, 3f);
TargetTrait entity = target; TargetTrait entity = target;
@@ -181,7 +181,7 @@ public class Drone extends FlyingUnit implements BuilderTrait {
if(entity == null){ if(entity == null){
return; return;
} }
targetItem = Mathf.findMin(toMine, (a, b) -> -Integer.compare(entity.items.getItem(a), entity.items.getItem(b))); targetItem = Mathf.findMin(toMine, (a, b) -> -Integer.compare(entity.items.get(a), entity.items.get(b)));
} }
protected boolean findItemDrop(){ protected boolean findItemDrop(){
@@ -201,6 +201,11 @@ public class Drone extends FlyingUnit implements BuilderTrait {
return false; return false;
} }
@Override
public boolean canCreateBlocks() {
return false;
}
@Override @Override
public void write(DataOutput data) throws IOException { public void write(DataOutput data) throws IOException {
super.write(data); super.write(data);
@@ -247,7 +252,7 @@ public class Drone extends FlyingUnit implements BuilderTrait {
//if it's missing requirements, try and mine them //if it's missing requirements, try and mine them
for(ItemStack stack : entity.recipe.requirements){ for(ItemStack stack : entity.recipe.requirements){
if(!core.items.hasItem(stack.item, stack.amount) && toMine.contains(stack.item)){ if(!core.items.has(stack.item, stack.amount) && toMine.contains(stack.item)){
targetItem = stack.item; targetItem = stack.item;
getPlaceQueue().clear(); getPlaceQueue().clear();
setState(mine); setState(mine);

View File

@@ -57,7 +57,7 @@ public class BlockRenderer{
int expandr = 4; int expandr = 4;
Graphics.surface(renderer.effectSurface); Graphics.surface(renderer.effectSurface, true, false);
int avgx = Mathf.scl(camera.position.x, tilesize); int avgx = Mathf.scl(camera.position.x, tilesize);
int avgy = Mathf.scl(camera.position.y, tilesize); int avgy = Mathf.scl(camera.position.y, tilesize);

View File

@@ -66,16 +66,15 @@ public enum CacheLayer {
protected void beginShader(){ protected void beginShader(){
//renderer.getBlocks().endFloor(); //renderer.getBlocks().endFloor();
renderer.effectSurface.getBuffer().begin(); renderer.effectSurface.getBuffer().bind();
Graphics.clear(Color.CLEAR); Graphics.clear(Color.CLEAR);
//renderer.getBlocks().beginFloor(); //renderer.getBlocks().beginFloor();
} }
public void endShader(Shader shader){ public void endShader(Shader shader){
renderer.getBlocks().endFloor(); renderer.getBlocks().endFloor();
renderer.effectSurface.getBuffer().end();
renderer.pixelSurface.getBuffer().begin(); renderer.pixelSurface.getBuffer().bind();
Graphics.shader(shader); Graphics.shader(shader);
Graphics.begin(); Graphics.begin();

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.graphics; package io.anuke.mindustry.graphics;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
@@ -122,8 +123,8 @@ public class FogRenderer implements Disposable{
renderer.pixelSurface.getBuffer().end(); renderer.pixelSurface.getBuffer().end();
Graphics.shader(); Graphics.shader();
Graphics.begin(); Graphics.setScreen();
Core.batch.draw(renderer.pixelSurface.texture(), px, py + vh, vw, -vh); Core.batch.draw(renderer.pixelSurface.texture(), 0, Gdx.graphics.getHeight(), Gdx.graphics.getWidth(), -Gdx.graphics.getHeight());
Graphics.end(); Graphics.end();
if(Core.batch instanceof ClipSpriteBatch){ if(Core.batch instanceof ClipSpriteBatch){

View File

@@ -121,7 +121,6 @@ public class MinimapRenderer implements Disposable{
int color = colorFor(world.tile(tile.x, tile.y)); int color = colorFor(world.tile(tile.x, tile.y));
pixmap.drawPixel(tile.x, pixmap.getHeight() - 1 - tile.y, color); pixmap.drawPixel(tile.x, pixmap.getHeight() - 1 - tile.y, color);
texture.bind();
Pixmaps.drawPixel(texture, tile.x, pixmap.getHeight() - 1 - tile.y, color); Pixmaps.drawPixel(texture, tile.x, pixmap.getHeight() - 1 - tile.y, color);
} }

View File

@@ -12,6 +12,7 @@ import io.anuke.mindustry.game.TeamInfo.TeamData;
import io.anuke.mindustry.input.InputHandler; import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.consumers.Consume;
import io.anuke.mindustry.world.meta.BlockBar; import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Settings;
@@ -193,25 +194,23 @@ public class OverlayRenderer {
float len = 3; float len = 3;
float w = (int) (len * 2 * finion) + 0.5f; float w = (int) (len * 2 * finion);
x -= 0.5f;
y += 0.5f;
Draw.color(Color.BLACK); Draw.color(Color.BLACK);
Lines.line(x - len + 1, y, x + len + 0.5f, y); Fill.crect(x - len, y, len*2f, 1);
if(finion > 0){
Draw.color(color); Draw.color(color);
if(w >= 1) Fill.crect(x - len, y, Math.max(1, w), 1);
Lines.line(x - len + 1, y, x - len + w, y); }
Draw.reset(); Draw.color();
} }
void drawEncloser(float x, float y, float height){ void drawEncloser(float x, float y, float height){
float len = 3; float len = 4;
Draw.color(Palette.bar); Draw.color(Palette.bar);
Fill.crect(x - len - 1, y - 1, len*2f + 2f, height + 2f); Fill.crect(x - len, y - 1, len*2f, height + 2f);
Draw.color(); Draw.color();
} }
} }

View File

@@ -40,7 +40,8 @@ public class Trail {
points.clear(); points.clear();
} }
public synchronized void draw(Color start, Color end, float stroke){ public synchronized void draw(Color color, float stroke){
Draw.color(color);
for(int i = 0; i < points.size - 2; i += 2){ for(int i = 0; i < points.size - 2; i += 2){
float x = points.get(i); float x = points.get(i);
@@ -49,8 +50,6 @@ public class Trail {
float y2 = points.get(i + 3); float y2 = points.get(i + 3);
float s = Mathf.clamp((float)(i) / points.size); float s = Mathf.clamp((float)(i) / points.size);
Draw.color(start, end, s);
Lines.stroke(s * stroke); Lines.stroke(s * stroke);
Lines.line(x, y, x2, y2); Lines.line(x, y, x2, y2);
} }
@@ -59,8 +58,6 @@ public class Trail {
Fill.circle(points.get(points.size-2), points.get(points.size-1), stroke/2f); Fill.circle(points.get(points.size-2), points.get(points.size-1), stroke/2f);
} }
Draw.color(start);
Draw.reset(); Draw.reset();
} }
} }

View File

@@ -32,7 +32,6 @@ public class DefaultKeybinds {
"menu", Gdx.app.getType() == ApplicationType.Android ? Input.BACK : Input.ESCAPE, "menu", Gdx.app.getType() == ApplicationType.Android ? Input.BACK : Input.ESCAPE,
"pause", Input.SPACE, "pause", Input.SPACE,
"toggle_menus", Input.C, "toggle_menus", Input.C,
"item_withdraw", Input.SHIFT_LEFT,
new Category("Multiplayer"), new Category("Multiplayer"),
"player_list", Input.TAB, "player_list", Input.TAB,
"chat", Input.ENTER, "chat", Input.ENTER,

View File

@@ -101,8 +101,7 @@ public abstract class InputHandler extends InputAdapter{
boolean tileTapped(Tile tile){ boolean tileTapped(Tile tile){
tile = tile.target(); tile = tile.target();
boolean consumed = false; boolean consumed = false, showedInventory = false, showedConsume = false;
boolean showedInventory = false;
//check if tapped block is configurable //check if tapped block is configurable
if(tile.block().configurable && tile.getTeam() == player.getTeam()){ if(tile.block().configurable && tile.getTeam() == player.getTeam()){
@@ -129,16 +128,28 @@ public abstract class InputHandler extends InputAdapter{
//consume tap event if necessary //consume tap event if necessary
if(tile.getTeam() == player.getTeam() && tile.block().consumesTap){ if(tile.getTeam() == player.getTeam() && tile.block().consumesTap){
consumed = true; consumed = true;
}else if(tile.getTeam() == player.getTeam() && tile.block().synthetic() && tile.block().hasItems && !consumed){ }else if(tile.getTeam() == player.getTeam() && tile.block().synthetic() && !consumed) {
if(tile.block().hasItems && tile.entity.items.total() > 0) {
frag.inv.showFor(tile); frag.inv.showFor(tile);
consumed = true; consumed = true;
showedInventory = true; showedInventory = true;
} }
if(tile.block().consumes.hasAny()){
frag.consume.show(tile);
consumed = true;
showedConsume = true;
}
}
if(!showedInventory){ if(!showedInventory){
frag.inv.hide(); frag.inv.hide();
} }
if(!showedConsume){
frag.consume.hide();
}
return consumed; return consumed;
} }
@@ -166,7 +177,8 @@ public abstract class InputHandler extends InputAdapter{
} }
boolean canMine(Tile tile){ boolean canMine(Tile tile){
return tile.floor().drops != null && tile.floor().drops.item.hardness <= player.mech.drillPower return !ui.hasMouse()
&& tile.floor().drops != null && tile.floor().drops.item.hardness <= player.mech.drillPower
&& !tile.floor().playerUnmineable && !tile.floor().playerUnmineable
&& player.inventory.canAcceptItem(tile.floor().drops.item) && player.inventory.canAcceptItem(tile.floor().drops.item)
&& Units.getClosestEnemy(player.getTeam(), tile.worldx(), tile.worldy(), 40f, e -> true) == null //don't being mining when an enemy is near && Units.getClosestEnemy(player.getTeam(), tile.worldx(), tile.worldy(), 40f, e -> true) == null //don't being mining when an enemy is near
@@ -283,7 +295,8 @@ public abstract class InputHandler extends InputAdapter{
throw new ValidateException(player, "Player cannot transfer an item."); throw new ValidateException(player, "Player cannot transfer an item.");
} }
if(player == null) return; threads.run(() -> {
if (player == null || tile.entity == null) return;
player.isTransferring = true; player.isTransferring = true;
@@ -291,12 +304,12 @@ public abstract class InputHandler extends InputAdapter{
int accepted = tile.block().acceptStack(stack.item, stack.amount, tile, player); int accepted = tile.block().acceptStack(stack.item, stack.amount, tile, player);
boolean clear = stack.amount == accepted; boolean clear = stack.amount == accepted;
int sent = Mathf.clamp(accepted/4, 1, 8); int sent = Mathf.clamp(accepted / 4, 1, 8);
int removed = accepted/sent; int removed = accepted / sent;
int[] remaining = {accepted, accepted}; int[] remaining = {accepted, accepted};
for(int i = 0; i < sent; i ++){ for (int i = 0; i < sent; i++) {
boolean end = i == sent-1; boolean end = i == sent - 1;
Timers.run(i * 3, () -> { Timers.run(i * 3, () -> {
tile.block().getStackOffset(stack.item, tile, stackTrns); tile.block().getStackOffset(stack.item, tile, stackTrns);
@@ -307,7 +320,7 @@ public abstract class InputHandler extends InputAdapter{
tile.block().handleStack(stack.item, removed, tile, player); tile.block().handleStack(stack.item, removed, tile, player);
remaining[1] -= removed; remaining[1] -= removed;
if(end && remaining[1] > 0) { if (end && remaining[1] > 0) {
tile.block().handleStack(stack.item, remaining[1], tile, player); tile.block().handleStack(stack.item, remaining[1], tile, player);
} }
}); });
@@ -315,18 +328,16 @@ public abstract class InputHandler extends InputAdapter{
stack.amount -= removed; stack.amount -= removed;
remaining[0] -= removed; remaining[0] -= removed;
if(end){ if (end) {
stack.amount -= remaining[0]; stack.amount -= remaining[0];
if(clear){ if (clear) {
player.inventory.clearItem(); player.inventory.clearItem();
} }
player.isTransferring = false; player.isTransferring = false;
} }
}); });
} }
});
//ItemDrop.create(player.inventory.getItem().item, player.inventory.getItem().amount, player.x, player.y, angle);
//player.inventory.clearItem();
} }
@Remote(targets = Loc.both, called = Loc.server, forward = true, in = In.blocks) @Remote(targets = Loc.both, called = Loc.server, forward = true, in = In.blocks)

View File

@@ -3,9 +3,10 @@ package io.anuke.mindustry.io;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.I18NBundle; import com.badlogic.gdx.utils.I18NBundle;
import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.Vars;
import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Core;
import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Settings;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.Log; import io.anuke.ucore.util.Log;
import java.util.Locale; import java.util.Locale;
@@ -13,7 +14,6 @@ import java.util.Locale;
import static io.anuke.mindustry.Vars.headless; import static io.anuke.mindustry.Vars.headless;
public class BundleLoader { public class BundleLoader {
private static final boolean externalBundle = false;
public static void load(){ public static void load(){
Settings.defaults("locale", "default"); Settings.defaults("locale", "default");
@@ -40,20 +40,20 @@ public class BundleLoader {
private static void loadBundle(){ private static void loadBundle(){
I18NBundle.setExceptionOnMissingKey(false); I18NBundle.setExceptionOnMissingKey(false);
if(externalBundle){
try { try {
//try loading external bundle
FileHandle handle = Gdx.files.local("bundle"); FileHandle handle = Gdx.files.local("bundle");
Locale locale = Locale.ENGLISH; Locale locale = Locale.ENGLISH;
Core.bundle = I18NBundle.createBundle(handle, locale); Core.bundle = I18NBundle.createBundle(handle, locale);
}catch (Exception e){
Log.err(e); Log.info("NOTE: external translation bundle has been loaded.");
Platform.instance.showError("Failed to find bundle!\nMake sure you have bundle.properties in the same directory\nas the jar file.\n\nIf the problem persists, try running it through the command prompt:\n" + if(!headless){
"Hold left-shift, then right click and select 'open command prompt here'.\nThen, type in 'java -jar mindustry.jar' without quotes."); Timers.run(10f, () -> Vars.ui.showInfo("Note: You have successfully loaded an external translation bundle."));
Gdx.app.exit();
} }
}else{ }catch (Throwable e){
//no external bundle found
FileHandle handle = Gdx.files.internal("bundles/bundle"); FileHandle handle = Gdx.files.internal("bundles/bundle");
Locale locale = getLocale(); Locale locale = getLocale();
@@ -61,5 +61,6 @@ public class BundleLoader {
if(!headless) Log.info("Got locale: {0}", locale); if(!headless) Log.info("Got locale: {0}", locale);
Core.bundle = I18NBundle.createBundle(handle, locale); Core.bundle = I18NBundle.createBundle(handle, locale);
} }
} }
} }

View File

@@ -166,7 +166,7 @@ public class Maps implements Disposable{
for(String name : customMapNames){ for(String name : customMapNames){
try{ try{
String data = Settings.getString("map-data-" + name); String data = Settings.getString("map-data-" + name, "");
byte[] bytes = Base64Coder.decode(data); byte[] bytes = Base64Coder.decode(data);
loadMap(name, () -> new ByteArrayInputStream(bytes), true); loadMap(name, () -> new ByteArrayInputStream(bytes), true);
}catch (Exception e){ }catch (Exception e){
@@ -182,7 +182,7 @@ public class Maps implements Disposable{
if(!gwt){ if(!gwt){
return customMapDirectory.child(name + "." + mapExtension)::read; return customMapDirectory.child(name + "." + mapExtension)::read;
}else{ }else{
String data = Settings.getString("map-data-" + name); String data = Settings.getString("map-data-" + name, "");
byte[] bytes = Base64Coder.decode(data); byte[] bytes = Base64Coder.decode(data);
return () -> new ByteArrayInputStream(bytes); return () -> new ByteArrayInputStream(bytes);
} }

View File

@@ -74,7 +74,7 @@ public class SaveIO{
} }
public static boolean isSaveValid(FileHandle file){ public static boolean isSaveValid(FileHandle file){
return isSaveValid(new DataInputStream(file.read())); return isSaveValid(new DataInputStream(new InflaterInputStream(file.read())));
} }
public static boolean isSaveValid(DataInputStream stream){ public static boolean isSaveValid(DataInputStream stream){
@@ -85,6 +85,7 @@ public class SaveIO{
ver.getData(stream); ver.getData(stream);
return true; return true;
}catch (Exception e){ }catch (Exception e){
e.printStackTrace();
return false; return false;
} }
} }

View File

@@ -2,7 +2,6 @@ package io.anuke.mindustry.io;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.async.AsyncExecutor;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.Difficulty; import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.game.GameMode;
@@ -21,8 +20,6 @@ public class Saves {
private boolean saving; private boolean saving;
private float time; private float time;
private AsyncExecutor exec = new AsyncExecutor(1);
public void load(){ public void load(){
saves.clear(); saves.clear();
for(int i = 0; i < saveSlots; i ++){ for(int i = 0; i < saveSlots; i ++){

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