You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
5.9 KiB
Java
192 lines
5.9 KiB
Java
package net.minecraft.block;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.world.World;
|
|
|
|
public class BlockRailPowered extends BlockRailBase
|
|
{
|
|
@SideOnly(Side.CLIENT)
|
|
protected IIcon field_150059_b;
|
|
private static final String __OBFID = "CL_00000288";
|
|
|
|
protected BlockRailPowered()
|
|
{
|
|
super(true);
|
|
}
|
|
|
|
/**
|
|
* Gets the block's texture. Args: side, meta
|
|
*/
|
|
@SideOnly(Side.CLIENT)
|
|
public IIcon getIcon(int side, int meta)
|
|
{
|
|
return (meta & 8) == 0 ? this.blockIcon : this.field_150059_b;
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void registerBlockIcons(IIconRegister reg)
|
|
{
|
|
super.registerBlockIcons(reg);
|
|
this.field_150059_b = reg.registerIcon(this.getTextureName() + "_powered");
|
|
}
|
|
|
|
protected boolean func_150058_a(World p_150058_1_, int p_150058_2_, int p_150058_3_, int p_150058_4_, int p_150058_5_, boolean p_150058_6_, int p_150058_7_)
|
|
{
|
|
if (p_150058_7_ >= 8)
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
int j1 = p_150058_5_ & 7;
|
|
boolean flag1 = true;
|
|
|
|
switch (j1)
|
|
{
|
|
case 0:
|
|
if (p_150058_6_)
|
|
{
|
|
++p_150058_4_;
|
|
}
|
|
else
|
|
{
|
|
--p_150058_4_;
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
if (p_150058_6_)
|
|
{
|
|
--p_150058_2_;
|
|
}
|
|
else
|
|
{
|
|
++p_150058_2_;
|
|
}
|
|
|
|
break;
|
|
case 2:
|
|
if (p_150058_6_)
|
|
{
|
|
--p_150058_2_;
|
|
}
|
|
else
|
|
{
|
|
++p_150058_2_;
|
|
++p_150058_3_;
|
|
flag1 = false;
|
|
}
|
|
|
|
j1 = 1;
|
|
break;
|
|
case 3:
|
|
if (p_150058_6_)
|
|
{
|
|
--p_150058_2_;
|
|
++p_150058_3_;
|
|
flag1 = false;
|
|
}
|
|
else
|
|
{
|
|
++p_150058_2_;
|
|
}
|
|
|
|
j1 = 1;
|
|
break;
|
|
case 4:
|
|
if (p_150058_6_)
|
|
{
|
|
++p_150058_4_;
|
|
}
|
|
else
|
|
{
|
|
--p_150058_4_;
|
|
++p_150058_3_;
|
|
flag1 = false;
|
|
}
|
|
|
|
j1 = 0;
|
|
break;
|
|
case 5:
|
|
if (p_150058_6_)
|
|
{
|
|
++p_150058_4_;
|
|
++p_150058_3_;
|
|
flag1 = false;
|
|
}
|
|
else
|
|
{
|
|
--p_150058_4_;
|
|
}
|
|
|
|
j1 = 0;
|
|
}
|
|
|
|
return this.func_150057_a(p_150058_1_, p_150058_2_, p_150058_3_, p_150058_4_, p_150058_6_, p_150058_7_, j1) ? true : flag1 && this.func_150057_a(p_150058_1_, p_150058_2_, p_150058_3_ - 1, p_150058_4_, p_150058_6_, p_150058_7_, j1);
|
|
}
|
|
}
|
|
|
|
protected boolean func_150057_a(World p_150057_1_, int p_150057_2_, int p_150057_3_, int p_150057_4_, boolean p_150057_5_, int p_150057_6_, int p_150057_7_)
|
|
{
|
|
Block block = p_150057_1_.getBlock(p_150057_2_, p_150057_3_, p_150057_4_);
|
|
|
|
if (block == this)
|
|
{
|
|
int j1 = p_150057_1_.getBlockMetadata(p_150057_2_, p_150057_3_, p_150057_4_);
|
|
int k1 = j1 & 7;
|
|
|
|
if (p_150057_7_ == 1 && (k1 == 0 || k1 == 4 || k1 == 5))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (p_150057_7_ == 0 && (k1 == 1 || k1 == 2 || k1 == 3))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if ((j1 & 8) != 0)
|
|
{
|
|
if (p_150057_1_.isBlockIndirectlyGettingPowered(p_150057_2_, p_150057_3_, p_150057_4_))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return this.func_150058_a(p_150057_1_, p_150057_2_, p_150057_3_, p_150057_4_, j1, p_150057_5_, p_150057_6_ + 1);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
protected void func_150048_a(World p_150048_1_, int p_150048_2_, int p_150048_3_, int p_150048_4_, int p_150048_5_, int p_150048_6_, Block p_150048_7_)
|
|
{
|
|
boolean flag = p_150048_1_.isBlockIndirectlyGettingPowered(p_150048_2_, p_150048_3_, p_150048_4_);
|
|
flag = flag || this.func_150058_a(p_150048_1_, p_150048_2_, p_150048_3_, p_150048_4_, p_150048_5_, true, 0) || this.func_150058_a(p_150048_1_, p_150048_2_, p_150048_3_, p_150048_4_, p_150048_5_, false, 0);
|
|
boolean flag1 = false;
|
|
|
|
if (flag && (p_150048_5_ & 8) == 0)
|
|
{
|
|
p_150048_1_.setBlockMetadataWithNotify(p_150048_2_, p_150048_3_, p_150048_4_, p_150048_6_ | 8, 3);
|
|
flag1 = true;
|
|
}
|
|
else if (!flag && (p_150048_5_ & 8) != 0)
|
|
{
|
|
p_150048_1_.setBlockMetadataWithNotify(p_150048_2_, p_150048_3_, p_150048_4_, p_150048_6_, 3);
|
|
flag1 = true;
|
|
}
|
|
|
|
if (flag1)
|
|
{
|
|
p_150048_1_.notifyBlocksOfNeighborChange(p_150048_2_, p_150048_3_ - 1, p_150048_4_, this);
|
|
|
|
if (p_150048_6_ == 2 || p_150048_6_ == 3 || p_150048_6_ == 4 || p_150048_6_ == 5)
|
|
{
|
|
p_150048_1_.notifyBlocksOfNeighborChange(p_150048_2_, p_150048_3_ + 1, p_150048_4_, this);
|
|
}
|
|
}
|
|
}
|
|
} |