Merge branch 'master' of github.com:essentials/Essentials

This commit is contained in:
KHobbits 2012-04-05 23:37:33 +01:00
commit 6a75d6fe86
7 changed files with 499 additions and 25 deletions

View File

@ -0,0 +1,423 @@
#version: TeamCity
# Single quotes have to be doubled: ''
# Translations start here
# by: losdamianos
action=* {0} {1}
addedToAccount=\u00a7a{0} zostalo dodane do twojego konta.
addedToOthersAccount=\u00a7a{0} dodane do konta {1}\u00a7. Nowy stan konta: {2}.
alertBroke=broke:
alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} at: {3}
alertPlaced=postawil:
alertUsed=uzyl:
autoAfkKickReason=Zostales wyrzucony z serwera za pozostawanie bez ruchu przez wiecej niz {0} minut.
backAfterDeath=\u00a77Uzyj komendy /back aby powrocic na miejsce swojej smierci.
backUsageMsg=\u00a77Transportowanie do poprzedniej lokacji.
backupDisabled=Zewnetrzny skrypt backupu nie zostal skonfigurowany.
backupFinished=Backup zakonczony.
backupStarted=Backup rozpoczety.
balance=\u00a77Stan konta: {0}
balanceTop=\u00a77Najbogatsi gracze ({0})
banExempt=\u00a7cNie mozesz zbanowac tego gracza.
banIpAddress=\u00a77Zbanowano adress IP
bannedIpsFileError=Blad odczytu banned-ips.txt
bannedIpsFileNotFound=banned-ips.txt nie znaleziony
bannedPlayersFileError=Blad odczytu banned-players.txt
bannedPlayersFileNotFound=banned-players.txt nie znaleziony
bigTreeFailure=\u00a7cGenerator duzych drzew zaliczyl blad. Sprobuj ponownie na ziemi lub trawie.
bigTreeSuccess= \u00a77Utworzono duze drzewo.
blockList=Essentials relayed the following commands to another plugin:
broadcast=[\u00a7cBroadcast\u00a7f]\u00a7a {0}
buildAlert=\u00a7cNie mozesz tu budowac
bukkitFormatChanged=Format wersji Bukkita jest zmieniony. Wersja nie jest sprawdzana.
burnMsg=\u00a77Podpaliles {0} na {1} sekund.
canTalkAgain=\u00a77Znow mozesz mowic.
cantFindGeoIpDB=Nie mozna znalezc bazy danych GeoIP!
cantReadGeoIpDB=Odczytywanie bazy danych GeoIP zawiodlo!
cantSpawnItem=\u00a7cNie mozesz stworzyc przedmiotu {0}.
chatTypeLocal=[L]
chatTypeSpy=[Spy]
commandFailed=Komenda {0} zawiodla.
commandHelpFailedForPlugin=Blad podczas uzyskiwania pomocy dla: {0}
commandNotLoaded=\u00a7cKomenda {0} jest zaladowana nieprawidlowo..
compassBearing=\u00a77Bearing: {0} ({1} degrees).
configFileMoveError=Failed to move config.yml to backup location.
configFileRenameError=Failed to rename temp file to config.yml
connectedPlayers=Obecni gracze:
connectionFailed=Blad podczas otwierania polaczenia.
cooldownWithMessage=\u00a7cCooldown: {0}
corruptNodeInConfig=\u00a74Notice: Your configuration file has a corrupt {0} node.
couldNotFindTemplate=Could not find template {0}
creatingConfigFromTemplate=Creating config from template: {0}
creatingEmptyConfig=Stworzono pusty config: {0}
creative=Tworczy
currency={0}{1}
day=dzien
days=dnie
defaultBanReason=Admin ma zawsze racje!
deleteFileError=Nie mozna usunac pliku: {0}
deleteHome=\u00a77Posterunek {0} zostal usuniety
deleteJail=\u00a77Wiezienie {0} zostalo usuniete
deleteWarp=\u00a77Warp {0} zostal usuniety
deniedAccessCommand={0} nie ma dostepu do tego polecenia
dependancyDownloaded=[Essentials] Zaleznosci {0} pobrane prawidlowo.
dependancyException=[Essentials] Wystapil blad w trakcie pobierania zaleznosci.
dependancyNotFound=[Essentials] Wymagana zaleznosc nie zostala znaleziona, pobieranie.
depth=\u00a77Jestes na poziomie morza.
depthAboveSea=\u00a77Jestes {0} blok(ow) nad poziomem morza.
depthBelowSea=\u00a77Jestes {0} blok(ow) pod poziomem morza.
destinationNotSet=Cel nieokreslony.
disableUnlimited=\u00a77Wylaczone nieograniczone tworzenia {0} dla {1}.
disabled=wylaczone
disabledToSpawnMob=Tworzenie tego moba zostalo wylaczone w pliku config.
dontMoveMessage=\u00a77Teleportacja nastapi za {0}. Prosze sie nie ruszac.
downloadingGeoIp=Pobieranie bazy danych GeoIP... To moze zajac chwile (wioska: 0.6 MB, miasto: 20MB)
duplicatedUserdata=Kopiowanie danych uzytkownika: {0} i {1}
enableUnlimited=\u00a77Przyznano nielimitowane zasoby {0} dla {1}.
enabled=wlaczone
enchantmentApplied = \u00a77Ulepszenie {0} zostalo przyznane przedmiotowi w twoim reku.
enchantmentNotFound = \u00a7cUlepszenie nie odnalezione
enchantmentPerm = \u00a7cNie masz zezwolenia na {0}.
enchantmentRemoved = \u00a77Ulepszenie {0} zostalo usuniete z przedmiotu w twoim reku..
enchantments = \u00a77Ulepszenia: {0}
errorCallingCommand=Blad wywolywania komendy /{0}
errorWithMessage=\u00a7cBlad: {0}
essentialsHelp1=Plik jest uszkodzony i Essentials nie moze go otworzyc. Essentials jest teraz wylaczone. Jesli nie mozesz samemu naprawic pliku, idz do adresu http://tiny.cc/EssentialsChat
essentialsHelp2=Plik jest uszkodzony i Essentials nie moze go otworzyc. Essentials jest teraz wylaczone. Jesli nie mozesz samemu naprawic pliku, wpisz /essentialshelp w grze lub idz do adresu http://tiny.cc/EssentialsChat
essentialsReload=\u00a77Essentials przeladowalo {0}.
extinguish=\u00a77Zostales ugaszony.
extinguishOthers=\u00a77Ugasiles {0}.
failedToCloseConfig=Blad podczas zamykania configu {0}
failedToCreateConfig=Blad podczas tworzenia configu {0}
failedToWriteConfig=Blad podczas pisania configu {0}
false=falsz
feed=\u00a77Twoj glod zostal zaspokojony.
feedOther=\u00a77Nakarmiono {0}.
fileRenameError=Blad podczas zmiany nazwy pliku “{0}”.
flyMode=\u00a77Latanie {0} dla {1}.
foreverAlone=\u00a7cNie masz komu odpisac.
freedMemory=Zwolniono {0} MB.
gameMode=\u00a77Ustawiono tryb gry {0} dla {1}.
gcchunks= chunki
gcentities= jednostki
gcfree=Wolna pamiec: {0} MB
gcmax=Maksymalna pamiec: {0} MB
gctotal=Alokowana pamiec: {0} MB
geoIpUrlEmpty=Url pobierania GeoIP jest puste.
geoIpUrlInvalid=Url pobierania GeoIP jest nieprawidlowe.
geoipJoinFormat=Gracz {0} przybyl z {1}
godDisabledFor=Godmode wylaczony dla {0}.
godEnabledFor=Godmode wlaczony dla {0}.
godMode=\u00a77Godmode {0}.
haveBeenReleased=\u00a77Zostales wypuszczony.
heal=\u00a77Uleczony
healOther=\u00a77Uleczono {0}.
helpConsole=Aby uzyskac pomoc z konsoli, wpisz “????.
helpFrom=\u00a77Komendy od {0}:
helpLine=\u00a76/{0}\u00a7f: {1}
helpMatching=\u00a77Komendy odpowiadajace "{0}":
helpOp=\u00a7c[HelpOp]\u00a7f \u00a77{0}:\u00a7f {1}
helpPages=Strona \u00a7c{0}\u00a7f z \u00a7c{1}\u00a7f:
helpPlugin=\u00a74{0}\u00a7f: Plugin Help: /help {1}
holeInFloor=Czarna dziura
homeSet=\u00a77Posterunek ustawiono
homeSetToBed=\u00a77Twoj posterunek znajduje sie teraz w tym lozku.
homes=Posterunki: {0}
hour=godzina
hours=godziny
ignorePlayer=Od tej chwili ignorujesz gracza {0}.
illegalDate=Illegal date format.
infoChapter=Wybierz rozdzial:
infoChapterPages=Rozdzial {0}, strona \u00a7c{1}\u00a7f z \u00a7c{2}\u00a7f:
infoFileDoesNotExist=Plik “info.txt” nie istnieje. Tworzenie tego pliku.
infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Page \u00a74{0}\u00a76/\u00a74{1} \u00a7e----
infoUnknownChapter=Nieznany rozdzial.
invBigger=Ekwipunek innego gracza jest wiekszy niz Twoj.
invRestored=Twoj ekwipunek zostal przywrocony.
invSee=Widzisz ekwipunek {0}.
invSeeHelp=Wpisz /invsee aby przywrocic swoj ekwipunek.
invalidCharge=\u00a7cInvalid charge.
invalidHome=Posterunek {0} nie istnieje.
invalidMob=Niepoprawny typ moba..
invalidServer=Niepoprawny serwer!
invalidSignLine=Linijka {0} na znaku jest bledna.
invalidWorld=\u00a7cNieprawidlowy swiat.
inventoryCleared=\u00a77Ekwipunek oprozniony.
inventoryClearedOthers=\u00a77Ekwipunek \u00a7c{0}\u00a77 oprozniony.
is=jest
itemCannotBeSold=Nie mozesz sprzedac tego przedmiotu do serwera.
itemMustBeStacked=Przedmiotem handluje sie w stackach. Wielkosc 2s to dwa stacki itd.
itemNotEnough1=\u00a7cMasz za malo tego przedmiotu, aby go sprzedac.
itemNotEnough2=\u00a77Jesli chcesz sprzedac wszystkie przedmioty tego typu, wpisz /sell nazwaprzedmiotu
itemNotEnough3=\u00a77/sell nazwaprzedmiotu -1 sprzeda cala ilosc przedmiotu poza 1 sztuka itd.
itemSellAir=Serio probujesz sprzedac powietrze? Miej w reku przedmiot..
itemSold=\u00a77Sprzedamo za \u00a7c{0} \u00a77({1} {2} po {3} kazdy)
itemSoldConsole={0} Sprzedano {1} za \u00a77{2} \u00a77({3} sztuki po {4} kazda)
itemSpawn=\u00a77Otrzymywanie {0} {1}
itemsCsvNotLoaded=Nie mozna wczytac items.csv.
jailAlreadyIncarcerated=\u00a7cTen gracz jest juz w wiezieniu “{0}”.
jailMessage=\u00a7cZa kazde przewinienie czeka kara.
jailNotExist=Nie ma takiego wiezienia..
jailReleased=\u00a77Gracz \u00a7e{0}\u00a77 wypuszczony z wiezienia.
jailReleasedPlayerNotify=\u00a77Zostales zwolniony!
jailSentenceExtended=Czas pobyty w wiezieniu zwiekszony do: {0)
jailSet=\u00a77Zostalo stworzone wiezienie “{0}”.
jumpError=That would hurt your computer''s brain.
kickDefault=Zostales wyproszony z serwera.
kickExempt=\u00a7cNie mozesz wyprosic tej osoby.
kill=\u00a77Zabito {0}.
kitError2=\u00a7cTen zestaw nie istnieje lub zostal zle zdefininowany.
kitError=\u00a7cNie ma prawidlowych zestawow.
kitErrorHelp=\u00a7cByc moze przedmiotowi brakuje ilosci w konfiguracji?
kitGive=\u00a77Przydzielanie zestawu {0}.
kitInvFull=\u00a7cTwoj ekwipuek jest pelen, wykladanie zestawu na podloge.
kitTimed=\u00a7cNie mozesz uzyc tego zestawu przez kolejne {0}.
kits=\u00a77Zestawy: {0}
lightningSmited=\u00a77Zostales zdzielony piorunem.
lightningUse=\u00a77Uderzanie piorunem {0}.
listAfkTag = \u00a77[AFK]\u00a7f
listAmount = \u00a79Na serwerze jest \u00a7c{0}\u00a79 graczy z maksimum \u00a7c{1}\u00a79 online.
listAmountHidden = \u00a79There are \u00a7c{0}\u00a77/{1}\u00a79 out of maximum \u00a7c{2}\u00a79 players online.
listGroupTag={0}\u00a7f:
listHiddenTag = \u00a77[HIDDEN]\u00a7f
loadWarpError=Blad przy wczytywaniu Warpu {0}
localFormat=Local: <{0}> {1}
mailClear=\u00a7cAby oczyscic skrzynke, wpisz /mail clear
mailCleared=\u00a77Skrzynka oprozniona!!
mailSent=\u00a77Wiadomosc wyslana!
markMailAsRead=\u00a7cAby oczyscic skrzynke, wpisz /mail clear
markedAsAway=\u00a77Zostales oznaczony jako nieobecny.
markedAsNotAway=\u00a77Juz nie jestes nieobecny.
maxHomes=Nie mozesz ustawic wiecej niz {0} posterunkow.
mayNotJail=\u00a7cNie mozesz wtracic do wiezienia tej osoby.
me=ja
minute=minuta
minutes=minuty
missingItems=Nie masz {0}x{1}.
missingPrefixSuffix=Missing a prefix or suffix for {0}
mobSpawnError=Blad podczas zmiany spawnera.
mobSpawnLimit=Ilosc mobow ograniczona do limitu serwera.
mobSpawnTarget=Blok musi byc spawnerem.
mobsAvailable=\u00a77Moby: {0}
moneyRecievedFrom=\u00a7a{0} otrzymane od {1}
moneySentTo=\u00a7a{0} zostalo wyslane do {1}
moneyTaken={0} zostalo zabrane z Twoich funduszy..
month=miesiac
months=miesiecy
moreThanZero=Ilosc musi byc wieksza od 0.
msgFormat=\u00a77[{0}\u00a77 -> {1}\u00a77] \u00a7f{2}
muteExempt=\u00a7cNie mozesz wyciszyc tego gracza..
mutedPlayer=Player {0} wyciszony.
mutedPlayerFor=Player {0} wyciszony na {1}.
mutedUserSpeaks={0} probowal sie odezwac, ale jest wyciszony.
nearbyPlayers=Gracze w poblizu: {0}
negativeBalanceError=Gracz nie moze miec ujemnego stanu konta.
nickChanged=Nick zmieniony.
nickDisplayName=\u00a77Musisz wlaczyc “change-displayname” w configu Essential.
nickInUse=\u00a7cTen nick jest juz w uzyciu.
nickNamesAlpha=\u00a7cNicki musza byc alfanumeryczne.
nickNoMore=\u00a77Nie masz juz nicku.
nickOthersPermission=\u00a7cNie masz uprawnienia do zmiany nicku innym.
nickSet=\u00a77Twoj nick od teraz to \u00a7c{0}
noAccessCommand=\u00a7cNie masz dostepu do tej komendy.
noAccessPermission=\u00a7cNie masz uprawnien do dostepu do {0}.
noBreakBedrock=Nie masz uprawnien do niszczenia bedrocka.
noDestroyPermission=\u00a7cNie masz uprawnien do niszczenia {0}.
noGodWorldWarning=\u00a7cUwaga! Godmode wylaczony w tym swiecie!.
noHelpFound=\u00a7cNie ma odpowiadajacych komend.
noHomeSet=Nie masz ustawionego posterunku.
noHomeSetPlayer=Gracz nie ma ustawionego posterunku.
noKitPermission=\u00a7cMusisz posiadac uprawnienia \u00a7c{0}\u00a7c aby uzywac tego zestawu.
noKits=\u00a77Nie ma jeszcze dostepnych zestawow.
noMail=Nie masz zadnych wiadomosci.
noMotd=\u00a7cNie ma wiadomosci dnia..
noNewMail=\u00a77Nie masz zadnych nowych wiadomosci.
noPendingRequest=You do not have a pending request.
noPerm=\u00a7cNie masz uprawnien \u00a7f{0}.
noPermToSpawnMob=\u00a7cNie masz uprawnien do tworzenia tego moba..
noPlacePermission=\u00a7cNie masz uprawnien do stawiania bloku kolo tego znaku..
noPowerTools=Nie masz przypisanego zadnego power tool.
noRules=\u00a7cNie ustalono jeszcze zadnych zasad.
noWarpsDefined=Nie ma zadnych warpow.
none=zaden
notAllowedToQuestion=\u00a7cNie mozesz zadac tego pytania.
notAllowedToShout=\u00a7cNie mozesz krzyczec..
notEnoughExperience=Nie masz wystarczajaco duzo doswiadczenia.
notEnoughMoney=Nie masz tyle pieniedzy.
notRecommendedBukkit= * ! * Wersja Bukkita nie jest rekomendowana wersja dla Essentials.
notSupportedYet=Jeszcze nie wspierane.
nothingInHand = \u00a7cNie masz nic w reku..
now=teraz
nuke=Niech smierc pochlonie caly swiat!
numberRequired=Tutaj powinna byc liczba, gluptasie.
onlyDayNight=/time obsluguje tylko day/night.
onlyPlayers=Tylko gracze w grze moga uzywac {0}.
onlySunStorm=/weather obsluguje tylko sun/storm.
orderBalances=Ordering balances of {0} users, please wait ...
pTimeCurrent=Czas \u00a7e{0} u00a7f to {1}.
pTimeCurrentFixed=Czas \u00a7e{0}\u00a7f przywrocony do {1}.
pTimeNormal=Czas \u00a7e{0}'s\u00a7f jest normalny i odpowiada serwerowemu.
pTimeOthersPermission=\u00a7cNie masz uprawnien do zmiany czasu innym.
pTimePlayers=Ci gracze beda miec wlasny czas:
pTimeReset=Czas gracza zostal zresetowany dla \u00a7e{0}
pTimeSet=Czas gracza ustawiony na \u00a73{0}\u00a7f dla \u00a7e{1}
pTimeSetFixed=Czas gracza przywrocony do \u00a73{0}\u00a7f dla \u00a7e{1}
parseError=Blad skladniowy {0} w linii {1}.
pendingTeleportCancelled=\u00a7cOczekujace zapytanie teleportacji odrzucone.
permissionsError=Brakuje Permissions/GroupManager; prefixy/suffixy czatu zostana wylaczone.
playerBanned=\u00a7c{0} zbanowal {1} za {2}.
playerInJail=\u00a7cGracz jest juz w wiezieniu “{0}”.
playerJailed=\u00a77Gracz {0} wtracony do wiezienia.
playerJailedFor= \u00a77Gracz {0} wtracony do wiezienia na {1}.
playerKicked=\u00a7c{0} wywalil {1} za {2}.
playerMuted=\u00a77Zostales wyciszony.
playerMutedFor=\u00a77Zostales wyciszony na {0}.
playerNeverOnServer=\u00a7cGracz {0} nigdy nie byl na tym serwerze.
playerNotFound=\u00a7cNie odnaleziono gracza.
playerUnmuted=\u00a77Zostales przywrocony do glosu.
pong=Pong!
possibleWorlds=\u00a77Mozliwe swiaty maja numery od 0 do {0}.
powerToolAir=Nie zartuj, chcesz przypisac polecenie do powietrza?
powerToolAlreadySet=Polecenie \u00a7c{0}\u00a7f jest juz przypisane do {1}.
powerToolAttach=\u00a7c{0}\u00a7f polecenie przypisane do {1}.
powerToolClearAll=Wszystkie przypisane polecenia zostaly usuniete!
powerToolList={1} zawiera nastepujace polecenia: \u00a7c{0}\u00a7f.
powerToolListEmpty={0} nie ma przypisanych polecen.
powerToolNoSuchCommandAssigned=Polecenie \u00a7c{0}\u00a7f nie moze byc przypisane do {1}.
powerToolRemove=Polecenie \u00a7c{0}\u00a7f usuniete z {1}.
powerToolRemoveAll=Wszystkie polecenia zostaly usuniete z {0}.
powerToolsDisabled=Wszystkie twoje podpiecia zostaly zdezaktywowane.
powerToolsEnabled=Wszystkie twoje podpiecia zostaly aktywowane.
protectionOwner=\u00a76[EssentialsProtect] Wlasciciel zabezpieczen: {0}
questionFormat=\u00a77[Question]\u00a7f {0}
readNextPage=Wpisz /{0} {1} aby przeczytac nastepna strone
reloadAllPlugins=\u00a77Przeladowano wszystkie wtyczki
removed=\u00a77Usunieto {0} byty.
repair=Udalo sie naprawic twoj: \u00a7e{0}.
repairAlreadyFixed=\u00a77Ten przedmiot nie potrzebuje naprawy
repairEnchanted=\u00a77Nie masz zezwolenia do naprawiania ulepszonych przedmiotow.
repairInvalidType=\u00a7cTen przedmiot nie moze byc naprawiony.
repairNone=Zaden przedmiot nie wymagal naprawy.
requestAccepted=\u00a77Zadanie teleportacji - zaakceptowano.
requestAcceptedFrom=\u00a77{0} zaakceptowal Twoje zadanie teleportacji.
requestDenied=\u00a77Zadanie teleportacji - odrzucone.
requestDeniedFrom=\u00a77{0} odrzucil Twoje zadanie teleportacji.
requestSent=\u00a77zZadanie wyslania do {0}\u00a77.
requestTimedOut=\u00a7cZadanie teleportacji - przedawnione.
requiredBukkit= * ! * Potrzebujesz ostatniego {0} CraftBukkit-a, pobierz go z http://dl.bukkit.org/downloads/craftbukkit/
returnPlayerToJailError=Wystapil blad podczas powrotu gracza {0} do wiezienia: {1}
second=sekunda
seconds=sekund
seenOffline=Gracz {0} jest offline od {1}
seenOnline=Gracz {0} jest online od {1}
serverFull=Serwer jest pelen graczy, sprobuj pozniej.
serverTotal=Podsumowanie serwera: {0}
setSpawner=Ustawiono spawn na {0}.
sheepMalformedColor=Niewlasciwa barwa.
shoutFormat=\u00a77[Shout]\u00a7f {0}
signFormatFail=\u00a74[{0}]
signFormatSuccess=\u00a71[{0}]
signFormatTemplate=[{0}]
signProtectInvalidLocation=\u00a74Nie masz zezwolenia do tworzenia tutaj znakow.
similarWarpExist=Warp o identycznej nazwie juz istnieje.
slimeMalformedSize=Niewlasciwy rozmiar.
soloMob=Ten mob lubi byc sam.
spawnSet=\u00a77Ustawiono punkt spawnu dla grupy {0}.
spawned=stworzono
sudoExempt=Nie mozesz podniesc uprawnien tego uzytkownika.
sudoRun=Probuje {0} uruchomic: /{1} {2}
suicideMessage=\u00a77Zegnaj okrutny swiecie.
suicideSuccess= \u00a77{0} dokonal zamachu na swoje zycie
survival=survival
takenFromAccount=\u00a7c{0} zostalo pobrane z konta.
takenFromOthersAccount=\u00a7c{0} zostalo pobrane z {1}\u00a7c konta. Nowy stan konta: {2}
teleportAAll=\u00a77Zadanie teleportacji - wyslano do wszystkich graczy.
teleportAll=\u00a77Teleportowanie wszystkich graczy.
teleportAtoB=\u00a77{0}\u00a77 przeteleportowal Ciebie do {1}\u00a77.
teleportDisabled={0} ma zdezaktywowana teleportacje.
teleportHereRequest=\u00a7c{0}\u00a7c ma zadanie przeteleportowac cie do nich.
teleportNewPlayerError=Blad przy teleportowniu nowego gracza.
teleportRequest=\u00a7c{0}\u00a7c zazadal teleportacji do Ciebie.
teleportRequestTimeoutInfo=\u00a77 Zadanie teleportacji przedawni sie za {0} sekund.
teleportTop=\u00a77Teleportacja na wierzch.
teleportationCommencing=\u00a77Teleport rozgrzewa sie...
teleportationDisabled=\u00a77Teleportacja - zdezaktywowana.
teleportationEnabled=\u00a77Teleportacja - aktywowana.
teleporting=\u00a77Teleportacja...
teleportingPortal=\u00a77Teleportacja przez portal.
tempBanned=Tymczasowo zbanowany na serwerze przez {0}.
tempbanExempt=\u00a77Nie mozesz tymczasowo zbanowac tego gracza.
thunder= {0} przywowlal burze.
thunderDuration={0} przywolal burze na {1} sekund.
timeBeforeHeal=Czas przed nastepnym uzdrowieniem: {0}.
timeBeforeTeleport=Czas przed nastepnym teleportem:{0}.
timeFormat=\u00a73{0}\u00a7f or \u00a73{1}\u00a7f or \u00a73{2}\u00a7f
timePattern=(?:([0-9]+)\\s*y[a-z]*[,\\s]*)?(?:([0-9]+)\\s*mo[a-z]*[,\\s]*)?(?:([0-9]+)\\s*w[a-z]*[,\\s]*)?(?:([0-9]+)\\s*d[a-z]*[,\\s]*)?(?:([0-9]+)\\s*h[a-z]*[,\\s]*)?(?:([0-9]+)\\s*m[a-z]*[,\\s]*)?(?:([0-9]+)\\s*(?:s[a-z]*)?)?
timeSet=Czas ustawiono we wszystkich swiatach.
timeSetPermission=\u00a7cNie masz uprawnien do ustawiania czasu.
timeWorldCurrent=Obecny czas {0} to \u00a73{1}.
timeWorldSet=Czas ustawiono {0} w: \u00a7c{1}.
tradeCompleted=\u00a77Handel zakonczono.
tradeSignEmpty=Tabliczka handlowa nie jest dostepna dla Ciebie.
tradeSignEmptyOwner=Nie ma nic do pobrania z tej tabliczki.
treeFailure=\u00a7cUtworzenie drzewa nie powiodlo sie, sprobuj na trawie lub ziemi.
treeSpawned=\u00a77Drzewo utworzono.
true=prawda
typeTpaccept=\u00a77Aby zaakceptowac teleport, wpisz \u00a7c/tpaccept\u00a77.
typeTpdeny=\u00a77Aby odmowic teleportacji, wpisz \u00a7c/tpdeny\u00a77.
typeWorldName=\u00a77Mozesz rowniez wpisac nazwe danego swiata.
unableToSpawnMob=Nie udalo sie stworzyc potwora.
unbannedIP=Odbanowana gracza o danym adresie IP.
unbannedPlayer=Odbanowano gracza.
unignorePlayer=Nie ignorujesz juz gracza {0}.
unknownItemId=Nieznane id przedmiotu: {0}.
unknownItemInList=Nieznany przedmiot {0} w liscie {1} .
unknownItemName=Nieznana nazwa przedmiotu: {0}.
unlimitedItemPermission=\u00a7cBrak uprawnien dla nielimitowanego przedmiotu {0}.
unlimitedItems=Nielimitowane przedmioty:
unmutedPlayer=Gracz {0} moze znowu mowic.
upgradingFilesError=Wystapil blad podczas upgradu plikow.
userDoesNotExist=Uzytkownik {0} nie istnieje w bazie danych.
userIsAway={0} jest teraz AFK.
userIsNotAway={0} nie jest juz AFK.
userJailed=\u00a77Zostales skazany.
userUsedPortal={0} uzyl istniejacego portalu wyjscia.
userdataMoveBackError=Nie udalo sie przeniesc userdata/{0}.tmp do userdata/{1}
userdataMoveError=Nie udalo sie przeniesc userdata/{0} do userdata/{1}.tmp
usingTempFolderForTesting=Uzywam tymczasowego folderu dla testu:
versionMismatch=Niepoprawna wersja! Prosze ulepszyc {0} do tej samej wersji co inne pliki.
versionMismatchAll=Niepoprawna wersja! Prosze ulepszyc wszystkie pliki Essentials do tej samej wersji.
voiceSilenced=\u00a77Twe usta zostaly zaszyte.
warpDeleteError=Wystapil problem podczas usuwania pliku z Warpami.
warpListPermission=\u00a7cNie masz pozwolenia na sprawdzenie listy Warpow..
warpNotExist=Ten Warp nie istnieje.
warpOverwrite=\u00a7cNie mozesz nadpisac tego Warpa.
warpSet=\u00a77Warp {0} stworzony.
warpUsePermission=\u00a7cNie masz pozwolenie na korzystanie z tego Warpa.
warpingTo=\u00a77Teleportuje do {0}.
warps=Warpy: {0}
warpsCount=\u00a77Istnieje {0} warpow. Pokazuje strone {1} z {2}.
weatherStorm=\u00a77Ustawiles burzowa pogode w {0}.
weatherStormFor=\u00a77Ustawiles burzowa pogode w {0} na {1} sekund.
weatherSun=\u00a77Ustawiles bezchmurna pogode w {0}.
weatherSunFor=\u00a77Ustawiles bezchmurna pogode w {0} na {1} sekund.
whoisBanned=\u00a79 - Zbanowany: {0}.
whoisExp=\u00a79 - Punkty Doswiadczenia: {0} (Poziom {1}).
whoisGamemode=\u00a79 - Tryb Gry: {0}.
whoisGeoLocation=\u00a79 - Lokacja: {0}.
whoisGod=\u00a79 - Godmode: {0}.
whoisHealth=\u00a79 - Zycie: {0}/20.
whoisIPAddress=\u00a79 - Adres IP: {0}.
whoisIs={0} jest {1}.
whoisJail=\u00a79 - W wiezieniu: {0}.
whoisLocation=\u00a79 - Lokacja: ({0}, {1}, {2}, {3})
whoisMoney=\u00a79 - Pieniadze: {0}.
whoisOP=\u00a79 - OP: {0}
whoisStatusAvailable=\u00a79 - Status: Dostepny
whoisStatusAway=\u00a79 - Status: \u00a7cNieobecny\u00a7f
worth=\u00a77Stack {0} jest warty \u00a7c{1}\u00a77 ({2}rzedmiot(y) po {3} kazdy)
worthMeta=\u00a77Stack {0} z metadata {1} jest warty \u00a7c{2}\u00a77 ({3} przedmiot(y) po {4} kazdy)
worthSet=Cena przedmiotu ustawiona.
year=rok
years=lat
youAreHealed=\u00a77Zostales/las uleczony/na.
youHaveNewMail=\u00a7cMasz {0} wiadomosci!\u00a7f napisz \u00a77/mail read\u00a7f aby je przeczytac.

View File

@ -157,3 +157,10 @@ v 1.9:
- Update GlobalGroups.yml for new/changed Towny permission nodes. - Update GlobalGroups.yml for new/changed Towny permission nodes.
- Stop attempting to push empty permissions when players edit the yml's incorrectly. - Stop attempting to push empty permissions when players edit the yml's incorrectly.
- Catch errors caused by bad indentation in yml's. - Catch errors caused by bad indentation in yml's.
- Force remove player attachments on disconnect, and tidyup during player join in case of any errors. Fixes a bug of losing permissions.
- Added a new permission node 'groupmanager.op'. This will cause players with this node to be treated as op's when
using GroupManager commands (they will still require each commands permission node to use them).
- Prevent Null entries in group inheritance from throwing errors.
v 2.0:
- Fix GM reporting of permission inheritance to retain the correct order. Lower inheritance groups can no longer negate a higher groups permissions.
- Fix an error I caused trying to modify an unmodifiable list when parsing '*' permissions.

View File

@ -303,7 +303,7 @@ public class GroupManager extends JavaPlugin {
senderPlayer = (Player) sender; senderPlayer = (Player) sender;
senderUser = worldsHolder.getWorldData(senderPlayer).getUser(senderPlayer.getName()); senderUser = worldsHolder.getWorldData(senderPlayer).getUser(senderPlayer.getName());
senderGroup = senderUser.getGroup(); senderGroup = senderUser.getGroup();
isOpOverride = (isOpOverride && senderPlayer.isOp()); isOpOverride = (isOpOverride && (senderPlayer.isOp() || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager.op")));
System.out.println("[PLAYER_COMMAND] " + senderPlayer.getName() + ": /" + commandLabel + " " + Tasks.join(args, " ")); System.out.println("[PLAYER_COMMAND] " + senderPlayer.getName() + ": /" + commandLabel + " " + Tasks.join(args, " "));
if (isOpOverride || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager." + cmd.getName())) { if (isOpOverride || worldsHolder.getWorldPermissions(senderPlayer).has(senderPlayer, "groupmanager." + cmd.getName())) {

View File

@ -563,10 +563,12 @@ public class WorldDataHolder {
List<String> inheritedList = inheritance.get(groupKey); List<String> inheritedList = inheritance.get(groupKey);
Group thisGroup = ph.getGroup(groupKey); Group thisGroup = ph.getGroup(groupKey);
for (String inheritedKey : inheritedList) { for (String inheritedKey : inheritedList) {
Group inheritedGroup = ph.getGroup(inheritedKey); if (inheritedKey != null) {
if (thisGroup != null && inheritedGroup != null) { Group inheritedGroup = ph.getGroup(inheritedKey);
thisGroup.addInherits(inheritedGroup); if (thisGroup != null && inheritedGroup != null) {
} thisGroup.addInherits(inheritedGroup);
}
}
} }
} }

View File

@ -144,7 +144,7 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
// Perm doesn't already exists and there is no negation for it // Perm doesn't already exists and there is no negation for it
// or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms) // or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms)
if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm)) if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm))
|| (negated && !playerPermArray.contains(perm.substring(1)))) || (negated && !playerPermArray.contains(perm.substring(1)) && !playerPermArray.contains("-" + perm)))
playerPermArray.add(perm); playerPermArray.add(perm);
} }
} }
@ -155,8 +155,10 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
return playerPermArray; return playerPermArray;
} }
private Set<String> populatePerms (List<String> perms, boolean includeChildren) { private Set<String> populatePerms (List<String> permsList, boolean includeChildren) {
// Create a new array so it's modifiable.
List<String> perms = new ArrayList<String>(permsList);
Set<String> permArray = new HashSet<String>(); Set<String> permArray = new HashSet<String>();
Boolean allPerms = false; Boolean allPerms = false;
@ -164,20 +166,17 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
if (perms.contains("*")) { if (perms.contains("*")) {
permArray.addAll(GroupManager.BukkitPermissions.getAllRegisteredPermissions(includeChildren)); permArray.addAll(GroupManager.BukkitPermissions.getAllRegisteredPermissions(includeChildren));
allPerms = true; allPerms = true;
perms.remove("*");
} }
for (String perm : perms) { for (String perm : perms) {
if (!perm.equalsIgnoreCase("*")) {
/** /**
* all permission sets are passed here pre-sorted, alphabetically. * all permission sets are passed here pre-sorted, alphabetically.
* This means negated nodes will be processed before all permissions * This means negated nodes will be processed before all permissions
* other than *. * other than *.
*/ */
boolean negated = false; boolean negated = perm.startsWith("-");
if (perm.startsWith("-"))
negated = true;
if (!permArray.contains(perm)) { if (!permArray.contains(perm)) {
permArray.add(perm); permArray.add(perm);
@ -195,15 +194,16 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren((negated ? perm.substring(1) : perm), new HashSet<String>()); Map<String, Boolean> children = GroupManager.BukkitPermissions.getAllChildren((negated ? perm.substring(1) : perm), new HashSet<String>());
if (children != null) { if (children != null) {
if (negated || (negated && allPerms)) { if (negated)
if (allPerms) {
// Remove children of negated nodes // Remove children of negated nodes
for (String child : children.keySet()) for (String child : children.keySet())
if (children.get(child)) if (children.get(child))
if (permArray.contains(child)) if (permArray.contains(child))
permArray.remove(child); permArray.remove(child);
} else if (!negated){ } else {
// Add child nodes // Add child nodes
for (String child : children.keySet()) for (String child : children.keySet())
@ -214,7 +214,6 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
} }
} }
} }
}
} }
return permArray; return permArray;
@ -959,7 +958,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
for (String sonName : now.getInherits()) { for (String sonName : now.getInherits()) {
Group son = ph.getGroup(sonName); Group son = ph.getGroup(sonName);
if (son != null && !alreadyVisited.contains(son)) { if (son != null && !alreadyVisited.contains(son)) {
stack.push(son); // Add rather than push to retain inheritance order.
stack.add(son);
alreadyVisited.add(son); alreadyVisited.add(son);
} }
} }

View File

@ -38,6 +38,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.permissions.Permission; import org.bukkit.permissions.Permission;
@ -343,6 +344,18 @@ public class BukkitPermissions {
this.updatePermissions(player, null); this.updatePermissions(player, null);
} }
/**
* Force remove any attachments
*
* @param player
*/
private void removeAttachment(Player player) {
if (attachments.containsKey(player)) {
player.removeAttachment(attachments.get(player));
attachments.remove(player);
}
}
/** /**
* Player events tracked to cause Superperms updates * Player events tracked to cause Superperms updates
* *
@ -355,6 +368,12 @@ public class BukkitPermissions {
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
setPlayer_join(true); setPlayer_join(true);
Player player = event.getPlayer(); Player player = event.getPlayer();
/*
* Tidy up any lose ends
*/
removeAttachment(player);
// force GM to create the player if they are not already listed. // force GM to create the player if they are not already listed.
if (plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) { if (plugin.getWorldsHolder().getWorldData(player.getWorld().getName()).getUser(player.getName()) != null) {
setPlayer_join(false); setPlayer_join(false);
@ -370,7 +389,25 @@ public class BukkitPermissions {
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerKick(PlayerKickEvent event) { public void onPlayerKick(PlayerKickEvent event) {
attachments.remove(event.getPlayer()); Player player = event.getPlayer();
/*
* force remove any attachments as bukkit may not
*/
removeAttachment(player);
}
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerQuit(PlayerQuitEvent event) {
if (!GroupManager.isLoaded())
return;
Player player = event.getPlayer();
/*
* force remove any attachments as bukkit may not
*/
removeAttachment(player);
} }
} }

View File

@ -164,3 +164,8 @@ commands:
description: Clear world selection. Next commands will work on your world. description: Clear world selection. Next commands will work on your world.
usage: /<command> usage: /<command>
permissions: groupmanager.manclear permissions: groupmanager.manclear
Permissions:
groupmanager.op:
description: User is treated as an op when using the GroupManager commands.
default: false