Search in sources :

Example 1 with PositionedLoopSound

use of hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound in project AstralSorcery by HellFirePvP.

the class SoundHelper method playSoundLoopClient.

@OnlyIn(Dist.CLIENT)
public static PositionedLoopSound playSoundLoopClient(SoundEvent sound, Vector3 pos, float volume, float pitch, boolean isGlobal, Predicate<PositionedLoopSound> func) {
    SoundCategory cat = SoundCategory.MASTER;
    if (sound instanceof CategorizedSoundEvent) {
        cat = ((CategorizedSoundEvent) sound).getCategory();
    }
    PositionedLoopSound posSound = new PositionedLoopSound(sound, cat, volume, pitch, pos, isGlobal);
    posSound.setRefreshFunction(func);
    Minecraft.getInstance().getSoundHandler().play(posSound);
    return posSound;
}
Also used : PositionedLoopSound(hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound) SoundCategory(net.minecraft.util.SoundCategory) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn)

Example 2 with PositionedLoopSound

use of hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound 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 3 with PositionedLoopSound

use of hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound in project AstralSorcery by HellFirePvP.

the class TileAltar method doCraftSound.

@OnlyIn(Dist.CLIENT)
private void doCraftSound() {
    if (SoundHelper.getSoundVolume(SoundCategory.BLOCKS) > 0) {
        ActiveSimpleAltarRecipe activeRecipe = this.getActiveRecipe();
        AltarType type = this.getAltarType();
        if (clientCraftSound == null || ((PositionedLoopSound) clientCraftSound).hasStoppedPlaying()) {
            CategorizedSoundEvent sound = SoundsAS.ALTAR_CRAFT_LOOP_T1;
            switch(type) {
                case ATTUNEMENT:
                    sound = SoundsAS.ALTAR_CRAFT_LOOP_T2;
                    break;
                case CONSTELLATION:
                    sound = SoundsAS.ALTAR_CRAFT_LOOP_T3;
                    break;
                case RADIANCE:
                    sound = SoundsAS.ALTAR_CRAFT_LOOP_T4;
                    break;
            }
            clientCraftSound = SoundHelper.playSoundLoopFadeInClient(sound, new Vector3(this).add(0.5, 0.5, 0.5), 0.6F, 1F, false, (s) -> isRemoved() || SoundHelper.getSoundVolume(SoundCategory.BLOCKS) <= 0 || this.getActiveRecipe() == null).setFadeInTicks(40).setFadeOutTicks(20);
        }
        if (activeRecipe.getState() == ActiveSimpleAltarRecipe.CraftingState.WAITING && type.isThisGEThan(AltarType.RADIANCE)) {
            if (clientWaitSound == null || ((PositionedLoopSound) clientWaitSound).hasStoppedPlaying()) {
                clientWaitSound = SoundHelper.playSoundLoopFadeInClient(SoundsAS.ALTAR_CRAFT_LOOP_T4_WAITING, new Vector3(this).add(0.5, 0.5, 0.5), 0.7F, 1F, false, (s) -> isRemoved() || SoundHelper.getSoundVolume(SoundCategory.BLOCKS) <= 0 || this.getActiveRecipe() == null || this.getActiveRecipe().getState() != ActiveSimpleAltarRecipe.CraftingState.WAITING).setFadeInTicks(30).setFadeOutTicks(10);
            }
            ((PositionedLoopSound) clientCraftSound).setVolumeMultiplier(0.75F);
        } else {
            ((PositionedLoopSound) clientCraftSound).setVolumeMultiplier(1F);
        }
    } else {
        clientWaitSound = null;
        clientCraftSound = null;
    }
}
Also used : Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) ByteBufUtils(hellfirepvp.astralsorcery.common.util.data.ByteBufUtils) NBTHelper(hellfirepvp.astralsorcery.common.util.nbt.NBTHelper) Constants(net.minecraftforge.common.util.Constants) CompoundNBT(net.minecraft.nbt.CompoundNBT) Direction(net.minecraft.util.Direction) Dist(net.minecraftforge.api.distmarker.Dist) SimpleAltarRecipe(hellfirepvp.astralsorcery.common.crafting.recipe.SimpleAltarRecipe) DayTimeHelper(hellfirepvp.astralsorcery.common.constellation.world.DayTimeHelper) IConstellation(hellfirepvp.astralsorcery.common.constellation.IConstellation) TileSpectralRelay(hellfirepvp.astralsorcery.common.tile.TileSpectralRelay) SoundCategory(net.minecraft.util.SoundCategory) ISeedReader(net.minecraft.world.ISeedReader) LogicalSide(net.minecraftforge.fml.LogicalSide) PlayerEntity(net.minecraft.entity.player.PlayerEntity) BlockDiscoverer(hellfirepvp.astralsorcery.common.util.block.BlockDiscoverer) TileInventoryFiltered(hellfirepvp.astralsorcery.common.util.tile.TileInventoryFiltered) PositionedLoopSound(hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound) SimpleAltarRecipeContext(hellfirepvp.astralsorcery.common.crafting.recipe.SimpleAltarRecipeContext) ItemUtils(hellfirepvp.astralsorcery.common.util.item.ItemUtils) CategorizedSoundEvent(hellfirepvp.astralsorcery.common.util.sound.CategorizedSoundEvent) ForgeHooks(net.minecraftforge.common.ForgeHooks) java.util(java.util) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) IConstellationFocus(hellfirepvp.astralsorcery.common.item.base.IConstellationFocus) AxisAlignedBB(net.minecraft.util.math.AxisAlignedBB) SkyHandler(hellfirepvp.astralsorcery.common.constellation.SkyHandler) SoundsAS(hellfirepvp.astralsorcery.common.lib.SoundsAS) SkyCollectionHelper(hellfirepvp.astralsorcery.common.util.world.SkyCollectionHelper) TileEntityTypesAS(hellfirepvp.astralsorcery.common.lib.TileEntityTypesAS) ItemStack(net.minecraft.item.ItemStack) Minecraft(net.minecraft.client.Minecraft) MiscUtils(hellfirepvp.astralsorcery.common.util.MiscUtils) SoundHelper(hellfirepvp.astralsorcery.common.util.sound.SoundHelper) AltarType(hellfirepvp.astralsorcery.common.block.tile.altar.AltarType) PacketChannel(hellfirepvp.astralsorcery.common.network.PacketChannel) Nonnull(javax.annotation.Nonnull) Nullable(javax.annotation.Nullable) EntityFlare(hellfirepvp.astralsorcery.common.entity.EntityFlare) StringNBT(net.minecraft.nbt.StringNBT) TileReceiverBase(hellfirepvp.astralsorcery.common.tile.base.network.TileReceiverBase) IRecipe(net.minecraft.item.crafting.IRecipe) World(net.minecraft.world.World) PktPlayEffect(hellfirepvp.astralsorcery.common.network.play.server.PktPlayEffect) BlockPos(net.minecraft.util.math.BlockPos) WandInteractable(hellfirepvp.astralsorcery.common.item.wand.WandInteractable) ActiveSimpleAltarRecipe(hellfirepvp.astralsorcery.common.crafting.recipe.altar.ActiveSimpleAltarRecipe) MathHelper(net.minecraft.util.math.MathHelper) StarlightReceiverAltar(hellfirepvp.astralsorcery.common.tile.network.StarlightReceiverAltar) ResourceLocation(net.minecraft.util.ResourceLocation) RecipeTypesAS(hellfirepvp.astralsorcery.common.lib.RecipeTypesAS) StructureType(hellfirepvp.astralsorcery.common.structure.types.StructureType) WorldContext(hellfirepvp.astralsorcery.common.constellation.world.WorldContext) ActiveSimpleAltarRecipe(hellfirepvp.astralsorcery.common.crafting.recipe.altar.ActiveSimpleAltarRecipe) AltarType(hellfirepvp.astralsorcery.common.block.tile.altar.AltarType) PositionedLoopSound(hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound) Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) CategorizedSoundEvent(hellfirepvp.astralsorcery.common.util.sound.CategorizedSoundEvent) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn)

Example 4 with PositionedLoopSound

use of hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound in project AstralSorcery by HellFirePvP.

the class TileInfuser method doCraftSound.

@OnlyIn(Dist.CLIENT)
private void doCraftSound() {
    if (SoundHelper.getSoundVolume(SoundCategory.BLOCKS) > 0) {
        if (clientCraftSound == null || ((PositionedLoopSound) clientCraftSound).hasStoppedPlaying()) {
            CategorizedSoundEvent sound = SoundsAS.INFUSER_CRAFT_LOOP;
            clientCraftSound = SoundHelper.playSoundLoopFadeInClient(sound, new Vector3(this).add(0.5, 0.5, 0.5), 1F, 1F, false, (s) -> isRemoved() || SoundHelper.getSoundVolume(SoundCategory.BLOCKS) <= 0 || this.getActiveRecipe() == null).setFadeInTicks(30).setFadeOutTicks(20);
        }
    } else {
        clientCraftSound = null;
    }
}
Also used : Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) ByteBufUtils(hellfirepvp.astralsorcery.common.util.data.ByteBufUtils) NBTHelper(hellfirepvp.astralsorcery.common.util.nbt.NBTHelper) Constants(net.minecraftforge.common.util.Constants) CompoundNBT(net.minecraft.nbt.CompoundNBT) Direction(net.minecraft.util.Direction) RenderingUtils(hellfirepvp.astralsorcery.client.util.RenderingUtils) Dist(net.minecraftforge.api.distmarker.Dist) FluidAttributes(net.minecraftforge.fluids.FluidAttributes) TileInventory(hellfirepvp.astralsorcery.common.util.tile.TileInventory) Map(java.util.Map) SoundCategory(net.minecraft.util.SoundCategory) MapStream(hellfirepvp.astralsorcery.common.util.MapStream) LogicalSide(net.minecraftforge.fml.LogicalSide) ImmutableSet(com.google.common.collect.ImmutableSet) ColorUtils(hellfirepvp.astralsorcery.common.util.ColorUtils) PlayerEntity(net.minecraft.entity.player.PlayerEntity) Set(java.util.Set) Capability(net.minecraftforge.common.capabilities.Capability) StructureTypesAS(hellfirepvp.astralsorcery.common.lib.StructureTypesAS) PositionedLoopSound(hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound) FluidStack(net.minecraftforge.fluids.FluidStack) TileEntityTick(hellfirepvp.astralsorcery.common.tile.base.TileEntityTick) CategorizedSoundEvent(hellfirepvp.astralsorcery.common.util.sound.CategorizedSoundEvent) ForgeHooks(net.minecraftforge.common.ForgeHooks) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) SoundsAS(hellfirepvp.astralsorcery.common.lib.SoundsAS) TileEntityTypesAS(hellfirepvp.astralsorcery.common.lib.TileEntityTypesAS) LazyOptional(net.minecraftforge.common.util.LazyOptional) HashSet(java.util.HashSet) ItemStack(net.minecraft.item.ItemStack) EffectTemplatesAS(hellfirepvp.astralsorcery.client.lib.EffectTemplatesAS) LiquidInfusionContext(hellfirepvp.astralsorcery.common.crafting.recipe.LiquidInfusionContext) Minecraft(net.minecraft.client.Minecraft) LiquidInfusion(hellfirepvp.astralsorcery.common.crafting.recipe.LiquidInfusion) MiscUtils(hellfirepvp.astralsorcery.common.util.MiscUtils) SoundHelper(hellfirepvp.astralsorcery.common.util.sound.SoundHelper) PacketChannel(hellfirepvp.astralsorcery.common.network.PacketChannel) Nonnull(javax.annotation.Nonnull) Nullable(javax.annotation.Nullable) EntityFlare(hellfirepvp.astralsorcery.common.entity.EntityFlare) StringNBT(net.minecraft.nbt.StringNBT) VFXAlphaFunction(hellfirepvp.astralsorcery.client.effect.function.VFXAlphaFunction) IRecipe(net.minecraft.item.crafting.IRecipe) World(net.minecraft.world.World) PktPlayEffect(hellfirepvp.astralsorcery.common.network.play.server.PktPlayEffect) BlockPos(net.minecraft.util.math.BlockPos) WandInteractable(hellfirepvp.astralsorcery.common.item.wand.WandInteractable) EffectHelper(hellfirepvp.astralsorcery.client.effect.handler.EffectHelper) java.awt(java.awt) ResourceLocation(net.minecraft.util.ResourceLocation) ActiveLiquidInfusionRecipe(hellfirepvp.astralsorcery.common.crafting.recipe.infusion.ActiveLiquidInfusionRecipe) RecipeTypesAS(hellfirepvp.astralsorcery.common.lib.RecipeTypesAS) Fluid(net.minecraft.fluid.Fluid) StructureType(hellfirepvp.astralsorcery.common.structure.types.StructureType) Vector3(hellfirepvp.astralsorcery.common.util.data.Vector3) CategorizedSoundEvent(hellfirepvp.astralsorcery.common.util.sound.CategorizedSoundEvent) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn)

Aggregations

PositionedLoopSound (hellfirepvp.astralsorcery.client.util.sound.PositionedLoopSound)4 SoundsAS (hellfirepvp.astralsorcery.common.lib.SoundsAS)3 MiscUtils (hellfirepvp.astralsorcery.common.util.MiscUtils)3 Vector3 (hellfirepvp.astralsorcery.common.util.data.Vector3)3 SoundHelper (hellfirepvp.astralsorcery.common.util.sound.SoundHelper)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 OnlyIn (net.minecraftforge.api.distmarker.OnlyIn)3 VFXAlphaFunction (hellfirepvp.astralsorcery.client.effect.function.VFXAlphaFunction)2 EffectHelper (hellfirepvp.astralsorcery.client.effect.handler.EffectHelper)2 EffectTemplatesAS (hellfirepvp.astralsorcery.client.lib.EffectTemplatesAS)2 IConstellation (hellfirepvp.astralsorcery.common.constellation.IConstellation)2 ResourceLocation (net.minecraft.util.ResourceLocation)2 SoundCategory (net.minecraft.util.SoundCategory)2 BlockPos (net.minecraft.util.math.BlockPos)2 MathHelper (net.minecraft.util.math.MathHelper)2 World (net.minecraft.world.World)2 Dist (net.minecraftforge.api.distmarker.Dist)2