Jump to content

[1.12.2] Sound playing is randomized


Kestrel0

Recommended Posts

Heya friends, I've been working on a system that plays sounds in a specific event, but it doesn't play every time the event fires, instead its seemingly random when it will actually play the sound, which is really confusing to me, 

Here's a in-game example, you can correlate the event firing with the text in the chat,

 

So i'm wondering if this is strictly a 1.12.2(Or 1.12.X) limitation? Or if I could of fucked something up? I tired using many variations of playSound (Both on player, and world) and always got the same result, 

If anyone can help that'd be great, its not the biggest deal as everything else works fine, and we can just keep the chat events, but it'd be nice to have the sounds work properly, lol

 

thank you friends :) have a great day

 

Event code:

@Override
    public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
        ticksRemaining = itemStack.getMaxDamage() - itemStack.getItemDamage();

        // pre-cal to hopefully fix Issue-13 /shrug
        int halfFilter = totalTime / 2;
        int thirdFilter = totalTime / 3;
        int quarterFilter = totalTime / 4;
        SoundEvent watchWindSound = WATCHWIND;
        SoundEvent watchBeepSingleSound = WATCHBEEPSINGLE;
        SoundEvent filterBeepSound = FILTERBEEP;

        BlockPos headPos = new BlockPos(player.posX, player.posY + 1, player.posZ);

        if (world.getBlockState(headPos).getBlock() instanceof BlockPollutedAir) {
            if (!isInGas) {
                player.world.playSound(null, player.posX, player.posY, player.posZ, watchWindSound, player.getSoundCategory(), 1.0F, 1.0F);
                isInGas = true;
                player.sendMessage(new TextComponentString("<Watch> Beep"));
            }

            if (ticksRemaining != 0) {
                this.setDamage(itemStack, itemStack.getItemDamage() + 1);
            }

            // Filter warnings
            if (ticksRemaining == 0) {
                player.sendMessage(new TextComponentString("<Watch> Beep Beep (Filter empty)"));
                player.world.playSound((EntityPlayer) null, player.posX, player.posY, player.posZ, filterBeepSound, player.getSoundCategory(), 1.0F, 1.0F);
                player.addPotionEffect(new PotionEffect(MobEffects.POISON, 300)); //!@Placeholder:
            } else if (ticksRemaining < quarterFilter && !warnFinal) {
                player.sendMessage(new TextComponentString("<Watch> Beep (1/4 Filter left)"));
                warnFinal = true;
                player.world.playSound((EntityPlayer) null, player.posX, player.posY, player.posZ, watchBeepSingleSound, player.getSoundCategory(), 1.0F, 1.0F);
            } else if (ticksRemaining < thirdFilter && !warnTwo) {
                player.sendMessage(new TextComponentString("<Watch> Beep (1/3 Filter left)"));
                warnTwo = true;
                player.world.playSound((EntityPlayer) null, player.posX, player.posY, player.posZ, watchBeepSingleSound, player.getSoundCategory(), 1.0F, 1.0F);
            } else if (ticksRemaining < halfFilter && !warnOne) {
                player.sendMessage(new TextComponentString("<Watch> Beep (1/2 Filter left)"));

                warnOne = true;
                player.world.playSound((EntityPlayer) null, player.posX, player.posY, player.posZ, watchBeepSingleSound, player.getSoundCategory(), 1.0F, 1.0F);
            }

        } else if (isInGas) {
            player.world.playSound(null, player.posX, player.posY, player.posZ, watchBeepSingleSound, player.getSoundCategory(), 1.0F, 1.0F); 
            player.sendMessage(new TextComponentString("<Watch> Beep (Disabled Timer)"));
            isInGas = false;
        }
    }

Registering the sounds (If that even matters lol):

    private void init(){
        sounds = Lists.newArrayList();
        CAN_OPEN = SoundE("can_open", "can_open");
        PLAYER_COUGH = SoundE("PLAYER_COUGH", "PLAYER_COUGH");
        FIREBOMB_LAND = SoundE("FIREBOMB_LAND", "FIREBOMB_LAND");
        FIREBOMB_LIGHT = SoundE("FIREBOMB_LIGHT", "FIREBOMB_LIGHT");
        EXPLOSION_DISTANT= SoundE("EXPLOSION_DISTANT", "EXPLOSION_DISTANT");
        WATCHWIND= SoundE("WATCH_WIND", "WATCH_WIND");
        WATCHBEEPSINGLE= SoundE("WATCH_BEEP_SINGLE", "WATCH_BEEP_SINGLE");
        FILTERBEEP= SoundE("FILTER_BEEP", "FILTER_BEEP");
    }

    // Init pog :)
    public SoundEvent SoundE (String RessourcePath , String Name){
        SoundEvent NewSound = new SoundEvent(new ResourceLocation(Main.MOD_ID, RessourcePath)).setRegistryName(Name);
        sounds.add(NewSound);
        return NewSound;
    }

 

Edited by Kestrel0
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.