public Weapon(Class<? extends T> projectileType, long coolDown, int maxAmmo) {
        this.projectileType = projectileType;
        lastShot = 0;
        this.coolDown = coolDown;
        this.maxAmmo = maxAmmo;
        this.currentAmmo = maxAmmo;
        try {
            ctor = getCtor();
        } catch (SecurityException e) {
            e.printStackTrace();
            return;
        }
    }