1.
Attackdamage is an int, but you have it as a float. If you're using an IDE it should be able to tell you what each constructor expects. (Actually followed a similar tutorial and had the same mistake),
2.
Don't use static initializers for registration, the new preferred method is deferred registration. Check out the docs, but basically you create a deferred registry and use the register method of that object (takes the item name as a string and a supplier (i.e. a function that returns a new instance of that object).