Jump to content

[1.12] How do I add a tooltip to an ItemStack based on a capability


TheGoldenProof

Recommended Posts

I blindly stumbled my way through making a capability and I have no idea if it did it right. I'm putting a couple questions into one post.

  1. How do I make my capability save a different value for each itemstack. The code I have right now seems like it would make every Item (of its type) the same thing. (I think, doesn't minecraft only have one instance of every item but its used in different itemstacks?)
  2. How would I add a tooltip that will change (specifically when I craft it with a specific Item)?

 

Current capability code:

Spoiler

@CapabilityInject(value = Sharpenedness.class)
	public static final Capability<Sharpenedness> SHARPENED = null;
	
	private Sharpenedness instance = SHARPENED.getDefaultInstance();
	
	@Override
	public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt) {
		return new ICapabilitySerializable<NBTBase>() {

			@Override
			public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
				return (capability == SHARPENED);
			}

			@Override
			public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
				return capability == SHARPENED ? SHARPENED.<T> cast(instance) : null;
			}

			@Override
			public void deserializeNBT(NBTBase nbt) {
				SHARPENED.getStorage().readNBT(SHARPENED, instance, null, nbt);
				
			}

			@Override
			public NBTBase serializeNBT() {
				return SHARPENED.getStorage().writeNBT(SHARPENED, instance, null);
			}
		};
	}

 

Spoiler

public class Sharpenedness {
	
	public int progress;
	
	public Sharpenedness() {
		progress = 0;
	}
	
	public Sharpenedness(int number) {
		progress = number;
	}
	
	public int getProgress() {
		return progress;
	}
	
	public void setProgress(int number) {
		progress = number;
	}
	
	public void addProgress(int amount) {
		progress += amount;
	}
	
}

 

Spoiler

 


public class SharpenednessFactory implements Callable<Sharpenedness>{

	@Override
	public Sharpenedness call() throws Exception {
		return new Sharpenedness();
	}

}
Spoiler

public class SharpenednessStorage implements IStorage<Sharpenedness>{

	@Override
	public NBTBase writeNBT(Capability<Sharpenedness> capability, Sharpenedness instance, EnumFacing side) {
		return new NBTTagLong(instance.getProgress());
	}

	@Override
	public void readNBT(Capability<Sharpenedness> capability, Sharpenedness instance, EnumFacing side, NBTBase nbt) {
		
	}

}

 

Spoiler

@EventHandler
	public static void init(FMLInitializationEvent event) {
		ModRecipes.init();
		CapabilityManager.INSTANCE.register(Sharpenedness.class, new SharpenednessStorage(), new SharpenednessFactory());
	}

 

 

Here's a little background

Edited by TheGoldenProof
Link to comment
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.
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...

×   Pasted as rich text.   Restore formatting

  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.

Announcements



×
×
  • Create New...

Important Information

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