diff options
author | draknyte1 <draknyte1@hotmail.com> | 2017-02-28 23:46:19 +1000 |
---|---|---|
committer | draknyte1 <draknyte1@hotmail.com> | 2017-02-28 23:46:19 +1000 |
commit | da81c092a169ea4c06cf1fdab05af930d2be3db2 (patch) | |
tree | 5549209f73af7b3d9294b30f04c7673d2de98ecc /src/Java | |
parent | 70eaed84ca2fe532f0417d11923096abe0ccbb69 (diff) | |
download | GT5-Unofficial-da81c092a169ea4c06cf1fdab05af930d2be3db2.tar.gz GT5-Unofficial-da81c092a169ea4c06cf1fdab05af930d2be3db2.tar.bz2 GT5-Unofficial-da81c092a169ea4c06cf1fdab05af930d2be3db2.zip |
+ Initial work done for Multitools to have the material appropriate enchantments. Thanks to Kate_CW for reminding me to re-add this feature in a working state :D
Diffstat (limited to 'src/Java')
-rw-r--r-- | src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java | 73 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/util/item/ItemUtils.java | 23 |
2 files changed, 88 insertions, 8 deletions
diff --git a/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java b/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java index a0b884f97d..55584faf2d 100644 --- a/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java +++ b/src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java @@ -3,14 +3,19 @@ package gtPlusPlus.core.item.tool.staballoy; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.item.ItemUtils; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.recipe.RecipeUtils; import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.ItemStack; +import net.minecraft.item.*; import net.minecraft.world.World; + +import java.util.List; + import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,8 +36,9 @@ public class MultiPickaxeBase extends StaballoyPickaxe{ protected final String materialName; protected final String displayName; public boolean isValid = true; + private final Pair<?, ?> enchantment; - public MultiPickaxeBase(String unlocalizedName, ToolMaterial material, int materialDurability, int colour) { + public MultiPickaxeBase(String unlocalizedName, ToolMaterial material, int materialDurability, int colour, Object enchant) { super(Utils.sanitizeString(unlocalizedName), material); this.setUnlocalizedName(Utils.sanitizeString(unlocalizedName)); //this.setTextureName(CORE.MODID + ":" + "itemPickaxe"); @@ -45,6 +51,21 @@ public class MultiPickaxeBase extends StaballoyPickaxe{ this.displayName = unlocalizedName; this.setCreativeTab(AddToCreativeTab.tabTools); miningLevel = material.getHarvestLevel(); + + + + if (enchant != null){ + if (enchant instanceof Pair){ + this.enchantment = (Pair<?, ?>) enchant; + } + else { + this.enchantment = null; + } + } + else { + this.enchantment = null; + } + try {isValid = addRecipe();} catch (Throwable e){} if (colour != 0 && isValid && materialDurability > 10000){ if (GameRegistry.findItem(CORE.MODID, Utils.sanitizeString(unlocalizedName)) == null){ @@ -228,4 +249,50 @@ public class MultiPickaxeBase extends StaballoyPickaxe{ return false; } + @Override + public void onCreated(ItemStack mThisItem, World mWorld, EntityPlayer mPlayer) { + Enchantment enchant = null; + int enchantmentLevel = 0; + Pair<?, ?> Y = this.enchantment; + if (Y != null){ + if (Y.getKey() != null){ + enchant = (Enchantment) ((Pair<?, ?>) this.enchantment).getKey(); + } + if (Y.getValue() != null){ + enchantmentLevel = (byte) ((Pair<?, ?>) this.enchantment).getValue(); + } + } + ItemStack itemToEnchant = mThisItem; + if (enchant != null && enchantmentLevel != 0 && enchantmentLevel >= 1){ + itemToEnchant.addEnchantment(enchant, enchantmentLevel); + } + super.onCreated(itemToEnchant, mWorld, mPlayer); + } + + @Override + public void getSubItems(Item mItem, CreativeTabs mCreativeTab, List mList) { + Enchantment enchant = null; + int enchantmentLevel = 0; + Pair<?, ?> Y = this.enchantment; + if (Y != null){ + if (Y.getKey() != null){ + enchant = (Enchantment) ((Pair<?, ?>) this.enchantment).getKey(); + } + if (Y.getValue() != null){ + enchantmentLevel = (byte) ((Pair<?, ?>) this.enchantment).getValue(); + } + } + + Item thisItem = mItem; + ItemStack itemToEnchant = ItemUtils.getSimpleStack(thisItem); + if (enchant != null && enchantmentLevel != 0 && enchantmentLevel >= 1){ + itemToEnchant.addEnchantment(enchant, enchantmentLevel); + mList.add(itemToEnchant); + } + else { + mList.add(new ItemStack(thisItem, 1, 0)); + } + + } + } diff --git a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java index 91b6835415..83a8fff751 100644 --- a/src/Java/gtPlusPlus/core/util/item/ItemUtils.java +++ b/src/Java/gtPlusPlus/core/util/item/ItemUtils.java @@ -16,6 +16,7 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.array.Pair; import gtPlusPlus.core.util.materials.MaterialUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.core.util.wrapper.var; @@ -305,15 +306,16 @@ public class ItemUtils { public static MultiPickaxeBase generateMultiPick(boolean GT_Durability, Materials material){ ToolMaterial customMaterial = Utils.generateToolMaterialFromGT(material); - return generateMultiPick(GT_Durability, customMaterial, material.mDefaultLocalName, material.mDurability, material.mRGBa); + Object enchant = new Pair(material.mEnchantmentTools, material.mEnchantmentToolsLevel); + return generateMultiPick(GT_Durability, customMaterial, material.mDefaultLocalName, material.mDurability, material.mRGBa, enchant); } public static MultiPickaxeBase generateMultiPick(Material material){ ToolMaterial customMaterial = Utils.generateToolMaterial(material); - return generateMultiPick(true, customMaterial, material.getLocalizedName(), (int) material.vDurability, material.getRGBA()); + return generateMultiPick(true, customMaterial, material.getLocalizedName(), (int) material.vDurability, material.getRGBA(), null); } - public static MultiPickaxeBase generateMultiPick(boolean GT_Durability, ToolMaterial customMaterial, String name, int durability, short[] rgba){ + public static MultiPickaxeBase generateMultiPick(boolean GT_Durability, ToolMaterial customMaterial, String name, int durability, short[] rgba, Object enchantment){ Utils.LOG_INFO("Generating a Multi-Pick out of "+name); short[] rgb = rgba; int dur = customMaterial.getMaxUses(); @@ -330,12 +332,23 @@ public class ItemUtils { Utils.LOG_WARNING("Still too low, "+name+" will now go unused."); return null; } + + Object enchant; + if (enchantment != null){ + if (enchantment instanceof Pair){ + enchant = enchantment; + } + } + else { + enchant = null; + } + MultiPickaxeBase MP_Redstone = new MultiPickaxeBase( name+" Multipick", (customMaterial), dur, - Utils.rgbtoHexValue(rgb[0],rgb[1],rgb[2]) - ); + Utils.rgbtoHexValue(rgb[0],rgb[1],rgb[2]), + enchantment); if (MP_Redstone.isValid){ return MP_Redstone; |