Comment créer un alarme
-
Bonjour,
Je voudrais savoir comment faire une Alarme. Plus précisément quand la block Alarme est activer par de la redstone le block joue un sounds en boucle tant que l’y as un courant de redstone Alarme continue à jouer.
Info Je sais créer un block
(Edit) Version: 1.7.10
Merci de votre compréhension,
lexmad13009 -
@‘lexmad13009’:
Bonjour,
Je voudrais savoir comment faire une Alarme. Plus précisément quand la block Alarme est activer par de la redstone le block joue un sounds en boucle tant que l’y as un courant de redstone Alarme continue à jouer.
Info Je sais créer un block
Merci de votre compréhension,
lexmad13009Tu peut utiliser la fonction “onNeighborBlockChange” avec worldIn.isBlockPowered(pos) pour détecter si le block est activé par de la redstone puis tu peux changer son BlockState grace à worldIn.setBlockState(pos, state). Par contre pour jouer un son, je ne sais pas comment faire.
PS : tu as oublié de mettre la balise de version
-
Voila l’event que j’ai mis
public void onNeighborBlockChange(World world, int i, int j, int k, Block l){
EntityPlayer entity = Minecraft.getMinecraft().thePlayer;
if (Block.getIdFromBlock(l) > 0 && l.canProvidePower() && world.isBlockIndirectlyGettingPowered(i, j, k)){
if(true){
world.playSoundEffect((double)i + 0.5D, (double)j + 0.5D, (double)k + 0.5D, Reference.MOD_ID + “:alarma”, 1.0F, 1.0F);
}
}
}Sa fonctionne mais tant que le sounds n’est pas jouer en boucle pendant qu’il y as encore la redstone actif
-
Je ne vois pas ce que “Block.getIdFromBlock(l) > 0” et “l.canProvidePower()” viennent faire ici, est encore moins “if(true)”.
Il faut que tu utilise “worldIn.scheduleUpdate(pos, this, X);” pour jouer le son tout les X ticks.
Ensuite tu as besoin de la fonction “updateTick” dans laquelle si le block reçoit toujours de la redstone tu vas jouer ton son et ré-exécuter “worldIn.scheduleUpdate(pos, this, X);”. (même pas besoin de s’embêter avec la méta data ou les BlockStates) -
Je ne comprend pas
-
@‘lexmad13009’:
Je ne comprend pas
Dans ta fonction “updateState”, tu regarde si le block est alimenté en redstone ( world.isBlockIndirectlyGettingPowered(i, j, k) ). Si c’est le cas, alors tu exécute “worldIn.scheduleUpdate(pos, this, X);” (cette fonction vas automatiquement appelé “updateTick” aprés avoir attendu X ticks).
Ensuite dans la fonction “updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)” si le block est toujours alimenté tu joue le son et tu exécute “scheduleUpdate”. Donc après avoir joué le son, au bout de X ticks, le son va encore être joué, puis encore jusqu’à ce qu’il n’y ai plus de signal redstone.
-
Ces Méthode n’existe pas chez moi
-
@‘lexmad13009’:
Ces Méthode n’existe pas chez moi
Excuse moi, en 1.7, c’est “worldIn.scheduleUpdate(x, y, z, this, T);” et “updateTick(World world, int x, int y, int z, Random rand)”
-
Mais le truc Random sa vas pas être Random aux niveau du temps ?
-
@‘lexmad13009’:
Mais le truc Random sa vas pas être Random aux niveau du temps ?
Non, c’est que la fonction “updateTick” a deux utilités :
- être appelé aléatoirement (grâce à “randomTick”)
- être appelé de manière régulière (grâce à “scheduleUpdate”) -
C’est en tick ou en seconde car par exemple je mes world.scheduleBlockUpdate(x, y, z, this, 130); et sa update en 6 - 7 secondes
-
@‘lexmad13009’:
C’est en tick ou en seconde car par exemple je mes world.scheduleBlockUpdate(x, y, z, this, 130); et sa update en 6 - 7 secondes
C’est en ticks (20 ticks par seconds donc 130ticks = 6.5s)
-
Merci et pour play le son j’utilise sa " world.playSoundEffect((double)x + 0.5D, (double)y + 0.5D, (double)z + 0.5D, Reference.MOD_ID + “:alarma”, 1.0F, 1.0F);" il n’y a pas un autre moyen que sa ou un moyen de baisser le son dans le code ?
-
@‘lexmad13009’:
Merci et pour play le son j’utilise sa " world.playSoundEffect((double)x + 0.5D, (double)y + 0.5D, (double)z + 0.5D, Reference.MOD_ID + “:alarma”, 1.0F, 1.0F);" il n’y a pas un autre moyen que sa ou un moyen de baisser le son dans le code ?
Il faut utiliser les deux derniers arguments (ici, 1.0F et 1.0F) : le premier est le volume et le deuxième est la vitesse à la laquelle le son vas être joué. Donc si tu veux diminuer le son, il faut mettre quelque chose de plus petit pour l’avant dernier argument.
-
Est que tu sait comment on crée un disk en 1.7.10
-
@‘lexmad13009’:
Est que tu sait comment on crée un disk en 1.7.10
Je pense que tu peux simplement faire :
new ItemRecord(nom_du_disque)
-
Enfaite je sait crée l’item disk mais quand je le met dans jukebox il ne joue pas le sound
-
@‘lexmad13009’:
Enfaite je sait crée l’item disk mais quand je le met dans jukebox il ne joue pas le sound
Je pense qu’il faut mettre le son dans un dossier spécial mais je ne m’y connais pas donc je ne peux pas t’aider.
-
Pour le son les deux derniers floats sont le volume puis le pitch (la tonalité).
Donc pour réduire de moitié le volume mais toujours la même tonalité ça fait 0.5F et 1.0F
Edit pour les modos: Chui un boulet, j’avais pas vu la réponse
-
Il faut ajouter cette fonction dans la classe de ton cd :
public ResourceLocation getRecordResource(String name) { return new ResourceLocation("modid:records.nom"); }
Et enregistrer le son comme expliqué ici : https://www.minecraftforgefrance.fr/showthread.php?tid=788#classe11