@EventHandler(priority = EventPriority.HIGHEST) public void onPlayerDie(PlayerDeathEvent pde) { final Player player = pde.getEntity(); Game game = Main.getInstance().getGameManager().getGameOfPlayer(player); if (game == null) { return; } if (game.getState() == GameState.RUNNING) { pde.setDroppedExp(0); pde.setDeathMessage(null); if (!Main.getInstance().getBooleanConfig("player-drops", false)) { pde.getDrops().clear(); } try { if (!Main.getInstance().isSpigot()) { Class<?> clazz = null; try { clazz = Class.forName( "io.github.yannici.bedwars.Com." + Main.getInstance().getCurrentVersion() + ".PerformRespawnRunnable"); } catch (ClassNotFoundException ex) { clazz = Class.forName("io.github.yannici.bedwars.Com.Fallback.PerformRespawnRunnable"); } BukkitRunnable respawnRunnable = (BukkitRunnable) clazz.getDeclaredConstructor(Player.class).newInstance(player); respawnRunnable.runTaskLater(Main.getInstance(), 20L); } else { new BukkitRunnable() { @Override public void run() { player.spigot().respawn(); } }.runTaskLater(Main.getInstance(), 20L); } } catch (Exception e) { e.printStackTrace(); } try { pde.getClass().getMethod("setKeepInventory", new Class<?>[] {boolean.class}); pde.setKeepInventory(false); } catch (Exception ex) { player.getInventory().clear(); } Player killer = player.getKiller(); if (killer == null) { killer = game.getPlayerDamager(player); } game.getCycle().onPlayerDies(player, killer); } }