Java yazmayakla uğraşıyorum takıldığım konu anlayanlar bakabilirmi?

Nigganetwork

Play.NiggaNetwork.Net !
Mesajlar
265
En iyi cevaplar
0
Beğeniler
58
Puanları
330
Ruh hali
package com.project.project;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class FirstCommand extends JavaPlugin implements Listener{

public void ServerStarted(){
Bukkit.getServer().getPluginManager().registerEvents(this, this);
}

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
Player o = (Player) sender;
if(label.equalsIgnoreCase("Canlan")) {
if(o.hasPermission("canlan.canlan")){
o.setFoodLevel(20);
o.setHealth(20);
o.sendMessage(ChatColor.AQUA + "Canlandirildin " + o.getName() + ".");
}
if(label.equalsIgnoreCase("Öl")) {
if(o.hasPermission("geber.geber")){
o.setHealth(0);;
o.setFoodLevel(1);
o.sendMessage(ChatColor.DARK_RED + o.getName() + " Olduruldun!");

}
}
}
return true;
}
}

Bunu yazdım fakat 2. "/öl" Komutu kullanılmıyor nasıl çoklu komut atayabilirim? Her komut için yeni class açmammı gerekiyor internette bunun çözümünü bulamadım herkes farklı komutlarla anlatmış tam anlayamıyorum şimdilik :/
 


bgencacat

Lapis Toplayıcısı
Mesajlar
1,139
En iyi cevaplar
0
Beğeniler
648
Puanları
1,840
Belki de iki noktalı virgül kullandığın için çalışmıyordur, kim bilir.
o.setHealth(0);;
 

Maruf61

Lapis Toplayıcısı
Mesajlar
1,038
En iyi cevaplar
0
Beğeniler
296
Puanları
590
javada pes pese 2 ; koymanin sakincasi yok.

konuya gelirsek 1. si "label" degil "cmd" kullan. diger bir sikinti ise 2. komut 1. komutun if i icinde duruyor. "return true;" dan once 1 tane "}" sil, "if (label.equalsIgnoreCase ("öl"))" den once ekle. ayrica komutlarda turkce karakter kullanma plugin yml turkce karakterler kullandiginda patlayabilir.

Sent from my SM-N9005 using Tapatalk
 

IRFN

Sonoyuncu.Network
Mesajlar
1,043
En iyi cevaplar
0
Beğeniler
1,314
Puanları
3,230
Öncelikle onCommand fonksiyonunun başına @Override eklemen gerekirdi, bu şekilde "Canlandır" komutu nasıl çalışmış anlamıyorum. Hepsini geçtim, onEnable foknsiyonu yok bu kodlarda, StartGame(); methodunu nerde çalıştırdın ki acaba?
Kodları incelediğimde parantezlerde de hata yaptığını görüyorum. Ayrıca CommandExecutor'u implement etmeyi de unutmuşsun.
Ayrıca command boolean fonksiyonunu return false ile bitir, true değil.

Gelelim soruna, çoklu komut yapmak için kullanmak istediğin her komutu plugin.yml'de tanımlaman gerekir, plugin yml'yi utf-8 olarak kaydederek Türkçe karakter içeren "öl" komutunu register edebilir misin emin değilim, ama muhtemelen hata verecektir.
Öl yerine yine permissionda yazdığın gibi geber komutunu kullanabilirsin.
Velhasıl, düzenleyerek hazırladığım kod aşağıdadır. plugin.yml dosyasına geber komutunu da canlan komutunu tanımladığın gibi tanımlamalısın.
PHP:
package com.project.project;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class FirstCommand extends JavaPlugin implements Listener, CommandExecutor{


    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        Player o = (Player) sender;
            if(label.equalsIgnoreCase("canlan")) {
                if(o.hasPermission("canlan.canlan")){
                    o.setFoodLevel(20);
                    o.setHealth(20);
                    o.sendMessage(ChatColor.AQUA + "Canlandirildin " + o.getName() + ".");
                }
            }
            if(label.equalsIgnoreCase("geber")) {
                if(o.hasPermission("geber.geber")){
                    o.setHealth(0);
                    o.sendMessage(ChatColor.DARK_RED + o.getName() + " Olduruldun!");

                }
            }
    return false;
    }
}

Not: Player o = (Player) sender; kodu yerine,
Player o = Bukkit.getExactPlayer(args[0]) == null ? (Player) sender : Bukkit.getExactPlayer(args[0]);
kodunu kullanırsan, /komut nick yazdığında nickini yazdığın kişide de işe yarar.
Anladığım kadarıyla bu işi yeni öğreniyorsun, ilk komutunu çalıştırmayı deniyorsun. Attığın kodlar ile benim yazdığım kodları incele, aradaki farkları görmeye çalış. Takıldığın, bu neden böyle dediğin yer olursa konu açarak beni etiketle, gördükçe cevaplamaya çalışırım. Öğrenmek isteyenlerin hep yanındayım.
 
Son düzenleme:

bydemir06

Obsidyen Madencisi
Mesajlar
1,249
En iyi cevaplar
0
Beğeniler
1,394
Puanları
3,200
Öncelikle onCommand fonksiyonunun başına @Override eklemen gerekirdi, bu şekilde "Canlandır" komutu nasıl çalışmış anlamıyorum. Hepsini geçtim, onEnable foknsiyonu yok bu kodlarda, StartGame(); methodunu nerde çalıştırdın ki acaba?
Kodları incelediğimde parantezlerde de hata yaptığını görüyorum. Ayrıca CommandExecutor'u implement etmeyi de unutmuşsun.
Ayrıca command boolean fonksiyonunu return false ile bitir, true değil.

Gelelim soruna, çoklu komut yapmak için kullanmak istediğin her komutu plugin.yml'de tanımlaman gerekir, plugin yml'yi utf-8 olarak kaydederek Türkçe karakter içeren "öl" komutunu register edebilir misin emin değilim, ama muhtemelen hata verecektir.
Öl yerine yine permissionda yazdığın gibi geber komutunu kullanabilirsin.
Velhasıl, düzenleyerek hazırladığım kod aşağıdadır. plugin.yml dosyasına geber komutunu da canlan komutunu tanımladığın gibi tanımlamalısın.
PHP:
package com.project.project;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class FirstCommand extends JavaPlugin implements Listener, CommandExecutor{

 
    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        Player o = (Player) sender;
            if(label.equalsIgnoreCase("canlan")) {
                if(o.hasPermission("canlan.canlan")){
                    o.setFoodLevel(20);
                    o.setHealth(20);
                    o.sendMessage(ChatColor.AQUA + "Canlandirildin " + o.getName() + ".");
                }
            }
            if(label.equalsIgnoreCase("geber")) {
                if(o.hasPermission("geber.geber")){
                    o.setHealth(0);
                    o.sendMessage(ChatColor.DARK_RED + o.getName() + " Olduruldun!");

                }
            }
    return false;
    }
}
@İRFN ' Abi den döner dönmez bir attecker gerimi geldin abi ? Özlettin kendini.
 

IRFN

Sonoyuncu.Network
Mesajlar
1,043
En iyi cevaplar
0
Beğeniler
1,314
Puanları
3,230
@İRFN ' Abi den döner dönmez bir attecker gerimi geldin abi ? Özlettin kendini.
SonOyuncu işlerine pek karışmıyorum, başka bir projemiz var tamamlarsak onunla ilgileneceğim. Şimdilik öğle aralarında boş vakitlerimde takılıyorum arada.
 

Maruf61

Lapis Toplayıcısı
Mesajlar
1,038
En iyi cevaplar
0
Beğeniler
296
Puanları
590
@override herzaman bi zorunluluk deil suana kadar hic override yok die calismayan komuta rastlamadim. ayrica CommandExecutor de zorunluluk deil onCommand methodu oldugundan.

Sent from my SM-N9005 using Tapatalk
 

Nigganetwork

Play.NiggaNetwork.Net !
Mesajlar
265
En iyi cevaplar
0
Beğeniler
58
Puanları
330
Ruh hali
@IRFN @Maruf61

Aslına bakarsanız bu sabah başladım komut yazmaya essentials gibi bir şey yapmaya bakıyorum basit komutlar öğrenmeye çalışıyorum hepinize yorumları için teşekkür ederim ama pek anlayabildiğimi söylemeyeceğim. :) Şu an okuldayım telefondan bakıyorum eve gidince anlattıklarınızı deneyeceğim teşekkürler.
 

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
@IRFN @Maruf61

Aslına bakarsanız bu sabah başladım komut yazmaya essentials gibi bir şey yapmaya bakıyorum basit komutlar öğrenmeye çalışıyorum hepinize yorumları için teşekkür ederim ama pek anlayabildiğimi söylemeyeceğim. :) Şu an okuldayım telefondan bakıyorum eve gidince anlattıklarınızı deneyeceğim teşekkürler.
Essentials hiç de basit değil aslında, tabii kullanılan kısmı baya basit ama*
Öncelikle onCommand fonksiyonunun başına @Override eklemen gerekirdi, bu şekilde "Canlandır" komutu nasıl çalışmış anlamıyorum. Hepsini geçtim, onEnable foknsiyonu yok bu kodlarda, StartGame(); methodunu nerde çalıştırdın ki acaba?
Kodları incelediğimde parantezlerde de hata yaptığını görüyorum. Ayrıca CommandExecutor'u implement etmeyi de unutmuşsun.
Ayrıca command boolean fonksiyonunu return false ile bitir, true değil.

Gelelim soruna, çoklu komut yapmak için kullanmak istediğin her komutu plugin.yml'de tanımlaman gerekir, plugin yml'yi utf-8 olarak kaydederek Türkçe karakter içeren "öl" komutunu register edebilir misin emin değilim, ama muhtemelen hata verecektir.
Öl yerine yine permissionda yazdığın gibi geber komutunu kullanabilirsin.
Velhasıl, düzenleyerek hazırladığım kod aşağıdadır. plugin.yml dosyasına geber komutunu da canlan komutunu tanımladığın gibi tanımlamalısın.
PHP:
package com.project.project;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class FirstCommand extends JavaPlugin implements Listener, CommandExecutor{


    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        Player o = (Player) sender;
            if(label.equalsIgnoreCase("canlan")) {
                if(o.hasPermission("canlan.canlan")){
                    o.setFoodLevel(20);
                    o.setHealth(20);
                    o.sendMessage(ChatColor.AQUA + "Canlandirildin " + o.getName() + ".");
                }
            }
            if(label.equalsIgnoreCase("geber")) {
                if(o.hasPermission("geber.geber")){
                    o.setHealth(0);
                    o.sendMessage(ChatColor.DARK_RED + o.getName() + " Olduruldun!");

                }
            }
    return false;
    }
}

Not: Player o = (Player) sender; kodu yerine,
Player o = Bukkit.getExactPlayer(args[0]) == null ? (Player) sender : Bukkit.getExactPlayer(args[0]);
kodunu kullanırsan, /komut nick yazdığında nickini yazdığın kişide de işe yarar.
Anladığım kadarıyla bu işi yeni öğreniyorsun, ilk komutunu çalıştırmayı deniyorsun. Attığın kodlar ile benim yazdığım kodları incele, aradaki farkları görmeye çalış. Takıldığın, bu neden böyle dediğin yer olursa konu açarak beni etiketle, gördükçe cevaplamaya çalışırım. Öğrenmek isteyenlerin hep yanındayım.
Tek classda commandexecutor hiç lazım olmadı bana, dolayısıyla plugin.yml olaylarına da gerek yok yani*
Bu arada her işleminizin bittiği yere return false veya true koyun bence, alışkanlık olması iyidir, sonra unutur 5 gün nerede hata diye çıldırırsınız*
 

IRFN

Sonoyuncu.Network
Mesajlar
1,043
En iyi cevaplar
0
Beğeniler
1,314
Puanları
3,230
Arkadaşlar biliyorum hepiniz eklenti kodluyorsunuz, hepiniz bir şeyler biliyorsunuz ve her birinizin ayrı ayrı fikri var, olabilir. Daha önceden denemişsinizdir, Override olmadan çalışıyordur. Burada daha yeni plugin kodlamaya başladığı açık olan birine herkes kendi fikirlerini aşılarsa yanlış yönelecektir. Sorduğu soruya cevap verin, örnek kod atın incelesin. İlla ki uzun uzun açıklayacağım diyorsanız da http://wiki.bukkit.org/Plugin_Tutorial adresindeki official tutorial üzerinden anlatmaya çalışın. Yoksa ileride arkadaş kendi tarzını bulmakta zorlanacaktır.
 

Üst