soiz1's picture
Upload folder using huggingface_hub
d46f4a3 verified
package net.minecraft.client.particle;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class DripParticle extends TextureSheetParticle {
private final Fluid type;
protected boolean isGlowing;
DripParticle(ClientLevel p_106051_, double p_106052_, double p_106053_, double p_106054_, Fluid p_106055_) {
super(p_106051_, p_106052_, p_106053_, p_106054_);
this.setSize(0.01F, 0.01F);
this.gravity = 0.06F;
this.type = p_106055_;
}
protected Fluid getType() {
return this.type;
}
@Override
public ParticleRenderType getRenderType() {
return ParticleRenderType.PARTICLE_SHEET_OPAQUE;
}
@Override
public int getLightColor(float p_106065_) {
return this.isGlowing ? 240 : super.getLightColor(p_106065_);
}
@Override
public void tick() {
this.xo = this.x;
this.yo = this.y;
this.zo = this.z;
this.preMoveUpdate();
if (!this.removed) {
this.yd = this.yd - (double)this.gravity;
this.move(this.xd, this.yd, this.zd);
this.postMoveUpdate();
if (!this.removed) {
this.xd *= 0.98F;
this.yd *= 0.98F;
this.zd *= 0.98F;
if (this.type != Fluids.EMPTY) {
BlockPos blockpos = BlockPos.containing(this.x, this.y, this.z);
FluidState fluidstate = this.level.getFluidState(blockpos);
if (fluidstate.getType() == this.type
&& this.y < (double)((float)blockpos.getY() + fluidstate.getHeight(this.level, blockpos))) {
this.remove();
}
}
}
}
}
protected void preMoveUpdate() {
if (this.lifetime-- <= 0) {
this.remove();
}
}
protected void postMoveUpdate() {
}
public static TextureSheetParticle createWaterHangParticle(
SimpleParticleType p_272626_,
ClientLevel p_273102_,
double p_273456_,
double p_272984_,
double p_273398_,
double p_272880_,
double p_273725_,
double p_273051_
) {
DripParticle dripparticle = new DripParticle.DripHangParticle(p_273102_, p_273456_, p_272984_, p_273398_, Fluids.WATER, ParticleTypes.FALLING_WATER);
dripparticle.setColor(0.2F, 0.3F, 1.0F);
return dripparticle;
}
public static TextureSheetParticle createWaterFallParticle(
SimpleParticleType p_273627_,
ClientLevel p_273486_,
double p_273309_,
double p_273125_,
double p_272992_,
double p_273177_,
double p_273537_,
double p_272846_
) {
DripParticle dripparticle = new DripParticle.FallAndLandParticle(p_273486_, p_273309_, p_273125_, p_272992_, Fluids.WATER, ParticleTypes.SPLASH);
dripparticle.setColor(0.2F, 0.3F, 1.0F);
return dripparticle;
}
public static TextureSheetParticle createLavaHangParticle(
SimpleParticleType p_273228_,
ClientLevel p_273622_,
double p_273666_,
double p_273570_,
double p_273214_,
double p_273664_,
double p_273595_,
double p_272690_
) {
return new DripParticle.CoolingDripHangParticle(p_273622_, p_273666_, p_273570_, p_273214_, Fluids.LAVA, ParticleTypes.FALLING_LAVA);
}
public static TextureSheetParticle createLavaFallParticle(
SimpleParticleType p_273238_,
ClientLevel p_273752_,
double p_272651_,
double p_273625_,
double p_273136_,
double p_273204_,
double p_272797_,
double p_273362_
) {
DripParticle dripparticle = new DripParticle.FallAndLandParticle(p_273752_, p_272651_, p_273625_, p_273136_, Fluids.LAVA, ParticleTypes.LANDING_LAVA);
dripparticle.setColor(1.0F, 0.2857143F, 0.083333336F);
return dripparticle;
}
public static TextureSheetParticle createLavaLandParticle(
SimpleParticleType p_273607_,
ClientLevel p_272692_,
double p_273544_,
double p_272768_,
double p_272726_,
double p_273719_,
double p_272833_,
double p_272949_
) {
DripParticle dripparticle = new DripParticle.DripLandParticle(p_272692_, p_273544_, p_272768_, p_272726_, Fluids.LAVA);
dripparticle.setColor(1.0F, 0.2857143F, 0.083333336F);
return dripparticle;
}
public static TextureSheetParticle createHoneyHangParticle(
SimpleParticleType p_273557_,
ClientLevel p_273367_,
double p_272749_,
double p_272697_,
double p_272849_,
double p_273144_,
double p_273170_,
double p_272932_
) {
DripParticle.DripHangParticle dripparticle$driphangparticle = new DripParticle.DripHangParticle(
p_273367_, p_272749_, p_272697_, p_272849_, Fluids.EMPTY, ParticleTypes.FALLING_HONEY
);
dripparticle$driphangparticle.gravity *= 0.01F;
dripparticle$driphangparticle.lifetime = 100;
dripparticle$driphangparticle.setColor(0.622F, 0.508F, 0.082F);
return dripparticle$driphangparticle;
}
public static TextureSheetParticle createHoneyFallParticle(
SimpleParticleType p_273140_,
ClientLevel p_273042_,
double p_272969_,
double p_273737_,
double p_273454_,
double p_273211_,
double p_273723_,
double p_273474_
) {
DripParticle dripparticle = new DripParticle.HoneyFallAndLandParticle(
p_273042_, p_272969_, p_273737_, p_273454_, Fluids.EMPTY, ParticleTypes.LANDING_HONEY
);
dripparticle.gravity = 0.01F;
dripparticle.setColor(0.582F, 0.448F, 0.082F);
return dripparticle;
}
public static TextureSheetParticle createHoneyLandParticle(
SimpleParticleType p_273477_,
ClientLevel p_273770_,
double p_272822_,
double p_273147_,
double p_272597_,
double p_273614_,
double p_273085_,
double p_273097_
) {
DripParticle dripparticle = new DripParticle.DripLandParticle(p_273770_, p_272822_, p_273147_, p_272597_, Fluids.EMPTY);
dripparticle.lifetime = (int)(128.0 / (Math.random() * 0.8 + 0.2));
dripparticle.setColor(0.522F, 0.408F, 0.082F);
return dripparticle;
}
public static TextureSheetParticle createDripstoneWaterHangParticle(
SimpleParticleType p_273781_,
ClientLevel p_272876_,
double p_273499_,
double p_273028_,
double p_273663_,
double p_273004_,
double p_272801_,
double p_272665_
) {
DripParticle dripparticle = new DripParticle.DripHangParticle(p_272876_, p_273499_, p_273028_, p_273663_, Fluids.WATER, ParticleTypes.FALLING_DRIPSTONE_WATER);
dripparticle.setColor(0.2F, 0.3F, 1.0F);
return dripparticle;
}
public static TextureSheetParticle createDripstoneWaterFallParticle(
SimpleParticleType p_272684_,
ClientLevel p_273226_,
double p_273142_,
double p_273070_,
double p_273153_,
double p_273735_,
double p_273317_,
double p_273234_
) {
DripParticle dripparticle = new DripParticle.DripstoneFallAndLandParticle(
p_273226_, p_273142_, p_273070_, p_273153_, Fluids.WATER, ParticleTypes.SPLASH
);
dripparticle.setColor(0.2F, 0.3F, 1.0F);
return dripparticle;
}
public static TextureSheetParticle createDripstoneLavaHangParticle(
SimpleParticleType p_273453_,
ClientLevel p_273616_,
double p_272691_,
double p_272725_,
double p_273259_,
double p_273634_,
double p_273065_,
double p_273428_
) {
return new DripParticle.CoolingDripHangParticle(p_273616_, p_272691_, p_272725_, p_273259_, Fluids.LAVA, ParticleTypes.FALLING_DRIPSTONE_LAVA);
}
public static TextureSheetParticle createDripstoneLavaFallParticle(
SimpleParticleType p_272890_,
ClientLevel p_273172_,
double p_272954_,
double p_272803_,
double p_273427_,
double p_273081_,
double p_273047_,
double p_272960_
) {
DripParticle dripparticle = new DripParticle.DripstoneFallAndLandParticle(
p_273172_, p_272954_, p_272803_, p_273427_, Fluids.LAVA, ParticleTypes.LANDING_LAVA
);
dripparticle.setColor(1.0F, 0.2857143F, 0.083333336F);
return dripparticle;
}
public static TextureSheetParticle createNectarFallParticle(
SimpleParticleType p_273349_,
ClientLevel p_272672_,
double p_272820_,
double p_273386_,
double p_272886_,
double p_272935_,
double p_273715_,
double p_273202_
) {
DripParticle dripparticle = new DripParticle.FallingParticle(p_272672_, p_272820_, p_273386_, p_272886_, Fluids.EMPTY);
dripparticle.lifetime = (int)(16.0 / (Math.random() * 0.8 + 0.2));
dripparticle.gravity = 0.007F;
dripparticle.setColor(0.92F, 0.782F, 0.72F);
return dripparticle;
}
public static TextureSheetParticle createSporeBlossomFallParticle(
SimpleParticleType p_273654_,
ClientLevel p_272678_,
double p_272637_,
double p_273253_,
double p_273293_,
double p_273363_,
double p_273132_,
double p_273215_
) {
int i = (int)(64.0F / Mth.randomBetween(p_272678_.getRandom(), 0.1F, 0.9F));
DripParticle dripparticle = new DripParticle.FallingParticle(p_272678_, p_272637_, p_273253_, p_273293_, Fluids.EMPTY, i);
dripparticle.gravity = 0.005F;
dripparticle.setColor(0.32F, 0.5F, 0.22F);
return dripparticle;
}
public static TextureSheetParticle createObsidianTearHangParticle(
SimpleParticleType p_273120_,
ClientLevel p_272664_,
double p_272879_,
double p_272592_,
double p_272967_,
double p_272834_,
double p_273440_,
double p_272888_
) {
DripParticle.DripHangParticle dripparticle$driphangparticle = new DripParticle.DripHangParticle(
p_272664_, p_272879_, p_272592_, p_272967_, Fluids.EMPTY, ParticleTypes.FALLING_OBSIDIAN_TEAR
);
dripparticle$driphangparticle.isGlowing = true;
dripparticle$driphangparticle.gravity *= 0.01F;
dripparticle$driphangparticle.lifetime = 100;
dripparticle$driphangparticle.setColor(0.51171875F, 0.03125F, 0.890625F);
return dripparticle$driphangparticle;
}
public static TextureSheetParticle createObsidianTearFallParticle(
SimpleParticleType p_272859_,
ClientLevel p_273478_,
double p_273621_,
double p_273279_,
double p_273227_,
double p_273061_,
double p_273257_,
double p_273164_
) {
DripParticle dripparticle = new DripParticle.FallAndLandParticle(p_273478_, p_273621_, p_273279_, p_273227_, Fluids.EMPTY, ParticleTypes.LANDING_OBSIDIAN_TEAR);
dripparticle.isGlowing = true;
dripparticle.gravity = 0.01F;
dripparticle.setColor(0.51171875F, 0.03125F, 0.890625F);
return dripparticle;
}
public static TextureSheetParticle createObsidianTearLandParticle(
SimpleParticleType p_272836_,
ClientLevel p_273162_,
double p_273543_,
double p_273247_,
double p_272921_,
double p_273397_,
double p_273472_,
double p_273488_
) {
DripParticle dripparticle = new DripParticle.DripLandParticle(p_273162_, p_273543_, p_273247_, p_272921_, Fluids.EMPTY);
dripparticle.isGlowing = true;
dripparticle.lifetime = (int)(28.0 / (Math.random() * 0.8 + 0.2));
dripparticle.setColor(0.51171875F, 0.03125F, 0.890625F);
return dripparticle;
}
@OnlyIn(Dist.CLIENT)
static class CoolingDripHangParticle extends DripParticle.DripHangParticle {
CoolingDripHangParticle(ClientLevel p_106068_, double p_106069_, double p_106070_, double p_106071_, Fluid p_106072_, ParticleOptions p_106073_) {
super(p_106068_, p_106069_, p_106070_, p_106071_, p_106072_, p_106073_);
}
@Override
protected void preMoveUpdate() {
this.rCol = 1.0F;
this.gCol = 16.0F / (float)(40 - this.lifetime + 16);
this.bCol = 4.0F / (float)(40 - this.lifetime + 8);
super.preMoveUpdate();
}
}
@OnlyIn(Dist.CLIENT)
static class DripHangParticle extends DripParticle {
private final ParticleOptions fallingParticle;
DripHangParticle(ClientLevel p_106085_, double p_106086_, double p_106087_, double p_106088_, Fluid p_106089_, ParticleOptions p_106090_) {
super(p_106085_, p_106086_, p_106087_, p_106088_, p_106089_);
this.fallingParticle = p_106090_;
this.gravity *= 0.02F;
this.lifetime = 40;
}
@Override
protected void preMoveUpdate() {
if (this.lifetime-- <= 0) {
this.remove();
this.level.addParticle(this.fallingParticle, this.x, this.y, this.z, this.xd, this.yd, this.zd);
}
}
@Override
protected void postMoveUpdate() {
this.xd *= 0.02;
this.yd *= 0.02;
this.zd *= 0.02;
}
}
@OnlyIn(Dist.CLIENT)
static class DripLandParticle extends DripParticle {
DripLandParticle(ClientLevel p_106102_, double p_106103_, double p_106104_, double p_106105_, Fluid p_106106_) {
super(p_106102_, p_106103_, p_106104_, p_106105_, p_106106_);
this.lifetime = (int)(16.0 / (Math.random() * 0.8 + 0.2));
}
}
@OnlyIn(Dist.CLIENT)
static class DripstoneFallAndLandParticle extends DripParticle.FallAndLandParticle {
DripstoneFallAndLandParticle(ClientLevel p_171930_, double p_171931_, double p_171932_, double p_171933_, Fluid p_171934_, ParticleOptions p_171935_) {
super(p_171930_, p_171931_, p_171932_, p_171933_, p_171934_, p_171935_);
}
@Override
protected void postMoveUpdate() {
if (this.onGround) {
this.remove();
this.level.addParticle(this.landParticle, this.x, this.y, this.z, 0.0, 0.0, 0.0);
SoundEvent soundevent = this.getType() == Fluids.LAVA ? SoundEvents.POINTED_DRIPSTONE_DRIP_LAVA : SoundEvents.POINTED_DRIPSTONE_DRIP_WATER;
float f = Mth.randomBetween(this.random, 0.3F, 1.0F);
this.level.playLocalSound(this.x, this.y, this.z, soundevent, SoundSource.BLOCKS, f, 1.0F, false);
}
}
}
@OnlyIn(Dist.CLIENT)
static class FallAndLandParticle extends DripParticle.FallingParticle {
protected final ParticleOptions landParticle;
FallAndLandParticle(ClientLevel p_106116_, double p_106117_, double p_106118_, double p_106119_, Fluid p_106120_, ParticleOptions p_106121_) {
super(p_106116_, p_106117_, p_106118_, p_106119_, p_106120_);
this.landParticle = p_106121_;
}
@Override
protected void postMoveUpdate() {
if (this.onGround) {
this.remove();
this.level.addParticle(this.landParticle, this.x, this.y, this.z, 0.0, 0.0, 0.0);
}
}
}
@OnlyIn(Dist.CLIENT)
static class FallingParticle extends DripParticle {
FallingParticle(ClientLevel p_106132_, double p_106133_, double p_106134_, double p_106135_, Fluid p_106136_) {
this(p_106132_, p_106133_, p_106134_, p_106135_, p_106136_, (int)(64.0 / (Math.random() * 0.8 + 0.2)));
}
FallingParticle(ClientLevel p_172022_, double p_172023_, double p_172024_, double p_172025_, Fluid p_172026_, int p_172027_) {
super(p_172022_, p_172023_, p_172024_, p_172025_, p_172026_);
this.lifetime = p_172027_;
}
@Override
protected void postMoveUpdate() {
if (this.onGround) {
this.remove();
}
}
}
@OnlyIn(Dist.CLIENT)
static class HoneyFallAndLandParticle extends DripParticle.FallAndLandParticle {
HoneyFallAndLandParticle(ClientLevel p_106146_, double p_106147_, double p_106148_, double p_106149_, Fluid p_106150_, ParticleOptions p_106151_) {
super(p_106146_, p_106147_, p_106148_, p_106149_, p_106150_, p_106151_);
}
@Override
protected void postMoveUpdate() {
if (this.onGround) {
this.remove();
this.level.addParticle(this.landParticle, this.x, this.y, this.z, 0.0, 0.0, 0.0);
float f = Mth.randomBetween(this.random, 0.3F, 1.0F);
this.level.playLocalSound(this.x, this.y, this.z, SoundEvents.BEEHIVE_DRIP, SoundSource.BLOCKS, f, 1.0F, false);
}
}
}
}