aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlkalus <draknyte1@hotmail.com>2017-11-11 01:56:15 +1000
committerAlkalus <draknyte1@hotmail.com>2017-11-11 01:56:15 +1000
commitbab1fd921740a9184f67f3bbb34500221b2029b7 (patch)
tree2153566057165b5b42e656a818e87d6e2f6f36e0 /src
parent40d2c3e86e55ebdffec77dad73b67f49ddf7babd (diff)
downloadGT5-Unofficial-bab1fd921740a9184f67f3bbb34500221b2029b7.tar.gz
GT5-Unofficial-bab1fd921740a9184f67f3bbb34500221b2029b7.tar.bz2
GT5-Unofficial-bab1fd921740a9184f67f3bbb34500221b2029b7.zip
+ Added in a modular bauble.
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/core/item/bauble/BaseBauble.java12
-rw-r--r--src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java117
-rw-r--r--src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java128
3 files changed, 256 insertions, 1 deletions
diff --git a/src/Java/gtPlusPlus/core/item/bauble/BaseBauble.java b/src/Java/gtPlusPlus/core/item/bauble/BaseBauble.java
index 61da0d2f5c..60d5aa4e57 100644
--- a/src/Java/gtPlusPlus/core/item/bauble/BaseBauble.java
+++ b/src/Java/gtPlusPlus/core/item/bauble/BaseBauble.java
@@ -16,6 +16,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import gtPlusPlus.core.creative.AddToCreativeTab;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.nbt.ModularArmourUtils.BT;
import gtPlusPlus.core.util.nbt.NBTUtils;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
@@ -35,7 +36,7 @@ public class BaseBauble extends Item implements IBauble{
* Implementation suggestions taken from Botania.
*/
- private final BaubleType mThisBauble;
+ private BaubleType mThisBauble;
private final String mDisplayName;
private List<String> damageNegations = new ArrayList<String>();
Multimap<String, AttributeModifier> attributes = HashMultimap.create();
@@ -82,6 +83,15 @@ public class BaseBauble extends Item implements IBauble{
public BaubleType getBaubleType(ItemStack arg0) {
return mThisBauble;
}
+
+ public boolean SetBaubleType(BT arg0) {
+ BaubleType temp = this.mThisBauble;
+ this.mThisBauble = arg0.getType();
+ if (this.mThisBauble != temp){
+ return true;
+ }
+ return false;
+ }
@Override
public void onEquipped(ItemStack stack, EntityLivingBase entity) {
diff --git a/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java b/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java
new file mode 100644
index 0000000000..755f94ef8d
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/bauble/ModularBauble.java
@@ -0,0 +1,117 @@
+package gtPlusPlus.core.item.bauble;
+
+import java.util.List;
+
+import com.google.common.collect.Multimap;
+
+import baubles.api.BaubleType;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.nbt.ModularArmourUtils;
+import gtPlusPlus.core.util.nbt.ModularArmourUtils.BT;
+import gtPlusPlus.core.util.nbt.ModularArmourUtils.Modifiers;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.SharedMonsterAttributes;
+import net.minecraft.entity.ai.attributes.AttributeModifier;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.EnumChatFormatting;
+
+public class ModularBauble extends BaseBauble{
+
+
+ public ModularBauble() {
+ super(BaubleType.AMULET, "Does Fancy Things.");
+ addDamageNegation(DamageSource.wither);
+ this.setTextureName(CORE.MODID + ":" + "itemKeyGold");
+ }
+
+ @Override
+ void fillModifiers(Multimap<String, AttributeModifier> attributes, ItemStack stack) {
+ attributes.put(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(), new AttributeModifier(getBaubleUUID(stack), "Bauble modifier", 40, 0));
+ }
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
+ //Bauble Type
+ if (ModularArmourUtils.getBaubleType(stack) == BaubleType.AMULET){
+ list.add(EnumChatFormatting.GRAY+"Current Form: "+EnumChatFormatting.RED+"Amulet"+EnumChatFormatting.GRAY+".");
+ list.add(EnumChatFormatting.GRAY+"You can change this into a Ring or a Belt.");
+ }
+ else if (ModularArmourUtils.getBaubleType(stack) == BaubleType.RING){
+ list.add(EnumChatFormatting.GRAY+"Current Form: "+EnumChatFormatting.RED+"Ring"+EnumChatFormatting.GRAY+".");
+ list.add(EnumChatFormatting.GRAY+"You can change this into an Amulet or a Belt.");
+ }
+ else if (ModularArmourUtils.getBaubleType(stack) == BaubleType.BELT){
+ list.add(EnumChatFormatting.GRAY+"Current Form: "+EnumChatFormatting.RED+"Belt"+EnumChatFormatting.GRAY+".");
+ list.add(EnumChatFormatting.GRAY+"You can change this into a Ring or an Amulet.");
+ }
+
+ //Get Stats
+ int mStatlevel = 0;
+ if ((mStatlevel = ModularArmourUtils.getModifierLevel(stack, Modifiers.BOOST_DAMAGE)) > 0){
+ list.add(EnumChatFormatting.GRAY+"Damage Boost: "+EnumChatFormatting.DARK_RED+mStatlevel+EnumChatFormatting.GRAY+".");
+ }
+ if ((mStatlevel = ModularArmourUtils.getModifierLevel(stack, Modifiers.BOOST_DEF)) > 0){
+ list.add(EnumChatFormatting.GRAY+"Defence Boost: "+EnumChatFormatting.BLUE+mStatlevel+EnumChatFormatting.GRAY+".");
+ }
+ if ((mStatlevel = ModularArmourUtils.getModifierLevel(stack, Modifiers.BOOST_HP)) > 0){
+ list.add(EnumChatFormatting.GRAY+"Health Boost: "+EnumChatFormatting.RED+mStatlevel+EnumChatFormatting.GRAY+".");
+ }
+ if ((mStatlevel = ModularArmourUtils.getModifierLevel(stack, Modifiers.BOOST_SPEED)) > 0){
+ list.add(EnumChatFormatting.GRAY+"Speed Boost: "+EnumChatFormatting.WHITE+mStatlevel+EnumChatFormatting.GRAY+".");
+ }
+ if ((mStatlevel = ModularArmourUtils.getModifierLevel(stack, Modifiers.BOOST_MINING)) > 0){
+ list.add(EnumChatFormatting.GRAY+"Mining Boost: "+EnumChatFormatting.DARK_GRAY+mStatlevel+EnumChatFormatting.GRAY+".");
+ }
+ if ((mStatlevel = ModularArmourUtils.getModifierLevel(stack, Modifiers.BOOST_HOLY)) > 0){
+ list.add(EnumChatFormatting.GRAY+"Holy Boost: "+EnumChatFormatting.GOLD+mStatlevel+EnumChatFormatting.GRAY+".");
+ }
+
+ super.addInformation(stack, player, list, bool);
+ }
+
+ @Override
+ public boolean addDamageNegation(DamageSource damageSource) {
+ // TODO Auto-generated method stub
+ return super.addDamageNegation(damageSource);
+ }
+
+ @Override
+ public boolean canEquip(ItemStack arg0, EntityLivingBase arg1) {
+ if (ModularArmourUtils.getBaubleTypeID(arg0) == BT.TYPE_AMULET.getID()){
+ this.SetBaubleType(BT.TYPE_AMULET);
+ }
+ else if (ModularArmourUtils.getBaubleTypeID(arg0) == BT.TYPE_RING.getID()){
+ this.SetBaubleType(BT.TYPE_RING);
+ }
+ else if (ModularArmourUtils.getBaubleTypeID(arg0) == BT.TYPE_BELT.getID()){
+ this.SetBaubleType(BT.TYPE_BELT);
+ }
+ else {
+ this.SetBaubleType(BT.TYPE_RING);
+ }
+ return super.canEquip(arg0, arg1);
+ }
+
+ @Override
+ public BaubleType getBaubleType(ItemStack arg0) {
+ return ModularArmourUtils.getBaubleType(arg0);
+ }
+
+ @Override
+ public void onEquipped(ItemStack stack, EntityLivingBase entity) {
+ // TODO Auto-generated method stub
+ super.onEquipped(stack, entity);
+ }
+
+ @Override
+ public void onUnequipped(ItemStack stack, EntityLivingBase player) {
+ // TODO Auto-generated method stub
+ super.onUnequipped(stack, player);
+ }
+
+
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java b/src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java
new file mode 100644
index 0000000000..5fb70ab540
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java
@@ -0,0 +1,128 @@
+package gtPlusPlus.core.util.nbt;
+
+import baubles.api.BaubleType;
+import gregtech.api.util.GT_Utility;
+import net.minecraft.block.Block.SoundType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class ModularArmourUtils {
+
+ public static ItemStack addComponent(ItemStack tArmour, ItemStack[] tComponents){
+ if (tArmour != null){
+ ItemStack rArmour = NBTUtils.writeItemsToGtCraftingComponents(tArmour, tComponents, true);
+ if (rArmour != null){
+
+ }
+ }
+ return null;
+ }
+
+ public static enum Modifiers {
+ BOOST_HP("skill.hpboost"),
+ BOOST_DEF("skill.defenceboost"),
+ BOOST_SPEED("skill.speedboost"),
+ BOOST_MINING("skill.miningboost"),
+ BOOST_DAMAGE("skill.damageboost"),
+ BOOST_HOLY("skill.holyboost");
+ private String MODIFIER_NAME;
+ private Modifiers (final String mModifier){
+ this.MODIFIER_NAME = mModifier;
+ }
+ public String getModifier() {
+ return this.MODIFIER_NAME;
+ }
+ public boolean isValidLevel(int i){
+ if (i >= 0 && i <= 10){
+ return true;
+ }
+ return false;
+ }
+ }
+
+ public static enum BT {
+ TYPE_AMULET(BaubleType.AMULET, 0),
+ TYPE_RING(BaubleType.RING, 1),
+ TYPE_BELT(BaubleType.BELT, 2);
+ private final BaubleType mType;
+ private final int mID;
+ private final String mBaubleType;
+ private BT (final BaubleType tType, int tID){
+ this.mType = tType;
+ this.mID = tID;
+ this.mBaubleType = tType.name().toLowerCase();
+ }
+ public BaubleType getType(){
+ return this.mType;
+ }
+ public BaubleType getBaubleByID(int tID){
+ if (tID == 0){
+ return BaubleType.AMULET;
+ }
+ else if (tID == 1){
+ return BaubleType.RING;
+ }
+ else if (tID == 2){
+ return BaubleType.BELT;
+ }
+ else {
+ return BaubleType.RING;
+ }
+ }
+
+ public int getID(){
+ return this.mID;
+ }
+
+ public String getTypeAsString(){
+ return this.mBaubleType;
+ }
+ }
+
+ public static void setModifierLevel(ItemStack aStack, Modifiers aMod, int aInt) {
+ NBTTagCompound tNBT = NBTUtils.getNBT(aStack);
+ if (aMod.isValidLevel(aInt)){
+ tNBT.setInteger(aMod.getModifier(), aInt);
+ GT_Utility.ItemNBT.setNBT(aStack, tNBT);
+ }
+ }
+
+ public static int getModifierLevel(ItemStack aStack, Modifiers aMod) {
+ NBTTagCompound tNBT = NBTUtils.getNBT(aStack);
+ return tNBT.getInteger(aMod.getModifier());
+ }
+
+ public static void setBaubleType(ItemStack aStack, BT aMod) {
+ NBTTagCompound tNBT = NBTUtils.getNBT(aStack);
+ if (aMod != null){
+ tNBT.setInteger("mBaubleType", aMod.getID());
+ GT_Utility.ItemNBT.setNBT(aStack, tNBT);
+ }
+ }
+
+ public static int getBaubleTypeID(ItemStack aStack) {
+ NBTTagCompound tNBT = NBTUtils.getNBT(aStack);
+ return tNBT.getInteger("mBaubleType");
+ }
+
+ public static BaubleType getBaubleType(ItemStack aStack) {
+ NBTTagCompound tNBT = NBTUtils.getNBT(aStack);
+ return getBaubleByID(tNBT.getInteger("mBaubleType"));
+ }
+
+ public static BaubleType getBaubleByID(int tID){
+ if (tID == 0){
+ return BaubleType.AMULET;
+ }
+ else if (tID == 1){
+ return BaubleType.RING;
+ }
+ else if (tID == 2){
+ return BaubleType.BELT;
+ }
+ else {
+ return BaubleType.RING;
+ }
+ }
+
+}