Merge branch 'master' into crater

This commit is contained in:
Patrick 'Quezler' Mounier
2019-12-31 17:31:09 +01:00
10 changed files with 118 additions and 64 deletions

View File

@@ -12,13 +12,14 @@ link.itch.io.description = Strona itch.io z oficjanymi wersjami do pobrania
link.google-play.description = Strona na sklepie Google Play link.google-play.description = Strona na sklepie Google Play
link.f-droid.description = F-Droid catalogue listing link.f-droid.description = F-Droid catalogue listing
link.wiki.description = Oficjana Wiki Mindustry link.wiki.description = Oficjana Wiki Mindustry
link.feathub.description = Zaproponuj nowe funkcje
linkfail = Nie udało się otworzyć linku!\nURL został skopiowany. linkfail = Nie udało się otworzyć linku!\nURL został skopiowany.
screenshot = Zapisano zdjęcie w {0} screenshot = Zapisano zdjęcie w {0}
screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia. screenshot.invalid = Zrzut ekranu jest zbyt duży. Najprawdopodobniej brakuje miejsca w pamięci urządzenia.
gameover = Koniec Gry gameover = Koniec Gry
gameover.pvp = Zwyciężyła drużyna [accent]{0}[]! gameover.pvp = Zwyciężyła drużyna [accent]{0}[]!
highscore = [YELLOW] Nowy rekord! highscore = [YELLOW] Nowy rekord!
copied = Copied. copied = Skopiowano.
load.sound = Dźwięki load.sound = Dźwięki
load.map = Mapy load.map = Mapy
@@ -26,6 +27,14 @@ load.image = Obrazy
load.content = Treść load.content = Treść
load.system = System load.system = System
load.mod = Mody load.mod = Mody
load.scripts = Skrypty
be.update = Nowa wersja Bleeding Edge jest dostępna:
be.update.confirm = Pobrać i zainstalować teraz?
be.updating = Aktualizowanie...
be.ignore = Zignoruj
be.noupdates = Nie znaleziono aktualizacji.
be.check = Sprawdź aktualizacje
schematic = Schemat schematic = Schemat
schematic.add = Zapisz schemat... schematic.add = Zapisz schemat...
@@ -80,7 +89,6 @@ continue = Kontynuuj
maps.none = [lightgray]Nie znaleziono żadnych map! maps.none = [lightgray]Nie znaleziono żadnych map!
invalid = Nieprawidłowy invalid = Nieprawidłowy
pickcolor = Wybierz kolor pickcolor = Wybierz kolor
preparingconfig = Przygotowywanie Konfiguracji preparingconfig = Przygotowywanie Konfiguracji
preparingcontent = Przygotowywanie Zawartości preparingcontent = Przygotowywanie Zawartości
uploadingcontent = Przesyłanie Zawartości uploadingcontent = Przesyłanie Zawartości
@@ -100,22 +108,28 @@ mod.enabled = [lightgray]Włączony
mod.disabled = [scarlet]Wyłączony mod.disabled = [scarlet]Wyłączony
mod.disable = Wyłącz mod.disable = Wyłącz
mod.delete.error = Nie udało się usunąć moda. Plik może być w użyciu. mod.delete.error = Nie udało się usunąć moda. Plik może być w użyciu.
mod.requiresversion = [scarlet]Wymaga gry w wersji co najmniej: [accent]{0}
mod.missingdependencies = [scarlet]Brakujące zależności: {0} mod.missingdependencies = [scarlet]Brakujące zależności: {0}
mod.erroredcontent = [scarlet]Content Errors
mod.errors = Wystąpił błąd podczas ładowania treści.
mod.noerrorplay = [scarlet]Twoje mody zawierają błędy.[] Wyłącz je lub napraw błędy przed rozpoczęciem gry.
mod.nowdisabled = [scarlet]Brakuje zależności dla moda '{0}':[accent] {1}\n[lightgray]Najpierw trzeba ściągnąć te mody.\nMod zostanie automatycznie wyłączony. mod.nowdisabled = [scarlet]Brakuje zależności dla moda '{0}':[accent] {1}\n[lightgray]Najpierw trzeba ściągnąć te mody.\nMod zostanie automatycznie wyłączony.
mod.enable = Włącz mod.enable = Włącz
mod.requiresrestart = Gra się wyłączy aby wprowadzić zmiany moda. mod.requiresrestart = Gra się wyłączy aby wprowadzić zmiany moda.
mod.reloadrequired = [scarlet]Wymagany restart mod.reloadrequired = [scarlet]Wymagany restart
mod.import = Importuj Mod mod.import = Importuj Mod
mod.import.github = Importuj mod z GitHuba mod.import.github = Importuj mod z GitHuba
mod.item.remove = Ten przedmiot jest częścią moda[accent] '{0}'[]. Aby usunąć go, odinstaluj modyfikację.
mod.remove.confirm = Ten mod zostanie usunięty. mod.remove.confirm = Ten mod zostanie usunięty.
mod.author = [LIGHT_GRAY]Autor:[] {0} mod.author = [LIGHT_GRAY]Autor:[] {0}
mod.missing = Ten zapis zawiera mody, które zostały niedawno zaktualizowane, bądź nie są już zainstalowane. Zapis może zostać uszkodzony. Czy jesteś pewien, że chcesz go załadować?\n[lightgray]Mody:\n{0} mod.missing = Ten zapis zawiera mody, które zostały niedawno zaktualizowane, bądź nie są już zainstalowane. Zapis może zostać uszkodzony. Czy jesteś pewien, że chcesz go załadować?\n[lightgray]Mody:\n{0}
mod.preview.missing = Przed opublikowaniem tego moda na Warsztacie musisz dodać zdjęcie podglądowe.\nDodaj zdjęcie o nazwie[accent] preview.png[] do folderu moda i spróbuj jeszcze raz. mod.preview.missing = Przed opublikowaniem tego moda na Warsztacie musisz dodać zdjęcie podglądowe.\nDodaj zdjęcie o nazwie[accent] preview.png[] do folderu moda i spróbuj jeszcze raz.
mod.folder.missing = Jedynie mody w formie folderów mogą się znaleźć na Warsztacie.\nBy zamienić moda w folder, wyciągnij go z archiwum, umieść w folderze i usuń archiwum. Później uruchom ponownie grę bądź załaduj ponownie mody. mod.folder.missing = Jedynie mody w formie folderów mogą się znaleźć na Warsztacie.\nBy zamienić moda w folder, wyciągnij go z archiwum, umieść w folderze i usuń archiwum. Później uruchom ponownie grę lub załaduj ponownie mody.
mod.scripts.unsupported = Twoje urządzenie nie wspiera skryptów. Niektóre mody mogą nie działać poprawnie.
about.button = O Grze about.button = O Grze
name = Nazwa: name = Nazwa:
noname = Najpierw wybierz[accent] nazwę gracza[] noname = Najpierw wybierz[accent] nazwę gracza[].
filename = Nazwa Pliku: filename = Nazwa Pliku:
unlocked = Odblokowano nową zawartość! unlocked = Odblokowano nową zawartość!
completed = [accent]Ukończony completed = [accent]Ukończony
@@ -123,8 +137,8 @@ techtree = Drzewo Technologiczne
research.list = [lightgray]Badania: research.list = [lightgray]Badania:
research = Badaj research = Badaj
researched = [lightgray]{0} zbadane. researched = [lightgray]{0} zbadane.
players = {0} graczy online players = {0} graczy
players.single = {0} gracz online players.single = {0} gracz
server.closing = [accent] Zamykanie serwera... server.closing = [accent] Zamykanie serwera...
server.kicked.kick = Zostałeś wyrzucony z serwera! server.kicked.kick = Zostałeś wyrzucony z serwera!
server.kicked.whitelist = Nie ma cię tu na białej liście. server.kicked.whitelist = Nie ma cię tu na białej liście.
@@ -141,6 +155,7 @@ server.kicked.nameEmpty = Wybrana przez Ciebie nazwa jest nieprawidłowa.
server.kicked.idInUse = Jesteś już na serwerze! Łączenie się z dwóch kont nie jest dozwolone. server.kicked.idInUse = Jesteś już na serwerze! Łączenie się z dwóch kont nie jest dozwolone.
server.kicked.customClient = Ten serwer nie wspomaga wersji deweloperskich. Pobierz oficjalną wersję. server.kicked.customClient = Ten serwer nie wspomaga wersji deweloperskich. Pobierz oficjalną wersję.
server.kicked.gameover = Koniec gry! server.kicked.gameover = Koniec gry!
server.kicked.serverRestarting = Restart serwera.
server.versions = Twoja wersja gry:[accent] {0}[]\nWersja gry serwera:[accent] {1}[] server.versions = Twoja wersja gry:[accent] {0}[]\nWersja gry serwera:[accent] {1}[]
host.info = Przycisk [accent]host[] hostuje serwer na porcie [scarlet]6567[]. \nKażdy w tej samej sieci [lightgray]wifi lub hotspocie[] powinien zobaczyć twój serwer.\n\nJeśli chcesz, aby każdy z twoim IP mógł dołączyć, musisz wykonać [accent]przekierowywanie portów[].\n\n[lightgray]Notka: Jeśli ktokolwiek ma problem z dołączeniem do gry lokalnej, upewnij się, że udostępniłeś Mindustry dostęp do sieci w ustawieniach zapory (firewall). Zauważ, że niektóre sieci publiczne mogą nie zezwalać na wykrycie serwerów. host.info = Przycisk [accent]host[] hostuje serwer na porcie [scarlet]6567[]. \nKażdy w tej samej sieci [lightgray]wifi lub hotspocie[] powinien zobaczyć twój serwer.\n\nJeśli chcesz, aby każdy z twoim IP mógł dołączyć, musisz wykonać [accent]przekierowywanie portów[].\n\n[lightgray]Notka: Jeśli ktokolwiek ma problem z dołączeniem do gry lokalnej, upewnij się, że udostępniłeś Mindustry dostęp do sieci w ustawieniach zapory (firewall). Zauważ, że niektóre sieci publiczne mogą nie zezwalać na wykrycie serwerów.
join.info = Tutaj możesz wpisać [accent]adres IP serwera[], aby dołączyć lub wyszukać [accent]serwerów w lokalnej sieci[], do których możesz dołączyć .\nGra wieloosobowa na LAN i WAN jest wspomagana.\n\n[lightgray]Notka: Nie ma automatycznej listy wszystkich serwerów; jeśli chcesz dołączyć przez IP, musisz zapytać hosta o IP. join.info = Tutaj możesz wpisać [accent]adres IP serwera[], aby dołączyć lub wyszukać [accent]serwerów w lokalnej sieci[], do których możesz dołączyć .\nGra wieloosobowa na LAN i WAN jest wspomagana.\n\n[lightgray]Notka: Nie ma automatycznej listy wszystkich serwerów; jeśli chcesz dołączyć przez IP, musisz zapytać hosta o IP.
@@ -240,7 +255,7 @@ data.exported = Dane wyeksportowane.
data.invalid = Nieprawidłowe dane gry. data.invalid = Nieprawidłowe dane gry.
data.import.confirm = Zaimportowanie zewnętrznych danych usunie[scarlet] wszystkie[] obecne dane gry.\n[accent]Nie można tego cofnąć![]\n\nGdy dane zostaną zimportowane, gra automatycznie się wyłączy. data.import.confirm = Zaimportowanie zewnętrznych danych usunie[scarlet] wszystkie[] obecne dane gry.\n[accent]Nie można tego cofnąć![]\n\nGdy dane zostaną zimportowane, gra automatycznie się wyłączy.
classic.export = Eksportuj Dane Wersji Klasycznej classic.export = Eksportuj Dane Wersji Klasycznej
classic.export.text = [accent]Mindustry[] otrzymało ostatnio ważną aktualizację.\nWykryto zapis lub mapę z wersji classic (v3.5 build 40) - czy chciałbyś eksportować te zapisy do katalogu domowego swojego telefonu, do użycia w aplikacji Mindustry Classic? classic.export.text = [accent]Mindustry[] otrzymało ostatnio ważną aktualizację.\nWykryto zapis lub mapę z wersji classic (v3.5 build 40) - czy chciałbyś eksportować te zapisy do katalogu domowego swojego telefonu, aby móc używać ich w Mindustry Classic?
quit.confirm = Czy na pewno chcesz wyjść? quit.confirm = Czy na pewno chcesz wyjść?
quit.confirm.tutorial = Czy jesteś pewien tego co robisz?\nSamouczek może zostać powtórzony w[accent] Ustawienia->Gra->Ponów samouczek.[] quit.confirm.tutorial = Czy jesteś pewien tego co robisz?\nSamouczek może zostać powtórzony w[accent] Ustawienia->Gra->Ponów samouczek.[]
loading = [accent]Ładowanie... loading = [accent]Ładowanie...
@@ -248,7 +263,7 @@ reloading = [accent]Przeładowywanie Modów...
saving = [accent]Zapisywanie... saving = [accent]Zapisywanie...
cancelbuilding = [accent][[{0}][] by wyczyścić plan cancelbuilding = [accent][[{0}][] by wyczyścić plan
selectschematic = [accent][[{0}][] by wybrać+skopiować selectschematic = [accent][[{0}][] by wybrać+skopiować
pausebuilding = [accent][[{0}][] by wtrzymać budowę pausebuilding = [accent][[{0}][] by wstrzymać budowę
resumebuilding = [scarlet][[{0}][] by kontynuować budowę resumebuilding = [scarlet][[{0}][] by kontynuować budowę
wave = [accent]Fala {0} wave = [accent]Fala {0}
wave.waiting = Fala za {0} wave.waiting = Fala za {0}
@@ -414,7 +429,6 @@ load = Wczytaj
save = Zapisz save = Zapisz
fps = FPS: {0} fps = FPS: {0}
ping = Ping: {0}ms ping = Ping: {0}ms
language.restart = Uruchom grę ponownie, aby ustawiony język zaczął funkcjonować. language.restart = Uruchom grę ponownie, aby ustawiony język zaczął funkcjonować.
settings = Ustawienia settings = Ustawienia
tutorial = Poradnik tutorial = Poradnik
@@ -456,7 +470,7 @@ boss.health = Zdrowie Bossa
connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0} connectfail = [crimson]Nie można połączyć się z serwerem:\n\n[accent]{0}
error.unreachable = Serwer niedostępny.\nCzy adres jest wpisany poprawnie? error.unreachable = Serwer niedostępny.\nCzy adres jest wpisany poprawnie?
error.invalidaddress = Niepoprawny adres. error.invalidaddress = Niepoprawny adres.
error.timedout = Przekroczono limit czasu!/nUpewnij się, że host ma ustawione przekierowanie portu oraz poprawność wpisanego adresu! error.timedout = Przekroczono limit czasu!\nUpewnij się, że host ma ustawione przekierowanie portu oraz poprawność wpisanego adresu!
error.mismatch = Błąd pakietu:\nprawdopodobne niedopasowanie klienta/serwera.\nUpewnij się, że ty i host macie najnowszą wersję Mindustry! error.mismatch = Błąd pakietu:\nprawdopodobne niedopasowanie klienta/serwera.\nUpewnij się, że ty i host macie najnowszą wersję Mindustry!
error.alreadyconnected = Jesteś już połączony. error.alreadyconnected = Jesteś już połączony.
error.mapnotfound = Plik mapy nie został znaleziony! error.mapnotfound = Plik mapy nie został znaleziony!
@@ -493,10 +507,12 @@ zone.nuclearComplex.description = Dawny zakład produkcji i przetwarzania toru,
zone.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki równinami. Znajduje się tu mała postawiona przez wrogów baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdzenie. zone.fungalPass.description = Przejściowy obszar pomiędzy wysokimi górami a nisko znajdującymi się, ogarniętymi przez zarodniki równinami. Znajduje się tu mała postawiona przez wrogów baza zwiadowcza.\nZniszcz ją.\nUżyj jednostek Nóż i Pełzak. Zniszcz oba rdzenie.
zone.impact0078.description = <insert description here> zone.impact0078.description = <insert description here>
zone.crags.description = <insert description here> zone.crags.description = <insert description here>
settings.language = Język settings.language = Język
settings.data = Dane Gry settings.data = Dane Gry
settings.reset = Przywróć Domyślne settings.reset = Przywróć Domyślne
settings.rebind = Zmień settings.rebind = Zmień
settings.resetKey = Resetuj
settings.controls = Sterowanie settings.controls = Sterowanie
settings.game = Gra settings.game = Gra
settings.sound = Dźwięk settings.sound = Dźwięk
@@ -563,8 +579,8 @@ bar.heat = Ciepło
bar.power = Prąd bar.power = Prąd
bar.progress = Postęp Budowy bar.progress = Postęp Budowy
bar.spawned = Jednostki: {0}/{1} bar.spawned = Jednostki: {0}/{1}
bar.input = Input bar.input = Wejście
bar.output = Output bar.output = Wyjście
bullet.damage = [stat]{0}[lightgray] Obrażenia bullet.damage = [stat]{0}[lightgray] Obrażenia
bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki bullet.splashdamage = [stat]{0}[lightgray] Obrażenia obszarowe ~[stat] {1}[lightgray] kratki
@@ -590,6 +606,8 @@ unit.persecond = /sekundę
unit.timesspeed = x prędkość unit.timesspeed = x prędkość
unit.percent = % unit.percent = %
unit.items = przedmioty unit.items = przedmioty
unit.thousands = tys.
unit.millions = mln
category.general = Główne category.general = Główne
category.power = Prąd category.power = Prąd
category.liquids = Płyny category.liquids = Płyny
@@ -621,19 +639,20 @@ setting.difficulty.normal = Normalny
setting.difficulty.hard = Trudny setting.difficulty.hard = Trudny
setting.difficulty.insane = Szalony setting.difficulty.insane = Szalony
setting.difficulty.name = Poziom trudności setting.difficulty.name = Poziom trudności
setting.screenshake.name = Wstrząsy ekranu setting.screenshake.name = Siła wstrząsów ekranu
setting.effects.name = Wyświetlanie efektów setting.effects.name = Wyświetlanie efektów
setting.destroyedblocks.name = Wyświetl zniszczone bloki setting.destroyedblocks.name = Wyświetl zniszczone bloki
setting.conveyorpathfinding.name = Znajdowanie Ścieżki Stawianych Taśmociągów setting.conveyorpathfinding.name = Ustalanie ścieżki przenośników
setting.coreselect.name = Zezwalaj na schematyczne rdzenie
setting.sensitivity.name = Czułość kontrolera setting.sensitivity.name = Czułość kontrolera
setting.saveinterval.name = Interwał automatycznego zapisywania setting.saveinterval.name = Interwał automatycznego zapisywania
setting.seconds = {0} sekund setting.seconds = {0} sekund
setting.blockselecttimeout.name = Block Select Timeout setting.blockselecttimeout.name = Block Select Timeout
setting.milliseconds = {0} millisekund setting.milliseconds = {0} milisekund
setting.fullscreen.name = Pełny ekran setting.fullscreen.name = Pełny ekran
setting.borderlesswindow.name = Bezramkowe okno[lightgray] (może wymagać restartu) setting.borderlesswindow.name = Bezramkowe okno[lightgray] (może wymagać restartu)
setting.fps.name = Pokazuj FPS oraz ping setting.fps.name = Pokazuj FPS oraz ping
setting.blockselectkeys.name = Pokazuj Klawisze Wyboru Bloków setting.blockselectkeys.name = Pokazuj skróty klawiszowe bloków
setting.vsync.name = Synchronizacja pionowa setting.vsync.name = Synchronizacja pionowa
setting.pixelate.name = Pikselacja [lightgray](wyłącza animacje) setting.pixelate.name = Pikselacja [lightgray](wyłącza animacje)
setting.minimap.name = Pokaż Minimapę setting.minimap.name = Pokaż Minimapę
@@ -653,7 +672,7 @@ public.confirm = Czy chcesz ustawić swoją grę jako publiczną?\n[accent]Każd
public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi. public.beta = Wersje beta gry nie mogą tworzyć publicznych pokoi.
uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[] uiscale.reset = Skala interfejsu uległa zmianie.\nNaciśnij "OK" by potwierdzić zmiany.\n[scarlet]Cofanie zmian i wyjście z gry za[accent] {0}[]
uiscale.cancel = Anuluj i Wyjdź uiscale.cancel = Anuluj i Wyjdź
setting.bloom.name = Rozproszenie setting.bloom.name = Efekt Bloom
keybind.title = Zmień keybind.title = Zmień
keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane. keybinds.mobile = [scarlet]Większość skrótów klawiszowych nie funkcjonuje w wersji mobilnej. Tylko podstawowe poruszanie się jest wspierane.
category.general.name = Ogólne category.general.name = Ogólne
@@ -662,15 +681,15 @@ category.multiplayer.name = Wielu graczy
command.attack = Atakuj command.attack = Atakuj
command.rally = Zbierz command.rally = Zbierz
command.retreat = Wycofaj command.retreat = Wycofaj
placement.blockselectkeys = \n[lightgray]Key: [{0}, placement.blockselectkeys = \n[lightgray]Klawisz: [{0},
keybind.clear_building.name = Wyczyść budynek keybind.clear_building.name = Wyczyść budynek
keybind.press = Naciśnij wybrany klawisz... keybind.press = Naciśnij wybrany klawisz...
keybind.press.axis = Naciśnij oś lub klawisz... keybind.press.axis = Naciśnij oś lub klawisz...
keybind.screenshot.name = Zrzut ekranu mapy keybind.screenshot.name = Zrzut ekranu mapy
keybind.toggle_power_lines.name = Przełącz Linie Energetyczne keybind.toggle_power_lines.name = Zmień widoczność linii energetycznych
keybind.move_x.name = Poruszanie w poziomie keybind.move_x.name = Poruszanie w poziomie
keybind.move_y.name = Poruszanie w pionie keybind.move_y.name = Poruszanie w pionie
keybind.mouse_move.name = Podążaj Za Myszką keybind.mouse_move.name = Podążaj Za Myszą
keybind.dash.name = Dash keybind.dash.name = Dash
keybind.schematic_select.name = Wybierz region keybind.schematic_select.name = Wybierz region
keybind.schematic_menu.name = Menu schematów keybind.schematic_menu.name = Menu schematów
@@ -678,20 +697,20 @@ keybind.schematic_flip_x.name = Obróć schemat horyzontalnie
keybind.schematic_flip_y.name = Obróć schemat wertykalnie keybind.schematic_flip_y.name = Obróć schemat wertykalnie
keybind.category_prev.name = Poprzednia kategoria keybind.category_prev.name = Poprzednia kategoria
keybind.category_next.name = Następna kategoria keybind.category_next.name = Następna kategoria
keybind.block_select_left.name = Wybór Bloku Lewo keybind.block_select_left.name = Block Select Left
keybind.block_select_right.name = Wybór Bloku Prawo keybind.block_select_right.name = Block Select Right
keybind.block_select_up.name = Wybór Bloku Góra keybind.block_select_up.name = Block Select Up
keybind.block_select_down.name = Wybór Bloku Dół keybind.block_select_down.name = Block Select Down
keybind.block_select_01.name = Kategoria/Wybór Bloku 1 keybind.block_select_01.name = Wybór bloku/kategorii 1
keybind.block_select_02.name = Kategoria/Wybór Bloku 2 keybind.block_select_02.name = Wybór bloku/kategorii 2
keybind.block_select_03.name = Kategoria/Wybór Bloku 3 keybind.block_select_03.name = Wybór bloku/kategorii 3
keybind.block_select_04.name = Kategoria/Wybór Bloku 4 keybind.block_select_04.name = Wybór bloku/kategorii 4
keybind.block_select_05.name = Kategoria/Wybór Bloku 5 keybind.block_select_05.name = Wybór bloku/kategorii 5
keybind.block_select_06.name = Kategoria/Wybór Bloku 6 keybind.block_select_06.name = Wybór bloku/kategorii 6
keybind.block_select_07.name = Kategoria/Wybór Bloku 7 keybind.block_select_07.name = Wybór bloku/kategorii 7
keybind.block_select_08.name = Kategoria/Wybór Bloku 8 keybind.block_select_08.name = Wybór bloku/kategorii 8
keybind.block_select_09.name = Kategoria/Wybór Bloku 9 keybind.block_select_09.name = Wybór bloku/kategorii 9
keybind.block_select_10.name = Kategoria/Wybór Bloku 10 keybind.block_select_10.name = Wybór bloku/kategorii 10
keybind.fullscreen.name = Przełącz Pełny Ekran keybind.fullscreen.name = Przełącz Pełny Ekran
keybind.select.name = Zaznacz keybind.select.name = Zaznacz
keybind.diagonal_placement.name = Budowa po skosie keybind.diagonal_placement.name = Budowa po skosie
@@ -708,7 +727,7 @@ keybind.chat.name = Czat
keybind.player_list.name = Lista graczy keybind.player_list.name = Lista graczy
keybind.console.name = Konsola keybind.console.name = Konsola
keybind.rotate.name = Obracanie keybind.rotate.name = Obracanie
keybind.rotateplaced.name = Obróć istniejące (Trzymaj) keybind.rotateplaced.name = Rotate Existing (Hold)
keybind.toggle_menus.name = Zmiana widoczności menu keybind.toggle_menus.name = Zmiana widoczności menu
keybind.chat_history_prev.name = Przewiń wiadomości w górę keybind.chat_history_prev.name = Przewiń wiadomości w górę
keybind.chat_history_next.name = Przewiń wiadomości w dół keybind.chat_history_next.name = Przewiń wiadomości w dół
@@ -736,6 +755,7 @@ rules.enemyCheat = Nieskończone zasoby komputera-przeciwnika (czerwonego zespo
rules.unitdrops = Surowce ze zniszczonych jednostek rules.unitdrops = Surowce ze zniszczonych jednostek
rules.unitbuildspeedmultiplier = Mnożnik prędkości tworzenia jednostek rules.unitbuildspeedmultiplier = Mnożnik prędkości tworzenia jednostek
rules.unithealthmultiplier = Mnożnik życia jednostek rules.unithealthmultiplier = Mnożnik życia jednostek
rules.blockhealthmultiplier = Mnożnik życia bloków
rules.playerhealthmultiplier = Mnożnik życia gracza rules.playerhealthmultiplier = Mnożnik życia gracza
rules.playerdamagemultiplier = Mnożnik obrażeń gracza rules.playerdamagemultiplier = Mnożnik obrażeń gracza
rules.unitdamagemultiplier = Mnożnik obrażeń jednostek rules.unitdamagemultiplier = Mnożnik obrażeń jednostek
@@ -804,6 +824,7 @@ mech.trident-ship.name = Trójząb
mech.trident-ship.weapon = Wnęka bombowa mech.trident-ship.weapon = Wnęka bombowa
mech.glaive-ship.name = Glewia mech.glaive-ship.name = Glewia
mech.glaive-ship.weapon = Zapalający Karabin mech.glaive-ship.weapon = Zapalający Karabin
item.corestorable = [lightgray]Przechowywalne w rdzeniu: {0}
item.explosiveness = [lightgray]Wybuchowość: {0} item.explosiveness = [lightgray]Wybuchowość: {0}
item.flammability = [lightgray]Palność: {0} item.flammability = [lightgray]Palność: {0}
item.radioactivity = [lightgray]Promieniotwórczość: {0} item.radioactivity = [lightgray]Promieniotwórczość: {0}
@@ -908,11 +929,11 @@ block.scorch.name = Płomień
block.scatter.name = Flak block.scatter.name = Flak
block.hail.name = Grad block.hail.name = Grad
block.lancer.name = Lansjer block.lancer.name = Lansjer
block.conveyor.name = Taśmociąg block.conveyor.name = Przenośnik
block.titanium-conveyor.name = Taśmociąg Tytanowy block.titanium-conveyor.name = Przenośnik Tytanowy
block.armored-conveyor.name = Opancerzony Taśmociąg block.armored-conveyor.name = Przenośnik Opancerzony
block.armored-conveyor.description = Przesyła przedmioty z taką samą szybkością jak Przenośnik Tytanowy, ale jest bardziej odporny. Wejściami bocznymi mogą być tylko inne przenośniki. block.armored-conveyor.description = Przesyła przedmioty z taką samą szybkością jak Przenośnik Tytanowy, ale jest bardziej odporny. Wejściami bocznymi mogą być tylko inne przenośniki.
block.junction.name = Skrzyżowanie block.junction.name = Węzeł
block.router.name = Rozdzielacz block.router.name = Rozdzielacz
block.distributor.name = Dystrybutor block.distributor.name = Dystrybutor
block.sorter.name = Sortownik block.sorter.name = Sortownik
@@ -930,8 +951,8 @@ block.incinerator.name = Spalacz
block.spore-press.name = Prasa Zarodników block.spore-press.name = Prasa Zarodników
block.separator.name = Rozdzielacz block.separator.name = Rozdzielacz
block.coal-centrifuge.name = Wirówka węglowa block.coal-centrifuge.name = Wirówka węglowa
block.power-node.name = Węzeł Prądowy block.power-node.name = Węzeł Prądu
block.power-node-large.name = Duży Węzeł Prądowy block.power-node-large.name = Duży Węzeł Prądu
block.surge-tower.name = Wieża Energetyczna block.surge-tower.name = Wieża Energetyczna
block.diode.name = Dioda baterii block.diode.name = Dioda baterii
block.battery.name = Bateria block.battery.name = Bateria
@@ -958,8 +979,8 @@ block.item-source.name = Źródło przedmiotów
block.item-void.name = Próżnia przedmiotów block.item-void.name = Próżnia przedmiotów
block.liquid-source.name = Źródło płynów block.liquid-source.name = Źródło płynów
block.power-void.name = Próżnia prądu block.power-void.name = Próżnia prądu
block.power-source.name = Węzeł Nieskończonego Prądu block.power-source.name = Nieskończony Prąd
block.unloader.name = Wyładowywacz block.unloader.name = Ekstraktor
block.vault.name = Magazyn block.vault.name = Magazyn
block.wave.name = Strumień block.wave.name = Strumień
block.swarmer.name = Działo Rojowe block.swarmer.name = Działo Rojowe
@@ -990,11 +1011,11 @@ block.plated-conduit.name = Opancerzona rura
block.phase-conduit.name = Rura Fazowa block.phase-conduit.name = Rura Fazowa
block.liquid-router.name = Rozdzielacz Płynów block.liquid-router.name = Rozdzielacz Płynów
block.liquid-tank.name = Zbiornik Płynów block.liquid-tank.name = Zbiornik Płynów
block.liquid-junction.name = Skrzyżowanie Rurowe block.liquid-junction.name = Łącznik Płynów
block.bridge-conduit.name = Most Rurowy block.bridge-conduit.name = Most Płynów
block.rotary-pump.name = Wirowa Pompa block.rotary-pump.name = Wirowa Pompa
block.thorium-reactor.name = Reaktor Torowy block.thorium-reactor.name = Reaktor Torowy
block.mass-driver.name = Katapulta Masowa block.mass-driver.name = Katapulta Masy
block.blast-drill.name = Wiertło Wybuchowe block.blast-drill.name = Wiertło Wybuchowe
block.thermal-pump.name = Pompa Termalna block.thermal-pump.name = Pompa Termalna
block.thermal-generator.name = Generator Termalny block.thermal-generator.name = Generator Termalny
@@ -1124,8 +1145,8 @@ block.copper-wall.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia
block.copper-wall-large.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia i wieżyczek w pierwszych kilku falach.\nObejmuje wiele kratek. block.copper-wall-large.description = Tani blok obronny.\nPrzydatny do ochrony rdzenia i wieżyczek w pierwszych kilku falach.\nObejmuje wiele kratek.
block.titanium-wall.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami. block.titanium-wall.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.
block.titanium-wall-large.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.\nObejmuje wiele kratek. block.titanium-wall-large.description = Umiarkowanie silny blok obronny.\nZapewnia umiarkowaną ochronę przed wrogami.\nObejmuje wiele kratek.
block.plastanium-wall.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections. block.plastanium-wall.description = Specjajny typ ściany, który pochłania łuki elektryczne oraz blokuje automatyczne łączenie węzłów.
block.plastanium-wall-large.description = A special type of wall that absorbs electric arcs and blocks automatic power node connections.\nSpans multiple tiles. block.plastanium-wall-large.description = Specjajny typ ściany, który pochłania łuki elektryczne oraz blokuje automatyczne łączenie węzłów.\nObejmuje wiele kratek.
block.thorium-wall.description = Silny blok obronny.\nDobra ochrona przed wrogami. block.thorium-wall.description = Silny blok obronny.\nDobra ochrona przed wrogami.
block.thorium-wall-large.description = Silny blok obronny.\nDobra ochrona przed wrogami.\nObejmuje wiele kratek. block.thorium-wall-large.description = Silny blok obronny.\nDobra ochrona przed wrogami.\nObejmuje wiele kratek.
block.phase-wall.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków. block.phase-wall.description = Ściana pokryta specjalną mieszanką opartą o Włókna Fazowe, która odbija większość pocisków.
@@ -1164,7 +1185,7 @@ block.phase-conduit.description = Zaawansowany blok do przenoszenia cieczy. Uży
block.power-node.description = Przesyła moc do połączonych węzłów. Można podłączyć do czterech źródeł zasilania, zlewów lub węzłów. Zasila też bloki które go dotykają. block.power-node.description = Przesyła moc do połączonych węzłów. Można podłączyć do czterech źródeł zasilania, zlewów lub węzłów. Zasila też bloki które go dotykają.
block.power-node-large.description = Posiada większy zasięg niż zwykły węzeł prądu. Można podłączyć do sześciu źródeł zasilania, zlewów lub węzłów. block.power-node-large.description = Posiada większy zasięg niż zwykły węzeł prądu. Można podłączyć do sześciu źródeł zasilania, zlewów lub węzłów.
block.surge-tower.description = Węzęł prądu z bardzo dużym zasięgiem, posiadający mniej możliwych podłączeń. block.surge-tower.description = Węzęł prądu z bardzo dużym zasięgiem, posiadający mniej możliwych podłączeń.
block.diode.description = Prąd baterii może tylko przepłynąc przez ten blok w jedną strone, jeśli druga strona ma mniej prądu. block.diode.description = Energia może przepływać przez ten blok tylko w jednym kierunku, ale tylko kiedy inne strony mają zmagazynowane mniej energii.
block.battery.description = Przechowuje energię przy nadwyżce produkcji oraz dostarcza energię kiedy jest jej brak, dopóki jest w niej miejsce. block.battery.description = Przechowuje energię przy nadwyżce produkcji oraz dostarcza energię kiedy jest jej brak, dopóki jest w niej miejsce.
block.battery-large.description = Przechowuje o wiele wiecej prądu niż standardowa bateria. block.battery-large.description = Przechowuje o wiele wiecej prądu niż standardowa bateria.
block.combustion-generator.description = Wytwarza energię poprzez spalanie łatwopalnych materiałów. block.combustion-generator.description = Wytwarza energię poprzez spalanie łatwopalnych materiałów.
@@ -1205,7 +1226,7 @@ block.ripple.description = Duża wieża artyleryjska, która strzela jednocześn
block.cyclone.description = Duża szybkostrzelna wieża. block.cyclone.description = Duża szybkostrzelna wieża.
block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne. block.spectre.description = Duże działo dwulufowe, które strzela potężnymi pociskami przebijającymi pancerz w jednostki naziemne i powietrzne.
block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia. block.meltdown.description = Duże działo laserowe, które strzela potężnymi wiązkami dalekiego zasięgu. Wymaga chłodzenia.
block.command-center.description = Wydaje polecenia ruchu sojuszniczym jednostkom na całej mapie.\nPowoduje patrolowanie jednostek, atakowanie wrogiego rdzenia lub wycofanie się do rdzenia / fabryki. Gdy nie ma rdzenia wroga, jednostki będą domyślnie patrolować pod dowództwem ataku. block.command-center.description = Wydaje polecenia ruchu sojuszniczym jednostkom na całej mapie.\nPowoduje patrolowanie jednostek, atakowanie wrogiego rdzenia lub wycofanie się do rdzenia/fabryki. Gdy nie ma rdzenia wroga, jednostki będą domyślnie patrolować pod dowództwem ataku.
block.draug-factory.description = Produkuje drony wydobywcze Draug. block.draug-factory.description = Produkuje drony wydobywcze Draug.
block.spirit-factory.description = Produkuje lekkie drony, które naprawiają bloki. block.spirit-factory.description = Produkuje lekkie drony, które naprawiają bloki.
block.phantom-factory.description = Produkuje zaawansowane drony które pomagają przy budowie. block.phantom-factory.description = Produkuje zaawansowane drony które pomagają przy budowie.
@@ -1217,7 +1238,7 @@ block.crawler-factory.description = Produkuje szybkie jednostki lądowe typu "ka
block.titan-factory.description = Produkuje zaawansowane, opancerzone jednostki lądowe. block.titan-factory.description = Produkuje zaawansowane, opancerzone jednostki lądowe.
block.fortress-factory.description = Produkuje naziemne jednostki ciężkiej artylerii. block.fortress-factory.description = Produkuje naziemne jednostki ciężkiej artylerii.
block.repair-point.description = Bez przerw ulecza najbliższą zniszczoną jednostkę w jego zasięgu. block.repair-point.description = Bez przerw ulecza najbliższą zniszczoną jednostkę w jego zasięgu.
block.dart-mech-pad.description = Umożliwia transformacje w podstawowego mecha bojowego.\nUżyj klikając podczas stania na nim. block.dart-mech-pad.description = Umożliwia transformację w podstawowego mecha bojowego.\nUżyj klikając podczas stania na nim.
block.delta-mech-pad.description = Opuść swój obecny statek i zamień go na szybki, lekko opancerzony mech stworzony do ataków typu uderz-uciekaj.\nUżyj, klikając dwukrotnie podczas stania na lądowisku. block.delta-mech-pad.description = Opuść swój obecny statek i zamień go na szybki, lekko opancerzony mech stworzony do ataków typu uderz-uciekaj.\nUżyj, klikając dwukrotnie podczas stania na lądowisku.
block.tau-mech-pad.description = Opuść swój obecny statek i zamień go na mech wsparcia który może leczyć sojusznicze struktury i jednostki.\nUżyj, klikając dwukrotnie podczas stania na lądowisku. block.tau-mech-pad.description = Opuść swój obecny statek i zamień go na mech wsparcia który może leczyć sojusznicze struktury i jednostki.\nUżyj, klikając dwukrotnie podczas stania na lądowisku.
block.omega-mech-pad.description = Opuść swój obecny statek i zamień go na masywny, dobrze opancerzony mech, przeznaczony do ataków na froncie.\nUżyj, klikając dwukrotnie podczas stania na lądowisku. block.omega-mech-pad.description = Opuść swój obecny statek i zamień go na masywny, dobrze opancerzony mech, przeznaczony do ataków na froncie.\nUżyj, klikając dwukrotnie podczas stania na lądowisku.

View File

@@ -904,10 +904,11 @@ public class Blocks implements ContentList{
}}; }};
junction = new Junction("junction"){{ junction = new Junction("junction"){{
requirements(Category.distribution, ItemStack.with(Items.copper, 1), true); requirements(Category.distribution, ItemStack.with(Items.copper, 2), true);
speed = 26; speed = 26;
capacity = 12; capacity = 12;
health = 30; health = 30;
buildCostMultiplier = 6f;
}}; }};
itemBridge = new BufferedItemBridge("bridge-conveyor"){{ itemBridge = new BufferedItemBridge("bridge-conveyor"){{
@@ -927,16 +928,18 @@ public class Blocks implements ContentList{
sorter = new Sorter("sorter"){{ sorter = new Sorter("sorter"){{
requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 2)); requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 2));
buildCostMultiplier = 3f;
}}; }};
invertedSorter = new Sorter("inverted-sorter"){{ invertedSorter = new Sorter("inverted-sorter"){{
requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 2)); requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 2));
buildCostMultiplier = 3f;
invert = true; invert = true;
}}; }};
router = new Router("router"){{ router = new Router("router"){{
requirements(Category.distribution, ItemStack.with(Items.copper, 3)); requirements(Category.distribution, ItemStack.with(Items.copper, 3));
buildCostMultiplier = 2f;
}}; }};
distributor = new Router("distributor"){{ distributor = new Router("distributor"){{
@@ -946,6 +949,7 @@ public class Blocks implements ContentList{
overflowGate = new OverflowGate("overflow-gate"){{ overflowGate = new OverflowGate("overflow-gate"){{
requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 4)); requirements(Category.distribution, ItemStack.with(Items.lead, 2, Items.copper, 4));
buildCostMultiplier = 3f;
}}; }};
massDriver = new MassDriver("mass-driver"){{ massDriver = new MassDriver("mass-driver"){{

View File

@@ -321,6 +321,11 @@ public class NetServer implements ApplicationListener{
VoteSession[] currentlyKicking = {null}; VoteSession[] currentlyKicking = {null};
clientCommands.<Player>register("votekick", "[player...]", "Vote to kick a player, with a cooldown.", (args, player) -> { clientCommands.<Player>register("votekick", "[player...]", "Vote to kick a player, with a cooldown.", (args, player) -> {
if(!Config.enableVotekick.bool()){
player.sendMessage("[scarlet]Vote-kick is disabled on this server.");
return;
}
if(playerGroup.size() < 3){ if(playerGroup.size() < 3){
player.sendMessage("[scarlet]At least 3 players are needed to start a votekick."); player.sendMessage("[scarlet]At least 3 players are needed to start a votekick.");
return; return;
@@ -443,7 +448,7 @@ public class NetServer implements ApplicationListener{
if(!player.con.hasDisconnected){ if(!player.con.hasDisconnected){
if(player.con.hasConnected){ if(player.con.hasConnected){
Events.fire(new PlayerLeave(player)); Events.fire(new PlayerLeave(player));
Call.sendMessage("[accent]" + player.name + "[accent] has disconnected."); if(Config.showConnectMessages.bool()) Call.sendMessage("[accent]" + player.name + "[accent] has disconnected.");
Call.onPlayerDisconnect(player.id); Call.onPlayerDisconnect(player.id);
} }
@@ -581,7 +586,7 @@ public class NetServer implements ApplicationListener{
player.add(); player.add();
player.con.hasConnected = true; player.con.hasConnected = true;
Call.sendMessage("[accent]" + player.name + "[accent] has connected."); if(Config.showConnectMessages.bool()) Call.sendMessage("[accent]" + player.name + "[accent] has connected.");
Log.info("&lm[{1}] &y{0} has connected. ", player.name, player.uuid); Log.info("&lm[{1}] &y{0} has connected. ", player.name, player.uuid);
Events.fire(new PlayerJoin(player)); Events.fire(new PlayerJoin(player));

View File

@@ -44,7 +44,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
create(item, x, y, to, () -> to.addItem(item)); create(item, x, y, to, () -> to.addItem(item));
} }
@Remote(called = Loc.server) @Remote(called = Loc.server, unreliable = true)
public static void transferItemTo(Item item, int amount, float x, float y, Tile tile){ public static void transferItemTo(Item item, int amount, float x, float y, Tile tile){
if(tile == null || tile.entity == null || tile.entity.items == null) return; if(tile == null || tile.entity == null || tile.entity.items == null) return;
for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){ for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){

View File

@@ -7,6 +7,7 @@ import arc.math.*;
import arc.util.Time; import arc.util.Time;
import mindustry.content.*; import mindustry.content.*;
import mindustry.entities.Effects; import mindustry.entities.Effects;
import mindustry.entities.effect.*;
import mindustry.entities.type.*; import mindustry.entities.type.*;
import mindustry.gen.Call; import mindustry.gen.Call;
import mindustry.graphics.*; import mindustry.graphics.*;
@@ -38,11 +39,26 @@ public interface MinerTrait extends Entity{
/** Returns whether or not this builder can mine a specific item type. */ /** Returns whether or not this builder can mine a specific item type. */
boolean canMine(Item item); boolean canMine(Item item);
/** @return whether to offload mined items immediately at the core. if false, items are collected and dropped in a burst. */
default boolean offloadImmediately(){
return false;
}
default void updateMining(){ default void updateMining(){
Unit unit = (Unit)this; Unit unit = (Unit)this;
Tile tile = getMineTile(); Tile tile = getMineTile();
TileEntity core = unit.getClosestCore(); TileEntity core = unit.getClosestCore();
if(core != null && tile != null && tile.drop() != null && !unit.acceptsItem(tile.drop()) && unit.dst(core) < mineTransferRange){
int accepted = core.tile.block().acceptStack(unit.item().item, unit.item().amount, core.tile, unit);
if(accepted > 0){
Call.transferItemTo(unit.item().item, accepted,
tile.worldx() + Mathf.range(tilesize / 2f),
tile.worldy() + Mathf.range(tilesize / 2f), core.tile);
unit.clearItem();
}
}
if(tile == null || core == null || tile.block() != Blocks.air || dst(tile.worldx(), tile.worldy()) > getMiningRange() if(tile == null || core == null || tile.block() != Blocks.air || dst(tile.worldx(), tile.worldy()) > getMiningRange()
|| tile.drop() == null || !unit.acceptsItem(tile.drop()) || !canMine(tile.drop())){ || tile.drop() == null || !unit.acceptsItem(tile.drop()) || !canMine(tile.drop())){
setMineTile(null); setMineTile(null);
@@ -52,12 +68,13 @@ public interface MinerTrait extends Entity{
if(Mathf.chance(Time.delta() * (0.06 - item.hardness * 0.01) * getMinePower())){ if(Mathf.chance(Time.delta() * (0.06 - item.hardness * 0.01) * getMinePower())){
if(unit.dst(core) < mineTransferRange && core.tile.block().acceptStack(item, 1, core.tile, unit) == 1){ if(unit.dst(core) < mineTransferRange && core.tile.block().acceptStack(item, 1, core.tile, unit) == 1 && offloadImmediately()){
Call.transferItemTo(item, 1, Call.transferItemTo(item, 1,
tile.worldx() + Mathf.range(tilesize / 2f), tile.worldx() + Mathf.range(tilesize / 2f),
tile.worldy() + Mathf.range(tilesize / 2f), core.tile); tile.worldy() + Mathf.range(tilesize / 2f), core.tile);
}else if(unit.acceptsItem(item)){ }else if(unit.acceptsItem(item)){
Call.transferItemToUnit(item, //this is clientside, since items are synced anyway
ItemTransfer.transferItemToUnit(item,
tile.worldx() + Mathf.range(tilesize / 2f), tile.worldx() + Mathf.range(tilesize / 2f),
tile.worldy() + Mathf.range(tilesize / 2f), tile.worldy() + Mathf.range(tilesize / 2f),
unit); unit);

View File

@@ -119,6 +119,11 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
heal(); heal();
} }
@Override
public boolean offloadImmediately(){
return true;
}
@Override @Override
public TypeID getTypeID(){ public TypeID getTypeID(){
return TypeIDs.player; return TypeIDs.player;

View File

@@ -320,6 +320,8 @@ public class Administration{
name("The server name as displayed on clients.", "Server", "servername"), name("The server name as displayed on clients.", "Server", "servername"),
port("The port to host on.", Vars.port), port("The port to host on.", Vars.port),
autoUpdate("Whether to auto-update and exit when a new bleeding-edge update arrives.", false), autoUpdate("Whether to auto-update and exit when a new bleeding-edge update arrives.", false),
showConnectMessages("Whether to display connect/disconnect messages.", true),
enableVotekick("Whether votekick is enabled.", true),
startCommands("Commands run at startup. This should be a comma-separated list.", ""), startCommands("Commands run at startup. This should be a comma-separated list.", ""),
crashReport("Whether to send crash reports.", false, "crashreport"), crashReport("Whether to send crash reports.", false, "crashreport"),
logging("Whether to log everything to files.", true), logging("Whether to log everything to files.", true),

View File

@@ -376,7 +376,7 @@ public class Tile implements Position, TargetTrait{
return state.teams.canInteract(team, getTeam()); return state.teams.canInteract(team, getTeam());
} }
public Item drop(){ public @Nullable Item drop(){
return overlay == Blocks.air || overlay.itemDrop == null ? floor.itemDrop : overlay.itemDrop; return overlay == Blocks.air || overlay.itemDrop == null ? floor.itemDrop : overlay.itemDrop;
} }

View File

@@ -171,7 +171,7 @@ public class BuildBlock extends Block{
return; return;
} }
if(entity.previous == null) return; if(entity.previous == null || entity.cblock == null) return;
if(Core.atlas.isFound(entity.previous.icon(mindustry.ui.Cicon.full))){ if(Core.atlas.isFound(entity.previous.icon(mindustry.ui.Cicon.full))){
Draw.rect(entity.previous.icon(Cicon.full), tile.drawx(), tile.drawy(), entity.previous.rotate ? tile.rotation() * 90 : 0); Draw.rect(entity.previous.icon(Cicon.full), tile.drawx(), tile.drawy(), entity.previous.rotate ? tile.rotation() * 90 : 0);
@@ -257,7 +257,7 @@ public class BuildBlock extends Block{
if(cblock != null){ if(cblock != null){
ItemStack[] requirements = cblock.requirements; ItemStack[] requirements = cblock.requirements;
if(requirements.length != accumulator.length || totalAccumulator.length != requirements.length){ if(requirements.length != accumulator.length || totalAccumulator.length != requirements.length){
setDeconstruct(previous); setDeconstruct(cblock);
} }
//make sure you take into account that you can't deconstruct more than there is deconstructed //make sure you take into account that you can't deconstruct more than there is deconstructed
@@ -342,12 +342,12 @@ public class BuildBlock extends Block{
this.progress = 1f; this.progress = 1f;
if(previous.buildCost >= 0.01f){ if(previous.buildCost >= 0.01f){
this.cblock = previous; this.cblock = previous;
this.accumulator = new float[previous.requirements.length];
this.totalAccumulator = new float[previous.requirements.length];
this.buildCost = previous.buildCost * state.rules.buildCostMultiplier; this.buildCost = previous.buildCost * state.rules.buildCostMultiplier;
}else{ }else{
this.buildCost = 20f; //default no-requirement build cost is 20 this.buildCost = 20f; //default no-requirement build cost is 20
} }
this.accumulator = new float[previous.requirements.length];
this.totalAccumulator = new float[previous.requirements.length];
} }
@Override @Override

View File

@@ -1,3 +1,3 @@
org.gradle.daemon=true org.gradle.daemon=true
org.gradle.jvmargs=-Xms256m -Xmx1024m org.gradle.jvmargs=-Xms256m -Xmx1024m
archash=14b6027d79cda5e02d74a7c2f85eb7e768c7abeb archash=4882a25c74ada2c0aff9dbcf2cef0ab1b7936b67