-
Ilość zawartości
987 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
13
Treść opublikowana przez yooniks
-
@topic mozesz uzyc mavena + google 'spigot maven dependency'
-
@KuzynProcesor zrob loopa ktorego ci dala osoba wyzej i zamien %loop-players% na %loop-player%
-
@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/
-
@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
-
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 }
-
Daj logi (ew. sam log/error z konsoli) + klase Main i plik config.yml oraz plugin.yml
-
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)
-
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
-
https://bukkit.gamepedia.com/Configuration_API_Reference i do tego podstawy javy
-
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
-
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);
-
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
-
!!!!!! !!!!!! !!!! ! set player gamemode to creative #it should work
-
BlazingPackAuth - Skrypt na autoryzacje blazingpack.
yooniks odpowiedział(a) na JanekMaSkrypta_ temat w Archiwum
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' -
(Util) sprawdzanie czy gracz może otrzymać przedmiot.
yooniks odpowiedział(a) na KrejzolekPRO pytanie w Pytania i problemy
private boolean canGet(Inventory inventory) { if (inventory.firstEmpty() == -1) { return false; } return true; } chyba chodzilo ci o sprawdzanie czy inventory jest pelne? -
kobiedydokodu.pl javastart.pl tutorialspoint.com https://docs.oracle.com/javase/tutorial/
-
[Java] Jak poprawić swoje umiejętności?
yooniks odpowiedział(a) na Wakal pytanie w Pytania i problemy
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 -
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
-
@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
-
@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
-
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.
-
@warchamer12 rozumiem ze wszystko oprocz 'klikania' ci dziala, wiec dodaj tylko to: if (p.getItemInHand()==null)return; w evencie nad warunkami
-
Zmienna int, boolean dla danego gracza.
yooniks odpowiedział(a) na Wakal pytanie w Pytania i problemy
@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 -
@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
