Bukkit Plugin – iConomy i Chest Shop

W dzisiejszym wpisie poświęconym Bukkitowi opiszę jeden z bardziej znanych i dość prostych pluginów. Jest to iConomy, czyli wtyczka, która wprowadza ekonomię do gry. Tworzy ona podstawę dla pluginów wprowadzających handel, sklepy, loterię itd. Prócz tego omówię jeszcze wtyczkę związaną z iConomy – ChestShop, czyli plugin dodający sklepy do gry.

Na początek przedstawię iConomy. Plugin możecie pobrać TUTAJ. Instalacja domyślna, wrzucamy plik .jar do folderu plugins, odpalamy bukkit, który zainstaluje wtyczkę. Teraz wypadałoby skonfigurować pliki yml które powstaną po zainstalowaniu pluginu. Będą to config.yml i template.yml. Drugi plik nie jest niezbędny do konfiguracji więc zajmijmy się pierwszym.

 

System:
  Permissions:
    Use:
      # Domyślnie permisja jest wyłączona, żeby
      # gracze mogli z niej korzystać, musi być na true.
      Holdings: false
  Default:
    # Ustalenie nazw waluty
    Currency:
      Major: [ 'Dollar', 'Dollars' ]
      Minor: [ 'Coin', 'Coins' ]

    Account:
      # Domyślna kwota początkowa
      Holdings: 30.0

   Formatting:
    # Wyświetla resztę po przecinku.
    # Na przykład: (true) 0.23 Coins i 1.23 Dollars
    #(false) 0.23 Dollars i 1.23 Dollars
    Minor: true

    # Działa tylko kiedy Minor ma wartość 'true'.
    # Zmienia opcje wyświetlania kwoty. Na przykład:
    # (true) 1 Dollar, 23 Coins(false) 1.23 Dollars(true)
    Seperate: true

    # Single pokazuje stan pieniędzy w jeszcze inny sposób
    # Jeżeli zarobiłeś 1.40 Dollarów, plugin
    # pokaże Ci, że posiadasz 1 Dollar. Kiedy Twoje konto
    # wynosi 0.10 Dollarów, 'single' może pokazać
    # albo 0 Dollarów, kiedy Minor jest na 'false'
    # lub też 0.10 coins kiedy Minor jest na 'true'
    Single: false

  # Zapisuje każdą transakcję zawartą przez iConomy
  Logging:
    Enabled: true

  # Są to odsetki naliczane co daną ilość czasu
  Interest:
    Enabled: false

    # Tylko dla osób online
    Online: true

    Announce:
      # Wysyłaj wiadomość kiedy zostaną naliczone odsetki.
      Enabled: false

    Interval:
      #  Interval to odstęp czasowy między naliczaniem
      #  odsetek. Wartość można podawać tylko w sekundach:
      #   1 minuta = 60 sekund
      #   1 godzina = 1 minuta * 60 = 3600 sekund
      #   1 dzień = 1 godzina * 24 = 86400 sekund
      #   1 tydzień = 1 dzień * 7 = 604800 sekund
      Seconds: 60

    Amount:
      # Ilość po której przestaną być naliczane odsetki
      # W przypadku 0.0 - bez limitu
      Cutoff: 0.0

      # Oprocentowanie holdingów (Zastępuje Min/Max)
      Percent: 0.0

      Maximum: 1
      Minimum: 2

  Database:
    # Wspierane bazy danych
    # Flatfile, FF, mini, minidb
    #  - Te wszystkie równają się miniDB
    ##
    # item, items, inventory, inventoryDB
    #  - Te wsystkie równają się InventoryDB, który
    # używa ekwipunku do przechowywania danych.
    ##
    # xp, exp, orb, xpdb, expdb, orbdb
    #  - Te wszystkie równają się ExperienceDB, który
    # opiera się na punktach doświadczenia.
    ##
    # mysql, mysqldb
    #  - Te będą próbować połączyć się z MySQL
    ##
    # sqlite, sqlite2, sqlite3, sqlitedb
    #  - Te będą próbować tworzyć i połączyć się z SQLite
    ##
    # postgre, postgreSQL, postgreDB
    #  - Te będą próbować połączyć się z PostgreSQL
    Type: 'MySQL'
    # Baza SQL tworzy się automatycznie jeśli pluginowi uda się ją wczytać.

    # Tylko dla inventoryDB
    # MajorItem jest to ID bloku dla wartości Major
    # MinorItem jest to ID bloku dla wartości Minor
    # Na przykład MajorItem: 266, MinorItem: 265
    # dla Złota/Żelaza
    MajorItem: 266
    MinorItem: 265

    # Nazwa tabeli w bazie danych (standardowo 'iConomy')
    Table: 'iConomy'

    # URL jest tylko dla baz danych SQL
    ##
    # Ścieżka do folderu iConomy przykładowo wygląda tak:
    # C:\.craftbukkit\plugins\iConomy\
    # Nie będzie taka sama jak Twoje, ale wygląda podobnie.
    ##
    # [Standardowe H2DB] h2:path/to/iConomy/folder/iConomy;AUTO_RECONNECT=TRUE
    # [Standardowe SQLite] sqlite:path/to/iConomy/folder/iConomy.db
    ##
    # Binarne bazy danych używają formatu IP:PORT (np. 3306:7.17.53.10)
    # ip
    #  - Internet Protocol
    #  - dla ipv6 zazwyczaj zamknięte w nawiasach [::1]
    # port
    #  - Port na którym opiera się baza danych
    #  - standardowe porty: 3306 dla mysql, dla postgre 5740 lub 5432
    ##
    # [Standardowe MySQL] mysql://localhost:3306/iConomy
    # [Standardowe postgre] postgresql://localhost:5740/iConomy
    URL: 'mysql://localhost:3306/iConomy'

    # Szczegóły logowania do binarnej bazy danych
    Username: 'login'
    Password: 'haslo'

    # Conversion pozwala skonwertować wersję 5.x do 6.x
    Conversion:
      # Żeby skonwertować ustaw na true. Po konwersacji zmień znów na false
      Enabled: true
      # Typ bazy danych, H2DB lub MySQL
      Type: 'MySQL'

      # Nazwa tabeli w bazie danych
      Table: 'iConomy'

      # Tylko dla MySQL
      URL: 'mysql://localhost:3306/iConomy'

      # Tylko dla MySQL
      Username: 'login'
      Password: 'haslo'

      # Nieużywane ATM
      All: true

Jak większość pluginów, iConomy posiada zbiór komend, przedstawię wszystkie poniżej.


  • /money – sprawdza stan własnego konta
  • /money [nick] – stan konta danego gracza
  • /money help – pomoc
  • /money pay [nick] [kwota] – wysyła danej osobie określoną kwotę pieniędzy z własnego konta
  • /money create [nick] – tworzy konto
  • /money remove [nick] – usuwa konto
  • /money give [nick] [kwota] – daje danej osobie określoną kwotę pieniędzy
  • /money take [nick] [kwota] – zabiera danemu graczowi daną liczbę pieniędzy
  • /money set [nick] [kwota] – ustala ilość pieniędzy dla danego gracza
  • /money status [nick] (status) – sprawdza/ustala status konta
  • /money purge – ustal wszystkim konto na kwotę początkową
  • /money empty – usuwa wszystkie bazy danych

 

Żeby móc używać komend, potrzebujemy permisji. Przykłady możecie znaleźć tutaj. Jeżeli się przyjrzycie, zauważycie że pod permisją np. „iConomy.user”, kryje się grupa permisji. Może to być przydatne, ponieważ jest to znaczne skrócenie roboty przy wypisywaniu permisji dla użytkowników.

 

ChestShop jest jednym z bardziej znanych pluginów stworzonych dla iConomy. Polega on na tworzeniu sklepów za pomocą skrzyni i tabliczki. Ustalamy jaki produkt chcemy sprzedawać lub kupować i po jakiej cenie go kupujemy a po jakiej sprzedajemy. Chestshop można pobrać z tego miejsca, instalacja standardowa. Tutaj, możemy znaleźć permisje dla graczy. Po zainstalowaniu otrzymamy dwa pliki .yml: config i local. Local jest związany głównie z komunikatami. Z faktu, iż plugin został wykonany przez Polaków, możemy podmienić tekst na polski. Tu znajdziemy translację dla pliku local.yml. Teraz jednak zajmijmy się plikiem config.

STATISTICS_PAGE_PATH: "plugins/ChestShop/website.html"
#Miejsce, gdzie powinna się zapisywać Twoja wygenerowana
#strona.
RECORD_TIME_TO_LIVE: 600
#W sekundach. Czas przez jaki zostanie zachowana
#informacja o transakcji.
STATISTICS_PAGE_GENERATION_INTERVAL: 60
#Jak często powinna być generowana strona.
USE_BUILT_IN_PROTECTION: true
#Ochrona built-in dla skrzyń.
PROTECT_CHEST_WITH_LWC: false
#Ochrona Chestshop przez LWC (plugin).
PROTECT_SIGN_WITH_LWC: false
#Tabliczki sklepowe chronione przez LWC.
MASK_CHESTS_AS_OTHER_BLOCKS: false
#Maskowanie skrzyń jako inne bloki (Ryzyko lagów).
SHOW_MESSAGE_OUT_OF_STOCK: true
#Wyświetla wiadomości "Twój sklep jest pusty!".
SHOW_TRANSACTION_INFORMATION_CLIENT: true
#Wyświetla informacje typu
"Właśnie kupiłeś/sprzedałeś...".
SHOW_TRANSACTION_INFORMATION_OWNER: true
#Wyświetla informacje "Ktoś kupił/sprzedał".
TOWNY_INTEGRATION: false
#Czy chcesz pozwalać tylko budować na działkach sklepów?
WORLDGUARD_INTEGRATION: false
#Czy chcesz pozwalać tylko budować na działkach?
TAX_AMOUNT: 0
#Procent podatku który trafi na konto serwera.
SHOP_REFUND_PRICE: 0
#Ilość otrzymanych pieniędzy po zniszczeniu tabliczki.
ALLOW_MULTIPLE_SHOPS_AT_ONE_BLOCK: false
#Zezwala na kilka sklepów na jednym bloku.
IGNORE_CREATIVE_MODE: true
#Zezwala kupować w trybie creative.
SHOP_INTERACTION_INTERVAL: 100
#W jednej tysięcznej. Jak często gracz może korzystać z tabliczki.

Po skonfigurowaniu go według własnych potrzeb, przyda nam się wiedza, jak założyć taki sklep. Jest to dość proste, wystarczy położyć skrzynię i tabliczkę w obszarze jednego bloka od skrzyni. Pierwsza linijka uzupełni nam się automatycznie, pomijamy ją. W drugiej, podajemy ilość, w jakiej chcemy kupować/sprzedawać przedmioty. Trzecia linijka to ustalenie cen sprzedaży i kupna. Wygląda ona mniej więcej tak:

 100:10

Między ceną sprzedaży i kupna musi być dwukropek. Kwota po lewej oznacza cenę, za jaką sprzedajmy dana ilość produktów, a ta po prawej – za ile kupujemy tą samą ilość tego samego produktu. Czwarta to oryginalna nazwa przedmiotu (np. Iron Helmet). Jeżeli nazwa jest za długa i nie zmieści się w jednej linijce, podajemy ID przedmiotu. Zatwierdzamy tabliczkę i gotowe!

Prócz zwykłych sklepów, występuje zjawisko tzw. Admin Shop. Wszystko jest bardzo podobne do zwykłego sklepu z tą różnicą, że potrzebujemy posiadać specjalne permisje. Zamiast swojego nicku wpisujemy Admin Shop. Nie potrzebujemy skrzyni do tego typu sklepów, ponieważ nie ma on żadnych ograniczeń, przedmioty będą pojawiały się znikąd, kiedy je kupujemy i znikały z ekwipunku w przypadku sprzedaży.  Klikając lewym przyciskiem myszy, sprzedamy ilość danego przedmiotu podanego na tabliczce, a prawym – kupimy. Możemy także założyć sklep dla kogoś, wpisując jego nick w pierwszej linijce.

Przykłady obu powyższych sklepów możemy zobaczyć Tutaj. W przypadku Admin Shopu podałem wózek ze skrzynią. Pełnej nazwy nie dało się wpisać, więc podałem ID przedmiotu, jak widać, tabliczka sama uzupełniła nazwę przedmiotu w jak najbardziej skróconej wersji.
W zasadzie to już wszystko, co mogę powiedzieć o obu pluginach. Kiedy zapoznacie się z nimi, na waszym serwerze będzie mógł w końcu rozkwitnąć handel i gospodarka! Teraz wystarczy chwilę poczekać, a użytkownicy zaczną zakładać swoje sklepy. Możecie już wypatrywać kolejnych poradników.