Ana içeriğe atla

ZonelyCore

ZonelyCore, Minecraft sunucunuzu web sitenizle entegre etmek için tasarlanmış kapsamlı bir eklentidir. Web sitenize eklenen kategori ve ürünleri oyuna senkronize edebilir, oyuncuların site kredilerini kullanarak oyun içinden satın alma yapmasını sağlayabilir ve satın alma etkinliğini oyun içinde gösterebilirsiniz. SecureSocket desteğiyle web sitenizden oyun sunucunuza güvenli şekilde komut gönderebilirsiniz. Eklenti; mağaza, destek talepleri, cezalar, krediler, açık artırmalar, raporlar, turnuva sistemleri ve daha fazlasını tek yapı altında toplar.

Gereksinimler

Kurulumdan önce aşağıdaki eklentilerin sunucunuzda kurulu olması önerilir:
EklentiLink
ProtocolLibSpigotMC
PlaceholderAPISpigotMC

Özellikler

Web Mağazası

Oyuncular web sitenizdeki ürünleri oyun içi GUI üzerinden görüntüleyebilir ve satın alabilir. Ürünleri ve kategorileri yönetici panelinizden yönetebilirsiniz.

Açık Artırmalar

Oyuncular, herhangi bir listeleme ücreti ödemeden kredi miktarı belirleyerek eşyalarını hem web sitenizde hem de oyun içinde Açık Artırmalar bölümünde listeleyebilir. Yeterli kredisi olan oyuncular açık artırmadaki eşyaları satın alabilir veya talep edebilir.

NPC’ler

6 farklı menüyü açabilen NPC’ler oluşturabilirsiniz. Hologram ve PlaceholderAPI desteği dahildir.

Destek Talepleri

Web sitesi destek talepleri oyun içinden canlı olarak yönetilebilir. Yetkililer taleplere yanıt verebilir, talepleri kapatabilir veya kullanıcıları yasaklayabilir. Oyuncular da sunucu içinden bir destek kategorisi seçerek yeni talep oluşturabilir.

Cezalar

Yetkililer oyuncuları susturabilir, yasaklayabilir, uyarabilir ve ceza geçmişlerini görüntüleyebilir. Cezalı kullanıcılar web siteniz üzerinden yönetilebilir; oyuncular cezaları herkese açık şekilde görüntüleyebilir.

Son Krediler

En son kredi yüklemeleri bir GUI içinde gösterilir ve kategoriye göre filtrelenebilir.

Liderlik Tabloları

Son kredi yüklemeleri hologram olarak gösterilebilir. Hologram tıklanabilir olabilir ve kategoriye göre görüntülenebilir.

Giriş ve Kayıt

Oyuncular web panelinde oluşturdukları aynı hesapla giriş yapabilir.

Krediler

Oyuncularınızın kredilerini yönetebilirsiniz.

Kredi Kuponları

Oyuncular site kredilerini kağıt kupon eşyasına dönüştürebilir. Bu kağıt eşyayı kullanarak birbirleriyle kredi paylaşabilirler. Sağ tıklandığında kredi oyuncunun hesabına eklenir.

Raporlar + Replay

Oyuncular kuralları ihlal ettiğini düşündükleri kullanıcıları raporlayabilir. Yetkililer raporlanan oyuncuları GUI üzerinden görüntüleyip işlem yapabilir. Sistem ceza modülüyle entegredir. Raporlanan oyuncular video izler gibi incelenebilir ve sonrasında ceza uygulanabilir.

WebSockets

Web sitesindeki ürün satışları için kullanılır. Web sitesi komutlarını şifreli veriyle oyun içinde güvenli şekilde çalıştırır. Yalnızca web sitesi tarafından doğrulanan komutların konsol tarafından yürütülmesini sağlar.

Teslimatlar

Oyuncular zaman bazlı ödülleri GUI üzerinden talep edebilir.

Web Profilleri

Bir oyuncunun web sitesi profili oyun içinden GUI aracılığıyla görüntülenebilir.

Sohbet Renkleri

İzni olan kullanıcılar sohbet mesajı renklerini GUI üzerinden değiştirebilir. Mesajlar seçilen renkte görünür.

E-Spor Turnuva Sistemi

Kulüp kaydı, bekleme lobisi, bracket ilerlemesi, canlı maç aşamaları, izleyici modu, kazanan yönetimi ve otomatik temizlik/sıfırlama dahil tam rekabetçi turnuva akışı sağlar.

E-Spor Maç Etkinlikleri

Zamanlı kademe sandık düşüşleri, özel yardımcı eşya düşüşleri, dinamik hologramlar, meteor/tren arena etkinlikleri, maç özetleri ve kazanan kutlama efektlerini içerir.

Kılık Değiştirme

Oyuncuların oyun içinde farklı bir kimlikle görünmesini sağlayan bir kitap GUI’si açar.

Sohbet Filtreleri

Oyuncular tarafından gönderilen reklamları ve hakaret içeren mesajları engeller. Gerektiğinde otomatik ceza uygulayabilir.

PlaceholderAPI ve MySQL Desteği

Eklenti veritabanına bağlanabilir ve PlaceholderAPI üzerinden çeşitli değişkenleri kullanabilir.

Otomatik Giriş

İlk giriş veya kayıttan sonra güvenilir IP adresleri hatırlanır. Oyuncular yeniden giriş yapmaları istenmeden doğrudan sunucuya alınabilir.

Bossbar Yönlendirmesi

Özel bossbarlar oyuncuları oyun içinde giriş, kayıt ve e-posta doğrulama adımlarında yönlendirir.

Fallback Sunucusu

Başarılı giriş veya kayıt sonrasında oyuncular otomatik olarak önceden tanımlanmış bir BungeeCord sunucusuna aktarılabilir.

E-posta Doğrulama

Etkinleştirildiğinde oyunculardan e-posta adresi belirlemeleri istenir. Gelen kutularına doğrulama kodu gönderilir ve bu kodu oyun içinde girdikten sonra oynamaya devam edebilirler.

2FA (TOTP)

TOTP tabanlı iki faktörlü kimlik doğrulama, oyuncular oyuna girmeden önce tek kullanımlık kodla doğrulama yapar.

E-posta Değiştirme

E-posta adresini değiştirmek için oyuncunun gelen kutusuna tek kullanımlık kod gönderilir. Kod oyun içinde girildiğinde e-posta adresi güvenli şekilde güncellenir.

Şifre Sıfırlama

Oyuncular /passwordreset komutuyla oyun içinden token isteyebilir ve web sitesi üzerinden zaman ve güvenlik kısıtlamaları altında yeni şifre belirleyebilir.

ChatBridge

Web sitesi sohbetini oyun sunucusuyla senkronize eder. Oyuncular web sitesinde bir sunucu seçebilir, komut veya mesaj gönderebilir ve çevrim içi oyuncu listesiyle birlikte canlı olarak görüntüleyebilir.

Envanter Anlık Görüntüleri

Oyuncu her katıldığında veya ayrıldığında envanteri kaydedilir ve web profilinde GUI olarak gösterilir. İsteğe bağlı olarak diğer oyunculara da görünür hale getirilebilir.

Launcher Auth

Sunucuya erişmek için özel ZonelyLauncher’ınızın kullanılmasını gerektirir. Launcher olmadan katılan oyuncular indirme bağlantısıyla atılır ve yalnızca launcher üzerinden oynayabilir.

Gruplar

Başka bir eklenti üzerinden izin atayarak kullanıcılara ek ayrıcalıklar verebilirsiniz. Bu, profil menüsünde kullanılabilir.

Kılık Değiştirme Sistemi

Dil destekli menü metinleriyle tamamen GUI tabanlı rol/skin kılık değiştirme akışı sağlar.

Çoklu Dil

languages.yml tabanlı yerelleştirme, fallback stratejisi ve geniş modül kapsaması sunar.

Komutlar

/webprofile
/zc
/webprofile
/store
/credit
/support
/lastcredits
/auctions
/reports
/disguise
/credit [player]
/credit set [player] [amount]
/credit add [player] [amount]
/credit remove [player] [amount]
/creditvoucher [player] [amount]
/report [player]
/auction [amount]
/punish
/punish ban/ipban/mute/warning [player] [duration] [reason]
/punish unban/unmute/unwarning [player]
/zc npc spawn/remove web-profile/auctions/last-credits/reports/deliveries/web-store/supports/tournamnets [id]
/zc hologram lastcredits [id]
/club
/club help
/esports
/email <set|resend|status>
/passwordreset
/2fa <setup|confirm|cancel|disable|code|recovery>

E-Spor Genel Bakış

E-Spor modülü; kulüp kaydı, bekleme lobisi yönetimi, bracket oluşturma, canlı maç durum takibi, izleyici araçları, zamanlı loot ilerlemesi, özel düşme mekanikleri, dinamik arena etkinlikleri ve maç sonrası otomatik sıfırlama/temizlik dahil tam turnuva yönetimi içerir.

İzinler

zonely.auction
zonely.auction.manage
zonely.reports.view
zonely.punish
zonely.punish.ban
zonely.punish.mute
zonely.punish.warning
zonely.punish.history
zonely.punish.notify
zonely.punish.ipban
zonely.support.staff
zonely.support.ban
zcore.cmd.disguise
zcore.cmd.disguiselist
zcore.admin
esports.manage

Placeholderlar

%ZonelyCore_cash%
%ZonelyCore_perm%
%ZonelyCore_playername%
%ZonelyCore_status_delivery%
%ZonelyCore_lastcredit_<number>_display%
%ZonelyCore_lastcredit_<number>%
%ZonelyCore_lastcredit_<number>_name%
%ZonelyCore_lastcredit_<number>_amount%
%ZonelyCore_lastcredit_<number>_date%
%ZonelyCore_lastcredit_<number>_time%
%zonely_tournament_name%
%zonely_tournament_state%
%zonely_tournament_event%
%zonely_tournament_start%
%zonely_tournament_end%
%zonely_tournament_club_count%
%zonely_tournament_countdown%
%zonely_tournament_countdown_seconds%
%zonely_tournament_register_open%
%zonely_tournament_repeatable%
%zonely_tournament_repeat_days%
%zonely_tournament_repeat_mode%
%zonely_club_name%
%zonely_club_tag%
%zonely_club_seed%
%zonely_club_status%
%zonely_next_match_round%
%zonely_next_match_slot%
%zonely_next_match_a%
%zonely_next_match_b%
%zonely_active_match_id%
%zonely_match_time%
%zonely_match_id%
%zonely_match_players%
%zonely_match_kills%
%zonely_match_deaths%
%zonely_match_blocks%
%zonely_match_clubkills%
%zonely_match_clubkills_<TAG>%

Görseller

ZonelyCore ZonelyCore bStats

ZonelyCore API Hızlı Referans

Tüm örnekler ZonelyCore’un etkin olduğunu ve eklentinizin ona bağlı olduğunu varsayar.

API’ye Erişim

import dev.zonely.whiteeffect.api.ZonelyCoreAPI;

public final class MyAddon {

    private ZonelyCoreAPI api;

    public void onEnable() {
        api = ZonelyCoreAPI.get(); // safe once ZonelyCore is enabled
    }
}

Modül Anahtarlarını Kontrol Etme

if (!api.areVouchersEnabled()) {
    getLogger().warning("Vouchers module disabled, skipping custom voucher logic.");
}

if (api.areLastCreditsEnabled()) {
    getLogger().info("Last Credits module active — holograms and GUI calls are safe.");
}

Cash API

getBalance(name|player) mevcut kredi toplamını döndürür ve offline kullanım için güvenlidir. addBalance, withdraw ve setBalance güncellenmiş bakiyeyi döndürür. Yetersiz bakiye, veritabanı sorunları veya doğrulama hatalarında CreditOperationException fırlatırlar. isCached ve invalidateCache, manuel veritabanı düzenlemelerinden sonra bellek içi önbelleği yönetmek için kullanılabilir. Async yardımcılar (addBalanceAsync, withdrawAsync, setBalanceAsync) CompletableFuture<Long> döndürür ve işlemlerin ana thread dışında kalmasını sağlar.
import dev.zonely.whiteeffect.api.cash.CashAPI;
import dev.zonely.whiteeffect.api.cash.CreditOperationException;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
// 'plugin' below should be your JavaPlugin instance

CashAPI cash = api.cash();

try {
    long updated = cash.addBalance("PlayerOne", 500);
    long remaining = cash.withdraw("PlayerTwo", 250);
    cash.setBalance("PlayerVIP", 10_000);
    getLogger().info("Balances updated: " + updated + " / " + remaining);
} catch (CreditOperationException ex) {
    getLogger().warning("Credit operation failed: " + ex.getMessage());
}

cash.addBalanceAsync("AsyncGuy", 1000).thenAccept(newBalance ->
        Bukkit.getScheduler().runTask(plugin, () -> {
            Player player = Bukkit.getPlayerExact("AsyncGuy");
            if (player != null) {
                player.sendMessage("Your new balance: " + newBalance);
            }
        })
);

Voucher API

issueVoucher(issuer, target, amount) kredileri düşer ve VoucherIssueResult döndürür. Sonuç, eşya ve metadata bilgilerini içerir. parseVoucher(item) eşyaları güvenli şekilde inceler. redeemVoucher(details|item) krediyi hedef oyuncuya ekler. Yetersiz bakiye gibi doğrulama sorunlarında CreditOperationException fırlatır.
import dev.zonely.whiteeffect.api.voucher.VoucherAPI;
import dev.zonely.whiteeffect.api.voucher.VoucherIssueResult;
import dev.zonely.whiteeffect.api.cash.CreditOperationException;
// assumes 'player' is available

VoucherAPI vouchers = api.vouchers();

try {
    VoucherIssueResult voucher = vouchers.issueVoucher("Staff", "PlayerTwo", 250);
    player.getInventory().addItem(voucher.getVoucherItem());
    vouchers.redeemVoucher(voucher.getDetails());
} catch (CreditOperationException ex) {
    getLogger().warning("Voucher error: " + ex.getMessage());
}

Deliveries API

listDeliveries() yapılandırılmış ödül girişlerini dışa açar. getStatus(player, delivery) izin ve bekleme süresi durumunu açıklar. claim(player, delivery) ödülü verir. Profil yükleme hatalarında CreditOperationException fırlatabilir.
import dev.zonely.whiteeffect.api.cash.CreditOperationException;
// assumes 'player' is available

api.deliveries().listDeliveries().forEach(delivery -> {
    api.deliveries().getStatus(player, delivery).ifPresent(status -> {
        if (status.canClaimNow()) {
            try {
                api.deliveries().claim(player, delivery);
            } catch (CreditOperationException ex) {
                player.sendMessage("Delivery failed: " + ex.getMessage());
            }
        }
    });
});

Last Credits API

getLeaderboard(category) önbelleğe alınmış girişleri döndürür. Desteklenen kategoriler:
RECENT
ALL_TIME
YEARLY
MONTHLY
DAILY
getLastLeaderboardRefresh(category) anlık görüntünün güncelliğini dışa açar. getRecentTopups() PlaceholderAPI önbelleğini yansıtır. getViewerCategory(player) ve setViewerCategory(player, category) hologramları ve GUI görünümlerini oyuncu başına senkron tutar. openMenu(player, category) oyuncunun aktif kategorisine göre menüyü açar.
import dev.zonely.whiteeffect.menu.lastcredits.LastCreditsMenuManager;
// assumes 'player' is available

var recent = api.lastCredits().getLeaderboard(LastCreditsMenuManager.Category.RECENT);
recent.forEach(entry ->
        Bukkit.getLogger().info(entry.getPosition() + ". " + entry.getUsername() + " -> " + entry.getFormattedAmount())
);

LastCreditsMenuManager.Category active = api.lastCredits().getViewerCategory(player);
api.lastCredits().openMenu(player, active);

Secure Socket API

Secure Socket modülü config.yml üzerinden yönetilir. İlgili ayarlar:
web-token
socket-port
Modül etkin olmalıdır. start(), stop() ve restart() dinleyiciyi yönetir. isActive() ve getPort() çalışma zamanı durumunu dışa açar.
if (api.isSocketEnabled()) {
    if (!api.socket().isActive()) {
        if (!api.socket().start()) {
            getLogger().warning("Secure socket could not start. Check config.yml.");
        }
    } else {
        api.socket().restart();
    }
}

Auction API

openMainMenu, openSoldMenu, openPurchasedMenu ve openPurchaseMenu async threadlerden güvenle çağrılabilir. Yönetici gerektiğinde Bukkit threadine geri geçer. getMenuManager() GUI kontrolcüsünü dışa açar. getDao() özel iş akışları için doğrudan veritabanı erişimi sağlar. Özel komutlar yayınlamadan önce api.areAuctionsEnabled() kontrolü yapın.
import dev.zonely.whiteeffect.api.auction.AuctionDao;
// assumes 'player' is available

if (api.areAuctionsEnabled()) {
    api.auctions().openMainMenu(player);

    AuctionDao dao = api.auctions().getDao();
    if (dao != null) {
        dao.listByCreator(dao.fetchUserId(player.getName()))
                .forEach(item -> getLogger().info(item.getCustomTitle()));
    }
} else {
    player.sendMessage("Auctions are disabled on this server.");
}

VirusTotal

VirusTotal üzerinde bazı uyarılar görünebilir. Kaynak kodu incelediğinizde bunun SecureSocket kullanımıyla ilişkili olduğunu görebilirsiniz. VirusTotal raporu

Kaynak Kod

GitHub kaynak kodu

Eklenti İndirme Linki

SpigotMC üzerinden indir