AloneHunterTAloneHunterT
  • Ana Sayfa
  • Hakkımda
  • Bloglar
3 Ekim 2023 alonehuntert tarafından
Eğitim, Genel, Launcher, Tasarım, Uygulama

MİNECRAFT LAUNCHER V1 (PART 3)

MİNECRAFT LAUNCHER V1 (PART 3)
3 Ekim 2023 alonehuntert tarafından
Eğitim, Genel, Launcher, Tasarım, Uygulama
MİNECRAFT SUNUCUNUZ İÇİN ÖZEL BİR MİNECRAFT LAUNCHERI TASARLAYIN

Minecraft Launcher Part 3

Eğer siz de Minecraft hayranıysanız ve özelleştirilmiş bir launcher’ın nasıl yapılacağını merak ediyorsanız, doğru yerdesiniz! Bu yazıda size, C# dilini kullanarak WinForm üzerinde bir Minecraft Launcher uygulaması nasıl yapılabileceğini göstereceğiz.

Uygulama, internet bağlantısını kontrol ederek yüklenme ekranı gösteriyor. Ardından kullanıcının Minecraft hesabı ile giriş yapabileceği bir login ekranı açılıyor. Kullanıcı girişi başarılı olursa, Main formuna geçiş yapılıyor ve Minecraft istemcisi başlatılıyor.

Bu uygulama, CmlLib.Core ve CmlLib.Core.Auth kütüphaneleri kullanılarak oluşturuluyor. Bu kütüphaneler, Minecraft hesap bilgilerini tutmamıza ve Minecraft istemcisini başlatmamıza olanak sağlıyor.

Artık kendi özelleştirilmiş Minecraft Launcher’ınızı yapmak için gereken temel bilgilere sahipsiniz. Hadi başlayalım!

SplashScreen.cs C#

				
					using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
using System.Windows.Forms;

namespace RL_RoseLone
{
    public partial class splashscreen : Form
    {
        public splashscreen()
        {
            InitializeComponent();
        }

        private int counter = 0;

        private void splashscreen_Load(object sender, EventArgs e)
        {
            Timer t = new Timer();
            t.Interval = 1000;
            t.Tick += new EventHandler(CheckInternet);
            t.Start();
        }

        private void CheckInternet(object sender, EventArgs e)
        {
            // İnternet bağlantısını kontrol edin
            if (NetworkInterface.GetIsNetworkAvailable())
            {
                // İnternet bağlantısı varsa, loadingtxt'ye Bağlantı kuruldu yazın
                loadingtxt.Text = "Bağlantı kuruldu";

                // Timer'ı durdurun
                (sender as Timer).Stop();

                // Yeni Timer oluşturun ve her 2000 milisaniye (2 saniye) çalışması için ayarlayın
                Timer t = new Timer();
                t.Interval = 100;
                t.Tick += new EventHandler(UpdateUI);
                t.Start();
            }
            else
            {
                // İnternet bağlantısı yoksa, loadingtxt'ye Bağlantı kurulamadı yazın
                loadingtxt.Text = "Bağlantı kurulamadı. Yeniden deneniyor...";
            }
        }

        private void UpdateUI(object sender, EventArgs e)
        {
            // Loadingbarı 10 arttırın
            loadingBar.Value = Math.Min(loadingBar.Value + 10, 100);

            // Her 2 saniye, loadingtxt'nin metnini değiştirin
            counter++;
            if (counter == 2 || counter == 4 || counter == 6 || counter == 8)
            {
                switch (counter)
                {
                    case 2:
                        loadingtxt.Text = "Kontrol Ediliyor...";
                        break;
                    case 4:
                        loadingtxt.Text = "Kontrol Edildi";
                        break;
                    case 6:
                        loadingtxt.Text = "Kontrol Başarılı";
                        break;
                    case 8:
                        loadingtxt.Text = "Başlatılıyor...";
                        break;
                }
            }

            // Loadingbar 100 olduğunda Login formuna geçiş yapın
            if (loadingBar.Value == 100)
            {
                Login loginForm = new Login();
                loginForm.Show();
                (sender as Timer).Stop();
                Hide();
            }
        }
    }
}

				
			

Bu C# kodları, bir Minecraft launcher’ı yapmak için bir splash screen formunu kontrol etmek ve yüklemek için kullanılır.

splashscreen sınıfı, Winform’da bir splash screen formu oluşturur ve form yüklendiğinde CheckInternet metodunu çalıştırır. Bu metod, kullanıcının internet bağlantısını kontrol eder ve bağlantı varsa loadingtxt adlı bir metin kutusunda “Bağlantı kuruldu” yazısını gösterir.

Ardından, yeni bir Timer nesnesi oluşturulur ve 100 milisaniye boyunca çalışacak şekilde ayarlanır. Bu Timer‘ın UpdateUI metodunu çağırarak loadingBar adlı bir ilerleme çubuğunu güncelleyeceği belirtilir.

UpdateUI metodunda, ilerleme çubuğunun değeri her 2 saniyede bir artırılır ve loadingtxt metin kutusu bu süre zarfında farklı yazılarla güncellenir. Son olarak, ilerleme çubuğu 100 olduğunda, bir Login formu oluşturulur, bu form gösterilir, splash screen formu gizlenir ve Timer durdurulur.

Login.cs C#

				
					using CmlLib.Core.Auth;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RL_RoseLone
{
    public partial class Login : Form
    {
        public Login()
        {
            InitializeComponent();
            Init_Data();
        }

        private void CloseBox_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void UpdateSession(MSession session)
        {
            var mainForm = new Main(session);
            mainForm.FormClosed += (s, e) => this.Close();
            mainForm.Show();
            this.Hide();
        }

        private void TimerEventProcessor(object sender, EventArgs e)
        {
            UpdateSession(MSession.GetOfflineSession(txtUsername.Text));
            Timer1.Stop();
        }

        private void Init_Data()
        {
            if (Properties.Settings.Default.Username != string.Empty)
            {
                if (Properties.Settings.Default.RememberMe == true)
                {
                    txtUsername.Text = Properties.Settings.Default.Username;
                    Remember.Checked = true;
                }
                else
                {
                    txtUsername.Text = Properties.Settings.Default.Username;
                }
            }
        }

        private void Save_Data()
        {
            if (Remember.Checked)
            {
                Properties.Settings.Default.Username = txtUsername.Text.Trim();
                Properties.Settings.Default.RememberMe = true;
                Properties.Settings.Default.Save();
            }
            else
            {
                Properties.Settings.Default.Username = "";
                Properties.Settings.Default.RememberMe = false;
                Properties.Settings.Default.Save();
            }
        }

        private void txtUsername_TextChanged(object sender, EventArgs e)
        {
            girisbtn.Enabled = txtUsername.Text.Length >= 2;
        }

        private void girisbtn_Click(object sender, EventArgs e)
        {

            if (txtUsername.Text == "")
            {
                hatatxt.Text = "Kullanıcı adı boş olamaz!";
            }
            else
            {
                txtUsername.Visible = false;
                guna2HtmlLabel2.Visible = false;
                Remember.Visible = false;
                girisbtn.Visible = false;
                hatatxt.Visible = false;

                Timer1.Tick += new EventHandler(TimerEventProcessor);
                Timer1.Start();

                loadingbar.Visible = true;

                Save_Data();
            }
        }
    }
}

				
			

Bu kod bloğu, C# ile Winform kullanarak Minecraft Launcher uygulaması geliştiren bir proje için Login formunu içermektedir. Kod, kullanıcının Minecraft hesap bilgilerini girip giriş yapmasına olanak tanır.

using CmlLib.Core.Auth : CmlLib kütüphanesindeki MSession sınıfına erişmek için kullanılan bir import.

public Login() : Login formunun yapıcı fonksiyonudur. InitializeComponent () ve Init_Data() fonksiyonlarını çağırır.

private void CloseBox_Click(object sender, EventArgs e) : Kapatma butonuna tıklanıldığında formun kapatılmasını sağlar.

private void UpdateSession(MSession session) : Minecraft oturumunu güncelleyen bir fonksiyondur. Ana formu oluşturur, bu form kapatıldığında Login formunu kapatır ve Ana formu gösterir.

private void TimerEventProcessor(object sender, EventArgs e) : Timer1’in Tick olayını işleyen bir fonksiyondur. GetOfflineSession () fonksiyonu, çevrimdışı bir Minecraft oturumu döndürür ve UpdateSession () fonksiyonunu çağırarak Ana formu gösterir.

private void Init_Data() : Kullanıcının daha önce hatırladığı bir kullanıcı adı varsa, hatırlama seçeneği etkinleştirilmişse otomatik olarak doldurulur.

private void Save_Data() : Kullanıcının hatırlama seçeneğini etkinleştirmesi durumunda, kullanıcı adını ve hatırlama seçeneğini kaydeder.

private void txtUsername_TextChanged(object sender, EventArgs e) : Kullanıcının kullanıcı adı kutusuna bir şeyler girdiğinde, giriş butonunun etkinleştirilmesini sağlar.

private void girisbtn_Click(object sender, EventArgs e) : Kullanıcının “Giriş” butonuna tıklaması durumunda çalışan bir fonksiyondur. Kullanıcı adının boş olup olmadığını kontrol eder. Eğer kullanıcı adı kutusu boşsa, bir hata mesajı görüntülenir. Aksi takdirde, kullanıcı adı kutusu, hatırlama seçeneği kutusu, giriş butonu ve hata mesajı kutusu gizlenir. Timer1 başlatılır ve kaydetme fonksiyonu çağrılır.

Main.cs

				
					using CmlLib.Core.Auth;
using CmlLib.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using CmlLib.Core.Version;
using Guna.UI2.WinForms;

namespace RL_RoseLone
{
    public partial class Main : Form
    {
        public Main(MSession session)
        {
            this.session = session;
            InitializeComponent();
        }

        CMLauncher launcher;
        readonly MSession session;

        private async void Main_Shown(object sender, EventArgs e)
        {
            var defaultPath = new MinecraftPath(MinecraftPath.GetOSDefaultPath());
            await initializeLauncher(defaultPath);
        }


        private async Task initializeLauncher(MinecraftPath path)
        {
            lbUsername.Text = session.Username;
            launcher = new CMLauncher(path);
        }

        private void Main_Load(object sender, EventArgs e)
        {
            path();
            var request = WebRequest.Create("https://minotar.net/helm/" + session.Username + "/100.png");
            using (var response = request.GetResponse())
            using (var stream = response.GetResponseStream())
            {
                userskinpicture.Image = Bitmap.FromStream(stream);
            }
        }

        private void path()
        {
            MinecraftPath path = new MinecraftPath();
            var launcher = new CMLauncher(path);
            foreach (var item in launcher.GetAllVersions())
            {
                if (item.MType != MVersionType.Snapshot && item.MType != MVersionType.OldAlpha && item.MType != MVersionType.OldBeta)
                {
                    versionBox.Items.Add(item.Name);
                    versionBox.SelectedIndex = 0;
                }
            }
        }

        private void logoutBtn_Click(object sender, EventArgs e)
        {
            var f = new Login();
            f.Show();
            Hide();
        }

        private void showSnapshots_CheckedChanged(object sender, EventArgs e)
        {

            if (showSnapshots.Checked)
            {
                versionBox.Items.Clear();

                foreach (var item in launcher.GetAllVersions())
                {
                    versionBox.Items.Add(item.Name);
                    versionBox.SelectedIndex = 0;
                }
            }
            else
            {
                versionBox.Items.Clear();
                path();
            }
        }
    }
}

				
			

Bu kodlar C# Winform uygulaması içerisinde Minecraft oyununun sürümünü seçme, kullanıcı adını ve profil resmini görüntüleme, oturumu kapatma gibi işlemleri yapmak için kullanılır.

Main sınıfı Minecraft oyununun ana formunu temsil eder. MSession sınıfı kullanıcının Minecraft hesabıyla ilgili bilgileri (kullanıcı adı, şifre vb.) tutar. CMLauncher sınıfı Minecraft oyununu başlatmak için gerekli olan işlemleri yürütür.

Main_Shown metodu form yüklendiğinde çalışır ve initializeLauncher metodunu çağırarak CMLauncher sınıfını başlatır. initializeLauncher metodu MinecraftPath sınıfı ile Minecraft oyununun kurulu olduğu dizini belirler ve CMLauncher sınıfını bu dizinde başlatır.

Main_Load metodu form yüklendiğinde çalışır ve kullanıcının Minecraft hesabına ait profil resmini görüntüler. WebRequest sınıfı ile minotar.net sitesinden kullanıcının profil resmi alınır ve userskinpicture adlı Guna.UI2.WinForms kütüphanesi tarafından sunulan PictureBox nesnesine yüklenir.

path metodu, CMLauncher sınıfını kullanarak kurulu olan Minecraft sürümlerini versionBox adlı ComboBox nesnesine yükler ve showSnapshots adlı CheckBox nesnesi seçili olduğunda snapshot sürümleri de dahil edilir.

logoutBtn_Click metodu, Login formunu açarak kullanıcının oturumunu kapatır.

Bu kodlar, Winform uygulaması geliştirmeye yeni başlayanların veya C# programlamayla yeni tanışanların Minecraft launcher uygulaması geliştirme konusunda fikir sahibi olmalarına yardımcı olabilir.

İNDİRİLEBİLİR İÇERİK YOK

Bilgilendirme C# Minecraft Launcher Eğitim Kodlama Launcher Minecraft Launcher Nasıl Yapılır WinForm Minecraft Launcher Yeni

Önceki makaleMİNECRAFT LAUNCHER V1 (PART 2)Sonraki makale MİNECRAFT LAUNCHER V1 (PART 4)

Bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Son Yazılar

MİNECRAFT LAUNCHER V1 (PART 5)5 Mayıs 2024
MİNECRAFT LAUNCHER V1 (PART 4)3 Ekim 2023
MİNECRAFT LAUNCHER V1 (PART 3)3 Ekim 2023

Kategoriler

  • Eğitim
  • Genel
  • Launcher
  • Tasarım
  • Uygulama

Etiketler

Bilgilendirme C# Minecraft Launcher Eğitim Kodlama Launcher Minecraft Launcher Nasıl Yapılır WinForm Minecraft Launcher Yeni

ALONEHUNTERT | BİLGİ

Bu sayfa temelde sizler için paylaştığım içeriklerin kolayca kopyalanabilmesi, indirilebilmesi ve öğrenilebilmesi için oluşturuldu. Genellikle, kodlamalarımı, websitelerimi, tasarımlarımı ve daha birçok şeyi paylaştığım bir sayfa olarak hizmet vermektedir.

SON YAZILAR

MİNECRAFT LAUNCHER V1 (PART 5)5 Mayıs 2024
MİNECRAFT LAUNCHER V1 (PART 4)3 Ekim 2023
MİNECRAFT LAUNCHER V1 (PART 3)3 Ekim 2023
AloneHunterT © 2023 | Tüm hakları saklıdır.

ALONEHUNTERT | BİLGİ

Sayfa aslında benim sizler için paylaştığım içerikler için kolayca kopyalama, indirme, öğrenme işleri için kuruldu. Genellikle Kodlamalarımı, Website, Tasarımlarımı ve daha fazlasını paylaştığım bir sayfadır

Son Yazılar

MİNECRAFT LAUNCHER V1 (PART 5)5 Mayıs 2024
MİNECRAFT LAUNCHER V1 (PART 4)3 Ekim 2023
MİNECRAFT LAUNCHER V1 (PART 3)3 Ekim 2023

Kategoriler

  • Eğitim
  • Genel
  • Launcher
  • Tasarım
  • Uygulama