# [1.7.10] Multiblock Structure & Directional Blocks

## Recommended Posts

Okay, so I have two questions, and the first might get a little complicated - I want to make a multiblock structure similar to the research table in Thaumcraft 4 (Place two blocks on the ground, and right click with a certain item to turn it into a different tile entity all together). Specifically, I want to place two tables on the ground, and then two flat panels above it against the wall, right click it with an item and it turns into a workbench of sorts.

My questions are how would I make this multiblock structure (just by it self - not including the custom crafting bench as I can probably find a tutorial on that) and how would I make a block face the way I want it to: e.g. 16x16x1 pixel panel against the wall, but which way it faces depends on the way you are facing when you place it.

I recognise that the second problem is most likely easier to solve than the first, but any help on either would be greatly appreciated.

P.S. Also, if you know of any tutorials of either text or video and would help me, please provide a link.

Thanks,

-Whyneb360

##### Share on other sites

I hate to double post as it seems slightly selfish, but I would still appreciate at least a few links to the right place.

##### Share on other sites

Take a look at how the furnace works. That uses meta data to determine which sides have what textures and when placed it uses the players facing direction to set the metadata.

I am the author of Draconic Evolution

##### Share on other sites

I have this code now for the rotation:

```public void onBlockAdded(World world, int x, int y, int z) {
this.setDefaultDirection(world, x, y, z);
}

private void setDefaultDirection(World world, int x, int y, int z) {
if(!world.isRemote) {
Block b1 = world.getBlock(x, y, z - 1);
Block b2 = world.getBlock(x, y, z + 1);
Block b3 = world.getBlock(x - 1, y, z);
Block b4 = world.getBlock(x + 1, y, z);

byte b0 = 3;

if(b1.func_149730_j() && !b2.func_149730_j())  {
b0 = 3;
}

if(b2.func_149730_j() && !b1.func_149730_j())  {
b0 = 2;
}

if(b3.func_149730_j() && !b4.func_149730_j())  {
b0 = 5;
}

if(b4.func_149730_j() && !b3.func_149730_j())  {
b0 = 4;
}

}
}

public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityplayer, ItemStack itemstack) {
int l = MathHelper.floor_double((double)(entityplayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

if(l == 0) {
}

if(l == 1) {
}

if(l == 2) {
}

if(l == 3) {
}
}```

...but it still just faces in one direction. Any ideas why?

##### Share on other sites

Whats this? b1.func_149730_j() && !b2.func_149730_j() Thats like saying if (true && false) It will always return false.

I am the author of Draconic Evolution

##### Share on other sites

Thanks,

What should I change it to?

EDIT: I looked at the vanilla furnace code, and it it written as pretty much the same. Does this mean it has to do with the block being a tile entity?:

```public void onBlockAdded(World p_149726_1_, int p_149726_2_, int p_149726_3_, int p_149726_4_)
{
this.func_149930_e(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_);
}

private void func_149930_e(World p_149930_1_, int p_149930_2_, int p_149930_3_, int p_149930_4_)
{
if (!p_149930_1_.isRemote)
{
Block block = p_149930_1_.getBlock(p_149930_2_, p_149930_3_, p_149930_4_ - 1);
Block block1 = p_149930_1_.getBlock(p_149930_2_, p_149930_3_, p_149930_4_ + 1);
Block block2 = p_149930_1_.getBlock(p_149930_2_ - 1, p_149930_3_, p_149930_4_);
Block block3 = p_149930_1_.getBlock(p_149930_2_ + 1, p_149930_3_, p_149930_4_);
byte b0 = 3;

if (block.func_149730_j() && !block1.func_149730_j())
{
b0 = 3;
}

if (block1.func_149730_j() && !block.func_149730_j())
{
b0 = 2;
}

if (block2.func_149730_j() && !block3.func_149730_j())
{
b0 = 5;
}

if (block3.func_149730_j() && !block2.func_149730_j())
{
b0 = 4;
}

}
}

public void onBlockPlacedBy(World p_149689_1_, int p_149689_2_, int p_149689_3_, int p_149689_4_, EntityLivingBase p_149689_5_, ItemStack p_149689_6_)
{
int l = MathHelper.floor_double((double)(p_149689_5_.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

if (l == 0)
{
}

if (l == 1)
{
}

if (l == 2)
{
}

if (l == 3)
{
}

if (p_149689_6_.hasDisplayName())
{
((TileEntityFurnace)p_149689_1_.getTileEntity(p_149689_2_, p_149689_3_, p_149689_4_)).func_145951_a(p_149689_6_.getDisplayName());
}
}```

##### Share on other sites

Try removing that altogether you really only need to worry about onBlockPlacedBy.

Also a good way to check that the metadata is actuallly being set is to put a Sysout in onBlockActivated that prints out the metadata.

I am the author of Draconic Evolution

##### Share on other sites

So I got rid of the setDefaultDirection method, and just left the onBlockAdded and onBlockPlacedBy (with the System println) and saw that the metadata was changing, but the block still only faced one way. which bit of code am I missing to make the block actually turn?

##### Share on other sites

Then it is a problem with your getIcon methods you need to return a different icon for each side depending on the metadata.

I am the author of Draconic Evolution

##### Share on other sites

Could the problem be that I don't have a getIcon method? And what would I need to include in the method to complete it for a tile entity with a custom model?

Thanks for all your help by the way, much appreciated

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

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.

×   Pasted as rich text.   Restore formatting

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

• ### Posts

• i need help fixing my server ui dont know what is going wrong here is the latest log help pls latestlog.txt
• version: 1.19.2 launcher: Forge (43.2.14) Log: https://paste.ee/p/H3MCd#section0 getting an access violation error complaining about the create millstone, game will run fine for a little while, i'll load in, play about for 10-15 minutes and then it will crash without warning (launcher gives error code -1 if that helps) i'm stumped does anyone know what the issue is? if possible a solution that doesn't involve removing the create mod. thanks in advance.
• Hi everyone, I am trying to start a modded server with the mods I also have in my client. The server works perfeclty normal without any mods in it, however when I put the mods in I get a lot of missing mods.toml files or something like that. I don't really know how this works, I'll add the server log below. Does anyone know what i'm doing wrong? https://paste.ee/p/F3a5E

• ### Who's Online (See full list)

×

• #### Activity

×
• Create New...