Skocz do zawartości

yooniks

Użytkownik
  • Ilość zawartości

    987
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    13

Treść opublikowana przez yooniks

  1. Wychwytuj cause (powód) śmierci w playerdeathevent i wtedy setDeathMessage
  2. yooniks

    Plugin nie działa

    Nie castuj playera do playera, zmien boolean shoot na true, nie uzywaj getTypeId()
  3. yooniks

    HP Z LUKU

    DOBRZE @EventHandler(ignoreCancelled = true) public void onDamage(EntityDamageByEntityEvent e) { final Entity entity = e.getEntity(); final Entity damager = e.getDamager(); if (!(entity instanceof Player))return; if (damager instanceof Projectile) { final ProjectileSource shooter = ((Projectile) damager).getShooter(); if (shooter instanceof Player) { final Player attacker = (Player) shooter; final Player victim = (Player) entity; attacker.sendMessage("hp gracza: "+victim.getHealth()+" maxymalne hp: "+victim.getHealthScale()); return; } } }
  4. yooniks

    HP Z LUKU

    Ale autor ma po prostu zwykly serwer, bez zadnym modow czy innych dodatków, dałem mu prosty kod, co z tym zrobi to jego sprawa, jeśli bym robił taki plugin 'publiczny' to oczywiście ,że zrobiłbym to inaczej, szukasz nieistotnych szczegółów.. Pisane na szybko, nieprzemyślane
  5. yooniks

    HP Z LUKU

    serduszek jest 10, wiec zamiast zwracac 20hp moim zdaniem jest lepiej zwracac 10 (m.in. tak mi kazano pod ostatnie zlecenie)
  6. yooniks

    HP Z LUKU

    @EventHandler(ignoreCancelled = true) public void onDamage(EntityDamageByEntityEvent e) { final Entity entity = e.getEntity(); final Entity damager = e.getDamager(); if (!(entity instanceof Player))return; if (damager instanceof Projectile) { final ProjectileSource shooter = ((Projectile) damager).getShooter(); if (shooter instanceof Player) { final Player attacker = (Player) shooter; final Player victim = (Player) entity; attacker.sendMessage("zabrano damage! "+e.getDamage()+" teraz hp tego gracza wynosi: " + (victim.getHealth()/2)); return; } } } sprobuj. (victim.getHealth() mozesz dac w decimalformat) i nie wiem czy victim.getHealth() to bedzie od razu z 'zadanym damage', jezeli nie to zrob sobie cos typu private double getHealth(Player target, double givenDamage) { final double health = ((target.getHealth()/2)-givenDamage); return health; } no i mozesz tez sprawdzac czy nie jest na minusie itd
  7. yooniks

    Partikle kolo

    probowales 'every 1 second: ' ?
  8. yooniks

    Ban za...

    za uzywanie xd
  9. https://www.spigotmc.org/threads/skript-custom-command-alias.101236/ if player doesn't have permission "pluginy": on command "/gamemode": set {_test::*} to "test" and "test2" #dlugo nie pisalem skryptow nie pamietam jak sie to robi #lub add "test" and "test2" to {_test::*} on command: if {_text::*} contains event-command: #do something
  10. yooniks

    xMetin

    Tak jak napisal goto, jak dodajesz stringi to uzywaj stringbuildera, bo roznica jest duza pomiedzy 'szybkoscia', tutaj masz przyklad: https://javastart.pl/static/klasy/string-stringbuffer-i-stringbuilder/ Nazwy klas nazywaj z duzej litery, a metody z malej, wszedzie masz static, a to jest niepotrzebne. public class xMetinOnChatListener implements Listener { public xMetinOnChatListener() {} @EventHandler public void OnChat(AsyncPlayerChatEvent e) { String msg = e.getMessage(); e.setCancelled(true); org.bukkit.Bukkit.broadcastMessage(me.xyrusek.core.functions.FixColor.colorize("&7" + e.getPlayer().getName() + "&8: &7" + msg)); } } masz juz gotowe e.setMessage(string) lub e.setFormat(string), wiec broadcast zamien na to <- p.getInventory().addItem(new ItemStack[] { ulepszony1 }); tablica tak samo jest tutaj niepotrzebna, jezeli chcesz dodac graczowi tylko jeden item. if (p.getInventory().contains(ulepszony2)) { uzywaj metody Inventory#containsAtLeast, bo jezeli gracz ma wiecej niz 1 to wtedy bedzie dzialalo tak jakby tego nie mial. public static ItemStack createItemStackTAK() { ItemStack tak = new ItemStack(Material.STAINED_CLAY, 1, DyeColor.LIME.getData()); ItemMeta takMeta = tak.getItemMeta(); takMeta.setDisplayName(FixColor.colorize("&2&lTAK")); tak.setItemMeta(takMeta); return tak; } zamiast robic takich pelno klas to mozesz zrobic sobie po prostu jakis obiekt gdzie konstruktorami maja byc fileconfiguration (config yaml) i sciezka, np: public class ItemParser { private final ItemStack item; public ItemParser(FileConfiguration config, String path) { this.item = new ItemStack(Material.DIAMOND,1); final ItemMeta im = item.getItemMeta(); for (String s : config.getConfigurationSection(path).getKeys(false)) { final String toValue = toValue(config,path+"."+s); switch (s) { case "material": { try { this.item.setType(Material.matchMaterial(toValue)); } catch (Exception ex) { UHCPlugin.getInst().getLogger().warning( "Could not find material! " + toValue + " can't be parsed to material!"); } continue; } case "amount": { int amount = this.item.getAmount(); try { amount = Integer.parseInt(toValue); } catch (NumberFormatException ex) { UHCPlugin.getInst().getLogger().warning(ex.getMessage()); } finally { if (this.item.getAmount()!=amount) this.item.setAmount(amount); } continue; } ... itd. no i przykladowy config: items: yes-item: material: STAINED_CLAY data: 5 amount: 3
  11. yooniks

    xMetin

    jak chcesz oceny i porad co do kodu to wrzuc src na githuba
  12. @bvcz jezeli w skrypcie jest tak samo jak w pluginie to raczej nie, bo to jest cos typu: public class Config { private final Map<String,String> strings = new HashMap<>(); public void init() { strings.put("key","value"); } public String getString(String s) { return strings.get(s); } } wiec jezeli raz zrobi sie init() (zalozmy ze w init jest pelno 'czegos', i to pobiera cos z pliku YAML i tak dalej..), to przy pobieraniu wartosci nie bedzie jakos magicznie obciazalo serwera (jezeli wgl bedzie), bo zaladowanie jest tylko raz, a potem tylko to pobierasz, inaczej byloby jezeli cos caly czas wrzucaloby sie do configu i jeszcze go przeladowywano, wtedy moze byc jedynie lag, w skrocie, pobieranie wartosci z yaml w bukkicie (w plg) to tak samo jakbys zaladowal to tylko raz, np: private final String someValue; public SomeString(String someValue) { this.someValue = someValue; } i pobieral w ten sposob: public String getStringValue() { return someValue; } (anty-goto: moge sie mylic)
  13. Jeśli chodzi o topki to możesz użyć treemap lub comparatora.
  14. W porownaniu do skryptow na tym forum, to dosc slabo miedzy innymi: format slot 7 of player with red glass named "&c&l&oWYLACZ POWIADOMIENIA DROPOW Z PREMIUMCASE NA CHACIE" to close then run [make player execute command "/cpow off"] format slot 8 of player with red glass named "&c&l&oWYLACZ POWIADOMIENIA DROPOW Z PREMIUMCASE NA CHACIE" to close then run [make player execute command "/cpow off"] format slot 16 of player with red glass named "&c&l&oWYLACZ POWIADOMIENIA DROPOW Z PREMIUMCASE NA CHACIE" to close then run [make player execute command "/cpow off"] format slot 17 of player with red glass named "&c&l&oWYLACZ POWIADOMIENIA DROPOW Z PREMIUMCASE NA CHACIE" to close then run [make player execute command "/cpow off"] format slot 25 of player with red glass named "&c&l&oWYLACZ POWIADOMIENIA DROPOW Z PREMIUMCASE NA CHACIE" to close then run [make player execute command "/cpow off"] format slot 26 of player with red glass named "&c&l&oWYLACZ POWIADOMIENIA DROPOW Z PREMIUMCASE NA CHACIE" to close then run [make player execute command "/cpow off"] tu wystarczy loop (petla) on place: if player is holding a chest named "&9&lPremiumCase": cancel event remove 1 chest named "&9&lPremiumCase" from player loop all players: if {powiadomienia::%loop-player%} is true: send "&c%player% &7otworzy &9&lPremiumCase &7i wylosowal&8:" to loop-players chance of 25%: drop 1 diamond sword of sharpness 5 and fire aspect 2 loop all players: if {powiadomienia::%loop-player%} is true: send "&8- &cMiecz 5/2" a tutaj moglby byc config
  15. wrzucaj to do mapki i po prostu ustawiaj na air, lub co tam chcesz wysylasz sendblockchange, to wrzucaj tez blok do mapki, key uuid, value List<Block> (lub location) i wtedy mozesz pobierasz block przy uzyciu przyklad: final Block block = blocks.get(p.getUniqueId()).get(0); i wysylasz sendblockchange gdzie zamieniasz ten block na cos innego, i mozesz usunac z mapki ten blok.
  16. yooniks

    AntyCheat

    Ludzie jak piszecie 'ja napisze' to chociaz dajcie jakis swoj projekt, zeby spojrzec na kod, bo kazdy moze napisac 'zrobie', a kod będzie nie wydajny.
  17. yooniks

    AntyCheat

    bede technikiem dodaj do white nick: xNeleqx a ja ci potem napisze tego antycheata bez backdoorow itp :) woooooooooooooooooooooooooooooooooooooooooooooooooo, ale z bugami ;/ @topic AAC, NoCheatPlus i tyle
  18. wywal to: if(p instanceof Player){ bo chyba np. Enderman na serwer nie wbija tylko sie respi Sprobuj otworzyc to sekunde po dolaczeniu gracza, czyli np. new BukkitRunnable() { @Override public void run() { if (p.isOnline()) openRules(p); } }.runTaskLater(plugin,20L); //20L = 1 sekunda - powinno rozwiazac twoj problem no i: Inventory inv = Bukkit.getServer().createInventory(null,9,"§6§lRegulamin"); ItemStack book = new ItemStack(Material.BOOK, 1); ItemMeta bookim = book.getItemMeta(); ArrayList <String> booklore = new ArrayList<String>(); booklore.add("§c» §4Zakaz gry na cheatach"); booklore.add("§c» §4Nie badz noobem i nie niszcz gdy innym"); booklore.add("§c» §4Gra na cheatach = §c§lBAN , TEMPBAN"); bookim.setLore(booklore); bookim.setDisplayName("§1. §4§lCHEATY"); book.setItemMeta(bookim); inv.setItem(0, book); rob to tylko raz, w onEnable. i wywal to z metody createMenu - lub po prostu otwieraj graczu ksiazke, a nie inventory z ksiazka. @edit pisalem to zanim GotoFinal skomentowal, jesli bym to widzial to juz bym nie skomentowal Możesz spróbować wrzucić otwieranie inventory do taska, by było opóźnione o np jeden tick, pewnie wina starej wersji silnika.
  19. @XXXXXXXXXXmozesz użyć player.getEyeLocaton() i wtedy getBlock() ale nie wiem czy będziesz mial taki rezultat jaki chcesz
  20. @xxTrollPLxx https://github.com/TheMolkaPL @TheMolkaPL lepiej się nie odzywaj bo lepszy nie jesteś jak on chce to mu zrobię, ale [ciach] nie wtrącaj się w sprawy innych :) PS: Ty jesteś bez sensu ;< @topic To nie exploity, to po prostu twój błąd, gracz dostał uprawnienie, dał sobie je pewnie używając pexa na kilka innych kont i tyle, lub po prostu masz luki w plikach konfiguracyjnych/pluginach. Przejrzyj dokładnie plik permissions.yml (chyba tak sie nazywal) w folderze PermissionsEx Do tego wgraj UUID Spoof fix, https://www.spigotmc.org/resources/uuidspoof-fix.26948/
  21. @XXXXXXXXXX jakas mapka z key jako uuid, value jako lista blockow, i przy tworzeniu blokow dodajesz je do listy w mapce do gracza, zanim zmienisz znow blok na taki jaki byl to sprawdz w petli czy ma taki sam material jaki byl w mapce, jezeli nie to continue (ale watpie?) - napisz dokladniej co chcesz osiagniac
  22. @DreaMPL @yooniks Czy to przypadkiem nie będzie mocno spowalniać działanie serwera? nie
  23. private static String getTPS () { final double[] tpsArray = new double[]{20.00000D,19.999999D}; String tps = Double.toString(tpsArray[0]); if (tps.length() > 4) tps = tps.substring(0,4); return tps; }
  24. @Myrlakusss nie, to nie jest twoje, ja to widzę już któryś raz, dużo razy było na mpcforum Lepiej jest już napisać od nowa taki plugin, niż to edytować
  25. Caused by: java.lang.IllegalArgumentException: Plugin already initialized! 51 at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:98) ~[craftbukkit-1.8.jar:git-Bukkit-33d5de3] 52 at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:66) ~[craftbukkit-1.8.jar:git-Bukkit-33d5de3] 53 at pl.hotangel2k17.Main.<init>(Main.java:5) ~[?:?] 54 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_80] 55 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_80] 56 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_80] 57 at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_80] 58 at java.lang.Class.newInstance(Class.java:383) ~[?:1.7.0_80] 59 at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:52) ~[craftbukkit-1.8.jar:git-Bukkit-33d5de3] 60 at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129) ~[craftbukkit-1.8.jar:git-Bukkit-33d5de3] 61 ... 9 more zgaduje ze masz 2 pluginy z takim samym package i klasa glowna, dlatego po 'pl.hotangel2k17' powinienes dodac np. 'kits', czyli: 'pl.hotangel2k17.kits' - zmien package.
×
×
  • Dodaj nową pozycję...