diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index e0f013374..f98ff750a 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -174,11 +174,13 @@ public class ConsumableRecipes { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ink, 1), new Object[] { "FPF", "PIP", "FPF", 'F', new ItemStack(Blocks.red_flower, 1, OreDictionary.WILDCARD_VALUE), 'P', ModItems.armor_polish, 'I', "dyeBlack" })); GameRegistry.addRecipe(new ItemStack(ModItems.bathwater_mk2, 1), new Object[] { "MWM", "WBW", "MWM", 'M', ModItems.bottle_mercury, 'W', ModItems.nuclear_waste, 'B', ModItems.bathwater }); GameRegistry.addRecipe(new ItemStack(ModItems.back_tesla, 1), new Object[] { "DGD", "GTG", "DGD", 'D', ModItems.ducttape, 'G', ModItems.wire_gold, 'T', ModBlocks.tesla }); - GameRegistry.addRecipe(new ItemStack(ModItems.medal_liquidator, 1), new Object[] { "GBG", "BFB", "GBG", 'G', ModItems.nugget_au198, 'B', ModItems.ingot_boron, 'F', ModItems.debris_fuel }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.medal_liquidator, 1), new Object[] { "GBG", "BFB", "GBG", 'G', "nuggetGold198", 'B', "ingotBoron", 'F', ModItems.debris_fuel })); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.injector_5htp, 1), new Object[] { ModItems.five_htp, ModItems.circuit_targeting_tier1, ModItems.plate_saturnite }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.injector_knife, 1), new Object[] { ModItems.injector_5htp, Items.iron_sword }); GameRegistry.addRecipe(new ItemStack(ModItems.shackles, 1), new Object[] { "CIC", "C C", "I I", 'I', ModItems.ingot_chainsteel, 'C', ModBlocks.chain }); - GameRegistry.addRecipe(new ItemStack(ModItems.black_diamond, 1), new Object[] { "NIN", "IGI", "NIN", 'N', ModItems.nugget_au198, 'I', ModItems.ink, 'G', ModItems.gem_volcanic }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.black_diamond, 1), new Object[] { "NIN", "IGI", "NIN", 'N', "nuggetGold198", 'I', ModItems.ink, 'G', "gemVolcanic" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.protection_charm, 1), new Object[] { " M ", "MDM", " M ", 'M', ModItems.fragment_meteorite, 'D', "gemDiamond" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.meteor_charm, 1), new Object[] { " M ", "MDM", " M ", 'M', ModItems.fragment_meteorite, 'D', "gemVolcanic" })); //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 })); diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index 9d3da8781..fed9a282d 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -1,14 +1,22 @@ package com.hbm.handler; +import java.util.Random; + +import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; +import com.hbm.config.WorldConfig; import com.hbm.entity.mob.EntityFBI; import com.hbm.entity.mob.EntityMaskMan; import com.hbm.entity.mob.EntityRADBeast; +import com.hbm.entity.projectile.EntityMeteor; +import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; import com.hbm.util.ContaminationUtil; import cpw.mods.fml.common.eventhandler.Event.Result; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; @@ -18,6 +26,9 @@ import net.minecraftforge.event.ForgeEventFactory; public class BossSpawnHandler { + //because some dimwit keeps resetting the world rand + private static final Random meteorRand = new Random(); + public static void rollTheDice(World world) { if(MobConfig.enableMaskman) { @@ -103,6 +114,10 @@ public class BossSpawnHandler { } } } + + if(GeneralConfig.enableMeteorStrikes && !world.isRemote) { + meteorUpdate(world); + } } private static void trySpawn(World world, float x, float y, float z, EntityLiving e) { @@ -123,4 +138,73 @@ public class BossSpawnHandler { if(!player.worldObj.isRemote) player.getEntityData().getCompoundTag(player.PERSISTED_NBT_TAG).setLong("fbiMark", player.worldObj.getTotalWorldTime() + 20 * 60 * 20); } + + public static int meteorShower = 0; + private static void meteorUpdate(World world) { + + if(meteorRand.nextInt(meteorShower > 0 ? WorldConfig.meteorShowerChance : WorldConfig.meteorStrikeChance) == 0) { + + if(!world.playerEntities.isEmpty()) { + + EntityPlayer p = (EntityPlayer)world.playerEntities.get(meteorRand.nextInt(world.playerEntities.size())); + + if(p != null && p.dimension == 0) { + + boolean repell = false; + boolean strike = true; + + if(p.getCurrentArmor(2) != null && ArmorModHandler.hasMods(p.getCurrentArmor(2))) { + ItemStack mod = ArmorModHandler.pryMods(p.getCurrentArmor(2))[ArmorModHandler.helmet_only]; + + if(mod != null) { + if(mod.getItem() == ModItems.protection_charm) { + repell = true; + } + if(mod.getItem() == ModItems.meteor_charm) { + repell = true; + strike = meteorRand.nextInt(4) == 0; + } + } + } + + if(strike) + spawnMeteorAtPlayer(p, repell); + } + } + } + + if(meteorShower > 0) { + meteorShower--; + if(meteorShower == 0 && GeneralConfig.enableDebugMode) + MainRegistry.logger.info("Ended meteor shower."); + } + + if(meteorRand.nextInt(WorldConfig.meteorStrikeChance * 100) == 0 && GeneralConfig.enableMeteorShowers) { + meteorShower = (int)(WorldConfig.meteorShowerDuration * 0.75 + WorldConfig.meteorShowerDuration * 0.25 * meteorRand.nextFloat()); + + if(GeneralConfig.enableDebugMode) + MainRegistry.logger.info("Started meteor shower! Duration: " + meteorShower); + } + } + + public static void spawnMeteorAtPlayer(EntityPlayer player, boolean repell) { + + EntityMeteor meteor = new EntityMeteor(player.worldObj); + meteor.setPositionAndRotation(player.posX + meteorRand.nextInt(201) - 100, 384, player.posZ + meteorRand.nextInt(201) - 100, 0, 0); + + Vec3 vec; + if(repell) { + vec = Vec3.createVectorHelper(meteor.posX - player.posX, 0, meteor.posZ - player.posZ).normalize(); + vec.xCoord = vec.xCoord * meteorRand.nextDouble() - 0.5D; + vec.zCoord = vec.zCoord * meteorRand.nextDouble() - 0.5D; + } else { + vec = Vec3.createVectorHelper(meteorRand.nextDouble() - 0.5D, 0, 0); + vec.rotateAroundY((float) (Math.PI * meteorRand.nextDouble())); + } + + meteor.motionX = vec.xCoord; + meteor.motionY = -2.5; + meteor.motionZ = vec.zCoord; + player.worldObj.spawnEntityInWorld(meteor); + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 809518cf1..2d055ee29 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2160,6 +2160,8 @@ public class ModItems { public static Item injector_knife; public static Item medal_liquidator; public static Item v1; + public static Item protection_charm; + public static Item meteor_charm; public static Item hazmat_helmet; public static Item hazmat_plate; @@ -3204,56 +3206,58 @@ public class ModItems { cbt_device = new ItemSyringe().setUnlocalizedName("cbt_device").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":cbt_device"); cigarette = new ItemCigarette().setUnlocalizedName("cigarette").setFull3D().setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cigarette"); - attachment_mask = new ItemModGasmask().setUnlocalizedName("attachment_mask").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":attachment_mask"); - attachment_mask_mono = new ItemModGasmask().setUnlocalizedName("attachment_mask_mono").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":attachment_mask_mono"); - back_tesla = new ItemModTesla().setUnlocalizedName("back_tesla").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":back_tesla"); - servo_set = new ItemModServos().setUnlocalizedName("servo_set").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":servo_set"); - servo_set_desh = new ItemModServos().setUnlocalizedName("servo_set_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":servo_set_desh"); - pads_rubber = new ItemModPads(0.5F).setUnlocalizedName("pads_rubber").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pads_rubber"); - pads_slime = new ItemModPads(0.25F).setUnlocalizedName("pads_slime").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pads_slime"); - pads_static = new ItemModPads(0.75F).setUnlocalizedName("pads_static").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pads_static"); - cladding_paint = new ItemModCladding(0.025).setUnlocalizedName("cladding_paint").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_paint"); - cladding_rubber = new ItemModCladding(0.005).setUnlocalizedName("cladding_rubber").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_rubber"); - cladding_lead = new ItemModCladding(0.1).setUnlocalizedName("cladding_lead").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_lead"); - cladding_desh = new ItemModCladding(0.2).setUnlocalizedName("cladding_desh").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_desh"); - cladding_iron = new ItemModIron().setUnlocalizedName("cladding_iron").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_iron"); - cladding_obsidian = new ItemModObsidian().setUnlocalizedName("cladding_obsidian").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cladding_obsidian"); - insert_kevlar = new ItemModInsert(1500, 1F, 0.9F, 1F, 1F).setUnlocalizedName("insert_kevlar").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_kevlar"); - insert_sapi = new ItemModInsert(1750, 1F, 0.85F, 1F, 1F).setUnlocalizedName("insert_sapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_sapi"); - insert_esapi = new ItemModInsert(2000, 0.95F, 0.8F, 1F, 1F).setUnlocalizedName("insert_esapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_esapi"); - insert_xsapi = new ItemModInsert(2500, 0.9F, 0.75F, 1F, 1F).setUnlocalizedName("insert_xsapi").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_xsapi"); - insert_steel = new ItemModInsert(1000, 1F, 0.95F, 0.75F, 0.95F).setUnlocalizedName("insert_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_steel"); - insert_du = new ItemModInsert(1500, 0.9F, 0.85F, 0.5F, 0.9F).setUnlocalizedName("insert_du").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_du"); - insert_polonium = new ItemModInsert(500, 0.9F, 1F, 0.95F, 0.9F).setUnlocalizedName("insert_polonium").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_polonium"); - insert_era = new ItemModInsert(25, 0.5F, 1F, 0.25F, 1F).setUnlocalizedName("insert_era").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_era"); - insert_yharonite = new ItemModInsert(9999, 0.01F, 1F, 1F, 1F).setUnlocalizedName("insert_yharonite").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_yharonite"); - insert_doxium = new ItemModInsert(9999, 5.0F, 1F, 1F, 1F).setUnlocalizedName("insert_doxium").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":insert_doxium"); - 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"); - quartz_plutonium = new ItemModQuartz().setUnlocalizedName("quartz_plutonium").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quartz_plutonium"); - morning_glory = new ItemModMorningGlory().setUnlocalizedName("morning_glory").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":morning_glory"); - lodestone = new ItemModLodestone(5).setUnlocalizedName("lodestone").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":lodestone"); - horseshoe_magnet = new ItemModLodestone(8).setUnlocalizedName("horseshoe_magnet").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":horseshoe_magnet"); - industrial_magnet = new ItemModLodestone(12).setUnlocalizedName("industrial_magnet").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":industrial_magnet"); - 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"); - ink = new ItemModInk().setUnlocalizedName("ink").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":ink"); - 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"); - heart_fab = new ItemModHealth(60F).setUnlocalizedName("heart_fab").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":heart_fab"); - black_diamond = new ItemModHealth(40F).setUnlocalizedName("black_diamond").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":black_diamond"); - wd40 = new ItemModWD40().setUnlocalizedName("wd40").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":wd40"); - scrumpy = new ItemModRevive(1).setUnlocalizedName("scrumpy").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":scrumpy"); - wild_p = new ItemModRevive(3).setUnlocalizedName("wild_p").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":wild_p"); - fabsols_vodka = new ItemModRevive(9999).setUnlocalizedName("fabsols_vodka").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":fabsols_vodka"); - shackles = new ItemModShackles().setUnlocalizedName("shackles").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":shackles"); - injector_5htp = new ItemModAuto().setUnlocalizedName("injector_5htp").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":injector_5htp"); - injector_knife = new ItemModKnife().setUnlocalizedName("injector_knife").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":injector_knife"); - medal_liquidator = new ItemModMedal().setUnlocalizedName("medal_liquidator").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":medal_liquidator"); - v1 = new ItemModV1().setUnlocalizedName("v1").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":v1"); + attachment_mask = new ItemModGasmask().setUnlocalizedName("attachment_mask").setTextureName(RefStrings.MODID + ":attachment_mask"); + attachment_mask_mono = new ItemModGasmask().setUnlocalizedName("attachment_mask_mono").setTextureName(RefStrings.MODID + ":attachment_mask_mono"); + back_tesla = new ItemModTesla().setUnlocalizedName("back_tesla").setTextureName(RefStrings.MODID + ":back_tesla"); + servo_set = new ItemModServos().setUnlocalizedName("servo_set").setTextureName(RefStrings.MODID + ":servo_set"); + servo_set_desh = new ItemModServos().setUnlocalizedName("servo_set_desh").setTextureName(RefStrings.MODID + ":servo_set_desh"); + pads_rubber = new ItemModPads(0.5F).setUnlocalizedName("pads_rubber").setTextureName(RefStrings.MODID + ":pads_rubber"); + pads_slime = new ItemModPads(0.25F).setUnlocalizedName("pads_slime").setTextureName(RefStrings.MODID + ":pads_slime"); + pads_static = new ItemModPads(0.75F).setUnlocalizedName("pads_static").setTextureName(RefStrings.MODID + ":pads_static"); + cladding_paint = new ItemModCladding(0.025).setUnlocalizedName("cladding_paint").setTextureName(RefStrings.MODID + ":cladding_paint"); + cladding_rubber = new ItemModCladding(0.005).setUnlocalizedName("cladding_rubber").setTextureName(RefStrings.MODID + ":cladding_rubber"); + cladding_lead = new ItemModCladding(0.1).setUnlocalizedName("cladding_lead").setTextureName(RefStrings.MODID + ":cladding_lead"); + cladding_desh = new ItemModCladding(0.2).setUnlocalizedName("cladding_desh").setTextureName(RefStrings.MODID + ":cladding_desh"); + cladding_iron = new ItemModIron().setUnlocalizedName("cladding_iron").setTextureName(RefStrings.MODID + ":cladding_iron"); + cladding_obsidian = new ItemModObsidian().setUnlocalizedName("cladding_obsidian").setTextureName(RefStrings.MODID + ":cladding_obsidian"); + insert_kevlar = new ItemModInsert(1500, 1F, 0.9F, 1F, 1F).setUnlocalizedName("insert_kevlar").setTextureName(RefStrings.MODID + ":insert_kevlar"); + insert_sapi = new ItemModInsert(1750, 1F, 0.85F, 1F, 1F).setUnlocalizedName("insert_sapi").setTextureName(RefStrings.MODID + ":insert_sapi"); + insert_esapi = new ItemModInsert(2000, 0.95F, 0.8F, 1F, 1F).setUnlocalizedName("insert_esapi").setTextureName(RefStrings.MODID + ":insert_esapi"); + insert_xsapi = new ItemModInsert(2500, 0.9F, 0.75F, 1F, 1F).setUnlocalizedName("insert_xsapi").setTextureName(RefStrings.MODID + ":insert_xsapi"); + insert_steel = new ItemModInsert(1000, 1F, 0.95F, 0.75F, 0.95F).setUnlocalizedName("insert_steel").setTextureName(RefStrings.MODID + ":insert_steel"); + insert_du = new ItemModInsert(1500, 0.9F, 0.85F, 0.5F, 0.9F).setUnlocalizedName("insert_du").setTextureName(RefStrings.MODID + ":insert_du"); + insert_polonium = new ItemModInsert(500, 0.9F, 1F, 0.95F, 0.9F).setUnlocalizedName("insert_polonium").setTextureName(RefStrings.MODID + ":insert_polonium"); + insert_era = new ItemModInsert(25, 0.5F, 1F, 0.25F, 1F).setUnlocalizedName("insert_era").setTextureName(RefStrings.MODID + ":insert_era"); + insert_yharonite = new ItemModInsert(9999, 0.01F, 1F, 1F, 1F).setUnlocalizedName("insert_yharonite").setTextureName(RefStrings.MODID + ":insert_yharonite"); + insert_doxium = new ItemModInsert(9999, 5.0F, 1F, 1F, 1F).setUnlocalizedName("insert_doxium").setTextureName(RefStrings.MODID + ":insert_doxium"); + armor_polish = new ItemModPolish().setUnlocalizedName("armor_polish").setTextureName(RefStrings.MODID + ":armor_polish"); + bandaid = new ItemModBandaid().setUnlocalizedName("bandaid").setTextureName(RefStrings.MODID + ":bandaid"); + serum = new ItemModSerum().setUnlocalizedName("serum").setTextureName(RefStrings.MODID + ":serum"); + quartz_plutonium = new ItemModQuartz().setUnlocalizedName("quartz_plutonium").setTextureName(RefStrings.MODID + ":quartz_plutonium"); + morning_glory = new ItemModMorningGlory().setUnlocalizedName("morning_glory").setTextureName(RefStrings.MODID + ":morning_glory"); + lodestone = new ItemModLodestone(5).setUnlocalizedName("lodestone").setTextureName(RefStrings.MODID + ":lodestone"); + horseshoe_magnet = new ItemModLodestone(8).setUnlocalizedName("horseshoe_magnet").setTextureName(RefStrings.MODID + ":horseshoe_magnet"); + industrial_magnet = new ItemModLodestone(12).setUnlocalizedName("industrial_magnet").setTextureName(RefStrings.MODID + ":industrial_magnet"); + bathwater = new ItemModBathwater().setUnlocalizedName("bathwater").setTextureName(RefStrings.MODID + ":bathwater"); + bathwater_mk2 = new ItemModBathwater().setUnlocalizedName("bathwater_mk2").setTextureName(RefStrings.MODID + ":bathwater_mk2"); + spider_milk = new ItemModMilk().setUnlocalizedName("spider_milk").setTextureName(RefStrings.MODID + ":spider_milk"); + ink = new ItemModInk().setUnlocalizedName("ink").setTextureName(RefStrings.MODID + ":ink"); + heart_piece = new ItemModHealth(5F).setUnlocalizedName("heart_piece").setTextureName(RefStrings.MODID + ":heart_piece"); + heart_container = new ItemModHealth(20F).setUnlocalizedName("heart_container").setTextureName(RefStrings.MODID + ":heart_container"); + heart_booster = new ItemModHealth(40F).setUnlocalizedName("heart_booster").setTextureName(RefStrings.MODID + ":heart_booster"); + heart_fab = new ItemModHealth(60F).setUnlocalizedName("heart_fab").setTextureName(RefStrings.MODID + ":heart_fab"); + black_diamond = new ItemModHealth(40F).setUnlocalizedName("black_diamond").setTextureName(RefStrings.MODID + ":black_diamond"); + wd40 = new ItemModWD40().setUnlocalizedName("wd40").setTextureName(RefStrings.MODID + ":wd40"); + scrumpy = new ItemModRevive(1).setUnlocalizedName("scrumpy").setTextureName(RefStrings.MODID + ":scrumpy"); + wild_p = new ItemModRevive(3).setUnlocalizedName("wild_p").setTextureName(RefStrings.MODID + ":wild_p"); + fabsols_vodka = new ItemModRevive(9999).setUnlocalizedName("fabsols_vodka").setTextureName(RefStrings.MODID + ":fabsols_vodka"); + shackles = new ItemModShackles().setUnlocalizedName("shackles").setTextureName(RefStrings.MODID + ":shackles"); + injector_5htp = new ItemModAuto().setUnlocalizedName("injector_5htp").setTextureName(RefStrings.MODID + ":injector_5htp"); + injector_knife = new ItemModKnife().setUnlocalizedName("injector_knife").setTextureName(RefStrings.MODID + ":injector_knife"); + medal_liquidator = new ItemModMedal().setUnlocalizedName("medal_liquidator").setTextureName(RefStrings.MODID + ":medal_liquidator"); + v1 = new ItemModV1().setUnlocalizedName("v1").setTextureName(RefStrings.MODID + ":v1"); + protection_charm = new ItemModCharm().setUnlocalizedName("protection_charm").setTextureName(RefStrings.MODID + ":protection_charm"); + meteor_charm = new ItemModCharm().setUnlocalizedName("meteor_charm").setTextureName(RefStrings.MODID + ":meteor_charm"); 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"); @@ -7404,6 +7408,8 @@ public class ModItems { GameRegistry.registerItem(coin_siege, coin_siege.getUnlocalizedName()); GameRegistry.registerItem(medal_liquidator, medal_liquidator.getUnlocalizedName()); GameRegistry.registerItem(v1, v1.getUnlocalizedName()); + GameRegistry.registerItem(protection_charm, protection_charm.getUnlocalizedName()); + GameRegistry.registerItem(meteor_charm, meteor_charm.getUnlocalizedName()); //Chaos GameRegistry.registerItem(chocolate_milk, chocolate_milk.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemArmorMod.java b/src/main/java/com/hbm/items/armor/ItemArmorMod.java index 639f8bf20..b3924f557 100644 --- a/src/main/java/com/hbm/items/armor/ItemArmorMod.java +++ b/src/main/java/com/hbm/items/armor/ItemArmorMod.java @@ -4,6 +4,7 @@ import java.util.List; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; +import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -29,8 +30,11 @@ public class ItemArmorMod extends Item { this.chestplate = chestplate; this.leggings = leggings; this.boots = boots; + + this.setMaxStackSize(1); + this.setCreativeTab(MainRegistry.consumableTab); } - + @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { list.add(EnumChatFormatting.DARK_PURPLE + "Applicable to:"); diff --git a/src/main/java/com/hbm/items/armor/ItemModCharm.java b/src/main/java/com/hbm/items/armor/ItemModCharm.java new file mode 100644 index 000000000..2c545e4f3 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ItemModCharm.java @@ -0,0 +1,53 @@ +package com.hbm.items.armor; + +import java.util.List; + +import com.hbm.handler.ArmorModHandler; +import com.hbm.items.ModItems; +import com.hbm.lib.ModDamageSource; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ItemModCharm extends ItemArmorMod { + + public ItemModCharm() { + super(ArmorModHandler.helmet_only, false, true, false, false); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + list.add(EnumChatFormatting.AQUA + "You feel blessed."); + list.add(EnumChatFormatting.AQUA + "Diverts meteors away from the player."); + + if(this == ModItems.protection_charm) { + list.add(EnumChatFormatting.AQUA + "Halves broadcaster damage"); + } + if(this == ModItems.meteor_charm) { + list.add(EnumChatFormatting.AQUA + "Reduces meteor spawning by 75%."); + list.add(EnumChatFormatting.AQUA + "Negates broadcaster damage"); + } + + super.addInformation(stack, player, list, bool); + } + + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + list.add(EnumChatFormatting.GOLD + " " + stack.getDisplayName()); + } + + @Override + public void modDamage(LivingHurtEvent event, ItemStack armor) { + + if(event.source == ModDamageSource.broadcast) { + + if(this == ModItems.protection_charm) + event.ammount *= 0.5F; + if(this == ModItems.meteor_charm) + event.ammount = 0F; + } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemMeteorRemote.java b/src/main/java/com/hbm/items/tool/ItemMeteorRemote.java index d162d509e..958936b9f 100644 --- a/src/main/java/com/hbm/items/tool/ItemMeteorRemote.java +++ b/src/main/java/com/hbm/items/tool/ItemMeteorRemote.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Random; import com.hbm.entity.projectile.EntityMeteor; +import com.hbm.handler.BossSpawnHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -31,15 +32,7 @@ public class ItemMeteorRemote extends Item { stack.damageItem(1, player); if(!world.isRemote) { - EntityMeteor meteor = new EntityMeteor(world); - meteor.setPositionAndRotation(player.posX + world.rand.nextInt(201) - 100, 384, player.posZ + world.rand.nextInt(201) - 100, 0, 0); - meteor.motionX = world.rand.nextDouble() - 0.5; - meteor.motionY = -2.5; - meteor.motionZ = world.rand.nextDouble() - 0.5; - world.spawnEntityInWorld(meteor); - } - - if(world.isRemote) { + BossSpawnHandler.spawnMeteorAtPlayer(player, false); player.addChatMessage(new ChatComponentText("Watch your head!")); } diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 7aead8abd..e31322094 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -126,8 +126,6 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.event.world.BlockEvent.BreakEvent; public class ModEventHandler { - - public static int meteorShower = 0; static Random rand = new Random(); @SubscribeEvent @@ -520,44 +518,6 @@ public class ModEventHandler { @SubscribeEvent public void worldTick(WorldTickEvent event) { - - ///// - //try { - ///// - - /// METEOR SHOWER START /// - if(event.world != null && !event.world.isRemote && event.world.provider.isSurfaceWorld() && GeneralConfig.enableMeteorStrikes) { - if(event.world.rand.nextInt(meteorShower > 0 ? WorldConfig.meteorShowerChance : WorldConfig.meteorStrikeChance) == 0) { - if(!event.world.playerEntities.isEmpty()) { - EntityPlayer p = (EntityPlayer)event.world.playerEntities.get(event.world.rand.nextInt(event.world.playerEntities.size())); - - if(p != null && p.dimension == 0) { - EntityMeteor meteor = new EntityMeteor(event.world); - meteor.setPositionAndRotation(p.posX + event.world.rand.nextInt(201) - 100, 384, p.posZ + event.world.rand.nextInt(201) - 100, 0, 0); - meteor.motionX = event.world.rand.nextDouble() - 0.5; - meteor.motionY = -2.5; - meteor.motionZ = event.world.rand.nextDouble() - 0.5; - event.world.spawnEntityInWorld(meteor); - } - } - } - - if(meteorShower > 0) { - meteorShower--; - if(meteorShower == 0 && GeneralConfig.enableDebugMode) - MainRegistry.logger.info("Ended meteor shower."); - } - - if(event.world.rand.nextInt(WorldConfig.meteorStrikeChance * 100) == 0 && GeneralConfig.enableMeteorShowers) { - meteorShower = - (int)(WorldConfig.meteorShowerDuration * 0.75 + - WorldConfig.meteorShowerDuration * 0.25 * event.world.rand.nextFloat()); - - if(GeneralConfig.enableDebugMode) - MainRegistry.logger.info("Started meteor shower! Duration: " + meteorShower); - } - } - /// METEOR SHOWER END /// /// RADIATION STUFF START /// if(event.world != null && !event.world.isRemote && GeneralConfig.enableRads) { diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_arm_50.png b/src/main/resources/assets/hbm/textures/armor/dnt_arm_50.png new file mode 100644 index 000000000..f1833a46a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_arm_50.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_arm_70.png b/src/main/resources/assets/hbm/textures/armor/dnt_arm_70.png new file mode 100644 index 000000000..0dac102cf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_arm_70.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_chest_50.png b/src/main/resources/assets/hbm/textures/armor/dnt_chest_50.png new file mode 100644 index 000000000..242c93bcf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_chest_50.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_chest_70.png b/src/main/resources/assets/hbm/textures/armor/dnt_chest_70.png new file mode 100644 index 000000000..664c04a55 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_chest_70.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_helmet_50.png b/src/main/resources/assets/hbm/textures/armor/dnt_helmet_50.png new file mode 100644 index 000000000..f525c15ba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_helmet_50.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_helmet_70.png b/src/main/resources/assets/hbm/textures/armor/dnt_helmet_70.png new file mode 100644 index 000000000..3fa1f2c8b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_helmet_70.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_leg_50.png b/src/main/resources/assets/hbm/textures/armor/dnt_leg_50.png new file mode 100644 index 000000000..906795e92 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_leg_50.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/dnt_leg_70.png b/src/main/resources/assets/hbm/textures/armor/dnt_leg_70.png new file mode 100644 index 000000000..aad670162 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/dnt_leg_70.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_bakelite.png b/src/main/resources/assets/hbm/textures/items/ingot_bakelite.png new file mode 100644 index 000000000..a74b71c8e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_bakelite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/meteor_charm.png b/src/main/resources/assets/hbm/textures/items/meteor_charm.png new file mode 100644 index 000000000..bed3ebfa3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/meteor_charm.png differ diff --git a/src/main/resources/assets/hbm/textures/items/protection_charm.png b/src/main/resources/assets/hbm/textures/items/protection_charm.png new file mode 100644 index 000000000..3e98a85c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/protection_charm.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index b20db59d8..3fbd8f09f 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -8,7 +8,7 @@ "url": "", "updateUrl": "", "authorList": ["HbMinecraft"], - "credits": "rodolphito (explosion algorithms), grangerave (explosion algorithms), Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting), UFFR (fork with all sorts of features), Bismarck (chinese localization), FirzzleFrazzle (models), Minecreep (models), VT-6/24 (models, textures), PheodoreKaczynski (textures), Vær (fibrosis code), Pashtet (russian localization), Sten89 (models), Pixelguru26 (textures), impbk2002 (project settings), OvermindDL1 (project settings)", + "credits": "rodolphito (explosion algorithms), grangerave (explosion algorithms), Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting), UFFR (fork with all sorts of features), Bismarck (chinese localization), FirzzleFrazzle (models), Minecreep (models), VT-6/24 (models, textures), PheodoreKaczynski (textures), Vær (fibrosis code), Adam29 (liquid petroleum), Pashtet (russian localization), Sten89 (models), Pixelguru26 (textures), impbk2002 (project settings), OvermindDL1 (project settings)", "logoFile": "", "screenshots": [], "dependencies": []