-
Ilość zawartości
1852 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
44
Treść opublikowana przez kerpson
-
spolszczenie skryptu do serwera minecraft
kerpson odpowiedział(a) na InnoGame temat w Spolszczenia pluginów
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 -
spolszczenie skryptu do serwera minecraft
kerpson odpowiedział(a) na InnoGame temat w Spolszczenia pluginów
Dlatego jest dział "spolszczanie pluginów". Osoba chętna niech do niego napisze i po problemie XD po co posty nabijasz -
Podeslij mi plugin na pv, pobiore i ogarne
-
Testowalem u sb z echantami i dzialalo-_- czy item w ekwipunku jest zenchantowany?
-
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);
-
a jak probujesz klikac cos na chacie to pisze cos ? (przynajmniej ze nie masz takiego przedmiotu?)
-
spróbuj przy enchancie coś taskiego remove.addUnsafeEnchantments(is.getItemMeta().getEnchants());
-
możesz kod pokazać
-
jakieś błędy w konsoli ? i pokaż znowu kod
-
ItemStack remove = new ItemStack(is.getType(), is.getAmount(), is.getDurability()); remove.addUnsafeEnchantments(is.getEnchantments());
-
moj fail, sorka xD
-
majster właśnie swoje ip pokazałeś
-
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
-
usunąłeś config.yml z serwera żeby się wgrał na nowo ?
-
spróbuj zamienić znak ' na "
-
pokaż jak wygląda config.yml
-
oke
-
ItemStack remove = new ItemStack(is.getType(), is.getAmount(), is.getDurability());
-
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
-
pokaż tej urywek kodu gdzie się sprzedaje
-
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
-
wytłumacz dokładniej, bo się pogubiłem (jestem po treningu więc wolniej ogarniam, sory) XD
-
dalej chcesz osiągnąć efekt ItemStack, cena czy coś jeszcze?
-
czemu integer to slot
-
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ć
