Comment faire pour que les joueurs entende autour de moi le son que j'active
-
Pose les bases et essaie par toi même avant.
-
Vous pouvez pas me redirigé vers un tuto car la je vois pas du tous ce que veux dire Julot10085
-
Euh les booleans, c’est juste la base. T’en as vu des centaines quand t’as codé ton mod, je parie. Creuses toi les méninges ou passe faire un tour sur Openclassroom.fr

-
Ce que veux dire Julot c’est que tu fais un key listener, quand la touche est pressé tu passe un boolean a true et quand elle est repressé tu le passe à false comme ça:
boolean = !booleanet ensuite tu fais jouer le son tant que le boolean est sur true
-
un truc comme ça ? ;
public static void main(String [] args){ boolean runOK=true; while(runOK){ System.out.println("bla bla"); } } } -
Bah ouais sauf que ta touche doit changer la valeur donc:
runOK = !runOKmais de ce que je vois, tu n’es pas dans le contexte de Minecraft.
-
WWaa c’est trop l’bordel jlaisse tomber , merci quand meme juste vous pouvez m’aider pour le if(player.openContainer instanceof ContainerPlayer) marche pas
-
Tu veux vérifier si un Gui est ouvert?
Si oui:
if(Minecraft.getMinecraft().currentScreen != null) { Action } -
Non je veux jouer un son avec une touche j’ai déjà le code de cela mais je veux que on puisse le jouer en ayant l’inventaire ouvert ^^
-
Ah d’accord je n’ai pas vraiment jamais touché à ça, désolé.
-
UP
UP -
où est le problème ?
-
page 4
-
Renvoi toutes tes classes : paquet, handler, la classe où tu envoies ton paquet
-
Packet:
package com.AltisMine.mod; import java.util.Scanner; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.ContainerPlayer; 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; if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(player.openContainer instanceof ContainerPlayer){ player.worldObj.playSoundAtEntity(player, "amm:BarrettShoot", 1.0F, 1.0F); } } return null; } } }[font=Ubuntu, sans-serifenvoies du paquet:]
[font=Ubuntu, sans-serif@SubscribeEvent] [font=Ubuntu, sans-serifpublic void onEvent4(KeyInputEvent event)] [font=Ubuntu, sans-serif{] [font=Ubuntu, sans-serifif(keyBindSamu.isPressed())] [font=Ubuntu, sans-serif{] [font=Ubuntu, sans-serifkeyTestTyped3();] [font=Ubuntu, sans-serif}] [font=Ubuntu, sans-serif}] [font=Ubuntu, sans-serifprivate void keyTestTyped3()] [font=Ubuntu, sans-serif{] [font=Ubuntu, sans-serifEntityPlayer player = Minecraft.getMinecraft().thePlayer;] [font=Ubuntu, sans-serif if(player.inventory.hasItem(AltisMineMod.GyroSamu)){] [font=Ubuntu, sans-serif if(player.openContainer.getInventory() != null){] [font=Ubuntu, sans-serif if(player.openContainer instanceof ContainerPlayer){] [font=Ubuntu, sans-serif ] [font=Ubuntu, sans-serif if(true){] [font=Ubuntu, sans-serif ] [font=Ubuntu, sans-serif AltisMineMod.samu.sendToServer(new PacketSamu());] [font=Ubuntu, sans-serif }] [font=Ubuntu, sans-serif }] [font=Ubuntu, sans-serif }] [font=Ubuntu, sans-serif ] [font=Ubuntu, sans-serif ] [font=Ubuntu, sans-serif ] [font=Ubuntu, sans-serif ] [font=Ubuntu, sans-serif ] [font=Ubuntu, sans-serif }] [font=Ubuntu, sans-serif}] [font=Ubuntu, sans-serif} ] ```</packetsamu,> -
Bon, normalement ton code marche, sauf que ton code est toujours en bordel : tu mets un booléen dans ton paquet sans l’utiliser et tu utilises le constructeur sans le booléen, le if (true) dans ton ClientProxy est inutile.
-
Mieux comme ça?
Proxy:
@SubscribeEvent public void onEvent4(KeyInputEvent event) { if(keyBindSamu.isPressed()) { keyTestTyped3(); } } private void keyTestTyped3() { AltisMineMod.samu.sendToServer(new PacketSamu()); } }Paquet:
public static class Handler implements IMessageHandler <packetsamu, imessage="">{ @Override public IMessage onMessage(PacketSamu message, MessageContext ctx) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(player.openContainer instanceof ContainerPlayer) player.worldObj.playSoundAtEntity(player, "amm:BarrettShoot", 1.0F, 1.0F); } return null; } } }Ps: Marche toujours pas</packetsamu,>
-
Renvoi toutes tes classes, y’a encore des problèmes
-
Alors
Main:
public static SimpleNetworkWrapper samu; public static SimpleNetworkWrapper police; public static SimpleNetworkWrapper pompier; samu = NetworkRegistry.INSTANCE.newSimpleChannel("amm:"); samu.registerMessage(PacketSamu.Handler.class, PacketSamu.class, 0, Side.SERVER); police = NetworkRegistry.INSTANCE.newSimpleChannel("amm"); police.registerMessage(PacketPolice.Handler2.class, PacketPolice.class, 1, Side.SERVER); pompier = NetworkRegistry.INSTANCE.newSimpleChannel("am"); pompier.registerMessage(PacketPompier.Handler.class, PacketPompier.class, 2, Side.SERVER);Proxy:
@SubscribeEvent public void onEvent4(KeyInputEvent event) { if(keyBindSamu.isPressed()) { keyTestTyped3(); } } private void keyTestTyped3() { AltisMineMod.samu.sendToServer(new PacketSamu()); } }Packet:
package com.AltisMine.mod; import java.util.Scanner; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.ContainerPlayer; 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; if(player.inventory.hasItem(AltisMineMod.GyroSamu)){ if(player.openContainer instanceof ContainerPlayer) player.worldObj.playSoundAtEntity(player, "amm:BarrettShoot", 1.0F, 1.0F); } return null; } } } ```</packetsamu,> -
1. Comme l’a dit robin, tu enregistres un seul channel pour plusieurs paquets, pas un channel par paquet
2. Si ton paquet doit utiliser un booléen, crées un constructeur avec un booléen et utilises le.Sinon enlève les constructeurs inutiles ainsi que le CONTENU des fonctions fromBytes et toBytes
3. Quel est la condition que tu veux vérifier pour ton son ?