- Баллы
- 61
Код:
package me.rejomy.container.handlers;
import me.rejomy.container.SpawnSystem;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.*********ventory.ItemStack;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class EntityDamageEvent implements Listener {
private int scheduler;
private Map<String, Integer> map = new HashMap<>();
@EventHandler(priority = EventPriority.MONITOR)
public void onDamage(org.bukkit.event.entity.EntityDamageEvent event) {
if (event.isCancelled() || !SpawnSystem.instance.getConfig().getBoolean("Prevent-Death.stop-death"))
return;
if (event.getEntity() instanceof Player) {
Player victim = (Player) event.getEntity();
if(victim == null || !victim.isOnline()) return;
if (victim.getHealth() - event.getFinalDamage() <= 0) {
victim.setHealth(victim.getMaxHealth());
victim.damage(1);
victim.setHealth(victim.getMaxHealth());
if (SpawnSystem.ar != null && SpawnSystem.ar.getPvpManager().isInPvP(victim))
SpawnSystem.ar.getPvpManager().stopPvP(victim);
for (ItemStack is : victim.getInventory().getContents())
if (is != null) {
victim.getWorld().dropItemNaturally(victim.getLocation(), is);
victim.getInventory().remove(is);
}
if (victim.getInventory().getHelmet() != null) {
victim.getWorld().dropItemNaturally(victim.getLocation(), victim.getInventory().getHelmet());
victim.getInventory().setHelmet(null);
}
if (victim.getInventory().getChestplate() != null) {
victim.getWorld().dropItemNaturally(victim.getLocation(), victim.getInventory().getChestplate());
victim.getInventory().setChestplate(null);
}
if (victim.getInventory().getLeggings() != null) {
victim.getWorld().dropItemNaturally(victim.getLocation(), victim.getInventory().getLeggings());
victim.getInventory().setLeggings(null);
}
if (victim.getInventory().getBoots() != null) {
victim.getWorld().dropItemNaturally(victim.getLocation(), victim.getInventory().getBoots());
victim.getInventory().setBoots(null);
}
if (SpawnSystem.instance.getConfig().getBoolean("Prevent-Death.Rebirth.enable")) {
if(event.getCause().equals(org.bukkit.event.entity.EntityDamageEvent.DamageCause.VOID)) {
victim.performCommand("spawn");
}
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "gamemode "
+ SpawnSystem.instance.getConfig().getString("Prevent-Death.Rebirth.pre-gamemode") + " " + victim.getName());
Event death = new PlayerDeathEvent(victim, Arrays.asList(victim.getInventory().getContents()), victim.getExpToLevel(), "Death");
Bukkit.getPluginManager().callEvent(death);
if (!map.containsKey(victim.getName())) {
map.put(victim.getName(), SpawnSystem.instance.utils.getDelay(victim));
}
scheduler = Bukkit.getScheduler().scheduleSyncRepeatingTask(SpawnSystem.instance, () -> {
if(map.get(victim.getName()) == null) {
Bukkit.getLogger().info("Map == null EntityDamage Event 81 java " + victim.getName() + " SCHEDULER " + Bukkit.getScheduler().isCurrentlyRunning(scheduler));
Bukkit.getScheduler().cancelTask(scheduler);
Bukkit.getLogger().info("Map == null EntityDamage Event 81 java " + victim.getName() + " SCHEDULER post " + Bukkit.getScheduler().isCurrentlyRunning(scheduler));
return;
}
int delay = map.get(victim.getName()) - 1;
map.put(victim.getName(), delay);
victim.sendTitle(SpawnSystem.instance.utils.getMessage("Prevent-Death.Rebirth.Delay.titles.One"),
SpawnSystem.instance.utils.getMessage("Prevent-Death.Rebirth.Delay.titles.Two")
.replace("{delay}", String.valueOf(delay)));
if (delay <= 0) {
Bukkit.getLogger().info("EntityDamage Event 81 java " + victim.getName() + " SCHEDULER " + Bukkit.getScheduler().isCurrentlyRunning(scheduler));
Bukkit.getScheduler().cancelTask(scheduler);
Bukkit.getLogger().info("EntityDamage Event 81 java " + victim.getName() + " SCHEDULER " + Bukkit.getScheduler().isCurrentlyRunning(scheduler));
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "gamemode "
+ SpawnSystem.instance.getConfig().getString("Prevent-Death.Rebirth.post-gamemode") + " " + victim.getName());
File spawn = new File(SpawnSystem.instance.getDataFolder() + File.separator + "spawn.yml");
FileConfiguration spw = YamlConfiguration.loadConfiguration(spawn);
victim.teleport(new Location(
Bukkit.getWorld(spw.getString("World")),
spw.getDouble("Respawn.X"),
spw.getDouble("Respawn.Y"),
spw.getDouble("Respawn.Z"),
spw.getInt("Respawn.Yw"),
spw.getInt("Respawn.Pc")));
victim.sendTitle(SpawnSystem.instance.utils.getMessage("Prevent-Death.titles.Respawn.One"),
SpawnSystem.instance.utils.getMessage("Prevent-Death.titles.Respawn.Two"));
map.remove(victim.getName());
}
}, 20, 20);
}
victim.sendTitle(SpawnSystem.instance.utils.getMessage("Prevent-Death.titles.Death.One"),
SpawnSystem.instance.utils.getMessage("Prevent-Death.titles.Death.Two")
.replaceAll("\\{killer}", event.getCause().name()));
if (victim.getMaxHealth() > 0) {
victim.setHealth(victim.getMaxHealth());
} else {
victim.setMaxHealth(20.0);
victim.setHealth(victim.getMaxHealth());
}
victim.setFoodLevel(20);
victim.setExp(0);
event.setCancelled(true);
}
}
}
}
Код:
Bukkit.getScheduler().isCurrentlyRunning(scheduler));
Код:
Bukkit.getLogger().info("Map == null EntityDamage Event 81 java " + victim.getName() + " SCHEDULER " + Bukkit.getScheduler().isCurrentlyRunning(scheduler));