Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

How can I get the angle from where a sound was played?


Recommended Posts

Hello, I am trying to create a mod which shows the angle of a sound. I mean, if a chicken cackles in your left, I want to be able to get exactly the angle of the chicken.

image.png.89569489dc9da7aa00166adedc65db9f.png

Sorry for the drawing but I think it makes an idea of what I want.

 

@SubscribeEvent
public static void soundAngle(PlaySoundEvent e){
    ISound sound = e.getResultSound();
}

 

Edited by Tatuck
Link to post
Share on other sites
	@SubscribeEvent
	public static void soundAngle(PlaySoundEvent e){
	    ClientPlayerEntity player = Minecraft.getInstance().player;
	    if(player != null) { //the event also triggers in the main menu, so this avoids crash
			ISound sound = e.getResultSound();
	    	double x = sound.getX() - player.getPosX(); //gets the position relative to the player
	    	double y = sound.getZ() - player.getPosZ();
	    	double angle = Math.atan2(y, x);			//converts two sides of a rectangle to an angle given in radians
	    	player.sendChatMessage(String.valueOf(angle));
	    }
	}

Something like this should work. In this code you get the angle relative to the world and not the player.

Edited by Thorius
More instructions
Link to post
Share on other sites

Well if you (Tatuck) want to know more about the subject, look into trigonometry. (in case you're not familiar with it)

I think you can find many good explanations on the internet, maybe videos will be helpfull. I think you can learn the basics of trigonometry pretty fast and then you can do so much more with 3D coordinates.

Link to post
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.

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



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Exception message: java.lang.IllegalArgumentException: Duplicate registration jade you're registering "jade" twice, I think that should be the only thing wrong oh also, your enum constants should be all uppercased (it won't cause any errors of course, but it's the standard)  
    • Sure, i played around with the code a bit and added a ".get()" to the end of the material, this removed all errors. Except its wrong because now I launch and the game crashes, yet eclipse gives me no errors. Heres my list: package djofox.gemstones.materials; import java.util.function.Supplier; import djofox.gemstones.init.ItemInit; import net.minecraft.item.IItemTier; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.LazyValue; public enum ToolMaterialList implements IItemTier { beryl(0, 131, 15.0f, 2.75f, 30, () -> { return Ingredient.of(ItemInit.beryl.get()); }), jade(2, 500, 7.0f, 2.25f, 23, () -> { return Ingredient.of(ItemInit.jade.get()); }), moissanite(2, 500, 7.0f, 2.25f, 23, () -> { return Ingredient.of(ItemInit.moissanite.get()); }), kunzite(0, 315, 12f, 0.5f, 20, () -> { return Ingredient.of(ItemInit.kunzite.get()); }), orpiment(2, 258, 10f, 0.5f, 20, () -> { return Ingredient.of(ItemInit.orpiment.get()); }), mercurySulfide(2, 1012, 5.5f, 2.0f, 14, () -> { return Ingredient.of(ItemInit.mercurySulfide.get()); }), blackDiamond(3, 2757, 8.0f, 3.0f, 2, () -> { return Ingredient.of(ItemInit.blackDiamond.get()); }), treatedCarbide(4, 2560, 10.0f, 5.0f, 2, () -> { return Ingredient.of(ItemInit.siliconCarbide.get()); }); private final int level; private final int uses; private final float speed; private final float damage; private final int enchantmentValue; private final LazyValue<Ingredient> repairIngredient; private ToolMaterialList(int p_i48458_3_, int p_i48458_4_, float p_i48458_5_, float p_i48458_6_, int p_i48458_7_, Supplier<Ingredient> p_i48458_8_) { this.level = p_i48458_3_; this.uses = p_i48458_4_; this.speed = p_i48458_5_; this.damage = p_i48458_6_; this.enchantmentValue = p_i48458_7_; this.repairIngredient = new LazyValue<>(p_i48458_8_); } public int getUses() { return this.uses; } public float getSpeed() { return this.speed; } public float getAttackDamageBonus() { return this.damage; } public int getLevel() { return this.level; } public int getEnchantmentValue() { return this.enchantmentValue; } public Ingredient getRepairIngredient() { return this.repairIngredient.get(); } } Heres my init class which causes the crash (from taking other stuff) And heres the error I get when I crash (I dont know if you need it but better safe than sorry)  
    • can you show your ToolMaterialList?
    • Ohh ok, that makes sense, but even still how could I fix it? I cant initialize my items before I do my ToolMaterialList because my items class uses it.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.