Posted August 19, 201411 yr I'm trying to make a block that, when it gets a redstone signal, it makes the creeper sound to the nearest player. This works, but when the redstone wire that is powering it is getting its power from through a block, the block plays the sound upon receiving the redstone signal, but plays it again and much louder upon losing the signal. Here is the block code that makes the sound: @SideOnly(Side.CLIENT) @Override public void onNeighborBlockChange(World world, int x,int y, int z, Block block) { if (!world.isRemote && world.isBlockIndirectlyGettingPowered(x, y, z)) { world.playSoundAtEntity(world.getClosestPlayer(x, y, z, 20), "creeper.primed", 1.0F, 0.5F); return; } else { return; } }
August 19, 201411 yr Have you tried world.getStrongestIndirectPower(x,y,z) > 0 ? The "isIndirectly..." method doesn't always work as intuitively as you (or, rather I) might think.
August 19, 201411 yr Author I think I did, but I'll check it out again. EDIT: Just tried it, it still happens.
August 20, 201411 yr Hi Having @SideOnly(Side.Client) and if (!world.isRemote) doesn't make any sense together. onNeighbourBlockChange does some unusual things too. Did you look at a vanilla block such as the iron door or the piston or the note block? -TGG
August 20, 201411 yr Author Originally I only had !world.isRemote, but when I found the bug I added the @SideOnly annotation. And I'll check those vanilla blocks in a moment, but I thought they used onNeighborBlockChange as well. EDIT: I looked at BlockPistonBase and BlockNote, but I noticed something in BlockNote. There's something tracking the previous redstone state of the block. I wonder if this was because Mojang had a similar issue when making Note Blocks? I'm gonna try that.
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.