Player - это интерфейс, а не класс, поэтому любой класс, реализующий интерфейс Player, должен также реализовать все методы в Player.
Пример:
public interface MyInterface {
public void aMethod();
}
Если у вас есть класс, который реализует myIntefrace
, тогда ваш класс должен реализовать aMethod
:
public class MyClass implements MyInterface {
public void aMethod() {
//Do something
}
}
Подробнее см. здесь: Java Интерфейсы
Так что, если вы хотели PlayerPosition
Для реализации Player
вам потребуется реализовать большое количество методов, содержащихся в интерфейсе Player
. Таким образом, вообще не рекомендуется.
Из-за этого вы не можете разыграть от CraftPlayer
до PlayerPosition
.
Обходным решением будет сохранение местоположения игрока в HashMap
на /setposition
и получить его от него на back
.
Решением вашей проблемы может быть следующее:
SetPosition. java:
public class SetPosition implements CommandExecutor {
@Override
public boolean onCommand(CommandSender theSender, Command command, String s, String[] strings) {
if (theSender instanceof Player) {
Player p = (Player) theSender;
PluginCore.getInstance().setLocation(p, p.getLocation());
p.sendMessage(ChatColor.BLUE + "Position Setting Complete.");
}
return false;
}
}
Назад. java:
public class Back implements CommandExecutor {
@Override
public boolean onCommand(CommandSender theSender, Command command, String s, String[] strings) {
if (theSender instanceof Player) {
Player p = (Player) theSender;
Location location = PluginCore.getInstance().getLocation(p);
if (location == null) {
p.sendMessage(ChatColor.RED + "Set Your Position To Back First By Using SetPosition.");
} else {
p.teleport(location);
}
}
return false;
}
}
PluginCore. java: (Основной класс)
public class PluginCore extends JavaPlugin {
private static PluginCore instance;
private HashMap<Player, Location> locations = new HashMap<Player, Location>();
@Override
public void onEnable() {
instance = this;
this.getCommand("back").setExecutor(new Back());
this.getCommand("setposition").setExecutor(new SetPosition());
}
public static PluginCore getInstance() {
return instance;
}
public Location getLocations(Player p) {
return locations.get(p);
}
public void setLocation(Player p, Location location) {
this.locations.put(p, location);
}
}
Надеюсь, это помогло!