-
Ilość zawartości
1852 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
44
Odpowiedzi społeczności
-
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
-
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
-
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.
-
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ę.
-
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
-
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.
-
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
-
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/
-
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);
-
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
-
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.
-
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
-
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
-
kerpson odpowiedź w [Pytanie] "Customowe" wiadomości w Essentials został oznaczony jako odpowiedź
powinieneś mieć taką linijkę: errorWithMessage=\u00a7cBlad:\u00a74 {0}
-
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();
-
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
-
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); } }
-
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; } }
-
kerpson odpowiedź w Nie mogę odczytać nazwy gui z configu. został oznaczony jako odpowiedź
Nie zarejestrowałeś eventu
-
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
-
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); } }
-
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
-
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ć
