Jump to content

Recommended Posts

Posted

im trying to get my custom gun to reload but everything ive tried doesn't work the closest ive come is to get it to work once but then it doesn't do it again here is the base code for my item:

package militarycraft.item;

import militarycraft.entites.EntityMusketRound;
import militarycraft.main.MainRegistry;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ArrowLooseEvent;
import net.minecraftforge.event.entity.player.ArrowNockEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class Musket extends Item {
@SideOnly(Side.CLIENT)
private Icon[] iconArray;

public Musket(int par1) {
	super(par1);

	this.maxStackSize = 1;
	this.setMaxDamage(384);
	this.setCreativeTab(CreativeTabs.tabCombat);
}

@SideOnly(Side.CLIENT)
/**
 * Returns True is the item is renderer in full 3D when hold.
 */
public boolean isFull3D() {
	return true;
}

/**
 * called when the player releases the use item button. Args: itemstack,
 * world, entityplayer, itemInUseCount
 */
public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) {
	int j = this.getMaxItemUseDuration(par1ItemStack) - par4;

	ArrowLooseEvent event = new ArrowLooseEvent(par3EntityPlayer, par1ItemStack, j);
	MinecraftForge.EVENT_BUS.post(event);
	if (event.isCanceled()) {
		return;
	}
	j = event.charge;

	boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0;

	if (flag || par3EntityPlayer.inventory.hasItem(MainRegistry.MusketRound.itemID)) {
		float f = (float) j / 20.0F;
		f = (f * f + f * 2.0F) / 3.0F;

		if ((double) f < 0.1D) {
			return;
		}

		if (f > 1.0F) {
			f = 1.0F;
		}

		EntityMusketRound EntityMusketRound = new EntityMusketRound(par2World, par3EntityPlayer, f * 2.0F);

		if (f == 1.0F) {
			EntityMusketRound.setIsCritical(true);
		}

		int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack);

		if (k > 0) {
			EntityMusketRound.setDamage(EntityMusketRound.getDamage() + (double) k * 0.5D + 0.5D);
		}

		int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack);

		if (l > 0) {
			EntityMusketRound.setKnockbackStrength(l);
		}

		if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0) {
			EntityMusketRound.setFire(100);
		}

		par1ItemStack.damageItem(1, par3EntityPlayer);
		par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);

		if (flag) {
			EntityMusketRound.canBePickedUp = 2;
		} else {
			par3EntityPlayer.inventory.consumeInventoryItem(MainRegistry.MusketRound.itemID);
		}

		if (!par2World.isRemote) {
			par2World.spawnEntityInWorld(EntityMusketRound);
		}
	}
}

public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
	return par1ItemStack;
}

/**
 * How long it takes to use or consume an item
 */
public int getMaxItemUseDuration(ItemStack par1ItemStack) {
	return 72000;
}

/**
 * returns the action that specifies what animation to play when the items
 * is being used
 */
public EnumAction getItemUseAction(ItemStack par1ItemStack) {
	return EnumAction.bow;
}

public static void reload() {

}

public static boolean canShoot = false;
public static int reloading = 0;
public static boolean isLoaded = false;

public boolean hasShot = false;

public static int ticks;

/**
 * Called whenever this item is equipped and the right mouse button is
 * pressed. Args: itemStack, world, entityPlayer
 */
/**
 * Called whenever this item is equipped and the right mouse button is
 * pressed. Args: itemStack, world, entityPlayer
 */
 /**
     * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
     */
    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
    {
        ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack);
        MinecraftForge.EVENT_BUS.post(event);
        if (event.isCanceled())
        {
            return event.result;
        }

        if (par3EntityPlayer.capabilities.isCreativeMode || par3EntityPlayer.inventory.hasItem(MainRegistry.MusketRound.itemID))
        {
            par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack));
        }

        return par1ItemStack;
    }

/**
 * Return the enchantability factor of the item, most of the time is based
 * on material.
 */
public int getItemEnchantability() {
	return 1;
}

}

 

My youtube channel for forge tutorials: http://www.youtube.com/user/TheGrovesyProject101?feature=mhee

 

if i helped please press thank you

Posted

Ok cool idea to make something like a reload system which also add alot of thigs for the detecting.

 

First of all. Delete all Code!

 

A bow in a gun = Thats not god.

 

Make it like that:

 

when you rightclick (and he can shoot) than he shood instandly! Like the old vanilla bow.

And when the weapon is not loaded than he starts to refuel them. You can do this in 1 function or 2 functions^^" how you want to do it but delete the bow. Thats not good. Also enchantments are not good on weapons.

Make differend kind of Munition. Which have differend effects.

i hope that helps you a little bit^^

Posted

Ok cool idea to make something like a reload system which also add alot of thigs for the detecting.

 

First of all. Delete all Code!

 

A bow in a gun = Thats not god.

 

Make it like that:

 

when you rightclick (and he can shoot) than he shood instandly! Like the old vanilla bow.

And when the weapon is not loaded than he starts to refuel them. You can do this in 1 function or 2 functions^^" how you want to do it but delete the bow. Thats not good. Also enchantments are not good on weapons.

Make differend kind of Munition. Which have differend effects.

i hope that helps you a little bit^^

We're here to help people, not comment on what they are or should be trying to make.

 

@OP: I don't see any "reloading" code...

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

Posted

he means when you shoot he uses the gun and makes the gun empty. Than you have to refill it (with whatever he uses).

 

And i know we are here to help people but that bow code will make it harder to code^^.

Thats why i said this!

Posted

he means when you shoot he uses the gun and makes the gun empty. Than you have to refill it (with whatever he uses).

 

And i know we are here to help people but that bow code will make it harder to code^^.

Thats why i said this!

You were giving him suggestions for his mod as well. Which he did not ask for. But it is true that, if that is his intention, the bow code will not work.

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

Posted

I think the answer he wants is:

make a KeyHandler, bind a key and when that key is pressed (like R for reload) check what item the player has in its hand and call some reload function on it if its a gun or wtv you're trying to do.

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

I think the answer he wants is:

make a KeyHandler, bind a key and when that key is pressed (like R for reload) check what item the player has in its hand and call some reload function on it if its a gun or wtv you're trying to do.

True. But I'd need to see some sort of "cartridge" code in the first place.

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.