kerpson 551 Opublikowano 8 czerwca 2018 Udostępnij Opublikowano 8 czerwca 2018 Witam, pisze sobie plugin na moj serwer i mam maly problem. Zrobiles sobie package w package aby kod byl czytelny. W package commands zrobilem chat. Wyglada on tak: package pl.hotangel2k18.core.commands; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import pl.hotangel2k18.core.Main; public class Chat implements CommandExecutor{ public static Boolean chat; @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(sender.hasPermission("trypvp.chat")){ if(args.length == 1){ if(args[0].equalsIgnoreCase("c")){ int i = 0; while(i < 101){ Bukkit.broadcastMessage(" "); i++; } for(String chatC : Main.getPlugin(Main.class).getConfig().getStringList("chat.clear")){ chatC = chatC.replace("&", "§"); chatC = chatC.replace("_PLAYER_", sender.getName()); Bukkit.broadcastMessage(chatC); return true; } } if(args[0].equalsIgnoreCase("on")){ if(!chat){ chat = true; int i = 0; while(i < 101){ Bukkit.broadcastMessage(" "); i++; } for(String chatON : Main.getPlugin(Main.class).getConfig().getStringList("chat.enable")){ chatON = chatON.replace("&", "§"); chatON = chatON.replace("_PLAYER_", sender.getName()); Bukkit.broadcastMessage(chatON); return true; } } else { for(String chatONerror : Main.getPlugin(Main.class).getConfig().getStringList("chat.enable-error")){ chatONerror = chatONerror.replace("&", "§"); sender.sendMessage(chatONerror); return true; } } } if(args[0].equalsIgnoreCase("off")){ if(chat){ chat = false; int i = 0; while(i < 101){ Bukkit.broadcastMessage(" "); i++; } for(String chatOFF : Main.getPlugin(Main.class).getConfig().getStringList("chat.disable")){ chatOFF = chatOFF.replace("&", "§"); chatOFF = chatOFF.replace("_PLAYER_", sender.getName()); Bukkit.broadcastMessage(chatOFF); return true; } } else { for(String chatOFFerror : Main.getPlugin(Main.class).getConfig().getStringList("chat.disable-error")){ chatOFFerror = chatOFFerror.replace("&", "§"); sender.sendMessage(chatOFFerror); return true; } } } } else { for(String usage : Main.getPlugin(Main.class).getConfig().getStringList("chat-usage")){ usage = usage.replace("&", "§"); sender.sendMessage(usage); return true; } } } else { for(String permission : Main.getPlugin(Main.class).getConfig().getStringList("chat-permission")){ permission = permission.replace("&", "§"); sender.sendMessage(permission); return true; } } return false; } } Zmienna "chat" zostala ustawiona w main w sposob onEnable. Wyglada on tak: Chat.chat = true; Zmienna chat zostala ustawiona na true. Teraz w package listeners chce ta zmienna pobrac czy jest off. Jak mam to zrobic? package pl.hotangel2k18.core.listener; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import pl.hotangel2k18.core.Main; public class ChatListener implements Listener{ @EventHandler public void onChat(AsyncPlayerChatEvent e){ if(!chat){ for(String chatDISABLE : Main.getPlugin(Main.class).getConfig().getStringList("chat.disable-message")){ chatDISABLE = chatDISABLE.replace("&", "§"); chatDISABLE = chatDISABLE.replace("_PLAYER_", e.getPlayer().getName()); e.getPlayer().sendMessage(chatDISABLE); } } } } Cytuj Odnośnik do komentarza https://skript.pl/temat/27577-jak-moge-pobrac-z-maina-do-innej-klasy/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 8 czerwca 2018 Udostępnij Opublikowano 8 czerwca 2018 if (!Chat.chat) { } ? Do tego: Cytat chatDISABLE = chatDISABLE.replace("&", "§"); bukkit ma swoja metode od kolorowania wiadomosci: ChatColor.translateAlternateColorCodes('&', text); No i oczywiscie warto tez wspomniec ze nowe linie mozesz tworzyc w zwyklym stringu uzywajac "\n" (no i mozna tez innymi sposobami, ale teraz nie bede tlumaczyl), i wtedy mozesz wyslac po prostu jeden string wygladajacy mniej wiecej tak: my-message: "first line \n second line" a wiadomosc bedzie wygladac tak: first line second line oraz: Cytat int i = 0; while(i < 101){ Bukkit.broadcastMessage(" "); i++; } mozesz to zastapic w prosty sposob: for (int i = 0; i < 101; i++) { //czyszczenie czatu } + bukkit.broadcast bedzie ci spamilo w konsoli oraz logach, slaby pomysl no i oczywiscie wspomne o tym ze zamiast wykonywac 100 razy metode dla jednego gracza [czyli byloby to np. 1000 metod jak byloby 10 graczy (chyba)], to mozesz wyslac po prostu ogromny znak do kazdego gracza, ktory zastapi wykonywanie tej petli. private char[] chars; protected void init() { Arrays.fill(chars = new char[7680], ' '); } no i wysylasz uzywajac: player.sendMessage(String.valueOf(this.chars)); (ogolnie to slaba nazwa dla takiego fielda, zmien sobie) - no i oczywiscie ten pomysl nie jest moj, ktos gdzies to pisal kiedys na discordach i po prostu podczas nauki podlapalem to. kerpson 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/27577-jak-moge-pobrac-z-maina-do-innej-klasy/#findComment-182445 Udostępnij na innych stronach Więcej opcji udostępniania...
0 JanekMaSkrypta_ 117 Opublikowano 9 czerwca 2018 Udostępnij Opublikowano 9 czerwca 2018 W dniu 8.06.2018 o 10:41, HotAngel2K17 napisał: chatOFF = chatOFF.replace("&", "§"); chatOFF = chatOFF.replace("_PLAYER_", sender.getName()); Nie lepiej tego zrobic od razu gdy wysyla message? Jezeli chcesz odczytywac mozesz wpisac ten kod: private Chat czat = new Chat(); (Chat to nazwa klasy) Potem to z górki robisz: if(czat.chat == false){ Cytuj Odnośnik do komentarza https://skript.pl/temat/27577-jak-moge-pobrac-z-maina-do-innej-klasy/#findComment-182512 Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 9 czerwca 2018 Udostępnij Opublikowano 9 czerwca 2018 30 minut temu, JanekMaSkrypta_ napisał: Nie lepiej tego zrobic od razu gdy wysyla message? Jezeli chcesz odczytywac mozesz wpisac ten kod: private Chat czat = new Chat(); (Chat to nazwa klasy) Potem to z górki robisz: if(czat.chat == false){ Poprawnie powinno być: if(!czat.chat) kerpson 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/27577-jak-moge-pobrac-z-maina-do-innej-klasy/#findComment-182515 Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 9 czerwca 2018 Udostępnij Opublikowano 9 czerwca 2018 22 godziny temu, JanekMaSkrypta_ napisał: Nie lepiej tego zrobic od razu gdy wysyla message? Jezeli chcesz odczytywac mozesz wpisac ten kod: private Chat czat = new Chat(); (Chat to nazwa klasy) Potem to z górki robisz: if(czat.chat == false){ jak juz to final i StringUtils.replace, bo te ze stringa jest wolne 22 godziny temu, KrejzolekPRO napisał: Poprawnie powinno być: if(!czat.chat) Obydwie formy są poprawne Cytuj Odnośnik do komentarza https://skript.pl/temat/27577-jak-moge-pobrac-z-maina-do-innej-klasy/#findComment-182527 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
kerpson 551
Witam, pisze sobie plugin na moj serwer i mam maly problem. Zrobiles sobie package w package aby kod byl czytelny. W package commands zrobilem chat.
Wyglada on tak:
package pl.hotangel2k18.core.commands; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import pl.hotangel2k18.core.Main; public class Chat implements CommandExecutor{ public static Boolean chat; @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(sender.hasPermission("trypvp.chat")){ if(args.length == 1){ if(args[0].equalsIgnoreCase("c")){ int i = 0; while(i < 101){ Bukkit.broadcastMessage(" "); i++; } for(String chatC : Main.getPlugin(Main.class).getConfig().getStringList("chat.clear")){ chatC = chatC.replace("&", "§"); chatC = chatC.replace("_PLAYER_", sender.getName()); Bukkit.broadcastMessage(chatC); return true; } } if(args[0].equalsIgnoreCase("on")){ if(!chat){ chat = true; int i = 0; while(i < 101){ Bukkit.broadcastMessage(" "); i++; } for(String chatON : Main.getPlugin(Main.class).getConfig().getStringList("chat.enable")){ chatON = chatON.replace("&", "§"); chatON = chatON.replace("_PLAYER_", sender.getName()); Bukkit.broadcastMessage(chatON); return true; } } else { for(String chatONerror : Main.getPlugin(Main.class).getConfig().getStringList("chat.enable-error")){ chatONerror = chatONerror.replace("&", "§"); sender.sendMessage(chatONerror); return true; } } } if(args[0].equalsIgnoreCase("off")){ if(chat){ chat = false; int i = 0; while(i < 101){ Bukkit.broadcastMessage(" "); i++; } for(String chatOFF : Main.getPlugin(Main.class).getConfig().getStringList("chat.disable")){ chatOFF = chatOFF.replace("&", "§"); chatOFF = chatOFF.replace("_PLAYER_", sender.getName()); Bukkit.broadcastMessage(chatOFF); return true; } } else { for(String chatOFFerror : Main.getPlugin(Main.class).getConfig().getStringList("chat.disable-error")){ chatOFFerror = chatOFFerror.replace("&", "§"); sender.sendMessage(chatOFFerror); return true; } } } } else { for(String usage : Main.getPlugin(Main.class).getConfig().getStringList("chat-usage")){ usage = usage.replace("&", "§"); sender.sendMessage(usage); return true; } } } else { for(String permission : Main.getPlugin(Main.class).getConfig().getStringList("chat-permission")){ permission = permission.replace("&", "§"); sender.sendMessage(permission); return true; } } return false; } }Zmienna "chat" zostala ustawiona w main w sposob onEnable.
Wyglada on tak:
Chat.chat = true;
Zmienna chat zostala ustawiona na true.
Teraz w package listeners chce ta zmienna pobrac czy jest off.
Jak mam to zrobic?
package pl.hotangel2k18.core.listener; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import pl.hotangel2k18.core.Main; public class ChatListener implements Listener{ @EventHandler public void onChat(AsyncPlayerChatEvent e){ if(!chat){ for(String chatDISABLE : Main.getPlugin(Main.class).getConfig().getStringList("chat.disable-message")){ chatDISABLE = chatDISABLE.replace("&", "§"); chatDISABLE = chatDISABLE.replace("_PLAYER_", e.getPlayer().getName()); e.getPlayer().sendMessage(chatDISABLE); } } } }Odnośnik do komentarza
https://skript.pl/temat/27577-jak-moge-pobrac-z-maina-do-innej-klasy/Udostępnij na innych stronach
4 odpowiedzi na to pytanie
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.