Skip to content

Commit

Permalink
Merge branch 'master' of github.com:mDiyo/TinkersConstruct
Browse files Browse the repository at this point in the history
  • Loading branch information
progwml6 committed Sep 12, 2013
2 parents f6018b6 + 5b3c6d1 commit 8e41fb6
Show file tree
Hide file tree
Showing 43 changed files with 1,182 additions and 2 deletions.
55 changes: 55 additions & 0 deletions src/mods/battlegear2/api/IArrowContainer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package mods.battlegear2.api;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@Deprecated
public interface IArrowContainer{

/**
*
* @param stack The {@link #ItemStack} representing this item
* @param bow The bow trying to use this container
* @param player The {@link #EntityPlayer} using the bow
* @return true if the item contains at least one arrow
*/
public boolean hasArrowFor(ItemStack stack, ItemStack bow, EntityPlayer player);
/**
* The arrow spawned when bow is used with this non empty container equipped
* @param stack The {@link #ItemStack} representing this item
* @param charge Amount of charge in the bow, ranging from 0.2F to 2.0F
* @param player The {@link #EntityPlayer} using the bow
* @param world
* @return the arrow entity to spawn when bow is used
*/
public EntityArrow getArrowType(ItemStack stack, World world, EntityPlayer player, float charge);
/**
* Action to take after an arrow has been fired
* Usually equal to removing an arrow from the container
* @param player The {@link #EntityPlayer} using the bow
* @param world
* @param stack The {@link #ItemStack} representing this item
* @param bow The bow which fired
* @param arrow the arrow fired
*/
public void onArrowFired(World world, EntityPlayer player, ItemStack stack, ItemStack bow, EntityArrow arrow);
/**
* Called before the arrow is fired from this container
* @param arrowEvent Used to decide bow damage, bow sound and arrow enchantment
*/
public void onPreArrowFired(QuiverArrowEvent arrowEvent);
/**
* Called when the container is put on a crafting bench with vanilla arrows
* @param stack
* @return True to receive {@link #addArrows(ItemStack, int)}
*/
public boolean isCraftableWithArrows(ItemStack stack);
/**
* Crafts the item with vanilla arrows
* @param stack
* @param arrows Number of vanilla arrows on the crafting bench
* @return Number of vanilla arrows that couldn't fit in
*/
public int addArrows(ItemStack stack, int arrows);
}
99 changes: 99 additions & 0 deletions src/mods/battlegear2/api/IArrowContainer2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package mods.battlegear2.api;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public interface IArrowContainer2 {

/**
* Returns the maximum amout of slots in the arrow container
* @param container {@link #ItemStack} representing this item
* @return the amount of slots
*/
public int getSlotCount(ItemStack container);

/**
* Returns the currently selected slot in the arrow container
* @param container {@link #ItemStack} representing this item
* @return the currently selected slot
*/
public int getSelectedSlot(ItemStack container);

/**
* Sets the currently selected slot to the given value
* @param container {@link #ItemStack} representing this item
* @param newSlot the new slot index
*/
public void setSelectedSlot(ItemStack container, int newSlot);

/**
* Returns the itemStack in the currently selected slot
* @param container The {@link #ItemStack} representing this item
* @param slot the slot index
* @return The {@link #ItemStack} in the given slot.
*/
public ItemStack getStackInSlot(ItemStack container, int slot);

/**
* Sets places the given item stack in the give slot
* @param container {@link #ItemStack} representing this item
* @param slot the slot index
* @param container {@link #ItemStack} representing the new stack
*/
public void setStackInSlot(ItemStack container, int slot, ItemStack stack);


/**
*
* @param container The {@link #ItemStack} representing this item
* @param bow The bow trying to use this container
* @param player The {@link #EntityPlayer} using the bow
* @return true if the item contains at least one arrow in the selected slot
*/
public boolean hasArrowFor(ItemStack container, ItemStack bow, EntityPlayer player, int slot);

/**
* The arrow spawned when bow is used with this non empty container equipped
* @param container The {@link #ItemStack} representing this item
* @param charge Amount of charge in the bow, ranging from 0.2F to 2.0F
* @param player The {@link #EntityPlayer} using the bow
* @param world
* @return the arrow entity to spawn when bow is used
*/
public EntityArrow getArrowType(ItemStack container, World world, EntityPlayer player, float charge);
/**
* Action to take after an arrow has been fired
* Usually equal to removing an arrow from the container
* @param player The {@link #EntityPlayer} using the bow
* @param world
* @param container The {@link #ItemStack} representing this item
* @param bow The bow which fired
* @param arrow the arrow fired
*/
public void onArrowFired(World world, EntityPlayer player, ItemStack container, ItemStack bow, EntityArrow arrow);
/**
* Called before the arrow is fired from this container
* @param arrowEvent Used to decide bow damage, bow sound and arrow enchantment
*/
public void onPreArrowFired(QuiverArrowEvent arrowEvent);
/**
* Called when the container is put on a crafting bench with other items
* @param container The {@link #ItemStack} representing this item
* @param arrowStack The {@link #ItemStack} representing other items
* @return True to receive {@link #addArrows(ItemStack, ItemStack)}
*/
public boolean isCraftableWithArrows(ItemStack contaner, ItemStack arrowStack);

/**
* Crafts the item with the items from {@link #isCraftableWithArrows(ItemStack, ItemStack)}
* @param container The {@link #ItemStack} representing this item
* @param arrows Another valid item on the crafting bench
* @return Number of arrows that couldn't fit in
*/
public ItemStack addArrows(ItemStack container, ItemStack newStack);



}
14 changes: 14 additions & 0 deletions src/mods/battlegear2/api/IBackStabbable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package mods.battlegear2.api;

import net.minecraft.entity.EntityLivingBase;

public interface IBackStabbable {

/**
* Action to perform on back stabbing
* @param entityHit
* @param entityHitting
* @return true if it adds an hitting action
*/
public boolean onBackStab(EntityLivingBase entityHit, EntityLivingBase entityHitting);
}
70 changes: 70 additions & 0 deletions src/mods/battlegear2/api/IBattlegearWeapon.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package mods.battlegear2.api;

import cpw.mods.fml.relauncher.Side;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;

public interface IBattlegearWeapon {

/**
* Returns true if the weapon will allow other weapons to be placed in the partner offhand slot
*/
public boolean willAllowOffhandWeapon();

/**
* Will allow shield
*/
public boolean willAllowShield();

/**
* Returns true if the weapon be dual wielded in the offhand slot
*/
public boolean isOffhandHandDualWeapon();

/**
* Returns true if the weapon should always be sheathed on the back, false if it should be sheathed on the hip
*/
public boolean sheatheOnBack();

/**
* Perform any function when the item is held in the offhand and the user right clicks an entity.
* This is generally used to attack an entity with the offhand item. If this is the case the event should
* be canceled to prevent any default right clicking events (Eg Villager Trading)
*
* @param event the OffhandAttackEvent that was generated
* @param mainhandItem the ItemStack currently being held in the right hand
* @param offhandItem the ItemStack currently being held in the left hand
* @return true if the off hand swing animation should be performed
*/
public boolean offhandAttackEntity(OffhandAttackEvent event, ItemStack mainhandItem, ItemStack offhandItem);

/**
* Perform any function when the item is held in the offhand and the user right clicks "Air".
*
* @param event the PlayerInteractEvent that was generated
* @param mainhandItem the ItemStack currently being held in the right hand
* @param offhandItem the ItemStack currently being held in the left hand
* @return true if the off hand swing animation should be performed
*/
public boolean offhandClickAir(PlayerInteractEvent event, ItemStack mainhandItem, ItemStack offhandItem);

/**
* Perform any function when the item is held in the offhand and the user right clicks a block.
* Note that this will happen prior to the activation of any activation functions of blocks
*
* @param event the PlayerInteractEvent that was generated
* @param mainhandItem the ItemStack currently being held in the right hand
* @param offhandItem the ItemStack currently being held in the left hand
*/
public boolean offhandClickBlock(PlayerInteractEvent event, ItemStack mainhandItem, ItemStack offhandItem);

/**
* Perform any passive effects on each game tick when the item is held in the offhand
*
* @param effectiveSide the effective side the method was called from
* @param mainhandItem the ItemStack currently being held in the right hand
* @param offhandItem the ItemStack currently being held in the left hand
*/
public void performPassiveEffects(Side effectiveSide, ItemStack mainhandItem, ItemStack offhandItem);

}
31 changes: 31 additions & 0 deletions src/mods/battlegear2/api/IDyable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package mods.battlegear2.api;


import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;

//This is a tempory fix until we get the heradry system up and running
public interface IDyable {

/**
* Return whether the specified armor ItemStack has a color.
*/
public boolean hasColor(ItemStack par1ItemStack);


/**
* Return the color for the specified armor ItemStack.
*/
public int getColor(ItemStack par1ItemStack);

public void setColor(ItemStack dyable, int rgb);

/**
* Remove the color from the specified armor ItemStack.
*/
public void removeColor(ItemStack par1ItemStack);

public int getDefaultColor(ItemStack par1ItemStack);


}
12 changes: 12 additions & 0 deletions src/mods/battlegear2/api/IExtendedReachWeapon.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package mods.battlegear2.api;

import net.minecraft.item.ItemStack;

public interface IExtendedReachWeapon {
/**
* The distance the weapon will hit (note this will ONLY work for main hand weapons)
* @param stack
* @return
*/
public float getReachModifierInBlocks(ItemStack stack);
}
15 changes: 15 additions & 0 deletions src/mods/battlegear2/api/IHitTimeModifier.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package mods.battlegear2.api;

import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;

public interface IHitTimeModifier {
/**
*
* @param entityHit
* @return The amount to modify the hit shield
*/
public int getHitTime(ItemStack stack, EntityLivingBase entityHit);

}
13 changes: 13 additions & 0 deletions src/mods/battlegear2/api/IPenetrateWeapon.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package mods.battlegear2.api;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;

public interface IPenetrateWeapon {
/**
* The amount of damage bypassing armor
* @param stack The {@link net.minecraft.item.ItemStack} representative of the item dealing the hit.
* @return the amount of damage that bypasses armour
*/
public int getPenetratingPower(ItemStack stack);
}
23 changes: 23 additions & 0 deletions src/mods/battlegear2/api/IPotionEffect.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package mods.battlegear2.api;


import net.minecraft.entity.EntityLivingBase;
import net.minecraft.potion.PotionEffect;

import java.util.Map;

public interface IPotionEffect {


/**
* Returns a map containing the potion effects to apply to an entity hit by the weapon. Each effect
* has a float value associated with the chance of applying the effect. Note that the "dice roll" only
* occurs once so any value under this roll will be applied.
*
* @param entityHit The entity the effect will be applied to.
* @param entityHitting
* @return A Map of {@link PotionEffect} with chance value ranging from 0 to 1, to be dealt to the entityHit
*/
public Map<PotionEffect,Float> getEffectsOnHit(EntityLivingBase entityHit, EntityLivingBase entityHitting);

}
54 changes: 54 additions & 0 deletions src/mods/battlegear2/api/IShield.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package mods.battlegear2.api;


import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;

public interface IShield {

/**
* Gets the decay rate for the stamina bar when the shield is in use.
* The value should be between 0 and 1. The duration of maximum blocking can be calculated
* by 1/decayRate/20.
*
* @param shield The {@link #ItemStack} representing the shield
* @return a value between 0 & 1 representing the decay rate per tick
*/
public float getDecayRate(ItemStack shield);

/**
* Returns true if the current shield can and should block the given damage source
*
* @param shield The {@link #ItemStack} representing the shield
* @param source The {@link #DamageSource} representing the current damage
* @return true if the shield can block the given damage type
*/
public boolean canBlock(ItemStack shield, DamageSource source);

/**
* Gets the extra decay rate to the stamina bar when the shield is damaged
*
* @param shield The {@link #ItemStack} representing the shield
* @param amount The amount of damage the shield has absorbed
* @return a value between 0 & 1 representing the decay rate
*/
public float getDamageDecayRate(ItemStack shield, float amount);

/**
* Returns the block angle in degrees that the shield can block.
* This angle is taken as 0 degrees being directly in front of the player. The shield
* will block between -blockAngle to blockangle
* @param shield The {@link #ItemStack} representing the shield
* @return The maximum angle the shield should be able to block at
*/
public float getBlockAngle(ItemStack shield);


/**
* Returns the time a shield bash should take to be preformed. A shield bash will disallow actions
* for the number of ticks given and will knockback an oponent at time/2
*
* @return The amount of ticks the shield bash animation will play
*/
public int getBashTimer(ItemStack shield);
}

0 comments on commit 8e41fb6

Please sign in to comment.