Comment faire pour que les joueurs entende autour de moi le son que j'active
-
Bah non je crois pas car ils ont pris le son d’un bouton menu de minecraft hors le bouton menu y’a que toi qui l’entend pas les joueurs autour .
-
Ce code joue le son uniquement coté client.
Si tu veux que tout le monde l’entendent, il faut envoyer un paquet au serveur lorsque tu appuies sur la touche, puis côté serveur il faut utiliser world.playSoundAtEntity. (qui va renvoyer un paquet à tous les joueurs autours et donc tous les joueurs autour vont entendre le son). -
Euhh tu peux m’expliqué mieux ou m’envoyer vers un tuto comprend pas …
-
Il y a un tutoriel écrit sur les paquets sur le forum et deux tutoriels en vidéos sur la chaine youtube.
-
Je comprend rien… je part en vacances demain quand je rentre j’essaye
-
Bonjour,
alors j’ai pas trop bien compris le tutoriel du coup si vous pouvez m’aider en m’indiquant le code merci.
Je suis bloquer je ne sais pas quoi faire .Pour info j’ai pas de son quand je presse ma touche.
Alors mes code ressemble a ça:
Main Class:
public static SimpleNetworkWrapper samu; samu = NetworkRegistry.INSTANCE.newSimpleChannel("amm"); samu.registerMessage(PacketSamu.Handler.class, PacketSamu.class, 0, Side.SERVER);Packet Samu:
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; import io.netty.buffer.ByteBuf; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; public class PacketSamu implements IMessage{ private boolean samu; public PacketSamu(){ } public PacketSamu(boolean samu, int x, int y, int z){ this.samu = samu; } @Override public void fromBytes(ByteBuf buf) { this.samu = buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeBoolean(this.samu); } public static class Handler implements IMessageHandler <packetsamu, imessage="">{ @Override public IMessage onMessage(PacketSamu message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; World world = FMLClientHandler.instance().getWorldClient(); if(player.capabilities.isCreativeMode){ if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(true){ world.playSoundAtEntity(player, "amm:BarrettShoot:", 1.0F, 1.0F); } } } return null; } } }Client Proxy avec la touche pour activé le son:
@SubscribeEvent public void onEvent4(KeyInputEvent event) { if(keyBindSamu.isPressed()) { keyTestTyped3(); } } private void keyTestTyped3() { EntityPlayer player = Minecraft.getMinecraft().thePlayer; MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); World world = FMLClientHandler.instance().getWorldClient(); { int playerX = MathHelper.floor_double(player.posX); int playerZ = MathHelper.floor_double(player.posZ); for(int x = playerX - 3; x < playerX + 3; x++) { for(int z = playerZ - 3; z < playerZ + 3; z++) { if(x != playerX && z != playerZ) { if(player.capabilities.isCreativeMode){ if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(true){ } } } } } } } } }Merci d’avance Flo.</packetsamu,>
-
Apprends le java, ton code est un gros bordel : if(true) est inutile
-
Ah oui j’avais pas vu que j’ai rien mis , je dois mettre quoi comme code pour que ça joue un son et que les joueurs l’entende dans un rayon de 30 blocs
-
Tu l’envoi quand le paquet ?
-
justement j’ai pas lié le packet avec le clientproxy c’est quoi le code pour le lié
-
NETWORK.sendToServer(toNPaquet) il me semble
-
j’ai trouvé ça :
AltisMineMod.samu.sendToServer(new PacketSamu());Toujours pas de son .
-
Renvoi le ClientProxy et la classe du paquet
-
Alors:
Client Proxy:
private static KeyBinding keyBindSamu; keyBindSamu = new KeyBinding("keyBindSamu.key", Keyboard.KEY_G, "key.categories.gameplay"); ClientRegistry.registerKeyBinding(keyBindSamu); @SubscribeEvent public void onEvent4(KeyInputEvent event) { if(keyBindSamu.isPressed()) { keyTestTyped3(); } } private void keyTestTyped3() { EntityPlayer player = Minecraft.getMinecraft().thePlayer; MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); World world = FMLClientHandler.instance().getWorldClient(); { int playerX = MathHelper.floor_double(player.posX); int playerZ = MathHelper.floor_double(player.posZ); for(int x = playerX - 3; x < playerX + 3; x++) { for(int z = playerZ - 3; z < playerZ + 3; z++) { if(x != playerX && z != playerZ) { if(player.capabilities.isCreativeMode){ if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(true){ AltisMineMod.samu.sendToServer(new PacketSamu()); } } } } } } } } }Packet:
public class PacketSamu implements IMessage{ private boolean samu; public PacketSamu(){ } public PacketSamu(boolean samu, int x, int y, int z){ this.samu = samu; } @Override public void fromBytes(ByteBuf buf) { this.samu = buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeBoolean(this.samu); } public static class Handler implements IMessageHandler <packetsamu, imessage="">{ @Override public IMessage onMessage(PacketSamu message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; World world = FMLClientHandler.instance().getWorldClient(); if(player.capabilities.isCreativeMode){ if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(true){ world.playSoundAtEntity(player, "amm:BarrettShoot", 1.0F, 1.0F); System.out.println("Test"); } } } return null; } } } ```</packetsamu,> -
Je crois que tu n’as pas compris comment devais fonctionner ton paquet, voici les étapes :
- Envoyer le paquet au serveur lorsque la touche est pressée (juste l’envoi, pas de boucles ni rien d’autre)
- Le serveur reçois le paquet
- Dans le handler, tu envoi le son à tous les joueurs autour
-
c’est se que j’ai fais, dans mon client proxy j’envoi le paquet au serveur avec: AltisMineMod.samu.sendToServer(new PacketSamu());
Donc le serveur reçois normalement le paquet et da -
c’est se que j’ai fais, dans mon client proxy j’envoi le paquet au serveur avec: AltisMineMod.samu.sendToServer(new PacketSamu());
Donc le serveur reçois normalement le paquet et dans le Handler j’envois le son à, tous les joueurs via le code: world.playSoundAtEntity(player, “amm:BarrettShoot”, 1.0F, 1.0F);je pense que le code “world.playSoundAtEntity(player, “amm:BarrettShoot”, 1.0F, 1.0F);” est faux .
Peut-etre aussi que je suis con, j’essaye en solo pas en multijoueur , en solo je dois entendre le son ou y’a que en multijoueur que j’entend le son ?
-
public static class Handler implements IMessageHandler <packetsamu, imessage="">{ @Override public IMessage onMessage(PacketSamu message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; World world = FMLClientHandler.instance().getWorldClient(); if(player.capabilities.isCreativeMode){ if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(true){ world.playSoundAtEntity(player, "amm:BarrettShoot", 1.0F, 1.0F); System.out.println("Test"); } } } return null; } }Sérieusement … Si tu mélange du client et du serveur c’est normal que ça fasse n’importe quoi.
public static class Handler implements IMessageHandler <packetsamu, imessage="">{ @Override public IMessage onMessage(PacketSamu message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; if(player.capabilities.isCreativeMode){ if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ player.worldObj.playSoundAtEntity(player, "amm:BarrettShoot", 1.0F, 1.0F); } } return null; } } ```</packetsamu,></packetsamu,> -
Ouais c’est niquel juste un dernier truc j’aimerai jouer un son dans un rayon de 60 blocs a partir du joueur qui appuie sur le bouton.
j’ai essayé cela:EntityPlayer player = Minecraft.getMinecraft().thePlayer; if(player.capabilities.isCreativeMode){ if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(true){ AltisMineMod.samu.sendToAllAround(new PacketSamu(), player.worldObj.provider.getDimensionId(), player.posX, player.posY, player.posZ);J’ai une erreur au .getDimensionId
-
Quel est l’erreur ?