Skocz do zawartości

[Plugin] OpChat - DOWNLOAD JUŻ JEST!


Rekomendowane odpowiedzi

Witaj czytelniku,

piszę o to ten Innowacyjny i Nowy plugin na chat, aby zaspokoić potrzeby dzisiejszych serwerów, plugin jest w wersji beta,

 

 

Link: https://www.spigotmc.org/resources/90738/

 

O pluginie:

Plugin jest napisany w sposób dzięki któremu, nie wpływa na wydajnośc serwera, dzięki czemu jest warty użycia już na samym wstępie. OpChat oferuję funkcję i możliwośc które do tego czasu oferowały pluginy, podczas gdy, żaden plugin nie ma tego wszystkiego łącznie. (Skopiowałem tylko pomysł na funkcję a nie kod).

OpChat do działania wymaga Vault.

 

Funkcje:

 

Auto wiadomości:

dzięki którym gracze na serwerze dostaną informację tego, co tam wstawisz, opcja ta jest w 100% zmienialna ze strony serwera

autoMessages:
  interval: 100
  messages:
    - 'This is a message1'
    - 'This is a message2'
    - 'This is a message3'

 

Przydatne komendy:

Komenda /chat:

jest ona główną komendą sterującą plugin, dzięki niej możemy dostać informację na temat konfiguracji pluginu /chat help, możemy przeładować plugin /chat reload, ale także manipulować chatem, poprzez czysczenie, wyłączanie i włączanie go. Wszystkie wiadomości są zmienialne w configu!

Komenda /me:

jest to komenda która ma na celu podkreślenie wiadomości, może być także używana dla serwerów RP, w pełni zmienialna

Komenda /helpop:

ma na celu zwiększenie komunikacji gracza z administracją, dzięki niej gracz może napisać daną rzecz nie do każdego admina osobno przez prywatną wiadomość, lecz do całej administracji online, w pełni zmienialna

Komenda /broadcast:

jest to komenda która ma wiele funkcji, może służyć jako ogłaszator eventów, zapowiedzi ale także innych serwerowych spraw

 

Customowe wiadomości:

plugin oferuje zmianę wiadomości wchodzenia i wychodzenia na serwer poprzez grupy które są połączone z pluginem Vault.

Także oferuje zmianę wiadomości chatu dla grup, np:image.png

 

System prywatnych wiadomości:

pomysł wzięty z pluginu essentials, ma on na celu zwiększenie prywatności gracza posród innych graczy na serwerze.

Zawiera on funkcję takie jak:

/msg czyli pisanie do danej osoby

/reply czyli odpowiadanie ostatnio pisanej osobie

/ignore czyli blokowanie danego gracza aby nie mógł pisać do ciebie wiadomości

/spy podglądanie wiadomości

Wszystkie wiadomości są zmienialne.

 

Czat Administracyjny:

Często administracja zmuszona jest pisać na helpopie, co jest dość niekomfortowym sposobem, w celu uniknięcia tego dodałem do pluginu prosty chat administracyjny:

główną komendą tego chatu jest /adminchat, możemy tutaj podać swoją wiadomość (jeśli mamy permisje itd) albo zmienić tryb admin chatu(toggle), jest to funkcja która pomaga administratorom, którzy nie umieją pisać w 1 zdaniu, dzięki czemu wystarczy, że wpiszą tą komendę nie musi już więcej obawiać się o wpisywanie /adminchat (lub /ac) no chyba, że znowu wpisze tą komendę

 

Opóżnienie chatu:

funkcja ta ma na celu zapobiegania graczom możliwości spamowania wiadomościami, można ustawić wiadomości i wartości dot. blokowania w configu

delayChat:
  enabled: true
  inSeconds: 3
  delayChatWarn: '&8» &cYou can write every &f&l%secondsDelayChat% &cseconds!'

 

Systemy:

System anty powtarzania tej samej wiadomości (Parrot):

Blokuje on wiadomości które były poprzednio napisane, oznacza to, że gracz nie będzie mógł napisać w przeciągu określonego czasu takiej samej wiadomości

System blokowania dużych liter:

ten system dobrze zapobiega osobom które zapomniały wyłączyć CAPS LOCKA, no albo poprostu się zraegowały 😛

System Emoji:

Czy zastanawiałeś się jak ładny może być chat kiedy dodasz do niego emoji? teraz już tak może być

Więcej informacji będzie na mojej stronie wiki (githubie)

System Poprawnego zdania:

Wiele osób nie umie poprostu dodawać kropki na koniec zdania albo zaczynać zdania z dużej litery, to już nie problem!

 

(Wszystkie te opcje da się zmieniać, nawet je wyłączyć)

 

Party:

Głównym celem podczas dodawania tego systemu, było łączenie graczy w grupkach kilku osobowych a nie jak dotychczas, że wszyscy gracze komunikowali się przez prywatne wiadomości.

Party, jest w celu tylko i wyłącznie komunikacyjnym, nie dodaje ono możliwości teleportowania siebie, ani nic takiego.

Główną a zarazem jedyną komendą jest /party

posiada ona wiele subkomend takich jak:

- create - czyli tworzenie własnego party

- invite - pozwala na zaproszenie gracza do party

- leader - przekazuje komuś innemu (z party) lidera

- kick - wyrzuca gracza z party (jeśli jesteś liderem)

- members - pokazuje nazwę party, lidera i listę graczy

 image.png

- leave - opuszcza party

- toggle - zmienia tryb chatu dla siebie

- accept - akceptuje zaproszenie do party

 

Wszystkie informacje są zapisywane do pliku party.yml

image.png

 

 

 

Mam zamiar dodawać jeszcze funkcję i ulepszać istniejące!

 

Link:

github dla "prograjmerów"

Odnośnik do komentarza
https://skript.pl/temat/47508-plugin-opchat-download-ju%C5%BC-jest/
Udostępnij na innych stronach

Od razu zaznaczę, że to nie jest ofensywna wypowiedź, a po prostu moja opinia. (zaznaczam to, ponieważ jak na discordach próbuje podpowiadać ludziom to mnie wyzywają i mówią "tak, to pokaż coś swojego kozaku. Wiem lepiej niż ty" itp. XD

 

1. Staraj się robić zmienne zamiast co chwila robić np. event.getPlayer() (mówię tutaj np. o klasie ChatDelay)

2. Nie podoba mi się również nazewnictwo klas np. w package "listeners". Warto żeby listenery były nazywane w stylu "PlayerInteractListener", "InventoryClickListener" itp. itd. 

3. Zastanawia mnie też jak to się stało, że w package "listeners" jest klasa w której implementujesz Listener oraz CommandExecutor, podziel to sobie ładnie na klasy i rób to w odpowiednich package'ach. 

4. W package "commands" też dziwnie nazywasz klasy. Raz nazywasz klasę "Broadcast" a raz "MeCommand". Warto, żeby wszystkie wyglądały podobnie a najlepiej właśnie w stylu "BroadcastCommand", "HelpopCommand" itp. itd.

5. Dobrze by było jakbyś zrobił sobie package "config" lub "configs" i tam wrzucił klasę "MessagesFile" a potem nazwal ją np. "MessagesConfig"

 

To tak na pierwszy rzut oka, nie skupiałem bardzo uwagi na jakość kodu, ale jest czytelnie.

 

Pozdrawiam, w razie odezwij się do mnie na discordzie: PAWEU#1513

 

Odnośnik do komentarza
https://skript.pl/temat/47508-plugin-opchat-download-ju%C5%BC-jest/#findComment-297841
Udostępnij na innych stronach

Gość Usunięty#3468
public class PluginController implements Listener {
    public static Chat chat = null;


    public PluginController(OpChat opChat) {
        initalize();
    }

 

package me.opkarol.opchat.utils;

public class BukkitUtils {



}

to albo jest skopiowane i nieudolnie przepisane albo nie widziales co robisz

Edytowane przez Sewer
Odnośnik do komentarza
https://skript.pl/temat/47508-plugin-opchat-download-ju%C5%BC-jest/#findComment-297853
Udostępnij na innych stronach

26 minut temu, Sewer napisał:

public class PluginController implements Listener {
    public static Chat chat = null;


    public PluginController(OpChat opChat) {
        initalize();
    }

 


package me.opkarol.opchat.utils;

public class BukkitUtils {



}

to albo jest skopiowane i nieudolnie przepisane albo nie widziales co robisz

 

26 minut temu, Sewer napisał:

public class PluginController implements Listener {
    public static Chat chat = null;


    public PluginController(OpChat opChat) {
        initalize();
    }

 


package me.opkarol.opchat.utils;

public class BukkitUtils {



}

to albo jest skopiowane i nieudolnie przepisane albo nie widziales co robisz

1. Co tu jest niby złego

2. Miałem dodać do tej klasy metody które usprawniały by pewne funkcję, ale zapomniałem o nich bo zrobiłem inaczej

Odnośnik do komentarza
https://skript.pl/temat/47508-plugin-opchat-download-ju%C5%BC-jest/#findComment-297863
Udostępnij na innych stronach

10 godzin temu, opkarol napisał:

 

1. Co tu jest niby złego

2. Miałem dodać do tej klasy metody które usprawniały by pewne funkcję, ale zapomniałem o nich bo zrobiłem inaczej

Radzę abyś dobrze sprawdzał kod pluginów, które publikujesz oraz ogólnie wszystkie klasy po kolei sobie przescrollował od góry do dołu i od dołu do góry. Jeśli uznasz plugin za gotowy, a będziesz miał w niektórych klasach jakieś nieużywane funkcje lub po prostu puste to po prostu je usuń. Niestety, ale teraz to wygląda w ten sposób, że nawet jeżeli zostawiasz jakieś puste funkcje lub nieużywane to jest duże prawdopodobieństwo, że zostaniesz przez kogoś oskarżony o "nieudolne kopiowanie kodu" itp. Rób to po prostu dla siebie, żeby nikt Cię nie obgadywał na discordach i nie mówił rzeczy w stylu "ThisKarolGajda to jakiś pseudziak, kopiuje kod nieudolnie, zostawia puste funkcje jakieś.. przecież to od razu widać, że coś tam namieszał".  Dodatkowo zmniejszysz wagę pluginu.

Jeśli szykujesz już jakiś kolejny projekt i planujesz go opublikować to odezwij się do mnie proszę na discordzie i tam może będę potrafił coś doradzić i wyłapie jakieś niedociągnięcia, żeby potem nie było właśnie takich sytuacji jak tutaj.

Discord: PAWEU#1513

 

Pozdrawiam :)

Odnośnik do komentarza
https://skript.pl/temat/47508-plugin-opchat-download-ju%C5%BC-jest/#findComment-297996
Udostępnij na innych stronach

3 godziny temu, paweU napisał:

Radzę abyś dobrze sprawdzał kod pluginów, które publikujesz oraz ogólnie wszystkie klasy po kolei sobie przescrollował od góry do dołu i od dołu do góry. Jeśli uznasz plugin za gotowy, a będziesz miał w niektórych klasach jakieś nieużywane funkcje lub po prostu puste to po prostu je usuń. Niestety, ale teraz to wygląda w ten sposób, że nawet jeżeli zostawiasz jakieś puste funkcje lub nieużywane to jest duże prawdopodobieństwo, że zostaniesz przez kogoś oskarżony o "nieudolne kopiowanie kodu" itp. Rób to po prostu dla siebie, żeby nikt Cię nie obgadywał na discordach i nie mówił rzeczy w stylu "ThisKarolGajda to jakiś pseudziak, kopiuje kod nieudolnie, zostawia puste funkcje jakieś.. przecież to od razu widać, że coś tam namieszał".  Dodatkowo zmniejszysz wagę pluginu.

Jeśli szykujesz już jakiś kolejny projekt i planujesz go opublikować to odezwij się do mnie proszę na discordzie i tam może będę potrafił coś doradzić i wyłapie jakieś niedociągnięcia, żeby potem nie było właśnie takich sytuacji jak tutaj.

Discord: PAWEU#1513

 

Pozdrawiam :)

Znaczy ja ogólnie mam osoby gdzieś a takie to szczególnie :P

 

Odnośnik do komentarza
https://skript.pl/temat/47508-plugin-opchat-download-ju%C5%BC-jest/#findComment-298064
Udostępnij na innych stronach

Krytyka jest bardzo potrzebna w takich projektach. Tak naprawdę to dzięki niej ktoś może się wiele nauczyć.

        if (sender != null) {

to nie będzie nullem i tak czy siak, co najwyżej sender będzie albo graczem albo konsolą

for (int i = 0; i < 101; ++i) {
                            for (Player p2 : Bukkit.getOnlinePlayers()) {
                                p2.sendMessage(" ");
                            }
                        }

100x pobierasz każdego gracza po kolei i wysyłasz mu wiadomośc, zamiast stworzyć sobie w konstruktorze klasy jakiś StringBuilder i tylko go wysyłać

#przykład

private final StringBuilder emptyMessage = new StringBuilder();

public JakasKlasa() {
	for (int i = 0; i < 101; i++) {
		emptyMessage.append(" \n");
    }
  
#gdzieś przy czyszczeniu
  for (Player player : Bukkit.getOnlinePlayers()) {
	player.sendMessage(emptyMessage.toString());
  }
                            
}

 

WTF

public Helpop(PluginController pluginController){}

Tu znowu

public MeCommand(PluginController plugin) {

 

Nazwy metod zaczynają się od małej litery:c

private int SecondsDelay(){

 

W ten sposób porównuje się enumy a nie klasy:<

if(sender!=invited) {

 

XDD

package me.opkarol.opchat.utils;

public class BukkitUtils {



}

 

Dlaczego integer jest w formie Obiektu?

public static String argBuilder(String[] args, Integer removeArgumentsNumber){

 

Po co te event priority o.0?

@EventHandler(priority = EventPriority.LOW)

 

MemoryLeak halo

public static HashMap<Player, Player> lastPlayer = new HashMap<Player, Player>();

 

 

Jest wiele więcej błędów ale nie chce mi się już wymieniać.

1. Za dużo metod statycznych, brak programowania obiektowego

2. Dziwne nazwy klas/dziwne metody

3. Nazewnictwo jednej klasy z małej litery

4. Pobieranie żywcem z configu, tragedia, tak się nie robi. Zrób sobie jakaś klase Config, ConfigLoader, Settings co ci tam pasuje i przy starcie serwera zapisuj wszystkie stringi a potem je tylko wczytuj. Zobacz chociażby na kod paweu: https://github.com/paweUdev/paweU-Safes/blob/master/src/main/java/pl/paweu/safes/config/Settings.java

Odnośnik do komentarza
https://skript.pl/temat/47508-plugin-opchat-download-ju%C5%BC-jest/#findComment-298272
Udostępnij na innych stronach

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ą.

Nieaktywny
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

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

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