Compare commits

3 Commits
Author SHA1 Message Date
asminme d593368c5f Simplify README
Build Plugin / build-and-release (push) Canceled after 4s
2026-10-08 10:21:17 +02:00
asminme 87f6c8ab1a Add Discord command and logo embed
Build Plugin / build-and-release (push) Successful in 4m6s
2026-10-08 10:03:48 +02:00
asminme 895a33dc2f release description edit.
Build Plugin / build-and-release (push) Canceled after 4s
2026-10-08 09:11:41 +02:00
5 changed files with 27 additions and 12 deletions

No files matched your search

+1 -1
View File
@@ -73,7 +73,7 @@ jobs:
release="$(curl --fail-with-body -sS -X POST "$api/releases" \
-H "Authorization: token $GITEA_TOKEN" \
-H 'Content-Type: application/json' \
-d "{\"tag_name\":\"$TAG\",\"name\":\"AsminDiscordBridge $VERSION\",\"body\":\"Automatyczny build AsminDiscordBridge $VERSION.\",\"draft\":false,\"prerelease\":false}")"
-d "{\"tag_name\":\"$TAG\",\"name\":\"AsminDiscordBridge $VERSION\",\"body\":\"AsminDiscordBridge $VERSION.\",\"draft\":false,\"prerelease\":false}")"
release_id="$(python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])' <<< "$release")"
curl --fail-with-body -sS -X POST "$api/releases/$release_id/assets?name=$jar" \
-H "Authorization: token $GITEA_TOKEN" \
+3 -3
View File
@@ -1,9 +1,9 @@
# AsminDiscordBridge
Prosty plugin do Minecrafta, który pokazuje na Discordzie, czy serwer jest online oraz kto aktualnie gra. Lista graczy jest sortowana według rangi z LuckPerms. Wiadomość odświeża się co 180 sekund, a jej ID plugin zapamiętuje w `memory.yml`, żeby po restarcie edytować tę samą wiadomość.
Prosty plugin do Minecrafta, który pokazuje status serwera i listę graczy na Discordzie. Gracze są sortowani według rang LuckPerms. Wiadomość odświeża się co 180 sekund. Komenda `/discord` pokazuje link do Discorda.
Plugin jest napisany pod moje własne potrzeby. Kod jest „taki sobie” i nie wiem, czy będzie stabilny — **nie odpowiadam za jego działanie**. Jeśli chcesz go użyć albo poeksperymentować, zapraszam. Chętnie przyjmę feedback w Pull Requeście albo na adresie [hello@asmin.me](mailto:hello@asmin.me).
Plugin zrobiłem dla siebie. Nie wiem, czy jest stabilny, więc używasz go na własną odpowiedzialność. Jeśli chcesz go przetestować, chętnie przyjmę uwagi w Pull Requeście albo na adresie [hello@asmin.me](mailto:hello@asmin.me).
Możesz edytować kod. Jeśli jednak zamierzasz opublikować własną wersję, proszę o uznanie mojego autorstwa w creditsach.
Możesz edytować kod. Jeśli opublikujesz własną wersję, dodaj moje autorstwo w creditsach.
**Autor:** [Asmin_](https://asmin.me)
@@ -8,6 +8,8 @@ import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.events.session.ReadyEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.LuckPermsProvider;
import net.luckperms.api.model.user.User;
@@ -21,6 +23,7 @@ import org.bukkit.scheduler.BukkitTask;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
@@ -40,8 +43,21 @@ public final class AsminDiscordBridge extends JavaPlugin {
@Override
public void onEnable() {
saveDefaultConfig();
getConfig().addDefault("discord.invite-link", "https://classicmc.top/discord/");
getConfig().addDefault("server.title-img", "https://asmin.me/cdn/classicmc/logo-horizontal.webp");
getConfig().options().copyDefaults(true);
saveConfig();
loadMemory();
getCommand("discord").setExecutor((sender, command, label, args) -> {
String inviteLink = getConfig().getString("discord.invite-link", "https://classicmc.top/discord/");
Component message = Component.text("Discord: ")
.append(Component.text(inviteLink).clickEvent(ClickEvent.openUrl(inviteLink)));
sender.sendMessage(message);
return true;
});
getCommand("discord").setTabCompleter((sender, command, alias, args) -> Collections.emptyList());
String token = getConfig().getString("discord.token", "").trim();
String configuredChannel = getConfig().getString("discord.channel-id", "").trim();
if (token.isEmpty() || token.equals("WSTAW_TOKEN_BOTA") || !configuredChannel.matches("\\d+")) {
@@ -145,7 +161,6 @@ public final class AsminDiscordBridge extends JavaPlugin {
}
private MessageEmbed createEmbed(boolean online) {
String brand = getConfig().getString("server.brand", "ClassicMC.top");
String status = online ? "🟢 ONLINE" : "🔴 OFFLINE";
StringBuilder players = new StringBuilder();
@@ -169,12 +184,11 @@ public final class AsminDiscordBridge extends JavaPlugin {
EmbedBuilder embed = new EmbedBuilder()
.setColor(new Color(embedColor))
.setTitle(brand)
.setImage(getConfig().getString("server.title-img", "https://asmin.me/cdn/classicmc/logo-horizontal.webp"))
.addField("Status Serwera", status, false)
.addField("Aktywni gracze / Online Players (" + (online ? getServer().getOnlinePlayers().size() : 0) + ")",
players.toString(), false)
.setFooter("AsminDiscordBridge • odświeżanie co "
+ Math.max(30L, getConfig().getLong("server.refresh-seconds", 180L)) + " s");
.setFooter("AsminDiscordBridge");
return embed.build();
}
@@ -200,7 +214,6 @@ public final class AsminDiscordBridge extends JavaPlugin {
String translated = ChatColor.translateAlternateColorCodes('&', prefix);
String plain = ChatColor.stripColor(translated);
if (plain == null || plain.isEmpty()) return "";
// Discord nie obsługuje własnych kolorów tekstu w embedach; zachowujemy pogrubienie prefixu.
return LEGACY_COLOR.matcher(translated).find() && translated.matches("(?s).*§[lL].*")
? "**" + plain + "** " : plain + " ";
}
+2 -3
View File
@@ -1,10 +1,9 @@
# Token utworzysz w Discord Developer Portal. Nie udostępniaj go publicznie.
discord:
token: "WSTAW_TOKEN_BOTA"
channel-id: "WSTAW_ID_KANALU"
invite-link: "https://classicmc.top/discord/"
server:
brand: "ClassicMC.top"
# Kolor paska embeda w formacie HEX (domyślnie jasna zieleń).
title-img: "https://asmin.me/cdn/classicmc/logo-horizontal.webp"
embed-color: "#90EE90"
refresh-seconds: 180
+3
View File
@@ -6,3 +6,6 @@ author: Asmin_
website: https://asmin.me
description: Prosty status serwera Minecraft na Discordzie.
softdepend: [LuckPerms]
commands:
discord:
description: Pokazuje link do Discorda serwera.