- Баллы
- 76
- Имя в Minecraft
- Krong
Здравствуйте, делаю мини системку стрельбы с помощью RayTrace,в прочем не важно. С помощью вот такого кода в отдельном классе делаю ItemStack кастомный уже.
Потом, при определённом взаимодействие с предметом(с помощью ивента) я из данных PersistendData строки уменьшаю количество пуль. Но в итоге оно не изменяется.
Изменяю с помощью такого кода:
Но я так как не совсем глупый, понимаю что проблема, в том что класс Pistol где ItemStack объявлен как static(void и ItemStack).
Поэтому не меняются значения. Пробовал убирал просто static из значений всех в классе Pistol, на что аналогично получал ошибки, ну так неправильно. Тут я не знаю что делать. Надеюсь подскажите.
Код:
public class Pistol{
public static ItemStack Pistol;
public static void init(){
Pistolinfo();
}
public static void Pistolinfo(){
ItemStack PistolStack = new ItemStack(Material.STICK, 1);
ItemMeta pistolmeta = PistolStack.getItemMeta();
PersistentDataContainer pdc = pistolmeta.getPersistentDataContainer();
pdc.set(NamespacedKey.fromString("gun_name"), PersistentDataType.STRING, "Pistol");
pdc.set(NamespacedKey.fromString("bullets_default"), PersistentDataType.INTEGER, 12);
pdc.set(NamespacedKey.fromString("bullets"), PersistentDataType.INTEGER, 12);
pdc.set(NamespacedKey.fromString("bullet_damage"), PersistentDataType.INTEGER, 10);
String displayname = ChatColor.RED + pdc.get(NamespacedKey.fromString("gun_name"), PersistentDataType.STRING);
pistolmeta.setDisplayName(displayname);
PistolStack.setItemMeta(pistolmeta);
Pistol = PistolStack;
}
Потом, при определённом взаимодействие с предметом(с помощью ивента) я из данных PersistendData строки уменьшаю количество пуль. Но в итоге оно не изменяется.
Изменяю с помощью такого кода:
Код:
Integer bullets = e.getItem().getItemMeta().getPersistentDataContainer().get(
NamespacedKey.fromString("bullets"), PersistentDataType.INTEGER);
Integer bulletsdef = e.getItem().getItemMeta().getPersistentDataContainer().get(
NamespacedKey.fromString("bullets_default"), PersistentDataType.INTEGER);
Integer bulletsdamage = e.getItem().getItemMeta().getPersistentDataContainer().get(
NamespacedKey.fromString("bullet_damage"), PersistentDataType.INTEGER);
Integer resultBullets = bullets;
resultBullets = resultBullets - 1;
if(bullets > 0){
e.getItem().getItemMeta().getPersistentDataContainer().set(NamespacedKey.fromString(
"bullets"), PersistentDataType.INTEGER, resultBullets);
Но я так как не совсем глупый, понимаю что проблема, в том что класс Pistol где ItemStack объявлен как static(void и ItemStack).
Поэтому не меняются значения. Пробовал убирал просто static из значений всех в классе Pistol, на что аналогично получал ошибки, ну так неправильно. Тут я не знаю что делать. Надеюсь подскажите.