hazardous block items, funny centralized hazard system for items

This commit is contained in:
Boblet 2021-03-25 12:53:43 +01:00
parent 03e80f5a12
commit c44cb67656
8 changed files with 291 additions and 119 deletions

View File

@ -1064,7 +1064,7 @@ public class ModBlocks {
block_yellowcake = new BlockFallingRad(Material.sand, 0.5F, 3F).setBlockName("block_yellowcake").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_yellowcake");
block_insulator = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_insulator_top").setBlockName("block_insulator").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_insulator_side");
block_fiberglass = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_fiberglass_top").setBlockName("block_fiberglass").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side");
block_asbestos = new BlockOutgas(Material.cloth, true, 5, true).setBlockName("block_asbestos").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_asbestos");
block_asbestos = new BlockOutgas(Material.cloth, true, 5, true).addAsbestos().toBlock().setBlockName("block_asbestos").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_asbestos");
block_cobalt = new BlockGeneric(Material.iron).setBlockName("block_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_cobalt");
block_lithium = new BlockLithium(Material.iron).setBlockName("block_lithium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lithium");
block_white_phosphorus = new BlockGeneric(Material.rock).setBlockName("block_white_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_white_phosphorus");

View File

@ -3,6 +3,8 @@ package com.hbm.blocks.generic;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.interfaces.IItemHazard;
import com.hbm.modules.ItemHazardModule;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@ -11,15 +13,18 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockOutgas extends BlockOre {
public class BlockOutgas extends BlockOre implements IItemHazard {
boolean randomTick;
int rate;
boolean onBreak;
boolean onNeighbour;
ItemHazardModule module;
public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak) {
super(mat);
this.module = new ItemHazardModule();
this.setTickRandomly(randomTick);
this.randomTick = randomTick;
this.rate = rate;
@ -29,9 +34,15 @@ public class BlockOutgas extends BlockOre {
public BlockOutgas(Material mat, boolean randomTick, int rate, boolean onBreak, boolean onNeighbour) {
this(mat, randomTick, rate, onBreak);
this.module = new ItemHazardModule();
this.onNeighbour = onNeighbour;
}
@Override
public ItemHazardModule getModule() {
return module;
}
public int tickRate(World p_149738_1_) {
return rate;
}

View File

@ -0,0 +1,29 @@
package com.hbm.blocks.generic;
import com.hbm.interfaces.IItemHazard;
import com.hbm.modules.ItemHazardModule;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
public class BlockRadioactive extends Block implements IItemHazard {
ItemHazardModule module;
private float radIn = 0.0F;
private float radMax = 0.0F;
public BlockRadioactive(Material mat, float rad, float max) {
super(mat);
this.module = new ItemHazardModule();
this.setTickRandomly(true);
radIn = rad;
radMax = max;
}
@Override
public ItemHazardModule getModule() {
return module;
}
}

View File

@ -0,0 +1,46 @@
package com.hbm.interfaces;
import com.hbm.items.special.ItemHazard;
import com.hbm.modules.ItemHazardModule;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
public interface IItemHazard {
public ItemHazardModule getModule();
public default IItemHazard addRadiation(float radiation) {
this.getModule().addRadiation(radiation);
return this;
}
public default IItemHazard addDigamma(float digamma) {
this.getModule().addDigamma(digamma);
return this;
}
public default IItemHazard addFire(int fire) {
this.getModule().addFire(fire);
return this;
}
public default IItemHazard addAsbestos() {
this.getModule().addAsbestos();
return this;
}
public default IItemHazard addHydroReactivity() {
this.getModule().addHydroReactivity();
return this;
}
//the only ugly part of this entire system is the manual casting so that the rest of the daisychained setters work
public default Item toItem() {
return (Item)this;
}
public default Block toBlock() {
return (Block)this;
}
}

View File

@ -2260,7 +2260,7 @@ public class ModItems {
plate_copper = new Item().setUnlocalizedName("plate_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_copper");
plate_gold = new Item().setUnlocalizedName("plate_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_gold");
plate_advanced_alloy = new Item().setUnlocalizedName("plate_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_advanced_alloy");
lithium = new ItemHazard().addHydroReactivity().setUnlocalizedName("lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":lithium");
lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":lithium");
ingot_zirconium = new Item().setUnlocalizedName("ingot_zirconium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_zirconium");
ingot_semtex = new ItemLemon(4, 5, true).setUnlocalizedName("ingot_semtex").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_semtex");
ingot_phosphorus = new ItemHazard(0F, true).setUnlocalizedName("ingot_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_phosphorus");
@ -2321,8 +2321,8 @@ public class ModItems {
ingot_saturnite = new ItemCustomLore().setUnlocalizedName("ingot_saturnite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_saturnite");
plate_saturnite = new ItemCustomLore().setUnlocalizedName("plate_saturnite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_saturnite");
ingot_fiberglass = new ItemCustomLore().setUnlocalizedName("ingot_fiberglass").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_fiberglass");
ingot_asbestos = new ItemHazard().addAsbestos().setUnlocalizedName("ingot_asbestos").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_asbestos");
powder_asbestos = new ItemHazard().addAsbestos().setUnlocalizedName("powder_asbestos").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_asbestos");
ingot_asbestos = new ItemHazard().addAsbestos().toItem().setUnlocalizedName("ingot_asbestos").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_asbestos");
powder_asbestos = new ItemHazard().addAsbestos().toItem().setUnlocalizedName("powder_asbestos").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_asbestos");
ingot_electronium = new ItemCustomLore().setUnlocalizedName("ingot_electronium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_electronium");
nugget_mercury = new ItemCustomLore().setUnlocalizedName("nugget_mercury").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_mercury");
bottle_mercury = new ItemCustomLore().setUnlocalizedName("bottle_mercury").setContainerItem(Items.glass_bottle).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bottle_mercury");
@ -2413,7 +2413,7 @@ public class ModItems {
crystal_schrabidium = new ItemHazard(ItemHazard.sa326 * ItemHazard.block, false, true).setUnlocalizedName("crystal_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_schrabidium");
crystal_rare = new Item().setUnlocalizedName("crystal_rare").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_rare");
crystal_phosphorus = new ItemHazard(0.0F, true).setUnlocalizedName("crystal_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_phosphorus");
crystal_lithium = new ItemHazard().addHydroReactivity().setUnlocalizedName("crystal_lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_lithium");
crystal_lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("crystal_lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_lithium");
crystal_starmetal = new Item().setUnlocalizedName("crystal_starmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_starmetal");
crystal_trixite = new ItemHazard(10.0F).setUnlocalizedName("crystal_trixite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_trixite");
@ -2444,7 +2444,7 @@ public class ModItems {
powder_chlorophyte = new Item().setUnlocalizedName("powder_chlorophyte").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_chlorophyte");
powder_red_copper = new Item().setUnlocalizedName("powder_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_red_copper");
powder_steel = new Item().setUnlocalizedName("powder_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_steel");
powder_lithium = new ItemHazard().addHydroReactivity().setUnlocalizedName("powder_lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lithium");
powder_lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("powder_lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lithium");
powder_zirconium = new Item().setUnlocalizedName("powder_zirconium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_zirconium");
redstone_depleted = new Item().setUnlocalizedName("redstone_depleted").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":redstone_depleted");
powder_power = new ItemCustomLore().setUnlocalizedName("powder_power").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_energy_alt");
@ -2478,7 +2478,7 @@ public class ModItems {
powder_spark_mix = new Item().setUnlocalizedName("powder_spark_mix").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_spark_mix");
powder_desh = new Item().setUnlocalizedName("powder_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_desh");
powder_steel_tiny = new Item().setUnlocalizedName("powder_steel_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_steel_tiny");
powder_lithium_tiny = new ItemHazard().addHydroReactivity().setUnlocalizedName("powder_lithium_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lithium_tiny");
powder_lithium_tiny = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("powder_lithium_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lithium_tiny");
powder_neodymium_tiny = new Item().setUnlocalizedName("powder_neodymium_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_neodymium_tiny");
powder_cobalt_tiny = new Item().setUnlocalizedName("powder_cobalt_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cobalt_tiny");
powder_niobium_tiny = new Item().setUnlocalizedName("powder_niobium_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_niobium_tiny");
@ -2665,7 +2665,7 @@ public class ModItems {
pellet_rtg = new ItemRTGPellet(ItemHazard.pu238 * ItemHazard.billet * 3, true).setUnlocalizedName("pellet_rtg").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg");
pellet_rtg_weak = new ItemHazard(ItemHazard.pu238 * ItemHazard.billet).setUnlocalizedName("pellet_rtg_weak").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_weak");
pellet_rtg_polonium = new ItemHazard(ItemHazard.po210 * ItemHazard.billet * 3, true).setUnlocalizedName("pellet_rtg_polonium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_polonium");
pellet_rtg_gold = new ItemHazard().addRadiation(ItemHazard.au198 * ItemHazard.billet * 3).addFire(15).setUnlocalizedName("pellet_rtg_gold").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_gold");
pellet_rtg_gold = new ItemHazard().addRadiation(ItemHazard.au198 * ItemHazard.billet * 3).addFire(15).toItem().setUnlocalizedName("pellet_rtg_gold").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_gold");
tritium_deuterium_cake = new ItemCustomLore().setUnlocalizedName("tritium_deuterium_cake").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":tritium_deuterium_cake");
piston_selenium = new Item().setUnlocalizedName("piston_selenium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":piston_selenium");
@ -3036,9 +3036,9 @@ public class ModItems {
rod_dual_coolant = new ItemCustomLore().setUnlocalizedName("rod_dual_coolant").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_coolant");
rod_quad_coolant = new ItemCustomLore().setUnlocalizedName("rod_quad_coolant").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_coolant");
rod_lithium = new ItemHazard().addHydroReactivity().setUnlocalizedName("rod_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_lithium");
rod_dual_lithium = new ItemHazard().addHydroReactivity().setUnlocalizedName("rod_dual_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_lithium");
rod_quad_lithium = new ItemHazard().addHydroReactivity().setUnlocalizedName("rod_quad_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_lithium");
rod_lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("rod_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_lithium");
rod_dual_lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("rod_dual_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_lithium");
rod_quad_lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("rod_quad_lithium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_quad_empty).setTextureName(RefStrings.MODID + ":rod_quad_lithium");
rod_tritium = new ItemHazard(0.5F).setUnlocalizedName("rod_tritium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_empty).setTextureName(RefStrings.MODID + ":rod_tritium");
rod_dual_tritium = new ItemHazard(1F).setUnlocalizedName("rod_dual_tritium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.rod_dual_empty).setTextureName(RefStrings.MODID + ":rod_dual_tritium");

View File

@ -0,0 +1,43 @@
package com.hbm.items.block;
import java.util.List;
import com.hbm.interfaces.IItemHazard;
import com.hbm.modules.ItemHazardModule;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class ItemBlockHazard extends ItemBlock {
ItemHazardModule module;
public ItemBlockHazard(Block block) {
super(block);
if(block instanceof IItemHazard) {
this.module = ((IItemHazard)block).getModule();
}
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) {
if(entity instanceof EntityLivingBase && this.module != null)
this.module.applyEffects((EntityLivingBase) entity, stack.stackSize, i, b);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
super.addInformation(stack, player, list, bool);
if(this.module != null)
this.module.addInformation(stack, player, list, bool);
}
}

View File

@ -2,7 +2,9 @@ package com.hbm.items.special;
import java.util.List;
import com.hbm.interfaces.IItemHazard;
import com.hbm.inventory.BreederRecipes;
import com.hbm.modules.ItemHazardModule;
import com.hbm.util.ArmorUtil;
import com.hbm.util.ContaminationUtil;
import com.hbm.util.I18nUtil;
@ -16,7 +18,7 @@ import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
public class ItemHazard extends ItemCustomLore {
public class ItemHazard extends ItemCustomLore implements IItemHazard {
//AU192 64h α 500.00Rad/s 2 much spice :(
//PO210 138d α 025.00Rad/s Spicy
@ -57,121 +59,30 @@ public class ItemHazard extends ItemCustomLore {
public static final float rod = 0.5F;
public static final float rod_dual = 1.0F;
public static final float rod_quad = 2.0F;
float radiation;
float digamma;
int fire;
boolean blinding;
boolean asbestos;
boolean hydro;
ItemHazardModule module;
public ItemHazard() {
this.module = new ItemHazardModule();
}
public ItemHazard addRadiation(float radiation) {
this.radiation = radiation;
return this;
}
public ItemHazard addDigamma(float digamma) {
this.digamma = digamma;
return this;
}
public ItemHazard addFire(int fire) {
this.fire = fire;
return this;
}
public ItemHazard addAsbestos() {
this.asbestos = true;
return this;
}
public ItemHazard addHydroReactivity() {
this.hydro = true;
return this;
@Override
public ItemHazardModule getModule() {
return this.module;
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) {
if(entity instanceof EntityLivingBase)
applyEffects((EntityLivingBase) entity, stack.stackSize, i, b);
}
public void applyEffects(EntityLivingBase entity, float mod, int slot, boolean currentItem) {
if(this.radiation > 0)
ContaminationUtil.applyRadData(entity, this.radiation * mod / 20F);
if(this.digamma > 0)
ContaminationUtil.applyDigammaData(entity, 1F / ((float) digamma));
if(this.fire > 0)
entity.setFire(this.fire);
if(this.asbestos)
ContaminationUtil.applyAsbestos(entity, (int) (1 * mod));
if(this.hydro && currentItem) {
if(!entity.worldObj.isRemote && entity.isInWater() && entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entity;
ItemStack held = player.getHeldItem();
player.inventory.mainInventory[player.inventory.currentItem] = held.getItem().getContainerItem(held);
player.inventoryContainer.detectAndSendChanges();
player.worldObj.newExplosion(null, player.posX, player.posY + player.getEyeHeight() - player.getYOffset(), player.posZ, 2F, true, true);
}
}
if(this.blinding && !(entity instanceof EntityPlayer && ArmorUtil.checkForGoggles((EntityPlayer) entity))) {
((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 0));
}
this.module.applyEffects((EntityLivingBase) entity, stack.stackSize, i, b);
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
super.addInformation(stack, player, list, bool);
if(this.radiation > 0) {
list.add(EnumChatFormatting.GREEN + "[" + I18nUtil.resolveKey("trait.radioactive") + "]");
String rad = "" + (Math.floor(radiation * 1000) / 1000);
list.add(EnumChatFormatting.YELLOW + (rad + "RAD/s"));
}
if(this.fire > 0) {
list.add(EnumChatFormatting.GOLD + "[" + I18nUtil.resolveKey("trait.hot") + "]");
}
if(this.blinding) {
list.add(EnumChatFormatting.DARK_AQUA + "[" + I18nUtil.resolveKey("trait.blinding") + "]");
}
if(this.asbestos) {
list.add(EnumChatFormatting.WHITE + "[" + I18nUtil.resolveKey("trait.asbestos") + "]");
}
if(this.hydro) {
list.add(EnumChatFormatting.RED + "[" + I18nUtil.resolveKey("trait.hydro") + "]");
}
if(this.digamma > 0) {
float d = ((int) ((1000F / digamma) * 10F)) / 10F;
list.add(EnumChatFormatting.RED + "[" + I18nUtil.resolveKey("trait.digamma") + "]");
list.add(EnumChatFormatting.DARK_RED + "" + d + "mDRX/s");
}
int[] breeder = BreederRecipes.getFuelValue(stack);
if(breeder != null) {
list.add(BreederRecipes.getHEATString("[" + I18nUtil.resolveKey("trait.heat", breeder[0]) + "]", breeder[0]));
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.breeding", breeder[1]));
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.furnace", (breeder[0] * breeder[1] * 5)));
}
this.module.addInformation(stack, player, list, bool);
}
/*
@ -179,19 +90,22 @@ public class ItemHazard extends ItemCustomLore {
*/
@Deprecated()
public ItemHazard(float radiation) {
this.radiation = radiation;
this();
this.module.addRadiation(radiation);
}
@Deprecated()
public ItemHazard(float radiation, boolean fire) {
this.radiation = radiation;
if(fire) this.fire = 5;
this();
this.module.addRadiation(radiation);
if(fire) this.module.addFire(5);
}
@Deprecated()
public ItemHazard(float radiation, boolean fire, boolean blinding) {
this.radiation = radiation;
this.blinding = blinding;
if(fire) this.fire = 5;
this();
this.module.addRadiation(radiation);
this.module.addBlinding();
if(fire) this.module.addFire(5);
}
}

View File

@ -0,0 +1,129 @@
package com.hbm.modules;
import java.util.List;
import com.hbm.inventory.BreederRecipes;
import com.hbm.items.special.ItemHazard;
import com.hbm.util.ArmorUtil;
import com.hbm.util.ContaminationUtil;
import com.hbm.util.I18nUtil;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumChatFormatting;
public class ItemHazardModule {
/**
* Dependency injection: It's fun for boys and girls!
* All this interface-pattern-wish-wash only exists for three reasons:
* -it lets me add item hazards with ease by using self-returning setters
* -it's agnositc and also works with ItemBlocks or whatever implementation I want it to work
* -it makes the system truly centralized and I don't have to add new cases to 5 different classes when adding a new hazard
*/
float radiation;
float digamma;
int fire;
boolean blinding;
boolean asbestos;
boolean hydro;
public void addRadiation(float radiation) {
this.radiation = radiation;
}
public void addDigamma(float digamma) {
this.digamma = digamma;
}
public void addFire(int fire) {
this.fire = fire;
}
public void addAsbestos() {
this.asbestos = true;
}
public void addBlinding() {
this.blinding = true;
}
public void addHydroReactivity() {
this.hydro = true;
}
public void applyEffects(EntityLivingBase entity, float mod, int slot, boolean currentItem) {
if(this.radiation > 0)
ContaminationUtil.applyRadData(entity, this.radiation * mod / 20F);
if(this.digamma > 0)
ContaminationUtil.applyDigammaData(entity, 1F / ((float) digamma));
if(this.fire > 0)
entity.setFire(this.fire);
if(this.asbestos)
ContaminationUtil.applyAsbestos(entity, (int) (1 * mod));
if(this.hydro && currentItem) {
if(!entity.worldObj.isRemote && entity.isInWater() && entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entity;
ItemStack held = player.getHeldItem();
player.inventory.mainInventory[player.inventory.currentItem] = held.getItem().getContainerItem(held);
player.inventoryContainer.detectAndSendChanges();
player.worldObj.newExplosion(null, player.posX, player.posY + player.getEyeHeight() - player.getYOffset(), player.posZ, 2F, true, true);
}
}
if(this.blinding && !(entity instanceof EntityPlayer && ArmorUtil.checkForGoggles((EntityPlayer) entity))) {
((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 0));
}
}
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
if(this.radiation > 0) {
list.add(EnumChatFormatting.GREEN + "[" + I18nUtil.resolveKey("trait.radioactive") + "]");
String rad = "" + (Math.floor(radiation * 1000) / 1000);
list.add(EnumChatFormatting.YELLOW + (rad + "RAD/s"));
}
if(this.fire > 0) {
list.add(EnumChatFormatting.GOLD + "[" + I18nUtil.resolveKey("trait.hot") + "]");
}
if(this.blinding) {
list.add(EnumChatFormatting.DARK_AQUA + "[" + I18nUtil.resolveKey("trait.blinding") + "]");
}
if(this.asbestos) {
list.add(EnumChatFormatting.WHITE + "[" + I18nUtil.resolveKey("trait.asbestos") + "]");
}
if(this.hydro) {
list.add(EnumChatFormatting.RED + "[" + I18nUtil.resolveKey("trait.hydro") + "]");
}
if(this.digamma > 0) {
float d = ((int) ((1000F / digamma) * 10F)) / 10F;
list.add(EnumChatFormatting.RED + "[" + I18nUtil.resolveKey("trait.digamma") + "]");
list.add(EnumChatFormatting.DARK_RED + "" + d + "mDRX/s");
}
int[] breeder = BreederRecipes.getFuelValue(stack);
if(breeder != null) {
list.add(BreederRecipes.getHEATString("[" + I18nUtil.resolveKey("trait.heat", breeder[0]) + "]", breeder[0]));
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.breeding", breeder[1]));
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.furnace", (breeder[0] * breeder[1] * 5)));
}
}
}