Example usage for net.minecraftforge.event AnvilUpdateEvent getRight

List of usage examples for net.minecraftforge.event AnvilUpdateEvent getRight

Introduction

In this page you can find the example usage for net.minecraftforge.event AnvilUpdateEvent getRight.

Prototype

@Nonnull
    public ItemStack getRight() 

Source Link

Usage

From source file:vazkii.quark.misc.feature.AncientTomes.java

License:Creative Commons License

@SubscribeEvent
public void onAnvilUpdate(AnvilUpdateEvent event) {
    ItemStack left = event.getLeft();/*  w w  w . jav  a2s .  c o  m*/
    ItemStack right = event.getRight();

    if (!left.isEmpty() && !right.isEmpty()) {
        if (left.getItem() == Items.ENCHANTED_BOOK && right.getItem() == ancient_tome)
            handleTome(left, right, event);
        else if (right.getItem() == Items.ENCHANTED_BOOK && left.getItem() == ancient_tome)
            handleTome(right, left, event);

        else if (right.getItem() == Items.ENCHANTED_BOOK) {
            Map<Enchantment, Integer> enchants = EnchantmentHelper.getEnchantments(right);
            Map<Enchantment, Integer> currentEnchants = EnchantmentHelper.getEnchantments(left);
            boolean hasOverLevel = false;
            boolean hasMatching = false;
            for (Map.Entry<Enchantment, Integer> entry : enchants.entrySet()) {
                Enchantment ench = entry.getKey();
                if (ench == null)
                    continue;

                int level = entry.getValue();
                if (level > ench.getMaxLevel()) {
                    hasOverLevel = true;
                    if (ench.canApply(left)) {
                        hasMatching = true;
                        //remove incompatible enchantments
                        for (Iterator<Enchantment> iterator = currentEnchants.keySet().iterator(); iterator
                                .hasNext();) {
                            Enchantment enchCompare = iterator.next();
                            if (enchCompare == ench)
                                continue;

                            if (!enchCompare.isCompatibleWith(ench)) {
                                iterator.remove();
                            }
                        }
                        currentEnchants.put(ench, level);
                    }
                } else if (ench.canApply(left)) {
                    boolean compatible = true;
                    //don't apply incompatible enchantments
                    for (Enchantment enchCompare : currentEnchants.keySet()) {
                        if (enchCompare == ench)
                            continue;

                        if (enchCompare != null && !enchCompare.isCompatibleWith(ench)) {
                            compatible = false;
                            break;
                        }
                    }
                    if (compatible) {
                        currentEnchants.put(ench, level);
                    }
                }
            }
            if (hasOverLevel) {
                if (hasMatching) {
                    ItemStack out = left.copy();
                    EnchantmentHelper.setEnchantments(currentEnchants, out);
                    String name = event.getName();
                    int cost = applyTomeCost;
                    if (name != null && !name.isEmpty()) {
                        out.setStackDisplayName(name);
                        cost++;
                    }
                    event.setOutput(out);
                    event.setCost(cost);
                } else {
                    event.setCanceled(true);
                }
            }
        }
    }
}

From source file:vazkii.quark.misc.feature.ColorRunes.java

License:Creative Commons License

@SubscribeEvent
public void onAnvilUpdate(AnvilUpdateEvent event) {
    ItemStack left = event.getLeft();//from   w  w  w.j a  v  a2 s . c  o  m
    ItemStack right = event.getRight();

    if (!left.isEmpty() && !right.isEmpty() && left.isItemEnchanted() && right.getItem() == rune) {
        ItemStack out = left.copy();
        ItemNBTHelper.setBoolean(out, TAG_RUNE_ATTACHED, true);
        ItemNBTHelper.setInt(out, TAG_RUNE_COLOR, right.getItemDamage());
        event.setOutput(out);
        event.setCost(applyCost);
    }
}

From source file:vazkii.quark.world.feature.AncientTomes.java

License:Creative Commons License

@SubscribeEvent
public void onAnvilUpdate(AnvilUpdateEvent event) {
    ItemStack left = event.getLeft();//from ww w  .ja va 2 s  .  co  m
    ItemStack right = event.getRight();

    if (left != null && right != null) {
        if (left.getItem() == Items.ENCHANTED_BOOK && right.getItem() == ancient_tome)
            handleTome(left, right, event);
        else if (right.getItem() == Items.ENCHANTED_BOOK && left.getItem() == ancient_tome)
            handleTome(right, left, event);

        else if (right.getItem() == Items.ENCHANTED_BOOK) {
            Map<Enchantment, Integer> enchants = EnchantmentHelper.getEnchantments(right);
            if (enchants.size() == 1) {
                Enchantment ench = enchants.keySet().iterator().next();
                int level = enchants.get(ench);

                if (level > ench.getMaxLevel() && ench.canApply(left)) {
                    ItemStack out = left.copy();

                    Map<Enchantment, Integer> currentEnchants = EnchantmentHelper.getEnchantments(out);
                    currentEnchants.put(ench, level);
                    EnchantmentHelper.setEnchantments(currentEnchants, out);

                    event.setOutput(out);
                    event.setCost(35);
                }
            }
        }
    }
}

From source file:vazkii.quark.world.feature.ColorRunes.java

License:Creative Commons License

@SubscribeEvent
public void onAnvilUpdate(AnvilUpdateEvent event) {
    ItemStack left = event.getLeft();//  w  ww .java  2 s.c  o m
    ItemStack right = event.getRight();

    if (left != null && right != null && left.isItemEnchanted() && right.getItem() == rune) {
        ItemStack out = left.copy();
        ItemNBTHelper.setBoolean(out, TAG_RUNE_ATTACHED, true);
        ItemNBTHelper.setInt(out, TAG_RUNE_COLOR, right.getItemDamage());
        event.setOutput(out);
        event.setCost(15);
    }
}