- Баллы
- 61
- Имя в Minecraft
- FEDORTIK
Код:
@EventHandler
public void onCraftPrepare(PrepareItemCraftEvent event) {
CraftingInventory inventory = event.getInventory();
ItemStack[] matrix = inventory.getMatrix();
if (matrix.length != 9) {return;}
ItemStack centerItem = matrix[4];
if (centerItem != null && centerItem.getType().toString().endsWith("_PICKAXE")) {
boolean validUpgrade = true;
for (int i = 0; i < matrix.length; i++) {
if (i == 4) continue;
ItemStack slotItem = matrix[i];
if (slotItem == null || slotItem.getType() != Material.COBBLESTONE) {
validUpgrade = false;
break;
}
}
if (validUpgrade) {
ItemStack upgradedPickaxe = centerItem.clone();
ItemMeta meta = upgradedPickaxe.getItemMeta();
if (meta != null) {
int enchantLevel = meta.getEnchantLevel(Enchantment.DIG_SPEED) + 1;
meta.addEnchant(Enchantment.DIG_SPEED, enchantLevel, true);
upgradedPickaxe.setItemMeta(meta);
inventory.setResult(upgradedPickaxe);
}
}
}
}
Имеется такой обработчик события. Казалось бы элементарно просто. Если в центре кирка а вокруг неё 8 булыжника то ставит в результат крафта кирку с эффективностью +1 . Но если один баг. Если положить в верстак

то после крафта оставшийся булыжник становится на 1 меньше(как и должно быть), а затем умножается на 2(Так не должно быть)
На всякий случай уточню, что это единственный слушатель в плагине