Jump to content

Textures again...


rcboy147

Recommended Posts

Hello people,

 

I would like to start off saying that I love forge, I give all my thanks to people that support the community.

 

But the sad part is that my textures have been broken for a while but I thought maybe I was doing something wrong, but I have rewritten my code and it still dosen't work.. I am using a modified version of pahimars dev enviroment (for 1.6.2)

 

I have been trying to work this out for 2 weeks, I apologize if I did something stupid :P

Here is my code, if you need more ask me please

(Main class)

package michael.stainingwood.main;

import michael.stainingwood.*;
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.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLLoadEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@Mod(modid= stainingWood.modID , name="Staining Wood", version="0.1.84")
@NetworkMod(clientSideRequired=true, serverSideRequired=false)
public class stainingWood {

public final static String modID = "stainingwood";

//Creative Tab
	public static CreativeTabs tabStainingWood = new CreativeTabs("tabStainingWood") {
        public ItemStack getIconItemStack() {
                return new ItemStack(Block.blockDiamond);
        }
	};

//Block Sections
//StainBlock
public final static Block StainBlock =
		new michael.stainingwood.Stain.StainBlock(501, Material.rock)
.setHardness(1.0F)
.setStepSound(Block.soundStoneFootstep)
.setUnlocalizedName("Stain_Block")
.setCreativeTab(tabStainingWood)
.setHardness(2.0F)
    .setResistance(5.0F)
    .func_111022_d(stainingWood.modID + ":" + "stainerblock");

//Item Sections
//Staining Cloth
public final static Item StainingCloth =
		new michael.stainingwood.Stain.StainingCloth(502)
.setMaxStackSize(1)
.setUnlocalizedName("Staining_Cloth")
.setCreativeTab(tabStainingWood);

//Instance of Mod
public static stainingWood instance;

@EventHandler
public void preInit(FMLPreInitializationEvent event){

	System.out.println("[staining Wood] PreInitialization");
	//Creative Tab Registering
	//Staining Wood tab
	LanguageRegistry.instance().addStringLocalization("itemGroup.tabStainingWood", "en_US", "Staining Wood");

	// Block Registering
	//Block Stainblock
	LanguageRegistry.addName(StainBlock,"Stain Mixer");
	GameRegistry.registerBlock(StainBlock, "stainBlock");
	MinecraftForge.setBlockHarvestLevel(Block.stone, "pickaxe", 2);

	// Item Registering
	//Staining Cloth
	LanguageRegistry.addName(StainingCloth, "Staining Cloth");
	GameRegistry.registerItem(StainingCloth, "stainingcloth");

	//Recipe Registering
	//Stain Block Crafting
	//Shapeless Recipe
	GameRegistry.addShapelessRecipe(new ItemStack(StainBlock, 1), new ItemStack(Block.dirt));
	//Shaped Recipe
	GameRegistry.addShapedRecipe(new ItemStack(StainBlock)
			,"yyy","xdx","yyy",
			'x', new ItemStack(Item.ingotIron), 
			'y', new ItemStack(Block.stone),
			'd', new ItemStack(Item.diamond));
	//Stain Cloth Recipe
	GameRegistry.addShapedRecipe(new ItemStack(StainingCloth),
			"s", "p", "t",
			's', new ItemStack(Item.silk), 
			'p', new ItemStack(Item.paper),
			't', new ItemStack(Item.stick));
	//World Generator
	GameRegistry.registerWorldGenerator(new WorldGeneration());
}



@EventHandler
public void load(FMLLoadEvent event){

}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
	//Event's
	MinecraftForge.EVENT_BUS.register(new EventReciver());
}
@EventHandler
public void ServerStart(FMLServerStartingEvent event){

}
}

Block Class

package michael.stainingwood.Stain;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.Random;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import michael.stainingwood.main.stainingWood;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.world.World;


public class StainBlock extends Block {

//Block Stainblock
public StainBlock(int par1, Material par2Material) {
	super(par1, par2Material);
}

//Texture Register	
//@Override
//public void registerIcons(IconRegister r){
//	 this.blockIcon = r.registerIcon(stainingWood.modID + ":" + "stainerblock");
//}

}

 

As you can see I have tryed 2 ways, I have tryed registerIcons within the class and .func_111022_d

And yes my textures are in "forge/mcp/src/minecraft/assets/%modid%/blocks" and "forge/mcp/src/minecraft/assets/%modid%/items"

Link to comment
Share on other sites

Hello

 

I have looked at your code and I have managed to make your block display a texture.

 

First of all, there are some things you need to remove from your code:

 

//Block Sections
//StainBlock
public final static Block StainBlock =
		new michael.stainingwood.Stain.StainBlock(501, Material.rock)
.setHardness(1.0F)
.setStepSound(Block.soundStoneFootstep)
.setUnlocalizedName("Stain_Block")
.setCreativeTab(tabStainingWood)
.setHardness(2.0F)
    .setResistance(5.0F)
    .func_111022_d(stainingWood.modID + ":" + "stainerblock");

 

the last line ".func_111022..." is no longer required, you can delete that.

 

Now, I have added some other code:

 

@Instance("StainingWood")
public static StainingWood instance;

 

Add the @Instance line.

I don't know if this is mandatory, but it is cleaner if you add it.

 

 

@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister r){
	 this.blockIcon = r.registerIcon(StainingWood.modID + ":" + "stainerblock");
}

 

You have to uncomment this whole part first. then add the @SideOnly line.

 

Lastly, your textures have to be at:

forge/mcp/src/minecraft/assets/%modID%/textures/blocks

forge/mcp/src/minecraft/assets/%modID%/textures/items

 

I hope this works for you.

 

 

 

Link to comment
Share on other sites

The texture directory was right, but I typed it wrong on the post.. I did what you said and its still not working, Im guessing It has to be how I setup my dev environment? Because I have 2 different projects one with the default mcp minecraft project and my mod project, I run my project with a dependency on the Minecraft project. Would this affect anything?

 

-Thanks for your time though.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I have a problem, I am trying to put two different effects to two different armors but when I run it only the emerald armor effect works. This is the code public class ModArmorItem extends ArmorItem{ private static final Map<ArmorMaterial, MobEffectInstance> MATERIAL_TO_EFFECT_MAP = (new ImmutableMap.Builder<ArmorMaterial, MobEffectInstance>()) .put(ModArmorMaterials.EMERALD, new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE,200, 1,false,false, true)) .put(ModArmorMaterials.OBSIDIAN, new MobEffectInstance(MobEffects.FIRE_RESISTANCE,200, 1,false,false, true)).build(); public ModArmorItem(ArmorMaterial pMaterial, Type pType, Properties pProperties) { super(pMaterial, pType, pProperties); } @Override public void onArmorTick(ItemStack stack, Level world, Player player){ if (!world.isClientSide()) { if (hasFullSuitOfArmorOn(player)) { evaluateArmorEffects(player); } } } private void evaluateArmorEffects(Player player) { for (Map.Entry<ArmorMaterial,MobEffectInstance> entry : MATERIAL_TO_EFFECT_MAP.entrySet()){ ArmorMaterial mapArmorMaterial = entry.getKey(); MobEffectInstance mapStatusEffect = entry.getValue(); if (hasCorrectArmorOn(mapArmorMaterial, player)) { addStatusEffectForMaterial(player, mapArmorMaterial, mapStatusEffect); } } } private void addStatusEffectForMaterial(Player player, ArmorMaterial mapArmorMaterial, MobEffectInstance mapStatusEffect) { boolean hasPlayerEffect = player.hasEffect(mapStatusEffect.getEffect()); if (hasCorrectArmorOn(mapArmorMaterial, player) && !hasPlayerEffect) { player.addEffect(new MobEffectInstance(mapStatusEffect)); } } private boolean hasCorrectArmorOn(ArmorMaterial material, Player player) { for (ItemStack armorStack : player.getInventory().armor){ if (!(armorStack.getItem() instanceof ArmorItem)) { return false; } } ArmorItem helmet = ((ArmorItem)player.getInventory().getArmor(3).getItem()); ArmorItem breastplace = ((ArmorItem)player.getInventory().getArmor(2).getItem()); ArmorItem leggins = ((ArmorItem)player.getInventory().getArmor(1).getItem()); ArmorItem boots = ((ArmorItem)player.getInventory().getArmor(0).getItem()); return helmet.getMaterial() == material && breastplace.getMaterial() == material && leggins.getMaterial() == material && boots.getMaterial() == material; } private boolean hasFullSuitOfArmorOn(Player player){ ItemStack helmet = player.getInventory().getArmor(3); ItemStack breastplace = player.getInventory().getArmor(2); ItemStack leggins = player.getInventory().getArmor(1); ItemStack boots = player.getInventory().getArmor(0); return !helmet.isEmpty() && !breastplace.isEmpty() && !leggins.isEmpty() && !boots.isEmpty(); } } Also when I place two effects on the same armor, the game crashes. Here is the crash file. The code is the same, only this part is different   private static final Map<ArmorMaterial, MobEffectInstance> MATERIAL_TO_EFFECT_MAP = (new ImmutableMap.Builder<ArmorMaterial, MobEffectInstance>()) .put(ModArmorMaterials.EMERALD, new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE,200, 1,false,false, true)) .put(ModArmorMaterials.EMERALD, new MobEffectInstance(MobEffects.FIRE_RESISTANCE,200, 1,false,false, true)).build(); I hope you guys can help me. Thanks.
    • I removed all related embeddium and oculus mods, i just tested it by disconnecting and the error happened again. heres the report https://pastebin.com/1kcR5wAt   EDIT: i tried removing xaeros and also smoothboot thinking there may be an issue there, nothing, heres that report too. https://pastebin.com/zQS7i9rM
    • Hi, I need suggestions. I am a beginner in Minecraft Modding. I would like to apply custom effects to some armors, something like: more chance to drop seeds, change zombie awareness, drop more pieces of wood when chopping logs, and things like that. How would you recommend me to do it, is there any library that has something similar and which ones would you recommend me?.
    • "downloading minecraft server failed, invalid Checksum. try again, or manually place server.jar to skip download"    
    • You have to create an Entity class called PlayerPart and use multiple of them to make the different parts of the player. See EnderDragonPart.java source code. The green hitboxes of the dragon are all EnderDragonParts
  • Topics

×
×
  • Create New...

Important Information

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