Infused wood logs are now "rotatable"
This commit is contained in:
parent
3e2a9e3883
commit
78d876e78b
1 changed files with 65 additions and 9 deletions
|
@ -11,6 +11,7 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.Icon;
|
import net.minecraft.util.Icon;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -18,7 +19,7 @@ import java.util.List;
|
||||||
public class BlockInfusedWood extends BlockEE
|
public class BlockInfusedWood extends BlockEE
|
||||||
{
|
{
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
private Icon logTop, logSide;
|
private Icon logEnd, logSide;
|
||||||
|
|
||||||
public BlockInfusedWood(int id)
|
public BlockInfusedWood(int id)
|
||||||
{
|
{
|
||||||
|
@ -32,14 +33,14 @@ public class BlockInfusedWood extends BlockEE
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void registerIcons(IconRegister iconRegister)
|
public void registerIcons(IconRegister iconRegister)
|
||||||
{
|
{
|
||||||
logTop = iconRegister.registerIcon("log_oak_top");
|
logEnd = iconRegister.registerIcon("log_oak_top");
|
||||||
logSide = iconRegister.registerIcon("log_oak");
|
logSide = iconRegister.registerIcon("log_oak");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int damageDropped(int metaData)
|
public int damageDropped(int metaData)
|
||||||
{
|
{
|
||||||
return metaData;
|
return metaData & 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -48,18 +49,72 @@ public class BlockInfusedWood extends BlockEE
|
||||||
{
|
{
|
||||||
if (ForgeDirection.getOrientation(side) == ForgeDirection.UP || ForgeDirection.getOrientation(side) == ForgeDirection.DOWN)
|
if (ForgeDirection.getOrientation(side) == ForgeDirection.UP || ForgeDirection.getOrientation(side) == ForgeDirection.DOWN)
|
||||||
{
|
{
|
||||||
return logTop;
|
if (metaData >> 2 == 0)
|
||||||
|
{
|
||||||
|
return logEnd;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return logSide;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ForgeDirection.getOrientation(side) == ForgeDirection.NORTH || ForgeDirection.getOrientation(side) == ForgeDirection.SOUTH)
|
||||||
|
{
|
||||||
|
if (metaData >> 2 == 2)
|
||||||
|
{
|
||||||
|
return logEnd;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return logSide;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return logSide;
|
if (metaData >> 2 == 1)
|
||||||
|
{
|
||||||
|
return logEnd;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return logSide;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metaData)
|
||||||
|
{
|
||||||
|
int logType = metaData & 3;
|
||||||
|
byte rotation = 0;
|
||||||
|
|
||||||
|
switch (side)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
rotation = 0;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
rotation = 8;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
case 5:
|
||||||
|
rotation = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
int newMetaData = logType | rotation;
|
||||||
|
world.setBlockMetadataWithNotify(x, y, z, newMetaData, 3);
|
||||||
|
return newMetaData;
|
||||||
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int colorMultiplier(IBlockAccess blockAccess, int x, int y, int z)
|
public int colorMultiplier(IBlockAccess blockAccess, int x, int y, int z)
|
||||||
{
|
{
|
||||||
int metaData = blockAccess.getBlockMetadata(x, y, z);
|
int metaData = blockAccess.getBlockMetadata(x, y, z) & 3;
|
||||||
|
|
||||||
if (metaData == 0)
|
if (metaData == 0)
|
||||||
{
|
{
|
||||||
|
@ -82,15 +137,16 @@ public class BlockInfusedWood extends BlockEE
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int getRenderColor(int metaData)
|
public int getRenderColor(int metaData)
|
||||||
{
|
{
|
||||||
if (metaData == 0)
|
int adjustedMetaData = metaData & 3;
|
||||||
|
if (adjustedMetaData == 0)
|
||||||
{
|
{
|
||||||
return Integer.parseInt(Colours.INFUSED_WOOD_VERDANT, 16);
|
return Integer.parseInt(Colours.INFUSED_WOOD_VERDANT, 16);
|
||||||
}
|
}
|
||||||
else if (metaData == 1)
|
else if (adjustedMetaData == 1)
|
||||||
{
|
{
|
||||||
return Integer.parseInt(Colours.INFUSED_WOOD_AZURE, 16);
|
return Integer.parseInt(Colours.INFUSED_WOOD_AZURE, 16);
|
||||||
}
|
}
|
||||||
else if (metaData == 2)
|
else if (adjustedMetaData == 2)
|
||||||
{
|
{
|
||||||
return Integer.parseInt(Colours.INFUSED_WOOD_MINIUM, 16);
|
return Integer.parseInt(Colours.INFUSED_WOOD_MINIUM, 16);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue