[DL] Helpop z powiadomieniami na discordzie

tirex | 2020-06-04 21:33:29 UTC | #1

Wstęp

Mam do zaprezentowania plugin do minecrafta, który dodaje do gry komendę helpop.
Plugin testowałem na wersji javy 8 i wersji silnika 1.12.2.

Plugin wymaga utworzenia na serwerze discord webhooka (kiedyś dam link jak to zrobić).

Zasada działania

Gracz po wpisaniu komendy helpop + wiadomość wysyła wiadomość do administracji + bot na discordzie wysyła wiadomość na kanał, na którym jest skonfigurowany webhook.

Pobieranie

https://mega.nz/#!yxlgCbZI!ZvgxxOIipIL7VLz3CIjMV0gOLBHBbYgsB8sIs28EgTY

Uprawnienia

helpop.admin - uprawnienie potrzebne do tego, aby odbierać wiadomości w grze.
helpop.toggle - uprawnienie potrzebne do tego, aby móc włączać/wyłączać helpopa.
helpop.user - uprawnienie potrzebne do tego, aby móc wysyłać wiadomości na helpop.

Konfiguracja

Nic skomplikowanego nie będę opisywać.

helpop:
  enabled: true
webhooks:
  helpop:
  - url: https://discordapp.com/api/webhooks/{webhook.id}/{webhook.token}
    parameters:
      embeds:
      - color: '15158332'
        title: '{sender_name} napisał'
        description: '{message}'
  - url: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
    parameters:
      color: '#e74c3c'
      fields:
      - title: '{sender_name} napisał'
        value: '{message}'
        short: false
      fallback: '{sender_name} napisał {message}'
messages:
  commands:
    helpop:
      correct_use: '&cPoprawne uzycie: &e/helpop <wiadomosc>'
      toggle:
        enable: '&cHelpop został włączony!'
        disable: '&cHelpop został wyłączony!'
      disabled: '&cHelpop jest aktualnie wyłączony!'
      message_style:
        receiver: '&4[HelpOp] &c{sender_name}&r> {message}'
        sender: '&c{sender_name}&r> {message}'

Zdjęcia

Wygląd wiadomosci na discordzie (nazwe bota możemy samemu dostosować podczas tworzenia webhooka).
image|245x118

Wygląd wiadomości w grze (taka sama informacja dla gracza jak i dla administratora).
image|259x19

Kod źródłowy

https://github.com/NoneTirex/minecraft-helpop


Dziondzio | 2018-04-14 07:53:57 UTC | #2

Fajne, tylko szkoda że na Discorda


tirex | 2018-04-14 08:02:41 UTC | #3

Czemu szkoda?


Dziondzio | 2018-04-14 08:08:03 UTC | #4

Dlatego że mało(10) serwerów korzysta z Discorda a z np teamspeak więc(40), do projektu nic nie mam jest bardzo fajny 😉 ps dodaj że można sam zmieniać wygląd wiadomości i jeszcze tak żeby było helpop off i on w razie W


happi | 2018-04-14 08:12:28 UTC | #5

[quote=”Dziondzio, post:4, topic:6295”]
Dlatego że mało(10) serwerów korzysta z Discorda a z np teamspeak więc(40)
[/quote]

Skąd te statystyki?


Dziondzio | 2018-04-14 08:18:37 UTC | #6

[quote=”happi, post:5, topic:6295”]
Skąd te statystyki?
[/quote]

Bo gram na dużo serwerach, więc napisałem tak na oko.


Patbox | 2018-04-14 09:45:00 UTC | #7

Wytestuje :wink:
Tylko polecam zmienić Zippyshare na coś innego.
Myślałeś nad dodaniem tego pluginu na spigotmc.org albo dev.bukkit.org?


tirex | 2018-04-14 10:12:58 UTC | #8

Nie myślałem, ale mogę to zmienić.
Aktualnie plugin jest w wersji alpha, ale jak zaktualizuje go, aby można było go spokojnie używać to myślę, że go tam dodam.


anon10657637 | 2018-04-14 10:50:45 UTC | #9

[quote=”Dziondzio, post:6, topic:6295”]
Bo gram na dużo serwerach, więc napisałem tak na oko.
[/quote]

Ale nie na wszystkich, więc Twoje “statystyki” nie są wiarygodne.

@tirex Chyba coś za dużo w kodzie zostawiłeś:

public class TestDiscordHook
{
  public static void main(String[] args)
  {
    HttpBuilder httpBuilder = HttpBuilder.create();
    HttpConnection httpConnection = httpBuilder.buildConnection("https://discordapp.com/api/webhooks/434473344490930218/kca0_Ah_A86_8hptRrm7pabYRqP72BxqCtjV_P2UUPAzHbRG02qGRE8-rAFhp_YQ_Zk8");
    httpConnection.setHeader("User-Agent", "Helpop Minecraft (https://tirex.edu.pl, v0.1)");

    httpConnection.setMethod(HttpMethod.POST);
    httpConnection.setContentType(HttpContentType.JSON);

    JsonObject embed = new JsonObject();
    embed.addProperty("color", "3447003");
    embed.addProperty("description", "dasdsad");
    embed.addProperty("title", "dsds");

    JsonArray embeds = new JsonArray();
    embeds.add(embed);
    httpConnection.setParameter("embeds", embeds);
    try
    {
      System.out.println((String)httpConnection.execute(new StringResolver()));
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
  }
}

Bubi | 2018-04-14 11:29:10 UTC | #10

Bardzo fajny pomysł :) +


Patbox | 2018-04-14 11:37:32 UTC | #11

image|309x130
Działa i to najważniejsze.
Tu link do główki: https://cravatar.eu/helmhead/Robotex/128.png


bvcz | 2018-04-14 12:33:27 UTC | #12

Config nie generuje się automatycznie, jest jedynie pusty plik config.yml. (Paper version git-Paper-1391 (MC: 1.12.2))

Dodałbym możliwość edycji wiadomości, zmianę koloru embeda na Discordzie oraz cooldown na użycie komendy


tirex | 2018-04-14 13:03:21 UTC | #13

Dziękuje za wszystkie wskazówki:

[quote=”Dziondzio, post:4, topic:6295”]
Dlatego że mało(10) serwerów korzysta z Discorda a z np teamspeak więc(40), do projektu nic nie mam jest bardzo fajny :wink: ps dodaj że można sam zmieniać wygląd wiadomości i jeszcze tak żeby było helpop off i on w razie W
[/quote]

[quote=”bvcz, post:12, topic:6295”]
Dodałbym możliwość edycji wiadomości, zmianę koloru embeda na Discordzie oraz cooldown na użycie komendy
[/quote]

Postaram się dodać to jutro lub w poniedziałek (dzisiaj już nie dam rady).

@bvcz z tą konfiguracją też postaram się naprawić. Robiłem konfiguracje na szybko i możliwe, że nie wszystko jest w niej dopracowane (mimo, że konfiguracja jest prosta).


Vylence | 2018-04-14 17:29:24 UTC | #14

[quote=”Dziondzio, post:2, topic:6295, full:true”]
Fajne, tylko szkoda że na Discorda
[/quote]

Zamiast rozwijać nowe platformy i projekty, tym samym zachęcając osoby do odwiedzenia ich - Twoim zdaniem lepiej jest stać w miejscu?

Jeśli mogę spytać - jak Twoim zdaniem miałoby to wyglądać w przypadku teamspeaka?


Dziondzio | 2018-04-14 18:51:05 UTC | #15

[quote=”Vylence, post:14, topic:6295”]
Jeśli mogę spytać - jak Twoim zdaniem miałoby to wyglądać w przypadku teamspeaka?
[/quote]

Normalnie, gracz pisze /helpop on ma killaure
i bot na ts3 daje poke właścicielowi lub admina z wiadomością on ma killaure


anon10657637 | 2018-04-14 18:52:33 UTC | #16

Niby jest implementacja protokołu Teamspeak’a w Javie, ale ona pozostawia dużo do życzenia jeśli chodzi o wydajne działanie, więc @tirex musiałby pokombinować by napisać własną, jak to zrobił w przypadku klienta HTTP notabene w tym pluginie.


tirex | 2018-04-15 19:28:19 UTC | #17

Aktualizacja z dnia 15.04.2018

Zgodnie z tym co wczoraj napisałem w poście
https://forum.lvlup.pro/t/dl-helpop-z-powiadomieniami-na-discordzie/6295/13?u=tirex

Postanowiłem dodać część funkcjonalności:
- dowolna zmiana wszystkich parametrów wysyłanych za pomocą webhooka
- wsparcie dowolnych webhooków (przy odpowiedniej konfiguracji)
- możliwość zmiany wiadomości
- możliwość włączenia/wyłączenia komendy helpop za pomocą:
- włączenie /helpop on
- wyłączenie /helpop off

Ze zmian, które nie wnikają w kod pluginu dodam, że postanowiłem zmienić hosting z zippyshare.com na mega.nz

Polecam wszystkim usunąć starą konfiguracje, gdyż nowa wygląda całkowicie inaczej.
Po pierwszym uruchomieniu serwera z pluginem, powinien wygenerować się nowy plik config.yml, w którym możemy zobaczyć jak wygląda przykładowa konfiguracja:

helpop:
  enabled: true
webhooks:
  helpop:
  - url: https://discordapp.com/api/webhooks/{webhook.id}/{webhook.token}
    parameters:
      embeds:
      - color: '15158332'
        title: '{sender_name} napisał'
        description: '{message}'
  - url: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
    parameters:
      color: '#e74c3c'
      fields:
      - title: '{sender_name} napisał'
        value: '{message}'
        short: false
      fallback: '{sender_name} napisał {message}'
messages:
  commands:
    helpop:
      correct_use: '&cPoprawne uzycie: &e/helpop <wiadomosc>'
      toggle:
        enable: '&cHelpop został włączony!'
        disable: '&cHelpop został wyłączony!'
      disabled: '&cHelpop jest aktualnie wyłączony!'
      message_style:
        receiver: '&4[HelpOp] &c{sender_name}&r> {message}'
        sender: '&c{sender_name}&r> {message}'

Nie zauważyłem, że potrzebne jest opóźnienie na wysłanie kolejnej wiadomości. W następnej aktualizacji postaram się to dodać.

Link do pobrania nowej wersji pluginu: https://mega.nz/#!yxlgCbZI!ZvgxxOIipIL7VLz3CIjMV0gOLBHBbYgsB8sIs28EgTY


@Dziondzio na początku nie pomyślałem o teamspeaku. W następnej aktualizacji postaram się dodać wsparcie dla tego komunikatora (ale nie obiecuję).

Dodaję ankietę, abym miał większą motywację jakby było więcej osób chętnych na tą funkcjonalność.

Dodać wsparcie do teamspeaka?

[poll type=regular public=true]
* Tak
* Nie
[/poll]


Zaktualizuje główny post jak dostane do tego uprawnienia.


tirex | 2018-04-18 07:43:11 UTC | #18

Odświeżam


tirex | 2020-06-04 21:33:03 UTC | #19

Od dawna nie ruszałem tego pluginu. Z moich obserwacji wynika, że raczej plugin nie sprawia problemu co mnie niezmiernie cieszy. Z racji, że sobie o nim przypomniałem, bo potrzebuję takiego pluginu na mój serwer. Postanowiłem udostępnić jego kod źródłowy tutaj:
https://github.com/NoneTirex/minecraft-helpop