- Баллы
- 63
Всем привет 
Столкнулся со следующей ситуацией.
1. Я создаю ItemStack (PLAYER_HEAD со скином) и выдаю его игроку [назовем его Предмет#1].
2. Игрок перезаходит на сервер.
3. Я снова создаю точно такой же ItemStack как и в пункте 1 (с UUID скина и тд проблем нет) [назовем его Предмет#2].
4. В результате чего Предмет#1 нельзя застакать с Предмет#2, пока игрок снова не перезайдет на сервер (тогда у Предмет#2 формат ItemMeta поменяется и он станет идентичным Предмету#1).
Вот из-за чего это происходит.
Ввожу /data get entity Player SelectedItem без перезахода на сервер:
Ввожу /data get entity Player SelectedItem после перезахода на сервер:
Короче говоря, значения полей "display.Lore" и "display.Name" изменяются после перезахода на сервер.
ItemMeta я заполняю вот так:
Подскажите пожалуйста, есть ли способ заполнения ItemMeta у предмета таким образом, чтобы значения полей "display.Lore" и "display.Name" сразу имели вид, как будто игрок перезашел на сервер?
Столкнулся со следующей ситуацией.
1. Я создаю ItemStack (PLAYER_HEAD со скином) и выдаю его игроку [назовем его Предмет#1].
2. Игрок перезаходит на сервер.
3. Я снова создаю точно такой же ItemStack как и в пункте 1 (с UUID скина и тд проблем нет) [назовем его Предмет#2].
4. В результате чего Предмет#1 нельзя застакать с Предмет#2, пока игрок снова не перезайдет на сервер (тогда у Предмет#2 формат ItemMeta поменяется и он станет идентичным Предмету#1).
Вот из-за чего это происходит.
Ввожу /data get entity Player SelectedItem без перезахода на сервер:
Код:
{
Count: 1b,
id: "minecraft:player_head",
tag: {
SkullOwner: {
Id: [
I;
-1234567890,
-1234567890,
-1234567890,
-1234567890
],
Properties: {
textures: [
{
Value: "длинная_строка_с_текстурами"
}
]
}
},
display: {
Lore: [
'{"text":"§fОписание предмета"}'
],
Name: '{"text":"§dНазвание предмета"}'
}
}
}
Ввожу /data get entity Player SelectedItem после перезахода на сервер:
Код:
{
Count: 1b,
id: "minecraft:player_head",
tag: {
SkullOwner: {
Id: [
I;
-1234567890,
-1234567890,
-1234567890,
-1234567890
],
Properties: {
textures: [
{
Value: "длинная_строка_с_текстурами"
}
]
}
},
display: {
Lore: [
'{"extra":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"color":"white","text":"Описание предмета"}],"text":""}'
],
Name: '{"extra":[{"bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false,"color":"light_purple","text":"Название предмета"}],"text":""}'
}
}
}
Короче говоря, значения полей "display.Lore" и "display.Name" изменяются после перезахода на сервер.
ItemMeta я заполняю вот так:
Код:
ItemStack item = new ItemStack(Material.PLAYER_HEAD, 1);
SkullMeta meta = (SkullMeta) item.getItemMeta();
meta.displayName(Component.text("§dНазвание предмета"));
ArrayList<Component> lore = new ArrayList<>();
lore.add(Component.text("§Описание предмета"));
meta.lore(lore);
item.setItemMeta(meta);
Подскажите пожалуйста, есть ли способ заполнения ItemMeta у предмета таким образом, чтобы значения полей "display.Lore" и "display.Name" сразу имели вид, как будто игрок перезашел на сервер?