Minestom için sunucu türü önerisi

  • Konuyu Başlatan Konuyu Başlatan Kovalski
  • Başlangıç tarihi Başlangıç tarihi
  • Görüntüleme 523
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Kovalski

Elmas Güneş Gibi Parıldıyor
Katılım
17 Kasım 2015
Mesajlar
579
Elmaslar
224
Puan
14.520
Minecraft
Kovalski
Merhabalar, canım bir kaç gündür java çekiyordu ve sonunda minestom ile bir sunucu hazırlamaya karar verdim. Kendisiyle 2-3 saat zaman geçirdim ve açıkcası çok beğendim. Geliştiren arkadaş hergün düzenli olarak güncelliyor ve resmen developerlar için bir oyuncak yapmış, gayet keyif aldım kullanırken. Sonuç olarak bu sunucu yazılımıyla bir sunucu yapmak istiyorum fakat en büyük sorun anticheat.

Sunucu yazılımı bukkit tabanlı olmayı geçtim mojangın vanilla serverindeki nms kodlarını bile kullanmıyor, yani vulcan gibi gelişmiş paket tabanlı anticheat yazılımlarını doğrudan kullanmak mümkün değil. Onun haricinde daha ufak çaplı eklentileri yazmak konusunda oldukça iyi iş çıkarıyor.

Mesela offline oyuncular için skin desteği ekleme işini tek satırda halledebiliyorsunuz şu şekilde;
Kod:
        globalEventHandler.addListener(PlayerSkinInitEvent.class, event -> {
            final Player player = event.getPlayer();
            PlayerSkin skinFromUsername = PlayerSkin.fromUsername(player.getUsername());
            event.setSkin(skinFromUsername);
        });

Tabi üzerine fazla düşünmedim, skinrestorer eklentisi skin verilerini yedekliyordu.
TABList, Scoreboard, MOTD vb bir çok ufak tefek şeyin kısa sürede kodlanabileceğini biliyorum henüz yapmış olmasamda.

Sunucu yazılımının en güzel yanı oyunda hiçbir mekanik hazır olarak gelmiyor fakat demek değil ki bu özellikleri oyuna eklemek işkence, tam tersine her şey var.
Mesela minestomda world classının karşılığı Instance ve bu instance classında setTime() methodu var. Oyun içi bir zaman ayarlama komutu olmasada onu yapmamı sağlayacak her şey hazır ve yapması oldukça kısa sürüyor.

Şimdilik bu kadar anlatabildim, kafamda bir anarşi sunucusu yapmak var anticheat sorununu çözemeyeceğim için başka şeylere bulaşmak mantıklı gelmiyor fakat önerilere açığım tabi.

1733510496024.webp


Ek olarak şunu da eklemeden geçemicem sunucunun açılması 0.4sn falan sürüyor
 
Merhabalar, canım bir kaç gündür java çekiyordu ve sonunda minestom ile bir sunucu hazırlamaya karar verdim. Kendisiyle 2-3 saat zaman geçirdim ve açıkcası çok beğendim. Geliştiren arkadaş hergün düzenli olarak güncelliyor ve resmen developerlar için bir oyuncak yapmış, gayet keyif aldım kullanırken. Sonuç olarak bu sunucu yazılımıyla bir sunucu yapmak istiyorum fakat en büyük sorun anticheat.

Sunucu yazılımı bukkit tabanlı olmayı geçtim mojangın vanilla serverindeki nms kodlarını bile kullanmıyor, yani vulcan gibi gelişmiş paket tabanlı anticheat yazılımlarını doğrudan kullanmak mümkün değil. Onun haricinde daha ufak çaplı eklentileri yazmak konusunda oldukça iyi iş çıkarıyor.

Mesela offline oyuncular için skin desteği ekleme işini tek satırda halledebiliyorsunuz şu şekilde;
Kod:
        globalEventHandler.addListener(PlayerSkinInitEvent.class, event -> {
            final Player player = event.getPlayer();
            PlayerSkin skinFromUsername = PlayerSkin.fromUsername(player.getUsername());
            event.setSkin(skinFromUsername);
        });

Tabi üzerine fazla düşünmedim, skinrestorer eklentisi skin verilerini yedekliyordu.
TABList, Scoreboard, MOTD vb bir çok ufak tefek şeyin kısa sürede kodlanabileceğini biliyorum henüz yapmış olmasamda.

Sunucu yazılımının en güzel yanı oyunda hiçbir mekanik hazır olarak gelmiyor fakat demek değil ki bu özellikleri oyuna eklemek işkence, tam tersine her şey var.
Mesela minestomda world classının karşılığı Instance ve bu instance classında setTime() methodu var. Oyun içi bir zaman ayarlama komutu olmasada onu yapmamı sağlayacak her şey hazır ve yapması oldukça kısa sürüyor.

Şimdilik bu kadar anlatabildim, kafamda bir anarşi sunucusu yapmak var anticheat sorununu çözemeyeceğim için başka şeylere bulaşmak mantıklı gelmiyor fakat önerilere açığım tabi.

Ekli dosyayı görüntüle 255033

Ek olarak şunu da eklemeden geçemicem sunucunun açılması 0.4sn falan sürüyor
Hocam yazılım bilmeyen insanlar için biraz konuyu açabilirmisiniz merak ettimde ?
 
Hocam yazılım bilmeyen insanlar için biraz konuyu açabilirmisiniz merak ettimde ?
Günümüz sunucu yazılımlarının yapısı şöyle
nms > bukkit > spigot > paper > a forku > a forkunun forku > a forkunun forkunun forku

eklentilerde aynı bu şekilde yıllarca geliştirile geliştirile spagettiye dönmüş durumda

aynı şekilde oyunun kendisi de tonla özellikle şişirilmekten artık patlayacak duruma geldi

Minestomunun olayı yepyeni bir sunucu yazılımı olması ve yazılımı build ettiğinde sunucuda stop komutu dahi yok her şeyi sıfırdan kendin inşa ediyorsun. Aynı zamanda multi thread destekleyecek şekilde tasarlandığı için potansiyeli çok yüksek.

Mesela bir tnt patlattığında hiçbir şey olmuyor çünkü sunucu yazılımında tnt patlama paketini handle edecek bir şey yazılı değil sen yazarsan patlıyor ve yazmazsan da performans artışı kazanmış oluyorsun. Mesela ben fire spread ile ilgili herhangi bir şey yazmicam gereksiz performans kaybına yol açıyor çıkarsak kimse ağlamaz bence. Bunun gibi tonlarca mekaniği handle etmeyip performans artışı elde edebilirsin.

Ben hem sıfırdan hile koruması yazmak istemediğim için hem de multi thread kaynaklı bugların beni yormaması için anarşi açmayı düşünüyorum, en mantıklı opsiyon gibi geldi.
 
Günümüz sunucu yazılımlarının yapısı şöyle
nms > bukkit > spigot > paper > a forku > a forkunun forku > a forkunun forkunun forku

eklentilerde aynı bu şekilde yıllarca geliştirile geliştirile spagettiye dönmüş durumda

aynı şekilde oyunun kendisi de tonla özellikle şişirilmekten artık patlayacak duruma geldi

Minestomunun olayı yepyeni bir sunucu yazılımı olması ve yazılımı build ettiğinde sunucuda stop komutu dahi yok her şeyi sıfırdan kendin inşa ediyorsun. Aynı zamanda multi thread destekleyecek şekilde tasarlandığı için potansiyeli çok yüksek.

Mesela bir tnt patlattığında hiçbir şey olmuyor çünkü sunucu yazılımında tnt patlama paketini handle edecek bir şey yazılı değil sen yazarsan patlıyor ve yazmazsan da performans artışı kazanmış oluyorsun. Mesela ben fire spread ile ilgili herhangi bir şey yazmicam yanmak gereksiz performans kaybına yol açıyor çıkarsak kimse ağlamaz bence. Bunun gibi tonlarca mekaniği handle etmeyip performans artışı elde edebilirsin.

Ben hem sıfırdan hile koruması yazmak istemediğim için hem de multi thread kaynaklı bugların beni yormaması için anarşi açmayı düşünüyorum, en mantıklı opsiyon gibi geldi.
Performans açısında ne kadar fayda sağlıyor yüzde olarak ?
 
Performans açısında ne kadar fayda sağlıyor yüzde olarak ?
İşin matematiğine o kadar hakim değilim ama örnek gösterebilirim.
Elimdeki tek veri şuan sunucu 0.4snde açılıyor :D





Minestomu sadece oyun sunucusu olarakta düşünme baya bir şey barındırıyor



BoxPvp tarzı vanilla mekaniklerinden uzaklaşmış ve kendi oynanışını yaratmış türler için olmazsa olmaz bence fakat dediğim gibi anticheat işi bozuyor baya.

Anticheatlerin ne kadar sürede şuan ki hallerine ulaştığını hesaba katarsak anarşi harici imkansız gibi duruyor. Client zorunluluğu getirmek lazım anca öyle olur.
 
Son düzenleme:
Merak eden varsa hala gamemode komutunu geliştiriyorum :D
Gamemode diyip geçmemek lazım, işin içinde

1- Yetkilendirme sistemi
2- Eylemler gerçekleştiğinde gönderilecek mesajların yönetimi için mesaj sistemi
3- Yetkilerin ayarlanması ve mesajların daha rahat düzenlenmesi için File I/O sistemlerinin tasarlanması

gibi çok temel şeylerle uğraşmak gerekiyor ve baya keyifli açıkcası :D

İşin içine girdikçe aslında plugin yazmaktan farksız olduğunu fark ediyorum üstüne minestom ile yazmak klasik nms bukkit tabanlı pluginleri yazmaktan çok daha keyifli

Vanillanın reimplementasyonu projesi henüz çok geride olduğu için anarşi yapmanın da büyük bir eziyet olduğunu fark ettiğim için boxpvp sunucu yapmayı denicem. Basit bir anticheat ile işin içinden çıkabilirim belki.

Sunucuyu tamamladığımda en dandik en ucuz hostinglerden birinde çalıştırmayı denicem, zaten oyuncu beklentim 3-5 kişi falan ve sunucunun da sorunsuz çalışacağını düşünecek kadar güveniyorum minestom'a.
 
Son düzenleme:
Merak eden varsa hala gamemode komutunu geliştiriyorum :D
Gamemode diyip geçmemek lazım, işin içinde

1- Yetkilendirme sistemi
2- Eylemler gerçekleştiğinde gönderilecek mesajların yönetimi için mesaj sistemi
3- Yetkilerin ayarlanması ve mesajların daha rahat düzenlenmesi için File I/O sistemlerinin tasarlanması

gibi çok temel şeylerle uğraşmak gerekiyor ve baya keyifli açıkcası :D

İşin içine girdikçe aslında plugin yazmaktan farksız olduğunu fark ediyorum üstüne minestom ile yazmak klasik nms bukkit tabanlı pluginleri yazmaktan çok daha keyifli

Vanillanın reimplementasyonu projesi henüz çok geride olduğu için anarşi yapmanın da büyük bir eziyet olduğunu fark ettiğim için boxpvp sunucu yapmayı denicem. Basit bir anticheat ile işin içinden çıkabilirim belki.

Sunucuyu tamamladığımda en dandik en ucuz hostinglerden birinde çalıştırmayı denicem, zaten oyuncu beklentim 3-5 kişi falan ve sunucunun da sorunsuz çalışacağını düşünecek kadar güveniyorum minestom'a.
Buna spigot bukkit deki gibi plugin ekleyebiliyormuyuz ?
 
Buraya yazmayı bırakıp yeni bir konu açıcam minestom için mini rehberlerle dolu olacak daha doğrusu devlog gibi kullanıcam ama gerçekten yardımcı olacak şeylerle dolu olacak.

Mesela şuan configden çektiğim mesajları renkli olarak gönderme desteği yazdım türkçe kaynakta oluşur ben paylaştıkça :D
1733605287853.webp
 
Son düzenleme:
Buraya yazmayı bırakıp yeni bir konu açıcam minestom için mini rehberlerle dolu olacak daha doğrusu devlog gibi kullanıcam ama gerçekten yardımcı olacak şeylerle dolu olacak.

Mesela şuan configden çektiğim mesajları renkli olarak gönderme desteği yazdım türkçe kaynakta oluşur ben paylaştıkça :D
Ekli dosyayı görüntüle 255124

Minestormu bir süredir takip ediyorum güzel bir proje, önem veriyorlar. Bir geliştiricinin de bununla neler yapacağını görmek hoş olacak, merakla bekliyorum açıkçası.
 
Minestormu bir süredir takip ediyorum güzel bir proje, önem veriyorlar. Bir geliştiricinin de bununla neler yapacağını görmek hoş olacak, merakla bekliyorum açıkçası.
Acayip keyif aldım ben amacım plugin yapmak ya da sunucu açmak değil öyle java kodu yazasım vardı sarıyo :D

Minestom için yazdığım HEX Color Support

&#000000 formatını String ve List<String> için destekliyor ve evet alt tarafı bir renk için bu kadar kod yazmak gerekiyor kod yazmayı sevmeyen bulaşmasın :D

Kod:
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextColor;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ColorUtils {

    // Regex to match color codes (HTML color codes: &#RRGGBB)
    private static final Pattern COLOR_CODE_PATTERN = Pattern.compile("&#([A-Fa-f0-9]{6})");

    // Converts a colored string into a list of TextComponent objects
    public static Component toTextComponent(String input) {
        List<Component> components = new ArrayList<>();
        Matcher matcher = COLOR_CODE_PATTERN.matcher(input);
        int lastEnd = 0;

        // Process the remaining text for each color code
        while (matcher.find()) {
            // Add the previous part of the text as it is before the color code
            if (lastEnd != matcher.start()) {
                String previousText = input.substring(lastEnd, matcher.start());
                components.add(Component.text(previousText));
            }

            // Extract the color code
            String hexColor = matcher.group(1);
            int r = Integer.parseInt(hexColor.substring(0, 2), 16);
            int g = Integer.parseInt(hexColor.substring(2, 4), 16);
            int b = Integer.parseInt(hexColor.substring(4, 6), 16);

            // Get the text after the color code
            int start = matcher.end();
            int end = input.indexOf("&#", start); // Find the next color code
            if (end == -1) {
                end = input.length(); // If there's no next color code, take the rest of the text
            }

            // Add the colored text with the extracted color
            String coloredText = input.substring(start, end);
            components.add(Component.text(coloredText, TextColor.color(r, g, b)));

            lastEnd = end;
        }

        // Add the remaining text (after the last color code)
        if (lastEnd < input.length()) {
            components.add(Component.text(input.substring(lastEnd)));
        }

        // Combine the list of components into one
        return joinComponents(components);
    }

    // Method to join a list of TextComponents into one
    private static Component joinComponents(List<Component> components) {
        // Start with the first component
        Component combined = components.get(0);
        for (int i = 1; i < components.size(); i++) {
            // Append the rest of the components
            combined = combined.append(components.get(i));
        }
        return combined;
    }

    // Converts a list of strings with color codes into a single colored TextComponent
    public static Component toTextComponentFromList(List<String> inputs) {
        List<Component> components = new ArrayList<>();

        // Process each string in the list
        for (String input : inputs) {
            // Trim the input to remove leading/trailing spaces
            String trimmedInput = input.trim();

            if (trimmedInput.isEmpty()) {
                // If the string is empty after trimming, add an empty line
                components.add(Component.text(""));  // Add an empty TextComponent for empty line
            } else {
                // Process valid string (with color codes)
                components.add(toTextComponent(input));  // Call toTextComponent for each string
            }
        }

        // Manually add line breaks between components
        Component result = components.get(0); // Start with the first component

        for (int i = 1; i < components.size(); i++) {
            result = result.append(Component.text("\n"));  // Add line break
            result = result.append(components.get(i));   // Append next component
        }

        return result;
    }
}
 
Son düzenleme:
Aslında aklımda bir soru var, bir minigame sunucusunu minestorm ile inşa ettiğimizi düşünelim her şey güzel en yüksek performanslı bir şekilde oyunumuzu yazdık ve kurduk. Paperın patchlerini kendi buildimize aktarabileceğimiz bir araç olsa sanırım kusursuz olur, acaba minestorm daha çok ünlendiğinde bu tarz bir tool yaparlar mı ya da alternatif bir çözümü var mı sizce?
 
Aslında aklımda bir soru var, bir minigame sunucusunu minestorm ile inşa ettiğimizi düşünelim her şey güzel en yüksek performanslı bir şekilde oyunumuzu yazdık ve kurduk. Paperın patchlerini kendi buildimize aktarabileceğimiz bir araç olsa sanırım kusursuz olur, acaba minestorm daha çok ünlendiğinde bu tarz bir tool yaparlar mı ya da alternatif bir çözümü var mı sizce?
şuanda tek aktif proje vanilla kodlarının reimplementasyonu paper falan da yapılır belki ama yakın zamanda bekleme

Benim fikrimi sorarsan bütün kitle nmsyi bırakıp minestom'a geçmeli. Aynı forge -> fabric geçişi gibi bir geçiş yaşanmalı fakat mod kitlesi para için yapmadığından geçebilmişti bu plugin kitlesi biraz daha yamyam olduğu için sanmam olacağını :D

Vanilla implamantasyonu tamamlanınca insanlar cesaretlenir belki
 
Son düzenleme:
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