aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordraknyte1 <draknyte1@hotmail.com>2017-02-28 23:46:19 +1000
committerdraknyte1 <draknyte1@hotmail.com>2017-02-28 23:46:19 +1000
commitda81c092a169ea4c06cf1fdab05af930d2be3db2 (patch)
tree5549209f73af7b3d9294b30f04c7673d2de98ecc
parent70eaed84ca2fe532f0417d11923096abe0ccbb69 (diff)
downloadGT5-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
-rw-r--r--src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java73
-rw-r--r--src/Java/gtPlusPlus/core/util/item/ItemUtils.java23
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;