Jump to content

How do logs rotate?


AzureusNation123

Recommended Posts

So i've got these blocks that also have metadata, but y question is "How do i get these blocks to rotate like logs do when you place them?"

 

 

 

public class Blocksiding extends Block

{

 

public Blocksiding(int ID)

{

super(ID,Material.wood); //The ID and material

}

 

public int getBlockTextureFromSideAndMetadata(int side, int meta)

{

if(side == 3)

{

return 5;

}

    if(meta == 1)

    {

        return 14;

    }

    if(meta == 2)

    {

        return 15;

    }

    if(meta == 3)

    {

        return 16;

    }

    if(meta == 4)

    {

        return 17;

    }

    if(meta == 5)

    {

        return 18;

    }

    if(meta == 6)

    {

        return 19;

    }

    if(meta == 7)

    {

        return 20;

    }

    if(meta == 8)

    {

        return 21;

    }

    if(meta == 9)

    {

        return 22;

    }

    if(meta == 10)

    {

        return 23;

    }

    if(meta == 11)

    {

        return 24;

    }

    if(meta == 12)

    {

        return 25;

    }

    if(meta == 13)

    {

        return 26;

    }

    if(meta == 14)

    {

        return 27;

    }

    return meta != 15 ? 13 : 2;

}

 

public int damageDropped(int i){ //Tells it what block it drops and also for creative mode pick block

return i;

}

 

@SideOnly(Side.CLIENT)

public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) //Adds the metadata blocks to the creative inventory

{

for (int var4 = 0; var4 < 16; ++var4)

{

par3List.add(new ItemStack(par1, 1, var4));

}

}

public String getTextureFile()

{

return ClientProxy.BLOCKS_PNG;

}

}

 

 

Link to comment
Share on other sites

This goes in your block class

 

public void onBlockPlacedBy(World world, int i, int j, int k, EntityLiving entityliving)
{
	int rotation = MathHelper
			.floor_double((double) ((entityliving.rotationYaw * 4F) / 360F) + 2.5D) & 3;
	world.setBlockMetadata(i, j, k, rotation - 1);
}

you may have to toy with the world.setBlockMetaData(i,j, rotation *1*); but it might work straight off haven't tested this.

Link to comment
Share on other sites

 

import java.util.ArrayList;

import java.util.List;

 

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.entity.EntityLiving;

import net.minecraft.item.ItemStack;

import net.minecraft.util.MathHelper;

import net.minecraft.world.World;

import cpw.mods.fml.relauncher.*;

public class Blocksiding extends Block

{

 

public Blocksiding(int ID)

{

super(ID,Material.wood); //The ID and material

}

 

public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9)

    {

        int var10 = par9 & 3;

        byte var11 = 0;

 

        switch (par5)

        {

            case 0:

            var11 = 0;

            break;

            case 1:

                var11 = 4;

                break;

            case 2:

            var11 = 8;

            break;

            case 3:

                var11 = 12;

                break;

            case 4:

            var11 = 16;

            break;

            case 5:

                var11 = 20;

        }

 

        return var10 | var11;

    }

 

public int getBlockTextureFromSideAndMetadata(int side, int meta)

    {

        int var3 = meta & 24;

        int var4 = meta & 3;

        return var3 == 0 && (side == 0) ? 5 :

          (var3 == 4 && (side == 1) ? 5 :

          (var3 == 8 && (side == 2) ? 5 :

          (var3 == 12 && (side == 3) ? 5 :

              (var3 == 16 && (side == 4) ? 5 :

              (var3 == 20 && (side == 5) ? 5 :

              (var4 == 1 ? 14 :

              (var4 == 2 ? 15 :

              (var4 == 3 ? 16 : 13))))))));

       

    }

 

public static int limitToValidMetadata(int par0)

    {

        return par0 & 15;

    }

 

public int damageDropped(int i){ //Tells it what block it drops and also for creative mode pick block

return i;

}

 

@SideOnly(Side.CLIENT)

public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) //Adds the metadata blocks to the creative inventory

{

for (int var4 = 0; var4 < 16; ++var4)

{

par3List.add(new ItemStack(par1, 1, var4));

}

}

public String getTextureFile()

{

return ClientProxy.BLOCKS_PNG;

}

}

 

 

here is my revised code but i have 16 blocks and have only 4 working

Link to comment
Share on other sites

ive got my code its here take a look:

 

 

 

import java.util.ArrayList;

import java.util.List;

 

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.entity.EntityLiving;

import net.minecraft.item.ItemStack;

import net.minecraft.util.MathHelper;

import net.minecraft.world.World;

import cpw.mods.fml.relauncher.*;

public class Blocksiding extends Block

{

 

  public Blocksiding(int ID)

  {

      super(ID,Material.wood); //The ID and material

  }

 

  public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9)

    {

        int var10 = par9 & 3;

        byte var11 = 0;

 

        switch (par5)

        {

            case 0:

              var11 = 0;

              break;

            case 1:

                var11 = 4;

                break;

            case 2:

              var11 = 8;

              break;

            case 3:

                var11 = 12;

                break;

            case 4:

              var11 = 16;

              break;

            case 5:

                var11 = 20;

        }

 

        return var10 | var11;

    }

 

  public int getBlockTextureFromSideAndMetadata(int side, int meta)

    {

        int var3 = meta & 24;

        int var4 = meta & 3;

        return var3 == 0 && (side == 0) ? 5 :

            (var3 == 4 && (side == 1) ? 5 :

            (var3 == 8 && (side == 2) ? 5 :

            (var3 == 12 && (side == 3) ? 5 :

              (var3 == 16 && (side == 4) ? 5 :

              (var3 == 20 && (side == 5) ? 5 :

              (var4 == 1 ? 14 :

              (var4 == 2 ? 15 :

              (var4 == 3 ? 16 : 13))))))));

             

    }

 

  public static int limitToValidMetadata(int par0)

    {

        return par0 & 15;

    }

 

  public int damageDropped(int i){ //Tells it what block it drops and also for creative mode pick block

      return i;

  }

 

  @SideOnly(Side.CLIENT)

  public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) //Adds the metadata blocks to the creative inventory

  {

      for (int var4 = 0; var4 < 16; ++var4)

      {

        par3List.add(new ItemStack(par1, 1, var4));

      }

  }

  public String getTextureFile()

  {

      return ClientProxy.BLOCKS_PNG;

  }

}

 

 

Link to comment
Share on other sites

ive got my code its here take a look:

 

 

 

import java.util.ArrayList;

import java.util.List;

 

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.entity.EntityLiving;

import net.minecraft.item.ItemStack;

import net.minecraft.util.MathHelper;

import net.minecraft.world.World;

import cpw.mods.fml.relauncher.*;

public class Blocksiding extends Block

{

 

  public Blocksiding(int ID)

  {

      super(ID,Material.wood); //The ID and material

  }

 

  public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9)

    {

        int var10 = par9 & 3;

        byte var11 = 0;

 

        switch (par5)

        {

            case 0:

              var11 = 0;

              break;

            case 1:

                var11 = 4;

                break;

            case 2:

              var11 = 8;

              break;

            case 3:

                var11 = 12;

                break;

            case 4:

              var11 = 16;

              break;

            case 5:

                var11 = 20;

        }

 

        return var10 | var11;

    }

 

  public int getBlockTextureFromSideAndMetadata(int side, int meta)

    {

        int var3 = meta & 24;

        int var4 = meta & 3;

        return var3 == 0 && (side == 0) ? 5 :

            (var3 == 4 && (side == 1) ? 5 :

            (var3 == 8 && (side == 2) ? 5 :

            (var3 == 12 && (side == 3) ? 5 :

              (var3 == 16 && (side == 4) ? 5 :

              (var3 == 20 && (side == 5) ? 5 :

              (var4 == 1 ? 14 :

              (var4 == 2 ? 15 :

              (var4 == 3 ? 16 : 13))))))));

             

    }

 

  public static int limitToValidMetadata(int par0)

    {

        return par0 & 15;

    }

 

  public int damageDropped(int i){ //Tells it what block it drops and also for creative mode pick block

      return i;

  }

 

  @SideOnly(Side.CLIENT)

  public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) //Adds the metadata blocks to the creative inventory

  {

      for (int var4 = 0; var4 < 16; ++var4)

      {

        par3List.add(new ItemStack(par1, 1, var4));

      }

  }

  public String getTextureFile()

  {

      return ClientProxy.BLOCKS_PNG;

  }

}

 

 

 

Please take the time to read what I said so I can help. I am NOT a mind reader, all I can see in your code is blocks with meta data just like most other blocks have

Link to comment
Share on other sites

ive add in comments to explain my code but its not the rotation any more its adding more than 4 blocks to rotate otherwise they go like in the picture a few posts above

 

and yes im using the vinilla way

 

 

 

import java.util.ArrayList;

import java.util.List;

 

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.entity.EntityLiving;

import net.minecraft.item.ItemStack;

import net.minecraft.util.MathHelper;

import net.minecraft.world.World;

import cpw.mods.fml.relauncher.*;

public class Blocksiding extends Block

{

 

  public Blocksiding(int ID)

  {

      super(ID,Material.wood); //The ID and material

  }

 

//Seeing where the block is placed and on what face of a block it is faced on (Vanilla code but changed to move on all 6 sides)

  public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9)

    {

        int var10 = par9 & 3;

        byte var11 = 0;

 

        switch (par5)

        {

            case 0:

              var11 = 0;

              break;

            case 1:

                var11 = 4;

                break;

            case 2:

              var11 = 8;

              break;

            case 3:

                var11 = 12;

                break;

            case 4:

              var11 = 16;

              break;

            case 5:

                var11 = 20;

        }

 

        return var10 | var11;

    }

 

/getting the texture for the block determined by what face the block is placed on

  public int getBlockTextureFromSideAndMetadata(int side, int meta)

    {

        int var3 = meta & 24;

        int var4 = meta & 3;

        return var3 == 0 && (side == 0) ? 5 :

            (var3 == 4 && (side == 1) ? 5 :

            (var3 == 8 && (side == 2) ? 5 :

            (var3 == 12 && (side == 3) ? 5 :

              (var3 == 16 && (side == 4) ? 5 :

              (var3 == 20 && (side == 5) ? 5 :

              (var4 == 1 ? 14 :

              (var4 == 2 ? 15 :

              (var4 == 3 ? 16 : 13))))))));

             

    }

 

//all 16 of my blocks so no more appear than 15 metas

  public static int limitToValidMetadata(int par0)

    {

        return par0 & 15;

    }

 

  public int damageDropped(int i){ //Tells it what block it drops and also for creative mode pick block

      return i;

  }

 

  @SideOnly(Side.CLIENT)

  public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) //Adds the metadata blocks to the creative inventory

  {

      for (int var4 = 0; var4 < 16; ++var4)

      {

        par3List.add(new ItemStack(par1, 1, var4));

      }

  }

  public String getTextureFile()

  {

      return ClientProxy.BLOCKS_PNG;

  }

}

 

 

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.