- Katılım
- 24 Nisan 2025
- Mesajlar
- 1.002
- Elmaslar
- 279
- Puan
- 3.880
- Yaş
- 15
- Konum
- Kocaeli
- Minecraft
- ByVoxar
Discord:
ByVoxar
Main Class Yanlış Kullanımı ve Doğru Plugin Mimarisi
Main Class Ne DEĞİLDİR?
Main Class pluginin beyni değildir!
- Tüm kodların yazıldığı yer değildir- Event listenerların tutulduğu yer değildir
- Oyun mantığının(logic) bulunduğu yer değildir
- Veri işlemlerinin yapıldığı yer değildir
- Herşeyi yapan dev bir sınıf değildir
Main Class NE Olmalıdır?
Main Class yalnızca bir kontrol merkezidir- Pluginin başlatıldığı ve durdurulduğu yer
- Diğer sistemleri koordine eden merkez
- Managerları başlatan kontrol noktası
- Temel yapılandırmaları yükleyen birim
- Bağımlılıkları organize eden yapı
Kod:
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
// Event'ler burada
getServer().getPluginManager()
.registerEvents(new Listener() {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
// Mantık burada
// Veri işleme burada
// Her şey burada!
}
}, this);
// Komutlar burada
// Config burada
// Database burada
// 500 satır kod...
}
}
Kod:
public class MyPlugin extends JavaPlugin {
private EventManager eventManager;
private CommandManager commandManager;
private ConfigManager configManager;
private DatabaseManager databaseManager;
@Override
public void onEnable() {
configManager = new ConfigManager(this);
databaseManager = new DatabaseManager(this);
eventManager = new EventManager(this);
commandManager = new CommandManager(this);
configManager.load();
databaseManager.connect();
eventManager.register();
commandManager.register();
}
@Override
public void onDisable() {
databaseManager.disconnect();
}
}
Doğru Paketleme Yapısı
Kod:
com.pluginadim
├── MyPlugin.java (Main Class)
├── commands/
│ ├── CommandManager.java
│ ├── TeleportCommand.java
│ └── StatsCommand.java
├── events/
│ ├── EventManager.java
│ ├── PlayerJoinListener.java
│ └── BlockBreakListener.java
├── managers/
│ ├── ConfigManager.java
│ ├── DatabaseManager.java
│ └── PlayerDataManager.java
├── utils/
│ ├── MessageUtil.java
│ └── PermissionUtil.java
└── models/
└── PlayerData.java
Sistemlerin Birbirinden Ayrılması
Her sistem kendi sorumluluğuna odaklanır!
Event Manager
Tüm event listenerları yönetir ve kaydeder
Config Manager
Ayar dosyalarını okur ve yönetir
Command Manager
Komutları organize eder ve kayıt eder
Database Manager
Veritabanı bağlantılarını kontrol eder
Neden Bu Kadar Önemli?
Temiz Mimari Sağlar:
- Okunabilirlik: Kod kolayca anlaşılır
- Sürdürülebilirlik: Değişiklikler kolay yapılır
- Test Edilebilirlik: Her parça ayrı test edilebilir
- Yeniden Kullanılabilirlik: Modüller başka projelerde kullanılabilir
- Takım Çalışması: Farklı kişiler farklı sistemlerde çalışabilir
- Hata Bulma: Sorunları bulmak çok daha kolay
Karşılaştırma
Kötü Mimari
- 1000+ satır Main class
- Kod tekrarı
- Hata bulma zorluğu
- Değişiklik yapmak çok zor
- Yeni özellik eklemek kabus
- Başkaları kodunuzu anlayamaz
İyi Mimari
- 50-100 satır Main class
- Temiz ve düzenli kod
- Hızlı hata çözümü
- Kolay değişiklikler
- Yeni özellik eklemek kolay
- Herkes kodu anlayabilir
Hatırlanması Gerekenler:
- Main Class = Kontrol Merkezi, beyin değil!- Her sistem ayrı sınıfta olmalı
- Doğru paketleme yapısı kullan
- Kod okunabilir ve sürdürülebilir olmalı
- Her sınıf tek bir sorumluluğa sahip olmalı