Jump to content

Recommended Posts

Posted

good

days

long ago i post this same question but let it behind unsolved for

things

 

create this 3d item and make it animated swiching json files,  when aim this drill at a block it begins to goin down and up like crazy, and thats anoing, worst is to see it  in  hand guns.

 

 

in this video if aim the drill to a block it begins to bounse but aiming to air works well, the shotgun goes down when shoot and its not suppouse to goin down when shoot , if aiming to a block it bounse mad as well. 

 

if i dont use playerIn.setItemInUse()  and EnumAction it swings even when aiming to air. 

Using the bow EnumAction,  i like the way it looks in thirth view but is shitti in first person, the animation stop until getMaxItemUseDuration() run out of time and restart

   

so help

how i stop the swing animations at item rigth click ?

the use i been using of playerIn.setItemInUse() is rigth? or Unnecessary

 

 

this is mi code i been geting the tics to switch the animations from the getModel() method to avoid mesing whith onUpdate() method and events

 


package mercenarymod.items.herraminetas;

import mercenarymod.materialesMercenarios;
import mercenarymod.Mercenary;
import net.minecraft.block.Block;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IChatComponent;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import mercenarymod.blocks.MercenaryModBlocks;
import mercenarymod.items.MercenaryModItems;
import mercenarymod.utilidades.chat;
import mercenarymod.utilidades.nbtMercenaria;

import java.lang.Math;
import java.util.ArrayList;
import java.util.List;


import mercenarymod.utilidades.util;



//############################################################################3
public class drillMercenario extends ItemPickaxe{

public static String name = "drillMercenario";

boolean giro=false;

int munitionMax=0;
static int munitionMax0=64;

int tick=0;
int textura;

boolean continuar=false;


public static ArrayList<Integer> coor0 = new ArrayList<Integer>(); 
public static final PropertyDirection FACING = PropertyDirection.create("facing");

//############################################################################3
public drillMercenario(){
super(materialesMercenarios.carbono_carbono());

setUnlocalizedName(Mercenary.MODID + "_" + name);
GameRegistry.registerItem(this, name);
setCreativeTab(Mercenary.herramientas);
this.maxStackSize = 1;
}


//######################################################################################3	
 @Override
public ModelResourceLocation getModel(ItemStack drill, EntityPlayer playerIn, int useRemaining){

ModelResourceLocation modelresourcelocation = new ModelResourceLocation("modmercenario:herramientas/drill/drillMercenario_04", "inventory");	 
animation(drill, playerIn,tick);

if ((tick%10)==0){

boolean animation=nbtMercenaria.getBooleantag(drill, "animation");
//System.out.println("animation="+animation);

if(!animation){
//animation(drill, playerIn,tick);
//textura=nbtMercenaria.getInttag(drill, "textura");

giro=false;

}
}

System.out.println("textura="+textura);
switch(textura){
    default:modelresourcelocation = new ModelResourceLocation("modmercenario:herramientas/drill/drillMercenario", "inventory") ;break;
case 1:modelresourcelocation = new ModelResourceLocation("modmercenario:herramientas/drill/drillMercenario_00", "inventory") ;break;
case 2:modelresourcelocation = new ModelResourceLocation("modmercenario:herramientas/drill/drillMercenario_01", "inventory") ; break;	
case 3:modelresourcelocation = new ModelResourceLocation("modmercenario:herramientas/drill/drillMercenario_02", "inventory") ;break;
case 4:modelresourcelocation = new ModelResourceLocation("modmercenario:herramientas/drill/drillMercenario_03", "inventory") ;break;        
case 5:modelresourcelocation = new ModelResourceLocation("modmercenario:herramientas/drill/drillMercenario_04", "inventory") ;break;        
                }



tick++;
if (tick>100){tick=0;nbtMercenaria.setBooleantag(drill, "animation",false);}
  	return modelresourcelocation;
  	
	}

//####################################################################################3	
void animation(ItemStack drill, EntityPlayer playerIn,int tick){	 

 if (giro){
 System.out.println("Giro="+tick);	 
 switch (tick){
 case 0: case 12: case 49:  textura=1;break;
 case 3: case 15: case 46:  textura=2;break;
 case 6: case 18: case 43:  textura=3;break;
 case 9: case 21: case 40:  textura=4;break;

 case 23: textura=5;break;

 case 33: if(continuar){this.tick=22;continuar=false;}break;

 case 52: textura=0;this.tick=0;nbtMercenaria.setBooleantag(drill, "animation",false);giro=false;break;
          }   }




}

//####################################################################################3		 
void inicializar(ItemStack drill){  //this do nothing for now

int munition=0;
int metadata=drill.getMetadata();

switch(metadata){
case 1: munition=munitionMax0/2;break;
case 2: munition=munitionMax0;break;
default:munition=0;break;
            	}

nbtMercenaria.setInttag(drill, "munition", munition);
nbtMercenaria.setBooleantag(drill, "animation", false);
nbtMercenaria.setBooleantag(drill, "liberar", false);
nbtMercenaria.setInttag(drill, "bulletClip", 0);
nbtMercenaria.setInttag(drill, "textura", 0);			


}
//####################################################################################3	 


public ItemStack onItemRightClick(ItemStack drill, World worldIn, EntityPlayer playerIn){


System.out.println("onItemRightClick");
playerIn.setItemInUse(drill, this.getMaxItemUseDuration(drill));

boolean animation=nbtMercenaria.getBooleantag(drill, "animation");	
if (!animation){	

System.out.println("if (!animation)");	
playerIn.setItemInUse(drill, this.getMaxItemUseDuration(drill));
int munition=nbtMercenaria.getInttag(drill,"munition");	

//if (munition>0){}


giro=true;
tick=0;
nbtMercenaria.setBooleantag(drill, "animation", true);
System.out.println("\n\n acivar");
	            
                }     


if (animation & giro){
continuar=true;	
                   	 }	


return drill;}
//############################################################################3
public int getMaxItemUseDuration(ItemStack stack)
{
    return 1;
}

public EnumAction getItemUseAction(ItemStack stack)
{
    return EnumAction.NONE;
}

//######################################################################################3	
@SideOnly(Side.CLIENT)
  public void addInformation(ItemStack drill, EntityPlayer player, List list, boolean aBoolean)
  {
int munition=nbtMercenaria.getInttag(drill, "munition");	

if((munition>9998)||(munition<0)){  //inicializar
	int metadata=drill.getMetadata();

	switch(metadata){
	case 1: munition=munitionMax0/2;break;
	case 2: munition=munitionMax0;break;
	default:munition=0;break;
	            	}

                                 }

String lore="redstone="+munition;	
String lore0="requiere suspencion de redstone para funcionar";

if(lore != "")
     {
        list.add(lore);
        list.add(lore0);
     }
  }

}//fin de la classe 

 

 

  • 7 months later...
Posted

Hello everyone!

I found a very simple solution to this problem that has bothered me too.

In the class "ItemRender.java" in method "updateEquippedItem()" is an assignment to a variable named flag

flag = this.equippedItemSlot == entityclientplayermp.inventory.currentItem && itemstack == this.itemToRender;

To solve this problem, just replace that line with this

boolean flag;
if(itemstack == null) {
flag = this.equippedItemSlot == entityclientplayermp.inventory.currentItem && itemstack == this.itemToRender;
} else {
flag = this.equippedItemSlot == entityclientplayermp.inventory.currentItem && itemstack.itemID == this.itemToRender.itemID;
}

It worked, I'm using version 1.5.2.

 

Posted

As said in the other post you posted on a old topic, your code is for 1.5. Now you can do it with Forge hooks. Nobody wants your code which they can't even use. It is for a MC version almost nobody uses anymore. And you posted on a topic made in February! Don't revive old threads like these anymore.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

Well, if you are using the latest build of Forge (or close to it) for 1.8, you can utilize the fix LexManos implemented a little while ago. Just override the method shouldCauseReequipAnimation() in your classes of the Item type and simply return false.

Development of Plugins [2012 - 2014] Development of Mods [2012 - Current]

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.