Jump to content

[1.8] Item Animation help, get switch animation disable!


perromercenary00

Recommended Posts

good nigths

 

this is little hard topic to explain, english is not mi native languague but event in espanish is hard to explain,

 

vainilla minecraft has a custom animation on the items when you switch items , i dont know how is called ill named it  "switch animation" 

you has a ironsword in the first slot of the hotbar then you change to the second slot that has an apple  so minecraft do animated in way the iron sword moves down and then the apple comes up,

 

this is a video showing what im talking about 

 

i discover this animation gets executed when an item enter in use whith the command playerIn.setItemInUse(ItemStack this.getMaxItemUseDuration(ItemStack));

when you have a bow and begin to pull it actualy do "switch animation" one time, then behaves normaly switch textures while you hold rigth click until you release the arrow

and this is a trouble for what im triying to do,

in this video i show the issue whith vainilla bow then whit mi custom bow and last mi custom pistol. 

 

this is what im triying to do, "fireguns", in this one when i shoot it does "switch animation" the pistol moves down change texture and then comes up, i put the zomby pigman to state that the pistol actualy works i du not know why mi videos dont get the sounds but well thats another trouble 

 

i been doing some experiments to realize whats happening.

first this is the base of this type of animations this is my way of doit based more or less the way vainilla bow behaves

 

//######################################################################################3	

public ModelResourceLocation getModel(ItemStack prueba, EntityPlayer playerIn, int useRemaining){

ModelResourceLocation modelresourcelocation= new ModelResourceLocation("modmercenario:prueba/prueba00", "inventory");

	 int texturajson=getInttag(prueba, "texturajson");
	             }
    
	 switch(texturajson){
	    default : modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba00", "inventory");break;
	    case   1: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba01", "inventory");break;
	    case   2: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba02", "inventory");break;
	    case   3: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba03", "inventory");break;
	    case   4: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba04", "inventory");break;
	    case   5: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba05", "inventory");break;
	    
	                    }
	                   	 
	 	return  modelresourcelocation;	
	} 	

//######################################################################################3	
public static int getInttag(ItemStack item, String tag){	

		NBTTagCompound taggs = item.getTagCompound();
		if (taggs == null){ 
			intialize(item);	
			taggs = item.getTagCompound();
		                      }

		int ex=taggs.getInteger(tag); 
		return ex;

}

//#########################################################################3
public static void intialize(ItemStack prueba){

	setInttag(prueba, "itemtick", 0);   //count ticks especial cases
	setInttag(prueba, "texturajson", 0);  //set json file in use 
	setInttag(prueba, "municion", 0);
	setInttag(prueba, "municionmaxima", 20);
	setInttag(prueba, "municiondisponible", 0);
	setInttag(prueba, "munitiontype", 0);
	setInttag(prueba, "cliptype", 1);
	setBooleantag(prueba, "reload", false);
	setBooleantag(prueba, "shoot", false);
	setBooleantag(prueba, "unload", false);
	setBooleantag(prueba, "enable", false);  //enables the onUpdate method


}

//#########################################################################3


 

in this case i select the texture to use whith the item based on the value of nbttag "texturejson" it has a trouble, and this was hard to understand

at first sig it looks like a normal behaveor that minecraft do "swicht animation" every time i change the nbttag "texturejson" but its not

i discover in mi experiments that when you change  any nbttag its does the "swicht animation"

 

i make take this custom item prueba.java and using onupdate() method to change nbttag "texturejson" from 0 to 6 and then stop , and it do this every time i touch left click

 

in first person you can see the freeky "swicht animation" muving the item up and down the thirth person view is not afected, in this onupdate() method  i comented everithing it has to be whith nbt "texturejson" just let the reading and writhing of  nbttag "itemtick" and happend the same the item bounds up and down like crazy,

but this time has nothing to do  whit onItemRigthclick or  set item on use.

 

im to tired now to continue but the point its

 

is posible to disable "swicht animation" just let item desapear and another apear in its place whitout animation,

or how are they doing to animate items in [1.8]

 

 

 

 

Link to comment
Share on other sites

I can't tell most of what you are saying, but one thing I can say is, the way the vanilla bow works is with a custom animation. whenever an item's ID changes, it triggers the animation, but the bow doesn't change ID at all while it is being pulled back, it's just an internal variable that saves the pulled-back-ness of it, and triggers certain frames in the animation.

If I ever say something stupid, or simply incorrect, please excuse me. I don't know anything about 1.8 modding, and I don't know much about entities either, But I try to help when I can.

Link to comment
Share on other sites

I know this. I think he was asking how to get his item to change texture without triggering that animation. that is what I was attempting to help him with.

If I ever say something stupid, or simply incorrect, please excuse me. I don't know anything about 1.8 modding, and I don't know much about entities either, But I try to help when I can.

Link to comment
Share on other sites

 

yes at mostly

 

there is this animation who ocurs when receeds to grab the next item in the hotbar.

like i was teling later  it makes the item to go down and then to come up but whith the next item

in the series of experiments, i do realize  that when you change any nbt tag in a item this does the "swicth animation" no matter what i change

i think is becose the item get reset minecraft someway deletes the old one and create a new one whith the new data  then  minecraft reloaded it as new  so it makes the "switch animation" to change from the old item to the new whithin the new data

 

soo could'n be posible to make an animation based in Nbttags  whithout this anoying feature

 

//##################################################################################
public ModelResourceLocation getModel(ItemStack prueba, EntityPlayer playerIn, int useRemaining){
ModelResourceLocation modelresourcelocation= new ModelResourceLocation("modmercenario:prueba/prueba00", "inventory");

 int texturajson=getInttag(prueba, "texturajson");  //nbtTag gets read here
	             
	 switch(texturajson){
	    default : modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba00", "inventory");break;
	    case   1: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba01", "inventory");break;
	    case   2: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba02", "inventory");break;
	    case   3: modelresourcelocation = new ModelResourceLocation("modmercenario:prueba/prueba03", "inventory");break;
	                               }
	                   	 
	 	return  modelresourcelocation;	
	} 	

 

conclusion :

minecraft does "switch animation" When

 

* you switch items

• nbttag data change

• when yo rigth click aiming to a close block but not an entity

     

 

 

based on this I reddo mi code way it only write nbttags on onPlayerStoppedUsing()  and calculate how many bullets has been shoot and do swicht textures based on the value of int timeLeft and int useRemaining

 

still less anoying but still anoying it does the switch animation everytime i release rigth click thats when it writes the nbttags values for munition remaining and stuff

 

look at this other video

what i wanna fix its this gun moving up and down every time i shoot.  that moving up and down animation is what i call "switch animation"

 

and this last one

im pretty pride of this machine gun

it just do "switch animation" when onPlayerStoppedUsing()  just when end shooting or when end load or reload animation

the 64 bullets are done in just 4 seconds

 

 

 

if there is no way to dissably "switch animation"  the only i could thing is make my own nbttag system reading and writing to plain text file every gun value per gun

and my own ticking class based in onUpdate().  just to not use nbttags

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Wait guys, I still don't don't understand... I shall send my code -- Define the function to decrease hunger local function decreaseHunger(player)     local currentHunger = player.getHunger()          -- Check if hunger is not already zero     if currentHunger > 0 then         player.setHunger(currentHunger - 1)     end end -- Register event to decrease hunger over time script.registerEvent(EntityPlayer, function(player)     while true do         -- Decrease hunger every few seconds         decreaseHunger(player)         script.sleep(1000) -- Sleep for 1 second     end end)     Any help appriecated. It's been a while since I learnt Javascript or whatever Minecraft is made with... ... ... ... Nicknotname Hungerinpeaceful xx
    • good days  i get this error: java.lang.ClassCastException: class net.minecraft.client.player.LocalPlayer cannot be cast to class net.minecraftforge.common.extensions.IForgeServerPlayer (net.minecraft.client.player.LocalPlayer is in module minecraft@1.20.4 of loader 'TRANSFORMER' @3e8b3b79; net.minecraftforge.common.extensions.IForgeServerPlayer is in module forge@49.0.26 of loader 'TRANSFORMER' @3e8b3b79)     at mercmod.blocks.classes.panel_whit_entity_inside.use(panel_whit_entity_inside.java:576) ~[main/:?] {re:classloading}     at net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.use(BlockBehaviour.java:826) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.performUseItemOn(MultiPlayerGameMode.java:324) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.lambda$useItemOn$4(MultiPlayerGameMode.java:292) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.startPrediction(MultiPlayerGameMode.java:251) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.multiplayer.MultiPlayerGameMode.useItemOn(MultiPlayerGameMode.java:291) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.startUseItem(Minecraft.java:1799) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.handleKeybinds(Minecraft.java:2083) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.tick(Minecraft.java:1902) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.runTick(Minecraft.java:1216) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.run(Minecraft.java:801) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:234) ~[forge-1.20.4-49.0.26_mapped_official_1.20.4-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} ------------------------------------------------------------------------------------------------------------------   context:  im updating the briefcase from mi mod an i need to make a gui whit this image that gonna be launched from a block and from a item soo im using kapenjoe tutorials  ---------------------------------------------------------------------------------------- The problem is that tutorial is for 1.20.1 and im using 1.20.4 and i really dont get how to call and open the gui from the block nor from the item i made this based on post i made short ago everything seems find but when right click the block to open the gui it crash the game  @Override public InteractionResult use(BlockState blkstate, Level warudo, BlockPos pos, Player pe, InteractionHand hand, BlockHitResult hitresult) {     if(warudo.isClientSide()){         BlockEntity blkentity = warudo.getBlockEntity(pos);         if(blkentity instanceof Panel_BlockEntity){             //   ↓↓↓  open the menu from the block              IForgeServerPlayer ifpe = (IForgeServerPlayer)pe; //<--- this is wrong  "class net.minecraft.client.player.LocalPlayer cannot be cast to class net.minecraftforge.common.extensions.IForgeServerPlayer"             ifpe.openMenu( (Panel_BlockEntity) blkentity, pos ); //<-- i need an example of how open a gui in 1.20.4         }     } return InteractionResult.sidedSuccess(warudo.isClientSide()); } Theres nothing highlighted in red in the code like everything where right an possible but dont works  ####################################################################################################### i need to see an example, just the piece of code for the use() method of the block whit the block entity for 1.20.4  and the same  but for the item     @Override     public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level warudo, @NotNull Player pe, @NotNull InteractionHand interactionHand)     {         if (!warudo.isClientSide())         {             ItemStack heldItem = pe.getItemInHand(interactionHand);                          if (heldItem.getCapability(ForgeCapabilities.ITEM_HANDLER).isPresent())             {                 //   ↓↓↓  open the menu from the item                 NetworkHooks.openScreen((ServerPlayer) pe, this);             }         }         return super.use(warudo, pe, interactionHand);     }   thanks for your attention           
    • It depends on the data you want to save, but generally speaking you should use some custom Player Capabilities, attach to the Player and use them to store/retrieve any kind of data you want. You can find how to make them work for 1.20.x in the documentation here: https://docs.minecraftforge.net/en/latest/datastorage/capabilities/
  • Topics

×
×
  • Create New...

Important Information

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