--- a/net/minecraft/client/particle/DiggingParticle.java +++ b/net/minecraft/client/particle/DiggingParticle.java @@ -37,6 +37,7 @@ } public DiggingParticle func_174846_a(BlockPos p_174846_1_) { + updateSprite(p_174846_1_); this.field_181019_az = p_174846_1_; if (this.field_174847_a.func_177230_c() == Blocks.field_196658_i) { return this; @@ -94,7 +95,13 @@ public static class Factory implements IParticleFactory { public Particle func_199234_a(BlockParticleData p_199234_1_, World p_199234_2_, double p_199234_3_, double p_199234_5_, double p_199234_7_, double p_199234_9_, double p_199234_11_, double p_199234_13_) { BlockState blockstate = p_199234_1_.func_197584_c(); - return !blockstate.func_196958_f() && blockstate.func_177230_c() != Blocks.field_196603_bb ? (new DiggingParticle(p_199234_2_, p_199234_3_, p_199234_5_, p_199234_7_, p_199234_9_, p_199234_11_, p_199234_13_, blockstate)).func_174845_l() : null; + return !blockstate.func_196958_f() && blockstate.func_177230_c() != Blocks.field_196603_bb ? (new DiggingParticle(p_199234_2_, p_199234_3_, p_199234_5_, p_199234_7_, p_199234_9_, p_199234_11_, p_199234_13_, blockstate)).func_174845_l().updateSprite(p_199234_1_.getPos()) : null; } } + + private Particle updateSprite(BlockPos pos) { //FORGE: we cannot assume that the x y z of the particles match the block pos of the block. + if (pos != null) // There are cases where we are not able to obtain the correct source pos, and need to fallback to the non-model data version + this.func_217567_a(Minecraft.func_71410_x().func_175602_ab().func_175023_a().getTexture(field_174847_a, field_187122_b, pos)); + return this; + } }