こんにちは、マイケルバケットのプラグインプラグインを数日で済ませることを学び始めたので、問題が解決しない場合は私を責めないでください。 Playerサブクラスになる新しいMyPlayerクラスを作成したいと思います。私はすでにPlayerのルートがorg.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayerであることを理解しているので、このようなsomethinkを作ることができます:public class OticPlayer extends org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer
。 MyClassにすべての親メソッドを含めるには、独自のメソッドをいくつか追加します。問題は私が使用する場合です:Bukkit.getPlayerExact(arg3[1])
Player型オブジェクトへの参照を返します。私はメソッドaddPlayer(MyPlayer arg0)
を持つLobbyクラスを持っているので、PlayerではなくMyPlayerタイプのオブジェクトへの参照が必要です。 Player型参照をMyPlayerにキャストしようとすると、例外がスローされます:java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer cannot be cast to me.gtddd.my.MyPlayer
私はいくつかの種類の統計システム(K/D/A)を作成したいので、MyPlayer型参照をaddPlayer()メソッドに渡す必要があります。これらの統計はそれぞれMyPlayer型オブジェクトによってアクセス可能なプールでなければなりません。 PlayerをMyPlayerにキャストするにはどうしたらいいですか?この問題を発生させる例コード:PlayerをMyPlayerにキャストする際に問題が発生しました
package test;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_12_R1.CraftServer;
import org.bukkit.plugin.java.JavaPlugin;
import me.gtddd.otic.OticPlayer;
import net.minecraft.server.v1_12_R1.EntityPlayer;
public class MyPlayer extends org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer {
public MyPlayer(CraftServer server, EntityPlayer entity) {
super(server, entity);
}
int kills = 0;
int deaths = 0;
int assists = 0;
public int getKda() {
return kills/deaths/assists;
}
}
public class Lobby {
MyPlayer[] players = new MyPlayer[10];
public void addPlayer(MyPlayer arg0) {
players[players.length] = arg0;
}
public MyPlayer getPlayer(int slot) {
return players[slot-1];
}
}
public class Main extends JavaPlugin {
@Override
public void onEnable() {
Lobby lobby1 = new Lobby();
MyPlayer player = (MyPlayer) Bukkit.getPlayerExact("Notch");
lobby1.addPlayer(player);
System.out.println(lobby1.getPlayer(1).getKda());
}
}
は、私は答えを見つけるために多くのことを見て、私は私を満足させるだろうかanythinkを見つけることができませんでした。上から:すべてのお返事ありがとう!何かが不明な場合は質問してください。