- 149
- 1
- 2
Сделал рендер предмету, но как бы не так, майн шлет нахер и крашит. По идее все сделал правильно.
public class DarkStaff extends Item{
public DarkStaff(int par1) {
super(par1);
this.setCreativeTab(langrisser_Mod.langrisserTab);
MinecraftForgeClient.registerItemRenderer(this.itemID, new DSRenderer());
this.setMaxStackSize(1);
this.setFull3D();
this.setMaxDamage(50000);
final String modid = "LangrisserMod";
this.setTextureName(modid + ":darkStaff");
this.canRepair = false;
}
public void onUpdate(ItemStack stack, World world, EntityPlayer ep, int par1, boolean par2){
Minecraft mc = Minecraft.getMinecraft();
}
public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
return par1ItemStack;
}
/**
* How long it takes to use or consume an item
*/
public int getMaxItemUseDuration(ItemStack par1ItemStack)
{
return 72000;
}
/**
* returns the action that specifies what animation to play when the items is being used
*/
public EnumAction getItemUseAction(ItemStack par1ItemStack)
{
return EnumAction.bow;
}
public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack);
MinecraftForge.EVENT_BUS.post(event);
if (event.isCanceled())
{
return event.result;
}
par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack));
EntityArrow entityarrow = new EntityArrow(par2World, par3EntityPlayer, 2.0F);
par2World.spawnEntityInWorld(entityarrow);
return par1ItemStack;
}
}
public DarkStaff(int par1) {
super(par1);
this.setCreativeTab(langrisser_Mod.langrisserTab);
MinecraftForgeClient.registerItemRenderer(this.itemID, new DSRenderer());
this.setMaxStackSize(1);
this.setFull3D();
this.setMaxDamage(50000);
final String modid = "LangrisserMod";
this.setTextureName(modid + ":darkStaff");
this.canRepair = false;
}
public void onUpdate(ItemStack stack, World world, EntityPlayer ep, int par1, boolean par2){
Minecraft mc = Minecraft.getMinecraft();
}
public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
return par1ItemStack;
}
/**
* How long it takes to use or consume an item
*/
public int getMaxItemUseDuration(ItemStack par1ItemStack)
{
return 72000;
}
/**
* returns the action that specifies what animation to play when the items is being used
*/
public EnumAction getItemUseAction(ItemStack par1ItemStack)
{
return EnumAction.bow;
}
public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack);
MinecraftForge.EVENT_BUS.post(event);
if (event.isCanceled())
{
return event.result;
}
par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack));
EntityArrow entityarrow = new EntityArrow(par2World, par3EntityPlayer, 2.0F);
par2World.spawnEntityInWorld(entityarrow);
return par1ItemStack;
}
}
public class DSRenderer implements IItemRenderer{
public IModelCustom model;
public DSRenderer(){
model = AdvancedModelLoader.loadModel("/cool/langrisserMod/obj/items/darkStaff.obj");
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
switch (type){
case EQUIPPED:
return true;
case EQUIPPED_FIRST_PERSON:
return true;
default:
return false;
}
}
public boolean handleRenderType(Item item, IItemRenderer.ItemRenderType type){
return (IItemRenderer.ItemRenderType.EQUIPPED == type || IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON == type);
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return false;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
switch (type){
case EQUIPPED:
case EQUIPPED_FIRST_PERSON:
{
GL11.glPushMatrix();
boolean isFirstPerson = false;
if(data[1] ==null & data[1] instanceof EntityPlayer){
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("langrissermod", "textures/models/darkStaff.png"));
if(!((EntityPlayer)data[1] == Minecraft.getMinecraft().renderViewEntity) && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && !(Minecraft.getMinecraft().currentScreen instanceof GuiInventory || Minecraft.getMinecraft().currentScreen instanceof GuiContainerCreative) && RenderManager.instance.playerViewY == 180.0F){
GL11.glTranslatef(1, 1, 1);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glScalef(1, 2, 3);
}
else{
isFirstPerson = true;
GL11.glTranslatef(0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glScalef(1, 1, 1);
}
GL11.glScalef(0.32F, 0.32F, 0.21F);
model.renderAll();
GL11.glPopMatrix();
}
}
default:
break;
}
}
}
public IModelCustom model;
public DSRenderer(){
model = AdvancedModelLoader.loadModel("/cool/langrisserMod/obj/items/darkStaff.obj");
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
switch (type){
case EQUIPPED:
return true;
case EQUIPPED_FIRST_PERSON:
return true;
default:
return false;
}
}
public boolean handleRenderType(Item item, IItemRenderer.ItemRenderType type){
return (IItemRenderer.ItemRenderType.EQUIPPED == type || IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON == type);
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return false;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
switch (type){
case EQUIPPED:
case EQUIPPED_FIRST_PERSON:
{
GL11.glPushMatrix();
boolean isFirstPerson = false;
if(data[1] ==null & data[1] instanceof EntityPlayer){
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("langrissermod", "textures/models/darkStaff.png"));
if(!((EntityPlayer)data[1] == Minecraft.getMinecraft().renderViewEntity) && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && !(Minecraft.getMinecraft().currentScreen instanceof GuiInventory || Minecraft.getMinecraft().currentScreen instanceof GuiContainerCreative) && RenderManager.instance.playerViewY == 180.0F){
GL11.glTranslatef(1, 1, 1);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glScalef(1, 2, 3);
}
else{
isFirstPerson = true;
GL11.glTranslatef(0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glRotatef(0, 0, 0, 0);
GL11.glScalef(1, 1, 1);
}
GL11.glScalef(0.32F, 0.32F, 0.21F);
model.renderAll();
GL11.glPopMatrix();
}
}
default:
break;
}
}
}