diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2016-08-30 16:07:04 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-08-30 16:07:04 +1000 |
commit | 31fa812d171e05b1756852155adecba90fb4f848 (patch) | |
tree | 8858c8ab5f94fd100e364faa54e2e9a25c6b5d7a /src | |
parent | 35d165e6d72b21920e14540dea1465488fd5db3d (diff) | |
download | GT5-Unofficial-31fa812d171e05b1756852155adecba90fb4f848.tar.gz GT5-Unofficial-31fa812d171e05b1756852155adecba90fb4f848.tar.bz2 GT5-Unofficial-31fa812d171e05b1756852155adecba90fb4f848.zip |
+ Added a system to handle radioactive materials.
+ Added some new tooltips to warn against radiation damage.
Diffstat (limited to 'src')
10 files changed, 460 insertions, 19 deletions
diff --git a/src/Java/miscutil/core/item/ModItems.java b/src/Java/miscutil/core/item/ModItems.java index e06bbad8a6..cc52b5d6bf 100644 --- a/src/Java/miscutil/core/item/ModItems.java +++ b/src/Java/miscutil/core/item/ModItems.java @@ -195,7 +195,7 @@ public final class ModItems { //@SuppressWarnings("unused") public static final void init(){ - AAA_Broken = new BaseItemIngot("AAA_Broken", "Errors - Tell Alkalus", Utils.rgbtoHexValue(128, 128, 128)); + AAA_Broken = new BaseItemIngot("AAA_Broken", "Errors - Tell Alkalus", Utils.rgbtoHexValue(128, 128, 128), 0); //Debug Loading if (CORE.DEBUG){ @@ -284,8 +284,8 @@ public final class ModItems { UtilsItems.generateItemsFromMaterial("NiobiumCarbide", "Niobium Carbide", 6, MaterialInfo.NIOMBIUMCARBIDE, Utils.rgbtoHexValue(205, 197, 191), true); - //Uranium-233 - UtilsItems.generateItemsFromMaterial("Uranium233", "Uranium 233", 2, MaterialInfo.INCONEL792, Utils.rgbtoHexValue(73, 220, 83), true); //Uranium-233 is a fissile isotope of uranium that is bred from thorium-232 as part of the thorium fuel cycle. + //Uranium-233if + UtilsItems.generateItemsFromMaterial("Uranium233", "Uranium 233", 4, MaterialInfo.INCONEL792, Utils.rgbtoHexValue(73, 220, 83), false); //Uranium-233 is a fissile isotope of uranium that is bred from thorium-232 as part of the thorium fuel cycle. //EnderIO Resources @@ -416,8 +416,8 @@ public final class ModItems { //Special Item Handling Case if (configSwitches.enableAlternativeBatteryAlloy) { - ModItems.itemIngotBatteryAlloy = new BaseItemIngot("itemIngotBatteryAlloy", "Battery Alloy", Utils.rgbtoHexValue(35, 228, 141)); - ModItems.itemPlateBatteryAlloy = new BaseItemPlate("itemPlateBatteryAlloy", "Battery Alloy", Utils.rgbtoHexValue(35, 228, 141), 2); + ModItems.itemIngotBatteryAlloy = new BaseItemIngot("itemIngotBatteryAlloy", "Battery Alloy", Utils.rgbtoHexValue(35, 228, 141), 0); + ModItems.itemPlateBatteryAlloy = new BaseItemPlate("itemPlateBatteryAlloy", "Battery Alloy", Utils.rgbtoHexValue(35, 228, 141), 2, 0); } diff --git a/src/Java/miscutil/core/item/base/dusts/BaseItemDust.java b/src/Java/miscutil/core/item/base/dusts/BaseItemDust.java index 8f6976700f..360b620cc5 100644 --- a/src/Java/miscutil/core/item/base/dusts/BaseItemDust.java +++ b/src/Java/miscutil/core/item/base/dusts/BaseItemDust.java @@ -6,6 +6,8 @@ import gregtech.api.enums.ItemList; import gregtech.api.enums.OrePrefixes; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; +import ic2.core.IC2Potion; +import ic2.core.item.armor.ItemArmorHazmat; import java.util.List; @@ -15,10 +17,13 @@ import miscutil.core.util.Utils; import miscutil.core.util.item.UtilsItems; import miscutil.core.util.math.MathUtils; import miscutil.core.util.recipe.UtilsRecipe; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import cpw.mods.fml.common.registry.GameRegistry; public class BaseItemDust extends Item{ @@ -31,7 +36,7 @@ public class BaseItemDust extends Item{ private int mTier; private MaterialInfo dustInfo; - public BaseItemDust(String unlocalizedName, String materialName, MaterialInfo matInfo, int colour, String pileSize, boolean blastFurnaceRequired, int tier) { + public BaseItemDust(String unlocalizedName, String materialName, MaterialInfo matInfo, int colour, String pileSize, boolean blastFurnaceRequired, int tier, int sRadioactivity) { setUnlocalizedName(unlocalizedName); this.setUnlocalizedName(unlocalizedName); this.setMaxStackSize(64); @@ -45,6 +50,7 @@ public class BaseItemDust extends Item{ this.materialName = materialName; this.useBlastFurnace = blastFurnaceRequired; this.dustInfo = matInfo; + this.sRadiation = sRadioactivity; GameRegistry.registerItem(this, unlocalizedName); String temp = ""; @@ -90,6 +96,19 @@ public class BaseItemDust extends Item{ } return name; } + + protected final int sRadiation; + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + if (!world.isRemote){ + if (this.sRadiation > 0 && (entityHolding instanceof EntityLivingBase)) { + EntityLivingBase entityLiving = (EntityLivingBase) entityHolding; + if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) { + IC2Potion.radiation.applyTo(entityLiving, sRadiation * 20, sRadiation * 10); + } + } + } + } @Override public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) { @@ -103,6 +122,9 @@ public class BaseItemDust extends Item{ else { list.add(EnumChatFormatting.GRAY+"A pile of " + materialName + " dust."); } + if (sRadiation > 0){ + list.add(EnumChatFormatting.GRAY+"Warning: "+EnumChatFormatting.GREEN+"Radioactive! "+EnumChatFormatting.GOLD+" Avoid direct handling without hazmat protection."); + } //} super.addInformation(stack, aPlayer, list, bool); } diff --git a/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java b/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java index ac71a4391c..30659c53cc 100644 --- a/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java +++ b/src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java @@ -2,6 +2,8 @@ package miscutil.core.item.base.ingots; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; +import ic2.core.IC2Potion; +import ic2.core.item.armor.ItemArmorHazmat; import java.util.List; @@ -10,10 +12,13 @@ import miscutil.core.lib.CORE; import miscutil.core.util.Utils; import miscutil.core.util.item.UtilsItems; import miscutil.core.util.math.MathUtils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import cpw.mods.fml.common.registry.GameRegistry; public class BaseItemIngot extends Item{ @@ -22,7 +27,7 @@ public class BaseItemIngot extends Item{ protected String materialName; protected String unlocalName; - public BaseItemIngot(String unlocalizedName, String materialName, int colour) { + public BaseItemIngot(String unlocalizedName, String materialName, int colour, int sRadioactivity) { setUnlocalizedName(unlocalizedName); this.setCreativeTab(AddToCreativeTab.tabMisc); this.setUnlocalizedName(unlocalizedName); @@ -32,6 +37,7 @@ public class BaseItemIngot extends Item{ this.setMaxStackSize(64); this.colour = colour; this.materialName = materialName; + this.sRadiation = sRadioactivity; GameRegistry.registerItem(this, unlocalizedName); String temp = ""; if (unlocalName.contains("itemIngot")){ @@ -60,6 +66,9 @@ public class BaseItemIngot extends Item{ else if (materialName != null && materialName != "" && !materialName.equals("") && unlocalName.toLowerCase().contains("ingothot")){ list.add(EnumChatFormatting.GRAY+"Warning: "+EnumChatFormatting.RED+"Very hot! "+EnumChatFormatting.GRAY+" Avoid direct handling.."); } + if (sRadiation > 0){ + list.add(EnumChatFormatting.GRAY+"Warning: "+EnumChatFormatting.GREEN+"Radioactive! "+EnumChatFormatting.GOLD+" Avoid direct handling without hazmat protection."); + } super.addInformation(stack, aPlayer, list, bool); } @@ -102,4 +111,18 @@ public class BaseItemIngot extends Item{ } + + + protected final int sRadiation; + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + if (!world.isRemote){ + if (this.sRadiation > 0 && (entityHolding instanceof EntityLivingBase)) { + EntityLivingBase entityLiving = (EntityLivingBase) entityHolding; + if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) { + IC2Potion.radiation.applyTo(entityLiving, sRadiation * 20, sRadiation * 10); + } + } + } + } } diff --git a/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java b/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java index e8a31f599d..bc6447a1a8 100644 --- a/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java +++ b/src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java @@ -22,7 +22,7 @@ public class BaseItemIngotHot extends BaseItemIngot{ private int mTier; public BaseItemIngotHot(String unlocalizedName, String materialName, ItemStack coldIngot, int tier) { - super(unlocalizedName, materialName, Utils.rgbtoHexValue(225, 225, 225)); + super(unlocalizedName, materialName, Utils.rgbtoHexValue(225, 225, 225), 0); this.setTextureName(CORE.MODID + ":" + "itemIngotHot"); this.outputIngot = coldIngot; this.mTier = tier; diff --git a/src/Java/miscutil/core/item/base/itemblock/ItemBlockGtBlock.java b/src/Java/miscutil/core/item/base/itemblock/ItemBlockGtBlock.java index 79364cb079..6c244b33db 100644 --- a/src/Java/miscutil/core/item/base/itemblock/ItemBlockGtBlock.java +++ b/src/Java/miscutil/core/item/base/itemblock/ItemBlockGtBlock.java @@ -1,22 +1,60 @@ package miscutil.core.item.base.itemblock; import gregtech.api.util.GT_OreDictUnificator; +import ic2.core.IC2Potion; +import ic2.core.item.armor.ItemArmorHazmat; + +import java.util.List; + import miscutil.core.util.item.UtilsItems; 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.util.EnumChatFormatting; +import net.minecraft.world.World; public class ItemBlockGtBlock extends ItemBlock{ - protected int blockColour; + protected final int blockColour; + protected final int sRadiation; public ItemBlockGtBlock(Block block) { super(block); this.blockColour = block.getBlockColor(); + if (block.getLocalizedName().toLowerCase().contains("uranium") || block.getLocalizedName().toLowerCase().contains("plutonium") || block.getLocalizedName().toLowerCase().contains("thorium")){ + sRadiation = 2; + } + else { + sRadiation = 0; + } GT_OreDictUnificator.registerOre("block"+block.getUnlocalizedName().replace("tile.block", "").replace("tile.", "").replace("of", "").replace("Of", "").replace("Block", "").replace("-", "").replace("_", "").replace(" ", ""), UtilsItems.getSimpleStack(this)); } public int getRenderColor(int aMeta) { return blockColour; } + + @Override + public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) { + if (sRadiation > 0){ + list.add(EnumChatFormatting.GRAY+"Warning: "+EnumChatFormatting.GREEN+"Radioactive! "+EnumChatFormatting.GOLD+" Avoid direct handling without hazmat protection."); + } + super.addInformation(stack, aPlayer, list, bool); + } + + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + if (!world.isRemote){ + if (this.sRadiation > 0 && (entityHolding instanceof EntityLivingBase)) { + EntityLivingBase entityLiving = (EntityLivingBase) entityHolding; + if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) { + IC2Potion.radiation.applyTo(entityLiving, sRadiation * 20, sRadiation * 10); + } + } + } + } } diff --git a/src/Java/miscutil/core/item/base/plates/BaseItemPlate.java b/src/Java/miscutil/core/item/base/plates/BaseItemPlate.java index 92fe7262de..75d3f6a527 100644 --- a/src/Java/miscutil/core/item/base/plates/BaseItemPlate.java +++ b/src/Java/miscutil/core/item/base/plates/BaseItemPlate.java @@ -2,6 +2,8 @@ package miscutil.core.item.base.plates; import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_OreDictUnificator; +import ic2.core.IC2Potion; +import ic2.core.item.armor.ItemArmorHazmat; import java.util.List; @@ -10,10 +12,13 @@ import miscutil.core.lib.CORE; import miscutil.core.util.Utils; import miscutil.core.util.item.UtilsItems; import miscutil.core.util.math.MathUtils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import cpw.mods.fml.common.registry.GameRegistry; public class BaseItemPlate extends Item{ @@ -23,7 +28,7 @@ public class BaseItemPlate extends Item{ protected String unlocalName; private int mTier; - public BaseItemPlate(String unlocalizedName, String materialName, int colour, int tier) { + public BaseItemPlate(String unlocalizedName, String materialName, int colour, int tier, int sRadioactivity) { setUnlocalizedName(unlocalizedName); this.setCreativeTab(AddToCreativeTab.tabMisc); this.setUnlocalizedName(unlocalizedName); @@ -33,6 +38,7 @@ public class BaseItemPlate extends Item{ this.colour = colour; this.mTier = tier; this.materialName = materialName; + this.sRadiation = sRadioactivity; GameRegistry.registerItem(this, unlocalizedName); GT_OreDictUnificator.registerOre(unlocalName.replace("itemP", "p"), UtilsItems.getSimpleStack(this)); addBendingRecipe(); @@ -49,6 +55,9 @@ public class BaseItemPlate extends Item{ if (materialName != null && materialName != "" && !materialName.equals("")){ list.add(EnumChatFormatting.GRAY+"A flat plate of " + materialName + "."); } + if (sRadiation > 0){ + list.add(EnumChatFormatting.GRAY+"Warning: "+EnumChatFormatting.GREEN+"Radioactive! "+EnumChatFormatting.GOLD+" Avoid direct handling without hazmat protection."); + } super.addInformation(stack, aPlayer, list, bool); } @@ -64,6 +73,19 @@ public class BaseItemPlate extends Item{ return colour; } + + protected final int sRadiation; + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + if (!world.isRemote){ + if (this.sRadiation > 0 && (entityHolding instanceof EntityLivingBase)) { + EntityLivingBase entityLiving = (EntityLivingBase) entityHolding; + if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) { + IC2Potion.radiation.applyTo(entityLiving, sRadiation * 20, sRadiation * 10); + } + } + } + } private void addBendingRecipe(){ Utils.LOG_WARNING("Adding recipe for "+materialName+" Plates"); diff --git a/src/Java/miscutil/core/item/base/rods/BaseItemRod.java b/src/Java/miscutil/core/item/base/rods/BaseItemRod.java index 454669dbc1..64abd9f591 100644 --- a/src/Java/miscutil/core/item/base/rods/BaseItemRod.java +++ b/src/Java/miscutil/core/item/base/rods/BaseItemRod.java @@ -3,6 +3,8 @@ package miscutil.core.item.base.rods; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gregtech.api.util.GT_OreDictUnificator; +import ic2.core.IC2Potion; +import ic2.core.item.armor.ItemArmorHazmat; import java.util.List; @@ -12,10 +14,13 @@ import miscutil.core.util.Utils; import miscutil.core.util.item.UtilsItems; import miscutil.core.util.math.MathUtils; import miscutil.core.util.recipe.UtilsRecipe; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import cpw.mods.fml.common.registry.GameRegistry; public class BaseItemRod extends Item{ @@ -25,7 +30,7 @@ public class BaseItemRod extends Item{ protected String unlocalName; private int mTier; - public BaseItemRod(String unlocalizedName, String materialName, int colour, int tier) { + public BaseItemRod(String unlocalizedName, String materialName, int colour, int tier, int sRadioactivity) { setUnlocalizedName(unlocalizedName); this.setCreativeTab(AddToCreativeTab.tabMisc); this.setUnlocalizedName(unlocalizedName); @@ -35,6 +40,7 @@ public class BaseItemRod extends Item{ this.colour = colour; this.mTier = tier; this.materialName = materialName; + this.sRadiation = sRadioactivity; GameRegistry.registerItem(this, unlocalizedName); GT_OreDictUnificator.registerOre(unlocalName.replace("itemRod", "stick"), UtilsItems.getSimpleStack(this)); addExtruderRecipe(); @@ -51,6 +57,9 @@ public class BaseItemRod extends Item{ if (materialName != null && materialName != "" && !materialName.equals("")){ list.add(EnumChatFormatting.GRAY+"A 40cm Rod of " + materialName + "."); } + if (sRadiation > 0){ + list.add(EnumChatFormatting.GRAY+"Warning: "+EnumChatFormatting.GREEN+"Radioactive! "+EnumChatFormatting.GOLD+" Avoid direct handling without hazmat protection."); + } super.addInformation(stack, aPlayer, list, bool); } @@ -67,6 +76,19 @@ public class BaseItemRod extends Item{ } + protected final int sRadiation; + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + if (!world.isRemote){ + if (this.sRadiation > 0 && (entityHolding instanceof EntityLivingBase)) { + EntityLivingBase entityLiving = (EntityLivingBase) entityHolding; + if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) { + IC2Potion.radiation.applyTo(entityLiving, sRadiation * 20, sRadiation * 10); + } + } + } + } + private void addExtruderRecipe(){ Utils.LOG_WARNING("Adding recipe for "+materialName+" Rods"); String tempIngot = unlocalName.replace("itemRod", "ingot"); diff --git a/src/Java/miscutil/core/item/base/rods/BaseItemRodLong.java b/src/Java/miscutil/core/item/base/rods/BaseItemRodLong.java index 0ad5f1cfd9..dc2b50e594 100644 --- a/src/Java/miscutil/core/item/base/rods/BaseItemRodLong.java +++ b/src/Java/miscutil/core/item/base/rods/BaseItemRodLong.java @@ -2,6 +2,8 @@ package miscutil.core.item.base.rods; import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_OreDictUnificator; +import ic2.core.IC2Potion; +import ic2.core.item.armor.ItemArmorHazmat; import java.util.List; @@ -11,10 +13,13 @@ import miscutil.core.util.Utils; import miscutil.core.util.item.UtilsItems; import miscutil.core.util.math.MathUtils; import miscutil.core.util.recipe.UtilsRecipe; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; import cpw.mods.fml.common.registry.GameRegistry; public class BaseItemRodLong extends Item{ @@ -24,7 +29,7 @@ public class BaseItemRodLong extends Item{ protected String unlocalName; private int mTier; - public BaseItemRodLong(String unlocalizedName, String materialName, int colour, int tier) { + public BaseItemRodLong(String unlocalizedName, String materialName, int colour, int tier, int sRadioactivity) { setUnlocalizedName(unlocalizedName); this.setCreativeTab(AddToCreativeTab.tabMisc); this.setUnlocalizedName(unlocalizedName); @@ -34,6 +39,7 @@ public class BaseItemRodLong extends Item{ this.colour = colour; this.mTier = tier; this.materialName = materialName; + this.sRadiation = sRadioactivity; GameRegistry.registerItem(this, unlocalizedName); GT_OreDictUnificator.registerOre(unlocalName.replace("itemRod", "stick"), UtilsItems.getSimpleStack(this)); addExtruderRecipe(); @@ -50,6 +56,9 @@ public class BaseItemRodLong extends Item{ if (materialName != null && materialName != "" && !materialName.equals("")){ list.add(EnumChatFormatting.GRAY+"A 80cm Rod of " + materialName + "."); } + if (sRadiation > 0){ + list.add(EnumChatFormatting.GRAY+"Warning: "+EnumChatFormatting.GREEN+"Radioactive! "+EnumChatFormatting.GOLD+" Avoid direct handling without hazmat protection."); + } super.addInformation(stack, aPlayer, list, bool); } @@ -65,6 +74,19 @@ public class BaseItemRodLong extends Item{ return colour; } + + protected final int sRadiation; + @Override + public void onUpdate(ItemStack iStack, World world, Entity entityHolding, int p_77663_4_, boolean p_77663_5_) { + if (!world.isRemote){ + if (this.sRadiation > 0 && (entityHolding instanceof EntityLivingBase)) { + EntityLivingBase entityLiving = (EntityLivingBase) entityHolding; + if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) { + IC2Potion.radiation.applyTo(entityLiving, sRadiation * 20, sRadiation * 10); + } + } + } + } private void addExtruderRecipe(){ Utils.LOG_WARNING("Adding recipe for Long "+materialName+" Rods"); diff --git a/src/Java/miscutil/core/util/item/UtilsItems.java b/src/Java/miscutil/core/util/item/UtilsItems.java index c11becb57d..eca3d750af 100644 --- a/src/Java/miscutil/core/util/item/UtilsItems.java +++ b/src/Java/miscutil/core/util/item/UtilsItems.java @@ -253,22 +253,27 @@ public class UtilsItems { if (materialTier > 10 || materialTier <= 0){ materialTier = 2; } + int sRadiation = 0; + + if (materialName.toLowerCase().contains("uranium") || materialName.toLowerCase().contains("plutonium") || materialName.toLowerCase().contains("thorium")){ + sRadiation = 2; + } Item temp; Block tempBlock; tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.STANDARD, Colour); tempBlock = new BlockBaseModular(unlocalizedName, materialName,BlockTypes.FRAME, Colour); - temp = new BaseItemIngot("itemIngot"+unlocalizedName, materialName, Colour); + temp = new BaseItemIngot("itemIngot"+unlocalizedName, materialName, Colour, sRadiation); if (hotIngot){ Item tempIngot = temp; temp = new BaseItemIngotHot("itemHotIngot"+unlocalizedName, materialName, UtilsItems.getSimpleStack(tempIngot, 1), materialTier); } - temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", hotIngot, materialTier); - temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", hotIngot, materialTier); - temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", hotIngot, materialTier); + temp = new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", hotIngot, materialTier, sRadiation); + temp = new BaseItemDust("itemDustTiny"+unlocalizedName, materialName, matInfo, Colour, "Tiny", hotIngot, materialTier, sRadiation); + temp = new BaseItemDust("itemDustSmall"+unlocalizedName, materialName, matInfo, Colour, "Small", hotIngot, materialTier, sRadiation); - temp = new BaseItemPlate("itemPlate"+unlocalizedName, materialName, Colour, materialTier); - temp = new BaseItemRod("itemRod"+unlocalizedName, materialName, Colour, materialTier); - temp = new BaseItemRodLong("itemRodLong"+unlocalizedName, materialName, Colour, materialTier); + temp = new BaseItemPlate("itemPlate"+unlocalizedName, materialName, Colour, materialTier, sRadiation); + temp = new BaseItemRod("itemRod"+unlocalizedName, materialName, Colour, materialTier, sRadiation); + temp = new BaseItemRodLong("itemRodLong"+unlocalizedName, materialName, Colour, materialTier, sRadiation); temp = new BaseItemRing("itemRing"+unlocalizedName, materialName, Colour, materialTier); temp = new BaseItemBolt("itemBolt"+unlocalizedName, materialName, Colour, materialTier); temp = new BaseItemScrew("itemScrew"+unlocalizedName, materialName, Colour, materialTier); diff --git a/src/Java/miscutil/xmod/gregtech/common/tileentities/machines/multi/GregtechMTENuclearReactor.java b/src/Java/miscutil/xmod/gregtech/common/tileentities/machines/multi/GregtechMTENuclearReactor.java new file mode 100644 index 0000000000..713a44f0a8 --- /dev/null +++ b/src/Java/miscutil/xmod/gregtech/common/tileentities/machines/multi/GregtechMTENuclearReactor.java @@ -0,0 +1,287 @@ +package miscutil.xmod.gregtech.common.tileentities.machines.multi; + +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.util.GT_Config; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; + +import java.util.ArrayList; +import java.util.Arrays; + +import miscutil.core.block.ModBlocks; +import miscutil.core.lib.CORE; +import miscutil.core.util.Utils; +import miscutil.core.util.item.UtilsItems; +import miscutil.xmod.gregtech.api.gui.GUI_MultiMachine; +import miscutil.xmod.gregtech.api.util.GregtechRecipe; +import net.minecraft.block.Block; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; + +import org.apache.commons.lang3.ArrayUtils; + +public class GregtechMTENuclearReactor extends GT_MetaTileEntity_MultiBlockBase { + + public static int sUUAperUUM = 1; + public static int sUUASpeedBonus = 4; + public static int sDurationMultiplier = 3215; + public static boolean sRequiresUUA = false; + private int recipeCounter = 0; + private static Block IC2Glass = Block.getBlockFromItem(UtilsItems.getItem("IC2:blockAlloyGlass")); + //public FluidStack mFluidOut = Materials.UUMatter.getFluid(1L); + + public GregtechMTENuclearReactor(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GregtechMTENuclearReactor(String aName) { + super(aName); + } + + @Override + public String[] getDescription() { + return new String[]{ + "Controller Block for the Nuclear Reactor", + "Produces heat from Radioactive beta decay.", + "Size(WxHxD): 5x4x5, Controller (Bottom center)", + "3x1x3 Matter Generation Coils (Inside bottom 5x1x5 layer)", + "9x Matter Generation Coils (Centered 3x1x3 area in Bottom layer)", + "1x Input Hatch (Any bottom layer casing)", + "1x Output Hatch (Any bottom layer casing)", + "1x Maintenance Hatch (Any bottom layer casing)", + "1x Muffler Hatch (Centered 3x1x3 area in Top layer)", + "1x Energy Hatch (Any bottom layer casing)", + "24x IC2 Reinforced Glass for the walls", + "Matter Fabricator Casings for the edges & top (40 at least!)", + CORE.GT_Tooltip}; + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { + if (aSide == aFacing) { + return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[66], + new GT_RenderedTexture(aActive ? Textures.BlockIcons.OVERLAY_FRONT_LARGE_BOILER_ACTIVE : Textures.BlockIcons.OVERLAY_FRONT_LARGE_BOILER)}; + } + return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[66]}; + } + + @Override + public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { + return new GUI_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "MatterFabricator.png"); + } + + @Override + public void onConfigLoad(GT_Config aConfig) { + } + + @Override + public boolean checkRecipe(ItemStack aStack) { + ArrayList<FluidStack> tFluidList = getStoredFluids(); + for (int i = 0; i < tFluidList.size() - 1; i++) { + for (int j = i + 1; j < tFluidList.size(); j++) { + if (GT_Utility.areFluidsEqual((FluidStack) tFluidList.get(i), (FluidStack) tFluidList.get(j))) { + if (((FluidStack) tFluidList.get(i)).amount >= ((FluidStack) tFluidList.get(j)).amount) { + tFluidList.remove(j--); + } else { + tFluidList.remove(i--); + break; + } + } + } + } + + long tVoltage = getMaxInputVoltage(); + byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); + FluidStack[] tFluids = (FluidStack[]) Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tFluidList.size()]), 0, tFluidList.size()); + if (tFluids.length > 0) { + for(int i = 0;i<tFluids.length;i++){ + GT_Recipe tRecipe = GregtechRecipe.Gregtech_Recipe_Map.sMatterFab2Recipes.findRecipe(getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], new FluidStack[]{tFluids[i]}, new ItemStack[]{}); + if (tRecipe != null) { + if (tRecipe.isRecipeInputEqual(true, tFluids, new ItemStack[]{})) { + this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); + this.mEfficiencyIncrease = 10000; + if (tRecipe.mEUt <= 16) { + this.mEUt = (tRecipe.mEUt * (1 << tTier - 1) * (1 << tTier - 1)); + this.mMaxProgresstime = ((tRecipe.mDuration/**sDurationMultiplier*/) / (1 << tTier - 1)); + } else { + this.mEUt = tRecipe.mEUt; + this.mMaxProgresstime = (tRecipe.mDuration/**sDurationMultiplier*/); + while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) { + this.mEUt *= 4; + this.mMaxProgresstime /= 2; + } + } + if (this.mEUt > 0) { + this.mEUt = (-this.mEUt); + } + this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); + this.mOutputItems = new ItemStack[]{tRecipe.getOutput(0)}; + this.mOutputFluids = tRecipe.mFluidOutputs.clone(); + ArrayUtils.reverse(mOutputFluids); + recipeCounter++; + updateSlots(); + //Utils.LOG_INFO("Recipes Finished: "+recipeCounter); + return true; + } + } + else { + Utils.LOG_INFO("Invalid Recipe"); + } + } + } + return false; + } + + @Override + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 2; + int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 2; + for (int i = -2; i < 3; i++) { + for (int j = -2; j < 3; j++) { + for (int h = 0; h < 4; h++) { + + IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j); + + if ((i != -2 && i != 2) && (j != -2 && j != 2)) {// innerer 3x3 ohne h�he + if (h == 0) {// inner floor 3x3 + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) { + Utils.LOG_INFO("Coils missings from the bottom layer, inner 3x3."); + return false; + } + if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j) != 8) { + Utils.LOG_INFO("Coils missings from the bottom layer, inner 3x3."); + return false; + } + } else if (h == 3) {//Roofing blocks 3x3 (casings + input + muffler) + if ((!addMufflerToMachineList(tTileEntity, 66))) { + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) { + Utils.LOG_INFO("Casings Missing from one of the top layers inner 3x3."); + return false; + } + if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j) != 9) { + Utils.LOG_INFO("Casings Missing from one of the top layers inner 3x3."); + return false; + } + } + } else {// Inner Air section, may require blocks here. + if (!aBaseMetaTileEntity.getAirOffset(xDir + i, h, zDir + j)) { + Utils.LOG_INFO("Make sure the inner 3x3 of the Multiblock is Air."); + return false; + } + } + } else {// Outer 5x5 + if (h == 0) {// au�en boden (controller, output, energy, maintainance, rest ulv casings) + if ((!addMaintenanceToMachineList(tTileEntity, 66)) && (!addInputToMachineList(tTileEntity, 66)) && (!addOutputToMachineList(tTileEntity, 66)) && (!addEnergyInputToMachineList(tTileEntity, 66))) { + if ((xDir + i != 0) || (zDir + j != 0)) {//no controller + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the edges of the bottom layer."); + return false; + } + if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j) != 9) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the edges of the bottom layer."); + return false; + } + } + } + } else {// au�en �ber boden (ulv casings) + if (h == 1) { + + if ((i == -2 || i == 2) && (j == -2 || j == 2)){ + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the corners in the second layer."); + return false; + } + if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j) != 9) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the corners in the second layer."); + return false; + } + } + + else if ((i != -2 || i != 2) && (j != -2 || j != 2)){ + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != IC2Glass) { + Utils.LOG_INFO("Glass Casings Missing from somewhere in the second layer."); + return false; + } + } + } + if (h == 2) { + if ((i == -2 || i == 2) && (j == -2 || j == 2)){ + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the corners in the third layer."); + return false; + } + if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j) != 9) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the corners in the third layer."); + return false; + } + } + + else if ((i != -2 || i != 2) && (j != -2 || j != 2)){ + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != IC2Glass) { + Utils.LOG_INFO("Glass Casings Missing from somewhere in the third layer."); + return false; + } + } + } + if (h == 3) { + if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the edges on the top layer."); + return false; + } + if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j) != 9) { + Utils.LOG_INFO("Matter Fabricator Casings Missing from one of the edges on the top layer."); + return false; + } + } + } + } + } + } + } + Utils.LOG_INFO("Multiblock Formed."); + return true; + } + + @Override + public boolean isCorrectMachinePart(ItemStack aStack) { + return true; + } + + @Override + public int getMaxEfficiency(ItemStack aStack) { + return 10000; + } + + @Override + public int getPollutionPerTick(ItemStack aStack) { + return 0; + } + + @Override + public int getDamageToComponent(ItemStack aStack) { + return 0; + } + + @Override + public int getAmountOfOutputs() { + return 1; + } + + @Override + public boolean explodesOnComponentBreak(ItemStack aStack) { + return false; + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GregtechMTENuclearReactor(this.mName); + } + +}
\ No newline at end of file |