PlaceholderAPI | Nasıl Çalışır? Nasıl Kullanabilirim?

erkutayy

Ağaç Yumruklayıcı
Moderatör
5
1
60
#1
1575133837043.png

Ne İşe Yarar?
PlaceholderAPI, eklentilerden, sunucudan, oyuncudan veya pek çok farklı değerden veri çekip, çektiğiniz verileri menülere, sohbet mesajlarına ve düzenlenilebilir olan pek çok kısıma aktarabilmenize yarar.

Nasıl Kullanacağım?
Eğer kullanmak istediğiniz eklenti placeholderapi destekliyorsa ilk önce placeholderapinin github sayfasından kullanılabilir placeholderları görüntüleyebilirsiniz, github sayfasına erişmek için buraya tıklayabilirsiniz. Bu sayfada istediğiniz eklentinin adını göremiyorsanız üzülmenize gerek yok belki eklentinin kendi sayfasında placeholderlar vardır, tekrar gözatabilirsiniz.

Eğer placholderınızı bulduysanız bunu %placeholder% şeklinde placeholderapi destekleyen eklentinizde kullanabilirsiniz.
Eğer nasıl kullanacağınızı bilmiyorsanız size örnekleyerek anlatayım, hem daha hızlı hem de anlayarak öğrenmenize yardımcı olur.

Mesela scoreboardda oyuncunun ismini göstermek istiyorsunuz, hemen yeni bir satıra geçip

Oyuncu: %player_name%

şeklinde palceholderımızı ve açıklamamızı yazalım artık hazır! Değer scoreboardda Oyuncu: oyuncuismi şeklinde gözükücek.
Buradaki placeholder eklentinin github sayfasındaki placeholder listesinden alınmıştır. Farklı değerler için başka placeholderlar kullanmalısınız. Bşka bir örnek olarak bir eklentiden veri çekelim, skyblock sunucularının vazgeçilmez ismi ASkyBlock bu iş için yeterince uygun

Ada seviyesi: %askyblock_level%

Bu kısımda Ada seviyesi: oyuncuların neyi gösterdiğini anlayabilmesi için açıklama, %askyblock_level% kısmı ise oyuncunun ada seviyesini gösteriyor.
Bunlar yeterince anlaşılabilir ve kolay örneklerdi, ama insan beyni bazen anlayamıyor eğer sizlerde hâlâ anlayamadıysanız bunları yorum kısmında belirtebilirsiniz.

Ayar Dosyaları
Gelin isterseniz birde config.yml ve javascript_placeholders.yml dosyalarına göz atalım!

# PlaceholderAPI version 2.8.1
# Created by extended_clip

check_updates: true
cloud_enabled: true
auto_install_expansions: true
boolean:
'true': 'yes'
'false': 'no'
date_format: MM/dd/yy HH:mm:ss
expansions:
pinger:
offline: offline
check_interval: 10
online: online
vault:
formatting:
thousands: k
trillions: T
quadrillions: Q
billions: B
millions: M
bungee:
check_interval: 30
javascript:
engine: javascript

# javascript_placeholders.yml
# You can create custom placeholders which utilize javascript to determine the result of the custom placeholder you create.
# You can specify if the result is based on a boolean or the actual javascript.
#
# If you do not specify a type: the placeholder will default to a boolean type
# A boolean type must contain a true_result: and false_result:
#
# A string type only requires the expression: entry
#
# Javascript placeholders can contain normal placeholders in the expression, true_result, or false_result
# These placeholders will be parsed to the correct values before the expression is evaluated.
#
# Your javascript placeholders will be identified by: %javascript_<identifier>%
#
# Javascript placeholder format:
#
# BOOLEAN TYPE
# <identifier>:
# expression: <expression>
# type: 'boolean'
# true_result: <result if expression is true>
# false_result: <result if expression is false>
#
# STRING TYPE
# <identifier>:
# expression: <expression>
# type: 'string'
#
#
# ==== ADVANCED VARIABLES ====
# DO NOT USE THESE VARIABLES UNLESS YOU KNOW WHAT YOU ARE DOING!
#
# You can access a few Bukkit API classes and methods using certain keywords:
#
# Using "BukkitServer" in your javascript will return Bukkit.getServer()
# You can use any methods inside of the Server class:
#
# Example: BukkitServer.getBannedPlayers().size().toFixed()
# Will return how many players are banned
#
# This variable is handy if you want to iterate through all online players.'
#
# Using "BukkitPlayer" in your javascript will return the Player object you are setting placeholders for.
# You can use any methods inside of the Player class:
#
# Example: BukkitPlayer.hasPermission("some.permission")
# Will return if the player has a specific permission
# This variable is handy if you want to check a players permission node, or access other methods inside of
# the player class for the specified player.
#
# More advanced variables are coming soon! Only use these variables if you know what you are doing!
#
# ==================
#
#
# Javascript placeholder examples:
#
# millionaire:
# expression: '%vaulteco_balance% >= 1000000'
# type: 'boolean'
# true_result: '&aMillionaire'
# false_result: '&cbroke'
# is_staff:
# expression: '"%vault_group%" == "Moderator" || "%vault_group%" == "Admin" || "%vault_group%" == "Owner"'
# type: 'boolean'
# true_result: '&bStaff'
# false_result: '&ePlayer'
# health_rounded:
# expression: 'Math.round(%player_health%)'
# type: 'string'
# staff_online:
# expression: 'var i = 0; for (var p in BukkitServer.getOnlinePlayers()) { if (BukkitServer.getOnlinePlayers()[p].hasPermission("staff.online")) {i = i+1;};} i.toFixed();'
# type: 'string'
#
#
# You can optionally specify a file that the javascript expression will be loaded from if your expression
# is bigger than 1 line. To specify javascript be loaded from a file, follow this format:
#
# is_op:
# expression: 'file: is_op.js'
# type: 'string'
#
# The following placeholder will attempt to load javascript from the /plugins/PlaceholderAPI/javascripts/is_op.js file
# if the folder/file exists. If the folder/file does not exist it will be created.
# You must specify the file extension with the file name. Any file extension is accepted.

millionaire:
expression: '%vaulteco_balance% >= 1000000'
type: boolean
true_result: '&aMillionaire'
false_result: '&cbroke'
is_staff:
expression: '"%vault_group%" == "Moderator" || "%vault_group%" == "Admin" || "%vault_group%"
== "Owner"'
type: boolean
true_result: '&bStaff'
false_result: '&ePlayer'
staff_online:
type: string

Evet, sizinde gördüğünüz gibi eklenti javascriptleri destekliyor eğer javascript biliyorsanız işinize yarayacak pek çok şey yapabilirsiniz, hemen sizlere birkaç örnek ile anlatayım.

İlk önce javascript expansionu'nu yüklüyoruz. Yüklemek için oyundan veya konsoldan /papi ecloud download javascript komutunu yazıyoruz, ardından javascriptin çalışması için /papi reload komutunu giriyoruz, artık herşey tamamdır javascriptimizi yazıp kullanmaya başlayabiliriz!

Bir yazı dosyası oluşturup dosyamızı<dosya-adı.js> olarak javascripts klasörüne kaydediyoruz, eğer böyle bir klasör yoksa paniklemenize gerek yok kendiniz oluşturabilirsiniz.

Ardından dosyayı Notepad++ gibi bir dosya editörüyle açıp javascriptimizi düzenleyebiliriz.

Sizlere PlaceholderAPI'nin kendi sayfasından aldığım örnek bir javascript ile anlatayım, bu javascript oyuncunun şuanki canını gösteriyor bu javascriptin adını oyuncucani.js olarak kaydediyoruz tabi siz istediğiniz isimi verebilirsiniz.

Ardından javascripti placeholderapinin okuması için bunu javascript_placeholders.yml dosyasına kaydetmeliyiz, dosyayı açıp yeni bir satıra

Kod:
oyuncucani:
   file: oyuncucani.js
şeklinde kaydediyoruz, file değernini karşısındaki oyuncucani.js 'yi sizin kendi javascriptinize verdiğiniz isimle değiştiriyorsunuz
oyuncucani ise placeholderi nasıl kullanacaksan o şekilde değiştiriyoruz.

Buda javascript dosyasının içinde olması gerekenler.
JavaScript:
function hp() {
    return Math.round(parseInt('%player_health%') * 100) / 100;
}
hp();
Şimdi sıra geldi artık bunu göstermeye ilk önce nerede göstereceksek oraya giriyoruz ve yeni bir satıra %javascript_dosyaadi% şeklinde kaydediyoruz buradaki dosyaadi' nı kendi verdiğiniz değerle değiştiriyorsunuz.
Artık tamamdır! Placeholderımız istediğimiz yerde gözüküyor!

Komutlar
Aşağıda görebildiğiniz gibi bütün komutlar gözüküyor.

1575135919345.png


İyi forumlar!
 
Son düzenleme: