Jump to content

Custom Item loses its texture when created on the crafting table


Recommended Posts

Posted

When ever I create a custom item and then try to create it on the crafting table, it will be created with name:

item.null.name and the texture (image is not rendered). -it renders with just the standard "purple/black" cube

But if I do a \give [player] [modid}:item, the proper image and name appears correctly on the quick bar

 

 

 

My pre-init function

@EventHandler

    public void preInit(FMLPreInitializationEvent event)

    {

   

    /*THIS IS FINE, REGISTERING OUR ITEM  */

    ItemKey.init();

    ItemKey.register();

   

    /*Initialize our food item */

    berry  = new ItemBerry(3,0.3F,true);

    ItemBerry.init();

    ItemBerry.register();

   

   

   

    }

 

********************************************************************************

The init function's recipe method & register render, both in the init function in my main class:

The code for the recipe:

  //the custom berry was created without a crash, but I lost the item.name abd textures

    GameRegistry.addRecipe(new ItemStack(berry, 4), new Object[]{

      "A",

      "A",

      "A",

      'A', Items.apple

        });

 

also, the code to register the render:

//code for initializing your custom items - this goes in your post-init class

        if(event.getSide() == Side.CLIENT)

        {

      /*THIS IS WHERE THE PROBLEM STILL EXISTS WITH REGISTERING THE RENDERS */

      ItemKey.registerRenders(); 

     

      //register my food item

      ItemBerry.registerRenders();

       

        }

************************************************************************************       

 

 

 

The code for the berry class:

package com.lionel.ljonesmodding;

 

import net.minecraft.client.Minecraft;

import net.minecraft.client.resources.model.ModelResourceLocation;

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.item.Item;

import net.minecraft.item.ItemFood;

import net.minecraftforge.fml.common.registry.GameRegistry;

 

public class ItemBerry  extends ItemFood{

 

 

  public static Item berry;

 

  public ItemBerry(int amount, float saturation, boolean wolfFood)

  {

  super(amount,saturation,wolfFood);

  setCreativeTab(CreativeTabs.tabMisc);

  }

 

  public static void init()

  {

  berry = new Item().setUnlocalizedName("berry");

 

  }

 

  public static void register()

  {

  GameRegistry.registerItem(berry,"berry");

  }

 

  public static void registerRenders()

  {

  registerRender(berry);

  }

 

  public static void registerRender(Item myitem)

  {

  Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(myitem, 0, new ModelResourceLocation("ljonesmodding" + ":" + myitem.getUnlocalizedName().substring(5), "inventory"));

 

  }

 

}

Posted

Don't do the initialization of the item in the item class - create a new class that will hold all your items and set them in the class' constructor.

 

Like this:

public class YourModItemClass{

public static Item yourItem,anotherItem,andAnotherItem;

public YourModItemClass(){
yourItem=new YourItemClass();
}

}
[/spoiler]

 

Then you do not have to put that whole init&registering stuff in each of your custom ItemClasses which makes your code much more comfortable :)

Posted

This belongs in Modder Support, it should be moved there soon.

 

Are you definitely adding the recipe in the init phase (i.e. is the method that adds the recipe definitely handling

FMLInitializationEvent

)?

 

In your

preInit

method, you create an instance of

ItemBerry

without registering it or giving it a name. You then call

ItemBerry.init

and

ItemBerry.register

, which creates and registers an instance of

Item

with the name

"berry"

.

 

You should register models from your client proxy instead of just checking the side in your

@Mod

class. Use

ModelLoader.setCustomModelResourceLocation

/

ModelLoader.setCustomMeshDefinition

in preInit instead of the

ItemModelMesher#register

overloads in init.

 

I would highly recommend creating a dedicated class to create, register and store your items (the same goes for blocks, entities, etc.) and a dedicated class to register your block/item models. You can see an example of what I mean here: I have registration classes in

com.choonster.testmod3.init

and my models are registered in

com.choonster.testmod3.client.model.ModModelManager

(called from the client proxy).

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.

Posted

Thanks guys for your help. I refactored the code to be cleaner (like you guys suggested)  and it compiled and my Items are still showing the proper textures. However I am getting a "java.lang.NullPointerException: Rendering screen" whenever I try to create the "custom" food item from a recipe. I can do a /give .. and can get the item without a problem, it just crashes whenever I try to "addRecipe it"

 

Thanks

 

 

 

 

 

This belongs in Modder Support, it should be moved there soon.

 

Are you definitely adding the recipe in the init phase (i.e. is the method that adds the recipe definitely handling

FMLInitializationEvent

)?

 

In your

preInit

method, you create an instance of

ItemBerry

without registering it or giving it a name. You then call

ItemBerry.init

and

ItemBerry.register

, which creates and registers an instance of

Item

with the name

"berry"

.

 

You should register models from your client proxy instead of just checking the side in your

@Mod

class. Use

ModelLoader.setCustomModelResourceLocation

/

ModelLoader.setCustomMeshDefinition

in preInit instead of the

ItemModelMesher#register

overloads in init.

 

I would highly recommend creating a dedicated class to create, register and store your items (the same goes for blocks, entities, etc.) and a dedicated class to register your block/item models. You can see an example of what I mean here: I have registration classes in

com.choonster.testmod3.init

and my models are registered in

com.choonster.testmod3.client.model.ModModelManager

(called from the client proxy).

Posted

Use Gist or Pastebin to post the FML log and your code with syntax highlighting. To get syntax highlighting on Gist, give each file the appropriate extension (.java for Java code). To get syntax highlighting on Pastebin, select the language from the dropdown at the bottom of the page.

 

If you already have a repository set up for your mod on a site like GitHub/BitBucket, post that instead of using Gist/Pastebin for the code. I still need your FML log either way, though.

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.

Posted

Thanks Man.. In a nutshell here is the layout of the code (condensed), I will also include the crash report details at the end.

This is my ItemModFood.java class  ***

 

public class ItemModFood extends ItemFood{

public ItemModFood(String unLocalizedName, int healAmount,float saturationModifier,boolean wolvsFavorite)

{

super(healAmount,saturationModifier,wolvsFavorite);

this.setUnlocalizedName(unLocalizedName);

this.setCreativeTab(CreativeTabs.tabMaterials);

}

 

 

}

 

This is my ModItems.java class ***

 

public final class ModItems {

public static Item berry;

public static void createItems(){

 

//below would be to register a basic item instead

//GameRegistry.registerItem(berry = new BasicItem("berry"), "berry");

 

//let's change this to register a food item instead

GameRegistry.registerItem(berry = new ItemModFood("berry",3,0.3F,true),"berry");

}

}

 

 

This is my ItemRenderRegister class****

 

public final class ItemRenderRegister {

  public static void reg(Item myitem){

  Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(myitem, 0, new ModelResourceLocation("ljonesmodding" + ":" + myitem.getUnlocalizedName().substring(5), "inventory"));

  }

 

public static void registerItemRender(){

reg(ModItems.berry);

  }

}

 

 

 

This is my Main class details:

 

In my preInit

  @EventHandler

public void preInit(FMLPreInitializationEvent event)

    {

    ModItems.createItems();

     

    }

 

In my Init:

@EventHandler

    public void init(FMLInitializationEvent event)

    {

    GameRegistry.addRecipe(new ItemStack(berry, 4), new Object[]{

      "A",

      "A",

      "A",

      'A', Items.apple

        });

   

        if(event.getSide() == Side.CLIENT)  /*it will place this is a proxy class later  */

        {

      /*THIS IS WHERE THE PROBLEM STILL EXISTS WITH REGISTERING THE RENDERS */

      ItemKey.registerRenders(); 

     

      //register my food item

      //ItemBerry.registerRenders();

      ItemRenderRegister.registerItemRender();

       

        }

 

    }

 

Everything comes up find in regards to the texture and and item being seen in my inventory. But as I said earlier, when I try to create the Item, my game crashes with the following report:

 

---- Minecraft Crash Report ----

// This doesn't make any sense!

 

Time: 2/26/16 7:35 PM

Description: Rendering screen

 

java.lang.NullPointerException: Rendering screen

at net.minecraft.client.renderer.entity.RenderItem.renderItemOverlayIntoGUI(RenderItem.java:466)

at net.minecraft.client.gui.inventory.GuiContainer.drawSlot(GuiContainer.java:293)

at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:113)

at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:306)

at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1157)

at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1107)

at net.minecraft.client.Minecraft.run(Minecraft.java:380)

at net.minecraft.client.main.Main.main(Main.java:116)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)

at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)

at GradleStart.main(GradleStart.java:26)

 

 

A detailed walkthrough of the error, its code path and all known details is as follows:

---------------------------------------------------------------------------------------

 

-- Head --

Stacktrace:

at net.minecraft.client.renderer.entity.RenderItem.renderItemOverlayIntoGUI(RenderItem.java:466)

at net.minecraft.client.gui.inventory.GuiContainer.drawSlot(GuiContainer.java:293)

at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:113)

at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:306)

 

-- Screen render details --

Details:

Screen name: net.minecraft.client.gui.inventory.GuiCrafting

Mouse location: Scaled: (129, 96). Absolute: (387, 456)

Screen size: Scaled: (357, 249). Absolute: (1070, 745). Scale factor of 3

 

-- Affected level --

Details:

Level name: MpServer

All players: 1 total; [EntityPlayerSP['Player533'/182, l='MpServer', x=-197.16, y=64.00, z=-153.33]]

Chunk stats: MultiplayerChunkCache: 621, 621

Level seed: 0

Level generator: ID 00 - default, ver 1. Features enabled: false

Level generator options:

Level spawn location: -204.00,64.00,-160.00 - World: (-204,64,-160), Chunk: (at 4,4,0 in -13,-10; contains blocks -208,0,-160 to -193,255,-145), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1)

Level time: 226982 game time, 228176 day time

Level dimension: 0

Level storage version: 0x00000 - Unknown?

Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)

Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false

Forced entities: 76 total; [EntitySquid['Squid'/139, l='MpServer', x=-147.03, y=58.00, z=-157.59], EntityBat['Bat'/138, l='MpServer', x=-158.31, y=38.84, z=-198.75], EntitySkeleton['Skeleton'/131, l='MpServer', x=-162.47, y=37.00, z=-195.94], EntitySquid['Squid'/133, l='MpServer', x=-166.09, y=54.38, z=-159.47], EntitySquid['Squid'/132, l='MpServer', x=-166.41, y=61.75, z=-188.59], EntitySkeleton['Skeleton'/134, l='MpServer', x=-170.50, y=17.00, z=-109.50], EntitySquid['Squid'/152, l='MpServer', x=-140.19, y=59.47, z=-108.88], EntityCreeper['Creeper'/145, l='MpServer', x=-137.50, y=23.00, z=-205.00], EntityCreeper['Creeper'/147, l='MpServer', x=-139.50, y=21.00, z=-164.50], EntityItem['item.item.arrow'/148, l='MpServer', x=-137.84, y=19.00, z=-160.06], EntityItem['item.item.bone'/149, l='MpServer', x=-137.81, y=17.00, z=-162.28], EntityZombie['Zombie'/150, l='MpServer', x=-134.50, y=23.00, z=-168.50], EntitySkeleton['Skeleton'/151, l='MpServer', x=-137.59, y=19.00, z=-156.94], EntitySkeleton['Skeleton'/34, l='MpServer', x=-277.56, y=40.00, z=-189.94], EntitySkeleton['Skeleton'/35, l='MpServer', x=-273.31, y=67.00, z=-177.16], EntityCreeper['Creeper'/32, l='MpServer', x=-275.56, y=30.00, z=-209.03], EntityZombie['Zombie'/33, l='MpServer', x=-274.50, y=14.00, z=-201.09], EntitySkeleton['Skeleton'/38, l='MpServer', x=-271.44, y=49.00, z=-163.84], EntityZombie['Zombie'/36, l='MpServer', x=-263.97, y=45.00, z=-168.56], EntitySkeleton['Skeleton'/37, l='MpServer', x=-276.69, y=43.00, z=-165.88], EntitySkeleton['Skeleton'/47, l='MpServer', x=-259.50, y=64.00, z=-233.50], EntityCreeper['Creeper'/51, l='MpServer', x=-267.50, y=29.00, z=-207.50], EntityCreeper['Creeper'/50, l='MpServer', x=-271.91, y=29.00, z=-205.00], EntityCreeper['Creeper'/49, l='MpServer', x=-265.97, y=30.00, z=-209.47], EntityCreeper['Creeper'/48, l='MpServer', x=-267.94, y=29.00, z=-210.38], EntityCow['Cow'/55, l='MpServer', x=-261.50, y=69.00, z=-188.50], EntityCow['Cow'/54, l='MpServer', x=-261.50, y=69.00, z=-188.50], EntityCreeper['Creeper'/52, l='MpServer', x=-270.31, y=29.00, z=-206.91], EntityEnderman['Enderman'/59, l='MpServer', x=-253.50, y=47.00, z=-160.28], EntitySkeleton['Skeleton'/58, l='MpServer', x=-267.50, y=37.00, z=-173.50], EntitySkeleton['Skeleton'/57, l='MpServer', x=-274.50, y=43.00, z=-175.84], EntitySkeleton['Skeleton'/56, l='MpServer', x=-273.47, y=43.00, z=-176.91], EntitySquid['Squid'/63, l='MpServer', x=-253.34, y=53.41, z=-122.41], EntitySquid['Squid'/62, l='MpServer', x=-260.97, y=57.34, z=-130.19], EntitySquid['Squid'/61, l='MpServer', x=-253.19, y=61.88, z=-129.28], EntitySquid['Squid'/60, l='MpServer', x=-253.63, y=48.03, z=-131.91], EntityBat['Bat'/68, l='MpServer', x=-253.25, y=45.10, z=-160.25], EntityBat['Bat'/69, l='MpServer', x=-254.25, y=45.10, z=-157.25], EntityCreeper['Creeper'/70, l='MpServer', x=-246.94, y=42.00, z=-156.38], EntitySquid['Squid'/71, l='MpServer', x=-242.66, y=58.72, z=-128.25], EntityPlayerSP['Player533'/182, l='MpServer', x=-197.16, y=64.00, z=-153.33], EntitySkeleton['Skeleton'/67, l='MpServer', x=-248.69, y=11.00, z=-157.88], EntityCreeper['Creeper'/76, l='MpServer', x=-229.41, y=21.00, z=-193.13], EntityItem['item.item.rottenFlesh'/78, l='MpServer', x=-231.69, y=72.00, z=-182.75], EntityZombie['Zombie'/79, l='MpServer', x=-239.47, y=25.00, z=-172.06], EntitySquid['Squid'/72, l='MpServer', x=-251.16, y=50.59, z=-136.09], EntitySquid['Squid'/73, l='MpServer', x=-244.97, y=61.75, z=-94.31], EntitySkeleton['Skeleton'/87, l='MpServer', x=-219.66, y=24.00, z=-194.91], EntityZombie['Zombie'/81, l='MpServer', x=-229.53, y=21.00, z=-158.72], EntityZombie['Zombie'/80, l='MpServer', x=-235.19, y=20.00, z=-167.31], EntityCreeper['Creeper'/82, l='MpServer', x=-232.50, y=22.00, z=-82.50], EntitySkeleton['Skeleton'/93, l='MpServer', x=-210.16, y=18.00, z=-114.53], EntityZombie['Zombie'/92, l='MpServer', x=-215.56, y=18.00, z=-116.50], EntitySquid['Squid'/94, l='MpServer', x=-215.16, y=61.56, z=-120.56], EntityCreeper['Creeper'/89, l='MpServer', x=-212.00, y=28.00, z=-167.41], EntityCreeper['Creeper'/88, l='MpServer', x=-215.50, y=25.00, z=-198.50], EntitySquid['Squid'/91, l='MpServer', x=-212.45, y=61.70, z=-137.12], EntityBat['Bat'/90, l='MpServer', x=-203.94, y=17.06, z=-136.03], EntityBat['Bat'/102, l='MpServer', x=-204.69, y=52.10, z=-175.34], EntityBat['Bat'/103, l='MpServer', x=-204.09, y=52.10, z=-173.47], EntityCreeper['Creeper'/100, l='MpServer', x=-197.31, y=54.00, z=-218.97], EntitySkeleton['Skeleton'/101, l='MpServer', x=-207.78, y=27.00, z=-191.84], EntityCreeper['Creeper'/99, l='MpServer', x=-194.22, y=52.00, z=-225.97], EntityZombie['Zombie'/108, l='MpServer', x=-197.50, y=18.00, z=-121.50], EntityBat['Bat'/377, l='MpServer', x=-251.47, y=33.10, z=-186.08], EntityBat['Bat'/106, l='MpServer', x=-196.19, y=17.69, z=-142.81], EntitySkeleton['Skeleton'/107, l='MpServer', x=-194.50, y=29.00, z=-120.50], EntityBat['Bat'/104, l='MpServer', x=-204.13, y=52.10, z=-174.94], EntitySquid['Squid'/119, l='MpServer', x=-170.91, y=57.31, z=-91.59], EntitySkeleton['Skeleton'/118, l='MpServer', x=-184.09, y=18.00, z=-109.72], EntityZombie['Zombie'/117, l='MpServer', x=-181.72, y=14.00, z=-110.28], EntityBat['Bat'/116, l='MpServer', x=-180.31, y=56.91, z=-182.56], EntityBat['Bat'/115, l='MpServer', x=-183.81, y=56.75, z=-180.25], EntityBat['Bat'/114, l='MpServer', x=-187.78, y=56.00, z=-181.56], EntityBat['Bat'/113, l='MpServer', x=-186.16, y=58.10, z=-181.44], EntityBat['Bat'/112, l='MpServer', x=-185.13, y=26.00, z=-198.31]]

Retry entities: 0 total; []

Server brand: fml,forge

Server type: Integrated singleplayer server

Stacktrace:

at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:383)

at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2645)

at net.minecraft.client.Minecraft.run(Minecraft.java:401)

at net.minecraft.client.main.Main.main(Main.java:116)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)

at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)

at GradleStart.main(GradleStart.java:26)

 

-- System Details --

Details:

Minecraft Version: 1.8.9

Operating System: Mac OS X (x86_64) version 10.11.3

Java Version: 1.7.0_80, Oracle Corporation

Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation

Memory: 733602128 bytes (699 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)

JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M

IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94

FML: MCP 9.19 Powered by Forge 11.15.1.1756 5 mods loaded, 5 mods active

States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

UCHIJAAAA mcp{9.19} [Minecraft Coder Pack] (minecraft.jar)

UCHIJAAAA FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8.9-11.15.1.1756.jar)

UCHIJAAAA Forge{11.15.1.1756} [Minecraft Forge] (forgeSrc-1.8.9-11.15.1.1756.jar)

UCHIJAAAA examplemod{1.0} [Example Mod] (bin)

UCHIJAAAA ljonesmodding{1.0} [ljonesCustomMods] (bin)

Loaded coremods (and transformers):

Launched Version: 1.8.9

LWJGL: 2.9.2

OpenGL: Intel HD Graphics 4000 OpenGL Engine GL version 2.1 INTEL-10.12.13, Intel Inc.

GL Caps: Using GL 1.3 multitexturing.

Using GL 1.3 texture combiners.

Using framebuffer objects because ARB_framebuffer_object is supported and separate blending is supported.

Shaders are available because OpenGL 2.1 is supported.

VBOs are available because OpenGL 1.5 is supported.

 

Using VBOs: No

Is Modded: Definitely; Client brand changed to 'fml,forge'

Type: Client (map_client.txt)

Resource Packs:

Current Language: English (US)

Profiler Position: N/A (disabled)

CPU: 4x Intel® Core i7-3667U CPU @ 2.00GHz

 

 

 

 

 

Posted

In future, please use one of the paste/code hosting sites I linked in my previous post instead of putting your code directly in your post. It's much easier to read code with proper formatting and syntax highlighting.

 

This crash happened because Minecraft tried to render an

ItemStack

with a

nul

Item

. I suspect that this is because your recipe uses the

Main.berry

field (which is never initialised) instead of

ModItems.berry

.

 

I would also recommend moving your recipes to a dedicated class.

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.

Posted

THANK YOU ..THANK YOU.. THANK YOU...!! that worked... you rock man. trying to learn modding from those teach yourself Mod development books from amazon and google books only gives you basic code (and it's always a couple of versions off) can really be a headache. They give you concepts.. basic code, but the real education from from you guys..

 

Thanks again man for all of your help, I have driving myself crazy on this issue for a week .. (now I can sleep -:))

 

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



×
×
  • Create New...

Important Information

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