All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.minecraft.server.BlockPistonExtension Maven / Gradle / Ivy

package net.minecraft.server;

import java.util.List;
import java.util.Random;

public class BlockPistonExtension extends Block {

  public static final BlockStateDirection FACING = BlockStateDirection.of("facing");
  public static final BlockStateEnum TYPE = BlockStateEnum.of("type", EnumPistonType.class);
  public static final BlockStateBoolean SHORT = BlockStateBoolean.of("short");

  public BlockPistonExtension() {
    super(Material.PISTON);
    this.j(this.blockStateList.getBlockData().set(BlockPistonExtension.FACING, EnumDirection.NORTH).set(BlockPistonExtension.TYPE, EnumPistonType.DEFAULT).set(BlockPistonExtension.SHORT, Boolean.valueOf(false)));
    this.a(BlockPistonExtension.i);
    this.c(0.5F);
  }

  public static EnumDirection b(int i) {
    int j = i & 7;

    return j > 5 ? null : EnumDirection.fromType1(j);
  }

  public void a(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman) {
    if (entityhuman.abilities.canInstantlyBuild) {
      EnumDirection enumdirection = iblockdata.get(BlockPistonExtension.FACING);

      if (enumdirection != null) {
        BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite());
        Block block = world.getType(blockposition1).getBlock();

        if (block == Blocks.PISTON || block == Blocks.STICKY_PISTON) {
          world.setAir(blockposition1);
        }
      }
    }

    super.a(world, blockposition, iblockdata, entityhuman);
  }

  public void remove(World world, BlockPosition blockposition, IBlockData iblockdata) {
    super.remove(world, blockposition, iblockdata);
    EnumDirection enumdirection = iblockdata.get(BlockPistonExtension.FACING).opposite();

    blockposition = blockposition.shift(enumdirection);
    IBlockData iblockdata1 = world.getType(blockposition);

    if ((iblockdata1.getBlock() == Blocks.PISTON || iblockdata1.getBlock() == Blocks.STICKY_PISTON) && iblockdata1.get(BlockPiston.EXTENDED).booleanValue()) {
      iblockdata1.getBlock().b(world, blockposition, iblockdata1, 0);
      world.setAir(blockposition);
    }

  }

  public boolean c() {
    return false;
  }

  public boolean d() {
    return false;
  }

  public boolean canPlace(World world, BlockPosition blockposition) {
    return false;
  }

  public boolean canPlace(World world, BlockPosition blockposition, EnumDirection enumdirection) {
    return false;
  }

  public int a(Random random) {
    return 0;
  }

  public void a(World world, BlockPosition blockposition, IBlockData iblockdata, AxisAlignedBB axisalignedbb, List list, Entity entity) {
    this.d(iblockdata);
    super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
    this.e(iblockdata);
    super.a(world, blockposition, iblockdata, axisalignedbb, list, entity);
    this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
  }

  private void e(IBlockData iblockdata) {
    float f = 0.25F;
    float f1 = 0.375F;
    float f2 = 0.625F;
    float f3 = 0.25F;
    float f4 = 0.75F;

    switch (SyntheticClass_1.a[iblockdata.get(BlockPistonExtension.FACING).ordinal()]) {
      case 1:
        this.a(0.375F, 0.25F, 0.375F, 0.625F, 1.0F, 0.625F);
        break;

      case 2:
        this.a(0.375F, 0.0F, 0.375F, 0.625F, 0.75F, 0.625F);
        break;

      case 3:
        this.a(0.25F, 0.375F, 0.25F, 0.75F, 0.625F, 1.0F);
        break;

      case 4:
        this.a(0.25F, 0.375F, 0.0F, 0.75F, 0.625F, 0.75F);
        break;

      case 5:
        this.a(0.375F, 0.25F, 0.25F, 0.625F, 0.75F, 1.0F);
        break;

      case 6:
        this.a(0.0F, 0.375F, 0.25F, 0.75F, 0.625F, 0.75F);
    }

  }

  public void updateShape(IBlockAccess iblockaccess, BlockPosition blockposition) {
    this.d(iblockaccess.getType(blockposition));
  }

  public void d(IBlockData iblockdata) {
    float f = 0.25F;
    EnumDirection enumdirection = iblockdata.get(BlockPistonExtension.FACING);

    if (enumdirection != null) {
      switch (SyntheticClass_1.a[enumdirection.ordinal()]) {
        case 1:
          this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
          break;

        case 2:
          this.a(0.0F, 0.75F, 0.0F, 1.0F, 1.0F, 1.0F);
          break;

        case 3:
          this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.25F);
          break;

        case 4:
          this.a(0.0F, 0.0F, 0.75F, 1.0F, 1.0F, 1.0F);
          break;

        case 5:
          this.a(0.0F, 0.0F, 0.0F, 0.25F, 1.0F, 1.0F);
          break;

        case 6:
          this.a(0.75F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
      }

    }
  }

  public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
    EnumDirection enumdirection = iblockdata.get(BlockPistonExtension.FACING);
    BlockPosition blockposition1 = blockposition.shift(enumdirection.opposite());
    IBlockData iblockdata1 = world.getType(blockposition1);

    if (iblockdata1.getBlock() != Blocks.PISTON && iblockdata1.getBlock() != Blocks.STICKY_PISTON) {
      world.setAir(blockposition);
    } else {
      iblockdata1.getBlock().doPhysics(world, blockposition1, iblockdata1, block);
    }

  }

  public IBlockData fromLegacyData(int i) {
    return this.getBlockData().set(BlockPistonExtension.FACING, b(i)).set(BlockPistonExtension.TYPE, (i & 8) > 0 ? EnumPistonType.STICKY : EnumPistonType.DEFAULT);
  }

  public int toLegacyData(IBlockData iblockdata) {
    byte b0 = 0;
    int i = b0 | iblockdata.get(BlockPistonExtension.FACING).a();

    if (iblockdata.get(BlockPistonExtension.TYPE) == EnumPistonType.STICKY) {
      i |= 8;
    }

    return i;
  }

  protected BlockStateList getStateList() {
    return new BlockStateList(this, BlockPistonExtension.FACING, BlockPistonExtension.TYPE, BlockPistonExtension.SHORT);
  }

  public enum EnumPistonType implements INamable {

    DEFAULT("normal"), STICKY("sticky");

    private final String c;

    EnumPistonType(String s) {
      this.c = s;
    }

    public String toString() {
      return this.c;
    }

    public String getName() {
      return this.c;
    }
  }

  static class SyntheticClass_1 {

    static final int[] a = new int[EnumDirection.values().length];

    static {
      try {
        SyntheticClass_1.a[EnumDirection.DOWN.ordinal()] = 1;
      } catch (NoSuchFieldError nosuchfielderror) {
      }

      try {
        SyntheticClass_1.a[EnumDirection.UP.ordinal()] = 2;
      } catch (NoSuchFieldError nosuchfielderror1) {
      }

      try {
        SyntheticClass_1.a[EnumDirection.NORTH.ordinal()] = 3;
      } catch (NoSuchFieldError nosuchfielderror2) {
      }

      try {
        SyntheticClass_1.a[EnumDirection.SOUTH.ordinal()] = 4;
      } catch (NoSuchFieldError nosuchfielderror3) {
      }

      try {
        SyntheticClass_1.a[EnumDirection.WEST.ordinal()] = 5;
      } catch (NoSuchFieldError nosuchfielderror4) {
      }

      try {
        SyntheticClass_1.a[EnumDirection.EAST.ordinal()] = 6;
      } catch (NoSuchFieldError nosuchfielderror5) {
      }

    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy