Çözüldü Dünyalarla çakmalobi, %player% TP problemi.

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

mustibey0763

Fırında Isıttığım İlk Taş
Katılım
18 Kasım 2019
Mesajlar
98
Elmaslar
12
Puan
3.820
Yaş
24
Minecraft
Francis
Sunucu sürümüm: 1.19.3

Merhabalar, 1 sunucum var ve çakmalobiyi bungeecord ile ayırmaktansa mv-core ile dünyalar arası yapmak istiyorum, biliyorum amacına göre kullanmamış oluyorum ama öyle çok bir oyuncu yok zaten zevkine yapıyorum tamamen. Şimdi bu oyuncu sunucuya girdiğinde çakmalobi dünyasında giriş yapacak, girişini yaptıktan sonra ise world dünyasına ışınlayacak. Ama şöyle bir problem var ki, import ettiğim authme "LoginEvent"inde "mv tp %player% world" kullandığım zaman şöyle bir hata almaktayım: "There's no player in an on bukkit event"
Kaç saattir araştırıyorum ama bir çözüm bulamadım buna, bu aynı komutu skriptin kendi eventinde kullandığımda yani on join: de kullandığımda herhangi bir problem olmamakta, ve düzgün bir şekilde çalışmakta.

Kodum:

Kod:
on join:
    execute console command "mv tp %player% cakmalobi"

import:
    fr.xephi.authme.events.LoginEvent

on LoginEvent:
    execute console command "mv tp %player% world"

İmport için skript-reflect pluginini kullanmaktayım.
Eğer LoginEvent dışında "oyuncu giriş yaptığında" diye bildiğiniz bir event var ise paylaşabilirseniz sevinirim.

Acaba mycommand ile yapılabilir mi bunu yazarken aklıma geldi ama şu an deneyecek zamanım yok.
 
on LoginEvent den başka "on authme login:" eventi var. %player% yerine %event.getPlayer()% dener misiniz ?
 
Merhaba,

Bir oyuncu AuthMe tarafından giriş yaptığında LoginEvent tetiklenir, ancak LoginEvent onJoin eventi ile aynı anda tetiklenmez. LoginEvent, AuthMe tarafından tetiklenen bir olaydır ve normal Minecraft giriş işlemi sırasında tetiklenmez. Bu nedenle, oyuncu cakmalobi dünyasına girdikten sonra LoginEvent tetiklenmez ve bu nedenle oyuncunun dünyasını değiştiremezsiniz.

Bu durumda, oyuncu cakmalobi dünyasına girdiğinde, AuthMe tarafından sağlanan "authme.login" izni olan bir komutu çalıştırarak, LoginEvent tetiklenmeden önce oyuncunun dünyasını değiştirebilirsiniz. Bunu yapmak için şu adımları izleyebilirsiniz:

  1. authme.login iznine sahip bir komut oluşturun:
    /authlogin mvtp %player% world
  2. on join eventinde, oyuncunun dünyasını cakmalobi dünyası olarak ayarlayın:
    execute console command "mv tp %player% cakmalobi"
  3. LoginEvent'i kullanarak, oyuncunun dünyasını değiştirin:


    Kod:
    import fr.xephi.authme.events.LoginEvent
    
    on LoginEvent:
        execute console command "authlogin mvtp %player% world"
Bu şekilde, oyuncu cakmalobi dünyasına girdikten sonra AuthMe tarafından sağlanan komutu kullanarak, LoginEvent tetiklenmeden önce dünyasını değiştirebilirsiniz.
 
Sunucu sürümüm: 1.19.3

Merhabalar, 1 sunucum var ve çakmalobiyi bungeecord ile ayırmaktansa mv-core ile dünyalar arası yapmak istiyorum, biliyorum amacına göre kullanmamış oluyorum ama öyle çok bir oyuncu yok zaten zevkine yapıyorum tamamen. Şimdi bu oyuncu sunucuya girdiğinde çakmalobi dünyasında giriş yapacak, girişini yaptıktan sonra ise world dünyasına ışınlayacak. Ama şöyle bir problem var ki, import ettiğim authme "LoginEvent"inde "mv tp %player% world" kullandığım zaman şöyle bir hata almaktayım: "There's no player in an on bukkit event"
Kaç saattir araştırıyorum ama bir çözüm bulamadım buna, bu aynı komutu skriptin kendi eventinde kullandığımda yani on join: de kullandığımda herhangi bir problem olmamakta, ve düzgün bir şekilde çalışmakta.

Kodum:

Kod:
on join:
    execute console command "mv tp %player% cakmalobi"

import:
    fr.xephi.authme.events.LoginEvent

on LoginEvent:
    execute console command "mv tp %player% world"

İmport için skript-reflect pluginini kullanmaktayım.
Eğer LoginEvent dışında "oyuncu giriş yaptığında" diye bildiğiniz bir event var ise paylaşabilirseniz sevinirim.

Acaba mycommand ile yapılabilir mi bunu yazarken aklıma geldi ama şu an deneyecek zamanım yok.
Bu hatanın nedeni, LoginEvent'in Bukkit eventi olduğu için oyuncunun henüz sunucuya tam olarak bağlanmamış olmasıdır. Bu nedenle, LoginEvent sırasında oyuncuyu başka bir dünyaya taşımak mümkün değildir.

Bunun yerine, oyuncu sunucuya girdiğinde, on join eventinde yapmış olduğunuz gibi "mv tp %player% world" komutunu kullanabilirsiniz ama skripti düzenleyip on join: altına wait 5 second yazmanız işe yarayacaktır. Bu şekilde oyuncu başlangıçta doğru dünyaya taşınır ve LoginEvent sırasında oluşabilecek hata önlenebilir.

Ayrıca, AuthMe'nin LoginEvent'ini kullanarak oyuncuyu dünyaya taşımak yerine, on join eventini kullanarak oyuncuyu doğru dünyaya taşımanızı öneririm. Bu yöntem daha güvenlidir ve herhangi bir hata oluşma olasılığı daha düşüktür.

Umarım yardımcı olabilmişimdir.
 
Bu hatanın nedeni, LoginEvent'in Bukkit eventi olduğu için oyuncunun henüz sunucuya tam olarak bağlanmamış olmasıdır. Bu nedenle, LoginEvent sırasında oyuncuyu başka bir dünyaya taşımak mümkün değildir.

Bunun yerine, oyuncu sunucuya girdiğinde, on join eventinde yapmış olduğunuz gibi "mv tp %player% world" komutunu kullanabilirsiniz ama skripti düzenleyip on join: altına wait 5 second yazmanız işe yarayacaktır. Bu şekilde oyuncu başlangıçta doğru dünyaya taşınır ve LoginEvent sırasında oluşabilecek hata önlenebilir.

Ayrıca, AuthMe'nin LoginEvent'ini kullanarak oyuncuyu dünyaya taşımak yerine, on join eventini kullanarak oyuncuyu doğru dünyaya taşımanızı öneririm. Bu yöntem daha güvenlidir ve herhangi bir hata oluşma olasılığı daha düşüktür.

Umarım yardımcı olabilmişimdir.
Hocam sanırım tam doğru okumamışsın yazdığım şeyi, on join eventinde zaten çakmalobiye gönderiyorum giren oyuncuyu. Ben, oyuncu login yaptıktan sonra diğer dünyaya taşımasını istiyorum, join yaptığında değil. on join'i zaten kullanmışım attığım kodun ilk satırında.
Ki zaten hallettim bu sorunu konu kapanabilir.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst