Automatyczne logowanie premium na serwer Minecraft

Tagi: #<Tag:0x00007f2ada715000>

Robiąc porządki na swoim komputerze, znalazłem moją starą wtyczkę służącą do weryfikowania statusu kont graczy w grze Minecraft. Odświeżyłem, przetestowałem i działa, tak więc postanowiłem, iż ją wystawię :slight_smile: Działa ona na serwerze BungeeCord od wersji 1.8 (choć wskazane nowsze wersje), ponadto może być zintegrowana ze Spigotem, Spongem, czy Cauldronem (za dodatkową opłatą dopiszę rozszerzenie, w cenie jest tylko bardzo proste API).

Konfiguracja

Całość jest prosta i przyjazna:

balancing:
  enabled: false
  premium:
    - "premium-1"
    - "premium-2"
    - "premium-3"
  cracked:
    - "cracked-1"
    - "cracked-2"
    - "cracked-3"

messaging: false
cracked-uuid: false
forward-skin: true

messages:
  error: "&cNastapil blad, zglos sie do administracji!"

opisując:

  • balancing - w tej sekcji mamy możliwość włączenia load balancing’u dla naszego serwera (enabled: false), stosownie dla graczy niezautoryzowanych (cracked) i zautoryzowanych (premium);
  • messaging - zdefiniowanie, czy kanał do informowania o graczach premium ma być włączony (patrz: omówienie API);
  • cracked-uuid - czy niezależnie od stanu autoryzacji, gracze mają mieć UUID jak gracze niezautoryzowani (przydatne dla zachowania spójności danych w bazach danych, w przypadku gdyby wtyczka była dogrywana do działającego już serwera)
  • forward-skin - czy ma przenosić własną skórkę dla graczy premium

API

Wtyczka sama w sobie ma na celu udostępnienie bardzo prostego API, pod które można podpiąć każdy plugin, dla którego działania niezbędne są zachodzące procesy w moim rozszerzeniu (tj. weryfikacja autentyczności kont graczy). Informacje są wysyłane tylko dla graczy zweryfikowanych, więc jeśli informacja nie dotarła, oznacza to, że:

  • dane rozszerzenie musi założyć, iż gracz jest niezweryfikowany
  • jeżeli gracz był wcześniej zautoryzowany jako prawidłowy, to może oznaczać, że API Mojangu (producenta gry) jest obecnie niedziałające

W jednym i w drugim przypadku zachęcam, by odpowiednio te wyjątki przetwarzać. Cała informacja jest wysyłana na poziomie łączenia ze serwerem, przed przetwarzaniem pierwszych wydarzeń, stosownych dla używanego oprogramowania serwerowego.

BungeeCord

Dla BungeeCord wystawione są tylko dwie klasy: HolterEvent i PremiumVerificationEvent:

package pl.kacperduras.holter.api;

import java.util.UUID;
import net.md_5.bungee.api.plugin.Event;

public class HolterEvent extends Event {

  private final String username;
  private final UUID uuid;

  public HolterEvent(String username, UUID uuid) {
    this.username = username;
    this.uuid = uuid;
  }

  public String getUsername() {
    return username;
  }

  public UUID getUUID() {
    return uuid;
  }

}
package pl.kacperduras.holter.api;

import java.util.UUID;

public class PremiumVerificationEvent extends HolterEvent {

  public PremiumVerificationEvent(String username, UUID uuid) {
    super(username, uuid);
  }

}

Starczy stworzyć zwykłego Listenera, z nasłuchiwaniem wydarzenia PremiumVerificationEvent i przetwarzać dane zgodnie z logiką poszczególnej aplikacji. Przykład:

import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import pl.kacperduras.holter.api.PremiumVerificationEvent;

public class HolterExampleListener implements Listener {
    
  @EventHandler
  public void premiumAuthorizationEvent(PremiumVerificationEvent event) {
    // do something...
  }
    
}

Pozostałe silniki

Z tej opcji zalecam korzystać przy serwerach o mniejszej skali, do przetwarzania większej ilości danych zalecam stosowanie integracji BungeeCord

Dla nich udostępniony jest mechanizm Plugin Messaging Channel, którego dokładniejszy opis możesz znaleźć tutaj. Wystarczy w konfiguracji włączyć opcję messaging i nasłuchiwać kanału o nazwie Holter. Dane będą wysyłane w formacie:

<nick użytkownika>:<uuid użytkownika>

przykład:

_an0:6477d13c-835e-4701-ae79-238324166a85

Dodatkowe informacje

Wtyczka przetwarza dane zgodnie ze specyfikacją udostępnioną przez Mojang, dzięki czemu nie ma możliwości zablokowania serwera przez nadmierny limit zapytań. Z powodzeniem sprawdzi się na mniejszą, jak i większą skalę.

Cena

30 zł, mile widziany przelew bankowy lub PayPal. W przypadku płatności typu PaySafeCard doliczam opłatę 20zł za wypłatę środków od operatora. Inne formy płatności dostępne po wcześniejszym zapytaniu.

Zachęcam do zakupu :slight_smile:

1lajk

Podbijam. :slight_smile:

Odświeżam.

Odświeżam.

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.