Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
@EventHandler
public void onRespawn(PlayerRespawnEvent)
{
Player p = e.getPlayer();
p.setHealth(1);
BukkitTask task = Bukkit.getScheduler().runTaskTimer(this, ()->{
if(p.getHealth() >= p.getMaxHealth()) task.cancelTask();
p.setHealth(p.getHealth() + 1);
}, 40);
}
Выдает ошибку, что хп не может быть больше 20Что-то такое.Код:@EventHandler public void onRespawn(PlayerRespawnEvent) { Player p = e.getPlayer(); p.setHealth(1); BukkitTask task = Bukkit.getScheduler().runTaskTimer(this, ()->{ if(p.getHealth() >= p.getMaxHealth()) task.cancelTask(); p.setHealth(p.getHealth() + 1); }, 40); }
Вообще не вариант, мне нужен именно самописКак вариант настроить флаг на реген хп в регионе спавн.
Кинь ошибкуВыдает ошибку, что хп не может быть больше 20
Если я не ошибаюсь, то при спавне хп почему-то не ставится 1 и из-за этого вызывается такая ошибка
Кинь ошибку
[13:10:56] [Server thread/WARN]: [hosptial] Task #5 for hosptial v1.0.1 generated an exception
java.lang.IllegalArgumentException: Health must be between 0 and 20.0(21.0)
at org.bukkit.craftbukkit.v1_11_R1.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:99) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
at com.ReZero.HO.Events.Respawn.lambda$0(Respawn.java:92) ~[?:?]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:738) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
at
Как вариант подождать 1 тик после респавна и сделать тоже самое. (не точная информация, очень не точная). Щас попробую у себя сделатьПочему-то, после респавна мне не устанавливается 1 хп, я не знаю почему
Тоже была такая идея. Не пробовалКак вариант подождать 1 тик после респавна и сделать тоже самое. (не точная информация, очень не точная). Щас попробую у себя сделать
Заработало, видимо, стоило мне попробовать сделать это с самого началаТоже была такая идея. Не пробовал
А как я могу остановить task ? Если я пишу task.cancel(), пишет что task не инициализирована.Что-то такое.Код:@EventHandler public void onRespawn(PlayerRespawnEvent) { Player p = e.getPlayer(); p.setHealth(1); BukkitTask task = Bukkit.getScheduler().runTaskTimer(this, ()->{ if(p.getHealth() >= p.getMaxHealth()) task.cancelTask(); p.setHealth(p.getHealth() + 1); }, 40); }
BukkitTask task = null;
public void onRespawn(PlayerRespawnEvent)
{
Player p = e.getPlayer();
p.setHealth(1);
task = Bukkit.getScheduler().runTaskTimer(this, ()->{
if(p.getHealth() <= p.getMaxHealth()) {
p.setHealth(p.getHealth() + 1);
} else {
task.cancelTask();
}, 40);
}
Спасибо!@EventHandler
Код:BukkitTask task = null; public void onRespawn(PlayerRespawnEvent) { Player p = e.getPlayer(); p.setHealth(1); task = Bukkit.getScheduler().runTaskTimer(this, ()->{ if(p.getHealth() <= p.getMaxHealth()) { p.setHealth(p.getHealth() + 1); } else { task.cancelTask(); }, 40); }
Последний вопрос.
Как можно сделать чтобы после смерти тпхало на корды из конфига?
я сделал через e.getSpawnLocation().set...
все работает, но не совсем точно. Почему-то, меня тпхает на блок вперед.
Как можно сделать чтоб спавн происходил именно на том блоке, на котором я установил координаты?
P.S координаты сохраняю в конфиг при помощи команды (сохраняю x,y,z,yaw,pitch)
@EventHandler
public void onRespawn(PlayerRespawnEvent e) {
Player p = e.getPlayer();
Location loc = ; //Тут получение твоей локации.
e.setRespawnLocation(loc); //Установка локации.
}
Все равно криво спавнитКод:@EventHandler public void onRespawn(PlayerRespawnEvent e) { Player p = e.getPlayer(); Location loc = ; //Тут получение твоей локации. e.setRespawnLocation(loc); //Установка локации. }
Кажется понял, вот код:Все равно криво спавнит
@EventHandler
public void onRespawn(PlayerRespawnEvent e) {
Location loc = new Location(Bukkit.getWorld(plugin.getConfig().getString("world")), plugin.getConfig().getDouble("x") + .500, 67, plugin.getConfig().getDouble("z") + .500); //Тут получение твоей локации.
e.setRespawnLocation(loc); //Установка локации.
}