Skocz do zawartości

KUnkownCMD - Wiadomość po wpisaniu nieprawidłowej komendy!


KodziaK
 Udostępnij

Rekomendowane odpowiedzi

Witajcie!

 

Dzisiaj napisałem mój pierwszy plugin!

 

Spytacie co on daje.

 

Otóż umożliwia nam zmianę wiadomości po wpisaniu nieprawidłowej komendy.

 

Ktoś powie no wow przecież można to zrobić bez pluginów, ale nie da się tam użyć nazwy komendy(którą wpisuje się źle).

 

Oraz z powodu że nie znalazłem takiego pluginu(w którym da się użyć nazwy komendy(którą wpisuje się źle).

 

DOWNLOAD:

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

SKAN:

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

SOURCE CODE:

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Edytowane przez K0dziakOfSky
Odnośnik do komentarza
Udostępnij na innych stronach

Czemu nie zrobiłeś listy w configu?

        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia1").replaceAll("/command/", cmd)));
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia2")));

zamiast tego mogłeś zrobić:

for(String s : getConfig().getStringList("helpcmd")){

}player.sendMessage(ChatColor.translateAlternateColorCodes('&', s.replaceAll("/command/", cmd)));

 

+ w twoim wykonaniu moge dodac nazwe komendy tylko w stringu o nazwie Linia1 a w Linia2 juz nie działa. Polecałbym ci zmienić to :) 

2.  Konstruktor jest zbędny tzn nie wiem po co go wgl zrobiles jesli jest pusty :D 

3. powinines robic ify typu if(false){return}

czyli zamiast:

 

  public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { if (!event.isCancelled()) {
      Player player = event.getPlayer();
      String cmd = event.getMessage().split(" ")[0];
      org.bukkit.help.HelpTopic topic = Bukkit.getServer().getHelpMap().getHelpTopic(cmd);
      if (topic == null) {
        player.sendMessage(ChatColor.DARK_GRAY + "===========================");
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia1").replaceAll("/command/", cmd)));
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia2")));
        player.sendMessage(ChatColor.DARK_GRAY + "===========================");
        event.setCancelled(true);
      }
    }
  }

to zrobić
 

  public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { 
      if (event.isCancelled()) {
         return;
     }
      Player player = event.getPlayer();
      String cmd = event.getMessage().split(" ")[0];
      org.bukkit.help.HelpTopic topic = Bukkit.getServer().getHelpMap().getHelpTopic(cmd);
      if (topic != null) {
          return;
        }
        player.sendMessage(ChatColor.DARK_GRAY + "===========================");
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia1").replaceAll("/command/", cmd)));
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia2")));
        player.sendMessage(ChatColor.DARK_GRAY + "===========================");
        event.setCancelled(true);
  }

kod staje się wtedy bardziej czytelny :) 

Edytowane przez dekros
Odnośnik do komentarza
Udostępnij na innych stronach

jeszcze jedno, nie jestem pewien czy to wina dekimpilatora ale jeśli robisz coś takiego w kodzie:
 

public class Main extends org.bukkit.plugin.java.JavaPlugin implements org.bukkit.event.Listener

czyli zamiast JavaPlugin podajesz org.bukkit.plugin.java.. to nie potrzebnie to robisz

dodatkowo pamietaj o tym że listenery powinines rozdzielać na osobne klasy czyli jak masz ten event: 

PlayerCommandPreprocessEvent 

to zrobić klase np

PlayerListeners

i w niej robić wszystkie listenery które zajmują się czymś związanym z graczami np jak masz od blocków BlockBreakEvent to zrobić to w osobnej klasie by dało się łatwiej przeglądać kod ;)

Ewentualnie listener per classa ale to jak dla mnie nie potrzebny syf sie robi xD

 

Odnośnik do komentarza
Udostępnij na innych stronach

@dekros z pierwszym to akurat dekompiler xd a z drugim to wiem ale na plugin taki to chyba jest bez sensu :P
 

DODAJE SOURCECODE DLA OSÓB KTÓRE BY CHCIAŁY MI DAĆ JAKIEŚ PORADY <3

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Edytowane przez K0dziakOfSky
Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...
  • 4 miesiące temu...

Prosty plugin ale dosyć średni xd

        player.sendMessage(ChatColor.DARK_GRAY + "===========================");
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia1").replaceAll("/command/", cmd)));
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', getConfig().getString("Linia2")));
        player.sendMessage(ChatColor.DARK_GRAY + "===========================");

Czemu tak? Nie lepiej stringliste zrobić? Ew. .replaceAll("/newline/", "\n"); ???

Zrób sobię chat utila bo chatcolorem się zamęczysz.

Przykład:

    public static String pluginColors(final String s) {
        return ChatColor.translateAlternateColorCodes('&', s.replace(">", "»").replace("<", "«"));
    }

Możesz też dorobić title przykład

p.sendTitle

lub użyj swojego api na title. (jeżeli masz)

 

Czepiam się do rzeczy które pomogą ci lepiej pisać pluginy. (Oraz wygodniej xd)

Typyyyy.... Nie wiem jak można się czepiać do nazwy klasy głownej 'Main'. Każdy może nazwać jak chce, i nie ma co tu się czepiać

 

Moja ocena 5/10

Odnośnik do komentarza
Udostępnij na innych stronach

1 godzinę temu, SKsteiner napisał:

Typyyyy.... Nie wiem jak można się czepiać do nazwy klasy głownej 'Main'. Każdy może nazwać jak chce, i nie ma co tu się czepiać

Zazwyczaj powinno sie ja nazywać albo Main albo np.ChatPlugin jezeli plugin dotyczy zarzadzania chatem itp. Itd.

Odnośnik do komentarza
Udostępnij na innych stronach

23 godziny temu, bgK1NG napisał:

Zazwyczaj powinno sie ja nazywać albo Main albo np.ChatPlugin jezeli plugin dotyczy zarzadzania chatem itp. Itd.

Tak. Ale każdy może nazwać to jak chce a takie 'hejty'/'czepianie' o nazwę klasy to nie jest normalne XD

Ktoś nazwie klasę karaluch i zostanie zhejtowany? Tak to ma wyglądać?

Odnośnik do komentarza
Udostępnij na innych stronach

Dnia 4.12.2017 o 23:11, bgK1NG napisał:

Zazwyczaj powinno sie ja nazywać albo Main albo np.ChatPlugin jezeli plugin dotyczy zarzadzania chatem itp. Itd.

Nie trzeba ich tak nazywać. Jak komu wygodniej tak sobie napisze, a plugin wykorzystam na moim serwerze :bezkappy: (gdzie grajo miliony ludziów :kappa:)

Edytowane przez PiTeKLive
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...