pink_sword.json
That is incorrect.
item/pinkguy_block.json
That needs to be block. Pay attention to your spelling also check your console for errors. Whenever these is a texture/model problem there is always an error in the console.
It makes every blockstate value at startup. 2,000,000,000 is way too many. That's 4,000,000,000 block states for blocks that dont have other properties. Imagine redstone. Also this wont work in 1.14 so you'd be better off with a chunk capability that stores an integer for every block position.
Because you are creating a new CompoundNBT and loading your data from there instead of using the INBT instance you are provided. Cast it to a CompoundNBT.
What would it be used for then if not making data persist across death, and what event would you use for making data persist across death because there is no way to use PlayerRespawnEvent to do so.
You need to make the data persist through player death. This can be done using the PlayerEvent.Clone(I think is the name, I know Clone is a part of it).
You're making it a new array every time that method is called therefore it is never the "previous" inventory. It is always an "empty" inventory. You only need to initialize it once. You also need to make sure that none of the values are null, but instead ItemStack.EMPTY.
It's meant to represent the player's inventory right? Then you should initialize it to have the same size as the inventory.
If his mod worked at all then he must have done it at some point.
For the love of god no...go back to using an array. You need to initialize your array. If you don't know how to do that please look it up. It's very basic Java and many other languages.
Here is what you should do instead. Set the multiplier to 0. Check if the world is on the server (isRemote is false). Then modify the velocity/motion. Then do living.velocityChanged = true.
setBlockState(state.with(integerProp, state.get() + 1))
// then
setBlockState(state.with(booleanProp, false))
// is not the same as
setBlockState(state.with(integerProp, state.get() + 1).with(booleanProp, false)
Does that make sense?
I believe that is wrong...cant you just have two models per color/whatever(16). And then an extra one that's empty. Then an extra one that is empty to apply when it is false. Which comes to 16x2+1=33 which is a lot, but you can just parent the glass pane model and change the texture.