35 lines
1.7 KiB
Java
35 lines
1.7 KiB
Java
package dev.zprestige.prestige.math;
|
|
|
|
import dev.zprestige.prestige.render.MinecraftAccess;
|
|
import dev.zprestige.prestige.world.HitParticlePhysics;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.util.math.Vec3d;
|
|
|
|
public class LegacyParticlePhysics extends HitParticlePhysics {
|
|
@Override
|
|
public void updateMotion(HitParticle particle, boolean physicsEnabled) {
|
|
if (!physicsEnabled || MinecraftAccess.mc.world == null) {
|
|
this.applyLegacyMotion(particle);
|
|
} else {
|
|
if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x, particle.pos.y, particle.pos.z + particle.velocity.z)))) {
|
|
particle.velocity = new Vec3d(particle.velocity.x, particle.velocity.y, particle.velocity.z * -0.8);
|
|
}
|
|
|
|
if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x, particle.pos.y + particle.velocity.y, particle.pos.z)))) {
|
|
particle.velocity = new Vec3d(particle.velocity.x * 0.999F, particle.velocity.y * -0.6, particle.velocity.z * 0.999F);
|
|
}
|
|
|
|
if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x + particle.velocity.x, particle.pos.y, particle.pos.z)))) {
|
|
particle.velocity = new Vec3d(particle.velocity.x * -0.8, particle.velocity.y, particle.velocity.z);
|
|
}
|
|
|
|
this.applyLegacyMotion(particle);
|
|
}
|
|
}
|
|
|
|
private void applyLegacyMotion(HitParticle particle) {
|
|
particle.pos = particle.pos.add(particle.velocity);
|
|
particle.velocity = new Vec3d(particle.velocity.x / 0.999998F, particle.velocity.y - 1.5E-6, particle.velocity.z / 0.999998F);
|
|
}
|
|
}
|