Files
ReFramed/src/main/java/fr/adrien1106/reframed/mixin/particles/MixinLivingEntity.java

34 lines
1.2 KiB
Java

package fr.adrien1106.reframed.mixin.particles;
import com.llamalad7.mixinextras.sugar.Local;
import fr.adrien1106.reframed.block.ReFramedBlock;
import fr.adrien1106.reframed.util.blocks.ThemeableBlockEntity;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
@Mixin(LivingEntity.class)
public class MixinLivingEntity {
@ModifyArg(
method = "fall",
at = @At(value = "INVOKE", target = "Lnet/minecraft/particle/BlockStateParticleEffect;<init>(Lnet/minecraft/particle/ParticleType;Lnet/minecraft/block/BlockState;)V")
)
private BlockState modifyParticleState(BlockState state, @Local(ordinal = 0, argsOnly = true) BlockPos land_pos) {
World world = ((Entity) (Object) this).getWorld();
if(world.getBlockEntity(land_pos) instanceof ThemeableBlockEntity themeable
&& state.getBlock() instanceof ReFramedBlock block) {
BlockState theme = themeable.getTheme(block.getTopThemeIndex(state));
if(!theme.isAir()) return theme;
}
return state;
}
}