Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pisanie pluginu, wyświetlane nazwy itemków.


H_Brunner

Rekomendowane odpowiedzi

Opublikowano

Witam

 

Mam problem z pluginem, który aktualnie przerabiam. Kiedy używam ItemStack.getType() kod zwraca mi nazwę przedmiotu w stylu: DIRT, RAW_PORKCHOP, COOKED_BEEF. I taka nazwa jest wyświetlana w komunikatach dla gracza (i w konsoli). Jak zrobić, by ta nazwa była taka, jak przy najechaniu myszką na itemek, czyli: Dirt, Porkchop, Steak? Największy problem z itemkami, które mają dodatkowo datavalue. Czyli np. Cocoa Beans a nie INK_SACK i dodatkowo wyciągane getDurability() 3.

 

Skończyły mi się pomysły.

Opublikowano

pisz pod spigota, tam masz API od Json-wiadomości, a w nich są fajne możliwości wysyłania do gracza nazw dowolnego itemku i to nawet w jego języku ;)

http://www.minecraftforum.net/forums/minecraft-discussion/redstone-discussion-and/351959-1-8-raw-json-text-examples-for-tellraw-title-books#ALTTEXTtranslate

 

tu z wiki spigota jak uzyć

http://www.spigotmc.org/wiki/the-chat-component-api/

Z tym że może nie być metody player.sendMessage(BaseComponent) w spigocie

Tylko chyba trzeba plater.spigot().sendMessage (BaseComponent) 

 

Najlepsza metoda :D

1438614356923701010629.png

 

Opublikowano

@1361622928-U485574.pngPabloTL

 

Nie lietajet

 

linia:

 

System.out.println ("SHOP: " + p.getName() + " bought " + Quantity + " " + MyItemStack.getItemMeta().getDisplayName() + " for total price " + Quantity * PriceOne + "$");

 

daje w konsoli:

 

SHOP: H_Brunner bought 64 null for total price 96$

 

w sendMessage identycznie.

 

I im dłużej się zastanawiam tym bardziej się boję, że ta przeróbka jest po stronie klienta. To upraszczałoby Mojangowi kwestię wersji językowych.

 

Nie. Bredzę. Przecież Essentialsowe /give i /item wyświetla poprawnie nazwy.

Opublikowano

@1361622928-U485574.pngPabloTL

 

Nie lietajet

 

linia:

 

System.out.println ("SHOP: " + p.getName() + " bought " + Quantity + " " + MyItemStack.getItemMeta().getDisplayName() + " for total price " + Quantity * PriceOne + "$");

 

daje w konsoli:

 

SHOP: H_Brunner bought 64 null for total price 96$

 

w sendMessage identycznie.

 

I im dłużej się zastanawiam tym bardziej się boję, że ta przeróbka jest po stronie klienta. To upraszczałoby Mojangowi kwestię wersji językowych.

 

Nie. Bredzę. Przecież Essentialsowe /give i /item wyświetla poprawnie nazwy.

essentials uzywa wartości z enum Meterial, ale po prostu sobie "upiększa" nazwy:

String itemName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');

możesz też zrobic w konfiguracji dla każdego Material, sting z nazwą, i samemu nadac polskie/angielskie nazwyi dac innym możliwość zmiany

1438614356923701010629.png

 

Opublikowano

@GotoFinal

 

Też to wygrzebałem w src Essentials i od wczoraj napisałem sobie metodę

 

Public String TrueName(ItemStack CheckedStack)

 

Zasadniczo robi to, co tamta linia z Essentials ale wszystkie wyrazy zaczynają się dużą literą gwoli wyróżnienia w zdaniach:

 

You dont have any Raw Chicken for sale!

 

Dodatkowo metoda używa .getDurability() - po to potrzebuje ItemStack a nie Material. Dzięki temu itemy w różnych kolorkach są poprawnie opisane (użyłem swojej String[] ColorNames = ("White ", "Orange " itd.). Działa to na STAINED_ GLASS, STAINED_ GLAS_PANE, STAINED_HARDENED_CLAY i oczywiście WOOL. Jutro docinam drobiazgi: drzewa (LOG, SAPLING, LEAVES, PLANKS), głowy i ryby.

Opublikowano

Nie. To akurat nie było mi potrzebne, bo z pewnych względów cały serwer stawiam "po angielsku". Być może jakiś sprawny programista (czyli na pewno nie ja, bo Javą zajmuję się od tygodnia) wiedziałby jak "wyciągnąć" jaki język ma ustawiony gracz i podmienić .getType() na stosowny String w jego języku.

 

Reszta obróbki zostałaby ta sama a stworzenie ColorNames[] dla innych języków i wybór właściwego dla języka na switchu to już nie problem. Chcesz się pobawić?

Opublikowano

Nie. To akurat nie było mi potrzebne, bo z pewnych względów cały serwer stawiam "po angielsku". Być może jakiś sprawny programista (czyli na pewno nie ja, bo Javą zajmuję się od tygodnia) wiedziałby jak "wyciągnąć" jaki język ma ustawiony gracz i podmienić .getType() na stosowny String w jego języku.

To tam było tylko do otka, co do wyciągnięcia języka... raczej się nie da, chyba że po IP, ale to 100% nie da.

 

PS: ale można zrobić opcje że gracz sam wybiera własny język :P Jak ktoś ma za duzo wolnego czasu.

1438614356923701010629.png

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...