Hbm-s-Nuclear-Tech-GIT/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java
2025-04-03 16:51:31 +02:00

87 lines
2.1 KiB
Java

package com.hbm.tileentity.machine;
import com.hbm.blocks.BlockDummyable;
import com.hbm.main.MainRegistry;
import com.hbm.util.fauxpointtwelve.DirPos;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineCompressor extends TileEntityMachineCompressorBase {
public float fanSpin;
public float prevFanSpin;
public float piston;
public float prevPiston;
public boolean pistonDir;
private float randSpeed = 0.1F;
@Override
public void updateEntity() {
super.updateEntity();
if(worldObj.isRemote) {
this.prevFanSpin = this.fanSpin;
this.prevPiston = this.piston;
if(this.isOn) {
this.fanSpin += 15;
if(this.fanSpin >= 360) {
this.prevFanSpin -= 360;
this.fanSpin -= 360;
}
if(this.pistonDir) {
this.piston -= randSpeed;
if(this.piston <= 0) {
MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:item.boltgun", this.getVolume(0.5F), 0.75F);
this.pistonDir = !this.pistonDir;
}
} else {
this.piston += 0.05F;
if(this.piston >= 1) {
this.randSpeed = 0.085F + worldObj.rand.nextFloat() * 0.03F;
this.pistonDir = !this.pistonDir;
}
}
this.piston = MathHelper.clamp_float(this.piston, 0F, 1F);
}
}
}
@Override
public DirPos[] getConPos() {
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
return new DirPos[] {
new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot),
new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()),
new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()),
};
}
AxisAlignedBB bb = null;
@Override
public AxisAlignedBB getRenderBoundingBox() {
if(bb == null) {
bb = AxisAlignedBB.getBoundingBox(
xCoord - 2,
yCoord,
zCoord - 2,
xCoord + 3,
yCoord + 9,
zCoord + 3
);
}
return bb;
}
}