Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Plugin] AutoPremium - Autologowanie premium! No depency


Rekomendowane odpowiedzi

Opublikowano

||


||


||


||


||


||


||


||


||


||


||


||


V


 


autopremium_baner.png


AutoPremium to plugin, dzięki któremu bez problemu możesz bez problemu sprawdzić czy gracz ma konto premium, czy nie :)


 


Plugin jest w bardzo głębokiej fazie rozwojowej. Są to dopiero początki, więc na razie plugin jest bardzo ubogi w funkcje :)


Plugin prawdopodobnie będzie działał na zasadzie modułów.


autopremium_moduly.png


Sama podstawa pluginu będzie zawierał API do napisania modułu. Będzie on w stanie tylko sprawdzić czy gracz jest premium, oraz zabezpieczenie nicków. Resztą zajmą się moduły. Będą to takie "pluginy do pluginu". Pierwszym oficjalnym modułem, który powstanie będzie oczywiście logowanie.


 


autopremium_wsparcie.png


 


Jestem w trakcie pisania odpowiednich modułów. Pierwsze pojawią się do końca tygodnia :)


autopremium_api.png


Na razie plugin posiada bardzo bardzo podstawowe API.


 


Eventy:


AuthorizedPlayerJoinEvent - na serwer dołączył gracz zweryfikowany przez plugin


 


Metody:


AutoPremiumAPI - główna klasa API. Jej instancję pobieramy przez metode getAPI(); A z niej możemy pobierać Userów (z tego obiektu możemy sprawdzić czy gracz ma premium) oraz instancję klasy MySQL, w której mamy metody do zarządzania bazą danych. Dane do logowania są podawane w configu AutoPremium.


autopremium_cache.png


Cache to system pozwalający na zwiększenie optymalizacji pluginu. Działa on na zasadzie zapamiętywania nicków graczy, którzy odwiedzili już serwer. Sprawia on na razie jeden problem (gdy gracz kupi premium, po pierwszym odwiedzeniu serwera cache dalej będzie myślał, że gracz nie ma premium), aczkolwiek mam już kilka pomysłów na rozwiązanie tego problemu :)


Tak więc na chwilę obecną nie polecam używać tego trybu. Jest on domyślnie wyłączony.


autopremium_bg.png


Do BungeeCorda wymagana jest dedykowana wersja pluginu, która będzie weryfikowała graczy na trochę innej zasadzie. Pojawi się ona DO KOŃCA TYGODNIA


autopremium_wymagania.png


1. Plugin TYMCZASOWO wymaga ProtocolLiba!


https://www.spigotmc.org/resources/protocollib.1997/


 


2. Serwer MUSI być w trybie: online-mode: false


autopremium_download.png


Download


GitHub


Skan


autopremium_todo.png


Jak już pisałem lista ta jest długa i szeroka :)


Oto kilka rzeczy do zrobienia


 


- API


- Wsparcie popularnych pluginów do logowania


- Większa konfiguracja


- Testy trybu "cache"


- Opis configu


- Upload na SpigotMC



sygnatura_mpc.png

 

Gość dominik148
Opublikowano

Ciekawy projekt. :)

Plugin na Bungee/Bukkit'a?

 

DL nie działa.

Specjalista
Opublikowano

Ja to zawsze widziałem, że ty dobry chłopak jestęs tylko trochę leniwy %5E%5E.png

 

 

 

W przyszłości pojawi się zapis kilku rzeczy (jakich dowiecie się wkrótce ;)) w MySQLu.

 

 

 

Zamiast MySQL nie lepiej będzię użyć SQLite?

Ja to zawsze widziałem, że ty dobry chłopak jestęs tylko trochę leniwy %5E%5E.png

Opublikowano

DL poprawię jutro, nie ma mnie już n PC.

 

Plugin na Bukkita, BG może kiedyś... :)


sygnatura_mpc.png

 

Opublikowano

DL poprawię jutro, nie ma mnie już n PC.

 

Plugin na Bukkita, BG może kiedyś... :)

Ah, tak właściwe już się przyczepię:

 

To co na PW się pytałeś, nie masz po co się dogadywać z autorami tych pluginów, ty to musisz napisać i tyle.

 

Nie rób 2 osobnych eventów, bo to nie ma sensu, lepiej jeden z prostą metodą na pobranie stanu gracza jako np wartości enum, PAID, CRACKED czy coś.

Bo jak ktoś chce robić osobne rzeczy dla tych 2 stanów to musi i tak powielać często początkowy kod, i na co to.

 

No i tylko OpenSource jak chcesz mieć jakieś szanse z istniejącym bez żadnych szczególnych atutów, ale i tak nie widzę sensu tego ;/

1438614356923701010629.png

 

Opublikowano

@GotoFinal

1. Dzięki za info, rzeczywiście ma to większy sens z tymi eventami. W sumie w tym evencie i tak możesz obiekt User gdzie mamy metodę z Enumem oraz booleanem

 

2. Patrzyłem już API pluginów z logowaniem i na dniach pojawią się moduły

 

3. Kod dzisiaj wleci na Gita :)

 

DL będzie po południu, ponieważ wgrałem DL na zły serwer i muszę go od nowa wrzucić


sygnatura_mpc.png

 

Opublikowano

Plugin zapowiada się fajnie, prezentacja całkiem fajna, jak będzie wsparcie AuthMe, LogIt, itp. to będzie super!


Życzę samych sukcesów!


Opublikowano

Już jakiś czas temu zacząłem podobny projekt (https://github.com/bartzzdev/LightLogin), aczkolwiek nie mam czasu go dalej rozwijać.

No i niepotrzebnie robisz dwa eventy - lepiej zrobić jakiś enum dot. gracza, np. PREMIUM, CRACKED, PREMIUM_NICKNAME, coś w tym stylu, a w evencie event.getAccountStatus().

Poza tym MySQL chyba się średnio nadaje do autologowania premium.

 

Niemniej jednak powodzenia w projekcie!

Opublikowano

MySQL np. do modułu z logowaniem :)

Cache jest we flacie, bo chyba nie ma sensu tego do MySQLa ładować.

 

Za 2h będzie DL


sygnatura_mpc.png

 

Opublikowano

MySQL np. do modułu z logowaniem :)

Cache jest we flacie, bo chyba nie ma sensu tego do MySQLa ładować.

 

Za 2h będzie DL

A co jak przed tobą wrzuce moje auto logowanie? xD

Opublikowano

DL GOTOWY!

Zapraszam do pobierania :)
Za chwilę pojawi się kod!

 

Dzisiaj pojawi się moduł do logowania!

 

@mate1337

Nie wrzucisz bo nie będziesz miał skąd kodu ukraść ( ͡° ͜ʖ ͡°)


sygnatura_mpc.png

 

Opublikowano

 

DL GOTOWY!

Zapraszam do pobierania :)

Za chwilę pojawi się kod!

 

Dzisiaj pojawi się moduł do logowania!

 

@mate1337

Nie wrzucisz bo nie będziesz miał skąd kodu ukraść ( ͡° ͜ʖ ͡°)

 

nie nie, to ty nie wrzucisz bo po prostu ja swojego jeszcze nie udostępniłem (stąd brak kodu na githubie xdd)

Opublikowano

plugin wyrzuca error

 

[15:52:21] [Server thread/INFO]: [AutoPremium] Enabling AutoPremium vALPHA 0.01
[15:52:21] [Server thread/ERROR]: Error occurred while enabling AutoPremium vALPHA 0.01 (Is it up to date?)
java.lang.NoClassDefFoundError: net/minecraft/util/io/netty/channel/ChannelHandler
	at me.mikigal.autopremium.Main.onEnable(Main.java:26) ~[?:?]
	at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[patched_1.11.2.jar:git-Paper-1071]
	at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) [patched_1.11.2.jar:git-Paper-1071]
	at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:407) [patched_1.11.2.jar:git-Paper-1071]
	at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:378) [patched_1.11.2.jar:git-Paper-1071]
	at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:328) [patched_1.11.2.jar:git-Paper-1071]
	at net.minecraft.server.v1_11_R1.MinecraftServer.t(MinecraftServer.java:437) [patched_1.11.2.jar:git-Paper-1071]
	at net.minecraft.server.v1_11_R1.MinecraftServer.l(MinecraftServer.java:398) [patched_1.11.2.jar:git-Paper-1071]
	at net.minecraft.server.v1_11_R1.MinecraftServer.a(MinecraftServer.java:336) [patched_1.11.2.jar:git-Paper-1071]
	at net.minecraft.server.v1_11_R1.DedicatedServer.init(DedicatedServer.java:276) [patched_1.11.2.jar:git-Paper-1071]
	at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:603) [patched_1.11.2.jar:git-Paper-1071]
	at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
Caused by: java.lang.ClassNotFoundException: net.minecraft.util.io.netty.channel.ChannelHandler
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:92) ~[patched_1.11.2.jar:git-Paper-1071]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:87) ~[patched_1.11.2.jar:git-Paper-1071]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_121]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_121]
	... 12 more
[15:52:21] [Server thread/INFO]: [AutoPremium] Disabling AutoPremium vALPHA 0.01

 

 

 

proszę o fix

opencraft.pl << { na takim jeszcze nie grałeś }

TDepLbR.gif

Opublikowano

To teraz pomarudzę, dawno nie marudziłem na żaden plugin tutaj, ale jak sam mnie informowałeś na PW to... ;/

 

1. Podział na pakiety masz bez sensu, to się dzieli po logice a nie typie uj wie czego.

 

2. 

  @EventHandler
  public void onJoin(PlayerJoinEvent evt)
  {
    User u = UserManager.getUser(evt.getPlayer().getName());
    if (u.isPremium())
    {
      Bukkit.getServer().getPluginManager().callEvent(new AuthorizedPlayerJoinEvent(evt.getPlayer(), u));
      return;
    }
    Bukkit.getServer().getPluginManager().callEvent(new AuthorizedPlayerJoinEvent(evt.getPlayer(), u));
  }
zapomniałeś poprawić po zmienieniu na jeden wspólny event

 

3. W evencie który jest częścią API jednocześnie udostępniasz obiekty 

  private User user;
  private final AccountType accountType;
które częścią API nie są, tym bardziej że ludzie niezbyt potrzebują tam metodę setUUID, czy to toKick które i tak robi coś innego niż jest nazwane tak właściwe, bo nie zawiera w sobie informacji dlaczego gracz jest wyrzucany.

To są rzeczy które nie powinny być tam dostępne.

 

4. Po co ci w UserManager metody do zwracania mapek?

 

5. masz tam też System.out.println(toKick);, zapomniałeś wywalić.

 

6. Skoro masz już utilsy od refleksji z TinyProtocol, to po co te własne zabawy w FieldUtils? Jak brakuje setowania finalnego pola a jest potrzebne, to dodaj do tamtych.

 

7. 

  public static URL toUrl(String s)
  {
    try
    {
      return new URL(s);
    }
    catch (MalformedURLException localMalformedURLException) {}
    return null;
  }
za to powinni kastrować, takie pomijanie exception to może mieć sens kiedy spodziewasz się tego i wiesz że wtedy chcesz użyć innej wartości, np NumberFormatException w parseInt może dla mnie oznaczać ze to jednak imię a nie ID.

Ale jak wyjątek nie ma prawa się wydarzyć bo ten URL jest sprawdzony itd to robisz w środku np throw new InternalError(teExceptionZCatch) lub RuntimeException, czy nawet AssertionError

No i taka metoda nie powinna być dostępna publicznie, od tego jest właśnie sensowne dzielenie na pakiety i package scope.

 

8. 

  public static Boolean isInt(String s)
  {
    try
    {
      Integer localInteger = Integer.valueOf(s);
    }
    catch (NumberFormatException ex)
    {
      return Boolean.valueOf(false);
    }
    return Boolean.valueOf(true);
  }
no i po co? sprawdzasz czy int, a potem jak jest intem to pewnie wykonujesz parseInt jeszcze raz? Zrób to bezpośrednio tam, lub zrób że metoda zwraca Integer i null jak jest źle (lub jak wolisz Optional<Integer>), lub zrób to funkcyjnie.

 

9. 

new PacketEvent(this); 
Brzydkie, bo wygląda jak bład w kodzie dla czytającego, pominięty wynik konstruktora.

PacketEvent.start(this);
i już czytelniej.

 

10. Zmieniasz online mode dla całego serwera, a sprawdzanie jest async, co oznacza że przy dużej ilości graczy się zbuguje. 

 

11. Nie wspierasz nowszych wersji mc, tylko 1.7, bo w nowszych GameProfile jest w innym pakiecie, a to tego po drodze zmieniali konstuktor jeszcze gdzieś. (nie wiem czy używasz)

Tak samo z pakietami netty.

 

PS: dlaczego tyle osób używa tych idiotycznych configów które też są zrypane w każdym calu o.O

1438614356923701010629.png

 

Opublikowano

@GotoFinal

Dzięki za sugestie :)

Te Utilsy są przeklejone z innego mojego pluginu i zapomniałem usunąć kilka nie potrzebnych metod.

Co do 1.7 poprawię.

 

================================================

 

ALPHA 0.02

 

- Plugin tymczasowo wymaga ProtocolLiba

- Optymalizacja

- Poprawa buga z asynchronicznym odbieraniem pakietów


sygnatura_mpc.png

 

Opublikowano

@macjoker007

Jakie masz ustawienia:

 

1. online-mode na bungee

2. online-mode na spigocie

3. Masz premium czy nie?

 

Pluginu nie testowałem na BG, nie gwarantuję, że działa (jeśli nie, niedługo naprawię).

 

Za chwilę pojawi się moduł logowania!


sygnatura_mpc.png

 

Opublikowano

Nie chce hejcic ale istnieje plugin (stabilny aktualny ale juz nie aktualizowany) za 50zł na spigotmc.com. Jest o wiele stabilniejszy ot twojego. Wiem wiem ze jest w wersji beta . Tworca tego plg jest TIReX

CPU i5 6600k 4,1GHZ | RAM HyperX SAVAGE 16GB RAMGPU ASUS GTX 1070 ROG STRIX 8GOC |

SSD1 Samsung EVO 850 120GB| SSD2 ADATA SP600 120GB |HDD Toshiba 1TB

Reklama serwera minigames w starym stylu Kliknij tutaj

 

Opublikowano

@Mine1998

Z tego co wiem wymaga on BG :)

 

@macjoker007

Wiem, co prawdopodobnie powoduje ten problem.

Zaraz zrobię testy i się przekonam na 100%

 

#edit

Pod BG muszę napisać osobną wersję, trochę inaczej musi działać weryfikacja graczy. Zrobię to w ciągu kilku najbliższych dni (na pewno do następnego tygodnia)

 

===========================================================

Moduł logowania ALPHA 0.01

 

Jak zainstalować?
1. Pobieramy nową wersję AutoPremium oraz konfigurujemy bazę danych

2. Instalujemy AutoPremium-LoginModule

3. Gotowe! :)


sygnatura_mpc.png

 

Opublikowano

Meh. To znaczy... nie wiem jak zacząć. 

1. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/api/AutoPremiumAPI.java

nie widzę sensu tej klasy, oświeć mnie.

 

2. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/config/Config.java

boli... ja cierpię... to można skrócić do parunastu linijek, i jeszcze lepiej zrobić

 

3. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/enums/AccountType.java#L9

return premium ? PREMIUM : CRACKED;

i życie staje się proste. 

 

4. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/enums/HasPaidResponse.java

to samo co w 3.

 

5. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/mysql/MySQL.java

czemu te mysql takie gołe i wesołe, ja bym tu jakiegoś hikaricp walnął, albo coś z wyższej półki. 

 

i myślę że asynctaski z bukkita są tu bardziej wskazane, ale nie wypowiadam się na ten temat bo szczerze nie wiem. 

 

6. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/objects/UserManager.java

x

 

7. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/utils/FieldUtils.java

weź tu jakichś methodhandles użyj, fajne i wydajne.

 

8. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/utils/LoginUtils.java

nie widziałem tego...

 

9. https://github.com/mikigal/AutoPremium/blob/master/src/me/mikigal/autopremium/utils/Utils.java#L16

a to przypadkiem nie działało tylko na wersjach do 1.7? (może się myle, ostatni raz jak testowałem to mi nie działało :c)

 

No miernie ci powiem, szczególnie jak zobaczyłem to co masz w 8 to tak trochę lipnie wydaje mi się. 

Zostaje z FastLoginem, świetny kod, łatwa obsługa, wydajność. No i trochę lepsza zasada działania (podmiany całego systemu autoryzacji online-mode) 

 

PS: Co jak ktoś wejdzie z nickiem premium, nie mając premki? Puff, serwer będzie uważał go za premkę!

 

Póki co bezużyteczne i niebezpieczne w użyciu, a już na pewno nie stabilne. 

Niemniej jednak good luck. 

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

I popraw te repo na githubie... używaj mavena jak człowiek i dodaj gitignore by pozbyć się wszystkich plików od IDE, czyli .iml i .idea

 

No i tego zmieniania online mode dla calego serwera dalej nie poprawiłeś, a to psuje.

 

Możesz też potem dalej wspierać ProtocolLib jeśli jest na serwerze, a tak to używać TinyProtocol.

 

https://github.com/mikigal/AutoPremium/commit/ba204c1e99cbbe3954213c404368507dd837a8e0#diff-23c07bead409b34704a750bfb5bbc42aR27

ugh, zrób osobną mapkę czy coś, lub jedną ale jako klucz daj Object, a już w UserManager będziesz mieć 2 metody dla uuid i nicku.

 

https://github.com/mikigal/AutoPremium/commit/ba204c1e99cbbe3954213c404368507dd837a8e0#diff-7abcf75afae719d3fd12a87bc0148ff4R32 nah

https://github.com/mikigal/AutoPremium/commit/ba204c1e99cbbe3954213c404368507dd837a8e0#diff-ccee0c4bad331f0c10564518f3cb8978R77 nah

 

https://github.com/mikigal/AutoPremium/commit/ba204c1e99cbbe3954213c404368507dd837a8e0#diff-ccee0c4bad331f0c10564518f3cb8978R60

Czemu nie taskiem? i czemu set jest domyślnie async skoro get nie jest?

No i dlaczego pomimo że używasz PreparedStatement to nie dla wartości kolumny nowej?

 

 

No i nie ma AutoPremium-LoginModule na githubie

 

 

 

@AdamGrzegorz

1. Zostawił na potem, bo na razie jeszcze nic nie robi.

 

2. To nie jego kod tylko jakieś g****o z bukkit.pl

 

3. żadna różnica, co kto woli, tylko ten brak spacji przed klamerką :<

 

5. yup.

 

6. Tutaj to nawet wskazane, bo nie masz jeszcze poprawnego UUID, jest dopiero po autoryzacji, a dane są ważne dla danej osoby na serwerze o danym nicku, nie dla danego konta jak w innych pluginach. Bo to że moje konto jest premium to jest pewne, ale to czy gracz z moim nickiem jest premium już nie.

 

7. Kwestia przyzwyczajnie, nie są zbyt wygodne jednak, kodu często więcej, a różnica w wydajności jest prawie żadna chyba... że robisz to jako pole w klasie static final MethodHandle, wtedy jest szybsze.

No i trzeba łapać throwable przy użyciu.

Ale w klasie Reflections którą wyjebał miał fajne wygodne interfejsy.

 

9. WUT? musi dzialać.

 

PS: Co jak ktoś wejdzie z nickiem premium, nie mając premki? Puff, serwer będzie uważał go za premkę!
no... tutaj ma dobrze bo zmienia online-mode, ale problem jest taki że dla calego serwera, więc jak trafi na zły moment to zmieni komuś jeszcze raz na coś innego.

1438614356923701010629.png

 

Opublikowano

@mikigal Życze powodzenia a mozesz napisac jakiego hashowania haseł beziesz uzywał? Tylko prosze nie MD5 i SHA1

CPU i5 6600k 4,1GHZ | RAM HyperX SAVAGE 16GB RAMGPU ASUS GTX 1070 ROG STRIX 8GOC |

SSD1 Samsung EVO 850 120GB| SSD2 ADATA SP600 120GB |HDD Toshiba 1TB

Reklama serwera minigames w starym stylu Kliknij tutaj

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...