Вопрос После удаления созданного сундука, исчезают вещи, вытащенные из него

BlackBaroness

Модератор
Разработчик
Сообщения
1 828
Решения
79
Веб-сайт
t.me
Всем привет

Ядро: Dionysus dev build (1.12.2)

Ситуация:
1. Средствами WE вставляется схематика в мир. Схематика содержит шалкер
2. В шалкер добавляются разные предметы
3. Игроки могут достать предметы из шалкера
4. В последствии эта зона регенерируется средствами WE
5. Вещи пропадают прямо из инвентаря игроков

Подобное я встречал пару лет назад, когда выдавал предметы игрокам, а после очищал коллекцию, в которой хранил эти предметы. Вместе с очисткой коллекции предметы удалялись, хотя находились в инвентаре игроков

Как подобное исправить? Пробовал:
Java:
ShulkerBox shulkerBox = (ShulkerBox) block.getState()
shulkerBox.getInventory().addItem(item);
shulkerBox.update();
Но так добавленный предмет пропадает сразу
Объединено

Java:
ShulkerBox shulkerBox = (ShulkerBox) block.getState()
shulkerBox.getSnapshotInventory().addItem(item);
shulkerBox.update(true, false);
Вот так вещи стали появляться. Но пока неуверен, что не пропадут
 
Последнее редактирование:
Всем привет

Ядро: Dionysus dev build (1.12.2)

Ситуация:
1. Средствами WE вставляется схематика в мир. Схематика содержит шалкер
2. В шалкер добавляются разные предметы
3. Игроки могут достать предметы из шалкера
4. В последствии эта зона регенерируется средствами WE
5. Вещи пропадают прямо из инвентаря игроков

Подобное я встречал пару лет назад, когда выдавал предметы игрокам, а после очищал коллекцию, в которой хранил эти предметы. Вместе с очисткой коллекции предметы удалялись, хотя находились в инвентаре игроков

Как подобное исправить? Пробовал:
Java:
ShulkerBox shulkerBox = (ShulkerBox) block.getState()
shulkerBox.getInventory().addItem(item);
shulkerBox.update();
Но так добавленный предмет пропадает сразу
Объединено

Java:
ShulkerBox shulkerBox = (ShulkerBox) block.getState()
shulkerBox.getSnapshotInventory().addItem(item);
shulkerBox.update(true, false);
Вот так вещи стали появляться. Но пока неуверен, что не пропадут
попробуй присваивать предметам уникальные теги а после забора предметов игроками удалять их
Объединено

Всем привет

Ядро: Dionysus dev build (1.12.2)

Ситуация:
1. Средствами WE вставляется схематика в мир. Схематика содержит шалкер
2. В шалкер добавляются разные предметы
3. Игроки могут достать предметы из шалкера
4. В последствии эта зона регенерируется средствами WE
5. Вещи пропадают прямо из инвентаря игроков

Подобное я встречал пару лет назад, когда выдавал предметы игрокам, а после очищал коллекцию, в которой хранил эти предметы. Вместе с очисткой коллекции предметы удалялись, хотя находились в инвентаре игроков

Как подобное исправить? Пробовал:
Java:
ShulkerBox shulkerBox = (ShulkerBox) block.getState()
shulkerBox.getInventory().addItem(item);
shulkerBox.update();
Но так добавленный предмет пропадает сразу
Объединено

Java:
ShulkerBox shulkerBox = (ShulkerBox) block.getState()
shulkerBox.getSnapshotInventory().addItem(item);
shulkerBox.update(true, false);
Вот так вещи стали появляться. Но пока неуверен, что не пропадут
а ещё попробуй написать addItem(new ItemStack(Material.DIAMOND)) чтобы проверить пропадёт ли такой ресурс или нет
Объединено

Java:
// Возможно это происходит из-за того что твои итемстаки хранятся вот туточки:
public ClassName() {
    private final ItemStack item = new ItemStack(Material.STICK);
    
    public void fill(ShulkerBox box) {
        box.getInventory().addItem(item);
    }
    // попробуй создавать итемстак внутри этой шляпы:
    public void fill(ShulkerBox box) {
        ItemStack item = new ItemStack(Material.STICK);
        box.getInventory().addItem(item);
    }
}
 
Последнее редактирование:
а ещё попробуй написать addItem(new ItemStack(Material.DIAMOND)) чтобы проверить пропадёт ли такой ресурс или нет
Я это и делаю. Я создаю предмет и сразу сую, сам нигде не храню на него ссылки

Но вроде бы всё исправилось с переходом на getSnapshotInventory. Пока что тестирую
 
Назад
Сверху Снизу