Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (โ‹ฎ) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Prevent custom Enchantments from being applied to a non compatible item in the anvil.

Featured Replies

Posted

As the title states, any custom enchantment I create can be applied to any sort of gear even if its not compatible with the enchant.

Heres my basic enchantment class

public class OverloadEnchantment extends Enchantment {

    public OverloadEnchantment(EquipmentSlot[] slots) {
        super(Rarity.RARE, EnchantmentCategory.ARMOR, slots);
    }

    @Override
    public int getMinCost(int p_44679_) {
        return 15;
    }

    @Override
    public int getMaxCost(int p_44691_) {
        return 30;
    }

    @Override
    public int getMaxLevel() {
        return 5;
    }
}

it cannot be an enchantment roll in the enchanting table for regular weapons(since its an armor mod) nor can it be applied to these weapons via /enchant command. However if I grab an overload book and apply it to a sword in an anvil, it will apply the enchantment to the sword. This goes for all custom enchantments I create whether or not designed for armor or for weapons/tools.

Edited by ChasePlays
Spelling error

okay, what other methods exist in Enchantment class?

perchance, a few may return a boolean result.

  • Author
Quote

okay, what other methods exist in Enchantment class?

perchance, a few may return a boolean result.

Yes there is the method canEnchant(ItemStack item) which returns a boolean but I have no clue how to use it as it crashes when i try to apply the enchantment to an item in the anvil. So its going in the right direction but its causing a crash.

Heres the code I used

@Override
    public boolean canEnchant(ItemStack item) {
        if(item.getItem().equals(Items.DIAMOND_SWORD)){
            return false;
        }

        return true;
    }

ย 

Edited by ChasePlays

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions โ†’ Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.