Skocz do zawartości

kerpson

Użytkownik
  • Ilość zawartości

    1852
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    44

Odpowiedzi społeczności

  1. kerpson odpowiedź w Problem z pluginem został oznaczony jako odpowiedź   
    Trzeba nadać odpowiednie uprawnienia.
    https://www.spigotmc.org/resources/advancedban.8695/
    Sekcja All permissions.
     
    Przykład: ab.notify.note - Receives notification
  2. kerpson odpowiedź w Kolorowe wiadomości na chacie został oznaczony jako odpowiedź   
    Jest, od wersji 1.16.5 wprowadzono całkowity support adventure dla silnika paper. Od tej chwilii zaleca używania się komponentów od adventure.
     
    Nie rozumiem tego "utrudniania", przecież pod format wiadomości minimessages też pasuje mieć jakiegoś utila, więc czym jest to utrudnianie?
    To nie rozwiąże jego problemu.
     
    A co do autora @DeepesT, zerowa wiedza na temat javy, prawdopodobnie przepisane z jakiegoś poradnika lub ai.
    Po co metoda send zwraca boolean skoro on i tak czy siak zwróci zawsze true?
     
    Dodatkowo, pokaż klase w której korzystasz ze swojego utila. Prawdopodobnie event od chatu
  3. kerpson odpowiedź w Autorski plugin BedWars został oznaczony jako odpowiedź   
    Zależy jak bardzo rozbudowany miałby być. W mojej opinii dobrze napisany plugin to koszt rzędu 200-300 zł a nawet w górę, zależy od wielu czynników.
  4. kerpson odpowiedź w Nadanie permisji komendzie ktora jej nie ma. został oznaczony jako odpowiedź   
    event on command w skrypcie. I sprawdzasz czy nazwa komendy jest równa tej, której potrzebujesz. Jeżeli tak to sprawdzasz czy gracz ma dane uprawnienie. Eventy wykonują się wcześniej od komendy, więc w przypadku polecenia cancel event komenda nie wykona się.
  5. kerpson odpowiedź w Problem z lore został oznaczony jako odpowiedź   
    Odpowiada za to podmiana ItemMety, przykład:
    ItemStack itemStack = event.getCurrentItem(); ItemMeta itemMeta = itemStack.getItemMeta(); /*robisz tu co chcesz https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/meta/ItemMeta.html */ itemStack.setItemMeta(itemMeta); <--- wgrywasz podmienioną itemmete  
  6. kerpson odpowiedź w Jak mieć Jarkę pluginu z githuba? został oznaczony jako odpowiedź   
    Jeżeli korzystasz z Intelli to sprawa prosta. Wiele przykladow na youtube, wybierz ten ktory Tobie najbardziej odpowiada:
    Potem wystarczy tylko eksportować, zazwyczaj są to projekty gradle/maven.
     
  7. kerpson odpowiedź w Gdzie zapisać zmienna która potrzebuje tylko na chwilę? został oznaczony jako odpowiedź   
    Sprawdzanie czy gracz się rusza powinno być asynchroniczne(asynchroniczne zadanie), to poprawi wydajność.
    Można to niby sprawdzać również w tasku, ale jak kto woli.
    Sposobów jest kilka, ale ja zawsze używam jednego.
    W pluginie funnyguilds jest to fajnie zrobione:
    cache.setTeleportation(Bukkit.getScheduler().runTaskTimer(FunnyGuilds.getInstance(), () -> { if (!player.isOnline()) { cache.getTeleportation().cancel(); cache.setTeleportation(null); return; } if (!LocationUtils.equals(player.getLocation(), before)) { cache.getTeleportation().cancel(); player.sendMessage(messages.baseMove); cache.setTeleportation(null); player.getInventory().addItem(items); return; } if (timeCounter.getAndIncrement() > time) { cache.getTeleportation().cancel(); player.sendMessage(messages.baseTeleport); player.teleport(guild.getHome()); cache.setTeleportation(null); } }, 0L, 20L)); Czyli zwykły task co sekundę, który będzie się powtarzał przez ilość sekund, za każdym razem sprawdzenie czy gracz jest online i czy się nie ruszył, a jak odczeka czas to go tepnie na home
  8. kerpson odpowiedź w Plugin na wiadomość po dołączaniu na server został oznaczony jako odpowiedź   
    @EventHandler public void onJoin(PlayerJoinEvent event) { event.setJoinMessage("wiadomosc po dolaczeniu"); } Klasa z Listenerem, zarejestrować w klasie głównej i gotowe
    Przykład: https://www.spigotmc.org/wiki/using-the-event-api/
  9. kerpson odpowiedź w Yaml nie chce się wczytać. został oznaczony jako odpowiedź   
    no to robisz sobie klasę np. Lang
    public final class Lang { public final static String CUSTOM_MESSAGE = "jakaś wiadomość"; private Lang() {} } no i wtedy w plugine np.
    player.sendMessage(Lang.CUSTOM_MESSAGE);  
  10. kerpson odpowiedź w Zaokrąglanie liczby float został oznaczony jako odpowiedź   
    Po 1. to nie rozumiem czemu monety trzymasz w formacie float o.0? Albo int albo double
    Po 2. Z tego co widzę to ty nie chcesz zaokrąglać, tylko przyciąć liczby do części setnych.
    Do tego warto użyć klasy DecimalFormat. Przykład jej użycia:
    DecimalFormat decimal = new DecimalFormat("#.##"); float f = 0.1924f; System.out.println(decimal.format(f)); W konsoli wyświetli się: 0.19  
  11. kerpson odpowiedź w Wydajność, a liczba eventów. został oznaczony jako odpowiedź   
    Ważna jest również czytelność kodu. Ja osobiście zazwyczaj robiłem osobne eventy by było czytelniej. I tak eventy odpalą się w tym samym momencie, więc według mnie rób tak jak Tobie lepiej będzie.
  12. kerpson odpowiedź w Plugin na pracę. został oznaczony jako odpowiedź   
    Skoro masz plany na przyszłość rozbudowywać plugin to na twoim miejscu bym mapkę <UUID, UserJob>
    Ten obiekt UserJob mógłby zawierać pracę gracza, a w przyszłości byś mógł na luzie dodawać nowe opcje do pracy bez zbędnego modyfikowania kodu
  13. kerpson odpowiedź w Problem z plugin.yml został oznaczony jako odpowiedź   
    [12:47:55] [Server thread/WARN]: Legacy plugin Tutorial v1.0 does not specify an api-version. Brakuje api-version, które było opisane w moim linku:) Także zanim odpiszesz, że nic nie ma i że moje porady są bez sensu to jednak posłuchaj się naszych rad.
    musisz do plugin dodać api-version: 1.16
  14. kerpson odpowiedź w [Pytanie] "Customowe" wiadomości w Essentials został oznaczony jako odpowiedź   
    powinieneś mieć taką linijkę: errorWithMessage=\u00a7cBlad:\u00a74 {0}
  15. kerpson odpowiedź w Nie działająca komenda został oznaczony jako odpowiedź   
    Przecież String w; to jest nazwa komendy a nie świata 😛
    Musisz zrobić Bukkit.getWorld("world"); lub p.getWorld();
  16. kerpson odpowiedź w co tu jest źle? został oznaczony jako odpowiedź   
    dodaj @EventHandler nad metodą
  17. kerpson odpowiedź w co tu jest źle? został oznaczony jako odpowiedź   
    event zarejestrowany?
    if(e.getBlock().getType().equals(Material.BEDROCK)) { if(!p.hasPermission("bcode.security.place.bedrock")) { e.setCancelled(true); p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.bedrock§7)"); return; } } else if(e.getBlock().getType().equals(Material.BEACON)); if(!p.hasPermission("bcode.security.place.beacon")) { e.setCancelled(true); p.sendMessage("§7Nie mozesz tego zrobic! (§9bcode.security.place.beacon§7)"); return; } } troszke poprawiony kod
     
    Dodatkowo enumy porównujemy poprzez == a nie .equals, tzn if getType() == Material.BEACON
  18. kerpson odpowiedź w problem został oznaczony jako odpowiedź   
    1. zamień getPlayer() na .getName
    2.  Zamień 
    if(msg.startsWith("/")) { na
    if(msg.split(" ")[0].startsWith("/")) {  
  19. kerpson odpowiedź w Plugin został oznaczony jako odpowiedź   
    Task:
    new BukkitRunnable() { @Override public void run() { robisz co ci pasi } }.runTaskLater(plugin, 0L, i tutaj ciekawie, 20L = 1 sekunda czyli 5 sekund to 100L); Szanse:
    private final class RandomUtil { private final static Random RANDOM = new Random(); public static boolean getChance(double chance) { int i = RANDOM.nextInt(100) + 1; return (i <= chance); } }  
  20. kerpson odpowiedź w Bungee Status został oznaczony jako odpowiedź   
    public static boolean isOnline(String ip, int port) { try { Socket sock = new Socket(); sock.setSoTimeout(10); sock.connect(new InetSocketAddress(ip, port), 10); sock.close(); return true; } catch (ConnectException e) { return false; } catch (UnknownHostException e) { return false; } catch (IOException e) { return false; } }  
  21. kerpson odpowiedź w Nie mogę odczytać nazwy gui z configu. został oznaczony jako odpowiedź   
    Nie zarejestrowałeś eventu
  22. kerpson odpowiedź w wczytywanie danych z configu został oznaczony jako odpowiedź   
    /Musisz pobrać konfigurację, FileConfiguration jeżeli jest to zwykły config lub YamlConfiguration jeżeli jest to customowy config, dla przykładu dam skrót cfg int diamond_chance = cfg.getInt("Drop.Diamond.Chance"); / Biorąc pod uwagę, że chcesz tylko tą wartość /Jeżeli natomiast chcesz pobrać wszystkie wartości for (String s : cfg.getConfigurationSection("Drop").getKeys(false)){ int chance = cfg.getInt("Drop." + s + ".Chance"); } Przykłady pobrania konfigów
    FileConfiguration cfg = KlasaGlowna.Instancja.getConfig(); YamlConfiguration cfg = YamlConfiguration.loadConfiguration(plik); https://bukkit.gamepedia.com/Configuration_API_Reference#The_Configuration_Object - Tu wszystko ładnie opisane masz
  23. kerpson odpowiedź w Klasa JavaPlugin w inyych został oznaczony jako odpowiedź   
    No to możesz odwołać się za pomocą instancji, ale wyżej kolega podał ci lepsze przykłady, ja podam skrócone.
    public static NazwaKlasyGlownej getInstance() { return getPlugin(NazwaKlasyGlownej.class); } A w jakiejś innej klasie:
    NazwaKlasyGlownej.getInstance()  
    A tak bardziej obiektowo to np:
    public class Klasa { private final KlasaGlowna plugin; public Klasa(KlasaGlowna plugin) { this.plugin = plugin saveConfig(); } public void saveConfig() { /no i żeby się odwołać do klasy glownej to robisz gdzieś np. this.plugin.saveDefaultConfig(); } } A w klasie glównej:
    public class KlasaGlowna extends JavaPlugin { @Override public void onEnable() { new Klasa(this); } }  
  24. kerpson odpowiedź w Znaczek na klawce został oznaczony jako odpowiedź   
    Znalazłem już, jakby ktoś potrzebował to łapcie:
    https://en.wikipedia.org/wiki/Box-drawing_character
  25. kerpson odpowiedź w Prosty plugin na drop został oznaczony jako odpowiedź   
    block.equals() ? a nie powinno być block.getType() == Material.STONE ? Spróbuj tak dać
×
×
  • Dodaj nową pozycję...