minecraft_server-b1.7.3/src/net/minecraft/block/BlockPistonMoving.java
2026-01-30 02:26:17 +07:00

147 lines
5.6 KiB
Java

package net.minecraft.block;
import net.minecraft.block.material.Material;
import net.minecraft.block.tile.TileEntity;
import net.minecraft.block.tile.TileEntityPiston;
import net.minecraft.entity.EntityPlayer;
import net.minecraft.math.AxisAlignedBB;
import net.minecraft.util.PistonBlockTextures;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import java.util.Random;
public class BlockPistonMoving extends BlockContainer {
public BlockPistonMoving(int var1) {
super(var1, Material.piston);
this.setHardness(-1.0F);
}
protected TileEntity getBlockEntity() {
return null;
}
public void onBlockAdded(World var1, int var2, int var3, int var4) {
}
public void onBlockRemoval(World var1, int var2, int var3, int var4) {
TileEntity var5 = var1.getBlockTileEntity(var2, var3, var4);
if (var5 != null && var5 instanceof TileEntityPiston) {
((TileEntityPiston) var5).clearPistonTileEntity();
} else {
super.onBlockRemoval(var1, var2, var3, var4);
}
}
public boolean canPlaceBlockAt(World var1, int var2, int var3, int var4) {
return false;
}
public boolean canPlaceBlockOnSide(World var1, int var2, int var3, int var4, int var5) {
return false;
}
public boolean isOpaqueCube() {
return false;
}
public boolean isACube() {
return false;
}
public boolean blockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5) {
if (!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
var1.setBlockWithNotify(var2, var3, var4, 0);
return true;
} else {
return false;
}
}
public int idDropped(int var1, Random var2) {
return 0;
}
public void dropBlockAsItemWithChance(World var1, int var2, int var3, int var4, int var5, float var6) {
if (!var1.singleplayerWorld) {
TileEntityPiston var7 = this.getTileEntityAtLocation(var1, var2, var3, var4);
if (var7 != null) {
Block.blocksList[var7.getStoredBlockID()].dropBlockAsItem(var1, var2, var3, var4, var7.func_31005_e());
}
}
}
public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) {
if (!var1.singleplayerWorld && var1.getBlockTileEntity(var2, var3, var4) == null) {
}
}
public static TileEntity getTileEntity(int var0, int var1, int var2, boolean var3, boolean var4) {
return new TileEntityPiston(var0, var1, var2, var3, var4);
}
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
TileEntityPiston var5 = this.getTileEntityAtLocation(var1, var2, var3, var4);
if (var5 == null) {
return null;
} else {
float var6 = var5.func_31007_a(0.0F);
if (var5.func_31010_c()) {
var6 = 1.0F - var6;
}
return this.func_31032_a(var1, var2, var3, var4, var5.getStoredBlockID(), var6, var5.func_31008_d());
}
}
public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) {
TileEntityPiston var5 = this.getTileEntityAtLocation(var1, var2, var3, var4);
if (var5 != null) {
Block var6 = Block.blocksList[var5.getStoredBlockID()];
if (var6 == null || var6 == this) {
return;
}
var6.setBlockBoundsBasedOnState(var1, var2, var3, var4);
float var7 = var5.func_31007_a(0.0F);
if (var5.func_31010_c()) {
var7 = 1.0F - var7;
}
int var8 = var5.func_31008_d();
this.minX = var6.minX - (double) ((float) PistonBlockTextures.field_31051_b[var8] * var7);
this.minY = var6.minY - (double) ((float) PistonBlockTextures.field_31054_c[var8] * var7);
this.minZ = var6.minZ - (double) ((float) PistonBlockTextures.field_31053_d[var8] * var7);
this.maxX = var6.maxX - (double) ((float) PistonBlockTextures.field_31051_b[var8] * var7);
this.maxY = var6.maxY - (double) ((float) PistonBlockTextures.field_31054_c[var8] * var7);
this.maxZ = var6.maxZ - (double) ((float) PistonBlockTextures.field_31053_d[var8] * var7);
}
}
public AxisAlignedBB func_31032_a(World var1, int var2, int var3, int var4, int var5, float var6, int var7) {
if (var5 != 0 && var5 != this.blockID) {
AxisAlignedBB var8 = Block.blocksList[var5].getCollisionBoundingBoxFromPool(var1, var2, var3, var4);
if (var8 == null) {
return null;
} else {
var8.minX -= (double) ((float) PistonBlockTextures.field_31051_b[var7] * var6);
var8.maxX -= (double) ((float) PistonBlockTextures.field_31051_b[var7] * var6);
var8.minY -= (double) ((float) PistonBlockTextures.field_31054_c[var7] * var6);
var8.maxY -= (double) ((float) PistonBlockTextures.field_31054_c[var7] * var6);
var8.minZ -= (double) ((float) PistonBlockTextures.field_31053_d[var7] * var6);
var8.maxZ -= (double) ((float) PistonBlockTextures.field_31053_d[var7] * var6);
return var8;
}
} else {
return null;
}
}
private TileEntityPiston getTileEntityAtLocation(IBlockAccess var1, int var2, int var3, int var4) {
TileEntity var5 = var1.getBlockTileEntity(var2, var3, var4);
return var5 != null && var5 instanceof TileEntityPiston ? (TileEntityPiston) var5 : null;
}
}