mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
hazardous block items, funny centralized hazard system for items
This commit is contained in:
parent
03e80f5a12
commit
c44cb67656
@ -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");
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
29
src/main/java/com/hbm/blocks/generic/BlockRadioactive.java
Normal file
29
src/main/java/com/hbm/blocks/generic/BlockRadioactive.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
46
src/main/java/com/hbm/interfaces/IItemHazard.java
Normal file
46
src/main/java/com/hbm/interfaces/IItemHazard.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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");
|
||||
|
||||
43
src/main/java/com/hbm/items/block/ItemBlockHazard.java
Normal file
43
src/main/java/com/hbm/items/block/ItemBlockHazard.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
129
src/main/java/com/hbm/modules/ItemHazardModule.java
Normal file
129
src/main/java/com/hbm/modules/ItemHazardModule.java
Normal 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)));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user