Jump to content

Arturo166

Members
  • Posts

    10
  • Joined

  • Last visited

Everything posted by Arturo166

  1. Hi. I'm been following the Generic mod tutorial for 1.6.2, but when I got to block and item texturing, I followed the tutorial, but the texture didn't apply. Could anybody tell me what's going on? Here's my base mod file: package tutorial.basic; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid = BasicInfo.ID, name = BasicInfo.NAME, version = BasicInfo.VERS) @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class Basic { public final static Block genericDirt = new GenericBlock(500, Material.ground).setHardness(0.5f).setStepSound(Block.soundGravelFootstep).setUnlocalizedName("genericDirt").setCreativeTab(CreativeTabs.tabBlock); public final static Block genericOre = new GenericOre(501, Material.rock); private final static Item genericItem = new GenericItem(5000); private final static Item genericIngot = new GenericItem(5001).setMaxStackSize(16).setCreativeTab(CreativeTabs.tabMisc).setUnlocalizedName("genericIngot"); //The instance of your mod that Forge uses. @Instance("Basic") public static Basic instance; //Says where the client and server 'proxy' code is loaded. @SidedProxy(clientSide = BasicInfo.CLIENTPROXY + "ClientProxy", serverSide = BasicInfo.COMMONPROXY + "CommonProxy") public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { //Stub method } @EventHandler public void load(FMLInitializationEvent event) { proxy.registerRenderers(); ItemStack dirtStack = new ItemStack(Block.dirt); ItemStack diamondStack = new ItemStack(Item.diamond, 64); ItemStack blackWoolStack = new ItemStack(Block.cloth, 10, 15); ItemStack stoneStack = new ItemStack(1, 32, 0); ItemStack saddleStack = new ItemStack(Item.saddle); ItemStack stringStack = new ItemStack(Item.silk, 1); ItemStack gravelStack = new ItemStack(Block.gravel); ItemStack whiteWoolStack = new ItemStack(Block.cloth, 1, 0); GameRegistry.addShapelessRecipe(diamondStack, dirtStack); GameRegistry.addShapelessRecipe(stoneStack, dirtStack, diamondStack); GameRegistry.addRecipe(diamondStack, "xy", "yx", 'x', dirtStack, 'y', stoneStack); GameRegistry.addRecipe(gravelStack, "xyx", "y y", "xyx", 'x', dirtStack, 'y', diamondStack); GameRegistry.addSmelting(Block.dirt.blockID, diamondStack, 0.1f); GameRegistry.registerBlock(genericDirt, "genericDirt"); GameRegistry.registerBlock(genericOre, "genericOre"); FurnaceRecipes.smelting().addSmelting(Block.cloth.blockID, 15, whiteWoolStack, 1.0f); LanguageRegistry.addName(genericDirt, "Generic Dirt"); LanguageRegistry.addName(genericOre, "Generic Ore"); MinecraftForge.setBlockHarvestLevel(genericDirt, "shovel", 1); MinecraftForge.setBlockHarvestLevel(genericOre, "pickaxe", 3); //0 = wood, 1 = stone, 2 = iron, 3 = diamond } @EventHandler public void postInit(FMLPostInitializationEvent event) { //Stub method } } Here's the block file: package tutorial.basic; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; public class GenericOre extends Block { public GenericOre(int id, Material material) { super(id, material); setHardness(4.0f); setStepSound(Block.soundStoneFootstep); setUnlocalizedName("genericOre"); setCreativeTab(CreativeTabs.tabBlock); func_111022_d(BasicInfo.NAME.toLowerCase() + ":iron_ore"); } public int idDropped(int metadata, Random random, int fortune) { return Item.ingotIron.itemID; } } Here's the item file: package tutorial.basic; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; public class GenericOre extends Block { public GenericOre(int id, Material material) { super(id, material); setHardness(4.0f); setStepSound(Block.soundStoneFootstep); setUnlocalizedName("genericOre"); setCreativeTab(CreativeTabs.tabBlock); func_111022_d(BasicInfo.NAME.toLowerCase() + ":iron_ore"); } public int idDropped(int metadata, Random random, int fortune) { return Item.ingotIron.itemID; } } And just in case you're wondering, here's the BasicInfo file: package tutorial.basic; public class BasicInfo { public static final String ID = "Basic"; public static final String NAME = "Basic"; public static final String VERS = "0.0.0"; public static final String CLIENTPROXY = "tutorial.basic.client."; public static final String COMMONPROXY = "tutorial.basic."; }
  2. Thanks! All my blocks are now using the right names!
  3. Not sure what you mean there, but I'll show you the code to see if you can point it out to me. package arturomod.base; import net.minecraft.block.Block; import net.minecraft.block.BlockStationary; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraftforge.liquids.IBlockLiquid; import net.minecraftforge.liquids.ILiquid; import net.minecraftforge.liquids.LiquidStack; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.PostInit; import cpw.mods.fml.common.Mod.PreInit; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid="Arturo166_Mod", name="Arturo's Mod", version="1.0") @NetworkMod(clientSideRequired=true, serverSideRequired=false) public class Arturo { public static final Block arturoBlock = new BlockArturoBlock(500, 0); public static final Block arturoLiquidStill = new ArturoLiquidStill(502, 0); public static final Block arturoLiquidFlowing = new ArturoLiquidFlowing(501, 0); public static final Block arturoLiquidStill2 = new ArturoLiquidStill2(504, 0); public static final Block arturoLiquidFlowing2 = new ArturoLiquidFlowing2(503, 0); @SidedProxy(clientSide="arturomod.base.client.ClientProxy", serverSide="arturomod.base.CommonProxy") public static CommonProxy proxy; @PreInit public void preInit(FMLPreInitializationEvent event) { } @Init public void load(FMLInitializationEvent event) { GameRegistry.registerBlock(arturoBlock, "arturoBlock"); LanguageRegistry.addName(arturoBlock, "Arturo Block"); GameRegistry.registerBlock(arturoLiquidStill, "arturoLiquidStill"); LanguageRegistry.addName(arturoLiquidStill, "Arturo Liquid-Still"); GameRegistry.registerBlock(arturoLiquidFlowing, "arturoLiquidFlowing"); LanguageRegistry.addName(arturoLiquidFlowing, "Arturo Liquid"); GameRegistry.registerBlock(arturoLiquidStill2, "arturoLiquidStill2"); LanguageRegistry.addName(arturoLiquidStill2, "Arturo Liquid 2-Still"); GameRegistry.registerBlock(arturoLiquidFlowing2, "arturoLiquidFlowing2"); LanguageRegistry.addName(arturoLiquidFlowing2, "Arturo Liquid 2"); } @PostInit public void postInit(FMLPostInitializationEvent event) { } }
  4. Thanks, man! The code in your mod gave me a fully functioning liquid! But uhh, now I've got another problem that I don't see any errors in: to test your mod, I created a new liquid altogether called "Arturo Liquid 2". But the thing is, now everything I implemented into the mod is using that name, and I don't know how to solve it. I checked the code I used for the LanguageRegistry and I used different strings and different names for each item. So what's causing this?
  5. Well, I copy-pasted that code into the still-liquid file, and it caused the game to crash whenever I hit the liquid, and it didn't flow. Are there a few things in the code I have to change? Also, in case it has something to do with where in the code I put it, I placed it above the superclass constructor.
  6. Well, that helped a bit more. I switched the item IDs of the two files, but now another strange error has arisen: the liquid only flows when I place a block next to it. Also, it appears that my generic block which I named "Arturo Block" has now taken the name of "Arturo Liquid". I checked the base mod code and the Block's code, and I don't see at ALL what's causing this error with the Language Registry. Why is this happening? package arturomod.base; import net.minecraft.block.Block; import net.minecraft.block.BlockStationary; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraftforge.liquids.IBlockLiquid; import net.minecraftforge.liquids.ILiquid; import net.minecraftforge.liquids.LiquidStack; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.PostInit; import cpw.mods.fml.common.Mod.PreInit; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid="Arturo166_Mod", name="Arturo's Mod", version="1.0") @NetworkMod(clientSideRequired=true, serverSideRequired=false) public class Arturo { public final static Block arturoBlock = new BlockArturoBlock(500, 0); public final static Block arturoLiquidStill = new ArturoLiquidStill(502, 0); public final static Block arturoLiquidFlowing = new ArturoLiquidFlowing(501, 0); @SidedProxy(clientSide="arturomod.base.client.ClientProxy", serverSide="arturomod.base.CommonProxy") public static CommonProxy proxy; @PreInit public void preInit(FMLPreInitializationEvent event) { } @Init public void load(FMLInitializationEvent event) { GameRegistry.registerBlock(arturoBlock, "arturoBlock"); LanguageRegistry.addName(arturoBlock, "Arturo Block"); GameRegistry.registerBlock(arturoLiquidStill, "arturoLiquidStill"); LanguageRegistry.addName(arturoLiquidStill, "Arturo Liquid Still"); GameRegistry.registerBlock(arturoLiquidFlowing, "arturoLiquidFlowing"); LanguageRegistry.addName(arturoLiquidFlowing, "Arturo Liquid"); } @PostInit public void postInit(FMLPostInitializationEvent event) { } }
  7. Okay. I registered it like so, and now that's fixed. My liquid is now registered in the game, but now unfortunately, we've got ANOTHER problem: the liquid is not flowing. I place the block on the ground, and it doesn't flow. Also, when I pick it up, it first turns into a solid block, so when I break that solid block, that's how the liquid disappears. Man, this is a lot harder than I thought.
  8. Okay, so this is what I got so far with your advice. This is the code for the stationary block: package arturomod.base; import net.minecraft.block.BlockStationary; import net.minecraft.block.material.Material; import net.minecraftforge.liquids.ILiquid; public class ArturoLiquidStill extends BlockStationary implements ILiquid { protected ArturoLiquidStill(int par1, Material par2Material) { super(501, Material.water); // TODO Auto-generated constructor stub } @Override public int stillLiquidId() { // TODO Auto-generated method stub return 501; } @Override public boolean isMetaSensitive() { // TODO Auto-generated method stub return false; } @Override public int stillLiquidMeta() { // TODO Auto-generated method stub return 0; } } And here's the code for the flowing block: package arturomod.base; import net.minecraft.block.BlockFlowing; import net.minecraft.block.material.Material; import net.minecraftforge.liquids.ILiquid; public class ArturoLiquidFlowing extends BlockFlowing implements ILiquid { protected ArturoLiquidFlowing(int par1, Material par2Material) { super(502, Material.water); // TODO Auto-generated constructor stub } @Override public int stillLiquidId() { // TODO Auto-generated method stub return 501; } @Override public boolean isMetaSensitive() { // TODO Auto-generated method stub return false; } @Override public int stillLiquidMeta() { // TODO Auto-generated method stub return 0; } } I have to admit that I'm a little confused, because the ILiquid constructors are exactly the same for both files. Is that normal or am I doing good? Also, I appear to have a little trouble trying to register the block. The code I'm using for that is: public final static BlockStationary arturoLiquidStill = new ArturoLiquidStill; The problem here is that Eclipse is saying that there's a "syntax error" under the word "new".
  9. Yeah, it's a solid block. I can walk on it, it's breakable, and it doesn't flow. Also, I don't know what's the difference between iLiquid and the LiquidDictionary. I'm a mega-newbie at this.
  10. Hi, everyone. I'm a beginner modder and I'm trying to figure out how to create liquids in Minecraft. The problem is, I'm don't know how to do it correctly. I tried using this tutorial to figure out how: http://www.minecraftforge.net/wiki/Creating_a_Liquid however, after following it's instructions, my "liquid" appeared as a solid block instead. So, yeah, I'm kind of noobish at modding, however, I'd really appreciate it if someone could tell me how to correctly create liquids for Forge 1.5.2. Thanks.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.