Aller au contenu
pifou92000

[1.7.x] (Forge) Custom Music Discs

Recommended Posts

Salut tout le monde, voici encore un nouveau mod de moi. :P
Avez-vous déjà souhaité pouvoir ajouter simplement des disques de musique au jeu, sans passer par du codage Java fastidieux ?
Et bien, avec Custom Music Discs, c'est possible ! Ajoutez autant de disques que vous voulez, avec leurs crafts, configurez les monstres qui peuvent les dropper, et faites-les se générer dans les coffres des donjons, tout ça sans aucune connaissance en programmation (bon soit, ce n'est pas un problème sur un forum de modding, mais avouez que c'est plus pratique ^^).
Tous les disques que vous créerez seront droppés par les creepers lorsqu'ils sont tués par des squelettes, comme pour les disques Vanilla (vous pouvez désactiver cette fonctionnalité dans le fichier de config).
Ce mod marche en multijoueur, et est compatible avec Optifine !
Comment installer ce mod :
Solo / Client :
D'abord, installez-le comme un mod Forge normal, en mettant le fichier jar dans .minecraft/mods.
Créez ensuite un dossier nommé "CMD files" dans votre .minecraft (vous pouvez aussi le créer dans .minecraft/mods, ce qui peut être utile surtout si vous voulez faire un modpack avec vos musiques). Pour chaque disque que vous voulez ajouter, mettez le son correspondant (fichier ogg Vorbis) dans "CMD files". Pour créer un ogg Vorbis à partir de n'importe quel fichier son, ouvrez-le avec Audacity (logiciel gratuit) et allez dans Fichier -> Exporter comme ogg Vorbis.
A chaque fois que vous ajoutez ou modifiez une musique, lancez Minecraft et attendez l'écran titre avant de fermer, pour finaliser l'ajout. Si vous voulez jouer, fermez et relancez le jeu, autrement les disques ajoutés ne fonctionneront pas.
Chaque disque reçoit l'icône d'un disque vanilla (ce n'est pas aléatoire, ça dépend du nom du disque, ce sera donc toujours la même icône pour un disque donné).
Si vous voulez une icone personnalisée pour l'un de vos disques, mettez l'image (fichier png) dans "CMD files". Elle doit avoir le même nom que le disque auquel elle correspond (par exemple "son.png" pour "son.ogg").
Après l'ajout d'une icône, vous devrez relancer votre jeu 2 fois, comme à l'ajout d'un disque.
Si vous n'ajoutez aucune musique ni icône entre vos sessions de jeu, vous pouvez désactiver l'option "update_discs_when_launching_Minecraft" dans le fichier de config. Le jeu se lancera ainsi plus vite. Par contre, si vous modifiez le contenu de votre "CMD files", il est nécessaire d'activer l'option pour que ça fonctionne correctement !
Vous pouvez aussi créer un fichier texte associé à votre disque ("son.txt" pour "son.ogg"), pour configurer des crafts, des drops et la génération du disque dans des donjons. Référez-vous à "Configurer un fichier de disque" pour plus d'informations. Si vous ne voulez aucune de ces fonctionnalités pour votre disque, ne créez pas de fichier texte.
1420576779-example-files.png
Pour rejoindre un serveur avec Custom Music Discs :
  • vous AVEZ BESOIN d'un fichier ogg pour chaque disque configuré sur le serveur
  • vous POUVEZ avoir des icônes personnalisées pour certains disques, elles seront utilisées sur votre client, comme un resource pack
  • vous N'AVEZ PAS BESOIN de fichiers texte pour configurer des crafts, des drops et la génération dans les donjons. Si vous en avez, ils ne seront pas utilisés, seuls ceux du serveur seront lus.
Multijoueur :
D'abord, installez-le comme un mod Forge normal, en mettant le dossier "mods" de votre serveur Forge.
Ensuite, créez un nouveau dossier dans le répertoire principal de votre serveur, et appelez-le "CMD files" (comme en Solo, vous pouvez aussi choisir de créer "CMD files" dans le dossier mods du serveur).

1399209080-screen2.png

Dans ce dossier, créez un nouveau document texte pour chacun des disques que vous voulez ajouter, et donnez-lui le même nom que la musique en question. Vous pouvez utiliser ce document texte pour configurer des crafts, des drops et la génération du disque dans les coffres de donjons. Référez-vous à "Configurer un fichier de disque" pour plus d'informations. Si vous ne voulez ni craft ni drops, vous devez quand même créer le fichier texte, sinon le disque ne sera pas créé, donc laissez-le simplement vide.
Ne mettez pas les fichiers son ou les icônes côté serveur, ce sont des ressources qui doivent donc être côté client.
Configurer un fichier de disque :
Vous voulez sûrement que votre disque ait un craft, qu'il puisse être droppé par une certaine créature ou trouvé dans un certain donjon.
Pour cela, rendez-vous dans le dossier "CMD files" que vous avez créé (dans .minecraft en solo/client, ou dans le dossier principal pour un serveur). Si vous configurez un serveur et que vous avez bien suivi les instructions jusqu'ici, vous devriez déjà avoir un fichier texte vide. Si vous êtes en solo, créez un nouveau fichier texte qui porte le même nom que la musique, par exemple "son.txt" pour "son.ogg".
Voici un outil qui permet de générer automatiquement un fichier de disque : téléchargez ce fichier html et ouvrez-le avec votre navigateur favori. Il est en anglais mais assez facile à comprendre et utiliser.Il fonctionne avec Google Chrome, Firefox et IE (je n'ai pas essayé les autres). Si cliquer sur les boutons n'a aucun effet, demandez à votre navigateur d'arrêter de bloquer l'exécution des scripts.
Pour configurer manuellement votre fichier de disque, suivez les instructions ci-dessous.
Ajouter un craft :
Pour ajouter un craft à votre disque, commencez par écrire une ligne "craft_start".
Les 9 lignes suivantes représentent votre craft. Les lignes 1 à 3 représentent les 3 objet de la première ligne de la grille de craft, les lignes 4 à 6 sont la deuxième ligne de la grille de craft, et les lignes 7 à 9 sont la dernière ligne.
Ecrivez "craft_end" à la fin.
Vous pouvez utiliser des objets ou blocs (tous les noms sont disponibles sur cette page), et même des objets de mods, si vous connaissez leur nom. Par exemple, "Mocreatures:horsesaddle" fait référence à la selle de cheval du mod Mo'Creatures.
Voici un exemple de craft :
1420578778-example-craft-1.png
Vous n'avez pas besoin d'écrire les 9 lignes si votre craft n'utilise pas toutes les cases :
1420578778-example-craft-2.png
Si votre craft ne prend qu'une ligne, comme l'exemple ci-dessus, il fonctionnera sur n'importe quelle ligne de la grille de craft. De même pour les colonnes.
Vous pouvez spécifier la metadata demandée d'un objet dans le craft, à l'aide des deux points :
1420578778-example-craft-3.png
Si aucune metadata n'est spécifiée, n'importe laquelle fonctionnera dans le craft.
Vous pouvez ajouter autant de crafts que vous voulez par disque, souvenez-vous seulement de toujours commencer par "craft_start" et finir par "craft_end" !
Ajouter des drops :
Pour qu'un monstre puisse dropper votre disque, ajoutez cette ligne dans le fichier texte :
drops:nomDuMonstre:pourcentage

Par exemple, avec drops:Zombie:20, chaque zombie aura 20% de chances de dropper le disque à sa mort. Si vous voulez que plusieurs monstres puissent dropper votre disque, mettez plusieurs lignes, par exemple :

drops:Zombie:20
drops:Creeper:60
drops:Skeleton:10
Si vous utilisez "All" comme nom de monstre, tous les mobs dropperont votre disque avec la probabilité spécifiée.
Si vous cherchez le nom d'un monstre, regardez son "Savegame ID" sur cette page.
Ajouter de la génération dans les coffres de donjons :
Pour faire générer votre disque dans un coffre de donjon, ajoutez cette ligne dans le fichier texte :
dungeons:nomDuDonjon:probabilité
Par exemple, dungeons:villageBlacksmith:10 ajoute votre disque aux coffres des villages, avec une probabilité d'apparition de 10. Une probabilité moyenne est entre 5 et 10.
Il est conseillé de ne pas mettre des probabilités trop hautes, surtout si vous ajoutez beaucoup de disques, autrement vous aurez du mal à trouver des objets normaux dans les coffres des donjons.
Voici les noms des donjons :
  • dungeonChest (coffre du donjon classique fait de cobblestone, avec un spawner)
  • bonusChest (coffre optionnel qui peut apparaître à côté de vous à la création d'un monde)
  • villageBlacksmith (coffre de la forge des villages)
  • mineshaftCorridor (coffre d'un mineshaft)
  • pyramidDesertyChest (pyramide du désert)
  • pyramidJungleChest (temple de la jungle)
  • strongholdCorridor (coffre dans le couloir d'un fort)
  • strongholdLibrary (coffre dans la bibliothèque d'un fort)
  • strongholdCrossing (coffre à une intersection d'un fort)
Voici un exemple de fichier de disque. Ce disque peut être fabriqué en mettant de la redstone ou de la glowstone au-dessus d'un diamant dans la table de craft. Il a 10% de chance d'être droppé quand un Blaze meurt, et il peut être trouvé dans les temples de la jungle.
craft_start
redstone


diamond
craft_end

craft_start
glowstone_dust


diamond
craft_end

drops:Blaze:10

dungeons:pyramidJungleChest:10
/!\ Ce mod nécessite Forge pour fonctionner !
Voici lapage de téléchargement de Forge. (choisissez ce qui correspond à votre version de Minecraft)
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Pifou, franchement, tié fou ! Tes mods sont géniaux, honnêtement, avec iron'n'gold je pense que vous formez l'élite des moddeurs d'IronCraft ! Continuez comme ça les gars ! (à quand un mod fait par vous deux ?)

Sinon, franchement, t'es un voleur d'idée de dedans ma tête ma parole ?! Tu fais Plus d'aliment (je voulais faire More Bouffe avec creep a une époque), tu fait Custom music disc (je voulais faire MusicDisc++) ! Bref, comme d'habitude, très bon mod, qui plus est simple d'utilisation, que du bon !

Partager ce message


Lien à poster
Partager sur d’autres sites

Pifou, franchement, tié fou ! Tes mods sont géniaux, honnêtement, avec iron'n'gold je pense que vous formez l'élite des moddeurs d'IronCraft ! Continuez comme ça les gars ! (à quand un mod fait par vous deux ?)

Sinon, franchement, t'es un voleur d'idée de dedans ma tête ma parole ?! Tu fais Plus d'aliment (je voulais faire More Bouffe avec creep a une époque), tu fait Custom music disc (je voulais faire MusicDisc++) ! Bref, comme d'habitude, très bon mod, qui plus est simple d'utilisation, que du bon !

Merci ! Et oui le système que j'ai développé et relié à ta tête par Wifi me fournit la plupart de mes idées. :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Sympas comme mod mais je pense que pour le multi, il aurai fallu faire un stream du serv vers le client. Il est vrai que ça peu s'avérer lord mais ça serai beaucoup plus simple a gérer pour les possesseurs de serveur.

Toujours de bon mod pifou, j'en deviendrais jalou :P

Tu devrais faire les Modjams sérieusement

;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Sympas comme mod mais je pense que pour le multi, il aurai fallu faire un stream du serv vers le client. Il est vrai que ça peu s'avérer lord mais ça serai beaucoup plus simple a gérer pour les possesseurs de serveur.

Toujours de bon mod pifou, j'en deviendrais jalou :P

Tu devrais faire les Modjams sérieusement

;)

Merci ^^

Pour le codage réseau j'ai vraiment aucune expérience, j'ai déjà bien galéré à envoyer les crafts des disques du serveur au client, mais j'améliorerai peut-être le système plus tard. :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour !

Super ce mod, c'est ce dont je rêvais,

n'est ce pas possible de l'installer sous mcpc+ ???

Apparemment non, selon Glopeur. J'essaierai peut-être de le rendre compatible dans le futur.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon en fait après plusieurs essais, un soucis apparait avec mcpc+ 1.7.2 :
à la mort d'un joueur, il est déconnecté.

connexion perdue
internal exception : io.netty.handler.timeout.ReadTimeoutException

et parfois (souvent) le serveur crash

---- Minecraft Crash Report ----
// Would you like a cupcake?

Time: 18/05/14 12:28
Description: Ticking entity

java.lang.NullPointerException: Ticking entity
    at cmd.common.EntityLivingHandler.onEntityLivingDeath(EntityLivingHandler.java:23)
    at cpw.mods.fml.common.eventhandler.ASMEventHandler_4_EntityLivingHandler_onEntityLivingDeath_LivingDeathEvent.invoke(.dynamic)
    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51)
    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122)
    at net.minecraftforge.common.ForgeHooks.onLivingDeath(ForgeHooks.java:288)
    at net.minecraft.entity.player.EntityPlayerMP.func_70645_a(EntityPlayerMP.java:525)
    at net.minecraft.entity.EntityLivingBase.func_70097_a(EntityLivingBase.java:975)
    at net.minecraft.entity.player.EntityPlayer.func_70097_a(EntityPlayer.java:1145)
    at net.minecraft.entity.player.EntityPlayerMP.func_70097_a(EntityPlayerMP.java:663)
    at net.minecraft.entity.projectile.EntityArrow.func_70071_h_(EntityArrow.java:313)
    at net.minecraft.world.World.func_72866_a(World.java:2679)
    at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:836)
    at net.minecraft.world.World.func_72870_g(World.java:2633)
    at net.minecraft.world.World.func_72939_s(World.java:2444)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:667)
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:893)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:429)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:759)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:622)
    at java.lang.Thread.run(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
    at cmd.common.EntityLivingHandler.onEntityLivingDeath(EntityLivingHandler.java:23)
    at cpw.mods.fml.common.eventhandler.ASMEventHandler_4_EntityLivingHandler_onEntityLivingDeath_LivingDeathEvent.invoke(.dynamic)
    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51)
    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122)
    at net.minecraftforge.common.ForgeHooks.onLivingDeath(ForgeHooks.java:288)
    at net.minecraft.entity.player.EntityPlayerMP.func_70645_a(EntityPlayerMP.java:525)
    at net.minecraft.entity.EntityLivingBase.func_70097_a(EntityLivingBase.java:975)
    at net.minecraft.entity.player.EntityPlayer.func_70097_a(EntityPlayer.java:1145)
    at net.minecraft.entity.player.EntityPlayerMP.func_70097_a(EntityPlayerMP.java:663)
    at net.minecraft.entity.projectile.EntityArrow.func_70071_h_(EntityArrow.java:313)
    at net.minecraft.world.World.func_72866_a(World.java:2679)
    at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:836)
    at net.minecraft.world.World.func_72870_g(World.java:2633)

-- Entity being ticked --
Details:
    Entity Type: Arrow (net.minecraft.entity.projectile.EntityArrow)
    Entity ID: 1893
    Entity Name: arrow
    Entity's Exact location: 240,64, 56,43, 269,34
    Entity's Block location: World: (240,56,269), Chunk: (at 0,3,13 in 15,16; contains blocks 240,0,256 to 255,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    Entity's Momentum: -1,02, -1,10, -0,48
Stacktrace:
    at net.minecraft.world.World.func_72939_s(World.java:2444)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:667)

-- Affected level --
Details:
    Level name: world
    All players: 1 total; [EntityPlayerMP['AlChimiK'/1434, l='world', x=240,00, y=54,00, z=268,96](AlChimiK at 240.00226982554094,54.0,268.96035600478285)]
    Chunk stats: ServerChunkCache: 441 Drop: 0
    Level seed: 5521948934090611392
    Level generator: ID 00 - default, ver 1. Features enabled: true
    Level generator options:
    Level spawn location: World: (224,64,252), Chunk: (at 0,4,12 in 14,15; contains blocks 224,0,240 to 239,255,255), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    Level time: 13308 game time, 13308 day time
    Level dimension: 0
    Level storage version: 0x04ABD - Anvil
    Level weather: Rain time: 147090 (now: false), thunder time: 18114 (now: false)
    Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
Stacktrace:
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:893)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:429)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:759)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:622)
    at java.lang.Thread.run(Unknown Source)

-- System Details --
Details:
    Minecraft Version: 1.7.2
    Operating System: Windows Vista (x86) version 6.0
    Java Version: 1.7.0_55, Oracle Corporation
    Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Oracle Corporation
    Memory: 907833496 bytes (865 MB) / 1060372480 bytes (1011 MB) up to 1060372480 bytes (1011 MB)
    JVM Flags: 2 total; -Xincgc -Xmx1G
    AABB Pool Size: 7444 (416864 bytes; 0 MB) allocated, 2616 (146496 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
    FML: MCP v9.03 FML v7.2.165.1065 Minecraft Forge 10.12.1.1065 4 mods loaded, 4 mods active
    mcp{9.03} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    FML{7.2.165.1065} [Forge Mod Loader] (mcpc-plus-1.7.2-R0.4-forge1065-B70.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    Forge{10.12.1.1065} [Minecraft Forge] (mcpc-plus-1.7.2-R0.4-forge1065-B70.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    cmd{1.1} [Custom Music Discs] (Custom Music Discs-1.1 Server.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: 106 (5936 bytes; 0 MB) allocated, 39 (2184 bytes; 0 MB) used
    Player Count: 1 / 20; [EntityPlayerMP['AlChimiK'/1434, l='world', x=240,00, y=54,00, z=268,96](AlChimiK at 240.00226982554094,54.0,268.96035600478285)]
    Is Modded: Definitely; Server brand changed to 'mcpc,craftbukkit,fml,forge'
    Type: Dedicated Server (map_server.txt)

Partager ce message


Lien à poster
Partager sur d’autres sites

Déjà verifie bien d'avoir la même version de fml et forge côté client et server.

Ensuite, donne nous le contenu de fml-client-latest.log (pour le client) et fml-server-latest.log (pour le serveur) trouvable dans le dossiers logs.

Partager ce message


Lien à poster
Partager sur d’autres sites

A part ça tout semble fonctionner nickel oui.

Thog j'ai bien fait attention pour forge c'est la 1065 de chaque côté.

Pour fml je sais même pas ce que c'est :/ je trouve ça où ?

Les fichiers sont trop longs et ne peuvent ni rentrer dans le message, ni être joints en fichiers joints.
Je vais les passer par mega, je vous poste ça tout de suite.

EDIT :

-----------

fml client lastest log : https://mega.co.nz/#!N04m3CzS!mPC3-BEFsyyYxSWYPpuMM3ZK6thkaddb366Vxj-7jNg

-----------

mfl server lastest log : https://mega.co.nz/#!A04gkYCb!whNdks5MLQ0n4BnQG8lq60ktMbgeI_OmQUQpuaPGOWE

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait, après des tests de mon côté, cette erreur se produit même avec un serveur Forge simple.

Je suis allé à la ligne de la nullPointerException, et j'ai mis quelques conditions pour vérifier que les objets utilisés existent, ça a l'air de fonctionner. :)

Vous pouvez donc télécharger la version 1.2 du mod avec ce bug corrigé.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Rolala je sais pas quoi dire !
Corrigé vite fait bien fait !
Je télécharge ça je te tiens au jus si je rencontre un problème.

Merci encore pour ce mod qui me fait super plaisir ! :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×