Tanıtım TurboMOTD - Sunucunuz için MOTD eklentisi Bedrock Destekli!

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Sabinushka

Anam! Lav Yaktı Beni
Katılım
6 Mart 2017
Mesajlar
737
Elmaslar
196
Puan
14.570
Yaş
22
Minecraft
Sabinushka,

Discord:

MrAnilcaan_K#5521

Minecraft Sürümleri
1.21.4
1736741906175.webp
TurboMotd, Minecraft sunucularınız için tamamen özelleştirilebilir bir MOTD (Message of the Day) eklentisidir. Bu eklenti, sunucunuza gelen oyunculara etkileyici ve renkli bir MOTD gösterir. Eski renk kodları ve RGB renk kodları ile uyumlu olan bu eklenti, sunucunuzun estetiğini güçlendirmenize olanak tanır. Ayrıca, /tmotd reload komutu ile yapılandırma dosyasını kolayca yeniden yükleyebilir ve anında değişiklikler yapabilirsiniz.

  • ✅ RGB renk desteği: Özel renkler ile şık mesajlar oluşturun​
  • ✅ Kullanıcı dostu konfigürasyon dosyası: Kolayca yapılandırılabilir​
  • ✅ /tmotd reload komutu: Yapılandırmayı anında yeniden yükleyin​
  • ✅ Admin komutları: turbomotd.admin yetkisi ile admin komutları​
  • ✅ Performansı etkilemeyen hafif yapı: Sunucunuzun performansını etkilemeden çalışır​
    1. Eklentiyi Yükleyin
      • TurboMotd eklentisini indirin ve sunucunuzun plugins/ klasörüne yerleştirin.​
    2. MOTD'yi Yapılandırın
      • config.yml dosyasını açarak Message of the Day (MOTD) mesajınızı özelleştirebilirsiniz.​
    3. MOTD'yi Ayarlayın
      • config.yml'de motd kısmında MOTD'nizi şu şekilde ayarlayabilirsiniz:​

Config.yml:

Kod:
#Author: MrAnilcaan_K
#Creator_Team: TurboStudios

# Language settings (en, vi)
language: en

# MOTD settings for Java Edition
motd:
  java:
    - "&r              &r§#50FFE8&lᴛᴜʀʙᴏ&r§#A5FF50&lsᴛᴜᴅıᴏs &r§#DDD5C2ᴍᴏᴛᴅ ᴘʟᴜɢɪɴ &r§#FFDE5A ᴠ1.0&r"
    - "                 &r§#C8F3F7ғʀᴇᴇ ᴘʟᴜɢɪɴ 1.21 ᴠᴇʀsɪᴏɴ!"
  geyser:
    - "&r              &r§#50FFE8&lᴛᴜʀʙᴏ&r§#A5FF50&lsᴛᴜᴅıᴏs &r§#DDD5C2ʙᴇᴅʀᴏᴄᴋ ᴇᴅɪᴛɪᴏɴ &r§#FFDE5A ᴠ1.0&r"
    - "                 &r§#C8F3F7ғʀᴇᴇ ᴘʟᴜɢɪɴ 1.21 ᴠᴇʀsɪᴏɴ!"
max-players: 50
reload-message: "rgb(255,0,0)&lᴄᴏɴғɪɢ ʜᴀs ʙᴇᴇɴ ʀᴇʟᴏᴀᴅᴇᴅ sᴜᴄᴄᴇssғᴜʟʟʏ!"



Değerli ziyaretçimiz, içeriği görebilmek için şimdi giriş yapın veya kayıt olun.


1736741906175.webp
 
<center> desteği gelebilir. Otomatikmen ortaya alsın bu <center> placeholderini kullandığımızda.
 
<center> desteği gelebilir. Otomatikmen ortaya alsın bu <center> placeholderini kullandığımızda.
Değerli öneriniz için teşekkür ederim kısa sürede yeni sürümde ekleyeceğim ayrıca karşılama mesajları tab manager ve title manager gibi içerikleri de barındırmayı düşünüyorum
 
Değerli öneriniz için teşekkür ederim kısa sürede yeni sürümde ekleyeceğim ayrıca karşılama mesajları tab manager ve title manager gibi içerikleri de barındırmayı düşünüyorum
Kod:
package net.hywave.genesis.common.motd.util;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

public class MotdCentering {
   
    private static final int SV_L_PW = 282;
    private static final Pattern CLR_PTTRN = Pattern.compile("(?i)§[0-9A-FK-ORX]|&[0-9A-FK-ORX]");
    private static final Pattern HEX_LGCY_PTTRN = Pattern.compile("<#([A-Fa-f0-9]{6})>");

    private static final Map<Character, Integer> pxl_wdth = new HashMap<>();
   
    static {
        pxl_wdth.put(' ', 4);
       
        for (char c = '!'; c <= '~'; c++) {
            pxl_wdth.put(c, 6);
        }
       
        pxl_wdth.put('!', 2);
        pxl_wdth.put('\'', 2);
        pxl_wdth.put(',', 2);
        pxl_wdth.put('.', 2);
        pxl_wdth.put(':', 2);
        pxl_wdth.put(';', 2);
        pxl_wdth.put('|', 2);
        pxl_wdth.put('i', 2);
        pxl_wdth.put('l', 3);
        pxl_wdth.put('I', 4);
        pxl_wdth.put('t', 4);
        pxl_wdth.put('f', 5);
        pxl_wdth.put('k', 5);
        pxl_wdth.put('"', 5);
        pxl_wdth.put('(', 5);
        pxl_wdth.put(')', 5);
        pxl_wdth.put('<', 5);
        pxl_wdth.put('>', 5);
        pxl_wdth.put('{', 5);
        pxl_wdth.put('}', 5);
        pxl_wdth.put('w', 7);
        pxl_wdth.put('m', 7);
        pxl_wdth.put('W', 7);
        pxl_wdth.put('M', 7);
    }
   
    public static int lgcy_getpxlwdth(String t) {
        if (t == null || t.isEmpty()) { return 0; }
       
        int w = 0;
        boolean b = false;
        boolean fc = false;
       
        for (int i = 0; i < t.length(); i++) {
            char c = t.charAt(i);
           
            if (fc) {
                fc = false;
                if (c == 'l' || c == 'L') {
                    b = true;
                } else if (c == 'r' || c == 'R') {
                    b = false;
                }
                continue;
            }
           
           
            if ((c == '§' || c == '&') && i + 1 < t.length()) { fc = true;
                continue;
            }
           
           
            if (c == '<' && i + 8 < t.length() && t.charAt(i + 1) == '#') {
                boolean hc = true;
                for (int j = i + 2; j < i + 8; j++) {
                    char tmp_hc = t.charAt(j);
                    if (!((tmp_hc >= '0' && tmp_hc <= '9') || (tmp_hc >= 'a' && tmp_hc <= 'f') || (tmp_hc >= 'A' && tmp_hc <= 'F'))) {
                        hc = false;
                        break;
                    }
                }
               
                if (hc && t.charAt(i + 8) == '>') { i += 8;
                    continue;
                }
            }
           
            int cw = pxl_wdth.getOrDefault(c, 6);
            if (b) { cw++; }
            w += cw;
        }
        return w;
    }
   
    public static String stripcc(String t) {
        if (t == null) {
            return "";
        }

        String r = CLR_PTTRN.matcher(t).replaceAll("");
       
       
        r = HEX_LGCY_PTTRN.matcher(r).replaceAll("");
       
        return r;
    }
   
    public static String centerText(String t) {
        if (t == null || t.isEmpty()) {
            return t;
        }
       
        int tw = lgcy_getpxlwdth(t);
        int sw = pxl_wdth.get(' ');
        int sn = Math.max(0, (SV_L_PW - tw) / (2 * sw));
       
       
        StringBuilder r = new StringBuilder();
        for (int i = 0; i < sn; i++) {
            r.append(' ');
        }
       
        r.append(t);
        return r.toString();
    }

    public static String centerLines(String t) {
        if (t == null || t.isEmpty()) { return t; }
       
        String[] _l = t.split("\n");
        StringBuilder r = new StringBuilder();
       
        for (int i = 0; i < _l.length; i++) {
            r.append(centerText(_l[i]));
            if (i < _l.length - 1) {
                r.append("\n");
            }
        }
       
        return r.toString();
    }
}

^^ bunu kullanabilirsin, sorunsuz çalışıyor.

Ayrıca; tavsiyem MOTD profilleri oluşturman. Sunucumda şöyle yapıyorum. Daha önce pek yapan görmedim (belki hiç) o yüzden eklentini Spigot'ta öne çıkarabilir belki. (Belki yapılmıştır bilmiyorum)

1744297794926.webp

1744297872574.webp


1744298213673.webp
 
Kod:
package net.hywave.genesis.common.motd.util;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

public class MotdCentering {
   
    private static final int SV_L_PW = 282;
    private static final Pattern CLR_PTTRN = Pattern.compile("(?i)§[0-9A-FK-ORX]|&[0-9A-FK-ORX]");
    private static final Pattern HEX_LGCY_PTTRN = Pattern.compile("<#([A-Fa-f0-9]{6})>");

    private static final Map<Character, Integer> pxl_wdth = new HashMap<>();
   
    static {
        pxl_wdth.put(' ', 4);
       
        for (char c = '!'; c <= '~'; c++) {
            pxl_wdth.put(c, 6);
        }
       
        pxl_wdth.put('!', 2);
        pxl_wdth.put('\'', 2);
        pxl_wdth.put(',', 2);
        pxl_wdth.put('.', 2);
        pxl_wdth.put(':', 2);
        pxl_wdth.put(';', 2);
        pxl_wdth.put('|', 2);
        pxl_wdth.put('i', 2);
        pxl_wdth.put('l', 3);
        pxl_wdth.put('I', 4);
        pxl_wdth.put('t', 4);
        pxl_wdth.put('f', 5);
        pxl_wdth.put('k', 5);
        pxl_wdth.put('"', 5);
        pxl_wdth.put('(', 5);
        pxl_wdth.put(')', 5);
        pxl_wdth.put('<', 5);
        pxl_wdth.put('>', 5);
        pxl_wdth.put('{', 5);
        pxl_wdth.put('}', 5);
        pxl_wdth.put('w', 7);
        pxl_wdth.put('m', 7);
        pxl_wdth.put('W', 7);
        pxl_wdth.put('M', 7);
    }
   
    public static int lgcy_getpxlwdth(String t) {
        if (t == null || t.isEmpty()) { return 0; }
       
        int w = 0;
        boolean b = false;
        boolean fc = false;
       
        for (int i = 0; i < t.length(); i++) {
            char c = t.charAt(i);
           
            if (fc) {
                fc = false;
                if (c == 'l' || c == 'L') {
                    b = true;
                } else if (c == 'r' || c == 'R') {
                    b = false;
                }
                continue;
            }
           
           
            if ((c == '§' || c == '&') && i + 1 < t.length()) { fc = true;
                continue;
            }
           
           
            if (c == '<' && i + 8 < t.length() && t.charAt(i + 1) == '#') {
                boolean hc = true;
                for (int j = i + 2; j < i + 8; j++) {
                    char tmp_hc = t.charAt(j);
                    if (!((tmp_hc >= '0' && tmp_hc <= '9') || (tmp_hc >= 'a' && tmp_hc <= 'f') || (tmp_hc >= 'A' && tmp_hc <= 'F'))) {
                        hc = false;
                        break;
                    }
                }
               
                if (hc && t.charAt(i + 8) == '>') { i += 8;
                    continue;
                }
            }
           
            int cw = pxl_wdth.getOrDefault(c, 6);
            if (b) { cw++; }
            w += cw;
        }
        return w;
    }
   
    public static String stripcc(String t) {
        if (t == null) {
            return "";
        }

        String r = CLR_PTTRN.matcher(t).replaceAll("");
       
       
        r = HEX_LGCY_PTTRN.matcher(r).replaceAll("");
       
        return r;
    }
   
    public static String centerText(String t) {
        if (t == null || t.isEmpty()) {
            return t;
        }
       
        int tw = lgcy_getpxlwdth(t);
        int sw = pxl_wdth.get(' ');
        int sn = Math.max(0, (SV_L_PW - tw) / (2 * sw));
       
       
        StringBuilder r = new StringBuilder();
        for (int i = 0; i < sn; i++) {
            r.append(' ');
        }
       
        r.append(t);
        return r.toString();
    }

    public static String centerLines(String t) {
        if (t == null || t.isEmpty()) { return t; }
       
        String[] _l = t.split("\n");
        StringBuilder r = new StringBuilder();
       
        for (int i = 0; i < _l.length; i++) {
            r.append(centerText(_l[i]));
            if (i < _l.length - 1) {
                r.append("\n");
            }
        }
       
        return r.toString();
    }
}

^^ bunu kullanabilirsin, sorunsuz çalışıyor.

Ayrıca; tavsiyem MOTD profilleri oluşturman. Sunucumda şöyle yapıyorum;

Ekli dosyayı görüntüle 262347
Ekli dosyayı görüntüle 262348

Ekli dosyayı görüntüle 262349
Muzzam fikriniz yeni ilhamlara yol açtı yeni güncellemede mevcut durumlar için vesaire özel motdlarda ekleyebilirim
 
Muzzam fikriniz yeni ilhamlara yol açtı yeni güncellemede mevcut durumlar için vesaire özel motdlarda ekleyebilirim
Ben sadece kendi sunucumda kullandığım için konfigürasyon özelliği yok, her şey harcoded ama sen insanların config'den ekleyebileceği şekilde yapabilirsin. eventName, startDate, endDate, motd vs vs rahatça ekleyip çıkartır insanlar. Benim gibi .template için parser yapmanı önermem çünkü çoğu insan bununla uğraşmak istemez, direkt motds.yml vs gibi daha kolay olmasını sağlayabilirsin. Aklıma başka bir şey gelmiyor valla MOTD çok kapsamlı bir şey olmadığı için :D Versiyon textini değiştirmeyi ekleyebilirsin, hover text ekleyebilirsin, protokol versiyonuna göre farklı MOTD ekleyebilirsin (&cMinecraft sürümünüz 1.21.4 ve üstü olmalıdır) vs vs gibi.
 
Justonemore özelliği getirilebilir.

Sürekli değişen server icon getirilebilir.

hover getirilebilir.

Buradaki Eklentideki tüm özellikler getirilebilir.
Değerli ziyaretçimiz, içeriği görebilmek için şimdi giriş yapın veya kayıt olun.
 
Elinize sağlık. Eğer ayarlaması çok daha kolay ve işlevsel bir arayüz isterseniz kendi eklentiniz için bir motd oluşturucu web tool yapabilirsiniz. Website üzerinden motd önizlenebilir ve ayarlanabilir.
 
Elinize sağlık. Eğer ayarlaması çok daha kolay ve işlevsel bir arayüz isterseniz kendi eklentiniz için bir motd oluşturucu web tool yapabilirsiniz. Website üzerinden motd önizlenebilir ve ayarlanabilir.
Teşekkürler bu konuyu düşüneceğim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst