admin Вот и у меня таже фигня была. Кстати заметь, когда активно правило keepinventory при респавне игрока содержимое его инвентаря как бы исчезает на мгновение, а затем возвращается. Думаю проблема в этом и есть. Игроку не удается сохранить содержимое инвентаря из-за того, что у него новый инвентарь из-за Sponge, но игровое правило идет от ванильного ядра и потому возвращает вещи. Лично я это могу объяснить только так. При использовании способа с изменением игрового правла на эвенте смерти довольно просто все, я там только смерт донатера проверяю, а вот на респавне игрока уже так.
Решил использовать функцию самой джавы для небольшой оптимизации так как на моем серве проц с низкой частотой и ему лучше отдельный процесс сделать так как там 8 ядер.
if (player.hasPermission("beancore.inventory.save")) {
world.getProperties().setGameRule("keepInventory", "true");
new Thread(() -> {
try {
Thread.sleep(10L);
} catch(InterruptedException ie) {
}
Sponge.getServer().equals(Task.builder().execute(() -> world.getProperties().setGameRule("keepInventory", "false"))
.submit(this));
}).start();
} else {
world.getProperties().setGameRule("keepInventory", "false");
}