40 lines
1.3 KiB
Java
40 lines
1.3 KiB
Java
package com.simibubi.create.content.logistics.trains.track;
|
|
|
|
import com.simibubi.create.content.logistics.trains.AbstractBogeyBlock;
|
|
import com.simibubi.create.foundation.tileEntity.CachedRenderBBTileEntity;
|
|
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
|
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
import net.minecraft.world.phys.AABB;
|
|
|
|
public class StandardBogeyTileEntity extends CachedRenderBBTileEntity {
|
|
|
|
public StandardBogeyTileEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
|
super(type, pos, state);
|
|
}
|
|
|
|
@Override
|
|
protected AABB createRenderBoundingBox() {
|
|
return super.createRenderBoundingBox().inflate(2);
|
|
}
|
|
|
|
// Ponder
|
|
LerpedFloat virtualAnimation = LerpedFloat.angular();
|
|
|
|
public float getVirtualAngle(float partialTicks) {
|
|
return virtualAnimation.getValue(partialTicks);
|
|
}
|
|
|
|
public void animate(float distanceMoved) {
|
|
BlockState blockState = getBlockState();
|
|
if (!(blockState.getBlock() instanceof AbstractBogeyBlock type))
|
|
return;
|
|
double angleDiff = 360 * distanceMoved / (Math.PI * 2 * type.getWheelRadius());
|
|
double newWheelAngle = (virtualAnimation.getValue() - angleDiff) % 360;
|
|
virtualAnimation.setValue(newWheelAngle);
|
|
}
|
|
|
|
}
|