diff options
Diffstat (limited to 'src/main/java/gregtech/api/enchants')
3 files changed, 196 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/enchants/Enchantment_EnderDamage.java b/src/main/java/gregtech/api/enchants/Enchantment_EnderDamage.java new file mode 100644 index 0000000000..07c13b3509 --- /dev/null +++ b/src/main/java/gregtech/api/enchants/Enchantment_EnderDamage.java @@ -0,0 +1,72 @@ +package gregtech.api.enchants; + +import net.minecraft.enchantment.EnchantmentDamage; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.boss.EntityDragon; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +import gregtech.api.enums.ConfigCategories; +import gregtech.api.enums.Materials; +import gregtech.api.util.GT_Config; +import gregtech.api.util.GT_LanguageManager; + +public class Enchantment_EnderDamage extends EnchantmentDamage { + + public static Enchantment_EnderDamage INSTANCE; + + public Enchantment_EnderDamage() { + super(GT_Config.addIDConfig(ConfigCategories.IDs.enchantments, "Disjunction", 15), 2, -1); + GT_LanguageManager.addStringLocalization(getName(), "Disjunction"); + Materials.Silver.setEnchantmentForTools(this, 2); + Materials.Mercury.setEnchantmentForTools(this, 3); + Materials.Electrum.setEnchantmentForTools(this, 3); + Materials.SterlingSilver.setEnchantmentForTools(this, 4); + Materials.AstralSilver.setEnchantmentForTools(this, 5); + INSTANCE = this; + } + + @Override + public int getMinEnchantability(int aLevel) { + return 5 + (aLevel - 1) * 8; + } + + @Override + public int getMaxEnchantability(int aLevel) { + return this.getMinEnchantability(aLevel) + 20; + } + + @Override + public int getMaxLevel() { + return 5; + } + + @Override + public void func_151367_b(EntityLivingBase aHurtEntity, Entity aDamagingEntity, int aLevel) { + if ((aHurtEntity instanceof EntityEnderman || aHurtEntity instanceof EntityDragon + || (aHurtEntity.getClass() + .getName() + .contains(".") + && aHurtEntity.getClass() + .getName() + .substring( + aHurtEntity.getClass() + .getName() + .lastIndexOf(".")) + .contains("Ender")))) { + // Weakness causes Endermen to not be able to teleport with GT being installed. + aHurtEntity + .addPotionEffect(new PotionEffect(Potion.weakness.id, aLevel * 200, Math.max(1, (5 * aLevel) / 7))); + // They also get Poisoned. If you have this Enchant on an Arrow, you can kill the Ender Dragon easier. + aHurtEntity + .addPotionEffect(new PotionEffect(Potion.poison.id, aLevel * 200, Math.max(1, (5 * aLevel) / 7))); + } + } + + @Override + public String getName() { + return "enchantment.damage.endermen"; + } +} diff --git a/src/main/java/gregtech/api/enchants/Enchantment_Hazmat.java b/src/main/java/gregtech/api/enchants/Enchantment_Hazmat.java new file mode 100644 index 0000000000..ecbe654698 --- /dev/null +++ b/src/main/java/gregtech/api/enchants/Enchantment_Hazmat.java @@ -0,0 +1,56 @@ +package gregtech.api.enchants; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnumEnchantmentType; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; + +import gregtech.api.enums.ConfigCategories; +import gregtech.api.util.GT_Config; +import gregtech.api.util.GT_LanguageManager; + +public class Enchantment_Hazmat extends Enchantment { + + public static Enchantment_Hazmat INSTANCE; + + public Enchantment_Hazmat() { + super(GT_Config.addIDConfig(ConfigCategories.IDs.enchantments, "Hazmat", 13), 0, EnumEnchantmentType.armor); + GT_LanguageManager.addStringLocalization(getName(), "Hazmat"); + INSTANCE = this; + } + + @Override + public int getMinEnchantability(int aLevel) { + return 50; + } + + @Override + public int getMaxEnchantability(int aLevel) { + return 100; + } + + @Override + public int getMaxLevel() { + return 1; + } + + @Override + public boolean canApply(ItemStack aStack) { + return aStack != null && (aStack.getItem() instanceof ItemArmor); + } + + @Override + public boolean canApplyAtEnchantingTable(ItemStack itemStack) { + return false; + } + + @Override + public boolean isAllowedOnBooks() { + return false; + } + + @Override + public String getName() { + return "enchantment.protection.hazmat"; + } +} diff --git a/src/main/java/gregtech/api/enchants/Enchantment_Radioactivity.java b/src/main/java/gregtech/api/enchants/Enchantment_Radioactivity.java new file mode 100644 index 0000000000..e68e55cd6a --- /dev/null +++ b/src/main/java/gregtech/api/enchants/Enchantment_Radioactivity.java @@ -0,0 +1,68 @@ +package gregtech.api.enchants; + +import net.minecraft.enchantment.EnchantmentDamage; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; + +import gregtech.api.enums.ConfigCategories; +import gregtech.api.enums.Materials; +import gregtech.api.util.GT_Config; +import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_Utility; + +public class Enchantment_Radioactivity extends EnchantmentDamage { + + public static Enchantment_Radioactivity INSTANCE; + + public Enchantment_Radioactivity() { + super(GT_Config.addIDConfig(ConfigCategories.IDs.enchantments, "Radioactivity", 14), 0, -1); + GT_LanguageManager.addStringLocalization(getName(), "Radioactivity"); + Materials.Plutonium.setEnchantmentForTools(this, 1) + .setEnchantmentForArmors(this, 1); + Materials.Uranium235.setEnchantmentForTools(this, 2) + .setEnchantmentForArmors(this, 2); + Materials.Plutonium241.setEnchantmentForTools(this, 3) + .setEnchantmentForArmors(this, 3); + Materials.NaquadahEnriched.setEnchantmentForTools(this, 4) + .setEnchantmentForArmors(this, 4); + Materials.Naquadria.setEnchantmentForTools(this, 5) + .setEnchantmentForArmors(this, 5); + INSTANCE = this; + } + + @Override + public int getMinEnchantability(int aLevel) { + return Integer.MAX_VALUE; + } + + @Override + public int getMaxEnchantability(int aLevel) { + return 0; + } + + @Override + public int getMaxLevel() { + return 5; + } + + @Override + public boolean canApply(ItemStack itemStack) { + return false; + } + + @Override + public boolean isAllowedOnBooks() { + return false; + } + + @Override + public void func_151367_b(EntityLivingBase aHurtEntity, Entity aDamagingEntity, int aLevel) { + GT_Utility.applyRadioactivity(aHurtEntity, aLevel, 1); + } + + @Override + public String getName() { + return "enchantment.damage.radioactivity"; + } +} |