Jump to content

[1.8] dissable rigthclick item swing animation What i doing wrong ?


perromercenary00

Recommended Posts

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 

 

 

Link to comment
Share on other sites

  • 7 months later...

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.

 

Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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]

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

    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
    • It is an issue with quark - update it to this build: https://www.curseforge.com/minecraft/mc-mods/quark/files/3642325
    • Remove Instant Massive Structures Mod from your server     Add new crash-reports with sites like https://paste.ee/  
    • Update your drivers: https://www.amd.com/en/support/graphics/amd-radeon-r9-series/amd-radeon-r9-200-series/amd-radeon-r9-280x
  • Topics

×
×
  • Create New...

Important Information

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