upadting the longbow to work more like and render more like a vanilla bow

This commit is contained in:
Mohammad-Ali Minaie
2018-10-15 16:11:16 -04:00
parent 8b09d55bd0
commit a822458bc2
6 changed files with 126 additions and 125 deletions

View File

@@ -6,8 +6,7 @@
- [ ] Placement bug for crucible from tongs - [ ] Placement bug for crucible from tongs
## Current Feature ## Current Feature
- [x] WorkBench
- [ ] Longbow change NBT management
- [ ] Untick Bloomery and Forge - [ ] Untick Bloomery and Forge
- [ ] Craft Tweaker Support - [ ] Craft Tweaker Support
- [ ] Recipe Handler for Block Breaker - [ ] Recipe Handler for Block Breaker
@@ -49,6 +48,8 @@ rename s/iron/steel/ iron*
``` ```
### Completed ### Completed
- [x] WorkBench
- [x] Longbow change NBT management
- [x] Check dict name for cluster - [x] Check dict name for cluster
- [x] Check block break code for NBTCrucible - [x] Check block break code for NBTCrucible
- [x] Cooldown for sledgehammer not working - [x] Cooldown for sledgehammer not working

View File

@@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx3G
mod_group=nmd.primal.forgecraft mod_group=nmd.primal.forgecraft
mod_name=ForgeCraft mod_name=ForgeCraft
mod_version=1.6.25 mod_version=1.6.26
forge_version=14.23.4.2765 forge_version=14.23.4.2765
mcp_mappings=snapshot_20171003 mcp_mappings=snapshot_20171003
mc_version=1.12.2 mc_version=1.12.2

View File

@@ -22,7 +22,7 @@ public class ModInfo {
//public static final String MOD_PREFIX = MOD_ID + ":"; //public static final String MOD_PREFIX = MOD_ID + ":";
public static final String MOD_CHANNEL = MOD_ID; public static final String MOD_CHANNEL = MOD_ID;
public static final String MOD_VERSION = "1.6.25"; public static final String MOD_VERSION = "1.6.26";
public static final String MC_VERSIONS = "[1.12.0, 1.13.0)"; public static final String MC_VERSIONS = "[1.12.0, 1.13.0)";
public static final String DEPENDENCIES = "required-after:forge@[14.21.1.2400,);" + "required-after:primal@[0.6.69,);"; public static final String DEPENDENCIES = "required-after:forge@[14.21.1.2400,);" + "required-after:primal@[0.6.69,);";

View File

@@ -1,5 +1,8 @@
package nmd.primal.forgecraft.items.weapons; package nmd.primal.forgecraft.items.weapons;
import com.google.common.collect.ImmutableMap;
import com.mojang.realmsclient.gui.ChatFormatting;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -7,105 +10,69 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Enchantments; import net.minecraft.init.Enchantments;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.EnumAction; import net.minecraft.item.*;
import net.minecraft.item.IItemPropertyGetter;
import net.minecraft.item.ItemArrow;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.StatList; import net.minecraft.stats.StatList;
import net.minecraft.util.*; import net.minecraft.util.*;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.animation.ITimeValue;
import net.minecraftforge.common.animation.TimeValues;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.common.model.animation.CapabilityAnimation;
import net.minecraftforge.common.model.animation.IAnimationStateMachine;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.init.ModSounds; import nmd.primal.forgecraft.init.ModSounds;
import nmd.primal.forgecraft.items.BaseItem; import nmd.primal.forgecraft.items.BaseItem;
import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List;
/** /**
* Created by mminaie on 7/2/17. * Created by mminaie on 7/2/17.
*/ */
public class Longbow extends BaseItem { public class Longbow extends ItemBow {
int mod=10;
int time=0;
public Longbow(String name) { public Longbow(String name) {
super(name);
this.setMaxDamage(9000); this.setMaxDamage(9000);
this.setMaxStackSize(1); this.setMaxStackSize(1);
this.setNoRepair(); this.setNoRepair();
this.setRegistryName(name);
this.setUnlocalizedName(name);
this.setCreativeTab(ModInfo.TAB_FORGECRAFT);
this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter() { this.addPropertyOverride(new ResourceLocation("pull"), new IItemPropertyGetter()
{
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public float apply(ItemStack item, @Nullable World worldIn, @Nullable EntityLivingBase playerin) { public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn)
{
if (time < 1 * mod) { if (entityIn == null)
{
return 0.0F; return 0.0F;
} }
if (time >= 1 * mod && time < 2 * mod) { else
return 0.1F; {
return entityIn.getActiveItemStack().getItem() != ModItems.longbow? 0.0F : (float)(stack.getMaxItemUseDuration() - entityIn.getItemInUseCount()) / 75.0F;
} }
if (time >= 2 * mod && time < 3 * mod) {
return 0.2F;
}
if (time >= 3 * mod && time < 4 * mod) {
return 0.3F;
}
if (time >= 4 * mod && time < 5 * mod) {
return 0.4F;
}
if (time >= 5 * mod && time < 6 * mod) {
return 0.5F;
}
if (time >= 6 * mod && time < 7 * mod) {
return 0.6F;
}
if (time >= 7 * mod && time < 8 * mod) {
return 0.7F;
}
if (time >= 8 * mod && time < 72000) {
return 0.8F;
}
return 0.0f;
} }
}); });
} this.addPropertyOverride(new ResourceLocation("pulling"), new IItemPropertyGetter()
@Override
public void onUpdate(ItemStack item, World world, Entity playerin, int itemSlot, boolean isSelected) {
EntityPlayer player = (EntityPlayer) playerin;
if(player.inventory.getCurrentItem().getItem() == ModItems.longbow) {
time = item.getMaxItemUseDuration() - player.getItemInUseCount();
}
}
private ItemStack findAmmo(EntityPlayer player)
{ {
@SideOnly(Side.CLIENT)
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn)
{ {
ItemStack itemstack = player.inventory.getStackInSlot(i); return entityIn != null && entityIn.isHandActive() && entityIn.getActiveItemStack() == stack ? 1.0F : 0.0F;
if (this.isArrow(itemstack))
{
return itemstack;
} }
} });
return ItemStack.EMPTY;
} }
protected boolean isArrow(ItemStack stack) public String getName() {
{ return this.getRegistryName().toString();
return stack.getItem() instanceof ItemArrow;
} }
/** /**
* Called when the player stops using an Item (stops holding the right mouse button). * Called when the player stops using an Item (stops holding the right mouse button).
*/ */
@@ -140,10 +107,11 @@ public class Longbow extends BaseItem {
{ {
ItemArrow itemarrow = (ItemArrow)((ItemArrow)(itemstack.getItem() instanceof ItemArrow ? itemstack.getItem() : Items.ARROW)); ItemArrow itemarrow = (ItemArrow)((ItemArrow)(itemstack.getItem() instanceof ItemArrow ? itemstack.getItem() : Items.ARROW));
EntityArrow entityarrow = itemarrow.createArrow(worldIn, itemstack, entityplayer); EntityArrow entityarrow = itemarrow.createArrow(worldIn, itemstack, entityplayer);
System.out.println(f);
entityarrow.setDamage(entityarrow.getDamage()+(entityarrow.getDamage()*f)); entityarrow.setDamage(entityarrow.getDamage()+(entityarrow.getDamage()*f));
entityarrow.shoot(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F, f * 6.0F, 0.5F); entityarrow.shoot(entityplayer, entityplayer.rotationPitch, entityplayer.rotationYaw, 0.0F, f * 6.0F, 0.5F);
if (f >= 1.0F) if (f >= 0.5F)
{ {
entityarrow.setIsCritical(true); entityarrow.setIsCritical(true);
} }
@@ -174,49 +142,10 @@ public class Longbow extends BaseItem {
} }
} }
/**
* Gets the velocity of the arrow entity from the bow's charge
*/
public static float getArrowVelocity(int charge)
{
float f = (float)charge / 90;
if (f > 1.0F)
{
f = 1.0F;
}
if(f < 0.1){
f =0.1f;
}
return f;
}
/**
* How long it takes to use or consume an item
*/
@Override
public int getMaxItemUseDuration(ItemStack stack)
{
return 72000;
}
/**
* returns the action that specifies what animation to play when the items is being used
*/
@Override
public EnumAction getItemUseAction(ItemStack stack)
{
return EnumAction.BOW;
}
/** /**
* Called when the equipped item is right clicked. * Called when the equipped item is right clicked.
*/ */
@Override /*@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
{ {
ItemStack itemstack = playerIn.getHeldItem(handIn); ItemStack itemstack = playerIn.getHeldItem(handIn);
@@ -234,6 +163,42 @@ public class Longbow extends BaseItem {
playerIn.setActiveHand(handIn); playerIn.setActiveHand(handIn);
return new ActionResult(EnumActionResult.SUCCESS, itemstack); return new ActionResult(EnumActionResult.SUCCESS, itemstack);
} }
}*/
/*
private ItemStack findAmmo(EntityPlayer player)
{
for (int i = 0; i < player.inventory.getSizeInventory(); ++i)
{
ItemStack itemstack = player.inventory.getStackInSlot(i);
if (this.isArrow(itemstack))
{
return itemstack;
}
}
return ItemStack.EMPTY;
}
/*
/**
* Gets the velocity of the arrow entity from the bow's charge
*/
public static float getArrowVelocity(int charge)
{
float f = (float)charge / 60;
if (f > 1.0F)
{
f = 1.0F;
}
if(f < 0.1){
f =0.1f;
}
return f;
} }
@Override @Override
@@ -241,4 +206,39 @@ public class Longbow extends BaseItem {
{ {
return 0; return 0;
} }
private ItemStack findAmmo(EntityPlayer player)
{
if (this.isArrow(player.getHeldItem(EnumHand.OFF_HAND)))
{
return player.getHeldItem(EnumHand.OFF_HAND);
}
else if (this.isArrow(player.getHeldItem(EnumHand.MAIN_HAND)))
{
return player.getHeldItem(EnumHand.MAIN_HAND);
}
else
{
for (int i = 0; i < player.inventory.getSizeInventory(); ++i)
{
ItemStack itemstack = player.inventory.getStackInSlot(i);
if (this.isArrow(itemstack))
{
return itemstack;
}
}
return ItemStack.EMPTY;
}
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World world, List<String> tooltip, ITooltipFlag flagIn)
{
if(!stack.isEmpty()) {
tooltip.add(ChatFormatting.GRAY + "The longbow will increase the damage and the velocity of the arrow it shoots relative to how far its drawn.");
}
}
} }

View File

@@ -4,18 +4,18 @@
"particle": "primal:blocks/log_stripped_yew_side", "particle": "primal:blocks/log_stripped_yew_side",
"texture": "primal:blocks/log_stripped_yew_side", "texture": "primal:blocks/log_stripped_yew_side",
"texture1": "forgecraft:items/bowstring", "texture1": "forgecraft:items/bowstring",
"arrow": "blocks/e_texture" "arrow": "forgecraft:items/arrow"
}, },
"overrides": [ "overrides": [
{"predicate": {"type": 0.0},"model": "forgecraft:item/longbow/longbow_0"}, {"predicate": {"pulling": 1}, "model": "forgecraft:item/longbow/longbow_0"},
{"predicate": {"type": 0.1},"model": "forgecraft:item/longbow/longbow_1"}, {"predicate": {"pulling": 1, "pull": 0.1}, "model": "forgecraft:item/longbow/longbow_1"},
{"predicate": {"type": 0.2},"model": "forgecraft:item/longbow/longbow_2"}, {"predicate": {"pulling": 1, "pull": 0.2},"model": "forgecraft:item/longbow/longbow_2"},
{"predicate": {"type": 0.3},"model": "forgecraft:item/longbow/longbow_3"}, {"predicate": {"pulling": 1, "pull": 0.3},"model": "forgecraft:item/longbow/longbow_3"},
{"predicate": {"type": 0.4},"model": "forgecraft:item/longbow/longbow_4"}, {"predicate": {"pulling": 1, "pull": 0.4},"model": "forgecraft:item/longbow/longbow_4"},
{"predicate": {"type": 0.5},"model": "forgecraft:item/longbow/longbow_5"}, {"predicate": {"pulling": 1, "pull": 0.5},"model": "forgecraft:item/longbow/longbow_5"},
{"predicate": {"type": 0.6},"model": "forgecraft:item/longbow/longbow_6"}, {"predicate": {"pulling": 1, "pull": 0.6},"model": "forgecraft:item/longbow/longbow_6"},
{"predicate": {"type": 0.7},"model": "forgecraft:item/longbow/longbow_7"}, {"predicate": {"pulling": 1, "pull": 0.7},"model": "forgecraft:item/longbow/longbow_7"},
{"predicate": {"type": 0.8},"model": "forgecraft:item/longbow/longbow_8"} {"predicate": {"pulling": 1, "pull": 0.8},"model": "forgecraft:item/longbow/longbow_8"}
] ]
} }

View File

@@ -2,7 +2,7 @@
"modid": "forgecraft", "modid": "forgecraft",
"name": "Kitsu's Forgecraft", "name": "Kitsu's Forgecraft",
"description": "Forged with sweat and blood", "description": "Forged with sweat and blood",
"version": "1.6.25", "version": "1.6.26",
"mcversion": "1.12.2", "mcversion": "1.12.2",
"url": "", "url": "",
"updateUrl": "", "updateUrl": "",