Огнестрельное оружие, регистрация ентити

Версия Minecraft
1.12.2
1)
Набросал на быструю руку класс ItemGun и класс АК-47, есть какие-нибудь советы, что нужно исправить?
ItemGun:
public class ItemGun extends Item implements IHasModel {
    public double rateOfFire;
    public double damage;
    public int ammoSize;
    public double reloadSpeed;
    
    public ItemGun(int ammoSize, double damage, float rateOfFire, float reloadSpeed) {
        this.ammoSize = ammoSize;
        this.damage = damage;
        this.rateOfFire = rateOfFire;
        this.reloadSpeed = reloadSpeed;
        this.maxStackSize = 1;
        this.setMaxDamage(ammoSize);
        ItemsRegister.ITEMS.add(this);
    }
     public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
        {
            ItemStack itemstack = playerIn.getHeldItem(handIn);

            if (itemstack.getItemDamage()>ammoSize)
            {
                playerIn.setActiveHand(handIn);
                if (!worldIn.isRemote)
                {   
                    EntityBullet bullet = new EntityBullet(worldIn, playerIn);
                    bullet.shoot(playerIn, playerIn.rotationPitch, playerIn.rotationYaw, 0.0F, 1.5F, 1.0F);
                    worldIn.spawnEntity(bullet);
                }
                return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, itemstack);
            }
            else
            {   
                playerIn.sendStatusMessage(new TextComponentString("§cНужно перезарядить"), true);
                return new ActionResult<ItemStack>(EnumActionResult.FAIL, itemstack);
            }
        }
    @Override
    public void registerModels() {
        
        
    }
}
AK_47:
public class AK47 extends ItemGun {
    public AK47(String name, int ammoSize, int damage, float rateOfFire, float reloadSpeed) {
        super(ammoSize, damage, rateOfFire, reloadSpeed);
        this.setUnlocalizedName(name);
        this.setRegistryName(name);
        this.setCreativeTab(CreativeTabs.COMBAT);
    }
}

2) Как можно зарегистрировать Entity?

Java:
    @SubscribeEvent
    public <T> void registerEntity(RegistryEvent.Register<Entity> event) {
        
    }
уже выдает ошибку The type Entity is not a valid substitute for the bounded parameter <T extends IForgeRegistryEntry<T>> of the type RegistryEvent.Register<T>
 
7,099
324
1,510
Вот пример, как регать энтити
Регистрировать надо не само ентити, а EntityEntry, потому что для каждой конкретной сущности в мире энтити новый, а EntityEntry один на тип
 
7,099
324
1,510
Не стоит делать пули сущностями. Высокоскоротные сущности плохо отрабатывают коллизии(пролетают через цель, с которой должны были столкнуться)
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Высокоскоротные сущности плохо отрабатывают коллизии(пролетают через цель, с которой должны были столкнуться)
Что мешает подсмотреть в стрелу, там делается рейтрейс между текущей позицией и следующей.
 
7,099
324
1,510
Сверху