--- a/net/minecraft/block/PoweredRailBlock.java
+++ b/net/minecraft/block/PoweredRailBlock.java
@@ -14,10 +14,16 @@
 public class PoweredRailBlock extends AbstractRailBlock {
    public static final EnumProperty<RailShape> field_176568_b = BlockStateProperties.field_208166_S;
    public static final BooleanProperty field_176569_M = BlockStateProperties.field_208194_u;
+   private final boolean isActivator;  // TRUE for an Activator Rail, FALSE for Powered Rail
 
    public PoweredRailBlock(AbstractBlock.Properties p_i48349_1_) {
-      super(true, p_i48349_1_);
+      this(p_i48349_1_, false);
+   }
+
+   protected PoweredRailBlock(AbstractBlock.Properties builder, boolean isPoweredRail) {
+      super(true, builder);
       this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176568_b, RailShape.NORTH_SOUTH).func_206870_a(field_176569_M, Boolean.valueOf(false)));
+      this.isActivator = !isPoweredRail;
    }
 
    protected boolean func_176566_a(World p_176566_1_, BlockPos p_176566_2_, BlockState p_176566_3_, boolean p_176566_4_, int p_176566_5_) {
@@ -99,13 +105,13 @@
 
    protected boolean func_208071_a(World p_208071_1_, BlockPos p_208071_2_, boolean p_208071_3_, int p_208071_4_, RailShape p_208071_5_) {
       BlockState blockstate = p_208071_1_.func_180495_p(p_208071_2_);
-      if (!blockstate.func_203425_a(this)) {
+      if (!(blockstate.func_177230_c() instanceof PoweredRailBlock)) {
          return false;
       } else {
-         RailShape railshape = blockstate.func_177229_b(field_176568_b);
+         RailShape railshape = getRailDirection(blockstate, p_208071_1_, p_208071_2_, null);
          if (p_208071_5_ != RailShape.EAST_WEST || railshape != RailShape.NORTH_SOUTH && railshape != RailShape.ASCENDING_NORTH && railshape != RailShape.ASCENDING_SOUTH) {
             if (p_208071_5_ != RailShape.NORTH_SOUTH || railshape != RailShape.EAST_WEST && railshape != RailShape.ASCENDING_EAST && railshape != RailShape.ASCENDING_WEST) {
-               if (blockstate.func_177229_b(field_176569_M)) {
+               if (isActivator == (((PoweredRailBlock) blockstate.func_177230_c()).isActivator)) {
                   return p_208071_1_.func_175640_z(p_208071_2_) ? true : this.func_176566_a(p_208071_1_, p_208071_2_, blockstate, p_208071_3_, p_208071_4_ + 1);
                } else {
                   return false;
@@ -255,4 +261,8 @@
    protected void func_206840_a(StateContainer.Builder<Block, BlockState> p_206840_1_) {
       p_206840_1_.func_206894_a(field_176568_b, field_176569_M);
    }
+
+   public boolean isActivatorRail() {
+      return isActivator;
+   }
 }
