Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.