aboutsummaryrefslogtreecommitdiff
path: root/src/Java/miscutil
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-08-30 16:07:04 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-08-30 16:07:04 +1000
commit31fa812d171e05b1756852155adecba90fb4f848 (patch)
tree8858c8ab5f94fd100e364faa54e2e9a25c6b5d7a /src/Java/miscutil
parent35d165e6d72b21920e14540dea1465488fd5db3d (diff)
downloadGT5-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/Java/miscutil')
-rw-r--r--src/Java/miscutil/core/item/ModItems.java10
-rw-r--r--src/Java/miscutil/core/item/base/dusts/BaseItemDust.java24
-rw-r--r--src/Java/miscutil/core/item/base/ingots/BaseItemIngot.java25
-rw-r--r--src/Java/miscutil/core/item/base/ingots/BaseItemIngotHot.java2
-rw-r--r--src/Java/miscutil/core/item/base/itemblock/ItemBlockGtBlock.java40
-rw-r--r--src/Java/miscutil/core/item/base/plates/BaseItemPlate.java24
-rw-r--r--src/Java/miscutil/core/item/base/rods/BaseItemRod.java24
-rw-r--r--src/Java/miscutil/core/item/base/rods/BaseItemRodLong.java24
-rw-r--r--src/Java/miscutil/core/util/item/UtilsItems.java19
-rw-r--r--src/Java/miscutil/xmod/gregtech/common/tileentities/machines/multi/GregtechMTENuclearReactor.java287
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