diff --git a/src/main/java/com/uberverse/arkcraft/common/burner/IBurner.java b/src/main/java/com/uberverse/arkcraft/common/burner/IBurner.java index e751459..58a8633 100644 --- a/src/main/java/com/uberverse/arkcraft/common/burner/IBurner.java +++ b/src/main/java/com/uberverse/arkcraft/common/burner/IBurner.java @@ -230,7 +230,7 @@ public default boolean burn() public default void playSound() { getWorldIA().playSoundEffect(getPosition().getX(), getPosition().getY(), getPosition().getZ(), getSoundName(), - 1, 1); + 0.015F, 1F); } public String getSoundName(); diff --git a/src/main/java/com/uberverse/arkcraft/common/item/ammo/ItemArrow.java b/src/main/java/com/uberverse/arkcraft/common/item/ammo/ItemArrow.java new file mode 100644 index 0000000..4d44e91 --- /dev/null +++ b/src/main/java/com/uberverse/arkcraft/common/item/ammo/ItemArrow.java @@ -0,0 +1,14 @@ +package com.uberverse.arkcraft.common.item.ammo; + +import com.uberverse.arkcraft.ARKCraft; + +import net.minecraft.item.Item; + +public class ItemArrow extends Item +{ + public ItemArrow() + { + super(); + this.setCreativeTab(ARKCraft.tabARK); + } +} diff --git a/src/main/java/com/uberverse/arkcraft/common/item/ranged/ItemWoodenBow.java b/src/main/java/com/uberverse/arkcraft/common/item/ranged/ItemWoodenBow.java index 64f1cc0..213b831 100644 --- a/src/main/java/com/uberverse/arkcraft/common/item/ranged/ItemWoodenBow.java +++ b/src/main/java/com/uberverse/arkcraft/common/item/ranged/ItemWoodenBow.java @@ -1,6 +1,165 @@ package com.uberverse.arkcraft.common.item.ranged; -public class ItemWoodenBow +import com.uberverse.arkcraft.ARKCraft; +import com.uberverse.arkcraft.common.item.ammo.ItemArrow; +import com.uberverse.arkcraft.init.ARKCraftRangedWeapons; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBow; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.stats.StatList; +import net.minecraft.world.World; + +public class ItemWoodenBow extends ItemBow { + public ItemWoodenBow() + { + setCreativeTab(ARKCraft.tabARK); + } + + public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) + { + net.minecraftforge.event.entity.player.ArrowNockEvent event = new net.minecraftforge.event.entity.player.ArrowNockEvent(playerIn, itemStackIn); + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return event.result; + + if (playerIn.capabilities.isCreativeMode) + { + playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn)); + } + else + { + for(int i = 0; i < playerIn.inventory.getSizeInventory(); i++) + { + ItemStack stack = playerIn.inventory.getStackInSlot(i); + + if (stack != null && stack.getItem() instanceof ItemArrow) + { + if(stack.getItem() == ARKCraftRangedWeapons.stone_arrow) + { + System.out.println("found stone"); + setArrowType(stack, "stone"); + playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn)); + break; + } + else if(stack.getItem() == ARKCraftRangedWeapons.metal_arrow) + { + setArrowType(stack, "metal"); + playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn)); + break; + } + else if(stack.getItem() == ARKCraftRangedWeapons.tranq_arrow) + { + setArrowType(stack, "tranq"); + playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn)); + break; + } + } + } + } + return itemStackIn; + } + + public static String getArrowType(ItemStack stack) + { + System.out.println(stack.hasTagCompound()); + return stack.hasTagCompound() ? stack.getTagCompound().getString("arrowtype") : (""); + } + + public static void setArrowType(ItemStack stack, String s) + { + if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); + stack.getTagCompound().setString("arrowtype", s); + } + + public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft) + { + int j = this.getMaxItemUseDuration(stack) - timeLeft; + net.minecraftforge.event.entity.player.ArrowLooseEvent event = new net.minecraftforge.event.entity.player.ArrowLooseEvent(playerIn, stack, j); + if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return; + j = event.charge; + + boolean flag = playerIn.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + + if (flag || playerIn.inventory.hasItem(ARKCraftRangedWeapons.stone_arrow) || playerIn.inventory.hasItem(ARKCraftRangedWeapons.metal_arrow) || playerIn.inventory.hasItem(ARKCraftRangedWeapons.tranq_arrow)) + { + 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; + } + + EntityArrow entityarrow = new EntityArrow(worldIn, playerIn, f * 2.0F); + + if (f == 1.0F) + { + entityarrow.setIsCritical(true); + } + + int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, stack); + + if (k > 0) + { + entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D); + } + + int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, stack); + + if (l > 0) + { + entityarrow.setKnockbackStrength(l); + } + + if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, stack) > 0) + { + entityarrow.setFire(100); + } + + stack.damageItem(1, playerIn); + worldIn.playSoundAtEntity(playerIn, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); + + if (flag) + { + entityarrow.canBePickedUp = 2; + } + else + { + if(getArrowType(stack) != null) + { + System.out.println((getArrowType(stack))); + if(getArrowType(stack) == "stone") + { + playerIn.inventory.consumeInventoryItem(ARKCraftRangedWeapons.stone_arrow); + } + else if(getArrowType(stack) == "metal") + { + playerIn.inventory.consumeInventoryItem(ARKCraftRangedWeapons.metal_arrow); + } + else if(getArrowType(stack) == "tranq") + { + playerIn.inventory.consumeInventoryItem(ARKCraftRangedWeapons.tranq_arrow); + } + } + } + + playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); + + if (!worldIn.isRemote) + { + worldIn.spawnEntityInWorld(entityarrow); + } + } + } } diff --git a/src/main/java/com/uberverse/arkcraft/common/tileentity/crafter/burner/TileEntityCampfire.java b/src/main/java/com/uberverse/arkcraft/common/tileentity/crafter/burner/TileEntityCampfire.java index 5f44d6b..cc03312 100644 --- a/src/main/java/com/uberverse/arkcraft/common/tileentity/crafter/burner/TileEntityCampfire.java +++ b/src/main/java/com/uberverse/arkcraft/common/tileentity/crafter/burner/TileEntityCampfire.java @@ -34,4 +34,5 @@ public String getSoundName() { return "arkcraft:campfire_burn"; } + } diff --git a/src/main/java/com/uberverse/arkcraft/init/ARKCraftRangedWeapons.java b/src/main/java/com/uberverse/arkcraft/init/ARKCraftRangedWeapons.java index e13d80b..4a1f467 100644 --- a/src/main/java/com/uberverse/arkcraft/init/ARKCraftRangedWeapons.java +++ b/src/main/java/com/uberverse/arkcraft/init/ARKCraftRangedWeapons.java @@ -15,6 +15,7 @@ import com.uberverse.arkcraft.common.entity.dispense.DispenseSimpleShotgunAmmo; import com.uberverse.arkcraft.common.entity.dispense.DispenseTranquilizer; import com.uberverse.arkcraft.common.handlers.EntityHandler; +import com.uberverse.arkcraft.common.item.ammo.ItemArrow; import com.uberverse.arkcraft.common.item.ammo.ItemProjectile; import com.uberverse.arkcraft.common.item.attachments.AttachmentType; import com.uberverse.arkcraft.common.item.attachments.ItemAttachment; @@ -25,6 +26,7 @@ import com.uberverse.arkcraft.common.item.ranged.ItemShotgun; import com.uberverse.arkcraft.common.item.ranged.ItemSimplePistol; import com.uberverse.arkcraft.common.item.ranged.ItemSlingshot; +import com.uberverse.arkcraft.common.item.ranged.ItemWoodenBow; import net.minecraft.block.BlockDispenser; import net.minecraft.item.Item.ToolMaterial; @@ -43,6 +45,8 @@ public class ARKCraftRangedWeapons public static ItemRangedWeapon shotgun; public static ItemRangedWeapon crossbow; public static ItemSlingshot slingshot; + public static ItemArrow stone_arrow, metal_arrow, tranq_arrow; + public static ItemWoodenBow wooden_bow; public static ToolMaterial METAL = EnumHelper.addToolMaterial("METAL_MAT", 3, 1500, 6.0F, 0.8F, 8); public static ToolMaterial STONE = EnumHelper.addToolMaterial("STONE_MAT", 2, 500, 3.5F, 0.4F, 13); @@ -58,7 +62,12 @@ public static void init() laser = addItemAttachment("laser", AttachmentType.LASER); silencer = addItemAttachment("silencer", AttachmentType.SILENCER); - slingshot = init.registerItem("slingshot", new ItemSlingshot(), "slingshot", "slingshot_pulled"); + stone_arrow = addItemArrow("stone_arrow"); + metal_arrow = addItemArrow("metal_arrow"); + tranq_arrow = addItemArrow("tranq_arrow"); + + wooden_bow = init.registerItem("wooden_bow", new ItemWoodenBow()); + // addSlingshot("slingshot"); EntityHandler.registerModEntity(EntityStone.class, "stone", ARKCraft.instance(), 64, 10, true); @@ -189,4 +198,9 @@ protected static ItemProjectile addItemProjectile(String name) { return InitializationManager.instance().registerItem(name, new ItemProjectile()); } + + protected static ItemArrow addItemArrow(String name) + { + return InitializationManager.instance().registerItem(name, new ItemArrow()); + } } diff --git a/src/main/resources/assets/arkcraft/sounds/campfire_burn.ogg b/src/main/resources/assets/arkcraft/sounds/campfire_burn.ogg index 7cab4fc..a0576d8 100644 Binary files a/src/main/resources/assets/arkcraft/sounds/campfire_burn.ogg and b/src/main/resources/assets/arkcraft/sounds/campfire_burn.ogg differ diff --git a/src/main/resources/assets/arkcraft/sounds/forge_burn.ogg b/src/main/resources/assets/arkcraft/sounds/forge_burn.ogg index 47948a2..a0576d8 100644 Binary files a/src/main/resources/assets/arkcraft/sounds/forge_burn.ogg and b/src/main/resources/assets/arkcraft/sounds/forge_burn.ogg differ