Jump to content

[1.8] (SOLVED) Making an item throw able


GenFrogKing

Recommended Posts

Ok, so I've been trying to make this simple rock throwable.  My problem is this: Why isn't it working?  :o

 

Here's my code thus far:

 

Mod Class:

package genfrogking.supercraft;

import genfrogking.supercraft.init.SupercraftBlocks;
import genfrogking.supercraft.init.SupercraftEntities;
import genfrogking.supercraft.init.SupercraftItems;
import genfrogking.supercraft.init.SupercraftRecipes;
import genfrogking.supercraft.proxy.CommonProxy;
import genfrogking.supercraft.worldGen.WorldRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION)
public class SupercraftMod {

@SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS)
public static CommonProxy proxy;

public static final SupercraftTab tabSupercraft = new SupercraftTab("tabSupercraft");

@EventHandler
// This is called when Forge is setting up.
public void preInit(FMLPreInitializationEvent PreEvent)
{
	// Object init and registering
	// Config handling
	SupercraftBlocks.init();
	SupercraftBlocks.register();
	SupercraftItems.init();
	SupercraftItems.register();
	SupercraftEntities.init();
	SupercraftEntities.register();
	SupercraftRecipes.addRecipes();
	WorldRegister.MainRegistry();
}

@EventHandler
public void Init(FMLInitializationEvent Event)
{
	// Proxy, TileEntity, entity, GUI, Sounds, Packet Registering
	proxy.registerRenders();
	proxy.registerSounds();
}

@EventHandler
public void PostInit(FMLPostInitializationEvent PostEvent)
{

}
}

 

Entities Class:

package genfrogking.supercraft.init;

import genfrogking.supercraft.Reference;
import genfrogking.supercraft.client.renderer.entity.RenderStoneRock;
import genfrogking.supercraft.init.entity.projectile.EntityStoneRock;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderSnowball;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.world.World;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.registry.EntityRegistry;

public class SupercraftEntities 
{
public static Entity stone_rock;

public static void init()
{

}

public static void register()
{
	EntityRegistry.registerModEntity(EntityStoneRock.class, "stone_rock", 4, 0, 80, 3, true);
}

public static void registerRenders()
{
	RenderingRegistry.registerEntityRenderingHandler(EntityStoneRock.class, new RenderStoneRock(stone_rock));
}

public static void registerRender(Entity entity)
{

}
}

 

In that last class, Eclipse is throwing a red flag on line 30 (where I start with RenderingRegistry) and is underlining RenderStoneRock(stone_rock) as the problem source at the moment.  It says that there is no constructor that takes the same parameters which is true; I'm guessing things changed in 1.8.  (I've been following a 1.7.10- tutorial on throwable items).  Here is the RenderStoneRock class.

 

RenderStone Rock class:

 

package genfrogking.supercraft.client.renderer.entity;

import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.Entity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class RenderStoneRock extends Render
{
protected final Item something;
private final RenderItem somethingElse;
private static final String  reallyDontKnow = "someString";

public RenderStoneRock(RenderManager renderManager, Item item, RenderItem renderItem)
{
	super(renderManager);
	this.something = item;
	this.somethingElse = renderItem;
}

public ItemStack func_177082_d(Entity entity)
{
	return new ItemStack(this.something, 1, 0);
}

    public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float partialTicks)
    {
        GlStateManager.pushMatrix();
        GlStateManager.translate((float)x, (float)y, (float)z);
        GlStateManager.enableRescaleNormal();
        GlStateManager.scale(0.5F, 0.5F, 0.5F);
        GlStateManager.rotate(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
        GlStateManager.rotate(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
        this.bindTexture(TextureMap.locationBlocksTexture);
        this.somethingElse.renderItemModel(this.func_177082_d(entity));
        GlStateManager.disableRescaleNormal();
        GlStateManager.popMatrix();
        super.doRender(entity, x, y, z, p_76986_8_, partialTicks);
    }

@Override
protected ResourceLocation getEntityTexture(Entity entity) 
{
	return null;
        //return TextureMap.locationBlocksTexture;
}

}

 

So the RenderStoneRock() method now takes three objects.  How do I account for these in my Entities class file?

 

I can provide more code of what's going on in my other class files if need be.  However, since the red flag is in the Entities class, I'm guessing once that's solved, it will work.

Link to comment
Share on other sites

Thanks for the reply.  Upon getting the RenderManager, the error disappeared.

 

However, the item is still not rendering upon right clicking.  In fact, only while I'm in creative mode does my avatar's arm twitch at all.  I've scanned and compared my Item's class to other's.  I can't seem to find an error.

 

Stone Rock Entity class:

 

package genfrogking.supercraft.entity.projectile;

import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.passive.EntityTameable;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityThrowable;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;

public class EntityStoneRock extends EntityThrowable
{
private int randomTilt;

public EntityStoneRock(World worldIn)
{
	super(worldIn);
	randomTilt = rand.nextInt(360);
}

public EntityStoneRock(World worldIn, EntityLivingBase entity)
{
	super(worldIn, entity);
	randomTilt = rand.nextInt(360);
}

public EntityStoneRock(World worldIn, double x, double y, double z)
{
	super(worldIn, x, y, z);
	randomTilt = rand.nextInt(360);
}

public int getRandomTilt()
{
	return randomTilt;
}

public void setRandomTilt(int angle)
{
	randomTilt = angle;
}

private void InflictDamage(MovingObjectPosition movingObjectPos)
{
	movingObjectPos.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), 1);
}

private void DestroySelf()
{
	this.setDead();
}

protected void onImpact(MovingObjectPosition movingObjectPos)
{
	if (movingObjectPos.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
	{
		Block block = this.worldObj.getBlockState(movingObjectPos.getBlockPos()).getBlock();

		if(block == Blocks.tallgrass || block == Blocks.vine || block == Blocks.red_flower || block == Blocks.yellow_flower || block == Blocks.brown_mushroom_block || block == Blocks.red_mushroom || block == Blocks.reeds || block == Blocks.double_plant || block == Blocks.deadbush || block == Blocks.brown_mushroom_block || block == Blocks.wheat || block == Blocks.waterlily || block == Blocks.carrots || block == Blocks.potatoes || block == Blocks.snow_layer)
		{
			BlockPos blockPos = movingObjectPos.getBlockPos();
			IBlockState blockstate = this.worldObj.getBlockState(blockPos);
			TileEntity tile_entity = this.worldObj.getTileEntity(blockPos);

			if(this.getThrower() instanceof EntityPlayer)
			{
				EntityPlayer player = (EntityPlayer)this.getThrower();
				this.worldObj.destroyBlock(blockPos, false);
				block.harvestBlock(this.worldObj, player, blockPos, blockstate, tile_entity); //allows blocks to drop the items they would normally drop if harvested with a tool
			}
			else if(this.getThrower() instanceof EntityTameable)
			{
				EntityTameable tameableEntity = (EntityTameable)this.getThrower();
				if(tameableEntity != null && tameableEntity.isTamed())
				{
					EntityPlayer player = (EntityPlayer)tameableEntity.getOwner();

					if(player != null)
					{
						this.worldObj.destroyBlock(blockPos, false);
						block.harvestBlock(this.worldObj, player, blockPos, blockstate, tile_entity);
					}
				}
			}
		}
		else
		{
			this.DestroySelf();
		}
	}
	else
	{
		if (movingObjectPos.entityHit != null)
		{
			if(this.getThrower() instanceof EntityPlayer)
			{
				this.InflictDamage(movingObjectPos);
			}
			else if(this.getThrower() instanceof EntityTameable)
			{
				//ensures other tameable creatures will not be hurt by stray thrown rocks thrown by an Entity
				if(movingObjectPos.entityHit instanceof EntityTameable)
				{
					EntityTameable tameableEntity = (EntityTameable)movingObjectPos.entityHit;
					if(tameableEntity != null && !tameableEntity.isTamed())
					{
						this.InflictDamage(movingObjectPos);
					}
				}
				//ensures other players will not be harmed by a tameable creatures thrown rocks!
				else if((movingObjectPos.entityHit instanceof EntityPlayer) == false)
				{
					this.InflictDamage(movingObjectPos);
				}
			}

			this.DestroySelf();
		}
	}
}
}

 

 

I really don't think the problem is in this class, but rather in the way I'm handling the rendering of the entity.  The problem must still lie in one of my main mod classes.  :P

 

Main mod class:

 

package genfrogking.supercraft;

import genfrogking.supercraft.creativetab.SCCreativeTabs;
import genfrogking.supercraft.proxy.CommonProxy;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = Main.MOD_ID, name = Main.MOD_NAME, version = Main.VERSION, dependencies="required-after:FML")
public class Main {

public static final String MOD_ID = "sc";
public static final String MOD_NAME = "Supercraft Mod";
public static final String VERSION = "1.0";
public static final String CLIENT_PROXY_CLASS = "genfrogking.supercraft.proxy.ClientProxy";
public static final String SERVER_PROXY_CLASS = "genfrogking.supercraft.proxy.ServerProxy";

@Instance(value = MOD_ID)
public static Main instance;

@SidedProxy(modId= MOD_ID, clientSide = Main.CLIENT_PROXY_CLASS, serverSide = Main.SERVER_PROXY_CLASS)
public static CommonProxy proxy;

public static final SCCreativeTabs tabSupercraft = new SCCreativeTabs("tabSupercraft");

@EventHandler
public void preInit(FMLPreInitializationEvent PreEvent)
{
	proxy.preInit(PreEvent);
}

@EventHandler
public void Init(FMLInitializationEvent Event)
{
	proxy.registerRenders();
	proxy.Init(Event);
}

@EventHandler
public void PostInit(FMLPostInitializationEvent PostEvent)
{
	proxy.PostInit(PostEvent);
}
}

 

 

Common Proxy class:

 

package genfrogking.supercraft.proxy;

import genfrogking.supercraft.init.SupercraftBlocks;
import genfrogking.supercraft.init.SupercraftEntities;
import genfrogking.supercraft.init.SupercraftItems;
import genfrogking.supercraft.init.SupercraftRecipes;
import genfrogking.supercraft.worldGen.WorldRegister;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class CommonProxy
{
public void preInit(FMLPreInitializationEvent PreEvent)
{
	SupercraftBlocks.init();
	SupercraftBlocks.register();
	SupercraftItems.init();
	SupercraftItems.register();
	SupercraftEntities.init();
	SupercraftEntities.register();
	SupercraftRecipes.addRecipes();
	WorldRegister.MainRegistry();
}

public void Init(FMLInitializationEvent Event)
{

}

public void PostInit(FMLPostInitializationEvent PostEvent)
{

}

public void registerRenders() 
{

}

public void registerSounds()
{

}
}

 

 

Server Proxy Class:

 

package genfrogking.supercraft.proxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ServerProxy extends CommonProxy
{
@Override
public void preInit(FMLPreInitializationEvent PreEvent)
{
	super.preInit(PreEvent);
}

@Override
public void Init(FMLInitializationEvent Event)
{
	super.Init(Event);
}

@Override
public void PostInit(FMLPostInitializationEvent PostEvent)
{
	super.PostInit(PostEvent);
}

@Override
public void registerRenders()
{

}

@Override
public void registerSounds()
{

}
}

 

 

Client Proxy Class:

 

package genfrogking.supercraft.proxy;

import genfrogking.supercraft.init.SupercraftBlocks;
import genfrogking.supercraft.init.SupercraftEntities;
import genfrogking.supercraft.init.SupercraftItems;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy extends CommonProxy
{
@Override
public void preInit(FMLPreInitializationEvent PreEvent)
{
	super.preInit(PreEvent);
}

@Override
public void Init(FMLInitializationEvent Event)
{
	super.Init(Event);
}

@Override
public void PostInit(FMLPostInitializationEvent PostEvent)
{
	super.PostInit(PostEvent);
}

@Override
public void registerRenders()
{
	SupercraftBlocks.registerRenders();
	SupercraftItems.registerRenders();
	SupercraftEntities.registerRenders();
}

@Override
public void registerSounds()
{

}
}

 

 

Entities Class:

 

package genfrogking.supercraft.init;

import genfrogking.supercraft.Main;
import genfrogking.supercraft.client.renderer.entity.RenderStoneRock;
import genfrogking.supercraft.entity.projectile.EntityStoneRock;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.registry.EntityRegistry;

public class SupercraftEntities 
{			
public static void init()
{

}

public static void register()
{
	EntityRegistry.registerModEntity(EntityStoneRock.class, "stone_rock", 4, Main.instance, 80, 3, true);
}

public static void registerRenders()
{
	RenderingRegistry.registerEntityRenderingHandler(EntityStoneRock.class, new RenderStoneRock(Minecraft.getMinecraft().getRenderManager()));
}

public static void registerRender(Block block)
{

}
}

 

 

Stone Rock Item:

 

package genfrogking.supercraft.item;

import genfrogking.supercraft.entity.projectile.EntityStoneRock;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class ItemStoneRock extends Item
{
public ItemStoneRock()
{
	this.setMaxStackSize(16);
}

public boolean canHarvestBlock(Block blockIn)
{
	return false;
}

public boolean getIsRepairable(ItemStack toRepair,ItemStack repair)
{
	return false;
}

public ItemStack onRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn)
{
	if (!playerIn.capabilities.isCreativeMode)
        {        	
		--itemStackIn.stackSize;
        }
        
	playerIn.swingItem();
	playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn));
        worldIn.playSoundAtEntity(playerIn, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));

        if (!worldIn.isRemote)
        {
        	//worldIn.spawnEntityInWorld(new EntitySnowball(worldIn, playerIn));
        	EntityStoneRock stone_rock = new EntityStoneRock(worldIn, playerIn);
        	stone_rock.motionX *= 2;
        	stone_rock.motionY *= 2;
        	stone_rock.motionZ *= 2;
        	worldIn.spawnEntityInWorld(stone_rock);
        }
        
	return itemStackIn;
}
}

 

 

Any help is greatly appreciated!

Link to comment
Share on other sites

Thank you very much for the replies!

 

Okay, so upon searching for onRightClick in Item class, I discovered that it didn't exist.  I scrolled down and found onItemRightClick.  Quite a silly blunder!  :o  I bet you guys saw it and were just waiting to see how long it would take me.  ;)  I also commented out the part TrashCaster mentioned.  The rock is mostly throw-able now.

 

However, now my rock isn't rendering properly.  It's just a black and purple checker box when it leaves the character's hands.  It probably has something to do with the Entities class.  I suspect I'm registering the renders wrong.  It also could very well have something to do with the way my proxies relate to the Main class.

 

Either way, somehow RenderStoneRock isn't being called right.  I'm troubleshooting, but will have more time this coming weekend to really look into it if I don't solve it tonight.

Link to comment
Share on other sites

Thank you very much for the replies!

 

Okay, so upon searching for onRightClick in Item class, I discovered that it didn't exist.  I scrolled down and found onItemRightClick.  Quite a silly blunder!  :o  I bet you guys saw it and were just waiting to see how long it would take me.  ;)  I also commented out the part TrashCaster mentioned.  The rock is mostly throw-able now.

 

However, now my rock isn't rendering properly.  It's just a black and purple checker box when it leaves the character's hands.  It probably has something to do with the Entities class.  I suspect I'm registering the renders wrong.  It also could very well have something to do with the way my proxies relate to the Main class.

 

Either way, somehow RenderStoneRock isn't being called right.  I'm troubleshooting, but will have more time this coming weekend to really look into it if I don't solve it tonight.

If it's rendering a purple and black checker box, that means it cannot find the texture..
Link to comment
Share on other sites

Thank you very much for the replies!

 

Okay, so upon searching for onRightClick in Item class, I discovered that it didn't exist.  I scrolled down and found onItemRightClick.  Quite a silly blunder!  :o  I bet you guys saw it and were just waiting to see how long it would take me.  ;)  I also commented out the part TrashCaster mentioned.  The rock is mostly throw-able now.

This is exactly why you should ALWAYS use the @Override annotation on any inherited method - it will tell you right away in your IDE that the method does not exist if the signature is incorrect, which you fix not by removing @Override, but by finding the correct method signature ;)

Link to comment
Share on other sites

Hey, thanks all again for the replies.

 

If it's rendering a purple and black checker box, that means it cannot find the texture..

 

If what you're saying is true, then the problem should be in how I'm calling the texture in my Render class, right?

 

RenderStoneRock class:

 

package genfrogking.supercraft.client.renderer.entity;

import genfrogking.supercraft.entity.projectile.EntityStoneRock;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

public class RenderStoneRock extends Render
{
public RenderStoneRock(RenderManager renderManager) 
{
	super(renderManager);
}

private static final ResourceLocation stoneRockTexture = new ResourceLocation("textures/items/stone_rock.png");

protected ResourceLocation getEntityTexture(EntityStoneRock rock)
{
	return stoneRockTexture;
}

protected ResourceLocation getEntityTexture(Entity entity) 
{
	return this.getEntityTexture((EntityStoneRock)entity);
}

public void doRender(Entity entity, double transX, double transY, double transZ, float param5, float dir)
{
	this.doRender((EntityStoneRock)entity, transX, transY, transZ, param5, dir);
}

public void doRender(EntityStoneRock rock, double transX, double transY, double transZ, float param5, float dir)
{
	this.bindEntityTexture(rock);
	GlStateManager.color(1.0F, 1.0F, 1.0F);
	GlStateManager.pushMatrix();
	GlStateManager.translate((float)transX, (float)transY, (float)transZ);
	GlStateManager.rotate(rock.prevRotationYaw + (rock.rotationYaw - rock.prevRotationYaw) * dir - 90.0F, 0.0F, 1.0F, 0.0F);
	GlStateManager.rotate(rock.getRandomTilt(), 1.0F, 0.0F, 0.0F);
	Tessellator tessellator = Tessellator.getInstance();
	WorldRenderer worldRenderer = tessellator.getWorldRenderer();
	GlStateManager.enableRescaleNormal();
	float scale = 0.5F;
	GlStateManager.scale(scale, scale, scale);
	GL11.glNormal3f(0.0F, 0.0F, scale);

	worldRenderer.startDrawingQuads();
	worldRenderer.addVertexWithUV(-2.0D, -2.0D, 0.0D, 0, 0);
	worldRenderer.addVertexWithUV(2.0D, -2.0D, 0.0D, 1, 0);
	worldRenderer.addVertexWithUV(2.0D, 2.0D, 0.0D, 1, 1);
	worldRenderer.addVertexWithUV(-2.0D, 2.0D, 0.0D, 0, 1);
	tessellator.draw();

	GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F);

	worldRenderer.startDrawingQuads();
	worldRenderer.addVertexWithUV(-2.0D, -2.0D, 0.0D, 0, 0);
	worldRenderer.addVertexWithUV(2.0D, -2.0D, 0.0D, 1, 0);
	worldRenderer.addVertexWithUV(2.0D, 2.0D, 0.0D, 1, 1);
	worldRenderer.addVertexWithUV(-2.0D, 2.0D, 0.0D, 0, 1);
	tessellator.draw();

	GlStateManager.disableRescaleNormal();
	GlStateManager.popMatrix();

	super.doRender(rock, transX, transY, transZ, param5, dir);
}
}

 

 

Upon putting an Override annotation on the first getEntityTexture method, I receive an error stating that that specific method is nonexistent in the extended class for the given parameters.  That should be fine for custom methods, though... right?  I tested this class with several System.out.println's and I know for a fact that everything here is being called including this unrecognized method.

 

However, there is an error upon "throwing" the rock:

 

 

[03:33:00] [Client thread/WARN]: Failed to load texture: minecraft:textures/items/stone_rock.png

java.io.FileNotFoundException: minecraft:textures/items/stone_rock.png

 

 

It would appear you're right, gegy1000.  I've tried modifying the load path with no success thus far.  I'm sure it's something simple from here, though.  I'm investigating.

 

Or use your IDE to override for you in the first place ;)

 

Alright, alright, you caught me again, but I thought you said Eclipse didn't offer automated overriding... ;)

Link to comment
Share on other sites

I am not going into the Eclipse vs IntelliJ discussion, but Source > Override/Implement Methods sucks when you have Ctrl-O :P

 

Lol, I don't wish a heated debate this early in my Java career.

 

For your error, you forgot your ModID in the ResourceLocation.

 

Included it, but still no go.

 

private static final ResourceLocation stoneRockTexture = new ResourceLocation(Main.MOD_ID + "/textures/items/stone_rock.png");

 

Hmmmm...  :-\

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.

×
×
  • Create New...

Important Information

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