mods and attribute modifiers for armors

This commit is contained in:
Bob 2021-01-28 23:46:46 +01:00
parent 956a7bb106
commit 565133eefb
16 changed files with 241 additions and 7 deletions

View File

@ -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.circuit_targeting_tier6.name=Militärische Schaltplatte (Stufe 6)
item.cladding_desh.name=Deshbeschlag item.cladding_desh.name=Deshbeschlag
item.cladding_lead.name=Bleibeschlag item.cladding_lead.name=Bleibeschlag
item.cladding_obsidian.name=Obsidianhaut
item.cladding_paint.name=Bleifarbe item.cladding_paint.name=Bleifarbe
item.cladding_rubber.name=Gummibeschlag item.cladding_rubber.name=Gummibeschlag
item.clip_bf.name=BF-Geschosse im Doppelpack 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_grey.name=Hochleistungs-Strahlenschutzbrustplatte
item.hazmat_plate_red.name=Verbesserte Strahlenschutzbrustplatte item.hazmat_plate_red.name=Verbesserte Strahlenschutzbrustplatte
item.hazmat_red_kit.name=Lvl 2 Strahlenschutz-Kit 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_battery.name=Anzugs-Batterie
item.hev_boots.name=HEV Mark IV Stiefel item.hev_boots.name=HEV Mark IV Stiefel
item.hev_plate.name=HEV Mark IV Brustpanzer item.hev_plate.name=HEV Mark IV Brustpanzer

View File

@ -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.circuit_targeting_tier6.name=Military Grade Circuit Board (Tier 6)
item.cladding_desh.name=Desh Cladding item.cladding_desh.name=Desh Cladding
item.cladding_lead.name=Lead Cladding item.cladding_lead.name=Lead Cladding
item.cladding_obsidian.name=Obsidian Skin
item.cladding_paint.name=Lead Paint item.cladding_paint.name=Lead Paint
item.cladding_rubber.name=Rubber Cladding item.cladding_rubber.name=Rubber Cladding
item.clip_bf.name=BF-Shell Double Pack 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_grey.name=High-Performance Hazmat Chestplate
item.hazmat_plate_red.name=Advanced Hazmat Chestplate item.hazmat_plate_red.name=Advanced Hazmat Chestplate
item.hazmat_red_kit.name=Advanced Hazmat Kit 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_battery.name=Suit Battery
item.hev_boots.name=HEV Mark IV Boots item.hev_boots.name=HEV Mark IV Boots
item.hev_plate.name=HEV Mark IV Chestplate item.hev_plate.name=HEV Mark IV Chestplate

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

View File

@ -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_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 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 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 //Inserts
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.insert_steel, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', "plateIron", 'S', "blockSteel" })); 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 //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.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.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 //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 })); 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 }));

View File

@ -1,5 +1,7 @@
package com.hbm.handler; package com.hbm.handler;
import java.util.UUID;
import com.hbm.items.armor.ItemArmorMod; import com.hbm.items.armor.ItemArmorMod;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -18,6 +20,13 @@ public class ArmorModHandler {
public static final int kevlar = 6; public static final int kevlar = 6;
public static final int extra = 7; 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 //The key for the NBTTagCompound that holds the armor mods
public static final String MOD_COMPOUND_KEY = "ntm_armor_mods"; public static final String MOD_COMPOUND_KEY = "ntm_armor_mods";
//The key for the specific slot inside the armor mod NBT Tag //The key for the specific slot inside the armor mod NBT Tag

View File

@ -3,6 +3,7 @@ package com.hbm.inventory;
import java.util.List; import java.util.List;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;

View File

@ -1803,6 +1803,7 @@ public class ModItems {
public static Item cladding_rubber; public static Item cladding_rubber;
public static Item cladding_lead; public static Item cladding_lead;
public static Item cladding_desh; public static Item cladding_desh;
public static Item cladding_obsidian;
public static Item insert_kevlar; public static Item insert_kevlar;
public static Item insert_sapi; public static Item insert_sapi;
public static Item insert_esapi; public static Item insert_esapi;
@ -1819,6 +1820,9 @@ public class ModItems {
public static Item bathwater; public static Item bathwater;
public static Item bathwater_mk2; public static Item bathwater_mk2;
public static Item spider_milk; 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_helmet;
public static Item hazmat_plate; 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_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_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"); 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"); cladding_obsidian = new ItemModObsidian().setUnlocalizedName("cladding_obsidian").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_obsidian");
insert_sapi = new ItemModInsert(1F, 0.85F, 1F).setUnlocalizedName("insert_sapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_sapi"); insert_kevlar = new ItemModInsert(1F, 0.9F, 1F, 1F).setUnlocalizedName("insert_kevlar").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_kevlar");
insert_esapi = new ItemModInsert(0.95F, 0.8F, 1F).setUnlocalizedName("insert_esapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_esapi"); insert_sapi = new ItemModInsert(1F, 0.85F, 1F, 1F).setUnlocalizedName("insert_sapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_sapi");
insert_xsapi = new ItemModInsert(0.9F, 0.75F, 1F).setUnlocalizedName("insert_xsapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_xsapi"); insert_esapi = new ItemModInsert(0.95F, 0.8F, 1F, 1F).setUnlocalizedName("insert_esapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_esapi");
insert_steel = new ItemModInsert(1F, 0.95F, 0.75F).setUnlocalizedName("insert_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_steel"); 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"); 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"); 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"); 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 = 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"); 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"); 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_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"); 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_rubber, cladding_rubber.getUnlocalizedName());
GameRegistry.registerItem(cladding_lead, cladding_lead.getUnlocalizedName()); GameRegistry.registerItem(cladding_lead, cladding_lead.getUnlocalizedName());
GameRegistry.registerItem(cladding_desh, cladding_desh.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_kevlar, insert_kevlar.getUnlocalizedName());
GameRegistry.registerItem(insert_sapi, insert_sapi.getUnlocalizedName()); GameRegistry.registerItem(insert_sapi, insert_sapi.getUnlocalizedName());
GameRegistry.registerItem(insert_esapi, insert_esapi.getUnlocalizedName()); GameRegistry.registerItem(insert_esapi, insert_esapi.getUnlocalizedName());
@ -6163,6 +6172,9 @@ public class ModItems {
GameRegistry.registerItem(bathwater, bathwater.getUnlocalizedName()); GameRegistry.registerItem(bathwater, bathwater.getUnlocalizedName());
GameRegistry.registerItem(bathwater_mk2, bathwater_mk2.getUnlocalizedName()); GameRegistry.registerItem(bathwater_mk2, bathwater_mk2.getUnlocalizedName());
GameRegistry.registerItem(spider_milk, spider_milk.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 //The Gadget
GameRegistry.registerItem(gadget_explosive, gadget_explosive.getUnlocalizedName()); GameRegistry.registerItem(gadget_explosive, gadget_explosive.getUnlocalizedName());

View File

@ -2,6 +2,9 @@ package com.hbm.items.armor;
import java.util.List; 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.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@ -45,6 +48,18 @@ public class ItemArmorMod extends Item {
if(boots) if(boots)
list.add(" 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) @SideOnly(Side.CLIENT)
@ -56,6 +71,8 @@ public class ItemArmorMod extends Item {
public void modDamage(LivingHurtEvent event, ItemStack armor) { } public void modDamage(LivingHurtEvent event, ItemStack armor) { }
public Multimap getModifiers(ItemStack armor) { return null; }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void modRender(RenderPlayerEvent.SetArmorModel event, ItemStack armor) { } public void modRender(RenderPlayerEvent.SetArmorModel event, ItemStack armor) { }
} }

View 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;
}
}

View File

@ -3,9 +3,13 @@ package com.hbm.items.armor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.google.common.collect.Multimap;
import com.hbm.handler.ArmorModHandler; 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.entity.player.EntityPlayer;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent;
@ -15,12 +19,14 @@ public class ItemModInsert extends ItemArmorMod {
float damageMod; float damageMod;
float projectileMod; float projectileMod;
float explosionMod; 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); super(ArmorModHandler.kevlar, false, true, false, false);
this.damageMod = damageMod; this.damageMod = damageMod;
this.projectileMod = projectileMod; this.projectileMod = projectileMod;
this.explosionMod = explosionMod; this.explosionMod = explosionMod;
this.speed = speed;
} }
@Override @Override
@ -32,6 +38,8 @@ public class ItemModInsert extends ItemArmorMod {
list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + "% projectile damage"); list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - projectileMod) * 100) + "% projectile damage");
if(explosionMod != 1F) if(explosionMod != 1F)
list.add(EnumChatFormatting.YELLOW + "-" + Math.round((1F - explosionMod) * 100) + "% explosion damage"); 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(""); list.add("");
super.addInformation(itemstack, player, list, bool); super.addInformation(itemstack, player, list, bool);
@ -48,6 +56,8 @@ public class ItemModInsert extends ItemArmorMod {
desc.add("-" + Math.round((1F - projectileMod) * 100) + "% proj"); desc.add("-" + Math.round((1F - projectileMod) * 100) + "% proj");
if(explosionMod != 1F) if(explosionMod != 1F)
desc.add("-" + Math.round((1F - explosionMod) * 100) + "% exp"); desc.add("-" + Math.round((1F - explosionMod) * 100) + "% exp");
if(explosionMod != 1F)
desc.add("-" + Math.round((1F - speed) * 100) + "% speed");
String join = String.join(" / ", desc); String join = String.join(" / ", desc);
@ -65,5 +75,18 @@ public class ItemModInsert extends ItemArmorMod {
if(event.source.isExplosion()) if(event.source.isExplosion())
event.ammount *= explosionMod; 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;
}
} }

View 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)");
}
}

View File

@ -866,6 +866,7 @@ public class CraftingManager {
GameRegistry.addSmelting(ModItems.ingot_schraranium, new ItemStack(ModItems.nugget_schrabidium, 1), 2.0F); 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_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_gold, new ItemStack(Items.gold_ingot, 2), 2.0F);
GameRegistry.addSmelting(ModItems.crystal_redstone, new ItemStack(Items.redstone, 6), 2.0F); GameRegistry.addSmelting(ModItems.crystal_redstone, new ItemStack(Items.redstone, 6), 2.0F);

View File

@ -11,6 +11,7 @@ import java.util.Random;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
import com.google.common.collect.Multimap;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.config.GeneralConfig; import com.hbm.config.GeneralConfig;
import com.hbm.config.MobConfig; import com.hbm.config.MobConfig;
@ -54,10 +55,12 @@ import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent;
import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.ReflectionHelper;
import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.monster.EntitySpider;
import net.minecraft.entity.monster.EntityZombie; import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityMooshroom; 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.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion; import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect; import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntitySign; import net.minecraft.tileentity.TileEntitySign;
import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EntityDamageSource;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.FoodStats; import net.minecraft.util.FoodStats;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
@ -81,6 +86,7 @@ import net.minecraftforge.event.AnvilUpdateEvent;
import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.ServerChatEvent;
import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityEvent;
import net.minecraftforge.event.entity.EntityEvent.EnteringChunk; 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.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
@ -169,6 +175,15 @@ public class ModEventHandler
player.triggerAchievement(MainRegistry.bobHidden); 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 @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 @SubscribeEvent
public void onLivingUpdate(LivingUpdateEvent event) { 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++) { for(int i = 1; i < 5; i++) {
ItemStack prev = prevArmor!= null ? prevArmor[i] : null;
ItemStack armor = event.entityLiving.getEquipmentInSlot(i); 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)) { if(armor != null && ArmorModHandler.hasMods(armor)) {
for(ItemStack mod : ArmorModHandler.pryMods(armor)) { for(ItemStack mod : ArmorModHandler.pryMods(armor)) {
if(mod != null && mod.getItem() instanceof ItemArmorMod) { if(mod != null && mod.getItem() instanceof ItemArmorMod) {
((ItemArmorMod)mod.getItem()).modUpdate(event.entityLiving, armor); ((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); 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 @SubscribeEvent
public void onBlockBreak(BreakEvent event) { public void onBlockBreak(BreakEvent event) {