Skocz do zawartości

kerpson

Użytkownik
  • Ilość zawartości

    1852
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    44

Treść opublikowana przez kerpson

  1. nabijasz bo ziomek prosi o spolszczenie a ty bez zapytania czy da ten skrypt itd to od razu To po co ma ci ktoś go spolszczać, skoro sam potrafisz? i glupie klotnie XD obstawiam ze po 20-30min mialbys juz drugie konto XD Chcesz sie klocic zapraszam pw
  2. Dlatego jest dział "spolszczanie pluginów". Osoba chętna niech do niego napisze i po problemie XD po co posty nabijasz
  3. Podeslij mi plugin na pv, pobiore i ogarne
  4. Testowalem u sb z echantami i dzialalo-_- czy item w ekwipunku jest zenchantowany?
  5. testowałem u siebie i to już musi działać final ItemStack remove = is.clone(); final ItemMeta im1 = is.getItemMeta(); im1.setDisplayName(null); im1.setLore(new ArrayList<>()); remove.setItemMeta(im1);
  6. a jak probujesz klikac cos na chacie to pisze cos ? (przynajmniej ze nie masz takiego przedmiotu?)
  7. spróbuj przy enchancie coś taskiego remove.addUnsafeEnchantments(is.getItemMeta().getEnchants());
  8. możesz kod pokazać
  9. jakieś błędy w konsoli ? i pokaż znowu kod
  10. ItemStack remove = new ItemStack(is.getType(), is.getAmount(), is.getDurability()); remove.addUnsafeEnchantments(is.getEnchantments());
  11. moj fail, sorka xD
  12. kerpson

    Banowanie

    majster właśnie swoje ip pokazałeś
  13. ItemStack remove = is.clone(); ItemMeta im = remove.getItemMeta(); im.setDisplayName(null); im.setLore(ImmutableList.Of()); remove.setItemMeta(im); spróbuj tego, zamień tamten itemstack remove na ten
  14. usunąłeś config.yml z serwera żeby się wgrał na nowo ?
  15. spróbuj zamienić znak ' na "
  16. pokaż jak wygląda config.yml
  17. oke
  18. ItemStack remove = new ItemStack(is.getType(), is.getAmount(), is.getDurability());
  19. if(p.getInventory().containsAtLeast(remove, is.getAmount())){ CoinsManager.addMoney(p, price); String msg = String.join("\n", Main.getInst().getConfig().getStringList("sellSuccess")); msg = msg.replace("{ITEM}", is.getType().toString()); msg = msg.replace("{AMOUNT}", String.valueOf(amount)); msg = msg.replace("{MONEY}", String.valueOf(price)); p.getInventory().removeItem(remove); p.sendMessage(Utils.fixColor(msg)); poprawione
  20. pokaż tej urywek kodu gdzie się sprzedaje
  21. możesz mieć tą mapkę dziku którą ci pokazałem <ItemStack, Integer> (przedmiot cena) a przy gui zrobić tak: Inventory inv = Bukkit.createInventory(null, *, *); for (Map.Entry<ItemStack, Integer> entry : tutaj_mapka.entrySet()) { ItemStack is = entry.getKey(); #przedmiot int price = entry.getValue(); #cena inv.addItem(..); } Pobiera ci wszystkie przedmioty wraz z ich cenami
  22. wytłumacz dokładniej, bo się pogubiłem (jestem po treningu więc wolniej ogarniam, sory) XD
  23. dalej chcesz osiągnąć efekt ItemStack, cena czy coś jeszcze?
  24. czemu integer to slot
  25. Na początek porada: Zamiast: if (e.getCurrentItem().getItemMeta() != null) { if (e.getCurrentItem().getItemMeta().getDisplayName() != null) { Możesz dać if (e.getCurrentItem().hasItemMeta() && e.getCurrentItem().getItemMeta().getDisplayName() != null) { Do rzeczy, tak jak wspomniałeś, najlepiej zrobić osobny itemstack czyli (bazując na itemstacku z getCurrentItem()) ItemStack remove = new ItemStack(is.getType(), 1, is.getDurability()); wtedy nie musisz się bawić w itemmeta Wtedy tylko sprawdzasz czy gracz w ekwipunku posiada ten itemstack, który stworzyłeś (w moim przypadku remove) i go potem usuwać A teraz wyjaśnienie co było źle ? Usuwałeś itemmeta klikniętemu przedmiotowi i ustawiałeś jego displayname na null, a w warunku wyżej miałeś if (e.getCurrentItem().getItemMeta().getDisplayName() != null) { Myślę, że pomogłem i tym razem #Edit Robisz masakryczny błąd Inventory inv = Bukkit.createInventory(null, 27, Utils.fixColor(Main.getInst().getConfig().getString("shopSellName"))); int i = 0; for (final String a : Main.getInst().getConfig().getConfigurationSection("Items.Sell").getKeys(false)) { final String path = "Items.Sell." + a; final ItemStack item = new ItemStack(Material.getMaterial(Main.getInst().getConfig().getString(path + ".material"))); item.setAmount(Main.getInst().getConfig().getInt(path + ".amount")); ItemMeta met = item.getItemMeta(); met.setDisplayName(Utils.fixColor(Main.getInst().getConfig().getString(path + ".name"))); List<String> lore = Main.getInst().getConfig().getStringList(path + ".lore") .stream() .map(s -> ChatColor.translateAlternateColorCodes('&', s).replace("<<", "«").replace(">>", "»")) .collect(Collectors.toList()); met.setLore(lore); item.setItemMeta(met); int price = Main.getInst().getConfig().getInt(path+".price"); Map<Enchantment, Integer> map = new HashMap<>(); for (String s : Main.getInst().getConfig().getStringList(path + ".enchantments")) { Enchantment ench = Enchantment.getByName(s.split(":")[0].toUpperCase()); if (ench == null) continue; int level = Integer.parseInt(s.split(":")[1]); map.put(ench, level); } item.addUnsafeEnchantments(map); inv.setItem(i, item); ItemManager.setItem(item, i); i++; } p.openInventory(inv); za każdym razem tworzysz nowe inventory (każdy gracz ma i tak to samo) ale to mniejszy problem Za każdym razem dodajesz do ItemManagera te same wartości z configu, lepiej zrobić jakąś klasę Config, zrobić jakiegoś voida np. loadConfig() tam ładować itemy do mapki, w głównej klasie zrobić (w onEnable()) Config.loadConfig(); Wtedy tylko dodajesz do ekwipunku itemy, a nie tworzysz je na nowo za każdym razem No i co do ekwipunku, możesz zrobić jakąś klasę z ekwipunkiem (tam robisz ekwipunek gotowy, dodajesz do niego itemki z ItemManager), w klasie glównej załadować i stworzyć to inventory a np. w listenerze tylko otwierać te gotowe inventory. Jest to opcja, która optymalizuje kod, a zarazem kod staje się czytelniejszy i łatwiej się w nim połapać
×
×
  • Dodaj nową pozycję...