Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.12.2] Unsure of how to create colour overlay for block.


SeptemberBlue
 Share

Recommended Posts

7 minutes ago, SeptemberBlue said:

Should I make a get method,

This is what you should do. There is no pre-existing method.

 

7 minutes ago, SeptemberBlue said:

Can I use a lambda expression for IBlockAccess, even if it has other methods?

You don't really know what a lambda expression is. Go read up on them seriously, they are greatly useful.

 

8 minutes ago, SeptemberBlue said:

I don't really know how I'm supposed to put those together though.

Do you know how to call a method?

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

14 minutes ago, Animefan8888 said:

This is what you should do. There is no pre-existing method.

Done.

14 minutes ago, Animefan8888 said:

You don't really know what a lambda expression is. Go read up on them seriously, they are greatly useful.

My basic understanding of them so far is that you give them the parameters of a function, and then on the other side give it a return value. Will read up on them more though.

14 minutes ago, Animefan8888 said:

Do you know how to call a method?

@Nullable
TileEntity getTileEntity(BlockPos pos);

Not when it looks like this (from IBlockAccess).

 

EDIT: DAMMIT, never thought to use the arguments from the method. I might be able to solve my own problem here.

Edited by SeptemberBlue
Link to comment
Share on other sites

Alright, it seems to be picking the color of the block, which is good. What's weird though is that I can't change the color. I've used blockdata to try change the color value to something else, but when I check the block again, the color value reset.

 

the class:

public class TileEntityCanvas extends TileEntity {
	private int color;
	
	public TileEntityCanvas() {
	}
	
	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		compound.setInteger("color", color);
		return compound;
	}
	
	@Override
	public void readFromNBT(NBTTagCompound compound) {
		super.readFromNBT(compound);
	}
	
	public int getColor() {
		return color;
	}
	
	public void setColor (int c) {
		color=c;
	}
}

EDIT: Pretty sure this has to do with the writeToNBT, will add an if statement to check if the "color" value changed. Looking for a method that gets an NBT value.

 

EDIT 2:

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound) {
		super.writeToNBT(compound);
		if (!compound.hasKey("color") || compound.getInteger("color") != color) compound.setInteger("color", color);
		return compound;
	}

For some reason, the color variable still won't change.

Edited by SeptemberBlue
Link to comment
Share on other sites

16 minutes ago, SeptemberBlue said:

Is there some way I can call the event every time the color gets updated?

No that won't do anything.

 

16 minutes ago, SeptemberBlue said:

but the block does not actually change colour.

The Block has a model which is built into a mesh which is rendered. The mesh is not updated until a block in the world changes. Hence it doesn't update dynamically. You need to add a dummy BooleanProperty to your BlockState. And switch between those when the color is changed.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

3 minutes ago, Animefan8888 said:

You need to add a dummy BooleanProperty to your BlockState.

So wait, do I add that to my BlockState json?

 

3 minutes ago, Animefan8888 said:

No that won't do anything. 

How would that not do anything? I was thinking I'd add an if statement to the readNBT part that checks if the colour changed, and if it did, call the event to change accordingly. Or are you saying that if I did try to call the event, nothing would happen?

Edited by SeptemberBlue
Link to comment
Share on other sites

4 minutes ago, SeptemberBlue said:

Or are you saying that if I did try to call the event, nothing would happen?

This exactly. You could call the event, but all it would do is register all the IBlockColors again. It has nothing to do with recoloring the block itself. It just registers a handler for blocks.

5 minutes ago, SeptemberBlue said:

So wait, do I add that to my BlockState json?

It would need to be there, but it would also need to have some code. Here is the documentation.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

46 minutes ago, SeptemberBlue said:

Before I attempt block states, is there another approach I could do?

Not that I found, and I spent a few hours doing this myself. 

 

47 minutes ago, SeptemberBlue said:

As in, refresh the block so it does the event again?

The event only fires once. There is no reason to fire it again as I explained.

 

47 minutes ago, SeptemberBlue said:

I'll need to set the item colour, but I'm not sure how I'd go from ItemStack to TileEntity.

I recommend a custom Capability for it, but you could just store the value in its NBT via ItemStack#getTag

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

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
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.

 Share



×
×
  • Create New...

Important Information

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