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

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

package net.minecraft.server;

import com.google.common.collect.Lists;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

public class BlockSponge extends Block {

  public static final BlockStateBoolean WET = BlockStateBoolean.of("wet");

  protected BlockSponge() {
    super(Material.SPONGE);
    this.j(this.blockStateList.getBlockData().set(BlockSponge.WET, Boolean.valueOf(false)));
    this.a(CreativeModeTab.b);
  }

  public String getName() {
    return LocaleI18n.get(this.a() + ".dry.name");
  }

  public int getDropData(IBlockData iblockdata) {
    return iblockdata.get(BlockSponge.WET).booleanValue() ? 1 : 0;
  }

  public void onPlace(World world, BlockPosition blockposition, IBlockData iblockdata) {
    this.e(world, blockposition, iblockdata);
  }

  public void doPhysics(World world, BlockPosition blockposition, IBlockData iblockdata, Block block) {
    this.e(world, blockposition, iblockdata);
    super.doPhysics(world, blockposition, iblockdata, block);
  }

  protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
    if (!iblockdata.get(BlockSponge.WET).booleanValue() && this.e(world, blockposition)) {
      world.setTypeAndData(blockposition, iblockdata.set(BlockSponge.WET, Boolean.valueOf(true)), 2);
      world.triggerEffect(2001, blockposition, Block.getId(Blocks.WATER));
    }

  }

  private boolean e(World world, BlockPosition blockposition) {
    LinkedList linkedlist = Lists.newLinkedList();
    ArrayList arraylist = Lists.newArrayList();

    linkedlist.add(new Tuple(blockposition, Integer.valueOf(0)));
    int i = 0;

    BlockPosition blockposition1;

    while (!linkedlist.isEmpty()) {
      Tuple tuple = (Tuple) linkedlist.poll();

      blockposition1 = (BlockPosition) tuple.a();
      int j = ((Integer) tuple.b()).intValue();
      EnumDirection[] aenumdirection = EnumDirection.values();
      int k = aenumdirection.length;

      for (int l = 0; l < k; ++l) {
        EnumDirection enumdirection = aenumdirection[l];
        BlockPosition blockposition2 = blockposition1.shift(enumdirection);

        if (world.getType(blockposition2).getBlock().getMaterial() == Material.WATER) {
          world.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 2);
          arraylist.add(blockposition2);
          ++i;
          if (j < 6) {
            linkedlist.add(new Tuple(blockposition2, Integer.valueOf(j + 1)));
          }
        }
      }

      if (i > 64) {
        break;
      }
    }

    Iterator iterator = arraylist.iterator();

    while (iterator.hasNext()) {
      blockposition1 = (BlockPosition) iterator.next();
      world.applyPhysics(blockposition1, Blocks.AIR);
    }

    return i > 0;
  }

  public IBlockData fromLegacyData(int i) {
    return this.getBlockData().set(BlockSponge.WET, Boolean.valueOf((i & 1) == 1));
  }

  public int toLegacyData(IBlockData iblockdata) {
    return iblockdata.get(BlockSponge.WET).booleanValue() ? 1 : 0;
  }

  protected BlockStateList getStateList() {
    return new BlockStateList(this, BlockSponge.WET);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy