Jump to content
  • Home
  • Files
  • Docs
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • [1.16.4] Custom item enchantability
Currently Supported: 1.16.X (Latest) and 1.15.X (LTS)
Sign in to follow this  
Followers 1
AzizD

[1.16.4] Custom item enchantability

By AzizD, January 25 in Modder Support

  • Reply to this topic
  • Start new topic

Recommended Posts

AzizD    0

AzizD

AzizD    0

  • Tree Puncher
  • AzizD
  • Members
  • 0
  • 18 posts
Posted January 25

I created a custom item that extends TieredItem. I want it to be enchantable through the enchantment table with Sharpnes, Looting etc. I can enchant but only the unbreaking enchantment shows up.

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2414

Draco18s

Draco18s    2414

  • Reality Controller
  • Draco18s
  • Members
  • 2414
  • 15993 posts
Posted January 25

There are functions that define this. The default checks what kind of item things are and allows or denies various enchantments.

TieredItem only allows Unbreaking (because that's the default).

  • Quote

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Share this post


Link to post
Share on other sites

AzizD    0

AzizD

AzizD    0

  • Tree Puncher
  • AzizD
  • Members
  • 0
  • 18 posts
Posted January 25
@Override
    public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
        enchantment = Enchantments.SHARPNESS;
        return enchantment.canApply(stack.getItem().getDefaultInstance());
    }

I tried to override this method. Whenever i put the item in the enchantment table game crashes with java.lang.StackOverflowError.

  • Quote

Share this post


Link to post
Share on other sites

AzizD    0

AzizD

AzizD    0

  • Tree Puncher
  • AzizD
  • Members
  • 0
  • 18 posts
Posted January 25
@Override
    public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
        if(enchantment == Enchantments.SHARPNESS) {
            enchantment.canApply(stack);
        }
        return true;
    }

I changed with this but same error.

  • Quote

Share this post


Link to post
Share on other sites

kiou.23    10

kiou.23

kiou.23    10

  • Creeper Killer
  • kiou.23
  • Members
  • 10
  • 190 posts
Posted January 26
55 minutes ago, AzizD said:

@Override
    public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
        if(enchantment == Enchantments.SHARPNESS) {
            enchantment.canApply(stack);
        }
        return true;
    }

I changed with this but same error.

well obviously, Enchantment#canApply(), calls ItemStack#CanApplyAtEnchantingTable(), which calls Item#canApplyAtEnchantingTable. Therefore, you got yourself an infinite loop...

  • Quote

Share this post


Link to post
Share on other sites

AzizD    0

AzizD

AzizD    0

  • Tree Puncher
  • AzizD
  • Members
  • 0
  • 18 posts
Posted January 26
    @Override
    public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
        Enchantment[] enchantments = {
                Enchantments.SHARPNESS,
                Enchantments.LOOTING,
                Enchantments.FIRE_ASPECT,
                Enchantments.UNBREAKING,
                Enchantments.KNOCKBACK,
                Enchantments.MENDING,
        };
        for(int i=0;i<enchantments.length;i++){
            if(enchantments[i] == enchantment){
                return true;
            }
        }
        return false;
    }

 

I wrote this and it worked. Thx.

  • Quote

Share this post


Link to post
Share on other sites

diesieben07    7687

diesieben07

diesieben07    7687

  • Reality Controller
  • diesieben07
  • Forum Team
  • 7687
  • 56228 posts
Posted January 26

A better way would be to use a Set (probably ImmutableSet in this case).

  • Quote

Share this post


Link to post
Share on other sites

AzizD    0

AzizD

AzizD    0

  • Tree Puncher
  • AzizD
  • Members
  • 0
  • 18 posts
Posted January 26
23 minutes ago, diesieben07 said:

A better way would be to use a Set (probably ImmutableSet in this case).

It looks way better. Thanks for the advice.

@Override
    public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
        Set e = ImmutableSet.of(
                Enchantments.SHARPNESS,
                Enchantments.LOOTING,
                Enchantments.FIRE_ASPECT,
                Enchantments.UNBREAKING,
                Enchantments.KNOCKBACK
                );
        return e.contains(enchantment);
    }

 

  • Quote

Share this post


Link to post
Share on other sites

diesieben07    7687

diesieben07

diesieben07    7687

  • Reality Controller
  • diesieben07
  • Forum Team
  • 7687
  • 56228 posts
Posted January 26
  • Please don't use raw types.
  • Store the Set in a field, don't create it every time.
  • Quote

Share this post


Link to post
Share on other sites

AzizD    0

AzizD

AzizD    0

  • Tree Puncher
  • AzizD
  • Members
  • 0
  • 18 posts
Posted January 26
5 minutes ago, diesieben07 said:
  • Please don't use raw types.
  • Store the Set in a field, don't create it every time.

I got it.

  • Quote

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

    • Insert image from URL
×
  • Desktop
  • Tablet
  • Phone
Sign in to follow this  
Followers 1
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • DrCowiber
      Failed To Start Minecraft Server

      By DrCowiber · Posted 43 minutes ago

      I dont think this has anything to do with the OS, but with maybe the way I installed java? I installed Ubuntu made for the raspberry pi 4 and the same message happened. im installing java with "sudo apt-get install default-jdk", So I tried again with "sudo apt-get install default-jre" and ended up reinstalling the jdk too, same thing happened.
    • CyberNation
      Forge 1.7.10 Server Failed to write Transciever Channels

      By CyberNation · Posted 55 minutes ago

      i made a custom 1.7.10 modpack for my friends and I to play on decided to move it over to my own server host and now im getting an error when starting ive spent several hours trying to look for a solution and cant seem to find one im not sure if im in the right place for this but i hope someone can help me     17:44:27 Can't revert to frozen GameData state without freezing first. Server thread/INFO 17:44:27 Applying holder lookups Holder lookups applied Server thread/WARN 17:44:27 Failed to write Transciever Channels on exit: java.util.concurrent.ExecutionException: java.lang.NullPointerException Server thread/INFO 17:44:27 The state engine was in incorrect state ERRORED and forced into state SERVER_STOPPED. Errors may have been discarded. The state engine was in incorrect state ERRORED and forced into state AVAILABLE. Errors may have been discarded.     full Crash Log Report: Paste Bin https://pastebin.com/cxgY3t6q
    • DrCowiber
      Failed To Start Minecraft Server

      By DrCowiber · Posted 1 hour ago

      Im wondering if changing the launch options for the main server jar will fix that? I saw some threads where some peoples launch files had "-o" as a launch option, is there a way I can change the launch options for when the vanilla server is launched?
    • DrCowiber
      Failed To Start Minecraft Server

      By DrCowiber · Posted 1 hour ago

      When I run my forge Server it goes fine, but when I try to host off my Raspberry Pi 4 Model B 8GB RAM, using the 32-bit raspbian and 64-bit raspbian, I get this error at the end of log.   jpotsimple.UnrecognizedOptionException: o is not a recognized option     The full log file: https://pastebin.com/n4GpC53Q   Edit: This also happens when running the vanilla jar in the folder. This didn't happen with a vanilla installed from minecraft.net, so Im thinking that the jar file has that extra '-o' on it somewhere that causes this. vanilla log file: https://pastebin.com/pSq76TYp   Edit: running a fresh vanilla server produces the same thing
    • KBomb
      Forge 1.12.2 Server Crashing On Start-up

      By KBomb · Posted 1 hour ago

      I have been able to run the server in vanilla, but after adding the mods the server is crashing during the start-up. I will attach the crash report. I also have screenshots of what the server console was displaying if that may be necessary. crash-2021-02-24_18.58.56-server.txt
  • Topics

    • DrCowiber
      2
      Failed To Start Minecraft Server

      By DrCowiber
      Started 1 hour ago

    • CyberNation
      0
      Forge 1.7.10 Server Failed to write Transciever Channels

      By CyberNation
      Started 55 minutes ago

    • KBomb
      0
      Forge 1.12.2 Server Crashing On Start-up

      By KBomb
      Started 1 hour ago

    • milkman69
      0
      My game keeps crashing and I haven't even added any mods on yet

      By milkman69
      Started 3 hours ago

    • Skyriis
      0
      [1.16.5] Adding a Button to KeyBindings

      By Skyriis
      Started 3 hours ago

  • Who's Online (See full list)

    • jbko6
    • _HungTeen_
    • NullDev
    • Zeher_Monkey
    • DrCowiber
    • mcnuggies
    • LexManos
    • CyberNation
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • [1.16.4] Custom item enchantability
  • Theme

Copyright © 2019 ForgeDevelopment LLC · Ads by Longitude Ads LLC Powered by Invision Community