You can send this "mode" (better, the guibutton id) of yours in a packet, alongside player username. The server can then change a variable in the item the given player has.
LanguageRegistry.addName() asks for your item return of method getUnlocalizedName().
In your ModFood, it is null because you are overriding setUnlocalizedName to change your own internal String instead of the one in the Item class.
Either use super.setUnlocalizedName(string) in it, or don't override it (i highly recommend this, since you don't use your unlocalizedname string).
You can instead register a CraftingHandler (implements ICraftingHandler) that will enable you to change the planks to your custom ones when they are crafted.
So you found weaponDamage in ItemSword, but didn't search where it is used in the class ?
You couldn't found the "Weapon modifier" AttributeModifier ?
You found efficiencyOnProperMaterial in ItemTool, but couldn't find getStrVsBlock method ?
It should be !player.capabilities.isCreativeMode , obviously...where did you learn to code ?
First, check that your new block works as intended. (obviously you need to initialize it the same way as Mojang, if you don't want to change that)
Then if that is what you want, you can register recipes with your block as a input or output to override vanilla ones.
You can't change the blocks into the blockList because they are "final".
You can see damage change in ItemSword, and harvest in ItemTool, though ForgeHooks contains a hook in case you need it.
I am quite sure you can add enchantment at any time, I'd look at ItemEnchantedBook if I were you.
This.
player.capabilities.isCreativeMode == false
is wrong.
Fix, please