Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
int l = MathHelper.floor_double((double)(player.rotationYaw * 4F / 360.0F) + 0.5D) & 3;
int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 16F / 360.0F) + 0.5D) & 15;
int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7;
world.setBlockMetadataWithNotify(x, y, z, l, 2);
timaxa007 написал(а):Как пример можно взять из блоков которые ставятся под разными углами:
Печь (в 4 направления):
Табличка, головы/череп (в 16 направлений):Код:int l = MathHelper.floor_double((double)(player.rotationYaw * 4F / 360.0F) + 0.5D) & 3;
То что тебе надо вроде, как нужно типа этого (в 8 направлений):Код:int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 16F / 360.0F) + 0.5D) & 15;
И давай значение этому блоку для метадаты:Код:int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7;
И из метадаты бери и узнавай под каким углом его ставили.Код:world.setBlockMetadataWithNotify(x, y, z, l, 2);
public void onBlockPlacedBy(int x, int y, int z,EntityLivingBase player, World world)
{
int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7;
if(l == 0){
world.setBlockMetadataWithNotify(x, y, z, l, 2);
}
}
timaxa007 написал(а):И зачем ты сделал проверку на "if(l == 0){"?
timaxa007 написал(а):Без этого условия.
public void onBlockPlacedBy(int x, int y, int z,EntityLivingBase player, World world)
{
int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7;
world.setBlockMetadataWithNotify(x, y, z, l, 2);
}
Nix13Chanel написал(а):timaxa007 написал(а):Без этого условия.
Код:public void onBlockPlacedBy(int x, int y, int z,EntityLivingBase player, World world) { int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7; world.setBlockMetadataWithNotify(x, y, z, l, 2); }
public void onBlockPlacedBy(World world, int x, int y, int z,EntityLivingBase player, ItemStack item)
{
int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7;
world.setBlockMetadataWithNotify(x, y, z, l, 2);
}
mnsbabydoll написал(а):Nix13Chanel написал(а):timaxa007 написал(а):Без этого условия.
Код:public void onBlockPlacedBy(int x, int y, int z,EntityLivingBase player, World world) { int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7; world.setBlockMetadataWithNotify(x, y, z, l, 2); }
так у тебя вообще неправильно написан наследуемый метод (конкретно для 1.7.10)
вот как надо:
Код:public void onBlockPlacedBy(World world, int x, int y, int z,EntityLivingBase player, ItemStack item) { int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7; world.setBlockMetadataWithNotify(x, y, z, l, 2); }
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
return side == 1 ? Blocks.planks.getIcon(0, 0) : super.getIcon(side, meta);
}
timaxa007 написал(а):side == 1 - это условие для верхней части блока.Код:@SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { return side == 1 ? Blocks.planks.getIcon(0, 0) : super.getIcon(side, meta); }
timaxa007 написал(а):Возвращать объект IIcon в методе getIcon.
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister icon){
this.side = icon.registerIcon(rcc.MOD_ID + ":" + "asphalt_side");
this.bottom = icon.registerIcon(rcc.MOD_ID + ":" + "asphalt_bottom");
this.top = icon.registerIcon(rcc.MOD_ID + ":" + "asphalt_top");
}
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if (side == 0) return bottom;
else if (side == 1) return top;
else return side;
}
timaxa007 написал(а):Код:@SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { if (side == 0) return bottom; else if (side == 1) return top; else return side; }
public class AsphaltL extends Block {
public IIcon side1;
public IIcon bottom;
public IIcon top;
public AsphaltL() {
super(Material.rock);
this.setCreativeTab(CreativeTabs.tabBlock);
setBlockName("AsphaltL");
setStepSound(soundTypeStone);
setHardness(0.5F);
}
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if (side == 0){
return bottom;
}
else if (side == 2)
{
return side1;
}
else if (side == 3)
{
return side1;
}
else if (side == 4)
{
return side1;
}
else if (side == 5)
{
return side1;
}
return side == 1 ? rcc.AsphaltLine.getIcon(0, 0) : super.getIcon(side, meta);
}
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister icon){
this.side1 = icon.registerIcon(rcc.MOD_ID + ":" + "asphalt_side");
this.bottom = icon.registerIcon(rcc.MOD_ID + ":" + "asphalt_bottom");
this.top = icon.registerIcon(rcc.MOD_ID + ":" + "asphalt_top1");
}
public void onBlockPlacedBy(World world, int x, int y, int z,EntityLivingBase player, ItemStack item)
{
int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7;
world.setBlockMetadataWithNotify(x, y, z, l, 2);
}
}
timaxa007 написал(а):