Хочу научится создавать огнестрельное оружие, но для него не хватает еще много всего, а именно:
1.Перезарядка(допустим при перезарядке из инвентаря убираются 10 патронов и можно их расстреливать)
2.Прицеливание(просто приближение, без поворота-разворота модели)
3.Разброс(допустим при стрельбе от бедра пули летят не точно, да и вообще если можно то взяв в руки оружие перекрестие вообще исчезает)
P.S. Возможно ли сделать прицеливание на кнопку СTRL?
P.P.S просьба не скидывать видео на английском (я его незнаю, а еще инет не позволит смотреть в 720p)
Вот что у меня уже есть
Gun
EntityBlasterBullet
1.Перезарядка(допустим при перезарядке из инвентаря убираются 10 патронов и можно их расстреливать)
2.Прицеливание(просто приближение, без поворота-разворота модели)
3.Разброс(допустим при стрельбе от бедра пули летят не точно, да и вообще если можно то взяв в руки оружие перекрестие вообще исчезает)
P.S. Возможно ли сделать прицеливание на кнопку СTRL?
P.P.S просьба не скидывать видео на английском (я его незнаю, а еще инет не позволит смотреть в 720p)
Вот что у меня уже есть
Gun
Код:
package assets.testmod.src.items;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import assets.testmod.src.ModInfo;
public class Gun extends Item
{
private int fireSpeed;
public Gun(int id)
{
super(id);
this.setCreativeTab(CreativeTabs.tabCombat);
this.setFull3D();
}
public void registerIcons(IconRegister tex)
{
this.itemIcon = tex.registerIcon(ModInfo.MODID + ":PM");
}
public void onUpdate(ItemStack is, World world, Entity entity, int i, boolean b)
{
this.fireSpeed++;
}
public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer player)
{
this.fireSpeed++;
if(this.fireSpeed >= 32)
{
int itemAmmoID = Item.redstone.itemID;
if(player.inventory.hasItem(itemAmmoID) || player.capabilities.isCreativeMode)
{
if(!world.isRemote)
{
this.fireSpeed = 0;
world.spawnEntityInWorld(new EntityBlasterBullet(world, player));
}
player.rotationPitch -= 1.0F;
world.playSoundAtEntity(player, "testmod:pistol", 0.5F, 1.0F);
if(!player.capabilities.isCreativeMode) player.inventory.consumeInventoryItem(itemAmmoID);
}
else
{
world.playSoundAtEntity(player, "random.click", 0.5F, 1.1F);
}
return is;
}
}
EntityBlasterBullet
Код:
package assets.testmod.src.items;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.projectile.EntityThrowable;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumMovingObjectType;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
public class EntityBlasterBullet extends EntityThrowable
{
public EntityBlasterBullet(World world)
{
super(world);
}
public EntityBlasterBullet(World world, double x, double y, double z)
{
super(world, x, y, z);
}
public EntityBlasterBullet(World world, EntityLivingBase entity)
{
super(world, entity);
}
@Override
public void onUpdate()
{
super.onUpdate();
this.motionX *= (double)this.getVelocity();
this.motionY *= (double)this.getVelocity();
this.motionZ *= (double)this.getVelocity();
this.setPosition(this.posX, this.posY, this.posZ);
}
protected float getVelocity()
{
return 2.0F; // Скорость пули (с какой скоростью будет лететь пуля)
}
protected float getGravityVelocity()
{
return 0.01F;
}
@Override
protected void onImpact(MovingObjectPosition mop)
{
if(mop.typeOfHit.equals(EnumMovingObjectType.ENTITY))
{
Entity entity = mop.entityHit;
DamageSource dmgSrc = (DamageSource.causeMobDamage(this.getThrower()));
int damage = 5;
entity.attackEntityFrom(dmgSrc, damage);
}
}
}