Изменение hashcode у ItemStack при перезапуске

  • Автор темы Автор темы ToBlEzZ
  • Дата начала Дата начала

ToBlEzZ

Активный участник
Пользователь
Баллы
76
Всем привет!
Столкнулся с трудностью, что при полном перезапуске сервера изменяются хэшкоды у всех айтемстаков. Так и должно быть? И возможно ли это исправить?
Ядро Paper.
 
Неа, не должно меняться. Попробуй сравнить NBT стака до перезагрузки и после. Ну, либо же вручную каждую характеристику в ItemMeta проверить

upload_2021-6-16_21-33-20.png
 
Неа, не должно меняться. Попробуй сравнить NBT стака до перезагрузки и после. Ну, либо же вручную каждую характеристику в ItemMeta проверить

Посмотреть вложение 59667
Отдельно проверил элементы стака. Сделал айтем простой лопаты и получил её тайп.
На одном запуске хэшкод 1500443070, на другом 1230860326
Ну и если нет меты, то и выдает что у меты хэш 0
 
Да потому что херней страдаешь, стаки проверяются через метод isSimilar на схожесть.
 
Точнее из суммы хэшей. Я же все с своим верстаком не закончил
 
Так мне не сравнение стаков надо, а именно их хэшей. У меня мапа же с ключами хэша
Хеш и не должен быть всегда одинаковым. И это вообще не лучшее решение для сравнения объектов, хеши могут повторяться.
 
upload_2021-6-17_21-50-35.png
unhandledTags - это TreeMap. Хеш разный при каждом создании.
Другие поля не смотрел.

Так что придётся тебе организовать свою структуру иначе
 
шо? если содержимое одинаковое, то и хешкоды должны совпадать.
Должны, но только в пределах одного райнтайма. Персистить хэшкоды нельзя, никакой гарантии что они будут такими же после перезапуска рантайма нет, единственное исключение сделано для врапперов нативных типов и String.
А в случае ItemStack на то что там есть hashCode и даже equals проще забить, простейшее подёргивание итемстака через nms обязательно прицепит или уберёт что-нибудь из какого-нибудь тэга, ну или просто их порядок махнёт местами, потому обычно и смотрят что предмет нужный проверяя соответствие какому-нибудь темплейту предмета.
Так что всё работает вполне по спецификации.
 
Должны, но только в пределах одного райнтайма
моим словам не противоречит. меня зацепило чем такой особенный TreeMap. он просто суммирует хеши того что внутри.
прицепит или уберёт что-нибудь из какого-нибудь тэга
вполне
ну или просто их порядок махнёт местами
вот тут хз, там же мапа. порядок не принципиален
 
Назад
Верх