Search in sources :

Example 1 with VFXColorFunction

use of hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction in project AstralSorcery by HellFirePvP.

the class ActiveCrystalAttunementRecipe method doClientTick.

@OnlyIn(Dist.CLIENT)
private void doClientTick(TileAttunementAltar altar) {
    Predicate<PositionedLoopSound> activeTest = s -> !altar.canPlayConstellationActiveEffects() || altar.getActiveRecipe() != this;
    if (this.itemAttuneSound == null || ((FadeLoopSound) this.itemAttuneSound).hasStoppedPlaying()) {
        this.itemAttuneSound = SoundHelper.playSoundLoopFadeInClient(SoundsAS.ATTUNEMENT_ATLAR_ITEM_LOOP, new Vector3(altar).add(0.5, 1, 0.5), 1F, 1F, false, activeTest).setFadeInTicks(20).setFadeOutTicks(20);
    }
    if (this.getTick() == 0) {
        SoundHelper.playSoundClientWorld(SoundsAS.ATTUNEMENT_ATLAR_ITEM_START, altar.getPos(), 1F, 1F);
    }
    if (this.getTick() >= 80) {
        if (attunementFlare == null || ((EntityComplexFX) attunementFlare).isRemoved()) {
            attunementFlare = EffectHelper.of(EffectTemplatesAS.FACING_SPRITE).spawn(new Vector3(altar).add(0.5, 1.75, 0.5)).setSprite(SpritesAS.SPR_ATTUNEMENT_FLARE).setScaleMultiplier(2.5F).refresh(fx -> altar.canPlayConstellationActiveEffects() && altar.getActiveRecipe() == this);
        }
    }
    Vector3 altarPos = new Vector3(altar).add(0.5, 0, 0.5);
    if (innerOrbital1 == null) {
        innerOrbital1 = EffectHelper.spawnSource(new FXOrbitalCrystalAttunement(altarPos.clone(), altarPos.clone().addY(1.75), this.constellation)).setOrbitRadius(3).setBranches(4).setOrbitAxis(Vector3.RotAxis.Y_AXIS).setTicksPerRotation(200).refresh(RefreshFunction.tileExistsAnd(altar, (tile, effect) -> tile.canPlayConstellationActiveEffects() && tile.getActiveRecipe() == this));
    }
    VFXColorFunction<?> beamColor = VFXColorFunction.constant(ColorsAS.DEFAULT_GENERIC_PARTICLE);
    if (getTick() >= 80 && getTick() % 40 == 0) {
        for (BlockPos pos : altar.getConstellationPositions(this.constellation)) {
            Vector3 from = new Vector3(pos).add(0.5, 0, 0.5);
            MiscUtils.applyRandomOffset(from, rand, 0.1F);
            EffectHelper.of(EffectTemplatesAS.LIGHTBEAM).spawn(from).setup(from.clone().addY(6), 1.2, 1.2).setAlphaMultiplier(0.8F).color(beamColor).setMaxAge(60);
        }
    }
    float total = DURATION_CRYSTAL_ATTUNEMENT;
    float percCycle = (float) (((getTick() % total) / total) * 2 * Math.PI);
    int parts = getTick() % 50 == 0 ? 180 : 6;
    Vector3 center = new Vector3(altar).add(0.5, 0.1, 0.5);
    float angleSwirl = 120F;
    float dst = 4.5F;
    for (int i = 0; i < parts; i++) {
        Vector3 v = Vector3.RotAxis.X_AXIS.clone();
        float originalAngle = (((float) i) / ((float) parts)) * 360F;
        double angle = originalAngle + (MathHelper.sin(percCycle) * angleSwirl);
        v.rotate(-Math.toRadians(angle), Vector3.RotAxis.Y_AXIS).normalize().multiply(dst);
        Vector3 pos = center.clone();
        Vector3 mot = center.clone().subtract(pos.clone().add(v)).normalize().multiply(0.14);
        int age = 20 + rand.nextInt(30);
        float size = 0.2F + rand.nextFloat() * 0.7F;
        EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).spawn(pos).setScaleMultiplier(size).setMotion(mot).color(VFXColorFunction.WHITE).setMaxAge(age);
        if (rand.nextInt(6) == 0) {
            EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).spawn(pos).setScaleMultiplier(size * 1.4F).setMotion(mot).color(VFXColorFunction.constant(this.constellation.getConstellationColor())).setGravityStrength(-0.0004F + rand.nextFloat() * -0.00015F).setMaxAge(age + 30);
        }
    }
    double scale = 7.0D;
    double edgeScale = (scale * 2 + 1);
    for (int i = 0; i < 7; i++) {
        Vector3 offset = new Vector3(altar).add(-scale, 0.1, -scale);
        if (rand.nextBoolean()) {
            offset.add(edgeScale * (rand.nextBoolean() ? 1 : 0), 0, rand.nextFloat() * edgeScale);
        } else {
            offset.add(rand.nextFloat() * edgeScale, 0, edgeScale * (rand.nextBoolean() ? 1 : 0));
        }
        FXFacingParticle particle = EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).spawn(offset).alpha(VFXAlphaFunction.FADE_OUT).setGravityStrength(-0.0002F + rand.nextFloat() * -0.0001F).setScaleMultiplier(0.3F + rand.nextFloat() * 0.15F).color(VFXColorFunction.WHITE).setMaxAge(40 + rand.nextInt(10));
        if (rand.nextBoolean()) {
            particle.color(VFXColorFunction.constant(this.constellation.getConstellationColor()));
        }
    }
    if (this.getTick() >= 200) {
        for (int i = 0; i < 3; i++) {
            Vector3 at = new Vector3(altar).add(0.5, 0, 0.5);
            at.addX(rand.nextFloat() * 7F * (rand.nextBoolean() ? 1 : -1));
            at.addZ(rand.nextFloat() * 7F * (rand.nextBoolean() ? 1 : -1));
            FXFacingParticle p = EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).spawn(at).setAlphaMultiplier(0.75F).alpha(VFXAlphaFunction.FADE_OUT).setGravityStrength(-0.001F + rand.nextFloat() * -0.0005F).color(VFXColorFunction.WHITE).setScaleMultiplier(0.3F + rand.nextFloat() * 0.1F).setMaxAge(20 + rand.nextInt(10));
            if (rand.nextBoolean()) {
                p.color(VFXColorFunction.constant(this.constellation.getConstellationColor()));
            }
            if (getTick() >= 400) {
                p.setScaleMultiplier(0.3F + rand.nextFloat() * 0.15F);
            }
        }
    }
    if (getTick() >= 460) {
        if (getTick() % 5 == 0) {
            Vector3 from = new Vector3(altar).add(0.5, 0, 0.5);
            MiscUtils.applyRandomOffset(from, rand, 0.25F);
            EffectHelper.of(EffectTemplatesAS.LIGHTBEAM).spawn(from).setup(from.clone().addY(8), 2.4, 2).setAlphaMultiplier(0.8F).setMaxAge(30 + rand.nextInt(15));
        }
    }
    if (getTick() >= (DURATION_CRYSTAL_ATTUNEMENT - 10)) {
        for (int i = 0; i < 25; i++) {
            Vector3 at = new Vector3(altar).add(0.5, 0, 0.5).addY(rand.nextFloat() * 0.5 + rand.nextFloat() * 0.5);
            FXFacingParticle p = EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).spawn(at).color(VFXColorFunction.WHITE).setMotion(Vector3.random().setY(0).normalize().multiply(0.025 + rand.nextFloat() * 0.075)).setAlphaMultiplier(0.75F).setScaleMultiplier(0.25F + rand.nextFloat() * 0.15F).alpha(VFXAlphaFunction.FADE_OUT).setMaxAge(60 + rand.nextInt(40));
            if (rand.nextBoolean()) {
                p.color(VFXColorFunction.constant(this.constellation.getConstellationColor()));
            }
        }
    }
}
Also used : Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) IMinorConstellation(hellfirepvp.astralsorcery.common.constellation.IMinorConstellation) CompoundNBT(net.minecraft.nbt.CompoundNBT) SoundsAS(hellfirepvp.astralsorcery.common.lib.SoundsAS) FadeLoopSound(hellfirepvp.astralsorcery.client.util.sound.FadeLoopSound) Dist(net.minecraftforge.api.distmarker.Dist) ItemStack(net.minecraft.item.ItemStack) EffectTemplatesAS(hellfirepvp.astralsorcery.client.lib.EffectTemplatesAS) IWeakConstellation(hellfirepvp.astralsorcery.common.constellation.IWeakConstellation) MiscUtils(hellfirepvp.astralsorcery.common.util.MiscUtils) SoundHelper(hellfirepvp.astralsorcery.common.util.sound.SoundHelper) IConstellation(hellfirepvp.astralsorcery.common.constellation.IConstellation) TileAttunementAltar(hellfirepvp.astralsorcery.common.tile.TileAttunementAltar) ColorsAS(hellfirepvp.astralsorcery.common.lib.ColorsAS) Nullable(javax.annotation.Nullable) LogicalSide(net.minecraftforge.fml.LogicalSide) FXFacingParticle(hellfirepvp.astralsorcery.client.effect.vfx.FXFacingParticle) EntityComplexFX(hellfirepvp.astralsorcery.client.effect.EntityComplexFX) VFXAlphaFunction(hellfirepvp.astralsorcery.client.effect.function.VFXAlphaFunction) Entity(net.minecraft.entity.Entity) PlayerEntity(net.minecraft.entity.player.PlayerEntity) World(net.minecraft.world.World) Predicate(java.util.function.Predicate) RegistriesAS(hellfirepvp.astralsorcery.common.lib.RegistriesAS) BlockPos(net.minecraft.util.math.BlockPos) UUID(java.util.UUID) EffectHelper(hellfirepvp.astralsorcery.client.effect.handler.EffectHelper) ItemCrystalBase(hellfirepvp.astralsorcery.common.item.crystal.ItemCrystalBase) AdvancementsAS(hellfirepvp.astralsorcery.common.lib.AdvancementsAS) VFXColorFunction(hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction) AttuneCrystalRecipe(hellfirepvp.astralsorcery.common.crafting.nojson.attunement.AttuneCrystalRecipe) FXOrbitalCrystalAttunement(hellfirepvp.astralsorcery.client.effect.source.orbital.FXOrbitalCrystalAttunement) AttunementRecipe(hellfirepvp.astralsorcery.common.crafting.nojson.attunement.AttunementRecipe) MathHelper(net.minecraft.util.math.MathHelper) RefreshFunction(hellfirepvp.astralsorcery.client.effect.function.RefreshFunction) SpritesAS(hellfirepvp.astralsorcery.client.lib.SpritesAS) ConstellationItem(hellfirepvp.astralsorcery.common.constellation.ConstellationItem) ResourceLocation(net.minecraft.util.ResourceLocation) PositionedLoopSound(hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound) ItemEntity(net.minecraft.entity.item.ItemEntity) ServerPlayerEntity(net.minecraft.entity.player.ServerPlayerEntity) PositionedLoopSound(hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound) Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) BlockPos(net.minecraft.util.math.BlockPos) FXFacingParticle(hellfirepvp.astralsorcery.client.effect.vfx.FXFacingParticle) FXOrbitalCrystalAttunement(hellfirepvp.astralsorcery.client.effect.source.orbital.FXOrbitalCrystalAttunement) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn)

Example 2 with VFXColorFunction

use of hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction in project AstralSorcery by HellFirePvP.

the class ItemBlinkWand method playUseParticles.

@OnlyIn(Dist.CLIENT)
private void playUseParticles(ItemStack stack, LivingEntity entity, int useTicks, float usagePercent) {
    if (!(entity instanceof PlayerEntity)) {
        return;
    }
    PlayerEntity player = (PlayerEntity) entity;
    if (player.getCooldownTracker().hasCooldown(this)) {
        return;
    }
    if (getBlinkMode(stack) == BlinkMode.LAUNCH) {
        Vector3 look = new Vector3(entity.getLook(1F)).normalize().multiply(20);
        Vector3 pos = Vector3.atEntityCorner(entity).addY(entity.getEyeHeight());
        Vector3 motion = look.clone().normalize().multiply(-0.8F + random.nextFloat() * -0.5F);
        Vector3 perp = look.clone().perpendicular().normalize();
        for (int i = 0; i < Math.round(usagePercent * 6); i++) {
            float dst = i == 0 ? random.nextFloat() * 0.4F : 0.2F + random.nextFloat() * 0.4F;
            float speed = i == 0 ? 0.005F : 0.5F + random.nextFloat() * 0.5F;
            float angleDeg = random.nextFloat() * 360F;
            Vector3 angle = perp.clone().rotate(angleDeg, look).normalize();
            Vector3 at = pos.clone().add(look.clone().multiply(0.7F + random.nextFloat() * 0.3F)).add(angle.clone().multiply(dst));
            Vector3 mot = motion.clone().add(angle.clone().multiply(0.1F + random.nextFloat() * 0.15F)).multiply(speed);
            FXFacingParticle p = EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).setOwner(entity.getUniqueID()).spawn(at).setScaleMultiplier(0.3F + random.nextFloat() * 0.3F).setAlphaMultiplier(usagePercent).setMotion(mot).color(VFXColorFunction.constant(ColorsAS.CONSTELLATION_VICIO)).setMaxAge(20 + random.nextInt(15));
            if (random.nextBoolean()) {
                p.color(VFXColorFunction.WHITE);
            }
        }
    } else if (getBlinkMode(stack) == BlinkMode.TELEPORT) {
        Vector3 origin = Vector3.atEntityCorner(entity).addY(0.5F);
        Vector3 look = new Vector3(entity.getLook(1F)).normalize().multiply(40F).add(origin);
        List<Vector3> line = new ArrayList<>();
        RaytraceAssist rta = new RaytraceAssist(origin, look);
        boolean clearLine = rta.forEachStep(v -> {
            BlockPos pos = v.toBlockPos();
            return MiscUtils.executeWithChunk(entity.getEntityWorld(), pos, () -> {
                if (BlockUtils.isReplaceable(entity.getEntityWorld(), pos) && BlockUtils.isReplaceable(entity.getEntityWorld(), pos.up())) {
                    line.add(v);
                    return true;
                }
                return false;
            }, false);
        });
        if (!line.isEmpty()) {
            Vector3 last = Iterables.getLast(line);
            for (Vector3 v : line) {
                if (v == last || random.nextInt(300) == 0) {
                    VFXColorFunction<?> colorFn = VFXColorFunction.constant(ColorsAS.CONSTELLATION_VICIO);
                    float scale = 0.4F + random.nextFloat() * 0.2F;
                    float speed = random.nextFloat() * 0.02F;
                    int age = 20 + random.nextInt(15);
                    if (random.nextInt(3) == 0) {
                        colorFn = VFXColorFunction.WHITE;
                    }
                    if (v == last) {
                        scale *= 1.5F;
                        speed *= 4;
                        age *= 0.7F;
                        if (!clearLine) {
                            colorFn = VFXColorFunction.constant(ColorsAS.CONSTELLATION_AEVITAS);
                        } else {
                            colorFn = VFXColorFunction.constant(ColorsAS.CONSTELLATION_EVORSIO);
                        }
                        if (random.nextInt(5) == 0) {
                            colorFn = VFXColorFunction.WHITE;
                        }
                    }
                    EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).setOwner(entity.getUniqueID()).spawn(v).setScaleMultiplier(scale).setAlphaMultiplier(usagePercent).alpha(VFXAlphaFunction.FADE_OUT).setMotion(Vector3.random().normalize().multiply(speed)).color(colorFn).setMaxAge(age);
                }
            }
        }
    }
}
Also used : net.minecraft.util.text(net.minecraft.util.text) Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) Iterables(com.google.common.collect.Iterables) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) BlockUtils(hellfirepvp.astralsorcery.common.util.block.BlockUtils) NBTHelper(hellfirepvp.astralsorcery.common.util.nbt.NBTHelper) Item(net.minecraft.item.Item) CommonProxy(hellfirepvp.astralsorcery.common.CommonProxy) CompoundNBT(net.minecraft.nbt.CompoundNBT) UseAction(net.minecraft.item.UseAction) ITooltipFlag(net.minecraft.client.util.ITooltipFlag) ConstellationsAS(hellfirepvp.astralsorcery.common.lib.ConstellationsAS) Dist(net.minecraftforge.api.distmarker.Dist) ArrayList(java.util.ArrayList) ItemStack(net.minecraft.item.ItemStack) AlignmentChargeHandler(hellfirepvp.astralsorcery.common.auxiliary.charge.AlignmentChargeHandler) EffectTemplatesAS(hellfirepvp.astralsorcery.client.lib.EffectTemplatesAS) AstralSorcery(hellfirepvp.astralsorcery.AstralSorcery) MiscUtils(hellfirepvp.astralsorcery.common.util.MiscUtils) Hand(net.minecraft.util.Hand) RaytraceAssist(hellfirepvp.astralsorcery.common.util.RaytraceAssist) PacketChannel(hellfirepvp.astralsorcery.common.network.PacketChannel) ColorsAS(hellfirepvp.astralsorcery.common.lib.ColorsAS) Nonnull(javax.annotation.Nonnull) Nullable(javax.annotation.Nullable) LogicalSide(net.minecraftforge.fml.LogicalSide) FXFacingParticle(hellfirepvp.astralsorcery.client.effect.vfx.FXFacingParticle) VFXAlphaFunction(hellfirepvp.astralsorcery.client.effect.function.VFXAlphaFunction) ItemMantle(hellfirepvp.astralsorcery.common.item.armor.ItemMantle) PlayerEntity(net.minecraft.entity.player.PlayerEntity) PktShootEntity(hellfirepvp.astralsorcery.common.network.play.server.PktShootEntity) LivingEntity(net.minecraft.entity.LivingEntity) World(net.minecraft.world.World) BlockPos(net.minecraft.util.math.BlockPos) EffectHelper(hellfirepvp.astralsorcery.client.effect.handler.EffectHelper) DamageSource(net.minecraft.util.DamageSource) ActionResult(net.minecraft.util.ActionResult) List(java.util.List) VFXColorFunction(hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction) MathHelper(net.minecraft.util.math.MathHelper) AlignmentChargeConsumer(hellfirepvp.astralsorcery.common.item.base.AlignmentChargeConsumer) EventHelperDamageCancelling(hellfirepvp.astralsorcery.common.event.helper.EventHelperDamageCancelling) ServerPlayerEntity(net.minecraft.entity.player.ServerPlayerEntity) VFXColorFunction(hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction) Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) FXFacingParticle(hellfirepvp.astralsorcery.client.effect.vfx.FXFacingParticle) ArrayList(java.util.ArrayList) List(java.util.List) BlockPos(net.minecraft.util.math.BlockPos) RaytraceAssist(hellfirepvp.astralsorcery.common.util.RaytraceAssist) PlayerEntity(net.minecraft.entity.player.PlayerEntity) ServerPlayerEntity(net.minecraft.entity.player.ServerPlayerEntity) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn)

Example 3 with VFXColorFunction

use of hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction in project AstralSorcery by HellFirePvP.

the class ActiveLiquidInfusionRecipe method playLiquidDrawEffect.

@OnlyIn(Dist.CLIENT)
private void playLiquidDrawEffect(TileInfuser infuser, FluidStack required) {
    Collection<BlockPos> chalices = this.supportingChalices;
    if (chalices.isEmpty()) {
        return;
    }
    Vector3 target = new Vector3(infuser).add(0.5, 1.1, 0.5);
    TextureAtlasSprite tas = RenderingUtils.getParticleTexture(required);
    VFXColorFunction<?> colorFn = (fx, pTicks) -> new Color(ColorUtils.getOverlayColor(required));
    for (int i = 0; i < 2 * this.supportingChalices.size(); i++) {
        BlockPos chalice = MiscUtils.getRandomEntry(chalices, rand);
        Vector3 pos = new Vector3(chalice).add(0.5, 1.4, 0.5);
        int maxAge = 30;
        maxAge *= Math.max(pos.distance(target) / 3, 1);
        if (rand.nextInt(3) != 0) {
            MiscUtils.applyRandomOffset(pos, rand, 0.3F);
            EffectHelper.of(EffectTemplatesAS.GENERIC_ATLAS_PARTICLE).spawn(pos).setSprite(tas).selectFraction(0.2F).setScaleMultiplier(0.01F + rand.nextFloat() * 0.04F).color(colorFn).alpha(VFXAlphaFunction.proximity(() -> target, 2F).andThen(VFXAlphaFunction.FADE_OUT)).motion(VFXMotionController.target(target::clone, 0.08F)).setMaxAge(maxAge);
        } else {
            MiscUtils.applyRandomOffset(pos, rand, 0.4F);
            EffectHelper.of(EffectTemplatesAS.GENERIC_PARTICLE).spawn(pos).setScaleMultiplier(0.15F + rand.nextFloat() * 0.1F).color(colorFn).alpha(VFXAlphaFunction.proximity(() -> target, 2F).andThen(VFXAlphaFunction.FADE_OUT)).motion(VFXMotionController.target(target::clone, 0.08F)).setMaxAge(maxAge);
        }
    }
}
Also used : Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) ResearchManager(hellfirepvp.astralsorcery.common.data.research.ResearchManager) java.util(java.util) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) NBTHelper(hellfirepvp.astralsorcery.common.util.nbt.NBTHelper) Constants(net.minecraftforge.common.util.Constants) TileChalice(hellfirepvp.astralsorcery.common.tile.TileChalice) CompoundNBT(net.minecraft.nbt.CompoundNBT) RenderingUtils(hellfirepvp.astralsorcery.client.util.RenderingUtils) Dist(net.minecraftforge.api.distmarker.Dist) FluidAttributes(net.minecraftforge.fluids.FluidAttributes) ItemStack(net.minecraft.item.ItemStack) FXOrbitalInfuserLiquid(hellfirepvp.astralsorcery.client.effect.source.orbital.FXOrbitalInfuserLiquid) MinecraftServer(net.minecraft.server.MinecraftServer) RecipeManager(net.minecraft.item.crafting.RecipeManager) EffectTemplatesAS(hellfirepvp.astralsorcery.client.lib.EffectTemplatesAS) AstralSorcery(hellfirepvp.astralsorcery.AstralSorcery) LiquidInfusion(hellfirepvp.astralsorcery.common.crafting.recipe.LiquidInfusion) ChaliceHelper(hellfirepvp.astralsorcery.common.auxiliary.ChaliceHelper) MiscUtils(hellfirepvp.astralsorcery.common.util.MiscUtils) Nonnull(javax.annotation.Nonnull) LogicalSidedProvider(net.minecraftforge.fml.LogicalSidedProvider) Nullable(javax.annotation.Nullable) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) LogicalSide(net.minecraftforge.fml.LogicalSide) ListNBT(net.minecraft.nbt.ListNBT) VFXAlphaFunction(hellfirepvp.astralsorcery.client.effect.function.VFXAlphaFunction) IFluidHandler(net.minecraftforge.fluids.capability.IFluidHandler) ColorUtils(hellfirepvp.astralsorcery.common.util.ColorUtils) PlayerEntity(net.minecraft.entity.player.PlayerEntity) World(net.minecraft.world.World) BlockPos(net.minecraft.util.math.BlockPos) VFXMotionController(hellfirepvp.astralsorcery.client.effect.function.VFXMotionController) EffectHelper(hellfirepvp.astralsorcery.client.effect.handler.EffectHelper) Collectors(java.util.stream.Collectors) Blocks(net.minecraft.block.Blocks) ColorizationHelper(hellfirepvp.astralsorcery.client.util.ColorizationHelper) RecipeHelper(hellfirepvp.astralsorcery.common.util.RecipeHelper) java.awt(java.awt) Consumer(java.util.function.Consumer) List(java.util.List) VFXColorFunction(hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction) TileInfuser(hellfirepvp.astralsorcery.common.tile.TileInfuser) RefreshFunction(hellfirepvp.astralsorcery.client.effect.function.RefreshFunction) ResourceLocation(net.minecraft.util.ResourceLocation) FluidStack(net.minecraftforge.fluids.FluidStack) ItemUtils(hellfirepvp.astralsorcery.common.util.item.ItemUtils) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) BlockPos(net.minecraft.util.math.BlockPos) Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn)

Aggregations

VFXAlphaFunction (hellfirepvp.astralsorcery.client.effect.function.VFXAlphaFunction)3 VFXColorFunction (hellfirepvp.astralsorcery.client.effect.function.VFXColorFunction)3 EffectHelper (hellfirepvp.astralsorcery.client.effect.handler.EffectHelper)3 EffectTemplatesAS (hellfirepvp.astralsorcery.client.lib.EffectTemplatesAS)3 MiscUtils (hellfirepvp.astralsorcery.common.util.MiscUtils)3 Vector3 (hellfirepvp.astralsorcery.common.util.data.Vector3)3 Nullable (javax.annotation.Nullable)3 PlayerEntity (net.minecraft.entity.player.PlayerEntity)3 ItemStack (net.minecraft.item.ItemStack)3 CompoundNBT (net.minecraft.nbt.CompoundNBT)3 BlockPos (net.minecraft.util.math.BlockPos)3 World (net.minecraft.world.World)3 Dist (net.minecraftforge.api.distmarker.Dist)3 OnlyIn (net.minecraftforge.api.distmarker.OnlyIn)3 LogicalSide (net.minecraftforge.fml.LogicalSide)3 AstralSorcery (hellfirepvp.astralsorcery.AstralSorcery)2 RefreshFunction (hellfirepvp.astralsorcery.client.effect.function.RefreshFunction)2 FXFacingParticle (hellfirepvp.astralsorcery.client.effect.vfx.FXFacingParticle)2 ColorsAS (hellfirepvp.astralsorcery.common.lib.ColorsAS)2 NBTHelper (hellfirepvp.astralsorcery.common.util.nbt.NBTHelper)2