Помогите FluidTypeEmpty change

NightDay_

Новичок
Пользователь
Баллы
16
Имя в Minecraft
NightDay_
Форумчане привет вот такая проблема у меня есть терминал который по клику открывает менюшку но если выключить а затем включить сервер то FluidTypeEmpty меняется помогите с проблемой

FluidTypeEmpty до ростарта
Код:
FluidTypeEmpty@1bf0f6f6}:
            terminal: km_food
FluidTypeEmpty после рестрарта
Код:
FluidTypeEmpty@710b30ef}:
            terminal: km_food


Код:
f (getInstance().tdata.getString("data." + e.getClickedBlock() + ".terminal")
                    .equalsIgnoreCase("km_pickaxe")) {
                mining = Bukkit.createInventory(null, 9 * 3, ChatColor.DARK_GREEN + "Кирки");

                ItemStack wooden = new ItemStack(WOODEN_PICKAXE);
                ItemMeta woodenm = wooden.getItemMeta();
                woodenm.setDisplayName(ChatColor.GREEN + "Деревянная кирка (250)");
                wooden.setItemMeta(woodenm);
                wooden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
                wooden.addEnchantment(Enchantment.MENDING, 1);
                wooden.addEnchantment(Enchantment.DIG_SPEED, 3);

                mining.setItem(10, wooden);

                ItemStack stone = new ItemStack(STONE_PICKAXE);
                ItemMeta stonem = stone.getItemMeta();
                stonem.setDisplayName(ChatColor.GREEN + "Каменная кирка (800)");
                stone.setItemMeta(stonem);
                stone.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 2);
                stone.addEnchantment(Enchantment.DIG_SPEED, 2);

                mining.setItem(11, stone);

                ItemStack golden = new ItemStack(GOLDEN_PICKAXE);
                ItemMeta goldenm = golden.getItemMeta();
                goldenm.setDisplayName(ChatColor.GREEN + "Золотая кирка (2.500)");
                golden.setItemMeta(goldenm);
                golden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 2);
                golden.addEnchantment(Enchantment.DIG_SPEED, 3);

                mining.setItem(12, golden);

                ItemStack iron = new ItemStack(IRON_PICKAXE);
                ItemMeta ironm = iron.getItemMeta();
                ironm.setDisplayName(ChatColor.GREEN + "Железная кирка (6.400)");
                iron.setItemMeta(ironm);
                iron.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 2);
                iron.addEnchantment(Enchantment.DIG_SPEED, 4);

                mining.setItem(13, iron);

                ItemStack diamond = new ItemStack(DIAMOND_PICKAXE);
                ItemMeta diamondm = diamond.getItemMeta();
                diamondm.setDisplayName(ChatColor.GREEN + "Алмазная кирка (20.000)");
                diamond.setItemMeta(diamondm);
                diamond.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
                diamond.addEnchantment(Enchantment.DIG_SPEED, 5);

                mining.setItem(14, diamond);

                ItemStack netherite = new ItemStack(NETHERITE_PICKAXE);
                ItemMeta netheritem = netherite.getItemMeta();
                netheritem.setDisplayName(ChatColor.GREEN + "Незеритовая кирка (80.000)");
                netherite.setItemMeta(netheritem);
                netherite.addEnchantment(Enchantment.MENDING, 1);
                netherite.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
                netherite.addEnchantment(Enchantment.DIG_SPEED, 5);

                mining.setItem(15, netherite);

                ItemStack slot = new ItemStack(Material.GREEN_STAINED_GLASS_PANE);
                ItemMeta slotmeta = slot.getItemMeta();
                slotmeta.setDisplayName(ChatColor.MAGIC + "/#/A'?3/2");
                slot.setItemMeta(slotmeta);

                for (int i = 0; i < 9 * 3; i++) {
                    if (i == 10 || i == 11 || i == 12 || i == 13 || i == 14 || i == 15)
                        continue;
                    mining.setItem(i, slot);
                }

                e.getPlayer().openInventory(mining);
if (e.getView().getTitle().equalsIgnoreCase(ChatColor.DARK_GREEN + "Кирки")) {
Player p = (Player) e.getWhoClicked();
e.setCancelled(true);
if (e.getCurrentItem() == null)
return;
if (e.getCurrentItem().getItemMeta() == null)
return;
if (e.getCurrentItem().getItemMeta().getDisplayName() == null)
return;
if (e.getCurrentItem().getItemMeta().getDisplayName()
.equalsIgnoreCase(ChatColor.GREEN + "Деревянная кирка (250)")) {
if (econ.getBalance(p.getName()) >= 250) {
ItemStack wooden = new ItemStack(WOODEN_PICKAXE);
ItemMeta woodenm = wooden.getItemMeta();
woodenm.setDisplayName(ChatColor.GREEN + "Деревянная кирка");
wooden.setItemMeta(woodenm);
wooden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
wooden.addEnchantment(Enchantment.MENDING, 1);
wooden.addEnchantment(Enchantment.DIG_SPEED, 3);
p.getInventory().addItem(wooden);
p.sendMessage(ChatColor.GREEN + "Вы купили " + ChatColor.GREEN + "Деревянную кирку");
econ.withdrawPlayer(p.getName(), 250);
return;
} else {
p.sendMessage(ChatColor.RED + "У вас не хватает Bit'ов");
return;
}
}
if (e.getCurrentItem().getItemMeta().getDisplayName()
.equalsIgnoreCase(ChatColor.GREEN + "Каменная кирка (800)")) {
if (econ.getBalance(p.getName()) >= 800) {
ItemStack wooden = new ItemStack(STONE_PICKAXE);
ItemMeta woodenm = wooden.getItemMeta();
woodenm.setDisplayName(ChatColor.GREEN + "Каменная кирка");
wooden.setItemMeta(woodenm);
wooden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
wooden.addEnchantment(Enchantment.DIG_SPEED, 2);
p.getInventory().addItem(wooden);
p.sendMessage(ChatColor.GREEN + "Вы купили " + ChatColor.GREEN + "Каменную кирку");
econ.withdrawPlayer(p.getName(), 800);
return;
} else {
p.sendMessage(ChatColor.RED + "У вас не хватает Bit'ов");
return;
}
}
if (e.getCurrentItem().getItemMeta().getDisplayName()
.equalsIgnoreCase(ChatColor.GREEN + "Золотая кирка (2.500)")) {
if (econ.getBalance(p.getName()) >= 2500) {
ItemStack wooden = new ItemStack(GOLDEN_PICKAXE);
ItemMeta woodenm = wooden.getItemMeta();
woodenm.setDisplayName(ChatColor.GREEN + "Золотая кирка");
wooden.setItemMeta(woodenm);
wooden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
wooden.addEnchantment(Enchantment.DIG_SPEED, 3);
p.getInventory().addItem(wooden);
p.sendMessage(ChatColor.GREEN + "Вы купили " + ChatColor.GREEN + "Золотую кирку");
econ.withdrawPlayer(p.getName(), 2500);
return;
} else {
p.sendMessage(ChatColor.RED + "У вас не хватает Bit'ов");
return;
}
}
if (e.getCurrentItem().getItemMeta().getDisplayName()
.equalsIgnoreCase(ChatColor.GREEN + "Железная кирка (6.400)")) {
if (econ.getBalance(p.getName()) >= 6400) {
ItemStack wooden = new ItemStack(IRON_PICKAXE);
ItemMeta woodenm = wooden.getItemMeta();
woodenm.setDisplayName(ChatColor.GREEN + "Железная кирка");
wooden.setItemMeta(woodenm);
wooden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 2);
wooden.addEnchantment(Enchantment.DIG_SPEED, 4);
p.getInventory().addItem(wooden);
p.sendMessage(ChatColor.GREEN + "Вы купили " + ChatColor.GREEN + "Железную кирку");
econ.withdrawPlayer(p.getName(), 6400);
return;
} else {
p.sendMessage(ChatColor.RED + "У вас не хватает Bit'ов");
return;
}
}
if (e.getCurrentItem().getItemMeta().getDisplayName()
.equalsIgnoreCase(ChatColor.GREEN + "Алмазная кирка (20.000)")) {
if (econ.getBalance(p.getName()) >= 20000) {
ItemStack wooden = new ItemStack(DIAMOND_PICKAXE);
ItemMeta woodenm = wooden.getItemMeta();
woodenm.setDisplayName(ChatColor.GREEN + "Алмазная кирка");
wooden.setItemMeta(woodenm);
wooden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
wooden.addEnchantment(Enchantment.DIG_SPEED, 5);
p.getInventory().addItem(wooden);
p.sendMessage(ChatColor.GREEN + "Вы купили " + ChatColor.GREEN + "Алмазную кирку");
econ.withdrawPlayer(p.getName(), 20000);
return;
} else {
p.sendMessage(ChatColor.RED + "У вас не хватает Bit'ов");
return;
}
}
if (e.getCurrentItem().getItemMeta().getDisplayName()
.equalsIgnoreCase(ChatColor.GREEN + "Незеритовая кирка (80.000)")) {
if (econ.getBalance(p.getName()) >= 80000) {
ItemStack wooden = new ItemStack(NETHERITE_PICKAXE);
ItemMeta woodenm = wooden.getItemMeta();
woodenm.setDisplayName(ChatColor.GREEN + "Незеритовая кирка");
wooden.setItemMeta(woodenm);
wooden.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 3);
wooden.addEnchantment(Enchantment.MENDING, 1);
wooden.addEnchantment(Enchantment.DIG_SPEED, 5);
p.getInventory().addItem(wooden);
p.sendMessage(ChatColor.GREEN + "Вы купили " + ChatColor.GREEN + "Незеритоваю кирку");
econ.withdrawPlayer(p.getName(), 80000);
return;
} else {
p.sendMessage(ChatColor.RED + "У вас не хватает Bit'ов");
return;
}
}
}
 
Ну всё правильно, при рестарте старый экземпляр FluidTypeEmpty удаляется и создаётся новый. Если нужно что бы какие-то параметры сохранялись, сохраняй их и загружай когда надо
 
Как связан твой код с FluidTypeEmpty? Не вижу нигде в коде упоминания FluidType.

И выше правильно заметили, что при перезапуске сервера все объекты создаются заново. Естественно, что и адреса в памяти у них тоже будут другие.

Но никакой проблемы в этом нет абсолютно
 
Как связан твой код с FluidTypeEmpty? Не вижу нигде в коде упоминания FluidType.

И выше правильно заметили, что при перезапуске сервера все объекты создаются заново. Естественно, что и адреса в памяти у них тоже будут другие.

Но никакой проблемы в этом нет абсолютно
У меня в fluid идёт информация какой терминал стоит на там или ином блоке (еда, оружие, броня)
 
У меня в fluid идёт информация какой терминал стоит на там или ином блоке (еда, оружие, броня)
Я не знаю, что такое терминал.
Расскажи, что ты хочешь получить в конечном итоге и мы подскажем, как это реализовать
 
Я не знаю, что такое терминал.
Расскажи, что ты хочешь получить в конечном итоге и мы подскажем, как это реализовать
Короче
1. Ты пишешь команду /setterminal название(еда,оружие)
2. Кликаешь по блоку и в него записывается какой он терминал
3. При следующем клике по этому блоку открывается менюшка где можно что то купить
 
Короче
1. Ты пишешь команду /setterminal название(еда,оружие)
2. Кликаешь по блоку и в него записывается какой он терминал
3. При следующем клике по этому блоку открывается менюшка где можно что то купить
Окей. На какой версии сервер?
 
Почитай:
https://www.spigotmc.org/threads/a-guide-to-1-14-persistentdataholder-api.371200/

Единственное - по-моему, этот контейнер есть исключительно у тайл блоков. В качестве альтернативы можно хранить в данных чанков.

Помимо этого, данные о блоках можно хранить самостоятельно в базе данных.
В yaml-конфиге тоже можно, но он не предназначен для хранения большого кол-ва данных. Может начать тормозить
 
Единственное - по-моему, этот контейнер есть исключительно у тайл блоков. В качестве альтернативы можно хранить в данных чанков.
PersistentDataContainer есть у чанков ентити и айтемстаков, на счет тайлов хз.
 
Получи локацию и тип блока если надо и запиши куда то в конфиг, потом проверяй.
Да но ведь тогда нужно что бы у каждого терминала должно быть своё имя
А если я хочу сделать 2 одинаковых терминала то как
 
Да но ведь тогда нужно что бы у каждого терминала должно быть своё имя
А если я хочу сделать 2 одинаковых терминала то как
Ну и добавь в конфиг какое то имя, если тебе нужно как то группировать. Ну и там по локации получишь свою запись обратно.
 
Назад
Верх