A concept of a common proxy makes no sense. Proxies exist to separate sided only code. If your code is "common" then it goes into your mod class, not into your proxy.
serverSide = Reference.COMMON_PROXY_CLASS
This makes even less sense. Server proxy either hosts noop methods that are only applicable for the client or server-side only methods. Your common proxy can't be your server proxy.
ItemBase is an antipattern. You do not need it.
public static final Item RUBY = new ItemBase("ruby", CreativeTabs.MATERIALS);
Don't ever use static initializers. Instantinate your stuff in the appropriate registry event.
IHasModel is stupid. All items need models, no exception and there is nothing about an item model that requires access to private/protected things. Register your models directly in the ModelRegistryEvent, not in your item classes.
What is up with your ruby.json model? Why are there so many transforms specified? Why is it's parent a item/handheld?
Main.proxy.registerItemRenderer(this, 0, "invetory");
invetory != inventory. Actually also related and the cause of your issue:
public class CommonProxy{
public void registerItemRenderer(Item item, int meta, String id) {}
}
public class ClientProxy extends CommonProxy{
public void regsterItemRenderer(Item item, int meta, String id) {
ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), id));
}
}
regsterItemRenderer != registerItemRenderer. This is why you
a) Never use a CommonProxy but instead an interface.
b) Never manually override methods and use the override feature of your IDE
c) Always annotate methods that are intended to be overridden with @Override
As an unrelated sidenote:
Any particular reason you've hosted your code on mediafire of all places? You can just create a free github repository, you know?