Posted May 22, 201312 yr I followed this tutorial: http://www.minecraftforge.net/wiki/Tutorials/Basic_Shooter_Item_-_Blaster_Rifle and it works great, but the rifle that it produces is fully automatic, you only have to hold down the mouse button and it fires every tick. I would like a gun that is semi-auto(it fires once every press of the mouse and you have to press it again to fire again) with a delay/recharge time(say 1 second) between each shot. Does anyone know how to do this? (BTW, looking at the bow class does not really help me, because it is a totally different premise. Here is my gun class: package mods.mcenrichment.common; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntitySnowball; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class ItemGun extends Item { public ItemGun(int id) { super(id); // Constructor Configuration maxStackSize = 1; setCreativeTab(MCEnrichment.tabMCEnrichment); setUnlocalizedName("hi"); } { } @Override public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World,EntityPlayer par3EntityPlayer) { if(par3EntityPlayer.capabilities.isCreativeMode||par3EntityPlayer.inventory.consumeInventoryItem(MCEnrichment.blasterRifleBullet.itemID)) { par2World.playSoundAtEntity(par3EntityPlayer, "blastershot", 1.0F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityGunBolt(par2World, par3EntityPlayer)); } } return par1ItemStack; } } and my bullet entity class: package mods.mcenrichment.common; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class EntityGunBolt extends EntityThrowable{ private static final double speed = 5; boolean flag = this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); private float explosionRadius = 1.0F; public EntityGunBolt(World par1World) { super(par1World); } public EntityGunBolt(World par1World, EntityLiving par2EntityLiving) { super(par1World, par2EntityLiving); this.motionX*=speed; this.motionY*=speed; this.motionZ*=speed; } public EntityGunBolt(World par1World, double par2, double par4, double par6) { super(par1World, par2, par4, par6); } @Override protected void onImpact(MovingObjectPosition par1MovingObjectPosition){ if (par1MovingObjectPosition.entityHit != null) { par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), 14); } //this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)this.explosionRadius, true); this.setDead(); } @Override protected float getGravityVelocity(){ return 0; } } Thanks for the help! Check out my mod: http://www.minecraftforum.net/topic/1809937-152forge-minecraft-enriched-mod/
May 22, 201312 yr Author You chouod make it count so many ticks then fire then wait that many ticks again. How would I do that? Check out my mod: http://www.minecraftforum.net/topic/1809937-152forge-minecraft-enriched-mod/
May 22, 201312 yr Author Anyone?? Check out my mod: http://www.minecraftforum.net/topic/1809937-152forge-minecraft-enriched-mod/
May 22, 201312 yr make a global integer. private int counter =20; in your 'onItemRightClick method' counter--; if(counter == 0){ shootGunStuffHere counter=20; } this makes the gun fire every second at least once. (second = 20 ticks) make it more or less as you like. should work. Find me on the minecraftforums : senpaisubaraki if it doesn't work. i'm a rare forge site visitor. https://minecraft.curseforge.com/members/Subaraki/projects
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.