Вопрос Плагин написан под множество версий, но основное ядро 1.8.8. Как выбросить все вещи из инвентаря?

Vinni

Разработчик
Пользователь
Сообщения
85
Решения
1
Проблема в том, что есть и 2-оя рука у игрока, а как получить и выкинуть предметы из этой руки, я не знаю.
Вот мой код:

Код:
        for (item in player.inventory.contents) {
            if (item != null && item.type != null && item.type != Material.AIR) {
                player.inventory.remove(item)
                loc.world.dropItemNaturally(loc, item)
            }
        }
        for (item in player.inventory.armorContents) {
            if (item != null && item.type != null && item.type!! != Material.AIR) {
                loc.world.dropItemNaturally(loc, item)
            }
       
        player.inventory.armorContents = 
                      arrayOf(ItemStack(Material.AIR), ItemStack(Material.AIR), ItemStack(Material.AIR), ItemStack(Material.AIR))
        }
 
Решение
А что за код такой странный

Java:
Player player;
ItemStack[] storageContents = player.getInventory().getStorageContents();
for (ItemStack item : storageContents) {
    player.getWorld().dropItemNaturally(player.getLocation(), item);
}
Я не знаю, точно ли getStorageContents включает в себя вторую руку, но, по идее, должен
Если нет, поставь версию апи повыше и в нужных местах добавь проверку на версию. Обычно так и делают. Я в 1.8+ проектах обычно использую апи 1.12.2
А что за код такой странный

Java:
Player player;
ItemStack[] storageContents = player.getInventory().getStorageContents();
for (ItemStack item : storageContents) {
    player.getWorld().dropItemNaturally(player.getLocation(), item);
}
Я не знаю, точно ли getStorageContents включает в себя вторую руку, но, по идее, должен
Если нет, поставь версию апи повыше и в нужных местах добавь проверку на версию. Обычно так и делают. Я в 1.8+ проектах обычно использую апи 1.12.2
 
измени версию spigot в проекте хотя бы на 1.9
и плакал мой 1.8 support
Объединено

А что за код такой странный

Java:
Player player;
ItemStack[] storageContents = player.getInventory().getStorageContents();
for (ItemStack item : storageContents) {
    player.getWorld().dropItemNaturally(player.getLocation(), item);
}
Я не знаю, точно ли getStorageContents включает в себя вторую руку, но, по идее, должен
Если нет, поставь версию апи повыше и в нужных местах добавь проверку на версию. Обычно так и делают. Я в 1.8+ проектах обычно использую апи 1.12.2
А как это сделать без ошибок? Типо если моя версия 1.8, то?
Объединено

А что за код такой странный

Java:
Player player;
ItemStack[] storageContents = player.getInventory().getStorageContents();
for (ItemStack item : storageContents) {
    player.getWorld().dropItemNaturally(player.getLocation(), item);
}
Я не знаю, точно ли getStorageContents включает в себя вторую руку, но, по идее, должен
Если нет, поставь версию апи повыше и в нужных местах добавь проверку на версию. Обычно так и делают. Я в 1.8+ проектах обычно использую апи 1.12.2
метода .getStorageContents() нету, а код делится на 2цикла, так-как player.inventory.contents не убирает из рук, и ячеекдля брони. Поэтому делаю это отдельно.
 
Последнее редактирование:
А как это сделать без ошибок? Типо если моя версия 1.8, то?
Погугли, как плагину узнать, на какой версии он запущен
На крайняк можно сомнительный код обернуть в catch(NoSuchMethodException), чтобы обработать ситуацию, когда используется старое апи и там нет нужного метода
 
Погугли, как плагину узнать, на какой версии он запущен
На крайняк можно сомнительный код обернуть в catch(NoSuchMethodException), чтобы обработать ситуацию, когда используется старое апи и там нет нужного метода
Помогите пожалуйста! При viaversion, у игроков с 1.12.2, при вызове DeathEvent
Код:
Bukkit.getPluginManager().callEvent(
            PlayerDeathEvent(
                player,
                player.inventory.contents.toMutableList(), player.expToLevel, "Player has been killed $dname"
            )
        )
появляется меню "вы умерли : возродится : в главное меню" Возможно это как-то исправить? Сервер на 1.8.8
Объединено

Исправлено, методом тыков и ошибок, понял что проблема в ViaVersion, а точнее в new-death что-то, в общем ставите эту хрень в конфиге на false и всё идеально, никаких смертей!
 
Последнее редактирование:
Назад
Сверху Снизу