Bukkit Plugin – Essentials

W tym wpisie dotyczącym Bukkita zajmiemy się uzupełnianiem możliwości administratora. Główną rzeczą, jaką posługujemy się administrując serwer, są komendy, a sam bukkit nie posiada ich zbyt wiele. Przedstawię wtyczkę dodające spory zestaw podstawowych komend polepszających funkcjonowanie na serwerze. Mowa tutaj o większości znanym Essentials.

Administrując serwer, zajmujemy się wieloma jego aspektami. Jednam z podstawowych, jaki rzadko zauważamy są proste komend, jak /give czy /tp. Standardowy Bukkit posiada te polecenia, ale Essentials ułatwia korzystanie z nich i oferują o wiele więcej tego typu komend. Przedstawię jego możliwości oraz dodatkowe pluginy, jakie oferuje.

Warto też zapoznać się z mniej rozwiniętą, ale wciąż bardzo dobrą alternatywą Essentials, jaką jest AdminCmd.

Essentials 

Prócz podstawowego rdzenia Essentials, oferuje on również takie rzeczy jak EssentialsChat, EssentialsProtect czy EssentialsSpawn. Postaram się omówić jak najlepiej wszystkie te wtyczki.

Zaczniemy od podstaw Essentials i tego jak go konfigurować. Po pobraniu paczki Essentials Core dostaniemy cztery wtyczki, które wymieniłem powyżej. Po wgraniu ich na serwer i uruchomieniu, otrzymamy katalog pluginu z plikami konfiguracyjnymi. Są to config.yml, jail.yml, motd.txt, rules.txt, spawn.yml i worth.yml oraz dwa katalogi. Plików może być więcej, ale nie mają one większego znaczenia przy konfigurowaniu wtyczki.

config.yml

Pierwszym i najważniejszym plikiem jest config.yml, który umożliwia ustawienie wszystkich pozostałych wtyczek jak EssentialsChat. Jest on dość rozbudowany, także podzielę go na części.

Początek pliku to podstawowe ustawienia, jakie wprowadza rdzeń Essentials. Usunąłem z niego wszystkie zbędne elementy jak np. brak obsługi Permissions, który opisałem w poprzednim wpisie.

# Ustalenie zabawienia nicku operatorów(Lista kolorów).
ops-name-color: 'c'

# Prefix dla graczy ze zmienionym nickiem.
nickname-prefix: ''

# Wyłącz to jeśli masz inny plugin do zmiany nazw graczy.
change-displayname: true

# Przerwa czasowa po użyciu komend /home, /tp, itp.
teleport-cooldown: 5

# Przerwa czasowa po użyciu komendy /heal
heal-cooldown: 60

# Limit ilości przyzywanych stworzeń.
spawnmob-limit: 50

# Powiadamianie graczy podczas używania komendy /lightning
warn-on-smite: true

Przeczytaj czym są Kits w Essentials
# Kits pozwala określić czas pomiędzy każdym przyzwaniem
# zestawu(delay) oraz przedmioty jakie przyzywa(items).
kits:
  tools:
    delay: 10
    items:
      - 277 1
      - 278 1
      - 279 1

Przeczytaj o używaniu znaków przez Essentials
# Wyłącz używanie znaków przez Essentials.
signs-disabled: false

# Sortowanie listy graczy na podstawie grup.
sort-list-by-groups: false

# Więcej danych o zachowaniu wtyczki w konsoli.
debug: false

# Wyłącz God Mode kiedy gracz wyjdzie z serwera.
remove-god-on-disconnect: true

# Auto-AFK
# Wpisz liczbę po jakiej gracz zostanie AFK(w sekundach).
# Liczba -1 oznacza, że AFK nie działa.
auto-afk: 300

# Auto-AFK Wyrzucenie
# Po tym czasie gracz zostanie wyrzucony z serwera(W sekundach).
# Liczba -1 oznacza, że gracz nie będzie wyrzucony z serwera.
auto-afk-kick: -1

# Ustawienie tego na tak(true) spowoduje, że gracz który jest AFK zostanie unieruchomiony.
freeze-afk-players: false

# Ustawienie tego na tak(true) spowoduje, że osoba AFK nie będzie podnosić przedmiotów.
disable-item-pickup-while-afk: true

# Ustawienie tego na nie(false) spowoduje, że nie będą wyświetlane podstawowe informacje o śmierci graczy.
death-messages: true

# Ilość przedmiotów jakie otrzymamy przy użyciu komendy /give /item /i jeśli nie wpiszemy ich ilości.
oversized-stacksize: 64

# Przedmioty polepszane będą automatycznie naprawiane jeśli ustawisz to na tak(true).
repair-enchanted: true

Kits czyli szybkie zestawy

Kit to zestawy, w Essentials mamy możliwość tworzenia własnych zestawów przedmiotów, które można przyzwać komendą /kit nazwa. Stworzenie ich polega jedynie na nadaniu im nazwy oraz określeniu, jakie przedmioty mamy uzyskać po użyciu komendy. Rzeczy określamy poprzez ID(Lista ID przedmiotów). Przykład takiego zestawu możecie znaleźć powyżej, ważne, by zachować zasady pliku yml!

Znaki w Essentials

Znaki w Essentials to dość rozbudowany temat. Umożliwiają one nam wykonywanie różnych czynności pluginu poprzez kliknięcie na tabliczkę prawym klawiszem myszy. Aktualnie mamy możliwość skonfigurowania 11 różnych typów znaków.

Znaków używamy, umieszczając tekst w pierwszej linijce, obejmując go kwadratowymi klamrami. Poprawnie wpisany typ znaku będzie zabarwiony na niebiesko. W wypadku błędnego odczytu znaku zobaczymy kolor czerwony.

Protection

Pierwszym typ jest związany z EssentialsProtect. By go używać, wymagane jest wgranie tego pluginu na serwer. Jeśli jednak nie chcemy by nasz serwer używał tej wtyczki, wystarczy ją usunąć. O konfigurowaniu EssentialsProtect przeczytasz poniżej. Używa się tego znaku do zabezpieczania drzwi, skrzyń, piecyków i tego typu podobnych rzeczy.

Pierwszą frazą umieszczoną w znaku powinno być [Protection], które definiuje polecenie znaku. Dwie następne linijki ustalają właściciela zabezpieczanego przedmiotu. Ostatnia linia nie ma żadnego zastosowania. Przykład takiego znaku.

Mail

Znak ten umożliwia sprawdzenie poczty, jaką obsługuje Essentials. Standardowo można to zrobić za pomocą komendy /mail. W przypadku używania znaku można to skonfigurować na dwa sposoby. Pierwszy to po prostu wywołanie komendy poprzez umieszczenie polecenia [Mail]. Drugi jest bardzo podobny, jedną różnicą jest dodanie kosztu, sprawdzenia poczty. Każde kliknięcie w znak zabierze nam troszkę pieniędzy z konta. Ważne, by umieścić znak zdefiniowany w ‚currency-symbol‚ przed ceną jaką nadamy poleceniu. Wygląda to podobnie, przykład możesz zobaczyć tutaj.

Free

Dodanie [Free] do znaku umożliwi ustawienie miejsca pobierania dowolnego przedmiotu. Wpisując w pierwszej linijce [Free], a w drugiej ID dowolnego przedmiotu, stworzysz stanowisko darmowego pobierania rzeczy. Kliknięcie prawym przyciskiem myszy na tabliczce wyświetli ci coś na rodzaj skrzyni, która automatycznie wypełnia się danym przedmiotem. Przykładowa tabliczka.

Kit

Zestawy to wcześniej omawiany temat, jednak znaki pozwalają na rozwinięcie tego. Oczywiste jest, że za pomocą nich można przyzywać wybrane zestawy. Dodatkowo można zdefiniować, jaka grupa może je przyzywać i ile ich to będzie kosztować. Nazwę grupy pozyskujemy z Permissions. Również ważne jest, by przed ceną dać znak „$”. Przykład takiego znaku.

Disposal

Disposal to, krótko mówiąc, śmietnik. Umieszczając [Disposal] na znaku, definiujemy tabliczkę jako kosz. Kliknięcie nią prawym klawiszem myszy otworzy coś na wzór skrzyni, do której każda włożona rzecz przepadnie na zawsze.

Heal

Umieszczenie [Heal] na tabliczce stworzy miejsce leczenia graczy. Jedyną dodatkową możliwością jest dodanie ceny za użycie takiej tabliczki. Kliknij, by zobaczyć przykład.

Time

Tabliczka [Time] pozwala manipulować czasem. Za pomocą niej możemy zmienić porę dnia na dzień lub noc. Dodatkowo można dodać koszty za jej użycie. Przykład takiej tabliczki.

Weather

Znak z [Weather] umożliwia zmianę pogody ze słonecznej na deszczową i odwrotnie. Oczywiście można dopisać do tego opcjonalne koszty. Przykładowy znak.

Warp

Za pomocą komendy /setwarp nazwa można ustalić miejsce, do którego ludzie będą mogli się teleportować. Za pomocą znaku można stworzyć miejsce teleportacji, ustalić, jaka grupa może jej dokonać oraz nadać koszt. Przykładowy znak.

Spawnmob

Jeżeli umieścimy na znaku napis [Spawnmob], będzie on nam umożliwiał przyzywanie wybranych stworzeń. Ustalamy ilość przyzywanych stworzeń, jakiego typu mają być oraz cenę za nie. Opcja typu zwierząt pozwala również na przyzwanie wilka, który jest już udomowiony. Można to zobaczyć na przykładowym znaku.

Enchant

Ostatnim typem jest [Enchant], który umożliwia sprzedawanie ulepszeń do trzymanych przedmiotów. Listę możliwych polepszeń można znaleźć po wpisaniu komendy /enchant. Na znaku definiujemy, jaki przedmiot może być polepszany, w jaki sposób oraz na jaki poziom. Dodatkowo możemy ustalić za to cenę. Jak to wygląda można zobaczyć na przykładowym znaku.

Konfigurowanie Essentials Protect

Przy konfigurowaniu EssentialsProtect możemy głównie zablokować większość czynności. Jeśli nie chcemy, by konkretne stworzenia pojawiały się w naszym świecie lub żeby ludzie nie stawiali konkretnych bloków albo aby ogień się nie rozprzestrzeniał, to możemy to ustawić właśnie w tym pluginie. Jego lepszą alternatywą jest WorldGuard, który wkrótce omówię.

protect:
  # Typ zapisu informacji
  datatype: 'mysql'

  # Dane do bazy danych mysql
  username: 'NAZWA'
  password: 'HASŁO'
  mysqlDb: 'jdbc:mysql://localhost:3306'

  # Bloki o jakich będziesz informowany
  # 10 = lava :: 11 = Lava :: 46 = TNT :: 327 = Wiaderko lawy
  alert:
    on-placement: 10,11,46,327
    on-use: 327
    on-break: 

  blacklist:

    # Ochrona przed stawianiem bloków(ID)
    placement: 10,11,46,327

    # Ochrona przed użyciem przedmiotów(ID)
    usage: 327

    # Ochrona przed niszczeniem bloków(ID)
    break:

    # Bloki jakich tłoki nie mogą przesuwać(ID)
    piston:

  # Ochrona przed wybranymi wypadkami
  prevent:
    lava-flow: false
    water-flow: false
    water-bucket-flow: false
    fire-spread: true
    lava-fire-spread: true
    flint-fire: false
    lightning-fire-spread: true
    portal-creation: false
    tnt-explosion: false
    tnt-playerdamage: false
    fireball-explosion: false
    fireball-fire: false
    fireball-playerdamage: false
    creeper-explosion: false
    creeper-playerdamage: false
    creeper-blockdamage: true
    enderdragon-blockdamage: true
    enderman-pickup: false
    villager-death: true
    entitytarget: false
    # Ochrona przed pojawianiem się wybranych stworzeń
    spawn:
      chicken: false
      cow: false
      creeper: false
      ghast: false
      giant: false
      monster: false
      pig: false
      pig_zombie: false
      sheep: false
      skeleton: false
      slime: false
      spider: false
      squid: false
      zombie: false
      wolf: false
      cave_spider: false
      enderman: false
      silverfish: false
      ender_dragon: false
      villager: false
      blaze: false
      mushroom_cow: false
      magma_cube: false
      snowman: false

  # Maksymalna wysokość na której może wybuchnąć Creeper
  creeper:
    max-height: -1

  # Ochrona wybranych bloków
  protect:
    signs: true

    # Ochrona przed niszczeniem torów
    rails: true

    # Ochrona bloków pod torami
    block-below: true

    # Ochrona przed stawianiem bloków nad torami
    prevent-block-on-rails: false

  # Wyłączenie fizyki bloków(Opadanie bloków piasku/żwiru)
  disable:
    fall: false

    # Gracze z permisją essentials.protect.pvp będą chronieni przed atakami jeśli pvp jest na tak(true)
    pvp: false

    # Ochrona przed tonięciem/zgnieceniem
    drown: false
    suffocate: false

    # Ochrona przed obrażeniami od lawy
    lavadmg: false

    # Ochrona przed obrażeniami od strzał
    projectiles: false

    # Ochrona przed obrażeniami od kaktusa
    contactdmg: false

    # Ochrona przed obrażeniami od ognia
    firedmg: false

    # Ochrona przed obrażeniami od pioruna
    lightning: false

    # Ludzie z zakazem budowania w permisji będą mogli budować mimo to
    build: true

    # Ludzie z zakazem używania w permisji będą mogli używać mimo to
    use: true

    # Ostrzeganie o zakazie budowania
    warn-on-build-disallow: true

    # Wyłączenie zjawisk pogodowych
    weather:
      storm: false
      thunder: false
      lightning: false

O wtyczce EssentialsChat

Najlepszą częścią Essentials jest plugin urozmaicający czat w grze. Pozwala on kolorować wybranym grupom nazwy oraz tworzyć obszary, które będą słyszeć tylko najbliżej znajdujące się osoby. Poniżej znajdziecie fragment z config odpowiedzialny za EssentialsChat.

chat:
  # Osoby w obszarze 100 bloków będą słyszeć czat bez krzyku(!)
  # [0 wyłącza tą opcję]
  radius: 100

  # Formatowanie wyglądu wiadomości konkretnych grup
  # Jak formatować czat
  group-formats:
    Gość: '<{DISPLAYNAME}> {MESSAGE}'
    Moderator: '<&2{DISPLAYNAME}&f>&2{MESSAGE}'
    Admin: '&4{DISPLAYNAME}&a{MESSAGE}'

Po ustaleniu wielkości czatu obszarowego, wciąż można komunikować się z wszystkimi graczami stawiając wykrzyknik(!) przed tekstem. Wszystkie wiadomości bez niego będą możliwe do przeczytania wyłączenie w zasięgu 100 kratek od gracza. Tego samego tyczy się pytajnik(?).

Formatowanie Czatu

Podczas formatowania wyglądu musimy znać nazwy grup, jakie ustaliliśmy w Permissions. W przykładzie powyżej zdefiniowałem wygląd dla trzech grup: Gość, Moderator oraz Admin. Każda z nich posiada dwa tagi ustalające, gdzie ma znajdować się nazwa gracza oraz treść wiadomości. Dodatkowo mają one konkretne kolorowanie oraz dodatkowe znaki. Kolory, jakie można użyć znajdziecie pod tym adresem.

Istnieją jeszcze dwa dodatkowe tagi, jakie możecie dodać do formatu wiadomości, są nimi:
{WORLDNAME} – Wyświetla świat, w jakim znajduje się gracz.
{GROUP} – Wyświetla grupę, w jakiej znajduje się gracz.

Przykładowe formatowania:

group-formats:
    Wlasciciel: '&f[&4GOD&f] {DISPLAYNAME}&7:&f {MESSAGE}'
    Admin: '&f[&4Admin&f] {DISPLAYNAME}&7:&f {MESSAGE}'
    Moderator: '&f[&5Mod&f] {DISPLAYNAME}&7:&f {MESSAGE}'
    VIP: '&f[&2VIP&f] {DISPLAYNAME}&7:&f {MESSAGE}'
    Budowniczy: '&f[&1Budowniczy&f] {DISPLAYNAME}&7:&f {MESSAGE}'
    Gosc: '{DISPLAYNAME}&7:&f {MESSAGE}'

Na początku pliku konfiguracyjnego można też znaleźć opcje związane z kolorami na czacie. Są to podstawowe ustawienia, jak kolor operatorów, wszystko jest wyjaśnione w pierwszej części pliku config.

O wtyczce EssentialsSpawn

Ostatnią wtyczką, jaką oferuje zestaw Essentials Core, jest EssentialsSpawn. Nie oferuje ona dużo, ale dla niektórych może być przydatna. Podstawową jej funkcją jest napis witający nowego gracza oraz ustalenie dla niego miejsca spawnu.

newbies:
# Tekst witający nowego gracza
announce-format: '&dWitamy &e{DISPLAYNAME}&f! Zyczymy przyjemnego grania na naszym serwerze!'

# Nazwa miejsca spawnu nowego gracza(Wpisz 'none' jeśli nie ma być żadnego)
spawnpoint: default

# Respawn-lister ustala gdzie ma pojawiać się gracz po śmierci
# Ustaw na 'lowest', jeśli używasz Multiverse do respawnu
# Ustaw na 'normal', jeśli chcesz używać EssentialsSpawn
# Ustaw na 'highest', jeśli chcesz by EssentialsSpawn był ponad wszystkie pluginy do respawnu
respawn-listener-priority: normal

W przypadku używania EssentialsSpawn plik spawn.yml tworzy listę miejsc spawnu dla wszystkich grup. Możesz je definiować, wpisując /setspawn nazwa_grupy.

EssentialsEco oraz EssentialsHelp

W pliku konfiguracyjnym Essentials można znaleźć jeszcze przedział dla EssentialsEconomy oraz EssentialsHelp. Wchodzą one w rdzeń Essentials i oferują kilka dodatkowych elementów do rozgrywki.

EssentialsEco to uproszczony system ekonomii wprowadzający walutę oraz możliwość przekazywania pieniędzy i sprzedawania przedmiotów. W pliku konfiguracyjnym można ustalić startową ilość pieniędzy, jaką będzie posiadać nowy gracz. Możesz też wprowadzić opłaty za używanie niektórych komend. Dodatkowy plik o nazwie worth.yml posiada wartości wszystkich istniejących przedmiotów, dzięki czemu sprzedawanie ich jest, w pełnij zautomatyzowane. Używamy jedynie komendy /sell ID ILOŚĆ. W prosty sposób można zmienić cenę, jaką ma otrzymywać gracz za jedną sztukę danej rzeczy. EssensialsEco łączy się z pluginiem iConomy, który opiszę w przyszłych wpisach na temat bukkit.

# Początkowy stan konta gracza
starting-balance: 0

# Opłaty za używanie komend
command-costs:
  # /spawn kosztuje $10 za użycie
  #spawn: 10

# Symbol waluty
currency-symbol: '$'

# Maksymalna ilość pieniędzy jaką gracz może posiadać
max-money: 10000000000000

# Wpisuje w logi wszystkie interakcje z EssentialsEco
economy-log-enabled: false

EssentialsHelp to jedynie dwie opcje, które ustalają czy Essentials ma wyświetlać dostępne komendy po użyciu /help od wszystkich pluginów i czy gracze mają widzieć tylko komendy, do których mają dostęp.

# Pokaż komendy z innych zainstalowanych wtyczek
non-ess-in-help: true

# Ukrywaj komendy do których gracze nie mają praw
hide-permissionless-help: true

Na tym kończy się edytowanie pliku config.yml dla Essentials. Pozostało jednak kilka dodatkowych plików, które ingerują w działanie serwera.

jail.yml – Lista wszystkich więzień z pozycjami, jakie zostały stworzone za pomocą komendy /setjail nazwa. Każdy gracz może zostać wsadzony do więzienia za pomocą komendy /tjail nick <czas>. Listę istniejących więzień można wyświetlić komendą /jails, a usunąć je za pomocą /deljail nazwa.

rules.txt – Zawartość tego pliku definiuje co zostanie wyświetlone po użyciu komendy /rules. Można tam użyć kolorowania tekstu.

motd.txt – Zawartość tego pliku będzie wyświetlana za każdym wejściem na serwer oraz po wpisaniu komendy /motd.

Istnieją również dwa katalogi o nazwach userdata oraz warps. Folder warps posiada pozycje wszystkich warpów, jakie utworzyliśmy za pomocą komendy /setwarp nazwa. W katalogu userdata możemy znaleźć pliki wszystkich użytkowników, jacy dołączyli kiedykolwiek na serwer. Pliki te mają informacje o ostatniej pozycji gracza, adresie ip, przebywaniu w więzieniu czy stanie wyciszenia. Edytowanie ich nie jest potrzebne, wszystkie potrzebne akcje można wykonać na serwerze.

Każda taka akcja to konkretna komenda, a jest ich sporo. Pod tym linkiem znajdziecie wszystkie komendy oraz przypisane do nich permisje z polskimi opisami.