- Beranda
- Komunitas
- Tech
- Programmer Forum
[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit


TS
captainfroster
[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit
Cara membuat Plugin Bukkit
Halo gan


Paling ane update ini pas ane ada free-time karena mungkin sibuk ngurusin server nya DianTama :v
Kemungkinan ane gk jelasin dengan baik gan atau tidak semua ( contoh : gak kasih tau cara make eclipse )


1. Setup Everything
Spoiler for SetupEverything:
Disini kita akan setup semuanya tapi gk semuanya juga xD ... bagi orang yang make IDE Netbeans. Mohon pakai IDE Eclipse yang bisa di sedot disini eclipse.org
Bagi para-para master netbeans :v terserah ente kalau bisa pake library dan export semua nya jadi .class :v
Pertama buatlah Workspace baru. Disini saya akan simpan workspace saya di "/Users/cptFroster/Documents/CraftZone". tapi agan boleh terserah mau taruh dimana workspace nya :v
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/73mRS.png)
Setelah itu kita akan membuat Java Project baru dengan Pencet File -> New -> Java Project. Setelah itu pencet Finish
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/73mYX.png)
Oke sekarang kita mau Bukkit/Spigot jar kita jadi library untuk itu kita klik kanan Project kita dan Pencet Properties ( Tombol Cepat Command + I / Control + I )
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/73n54.png)
Oke kita akan kebagian Java Build Path dan ke tab Libraries
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/73n9Y.png)
Pencet Add External JARs... dan pilih file bukkit.jar / spigot.jar agan yang bisa di sedot di dl.bukkit.org / spigotmc.org. setelah itu pencet Open dan Ok
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/73ngm.png)
Ok gan kayaknya bagian Setup Everything tuh udah selesai :v
Ayo lari kebagian selanjutnya yaitu Mulai pakai Bukkit
2. Mulai Pakai Bukkit
Spoiler for MPB:
Oke gan sebelum kita mulai mungkin agan harus selalu ingat ini yaitu "Jangan lupa buat plugin.yml dan double check besar kecil huruf nya"
Oke sekarang kita akan buat package baru nih

![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/73nqf.png)
Nah kita akan buat Main Class nya. kalau ane sih biasanya bilang nya main tapi agan bisa aja namain apa aja kayak cendolers , kolor , plugin , kewlplugin.
untuk contoh ini ane akan namakan main class ane Cendol
P.S Jangan pikir Type arleady exist tuh akan terjadi pada agan karena ane dah baut class cendol duluan :v
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/73nzM.png)
Oke gan kayaknya ini mulai - mulai codingnya pertama kita akan buat class cendol nge-extend sama Class JavaPlugin dari Bukkit dan buat dua method yang dioverride yaitu onEnable() dan onDisable() dua-duanya gak pakai parameter.
P.S Bagi agan yang males import2 ada tombol cepat yaitu ctrl+shift+o atau command+shift+o
Code:
package pelosti.Tutkaskus;
import org.bukkit.plugin.java.JavaPlugin;
public class Cendol extends JavaPlugin{
@Override
public void onEnable(){
}
@Override
public void onDisable(){
}
}
Oke ane jelasin dlu dua method ini apa.
kalau onEnable() itu method nya dijalankan pas bukkit ngeload plugin agan kalau onDisable() itu methodnya dijalankan pas plugin agan di disable!.
Sebelum gua tinggalkan agan dengan kode yang baru seberapa nanti mari kita tambahkan surat pas plugin diload untuk ini kita akan pakai method yang dari javaplugin yang kita barusan extend :v jadi
Code:
package pelosti.Tutkaskus;
import org.bukkit.plugin.java.JavaPlugin;
public class Cendol extends JavaPlugin{
@Override
public void onEnable(){
this.getLogger().info("Surat agan disini");
}
@Override
public void onDisable(){
}
}
Oke dah selesai nih eits! jangan diexport dlu kita harus buat plugin.yml nya!
untuk tutorial buat Plugin.yml nya ane tidak akan baut tutorial karena lumayan ribet jelasin nya

3. Command
Spoiler for CMD:
Oke gan ternyata bisa :v. oke sekarang di class main kita atau yang ane buat cendol

nih ane kasih onCommand silahkan copas :P
Code:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
//sesuatu harus dimasukan disini :v
return false;
}
Oke untuk buat command nya kita akan ngebuat if dengan statement jika command nya sesuai dengan text yang kit set

dengan tambahkan ini didalam method oncommand kita!
Code:
if (cmd.getName().equalsIgnoreCase("cendol")){ // bebas ganti cendol dengan apapun
//Code untuk command cendol disni
return true;
}
Oke sekarang agan tau cara buat command gimana kalau kita mau buat command lagi simple dengan else if
Code:
if (cmd.getName().equalsIgnoreCase("cendol")){ // bebas ganti cendol dengan apapun
//Code untuk command cendol disni
return true;
}else if(cmd.getName().equalsIgnoreCase("bata"){ // bebas ganti bata dengan apapun
//Code untuk command cendol disini
return true;
}
Woke mari kita bahas tiap parameter itu apa :P
Code:
CommandSender sender adalah object langsung keplayer yang jalankan command dengan ini kita bisa cast sender jadi player tapi kalau sender bisa dibilang console nanti ane akan kasih tau cara ngebuat command khusus console. dan ada method sangat-sangat dipakai disender
Command cmd adalah object command dibukkit kamu bisa lihat ada beberapa method di cmd ini juga jarang dipakai sebagai sebuah fungsi di command kita
String[] args adalah argument tiap command mungkin yang programmer java tahu args itu apa bagi agan gk tahu args itu apa.. args itu hanya text yang kita tulis setelah command itu jalan. contoh : /warp wc , /cendol captainfroster :v , /tphere smsunarto , /bantemp xcodius 30m , /jail kolor_ijo 120d.
kalau label ane juga kurang tahu tapi ane gak pernah makai itu jadi gk dipentingkan :P
Oke ane akan kasih beberapa contoh dan yang harus diperhatikan di spoiler didalam spoiler ini :P
Arguments
Spoiler for argscmd:
Oke gan di arguments bukkit itu gak kayak di java biasa harus ada pengecekan bila ada berapa args atau tidak ada sama sekali kalau ini tidak dilakukan akan keluar ArrayOutOfBoundsException!. untuk nge-prevent kejadian ini kita akan ngebuat if untuk ngecek apakah args lebih dari satu
NOTE : args itu string array
Contoh
Code:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("cendol")){ // bebas ganti cendol dengan apapun
//Code untuk command cendol disni
if(args.length > 0){
if(this.getServer().getOnlinePlayers().equals(this.getServer().getPlayer(args[0]))){
this.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "+1 Cendol dari " + sender.getName());
}else{
sender.sendMessage(ChatColor.GOLD + "Siapa tuh ?? gak kenal gue :P");
}
}else{
sender.sendMessage(ChatColor.GOLD + "Distributor cendol gak tahu nih harus dikirim kemanamohon /cendol <nama orangnya>");
}
return true;
}
return false;
}
Permissions / Have to be op commands
Spoiler for PHOP:
Ok gan coba kita buat ada command khusus admin! yang dapat permission / op! Untuk ini kita akan buat command baru yaitu pabrikcendol atau apa ajalah
ini bisa digunakan karena ada method boolean di class CommandSender yaitu isOp() dan isHasPermission(String perms)
Contoh
Code:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("cendol")){ // bebas ganti cendol dengan apapun
//Code untuk command cendol disni
if(args.length > 0){
if(this.getServer().getOnlinePlayers().equals(this.getServer().getPlayer(args[0]))){
this.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "+1 Cendol dari " + sender.getName());
}else{
sender.sendMessage(ChatColor.GOLD + "Siapa tuh ?? gak kenal gue :P");
}
}else{
sender.sendMessage(ChatColor.GOLD + "Distributor cendol gak tahu nih harus dikirim kemanamohon /cendol <nama orangnya>");
}
return true;
}else if(cmd.getName().equalsIgnoreCase("pabrikcendol")){
if(sender.isOp() || sender.hasPermission("lempar.bata.kemana.mana.dan.tidak.peduli.apa.yang.lain.pikirkan")){// panjang ya min :v
sender.sendMessage(ChatColor.GOLD + "8)");
}else{
sender.sendMessage(ChatColor.RED + "");
}
return true;
}
return false;
}
Casting Sender jadi player

Spoiler for CSJP:
Oke gan disini kita akan ngecast sender jadi player kenapa karena di sender gak punya semua method :P ini dikarenakan takut console jalan command ini
ane akan kasih contoh yang paling aman!
Code:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("cendol")){ // bebas ganti cendol dengan apapun
//Code untuk command cendol disni
if(sender instanceof Player){
Player manusia = (Player) sender;
if(args.length > 0){
if(this.getServer().getOnlinePlayers().equals(this.getServer().getPlayer(args[0]))){
this.getServer().getPlayer(args[0]).sendMessage(ChatColor.GREEN + "+1 Cendol dari " + manusia.getName());
manusia.setHealth(1.0D);
}else{
manusia.sendMessage(ChatColor.GOLD + "Siapa tuh ?? gak kenal gue :P");
}
}else{
manusia.sendMessage(ChatColor.GOLD + "Distributor cendol gak tahu nih harus dikirim kemanamohon /cendol <nama orangnya>");
}
return true;
}else{
sender.sendMessage("Ngecendol itu cuman bisa sama manusia dan manusia");
}
}
return false;
}
Perbedaan commandsender ama player itu apa kalau sender itu cuman sekedar yang jalan jadi gak bisa ngebunuh orang itu lemparin keangkasa atau buat dia invisble. nah kalau player kita bisa buat command yang ngebunuh orang , lempar keangkasa , dan poop :v
4. Plugin YAML
Spoiler for PYAML:
Oke akhirnya ane kasih tau cara buat Plugin YML! ini sangat diperlukan biar bukkit tahu command apa aja dan permissions dan juga siapa yang buat dll
Pertama ke eclipse. setelah itu ke New -> File dan beri nama plugin.yml dan taruh di project agan ke folder src
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/75osf.png)
Oke. disini ane akan kasih beberapa peraturan YML
Pertama : Jangan pakai Tab
Kedua : Harus sejajar sesuai group
Kalau agan takut ada error atau apa silahkan ke Online YAML Parser
http://yaml-online-parser.appspot.com/
Oke ane akan kasih template dasarnya dulu dan ane akan jelas kan tiap variable itu apa
Code:
name: Cendolers
main: pelosti.Tutkaskus.Cendol
version: 1.0
author: captainfroster
name = nama plugin
main = Main Class harus disertai package!
version = versi plugin
author = pembuat plugin
Oke gimana kalau kita mau kasih command ke plugin kita

Code:
commands:
cendol:
description: untuk ngecendol orang
pabrikcendol:
description: untuk liat keadaan pabrik cendol
Commands : group variable untuk commands yang harus dilakukan kalau ada command
Cendol : ini harus sesuai dengan nama command agan.
description : Deskripsi itu command untuk apa biasanya ditulis di /help
Oke gimana kalau permissions?
Contoh
Code:
permissions:
cendol.kodokilang:
default: true
description: kemana kodox
children:
cendol.pelostiwashere: true
permissions : group variable untuk permissions
cendol.kodokilang : permission
default : apakah command ini bisa dipakai untuk op atau semua ( hanya bisa di tulis op / true )
description : deskripsi permissions biasanya harus dan wajib ditulis kalau pengen di rilis di bukkitdev
children : group variable untuk permissions ini termasuk permissions apa aja
Oke sekarang agan bisa merilis plugin agan menjadi .jar dan ane kasih tau caranya di tutorial berikut nya!
5. Bungkus jadi JAR!
Spoiler for nasbung:
Ok sekarang kita akan release plugin kita tapi jangan lupa untuk membuat plugin.yml dan tutup semua editor text yang berhal dengan plugin.yml!. dan jangan lupa save-all dan reload eclipse (f5)
Ke project plugin agan dan klik kanan dan pilih export.
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/75pgN.png)
jangan lupa untuk pilih JAR File di folder java!
Oke pencet next dan check Export generated files and resources
![[TUTORIAL] [JAVA] Cara membuat Plugin Bukkit](https://dl.kaskus.id/puu.sh/75pCM.png)
oke pencet finish dan jadi deh Plugin agan tinggal test aja dibukkit!
kalau kena error pencet ok dan finish. ini dikarenakan gak semua resource ke load!

More coming soon

Polling
0 suara
Agan lebih mending mana
Diubah oleh captainfroster 22-02-2014 03:19
0
4.8K
Kutip
7
Balasan


Komentar yang asik ya
Urutan
Terbaru
Terlama


Komentar yang asik ya
Komunitas Pilihan