
Arturo166
Members-
Posts
10 -
Joined
-
Last visited
Everything posted by Arturo166
-
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."; }
-
Thanks! All my blocks are now using the right names!
-
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) { } }
-
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?
-
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.
-
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) { } }
-
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.
-
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".
-
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.
-
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.