Sol Reklam

Rehber JAVA Minecraft için VaultAPI kullanımı ( Sadece Economy ) | Minecraft Plugin Rehberi

Durum
Mesaj gönderimine kapalı.

HaktanOzkan

Demir Cevheri Gibiyim
Premium

Discord:

hktanozkan

Katılım
22 Temmuz 2014
Mesajlar
187
Elmaslar
100
Puanlar
13.775
Minecraft
HaktanOzkan
Herkese merhaba. Bir çok sunucuda Vault eklentisini görmekteyiz. Hemen hemen herkes bu eklentinin ne işe yaradığını bilir bu yüzden açıklama gereği duymuyorum. Bu konuda bir eklenti geliştirirken Vault un bize sunduğu API'ı nasıl kullanacağınızı göstereceğim.

IDE : Eclipse Java
Sürüm : 1.8.8

Konuya başlamadan önce belirtmek istiyorum. Bu anlatım sıfır seviyede bir geliştiriciye göre bir anlatım şekli olmayacaktır. Temel bilgileri bilmeniz gerekir.

Şimdi geçelim işimize.

Öncelikle Vault eklentisini kendi eklentinizin içine import etmeniz gerekiyor.
Hemen nasıl yapılacağına bakalım.

vvvvvv.png


Açılan pencereden Vault eklentisini seçiyoruz ve aç tuşuna tıklıyoruz.


vaultselect.png


Artık Vault eklentisini kendi eklentimiz içine import ettik. Şimdi sıra kod kısmına geldi. Bu kodlara Vault'un github linkindende ulaşabilirsiniz.

Öncelikle kendi class dosyamızın içine Vault eklentisinin içindeki bazı paketleri import etmemiz gerekiyor.
Hemen yapalım.

Java:
import java.util.logging.Logger;

import net.milkbowl.vault.chat.Chat;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
import net.milkbowl.vault.permission.Permission;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

Bu paketler kendi eklentimiz içinde Vault eklentisinin paketlerini kullanmamızı sağlayan import kodlarıdır.

Sıra geldi genel kod kısmına. Aşağıdaki kodu direkt olarak kendi eklentinizin ana class dosyasına yapıştırıyorsunuz. Ek olarak bir şeyler değiştirmenize gerek yok.

Java:
public class ExamplePlugin extends JavaPlugin {
    
    private static final Logger log = Logger.getLogger("Minecraft");
    private static Economy econ = null;
    private static Permission perms = null;
    private static Chat chat = null;

    @Override
    public void onDisable() {
        log.info(String.format("[%s] Disabled Version %s", getDescription().getName(), getDescription().getVersion()));
    }

    @Override
    public void onEnable() {
        if (!setupEconomy() ) {
            log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
        setupPermissions();
        setupChat();
    }
    
    private boolean setupEconomy() {
        if (getServer().getPluginManager().getPlugin("Vault") == null) {
            return false;
        }
        RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
        if (rsp == null) {
            return false;
        }
        econ = rsp.getProvider();
        return econ != null;
    }
    
    private boolean setupChat() {
        RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
        chat = rsp.getProvider();
        return chat != null;
    }
    
    private boolean setupPermissions() {
        RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
        perms = rsp.getProvider();
        return perms != null;
    }
    
    public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
        if(!(sender instanceof Player)) {
            log.info("Only players are supported for this Example Plugin, but you should not do this!!!");
            return true;
        }
        
        Player player = (Player) sender;
        
        if(command.getLabel().equals("test-economy")) {
            // Lets give the player 1.05 currency (note that SOME economic plugins require rounding!)
            sender.sendMessage(String.format("You have %s", econ.format(econ.getBalance(player.getName()))));
            EconomyResponse r = econ.depositPlayer(player, 1.05);
            if(r.transactionSuccess()) {
                sender.sendMessage(String.format("You were given %s and now have %s", econ.format(r.amount), econ.format(r.balance)));
            } else {
                sender.sendMessage(String.format("An error occured: %s", r.errorMessage));
            }
            return true;
        } else if(command.getLabel().equals("test-permission")) {
            // Lets test if user has the node "example.plugin.awesome" to determine if they are awesome or just suck
            if(perms.has(player, "example.plugin.awesome")) {
                sender.sendMessage("You are awesome!");
            } else {
                sender.sendMessage("You suck!");
            }
            return true;
        } else {
            return false;
        }
    }
    
    public static Economy getEconomy() {
        return econ;
    }
    
    public static Permission getPermissions() {
        return perms;
    }
    
    public static Chat getChat() {
        return chat;
    }
}

Vault eklentisinin Github adresi:

Peki bunu nasıl kullanacağız ?

Java:
getEconomy().bankBalance(String name);
//Bankanın sahip olduğu tutarı verir

getEconomy().bankDeposit(String name, double amount);
//Bir banka hesabına para yatırır
//Negatif bir değer yazılırsa hata verecektir !

getEconomy().bankHas(String name, double amount);
//Bankada belirtilen tutara sahip olup olmadığına bakılmaksızın doğru veya yanlış döndürür
//Negatif bir değer yazılırsa hata verecektir !

getEconomy().bankWithdraw(String name, double amount);
//Bir banka hesabından para çekme
//Negatif bir değer yazılırsa hata verecektir !

getEconomy().createBank(String name, org.bukkit.OfflinePlayer player);
//Belirtilen adla ve oyuncunun sahibi olarak bir banka hesabı oluşturur

getEconomy().createPlayerAccount(org.bukkit.OfflinePlayer player);
//Bir oyuncu için bir banka hesabı açar

getEconomy().currencyNamePlural();
//Para biriminin adını çoğul biçimde verir

getEconomy().currencyNameSingular();
//Para biriminin adını tekil biçimde döndürür

getEconomy().deleteBank(String name);
//Bir banka hesabını siler

getEconomy().depositPlayer(org.bukkit.OfflinePlayer player, double amount);
//Belirtilen oyuncuya istenilen miktarda para yatırmanızı sağlar

getEconomy().getBalance(org.bukkit.OfflinePlayer player);
//Oyuncunun para miktarını döndürür

getEconomy().getBanks();
//Tüm bankaların listesini alır

getEconomy().getName();
//Ekonomi yönteminin adını alır

getEconomy().has(org.bukkit.OfflinePlayer player, double amount);
//Belirtilen oyuncunun hesabında belirtilen miktarın olup olmadığını döndürür
//Negatif bir değer yazılırsa hata verecektir !

getEconomy().hasAccount(org.bukkit.OfflinePlayer player);
//Bu oyuncunun sunucuda henüz bir hesabı olup olmadığını kontrol eder
//oyuncu sunucuya en az bir kez katılmışsa her zaman doğru olacaktır
//çünkü tüm önemli ekonomi eklentileri
//oyuncu sunucuya katıldığında otomatik olarak bir oyuncu hesabı oluşturur.

getEconomy().hasBankSupport();
//Verilen uygulama bankaları destekliyorsa doğru döndürür

getEconomy().isBankMember(String name, org.bukkit.OfflinePlayer player);
//Oyuncunun banka hesabına üye olup olmadığını kontrol eder

getEconomy().isBankOwner(String name, org.bukkit.OfflinePlayer player);
//Bir oyuncunun belirtilen isimde banka hesabı sahibi olup olmadığını kontrol edin

getEconomy().isEnabled();
//Ekonomi yönteminin etkin olup olmadığını kontrol eder

getEconomy().withdrawPlayer(org.bukkit.OfflinePlayer player, double amount);
//Bir oyuncudan belirtilen miktar kadar para çeker
//Negatif bir değer yazılırsa hata verecektir !

Umarım işinize yaramıştır. Herkese iyi geceler...
 

MustafaBingul

Creeper Evimi Patlattı

Discord:

BingulHan#4136

Katılım
27 Mayıs 2018
Mesajlar
401
Elmaslar
143
Puanlar
7.085
Yer
Türkiye
Minecraft
BingulHan
Yararlı bir konu olmuş meslektaşım.
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı