CausticLasagne Posted August 22, 2015 Posted August 22, 2015 Hi guys, I'm making a mod called TheMoneyMod!, which adds currency to minecraft in Australian currency.. ish. I need help on several items, 1. How do you add a background to a Creative Tab? I had it at one point but none of the items rendered on the page. 2. How do you add a Record? I can't get it to work and this ResourceLocation is confusing me. 3. How do you make an item stay in the crafting table? 4. How can you detect if an item is crafted as an ingredient, and then returned to the Inventory?, like buckets, for example. I have limited forge experience, but I am learning. I'll understand most of what you post. Thanks. Caustic Lasagne. Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 Current Creative Tab Src. Am I doing it Right? package com.CausticLasagnesMods.TheMoneyMod; import cpw.mods.fml.client.*; import cpw.mods.fml.client.registry.*; import net.minecraftforge.transformers.*; import net.minecraft.init.*; ... More import java.util.Random; public class TAB_CREATIVE { public Object instance; private String backgroundImageName; public static CreativeTabs tab = new CreativeTabs("The Money Mod!") { @SideOnly(Side.CLIENT) public Item getTabIconItem() { return TheMoneyMod.ITM_NOTE_100cR; } }; public TAB_CREATIVE(int id, String name){} public void load(){ } public void registerRenderers(){} public void generateNether(World world, Random random, int chunkX, int chunkZ){} public void generateSurface(World world, Random random, int chunkX, int chunkZ){} public int addFuel(ItemStack fuel){ return 0; } public void serverLoad(FMLServerStartingEvent event){} public void preInit(FMLPreInitializationEvent event){} public TAB_CREATIVE setBackgroundImageName(String backgroundImageName) { // TODO Auto-generated method stub this.backgroundImageName = ""; return this; } } Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 Sorry, I'm new to the modding scene and lack of tutorials and detail has forced me to create messy code. I do understand java, just not minecraft modding. 1. Yes, I have tried this and it doesn't work. I call the function setBackgroundImageName, and minecraft completely ignores it. Am I supposed to call that function when I add the tab to the registry? Because that's what I'm doing. 2. ResourceLocation. Where do I put the sounds? public ResourceLocation getRecordResource(String name) { return new ResourceLocation(name); // } I know it needs to be an ogg file and under a certain size... 3. I want to change an item in the crafting grid as it is crafted, like when lavabuckets in furnaces return an empty bucket. 4. so these methods will allow me to detect if an item has been crafted with? [glow=green,2,300]Thanks for helping.[/glow] (Turns out that these special stuff don't work on Windows 10: Edge.) Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 This is the Entire code for my CreativeTabs file. It seems weird, but it works. I just can't set an image in the background. I've been trying for the the 3 days it took me to make the mod, from the ground up. TAB_CREATIVE.java package com.CausticLasagnesMods.TheMoneyMod; import net.minecraftforge.event.world.*; import net.minecraftforge.oredict.*; import net.minecraftforge.transformers.*; import net.minecraft.init.*; ... // Imports removed to save space. import java.util.Random; public class TAB_CREATIVE { public Object instance; private String backgroundImageName; public static CreativeTabs tab = new CreativeTabs("The Money Mod!") { @SideOnly(Side.CLIENT) public Item getTabIconItem() { return TheMoneyMod.ITM_NOTE_100cR; } }; public TAB_CREATIVE(int id, String name){} public void load(){ } public void registerRenderers(){} public void generateNether(World world, Random random, int chunkX, int chunkZ){} public void generateSurface(World world, Random random, int chunkX, int chunkZ){} public int addFuel(ItemStack fuel){ return 0; } public void serverLoad(FMLServerStartingEvent event){} public void preInit(FMLPreInitializationEvent event){} public TAB_CREATIVE setBackgroundImageName(String backgroundImageName) { // TODO Auto-generated method stub this.backgroundImageName = ""; return this; } } Setting the Tab for an Item, and declaring the tab in THEMONEYMOD.java this.setCreativeTab(TheMoneyMod.TAB_CREATIVE.tab); TAB_CREATIVE = new TAB_CREATIVE(CreativeTabs.getNextID(), "The_Money_Mod").setBackgroundImageName("tab_CreativeTab"); Does it look funny? It works, but I can't set a background, no matter what I type in. Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 Ohhh, a Container Item. I thought you meant like a Container like a chest or furnace. Yeah, I get it now. Stacked Items like a Russian doll. ResourceLocation never was obvious because in the mojang code, they don't need to use domains.. I think. so it should result new ResourceLocation("TheMoneyMod", "Audio/Music/Sample.ogg")code] ok cool. seems easy. Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 Yes, you are right. I have no idea what i'm doing. How do you suggest I go about making a tab, based on the horrible code you've seen? Also, i'm testing the record in my mod to see if it works. According to what you've said, it will dig up a file in assets/themoneymod/audio/music/test.ogg Here goes! Ok. It works with the jukebox, only it doesn't play the audio. It displays the record name and everything, but no audio. This is what I got: [03:38:24] [Client thread/WARN]: Unable to play unknown soundEvent: TheMoneyMod:audio/music/test.ogg Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 Ok. I'll explore the creativetabs class. One more thing. I tried to use the record with a jukebox, and it showed the rainbow text, but there was no audio. I even checked my audio settings. It returned this: [03:38:24] [Client thread/WARN]: Unable to play unknown soundEvent: TheMoneyMod:audio/music/test.ogg Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 ok Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 same error, only this time: [04:12:14] [Client thread/WARN]: Unable to play unknown soundEvent: themoneymod:audio/test.ogg My MODID is lowercase now: return new ResourceLocation(TheMoneyMod.MODID, "audio/test.ogg"); Only the class names and item names are uppercase. I'll have to recode the entire mod to fix it all. Only this time, i'll know what i'm doing. Do you have any idea what would cause this? Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 oooh. sounds shiny. I'll take a look at it. Thanks for your help. I'll reply again if I have trouble. for now, +1 to you. or more like +7 to you. Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 Could not find the original file to base my new file from. .minecraft\assets\objects does not exist. It's getting late. I'm going to bed. Let's continue this tomorrow. Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
Choonster Posted August 22, 2015 Posted August 22, 2015 The ResourceLocation returned from ItemRecord#getRecordResource is used as the name of a sound event, not a file. You need to create a sounds.json file in assets/themoneymod in this format. Your sound files need to go in assets/themoneymod/sounds. If you name the sound event records.<recordname> (where <recordname> is the argument you passed to the ItemRecord constructor), you can just use the name argument of getRecordResource directly. I have an example implementation of a record here and a sounds.json file here. Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
Choonster Posted August 22, 2015 Posted August 22, 2015 Could not find the original file to base my new file from. .minecraft\assets\objects does not exist. It's getting late. I'm going to bed. Let's continue this tomorrow. If you've set up a ForgeGradle workspace, you'll have a copy of Minecraft's assets in ~/.gradle/caches/minecraft/assets (replace ~ with %USERPROFILE% on Windows). Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 Thanks everyone for your help. If I need any more help, i'll be sure to know where to go. Thanks. Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
CausticLasagne Posted August 22, 2015 Author Posted August 22, 2015 It's not working. [04:39:33] [Client thread/WARN]: Unable to play unknown soundEvent: themoneymod:record.rawk sounds.json { "record.rawk": { "category": "record", "sounds": [ { "name": "audio/test.ogg", "stream": true } ] } } summontherawk.java public ResourceLocation getRecordResource(String name) { return new ResourceLocation(TheMoneyMod.MODID, "record.rawk"); } Let's continue this tomorrow. I'm really, really, really, really tired. Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
Choonster Posted August 22, 2015 Posted August 22, 2015 The file paths in sounds.json are relative to assets/<modid>/sounds, so your path is invalid unless your sound file is located at assets/themoneymod/sounds/audio/test.ogg. There should be a warning from SoundHandler earlier in the log saying that the file doesn't exist and can't be added to the sound event. Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
CausticLasagne Posted August 23, 2015 Author Posted August 23, 2015 Ok. I've moved some stuff around, and it still doesn't work. I no longer get errors when using the jukebox. sounds.json { "record.rawk": { "category": "record", "sounds":[{"name": "audio/test", "stream": true}] } } summontherawk.java package com.CausticLasagnesMods.TheMoneyMod; import java.util.HashMap; import java.util.List; import java.util.Map; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockJukebox; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemRecord; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; public class SummontheRawk extends ItemRecord { private static final Map field_150928_b = new HashMap(); public final String recordName; private static final String __OBFID = "CL_00000057"; protected SummontheRawk(String recordName) { super(recordName); this.recordName = recordName; this.maxStackSize = 1; this.setCreativeTab(TheMoneyMod.TAB_CREATIVE.tab); field_150928_b.put("records." + recordName, this); //Forge Bug Fix: RenderGlobal adds a "records." when looking up below. //field_150928_b.put("records." + p_i45350_1_, this); // TODO Auto-generated constructor stub } @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int icon_index) { return this.itemIcon; } public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) { if (p_77648_3_.getBlock(p_77648_4_, p_77648_5_, p_77648_6_) == Blocks.jukebox && p_77648_3_.getBlockMetadata(p_77648_4_, p_77648_5_, p_77648_6_) == 0) { if (p_77648_3_.isRemote) { return true; } else { ((BlockJukebox)Blocks.jukebox).func_149926_b(p_77648_3_, p_77648_4_, p_77648_5_, p_77648_6_, p_77648_1_); p_77648_3_.playAuxSFXAtEntity((EntityPlayer)null, 1005, p_77648_4_, p_77648_5_, p_77648_6_, Item.getIdFromItem(this)); --p_77648_1_.stackSize; return true; } } else { return false; } } @SideOnly(Side.CLIENT) public void addInformation(ItemStack item_in_use, EntityPlayer player, List itemstacklist, boolean p_77624_4_) { itemstacklist.add(this.getRecordNameLocal()); } @SideOnly(Side.CLIENT) public String getRecordNameLocal() { return StatCollector.translateToLocal("item.record." + this.recordName + ".desc"); } public EnumRarity getRarity(ItemStack item_in_use) { return EnumRarity.rare; } @SideOnly(Side.CLIENT) public static ItemRecord getRecord(String recordname) { return (ItemRecord)field_150928_b.get(recordname); } public ResourceLocation getRecordResource(String name) { return new ResourceLocation(TheMoneyMod.MODID, "record.rawk"); } } I don't get it. Is there a way I can output text to the development console, or a way to debug what's going on? the file test.ogg is at \src\main\resources\assets\themoneymod\sounds\audio Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
Choonster Posted August 23, 2015 Posted August 23, 2015 90% of the code in SummontheRawk is pointless, there's no need to override a super method to do exactly the same thing. All you need to override is getRecordResource . When you do override a method, you should add the @Override annotation to it. You can print text to the log/console using the standard System.out (for quick and dirty debugging) or FMLLog (for properly formatted output). You can also use a wrapper around FMLLog , like this. You can also set breakpoints and launch Minecraft in debug mode. Do you get any warnings from SoundManager earlier in the log? Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
Choonster Posted August 23, 2015 Posted August 23, 2015 I copied your sounds.json into my own, put an audio file at assets/testmod2/sounds/audio/test.ogg and created a new record class using "record.rawk" as the sound event and it worked without issue. You can see what I did here. Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
CausticLasagne Posted August 23, 2015 Author Posted August 23, 2015 Ok. The sound works, but I had to reduce the audio quality to export it to ogg. I'm using audacity. Is there a Maximum length an audioclip can be? or is there a way I can make it compressed or something? Also, when I play the music, there is a pause of about 2 seconds. Is this normal? I don't notice it with other mods. Are they doing something different? Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
Choonster Posted August 24, 2015 Posted August 24, 2015 I don't think Minecraft imposes a maximum length. The file will be compressed when its in the mod's JAR, I don't think you can compress it in any other way. I'm not sure why there'd be a pause. Do you get a pause when playing the OGG in a normal audio player? Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
SanAndreaP Posted August 24, 2015 Posted August 24, 2015 I don't think Minecraft imposes a maximum length. The file will be compressed when its in the mod's JAR, I don't think you can compress it in any other way. I'm not sure why there'd be a pause. Do you get a pause when playing the OGG in a normal audio player? You need to define the sound as stream, or it'll load the entire track into the memory when played. http://minecraft.gamepedia.com/Sounds.json Quote Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! | mah twitter This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.
CausticLasagne Posted August 24, 2015 Author Posted August 24, 2015 No there isn't a delay, though in the game there is. I have Stream set to true. Also, what do you mean by defining the audio as stream? I don't see any options in the code, unless you mean flagging it in the json. I took a look at the examples provided, but they make no difference. Any ideas? Quote ▒█▀▀▀█ █░░█ █▀▀█ █▀▀ █▀▀█ ▒█░▒█ █░░ ▀▀█▀▀ █▀▀█ █▀▀█ ▒█▀▄▀█ █▀▀ █▀▀▀ █▀▀█ ░█▀▀█ █░░░█ █▀▀ █▀▀ █▀▀█ █▀▄▀█ █▀▀ █ ░▀▀▀▄▄ █░░█ █░░█ █▀▀ █▄▄▀ ▒█░▒█ █░░ ░░█░░ █▄▄▀ █▄▄█ ▒█▒█▒█ █▀▀ █░▀█ █▄▄█ ▒█▄▄█ █▄█▄█ █▀▀ ▀▀█ █░░█ █░▀░█ █▀▀ ▀ ▒█▄▄▄█ ░▀▀▀ █▀▀▀ ▀▀▀ ▀░▀▀ ░▀▄▄▀ ▀▀▀ ░░▀░░ ▀░▀▀ ▀░░▀ ▒█░░▒█ ▀▀▀ ▀▀▀▀ ▀░░▀ ▒█░▒█ ░▀░▀░ ▀▀▀ ▀▀▀ ▀▀▀▀ ▀░░░▀ ▀▀▀ ▄
SanAndreaP Posted August 24, 2015 Posted August 24, 2015 No there isn't a delay, though in the game there is. I have Stream set to true. Also, what do you mean by defining the audio as stream? I don't see any options in the code, unless you mean flagging it in the json. I took a look at the examples provided, but they make no difference. Any ideas? Yes, I meant flagging it in your .json What do you mean by: "No there isn't a delay, though in the game there is."? Also, can you show us your current sounds.json? Quote Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! | mah twitter This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.