Jump to content

Rotate the block texture the way you placed it, storing in TE?


Recommended Posts

Posted

I am pretty new to the Forge API (As you might have noticed), but I have a problem that I need to solve, which is that I need to change the direction of the textures on the block, but I can't use the meta data because I am using it for other things.

 

I have already looked at vanilla pistons, pumpkins, furnaces but they are all using meta data values.

 

Thanks in advance!

 

I have also noticed a very weird thing, that for some reason my onBlockPlacedBy is never called (tested with system.out.println...), anyone has any idea why?

Posted

I'm no pro, by far, but my suggestion would be to use the code of the aforementioned vanilla blocks, and then set a variable in the TE based on the metadata info.

Posted

I'm no pro, by far, but my suggestion would be to use the code of the aforementioned vanilla blocks, and then set a variable in the TE based on the metadata info.

 

I already said, that for unknown reason my onBlockPlacedBy doesn't work. This means I can't use what vanilla does.

Posted

maybe you can use metadata in that way, that you use 4 metadata for every block(one for every direction)

 

Did you even read what I said? I cant use metadata!

Posted

Your onBlockPlacedBy method is then wrong. It should get called.

Show some programming spirit and try to find your mistake.

 

I have quite a lot of spirit. I have messed with this problem for 3 days and this is like a call of help. I have been coding in general for about 6-7 years... so yeah.

 

Also, here is my method:

 

public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving livingentity, ItemStack stack){
	System.out.println(livingentity);
	rotation = MathHelper.floor_double((double)(livingentity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
}

Posted

Sadly, the only onBlockPlacedBy method is

public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) {}

So your method doesn't exist for Minecraft.

If you have been coding for years, you should be using @Override annotation.  ::)

 

Posted

i am also suspicious about that, but since some language dont have inheritance ill let it go...

[lmgtfy]java inheritance[/lmgtfy]

 

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

Sadly, the only onBlockPlacedBy method is

public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) {}

So your method doesn't exist for Minecraft.

If you have been coding for years, you should be using @Override annotation.  ::)

 

That is why I said coding in general not exactly java... also, I have been coding bukkit plugins for a year and never had to override anything, As well as I have read where other people have used this and they have not overrided it. As well, I tried to override it but it told me there is nothing to be overriden, so yeah.

Posted

which language (beside java) have you coded with?  if none of them were oop (object oriented programming) you might want just to do a quick overview of it to know wtf were doing with oop

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

which language (beside java) have you coded with?  if none of them were oop (object oriented programming) you might want just to do a quick overview of it to know wtf were doing with oop

 

You have to got to be kidding me? PHP, C++, Java (for a year), Python, Perl and some basic ones like Shell, Bacth etc.

Posted

no srly i expected you to tell me like batch/bash/shell/html/php/perl etc like a lot of scripting language. sorry :/

 

im just surprise you have not heard/think about the @Override because it a similar concept exists in cpp too :/

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

you should override the onBlockPlacedBy method

in this method you can get the block ID and the metadata so it would look like this:

@Override
    public void onBlockPlacedBy(World world, int X, int Y, int Z, EntityLivingBase entityLivingBase, ItemStack itemStack)
    {
        int metadata = world.getBlockMetadata(X, Y, Z);
        int playerDirection = MathHelper.floor_double((double)((entityLivingBase.rotationYaw * 4F) / 360F) + 0.5D) & 3;
        if(metadata == 0)
        {
           switch(playerDirection)
           {
// then you put here what metadata will be placed based on where you're pointing at like this
case 0: metadata = 2; break;
            }
        }
        world.setBlock(X, Y, Z, blockID, metadata, 2);
    }

Posted

you should override the onBlockPlacedBy method

in this method you can get the block ID and the metadata so it would look like this:

@Override
    public void onBlockPlacedBy(World world, int X, int Y, int Z, EntityLivingBase entityLivingBase, ItemStack itemStack)
    {
        int metadata = world.getBlockMetadata(X, Y, Z);
        int playerDirection = MathHelper.floor_double((double)((entityLivingBase.rotationYaw * 4F) / 360F) + 0.5D) & 3;
        if(metadata == 0)
        {
           switch(playerDirection)
           {
// then you put here what metadata will be placed based on where you're pointing at like this
case 0: metadata = 2; break;
            }
        }
        world.setBlock(X, Y, Z, blockID, metadata, 2);
    }

 

Seems like you havent read the post either. I  cant use the metadata, as well as I have already found out how to do it and why it doesnt work.

Posted

That is why I said coding in general not exactly java... also, I have been coding bukkit plugins for a year and never had to override anything, As well as I have read where other people have used this and they have not overrided it. As well, I tried to override it but it told me there is nothing to be overriden, so yeah.

Man, when you subclass and rewrite a parent method, you are overriding it.

If bukkit doesn't allow this, then it is really crappy.

@Override is only a tool to keep in track with parent methods, telling you if code is correct.

So yeah, you should have come to this conclusion yourself if you knew Java (1 year ? sure...)

 

By the way, you can lock the thread yourself.

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.