Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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;

}

}

 

 

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.

How are you storing your logs meta data for rotations

 

for example

the vanilla oak log facing straight up is meta 0

its rotated north/south is meta 4

and rotated east/west is meta 8

  • Author

 

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

can anyone help please

 

you still haven't explained how you are working out what direction the block will be facing with the meta data.

 

are you doing the same as vanilla? meta data n = face up, n + 4 = face north/south n + 8 = face west/east?

  • Author

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;

  }

}

 

 

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

  • Author

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;

  }

}

 

 

  • Author

Still Unsolved all i want to know is how to add 16 blocks so they can rotate like wood blocks, i already have 4 done but it doesn't let me go over that or they go strange

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.