Skocz do zawartości

yooniks

Użytkownik
  • Ilość zawartości

    987
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    13

Treść opublikowana przez yooniks

  1. yooniks

    BUKKIT

    @topic mozesz uzyc mavena + google 'spigot maven dependency'
  2. yooniks

    Problem z if

    @KuzynProcesor zrob loopa ktorego ci dala osoba wyzej i zamien %loop-players% na %loop-player%
  3. @HotAngel2K17 nic nie wnosisz do tematu, wiec po co odpowiadasz, do tego wszystkie twoje posty są tego typu. @XXXXXXXXXX wystarczy wpisac w google, masz pelno gotowych api lub kodów, a nawet są tutoriale. https://www.spigotmc.org/threads/code-snippets-copy-worlds.66532/ https://bukkit.org/threads/unload-delete-copy-worlds.182814/
  4. yooniks

    Blad

    @KrejzolekPRO " Po za tym dziwnie to robisz, okej chcesz mieć porządek w głownej klasie, ale taka rejestracja jest chaotyczna. Na przykład zamiast zrobić sobie instancje głównej klasy to robisz to w sposób, który nie wiem czy zadziała - nie mogę sprawdzić. " Przeciez ten sposób jest okej public TeleportAllCommand(Main plugin){ this.plugin = plugin; this.plugin.getCommand("tpall").setExecutor(this); } "Na przykład zamiast zrobić sobie instancje głównej klasy to robisz to w sposób, który nie wiem czy zadziała - nie mogę sprawdzić. " A po co robic wszystko statycznie skoro można tak no i oczywiscie ze taki sposob zadziala
  5. mozesz uzyc jakiejs strony lub np. githuba, i tam uzywajac 'formatu' jsona w sekcji 'servers' dac ip jakiegos serwera no i np. boolean na true, a w licencji przy starcie pluginu po prostu sprawdzac jakims json parserem tą strone i jezeli nie ma tam getServer().getIp() (mozesz sprawdzac sam host uzywajac tablic) to po prostu wylaczasz plugin i tyle lub po prostu dla wszystkich serwerow/osob jezeli masz program i chcesz go wylaczyc na amen zeby juz go nie uzywali to w mainie w try/catch wylapujesz exceptiona/errora (zalezy co rzucasz) i wtedy wylaczasz program private void checkWWW() throws RuntimeException { try { URL oracle = new URL("link_do_licencji"); URLConnection yc = oracle.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader( yc.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { if (inputLine.equalsIgnoreCase("true")) { System.out.println("licencja poprawna"); } else { throw new RuntimeException(); } } in.close(); } catch (Throwable ex) { throw new RuntimeException(); } } try { checkWWW(); } catch (Exception ex) { System.exit(1); } finally { //do something }
  6. yooniks

    Blad

    Daj logi (ew. sam log/error z konsoli) + klase Main i plik config.yml oraz plugin.yml
  7. nauczcie sie pierw dobrze formatowac kod i robic go bardziej 'czytelnym' bo to razi w oczy i trudno takie cos zrozumiec ;/ public class ChatCommand implements CommandExecutor { public static ChatMode chatMode = ChatMode.ON; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (sender instanceof Player) { final Player p = (Player) sender; final User u = UserManager.getUser(p); if (!u.can(Group.Helper)) { p.sendMessage(ChatUtil.fixColor("&8>> &cBrak uprawnien. &8(&7Helper&8)")); return true; } } if (args.length < 1) { sender.sendMessage(ChatUtil.fixColor("&8>> &cPoprawne uzycie: &7/chat [clear/on/off/vip]")); return true; } final String arg = args[0]; if (arg.equalsIgnoreCase("vip")) { if (chatMode == ChatMode.VIP) { sender.sendMessage(ChatUtil.fixColor("&8>> &cTryb VIP na chacie jest juz wlaczony!")); return true; } chatMode = ChatMode.VIP; sender.sendMessage(ChatUtil.fixColor("&8>> &7Chat zostal przelaczony na &6tryb vip&7!")); for (Player pOnl : Bukkit.getServer().getOnlinePlayers()) { pOnl.sendMessage("\n\n\n"+ChatUtil.fixColor("&8>> &7Chat zostal przelaczony na tryb: &aVIP\n &8>> &7Przez: &a" + sender.getName() + "&7!")); } } else if (arg.equalsIgnoreCase("cc") || arg.equalsIgnoreCase("clear")) { for (Player pOnl : Bukkit.getServer().getOnlinePlayers()) { pOnl.sendMessage("\n\n\n"+ChatUtil.fixColor("&8>> &aChat zostal wyczyszczony przez: &7" + sender.getName() + "&a!")); } sender.sendMessage(ChatUtil.fixColor("&8>> &7Chat zostal &awyczyszczony&7!")); } else if (arg.equalsIgnoreCase("on") || arg.equalsIgnoreCase("enable")) { if (chatMode == ChatMode.ON) { sender.sendMessage(ChatUtil.fixColor("&8>> &7Chat jest juz &awlaczony&7!")); return true; } chatMode = ChatMode.ON; sender.sendMessage(ChatUtil.fixColor("&8>> &7Chat zostal &awlaczony&7!")); for (Player pOnl : Bukkit.getServer().getOnlinePlayers()) { pOnl.sendMessage("\n\n\n"+ChatUtil.fixColor("&8>> &7Chat zostal przez: &awlaczony &7przez: &a" + sender.getName() + "&7!")); } } else if (arg.equalsIgnoreCase("off") || arg.equalsIgnoreCase("disable")) { if (chatMode == ChatMode.OFF) { sender.sendMessage(ChatUtil.fixColor("&8>> &7Chat jest juz &cwylaczony&7!")); return true; } chatMode = ChatMode.OFF; sender.sendMessage(ChatUtil.fixColor("&8>> &7Chat zostal &cwylaczony&7!")); for (Player pOnl : Bukkit.getServer().getOnlinePlayers()) { pOnl.sendMessage("\n\n\n"+ChatUtil.fixColor("&8>> &7Chat zostal przez: &cwylaczony &7przez: &a" + sender.getName() + "&7!")); } } else { sender.sendMessage(ChatUtil.fixColor("&8>> &7Argument: &c" + arg + "&7 jest &cniepoprawny&7!")); sender.sendMessage(ChatUtil.fixColor("&8>> &cPoprawne uzycie: &7/chat [clear/on/off/vip]")); } return false; } } public enum ChatMode { ON, OFF, VIP; } jakis moj stary kod, zedytuj sobie ____________ public static List<String> chaton; public static List<String> chatoff; public static List<String> chatclear; public static List<String> chatclearplayer; public static List<String> chatusage; chaton = FileManager.getMsg().getStringList("Chat.on"); chatoff = FileManager.getMsg().getStringList("Chat.off"); chatclear = FileManager.getMsg().getStringList("Chat.clear"); chatclearplayer = FileManager.getMsg().getStringList("Chat.clearplayer"); chatusage = FileManager.getMsg().getStringList("Chat.uzycie"); takie listy nie musza byc statyczne, mozesz robic to niestatycznie, bo czemu nie if (args.length == 0) { for (String chatusage : Main.chatusage) { sender.sendMessage(Utils.ChatUtil.fixColor(chatusage)); } return true; } else if (args[0].equalsIgnoreCase("on")) { te else jest tutaj niepotrzebne, samo 'if'. if (Bukkit.getPlayer(args[1]) != null) { Player p = Bukkit.getPlayer(args[1]); takie sprawdzanie jest niewygodne, bo mozesz raz zrobic zmienna np. final Player target = Bukkit.getPlayerExact(args[1]) wiekszosc kodu wyglada dziwnie i az odechciewa sie czytac, + daj całą klase main bo tutaj tez moze byc w tym problem https://code.skript.pl/11skWfpZ for (int i = 0; i <= 124; i++) { Bukkit.broadcastMessage(""); } nie rób broadcast bo wtedy wysylasz tez do konsoli, zrob cos typu getPlayers().forEach(p->p.sendMessage("wyczyszczono")); private List<Player> getPlayers () { return ...; } i: if (Main.chat == true) { mozesz robic if (Main.chat) a jezeli false: if (!Main.chat) if (args.length == 0) { for (String chatusage : Main.chatusage) { sender.sendMessage(Utils.ChatUtil.fixColor(chatusage)); } return true; } else if (args[0].equalsIgnoreCase("on")) { if (args.length < 1) { for (String chatusage : Main.chatusage) { //tak jak pisal gotofinal, mozna uzywac "\n" itp. zamiast uzywania list sender.sendMessage(Utils.ChatUtil.fixColor(chatusage)); } return true; } if (args[0].equalsIgnoreCase("on")) { } no i tak jak pisalem daj klase Main, całą. (jestem wykonczony i chce mi sie spac, jezeli popelnilem gdzies blad lub zle 'poprawilem' to sry)
  8. on death of zombie or skeleton or wither or ghast or witch or enderman or creeper or spider: clear drops on xp spawn: cancel event moim zdaniem lepiej zrobic zmienna grupową, tam dodać te moby i dopiero wtedy sprawdacz czy event-entity contains {zmienna::*}, a w 'on xp spawn' nawet jak bedziesz rzucal butelki z expem itd. to skrypt bedzie to blokowac
  9. yooniks

    Config v2 :D

    https://bukkit.gamepedia.com/Configuration_API_Reference i do tego podstawy javy
  10. yooniks

    Config

    public class SimplePlugin extends JavaPlugin { @Override public void onEnable() { saveDefaultConfig(); this.getCommand("test").setExecutor(new CommandExecutor() { @Override public boolean onCommand(CommandSender sender, Command cmd, String lab, String[] args){ final String text = getConfig().getString("test"); sender.sendMessage(ChatColor.translateAlternateColorCodes('&',text'); return false; } }); } } test: "\n hejo siemano \n hejosiemanox2" config /\ lub: test: | hejo siemano hejo siemano
  11. yooniks

    Problem GUI

    Tworzysz sobie inventory, tylko raz, nie za każdym razem przy metodzie: public class MyPlugin extends JavaPlugin { private final Inventory testInventory; public MyPlugin() { this.testInventory = getServer().createInventory(null,9,"This is inventory"); final ItemStack is = new ItemStack(Material.GOLDEN_APPLE, 1, (short)1); this.testInventory.setItem(4,is); } @Override public void onEnable() { this.getServer().getPluginManager().registerEvents(new Listener() { @EventHandler public void inventoryClick(InventoryClickEvent e) { if (e.getInventory==null || e.getCurrentItem()==null)return; if (e.getInventory.getTitle().equalsIgnoreCase(testInventory.getTitle()) { e.setCancelled(true); //do something } } },this); } } troche zle wytabowane bo od razu pisalem w 'code' na forum, ale raczej ogarniesz a co do komendy to typ na górze dał, tylko popraw: @Override public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args) { if (sender instanceof Player) { final Player p = (Player) sender; p.openInventory(testInventory); return true; } return false; } } i w plugin.yml dodaj commands: test: + onEnable: getCommand("test").setExecutor(this);
  12. Po co ci TaskID skoro tego nigdzie nie uzywasz, metody show i hide allPlayers niepotrzebnie są publiczne @EventHandler public void onEntityDamage(EntityDamageByEntityEvent e){ if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){ Player hit = (Player) e.getEntity(); Player damager = (Player) e.getDamager(); World getworld = damager.getWorld(); World world2 = Bukkit.getServer().getWorld("standard"); world2 moze zwrocic nulla, @EventHandler public void onPlayerDeath(PlayerDeathEvent e){ Player v = (Player) e.getEntity(); Player p = (Player) v.getKiller(); World getworld = p.getWorld(); World world2 = Bukkit.getServer().getWorld("standard"); if(getworld == world2){ i e.getEntity().getKiller() moze tez zwrocic nulla, (world2 tak samo), final World playerWorld = p.getWorld(); if(playerWorld.getName().equalsIgnoreCase("standard")) { //cos takiego bedzie lepsze I te mapki zmien z hashmap na concurrenthashmap no a co do twojego 'niedzialajacego odliczania' to problemem moze byc private int i = 5; bo to jest dla kazdego taska, a w dodatku nie zmieniasz pozniej tej wartosci znow na 5 tylko siedzi na 0, nie rob od razu takich trudniejszych rzeczy bo bedziesz mial jedynie bugi na serwerze, zaczynaj od czegos prostszego @edit: jednak uzywasz taskID, nie patrzylem na caly kod , i co do concurrenthashmap to tez nie moze byc bo nie moze zawierac null klucza, a ty chcesz jednak zrobic cos innego niz myslalem
  13. !!!!!! !!!!!! !!!! ! set player gamemode to creative #it should work
  14. on packet: if event-string is "PacketPlayInCustomPayload": set {_b} to packet field "a" set {g::%player%} to "%{_b} parsed as text%" if "%{g::%player%} parsed as text%" contains "CPack": stop if "%{g::%player%} parsed as text%" contains "BRAND": kick player due to "&fBrak autoryzacji &6BlazingPack &fpobierz paczke na: &7www.blazingpack.pl%nl%&7Nie wiesz jak pobrac blazingpacka? zobacz poradnik na stronie" z tego co pisali ostatnio na discordzie, na którym jestem to wiem, że "podobno" zmienili z "CPacka" na "TPacka" i znów na coś innego, wiec mozliwe ze nie bedzie dzialac to poprawnie. every 5 seconds: loop all players: if "%{g::%loop-player%} parsed as text%" contains "BRAND": wait 3 seconds if "%{g::%loop-player%} parsed as text%" contains "BRAND": kick loop-player due to "&fBrak autoryzacji &6BlazingPack &fpobierz paczke na: &7www.blazingpack.pl%nl%&7Nie wiesz jak pobrac blazingpacka? zobacz poradnik na stronie" A to co? if loop-player is "xKiller_": execute console command "xdnic" mhm a tutaj, wystarczylo raczej od razu 'to executor' lub 'to sender' if executor is player: send "&7Wyrzucanie wszystkich graczy bez &6BlazingPacka&7...." wait 5 seconds send "&7Wszyscy gracze bez &6BlazingPacka&7 zostali &awyrzuceni&7!" if executor is console: send "&7Wyrzucanie wszystkich graczy bez &6BlazingPacka&7...." to console wait 5 seconds send "&7Wszyscy gracze bez &6BlazingPacka&7 zostali &awyrzuceni&7!" to console No i bardzo, bardzo łatwe do obejścia wystarczy w odpowiednim momencie wysyłać CPack, lub po prostu jakiś thread typu: public void connect() { new Thread(new Runnable() { if (session==null) { Thread.getCurrentThread().stop(); return; } final byte[] bytes = "chuj".writeBytes(); session.send(new ClientPluginMessagePacket("MC|CPack", bytes); try { Thread.sleep(1000L*3); catch (Exception ex) { getLogger().warning("Cannot sleep thread!" + ex.getMessage()); } }).start(); } A tak to nawet okej, ciekawy pomysł, ale mógłbyś dodać więcej opcji 'weryfikowania'
  15. private boolean canGet(Inventory inventory) { if (inventory.firstEmpty() == -1) { return false; } return true; } chyba chodzilo ci o sprawdzanie czy inventory jest pelne?
  16. yooniks

    Java

    kobiedydokodu.pl javastart.pl tutorialspoint.com https://docs.oracle.com/javase/tutorial/
  17. Ps... możecie napisać jak sprawdzać na który przycisk nacisnąłem? Np. nacisne "w", dzieje się to, nacisne "s", dzieje się to. klik oracle A jak chcesz sie poprawic w 'programowaniu gui' (jesli chodzi ci o java swing) to polecam poradniki na yt, ja sam sie uczylem z yt bo z dokumentacji, tutorialow w google wgl nic nie ogarnialem
  18. yooniks

    Skrypty do poprawy [$$]

    Nie płać za takie coś, są na tym forum osoby, które zrobią to za darmo, jak widze to co napisałeś jest bardzo łatwe, sam bym to zrobił ale nie mam czasu, to jest skrypt na max 10 minut, ja długo nie pisze już skryptów wiec z czymś będę pewnie miał problem, popatrz na forum kto ogarnia skrypty i ich poproś o owy. np @JanekMaSkrypta_ @Nioo (chyba, jezeli mi sie nie pomylilo z kims na N) no i chyba najlepszy to @knugi
  19. @GotoFinal w jednym pluginie mialem tak: pomoc: "&8[-----]\n&7Pomoc\n&8[-----]" ale tak jest niewygodnie pisać, wiec teraz wiekszość robie stringlist i sie jakoś przyzwyczaiłem, no i łatwiej to wszystko konfigurować dla osoby nieznającej sie na configach, np. dla własciciela serwera
  20. yooniks

    Checkpoint

    @warchamer12 public class ChPointListener implements Listener { private final Map<String, Integer> checkpoints = new HashMap<>(); @EventHandler public void onPlayerInteract(PlayerInteractEvent e) { final Player p = e.getPlayer(); final Action action = e.getAction(); if (e.getItem() == null) return; if (p.hasPermission("chp.gracz")) { if (e.getItem().getType() == Material.COMPASS) { if (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK) { if ((checkpoints.get(p.getName()) > 3)) { p.sendMessage(Utils.getColor("&4Osiagnoles limit checkpoint!")); } else { if (p.getItemInHand() == null) return; checkpoints.put(p.getName(), checkpoints.get(p.getName()) + 1); p.sendMessage(Utils.getColor("&6Postawiles checkpoint!")); } } } if (e.getItem().getType() == Material.COMPASS) { if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) { final Integer loc = checkpoints.get(p.getName()); checkpoints.get(p.getName()); p.sendMessage(Utils.getColor("&4Teleportacja na ostatni checkpoint!")); } } } else { p.sendMessage(Utils.getColor("&4Nie masz permisji!")); } } @EventHandler public void onPlayerJoin(PlayerJoinEvent e) { final Player p = e.getPlayer(); checkpoints.put(p.getName(), 0); } } poprawiony troche kod, ale przeciez jak to ma dzialac 'checkpoints.get(p.getName());' chcesz zeby cie teleportowalo do lokalizacji okreslonej, tak? ta metoda ci zwraca Integer, a nie teleportuje cie, jak chcesz to jak bede mial czas to moge ci dac kod, ale musialbys wszystko wytlumaczyc co chcesz @edit w sumie tak patrzac na ten kod to moja poprawka duzo nie dala, nie chce mi sie znowu tego edytowac i tak to nic nie da, pozniej ci moge dac kodzik
  21. public class pomoc implements CommandExecutor { natusiekCore plugin; public pomoc(natusiekCore plugin) { this.plugin = plugin; this.plugin.getCommand("pomoc").setExecutor(this); } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if ((sender instanceof Player)) { Player player = (Player)sender; for (String s : this.plugin.getConfig().getStringList("pomoc")) { s = s.replace("&", "§"); s = s.replace("{NICK}", player.getName()); player.sendMessage(s); } } else { sender.sendMessage("To polecenie nie moze byc wykonane z konsoli."); } return false; } } to jest porażka @InawiaczeG1338 jak już chcesz zaimponować: public class MyCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args){ Main.getPlugin(Main.class).getStringList("pomoc"). forEach(s->sender.sendMessage(ChatColor.translateAlternateColorCodes('&',s)); } } co do samego tematu, plugin słabo wykonany Goblic mniej więcej napisał co do poprawy.
  22. yooniks

    Checkpoint

    @warchamer12 rozumiem ze wszystko oprocz 'klikania' ci dziala, wiec dodaj tylko to: if (p.getItemInHand()==null)return; w evencie nad warunkami
  23. @Wakal BukkitRunnable np.: public class MyTask extends BukkitRunnable { private final Player p; public MyTask(Player p) { this.p=p; } @Override public void run(){ p.sendMessage("it works"); } } new MyTask(player).runTaskLater(plugin,20L); //chyba tak to bylo
  24. yooniks

    Config

    @Ever skype: [email protected], a co do filmu to on wrzucil tam 70% pluginow ktore ode mnie kupil, a jak sie go pytalem na skype czemu to zrobil to napisal ze jak kupil to sa jego i tyle xd
×
×
  • Dodaj nową pozycję...