Acil JAVA DEVELEPOR ARKADAŞLAR

notaldo

If you want this, dream it!
En iyi cevaplar
1
Arkadaşlar bir plugin yazıcam fakat bir sorun var , pluginin amacı oyuncu suya girdiğinde bir komut yazıcak bu plugini yazıcam olmuyor nasıl yapmalıyım ?

Örnek;

PHP:
public class Main extends JavaPlugin implements Listener{
    @Override
    public void onEnable(){
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }
    @Override
    public void onDisable(){
    }

    @EventHandler
    public void portal(PlayerPortalEvent pme){
        pme.getPortalTravelAgent().setCanCreatePortal(true);
    }
}


ben bunu nasıl oyuncu suya giriğinde komut yazma olayına çeviririm ?


@Krumb069 @IRFN @Speaw @VitesMahmut @Minecraftplayerr Bildikleriniz varsa sizde etiketleyinn...
 

notaldo

If you want this, dream it!
En iyi cevaplar
1
kişinin kendisi eliyle otomatik mi yazıcak yoksa suya girince bi komut mu çalışıcak?
suya girince çalışcak :)

Skript ile yapılışı çok basit :) (ben yinede yazdım belki işine yarar):
Kod:
on move on water:
    execute console command "bla bla"
    send "şu an yüzüyorsun!"
    stop
birde player için geçerli olması lazım burda on move on water diyor player falan ekli olması gerekmiyormu ?

birde execute player command olması lazım :) (%3) Skript bilgim var doğrumu bilmiyorum yanlışsa düzeltirsen sevinirim :9
 

notaldo

If you want this, dream it!
En iyi cevaplar
1

Dpelqpleq

2 + 2 = 5
En iyi cevaplar
0
Kod:
package ana;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class c1 extends JavaPlugin implements Listener{
  public void onEnable(){
    Bukkit.getPluginManager().registerEvents(this, this);
    getConfig().options().copyDefaults(true);
    saveConfig();}
  @EventHandler
  public static void onMove(PlayerMoveEvent e){
    Player p = e.getPlayer();
    Material m = p.getLocation().getBlock().getType();
    if ((m == Material.STATIONARY_WATER) || (m == Material.WATER)){
        for (String s : getConfig().getStringList("komutlar"))
              e.getPlayer().performCommand(s);}}}
Acelem var biraz for String bölümünde hata var. Sunucuda denemedim suya gelince configteki komutu işlemesi lazım.
 

Dpelqpleq

2 + 2 = 5
En iyi cevaplar
0
Kod:
package ana;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class c1 extends JavaPlugin implements Listener{
  public void onEnable(){
    Bukkit.getPluginManager().registerEvents(this, this);}
  @EventHandler
  public static void onMove(PlayerMoveEvent e){
    Player p = e.getPlayer();
    Material m = p.getLocation().getBlock().getType();
    if ((m == Material.STATIONARY_WATER) || (m == Material.WATER)){
              e.getPlayer().performCommand("deneme");}}}
Suya girince deneme komudunu girer, configlisini beceremedim.
player.performCommand("komut");
Orada hata yok getConfig() kısmında bir hata var.

Edit: Suya girince komutu pes pese giriyor, command cooldown varsa veya teleportla alakalı bir komut ekliceksen problem cıkarmaz.
 
Son düzenleme:

notaldo

If you want this, dream it!
En iyi cevaplar
1
Kod:
package ana;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class c1 extends JavaPlugin implements Listener{
  public void onEnable(){
    Bukkit.getPluginManager().registerEvents(this, this);}
  @EventHandler
  public static void onMove(PlayerMoveEvent e){
    Player p = e.getPlayer();
    Material m = p.getLocation().getBlock().getType();
    if ((m == Material.STATIONARY_WATER) || (m == Material.WATER)){
              e.getPlayer().performCommand("deneme");}}}
Suya girince deneme komudunu girer, configlisini beceremedim.

Orada hata yok getConfig() kısmında bir hata var.

Edit: Suya girince komutu pes pese giriyor, command cooldown varsa veya teleportla alakalı bir komut ekliceksen problem cıkarmaz.
komutu değiştirdim fakat bilinmeyen komut diyor ?
 

Dpelqpleq

2 + 2 = 5
En iyi cevaplar
0
Ben nasıl yapıldığını değilde nasıl öğrenileceğini göstermeyi daha doğru buluyorum yani hayır :(

Kod güzel de tavsiye etmiyorum PlayerMoveEvent'i bu işte, hem daha çok kez çağrılacaktır biliyorsunuz kafayı çevirmek bile bir hareket sayılıyor hem suyu hareket etmeyen bir oyuncunun kafasına dökünce ve su oyuncuya temas edince çalışmayacaktır yani Scheduler Programming ile yapılması çok daha iyi olacaktır fakat çalışır mı çalışır bu şekilde de genel olarak.
Kesinlikle haklısın her harekette cağırır oyuncu hareketine bağlı diyede su dökülünce calısmaz. Fakat sunucuyu cok yorarmı emin değilim, sonucta oyunun kodlamasındada hareket edince buraya gelirse bunu yap vb kodlamalar mevcut. craftbukkit'in/oyunun optimizasyonuna bağlı birsey o yüzden yorarmı birsey diyemiycem.
 

Dantero

Elmas Madencisi
En iyi cevaplar
0
lagdan birazda olsa kurtulmak istiyorsan plugin aktifleştiğinde for döngüsünü kullanarak repeating task ile 10 tick de bir oyuncunun suda olup olmadığını kontrol edebilirsin.
 

notaldo

If you want this, dream it!
En iyi cevaplar
1
deneme komutunu sunucumda algıladı yani calıstı, normaldede komutu kullanınca aynı hatayı veriyorsa pluginde sorun vardır. Üstteki pluginden kaynaklıysa fazla bilmiyorum sorun nerede. Bakarım.
evet sunucu algıladı fakat komutu yazdığımda bilinmeyen komut diyor ilginç ?
 

Dantero

Elmas Madencisi
En iyi cevaplar
0
şunu dener misin o zaman
player.chat("/deneme");
şahsen ben bunu kullanıyorum :)
 
Üst