mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
mods and attribute modifiers for armors
This commit is contained in:
parent
956a7bb106
commit
565133eefb
@ -808,6 +808,7 @@ item.circuit_targeting_tier5.name=Militärische Schaltplatte (Stufe 5)
|
||||
item.circuit_targeting_tier6.name=Militärische Schaltplatte (Stufe 6)
|
||||
item.cladding_desh.name=Deshbeschlag
|
||||
item.cladding_lead.name=Bleibeschlag
|
||||
item.cladding_obsidian.name=Obsidianhaut
|
||||
item.cladding_paint.name=Bleifarbe
|
||||
item.cladding_rubber.name=Gummibeschlag
|
||||
item.clip_bf.name=BF-Geschosse im Doppelpack
|
||||
@ -1203,6 +1204,9 @@ item.hazmat_plate.name=Strahlenschutzbrustplatte
|
||||
item.hazmat_plate_grey.name=Hochleistungs-Strahlenschutzbrustplatte
|
||||
item.hazmat_plate_red.name=Verbesserte Strahlenschutzbrustplatte
|
||||
item.hazmat_red_kit.name=Lvl 2 Strahlenschutz-Kit
|
||||
item.heart_booster.name=Herzbooster
|
||||
item.heart_container.name=Herzcontainer
|
||||
item.heart_piece.name=Herzteil
|
||||
item.hev_battery.name=Anzugs-Batterie
|
||||
item.hev_boots.name=HEV Mark IV Stiefel
|
||||
item.hev_plate.name=HEV Mark IV Brustpanzer
|
||||
|
||||
@ -808,6 +808,7 @@ item.circuit_targeting_tier5.name=Military Grade Circuit Board (Tier 5)
|
||||
item.circuit_targeting_tier6.name=Military Grade Circuit Board (Tier 6)
|
||||
item.cladding_desh.name=Desh Cladding
|
||||
item.cladding_lead.name=Lead Cladding
|
||||
item.cladding_obsidian.name=Obsidian Skin
|
||||
item.cladding_paint.name=Lead Paint
|
||||
item.cladding_rubber.name=Rubber Cladding
|
||||
item.clip_bf.name=BF-Shell Double Pack
|
||||
@ -1203,6 +1204,9 @@ item.hazmat_plate.name=Hazmat Chestplate
|
||||
item.hazmat_plate_grey.name=High-Performance Hazmat Chestplate
|
||||
item.hazmat_plate_red.name=Advanced Hazmat Chestplate
|
||||
item.hazmat_red_kit.name=Advanced Hazmat Kit
|
||||
item.heart_booster.name=Heart Booster
|
||||
item.heart_container.name=Heart Container
|
||||
item.heart_piece.name=Heart Piece
|
||||
item.hev_battery.name=Suit Battery
|
||||
item.hev_boots.name=HEV Mark IV Boots
|
||||
item.hev_plate.name=HEV Mark IV Chestplate
|
||||
|
||||
BIN
src/main/java/assets/hbm/textures/items/cladding_obsidian.png
Normal file
BIN
src/main/java/assets/hbm/textures/items/cladding_obsidian.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 280 B |
BIN
src/main/java/assets/hbm/textures/items/heart_booster.png
Normal file
BIN
src/main/java/assets/hbm/textures/items/heart_booster.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 319 B |
BIN
src/main/java/assets/hbm/textures/items/heart_container.png
Normal file
BIN
src/main/java/assets/hbm/textures/items/heart_container.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 331 B |
BIN
src/main/java/assets/hbm/textures/items/heart_piece.png
Normal file
BIN
src/main/java/assets/hbm/textures/items/heart_piece.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 312 B |
@ -127,6 +127,7 @@ public class ConsumableRecipes {
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.cladding_rubber, 1), new Object[] { "RCR", "CDC", "RCR", 'R', ModItems.plate_polymer, 'C', "dustCoal", 'D', ModItems.ducttape }));
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.cladding_lead, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_rubber, 'P', "plateLead", 'D', ModItems.ducttape }));
|
||||
GameRegistry.addRecipe(new ItemStack(ModItems.cladding_desh, 1), new Object[] { "DPD", "PRP", "DPD", 'R', ModItems.cladding_lead, 'P', ModItems.plate_desh, 'D', ModItems.ducttape });
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.cladding_obsidian, 1), new Object[] { "OOO", "PDP", "OOO", 'O', Blocks.obsidian, 'P', "plateSteel", 'D', ModItems.ducttape }));
|
||||
|
||||
//Inserts
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.insert_steel, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', "plateIron", 'S', "blockSteel" }));
|
||||
@ -150,6 +151,8 @@ public class ConsumableRecipes {
|
||||
//Special Mods
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.horseshoe_magnet, 1), new Object[] { "L L", "I I", "ILI", 'L', ModItems.lodestone, 'I', "ingotIron" }));
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.industrial_magnet, 1), new Object[] { "SMS", " B ", "SMS", 'S', "ingotSteel", 'M', ModItems.horseshoe_magnet, 'B', ModBlocks.fusion_conductor }));
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.heart_container, 1), new Object[] { "HAH", "ACA", "HAH", 'H', ModItems.heart_piece, 'A', "ingotAluminum", 'C', ModItems.coin_creeper }));
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.heart_booster, 1), new Object[] { "GHG", "MCM", "GHG", 'G', "ingotGold", 'H', ModItems.heart_container, 'M', ModItems.morning_glory, 'C', ModItems.coin_maskman }));
|
||||
|
||||
//Stealth boy
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.stealth_boy, 1), new Object[] { " B", "LI", "LC", 'B', Item.getItemFromBlock(Blocks.stone_button), 'L', Items.leather, 'I', "ingotSteel", 'C', ModItems.circuit_red_copper }));
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.handler;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import com.hbm.items.armor.ItemArmorMod;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
@ -18,6 +20,13 @@ public class ArmorModHandler {
|
||||
public static final int kevlar = 6;
|
||||
public static final int extra = 7;
|
||||
|
||||
public static final UUID[] UUIDs = new UUID[] {
|
||||
UUID.fromString("8d6e5c77-133e-4056-9c80-a9e42a1a0b65"),
|
||||
UUID.fromString("b1b7ee0e-1d14-4400-8037-f7f2e02f21ca"),
|
||||
UUID.fromString("30b50d2a-4858-4e5b-88d4-3e3612224238"),
|
||||
UUID.fromString("426ee0d0-7587-4697-aaef-4772ab202e78")
|
||||
};
|
||||
|
||||
//The key for the NBTTagCompound that holds the armor mods
|
||||
public static final String MOD_COMPOUND_KEY = "ntm_armor_mods";
|
||||
//The key for the specific slot inside the armor mod NBT Tag
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.inventory;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
@ -1803,6 +1803,7 @@ public class ModItems {
|
||||
public static Item cladding_rubber;
|
||||
public static Item cladding_lead;
|
||||
public static Item cladding_desh;
|
||||
public static Item cladding_obsidian;
|
||||
public static Item insert_kevlar;
|
||||
public static Item insert_sapi;
|
||||
public static Item insert_esapi;
|
||||
@ -1819,6 +1820,9 @@ public class ModItems {
|
||||
public static Item bathwater;
|
||||
public static Item bathwater_mk2;
|
||||
public static Item spider_milk;
|
||||
public static Item heart_piece;
|
||||
public static Item heart_container;
|
||||
public static Item heart_booster;
|
||||
|
||||
public static Item hazmat_helmet;
|
||||
public static Item hazmat_plate;
|
||||
@ -2714,11 +2718,12 @@ public class ModItems {
|
||||
cladding_rubber = new ItemModCladding(0.075F).setUnlocalizedName("cladding_rubber").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_rubber");
|
||||
cladding_lead = new ItemModCladding(0.2F).setUnlocalizedName("cladding_lead").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_lead");
|
||||
cladding_desh = new ItemModCladding(0.4F).setUnlocalizedName("cladding_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_desh");
|
||||
insert_kevlar = new ItemModInsert(1F, 0.9F, 1F).setUnlocalizedName("insert_kevlar").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_kevlar");
|
||||
insert_sapi = new ItemModInsert(1F, 0.85F, 1F).setUnlocalizedName("insert_sapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_sapi");
|
||||
insert_esapi = new ItemModInsert(0.95F, 0.8F, 1F).setUnlocalizedName("insert_esapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_esapi");
|
||||
insert_xsapi = new ItemModInsert(0.9F, 0.75F, 1F).setUnlocalizedName("insert_xsapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_xsapi");
|
||||
insert_steel = new ItemModInsert(1F, 0.95F, 0.75F).setUnlocalizedName("insert_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_steel");
|
||||
cladding_obsidian = new ItemModObsidian().setUnlocalizedName("cladding_obsidian").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_obsidian");
|
||||
insert_kevlar = new ItemModInsert(1F, 0.9F, 1F, 1F).setUnlocalizedName("insert_kevlar").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_kevlar");
|
||||
insert_sapi = new ItemModInsert(1F, 0.85F, 1F, 1F).setUnlocalizedName("insert_sapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_sapi");
|
||||
insert_esapi = new ItemModInsert(0.95F, 0.8F, 1F, 1F).setUnlocalizedName("insert_esapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_esapi");
|
||||
insert_xsapi = new ItemModInsert(0.9F, 0.75F, 1F, 1F).setUnlocalizedName("insert_xsapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_xsapi");
|
||||
insert_steel = new ItemModInsert(1F, 0.95F, 0.75F, 0.95F).setUnlocalizedName("insert_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_steel");
|
||||
armor_polish = new ItemModPolish().setUnlocalizedName("armor_polish").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":armor_polish");
|
||||
bandaid = new ItemModBandaid().setUnlocalizedName("bandaid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bandaid");
|
||||
serum = new ItemModSerum().setUnlocalizedName("serum").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":serum");
|
||||
@ -2730,6 +2735,9 @@ public class ModItems {
|
||||
bathwater = new ItemModBathwater().setUnlocalizedName("bathwater").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bathwater");
|
||||
bathwater_mk2 = new ItemModBathwater().setUnlocalizedName("bathwater_mk2").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bathwater_mk2");
|
||||
spider_milk = new ItemModMilk().setUnlocalizedName("spider_milk").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":spider_milk");
|
||||
heart_piece = new ItemModHealth(5F).setUnlocalizedName("heart_piece").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_piece");
|
||||
heart_container = new ItemModHealth(20F).setUnlocalizedName("heart_container").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_container");
|
||||
heart_booster = new ItemModHealth(40F).setUnlocalizedName("heart_booster").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_booster");
|
||||
|
||||
can_empty = new Item().setUnlocalizedName("can_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_empty");
|
||||
can_smart = new ItemEnergy().setUnlocalizedName("can_smart").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_smart");
|
||||
@ -6147,6 +6155,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(cladding_rubber, cladding_rubber.getUnlocalizedName());
|
||||
GameRegistry.registerItem(cladding_lead, cladding_lead.getUnlocalizedName());
|
||||
GameRegistry.registerItem(cladding_desh, cladding_desh.getUnlocalizedName());
|
||||
GameRegistry.registerItem(cladding_obsidian, cladding_obsidian.getUnlocalizedName());
|
||||
GameRegistry.registerItem(insert_kevlar, insert_kevlar.getUnlocalizedName());
|
||||
GameRegistry.registerItem(insert_sapi, insert_sapi.getUnlocalizedName());
|
||||
GameRegistry.registerItem(insert_esapi, insert_esapi.getUnlocalizedName());
|
||||
@ -6163,6 +6172,9 @@ public class ModItems {
|
||||
GameRegistry.registerItem(bathwater, bathwater.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bathwater_mk2, bathwater_mk2.getUnlocalizedName());
|
||||
GameRegistry.registerItem(spider_milk, spider_milk.getUnlocalizedName());
|
||||
GameRegistry.registerItem(heart_piece, heart_piece.getUnlocalizedName());
|
||||
GameRegistry.registerItem(heart_container, heart_container.getUnlocalizedName());
|
||||
GameRegistry.registerItem(heart_booster, heart_booster.getUnlocalizedName());
|
||||
|
||||
//The Gadget
|
||||
GameRegistry.registerItem(gadget_explosive, gadget_explosive.getUnlocalizedName());
|
||||
|
||||
@ -2,6 +2,9 @@ package com.hbm.items.armor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@ -45,6 +48,18 @@ public class ItemArmorMod extends Item {
|
||||
if(boots)
|
||||
list.add(" Boots");
|
||||
}
|
||||
list.add(EnumChatFormatting.DARK_PURPLE + "Slot:");
|
||||
|
||||
switch(this.type) {
|
||||
case ArmorModHandler.helmet_only: list.add(" Helmet"); break;
|
||||
case ArmorModHandler.plate_only: list.add(" Chestplate"); break;
|
||||
case ArmorModHandler.legs_only: list.add(" Leggings"); break;
|
||||
case ArmorModHandler.boots_only: list.add(" Boots"); break;
|
||||
case ArmorModHandler.servos: list.add(" Servos"); break;
|
||||
case ArmorModHandler.cladding: list.add(" Cladding"); break;
|
||||
case ArmorModHandler.kevlar: list.add(" Insert"); break;
|
||||
case ArmorModHandler.extra: list.add(" Special"); break;
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@ -56,6 +71,8 @@ public class ItemArmorMod extends Item {
|
||||
|
||||
public void modDamage(LivingHurtEvent event, ItemStack armor) { }
|
||||
|
||||
public Multimap getModifiers(ItemStack armor) { return null; }
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void modRender(RenderPlayerEvent.SetArmorModel event, ItemStack armor) { }
|
||||
}
|
||||
|
||||
52
src/main/java/com/hbm/items/armor/ItemModHealth.java
Normal file
52
src/main/java/com/hbm/items/armor/ItemModHealth.java
Normal file
@ -0,0 +1,52 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemArmor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
|
||||
public class ItemModHealth extends ItemArmorMod {
|
||||
|
||||
float health;
|
||||
|
||||
public ItemModHealth(float health) {
|
||||
super(ArmorModHandler.extra, false, true, false, false);
|
||||
this.health = health;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) {
|
||||
|
||||
String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE);
|
||||
|
||||
list.add(color + "+" + (Math.round(health * 10 / 2) * 0.1) + " health");
|
||||
list.add("");
|
||||
super.addInformation(itemstack, player, list, bool);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDesc(List list, ItemStack stack, ItemStack armor) {
|
||||
|
||||
String color = "" + (System.currentTimeMillis() % 1000 < 500 ? EnumChatFormatting.RED : EnumChatFormatting.LIGHT_PURPLE);
|
||||
|
||||
list.add(color + " " + stack.getDisplayName() + " (+" + (Math.round(health * 10 / 2) * 0.1) + " health)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Multimap getModifiers(ItemStack armor) {
|
||||
Multimap multimap = super.getItemAttributeModifiers();
|
||||
|
||||
multimap.put(SharedMonsterAttributes.maxHealth.getAttributeUnlocalizedName(),
|
||||
new AttributeModifier(ArmorModHandler.UUIDs[((ItemArmor)armor.getItem()).armorType], "NTM Armor Mod Health", health, 0));
|
||||
|
||||
return multimap;
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,9 +3,13 @@ package com.hbm.items.armor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemArmor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||
@ -15,12 +19,14 @@ public class ItemModInsert extends ItemArmorMod {
|
||||
float damageMod;
|
||||
float projectileMod;
|
||||
float explosionMod;
|
||||
float speed;
|
||||
|
||||
public ItemModInsert(float damageMod, float projectileMod, float explosionMod) {
|
||||
public ItemModInsert(float damageMod, float projectileMod, float explosionMod, float speed) {
|
||||
super(ArmorModHandler.kevlar, false, true, false, false);
|
||||
this.damageMod = damageMod;
|
||||
this.projectileMod = projectileMod;
|
||||
this.explosionMod = explosionMod;
|
||||
this.speed = speed;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -32,6 +38,8 @@ public class ItemModInsert extends ItemArmorMod {
|
||||
list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + "% projectile damage");
|
||||
if(explosionMod != 1F)
|
||||
list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + "% explosion damage");
|
||||
if(speed != 1F)
|
||||
list.add(EnumChatFormatting.BLUE + "-" + Math.round((1F - speed) * 100) + "% speed");
|
||||
|
||||
list.add("");
|
||||
super.addInformation(itemstack, player, list, bool);
|
||||
@ -48,6 +56,8 @@ public class ItemModInsert extends ItemArmorMod {
|
||||
desc.add("-" + Math.round((1F - projectileMod) * 100) + "% proj");
|
||||
if(explosionMod != 1F)
|
||||
desc.add("-" + Math.round((1F - explosionMod) * 100) + "% exp");
|
||||
if(explosionMod != 1F)
|
||||
desc.add("-" + Math.round((1F - speed) * 100) + "% speed");
|
||||
|
||||
String join = String.join(" / ", desc);
|
||||
|
||||
@ -65,5 +75,18 @@ public class ItemModInsert extends ItemArmorMod {
|
||||
if(event.source.isExplosion())
|
||||
event.ammount *= explosionMod;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Multimap getModifiers(ItemStack armor) {
|
||||
|
||||
if(speed == 1)
|
||||
return null;
|
||||
|
||||
Multimap multimap = super.getItemAttributeModifiers();
|
||||
|
||||
multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(),
|
||||
new AttributeModifier(ArmorModHandler.UUIDs[((ItemArmor)armor.getItem()).armorType], "NTM Armor Mod Speed", -1F + speed, 2));
|
||||
|
||||
return multimap;
|
||||
}
|
||||
}
|
||||
|
||||
28
src/main/java/com/hbm/items/armor/ItemModObsidian.java
Normal file
28
src/main/java/com/hbm/items/armor/ItemModObsidian.java
Normal file
@ -0,0 +1,28 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
|
||||
public class ItemModObsidian extends ItemArmorMod {
|
||||
|
||||
public ItemModObsidian() {
|
||||
super(ArmorModHandler.cladding, true, true, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) {
|
||||
list.add(EnumChatFormatting.DARK_PURPLE + "Makes dropped armor indestructible");
|
||||
list.add("");
|
||||
super.addInformation(itemstack, player, list, bool);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDesc(List list, ItemStack stack, ItemStack armor) {
|
||||
list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (Item indestructible)");
|
||||
}
|
||||
}
|
||||
@ -866,6 +866,7 @@ public class CraftingManager {
|
||||
|
||||
GameRegistry.addSmelting(ModItems.ingot_schraranium, new ItemStack(ModItems.nugget_schrabidium, 1), 2.0F);
|
||||
|
||||
GameRegistry.addSmelting(ModItems.lodestone, new ItemStack(ModItems.crystal_iron, 1), 5.0F);
|
||||
GameRegistry.addSmelting(ModItems.crystal_iron, new ItemStack(Items.iron_ingot, 2), 2.0F);
|
||||
GameRegistry.addSmelting(ModItems.crystal_gold, new ItemStack(Items.gold_ingot, 2), 2.0F);
|
||||
GameRegistry.addSmelting(ModItems.crystal_redstone, new ItemStack(Items.redstone, 6), 2.0F);
|
||||
|
||||
@ -11,6 +11,7 @@ import java.util.Random;
|
||||
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.config.MobConfig;
|
||||
@ -54,10 +55,12 @@ import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent;
|
||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.monster.EntityCreeper;
|
||||
import net.minecraft.entity.monster.EntitySkeleton;
|
||||
import net.minecraft.entity.monster.EntitySpider;
|
||||
import net.minecraft.entity.monster.EntityZombie;
|
||||
import net.minecraft.entity.passive.EntityCow;
|
||||
import net.minecraft.entity.passive.EntityMooshroom;
|
||||
@ -67,12 +70,14 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemArmor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.tileentity.TileEntitySign;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.EntityDamageSource;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.FoodStats;
|
||||
import net.minecraft.util.Vec3;
|
||||
@ -81,6 +86,7 @@ import net.minecraftforge.event.AnvilUpdateEvent;
|
||||
import net.minecraftforge.event.ServerChatEvent;
|
||||
import net.minecraftforge.event.entity.EntityEvent;
|
||||
import net.minecraftforge.event.entity.EntityEvent.EnteringChunk;
|
||||
import net.minecraftforge.event.entity.item.ItemTossEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
|
||||
@ -169,6 +175,15 @@ public class ModEventHandler
|
||||
player.triggerAchievement(MainRegistry.bobHidden);
|
||||
}
|
||||
}
|
||||
|
||||
if(!event.entityLiving.worldObj.isRemote) {
|
||||
|
||||
if(event.entityLiving instanceof EntitySpider && event.source instanceof EntityDamageSource &&
|
||||
((EntityDamageSource)event.source).getEntity() instanceof EntityPlayer && event.entityLiving.getRNG().nextInt(500) == 0) {
|
||||
|
||||
event.entityLiving.dropItem(ModItems.spider_milk, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@ -216,19 +231,72 @@ public class ModEventHandler
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onItemToss(ItemTossEvent event) {
|
||||
|
||||
ItemStack yeet = event.entityItem.getEntityItem();
|
||||
|
||||
if(yeet.getItem() instanceof ItemArmor && ArmorModHandler.hasMods(yeet)) {
|
||||
|
||||
ItemStack[] mods = ArmorModHandler.pryMods(yeet);
|
||||
ItemStack cladding = mods[ArmorModHandler.cladding];
|
||||
|
||||
if(cladding != null && cladding.getItem() == ModItems.cladding_obsidian) {
|
||||
|
||||
try {
|
||||
ReflectionHelper.findField(Entity.class, "field_149500_a", "invulnerable").setBoolean(event.entityItem, true);
|
||||
} catch(Exception e) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onLivingUpdate(LivingUpdateEvent event) {
|
||||
|
||||
ItemStack[] prevArmor = null;
|
||||
|
||||
try {
|
||||
prevArmor = (ItemStack[]) ReflectionHelper.findField(EntityLivingBase.class, "field_82180_bT", "previousEquipment").get(event.entityLiving);
|
||||
} catch(Exception e) { }
|
||||
|
||||
for(int i = 1; i < 5; i++) {
|
||||
|
||||
ItemStack prev = prevArmor!= null ? prevArmor[i] : null;
|
||||
ItemStack armor = event.entityLiving.getEquipmentInSlot(i);
|
||||
|
||||
boolean reapply = prevArmor != null && !ItemStack.areItemStacksEqual(prev, armor);
|
||||
|
||||
if(reapply) {
|
||||
|
||||
if(prev != null && ArmorModHandler.hasMods(prev)) {
|
||||
|
||||
for(ItemStack mod : ArmorModHandler.pryMods(prev)) {
|
||||
|
||||
if(mod != null && mod.getItem() instanceof ItemArmorMod) {
|
||||
|
||||
Multimap map = ((ItemArmorMod)mod.getItem()).getModifiers(prev);
|
||||
|
||||
if(map != null)
|
||||
event.entityLiving.getAttributeMap().removeAttributeModifiers(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(armor != null && ArmorModHandler.hasMods(armor)) {
|
||||
|
||||
for(ItemStack mod : ArmorModHandler.pryMods(armor)) {
|
||||
|
||||
if(mod != null && mod.getItem() instanceof ItemArmorMod) {
|
||||
((ItemArmorMod)mod.getItem()).modUpdate(event.entityLiving, armor);
|
||||
|
||||
if(reapply) {
|
||||
|
||||
Multimap map = ((ItemArmorMod)mod.getItem()).getModifiers(armor);
|
||||
|
||||
if(map != null)
|
||||
event.entityLiving.getAttributeMap().applyAttributeModifiers(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -621,6 +689,18 @@ public class ModEventHandler
|
||||
e.player.addStat(MainRegistry.bobNuclear, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void itemSmelted(PlayerEvent.ItemSmeltedEvent e) {
|
||||
|
||||
if(!e.player.worldObj.isRemote && e.smelting.getItem() == Items.iron_ingot && e.player.getRNG().nextInt(64) == 0) {
|
||||
|
||||
if(!e.player.inventory.addItemStackToInventory(new ItemStack(ModItems.lodestone)))
|
||||
e.player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.lodestone), false);
|
||||
else
|
||||
e.player.inventoryContainer.detectAndSendChanges();
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onBlockBreak(BreakEvent event) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user