Java:
if(e.getSlot() == Menu.getMixedPotionSlot() && e.getInventory().getItem(Menu.getMixedPotionSlot()) != null) {
e.getWhoClicked().sendMessage("6");
e.setCancelled(true);
int chance = (int) (Math.random() * 100);
if(e.getInventory().getItem(Menu.getFirstPotionSlot()) == null || e.getInventory().getItem(Menu.getSecondPotionSlot()) == null) {
// положите 2 зелья чтобы скрестить их
e.getWhoClicked().sendMessage("7");
return;
}
if(chance <= Storage.chance.get(e.getWhoClicked().getUniqueId())) {
ItemStack item = new ItemStack(Material.POTION);
PotionMeta meta = (PotionMeta) item.getItemMeta();
ItemStack item1 = e.getInventory().getItem(Menu.getFirstPotionSlot());
ItemStack item2 = e.getInventory().getItem(Menu.getSecondPotionSlot());
if(item1 == null || item2 == null) {
e.getWhoClicked().sendMessage("null items");
return;
}
PotionMeta meta1 = (PotionMeta) item1.getItemMeta();
PotionMeta meta2 = (PotionMeta) item2.getItemMeta();
if(meta == null || meta1 == null || meta2 == null) {
e.getWhoClicked().sendMessage("null meta");
return;
}
if(meta1.hasCustomEffects()) {
for (PotionEffect effect : meta1.getCustomEffects()) {
meta.addCustomEffect(effect, true);
}
}
if(meta2.hasCustomEffects()) {
for (PotionEffect effect : meta2.getCustomEffects()) {
meta.addCustomEffect(effect, true);
}
}
meta.setColor(Color.ORANGE);
item.setItemMeta(meta);
e.getInventory().setItem(Menu.getFirstPotionSlot(), new ItemStack(Material.AIR));
e.getInventory().setItem(Menu.getSecondPotionSlot(), new ItemStack(Material.AIR));
Storage.price.put(e.getWhoClicked().getUniqueId(), Menu.getChanceGiverPrice());
Storage.chance.put(e.getWhoClicked().getUniqueId(), Menu.getStandardChance());
e.getWhoClicked().getInventory().addItem(item);
Alchemist.update((Player) e.getWhoClicked(), e.getInventory());
// УСПЕХ
e.getWhoClicked().sendMessage("8");
} else {
e.getInventory().setItem(Menu.getFirstPotionSlot(), new ItemStack(Material.AIR));
e.getInventory().setItem(Menu.getSecondPotionSlot(), new ItemStack(Material.AIR));
Storage.price.put(e.getWhoClicked().getUniqueId(), Menu.getChanceGiverPrice());
Storage.chance.put(e.getWhoClicked().getUniqueId(), Menu.getStandardChance());
Alchemist.update((Player) e.getWhoClicked(), e.getInventory());
// НЕУДАЧА
e.getWhoClicked().sendMessage("9");
}
}
в начале идёт проверка на зелья без эффектов (она проваливается хотя я беру зелья исключительно с эффектами)
Java:
if(e.getCurrentItem() != null && e.getCurrentItem().getType() == Material.POTION) {
PotionMeta meta = (PotionMeta) e.getCurrentItem().getItemMeta();
if(meta == null) {
e.getWhoClicked().sendMessage("null meta1");
return;
}
if(!meta.hasCustomEffects()) {
// можно брать только зелья с эффектами
e.getWhoClicked().sendMessage("5");
e.setCancelled(true);
return;
}
}
Так-же если каким-то образом получится положить предмет в слоты для зелий и нажать на смешивание их - получается "Несоздаваемое зелье" без эффектов.
При этом зелья так-же с эффектами.
Как можно заменить getCustomPotionEffects?