если ты объявляешь их в датапаке, то из ядра будет достаточно сложно к ним обратиться.
вобще, можешь сделать листенер на запрос воскрешения, зарегать в своем эвенте и дергать его в RequestRestartPoint
т.е. первым делом дергается листенер и если он не отработал (обработка должна возвращать к примеру true/false как признак того что что-то сделано/не сделано), то только тогда обрабатываются стандартные варианты воскрешения.
еще как вариант, заведи в классе Player сессионные переменные, в которых можно будет хранить любые данные до перезахода в игру - чисто в памяти, без сохранения в бд. т.е. по сути аналог кукисов в вебе - таким образом можно будет обмениваться любыми данными между датапаком и ядром.
сделать это в виде обычной мапы <String, String> или <String, Object> к примеру.
и вот туда можешь к примеру положить координаты, а потом в любое время взять обратно по ключу мапы.
для примера, моя реализация сессионных переменных
/**
* --------------------------------------------------
* Работа с временными переменными, хранящимися в памяти и удаляющимися при выходе игрока из игры
* --------------------------------------------------
*/
private final Map<String, String> _sessionVars = new ConcurrentHashMap<>();
public Map<String, String> getSessionVars()
{
return _sessionVars;
}
public String getSessionVar(String name)
{
return _sessionVars.get(name);
}
public String getSessionVar(String name, String def)
{
String val = getSessionVar(name);
return val != null && !val.isEmpty() ? val : def;
}
public int getSessionVar(String name, int def)
{
String val = getSessionVar(name, null);
return val != null ? Integer.parseInt(val) : def;
}
public long getSessionVar(String name, long def)
{
String val = getSessionVar(name, null);
return val != null ? Long.parseLong(val) : def;
}
public double getSessionVar(String name, double def)
{
String val = getSessionVar(name, null);
return val != null ? Double.parseDouble(val) : def;
}
public boolean getSessionVar(String name, boolean def)
{
String val = getSessionVar(name, null);
return val != null ? !val.equalsIgnoreCase("false") : def;
}
public void setSessionVar(String name, String val)
{
_sessionVars.put(name, val);
}
public void setSessionVar(String name, int val)
{
setSessionVar(name, Integer.toString(val));
}
public void setSessionVar(String name, long val)
{
setSessionVar(name, Long.toString(val));
}
public void setSessionVar(String name, double val)
{
setSessionVar(name, Double.toString(val));
}
public void setSessionVar(String name, boolean val)
{
setSessionVar(name, Boolean.toString(val));
}
public void unsetSessionVar(String... names)
{
for (String name : names)
_sessionVars.remove(name);
}
вобщем по сути аналог стандартных setVar/getVar, просто без работы с бд.