diff options
Diffstat (limited to 'src/Java/gtPlusPlus')
15 files changed, 591 insertions, 143 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java index 077efe102a..c92d38f46a 100644 --- a/src/Java/gtPlusPlus/GTplusplus.java +++ b/src/Java/gtPlusPlus/GTplusplus.java @@ -167,12 +167,6 @@ public class GTplusplus implements ActionListener { mChunkLoading.init(event); proxy.init(event); proxy.registerNetworkStuff(); - - //Set Variables for Fluorite Block handling - Logger.INFO("Setting some Variables for the block break event handler."); - BlockEventHandler.oreLimestone = OreDictionary.getOres("oreLimestone"); - BlockEventHandler.blockLimestone = OreDictionary.getOres("limestone"); - BlockEventHandler.fluoriteOre = FLUORIDES.FLUORITE.getOre(1); Core_Manager.init(); //Used by foreign players to generate .lang files for translation. @@ -190,7 +184,13 @@ public class GTplusplus implements ActionListener { proxy.postInit(event); BookHandler.runLater(); Core_Manager.postInit(); - SprinklerHandler.registerModFerts(); + //SprinklerHandler.registerModFerts(); + + //Set Variables for Fluorite Block handling + Logger.INFO("Setting some Variables for the block break event handler."); + BlockEventHandler.oreLimestone = OreDictionary.getOres("oreLimestone"); + BlockEventHandler.blockLimestone = OreDictionary.getOres("limestone"); + BlockEventHandler.fluoriteOre = FLUORIDES.FLUORITE.getOre(1); Logger.INFO("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Logger.INFO("| Recipes succesfully Loaded: " + RegistrationHandler.recipesSuccess + " | Failed: " diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index 04470b3554..2fd23ec88d 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -37,8 +37,10 @@ import gtPlusPlus.core.item.base.plates.BaseItemPlateDouble; import gtPlusPlus.core.item.bauble.HealthBoostBauble; import gtPlusPlus.core.item.bauble.ModularBauble; import gtPlusPlus.core.item.chemistry.CoalTar; +import gtPlusPlus.core.item.chemistry.IonParticles; import gtPlusPlus.core.item.chemistry.NuclearChem; import gtPlusPlus.core.item.chemistry.RocketFuels; +import gtPlusPlus.core.item.chemistry.StandardBaseParticles; import gtPlusPlus.core.item.effects.RarityUncommon; import gtPlusPlus.core.item.general.*; import gtPlusPlus.core.item.general.books.ItemBaseBook; @@ -536,6 +538,7 @@ public final class ModItems { MaterialGenerator.generate(ALLOY.MARAGING250); MaterialGenerator.generate(ALLOY.MARAGING300); MaterialGenerator.generate(ALLOY.MARAGING350); + MaterialGenerator.generate(ALLOY.AQUATIC_STEEL); MaterialGenerator.generate(ALLOY.NITINOL_60); @@ -811,11 +814,8 @@ public final class ModItems { dustTechnetium99M = new DustDecayable("dustTechnetium99M", ELEMENT.getInstance().TECHNETIUM.getRgbAsHex(), 8570, new String[] {""+StringUtils.superscript("99ᵐTc"), "Result: Technicium 99 ("+StringUtils.superscript("99Tc")+")"}, dustTechnetium99, 4); dustMolybdenum99 = new DustDecayable("dustMolybdenum99", ELEMENT.getInstance().MOLYBDENUM.getRgbAsHex(), 16450, new String[] {""+StringUtils.superscript("99Mo"), "Result: Technicium 99ᵐ ("+StringUtils.superscript("99ᵐTc")+")"}, dustTechnetium99M, 4); - new BaseItemParticle(ELEMENT.getInstance().HYDROGEN, "Ion"); - new BaseItemParticle(ELEMENT.getInstance().HELIUM, "Ion"); - new BaseItemParticle(ELEMENT.getInstance().LITHIUM, "Ion"); - new BaseItemParticle(ELEMENT.getInstance().BERYLLIUM, "Ion"); - + new IonParticles(); + new StandardBaseParticles(); diff --git a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java index ec0b490f63..4dbb5851f2 100644 --- a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java +++ b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java @@ -7,15 +7,6 @@ import java.util.Map; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.TextureSet; import gregtech.api.util.GT_OreDictUnificator; @@ -32,15 +23,23 @@ import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.sys.KeyboardUtils; import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects; import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; public class BaseItemComponent extends Item{ private final static Class<TextureSet> mTextureSetPreload; - + static { mTextureSetPreload = TextureSet.class; } - + public final Material componentMaterial; public final String materialName; public final String unlocalName; @@ -62,9 +61,9 @@ public class BaseItemComponent extends Item{ //this.setTextureName(this.getCorrectTextures()); this.componentColour = material.getRgbAsHex(); GameRegistry.registerItem(this, this.unlocalName); - + //if (componentType != ComponentTypes.DUST) - + GT_OreDictUnificator.registerOre(componentType.getOreDictName()+material.getUnlocalizedName(), ItemUtils.getSimpleStack(this)); if (LoadedMods.Thaumcraft) { ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.METALLUM, 1); @@ -91,7 +90,7 @@ public class BaseItemComponent extends Item{ GT_OreDictUnificator.registerOre(ComponentTypes.CELL.getOreDictName()+unlocalName, ItemUtils.getSimpleStack(this)); registerComponent(); } - + public boolean registerComponent() { if (this.componentMaterial == null) { return false; @@ -197,6 +196,7 @@ public class BaseItemComponent extends Item{ super.addInformation(stack, aPlayer, list, bool); } + @SuppressWarnings("unchecked") @Override public void onUpdate(final ItemStack iStack, final World world, final Entity entityHolding, final int p_77663_4_, final boolean p_77663_5_) { if (this.componentMaterial != null){ @@ -206,6 +206,19 @@ public class BaseItemComponent extends Item{ } } } + + if (extraData != null) { + if (componentMaterial != null && componentMaterial.getRGBA()[3] > 1) { + if (((Map<Integer, Short[]>) extraData).get(9999) == null) { + ((Map<Integer, Short[]>) extraData).put(9999, new Short[] {0}); + } + Short aCurrentFrame = ((Map<Integer, Short[]>) extraData).get(9999)[0]; + short fC = (short) (aCurrentFrame >= Short.MAX_VALUE ? 0 : aCurrentFrame+1); + ((Map<Integer, Short[]>) extraData).put((int) 9999, new Short[] {(short) (fC), 0}); + ((Map<Integer, Short[]>) extraData).put((int) 9998, new Short[] {aCurrentFrame, 0}); + + } + } } @@ -221,15 +234,209 @@ public class BaseItemComponent extends Item{ return (CORE.ConfigSwitches.useGregtechTextures ? true : false); } + @SuppressWarnings("unchecked") @Override public int getColorFromItemStack(final ItemStack stack, final int renderPass) { + + if (renderPass == 0 && !CORE.ConfigSwitches.useGregtechTextures){ return Utils.rgbtoHexValue(255, 255, 255); } if (renderPass == 1 && CORE.ConfigSwitches.useGregtechTextures){ return Utils.rgbtoHexValue(255, 255, 255); } + + + + try { + if (this.componentMaterial == null) { + if (extraData != null) { + if (short.class.isInstance(extraData)){ + short[] abc = (short[]) extraData; + return Utils.rgbtoHexValue(abc[0], abc[1], abc[2]); + } + } + return this.componentColour; + } + + if (this.componentMaterial.getRGBA()[3] <= 1) { + return this.componentColour; + } + else { + + //Mild Glow Effect + if (this.componentMaterial.getRGBA()[3] == 2) { + if (extraData == null) { + extraData = new HashMap<Integer, Short[]>(); + ((Map<Integer, Short[]>) extraData).put((int) Short.MAX_VALUE, new Short[] {0}); + ((Map<Integer, Short[]>) extraData).put((int) Short.MAX_VALUE-1, new Short[] {0}); + short[] er = this.componentMaterial.getRGBA(); + short value = 1; + Short[] ht = new Short[] {er[0], er[1], er[2]}; + for (int y = 0; y < 40; y++) { + if (y < 20) { + value = 1; + } + else { + value = -1; + } + short r = (short) (ht[0] + value); + short g = (short) (ht[1] + value); + short b = (short) (ht[2] + value); + Short[] qq = new Short[] {(short) Math.min(255, r), (short) Math.min(255, g), (short) Math.min(255, b)}; + ht = qq; + ((Map<Integer, Short[]>) extraData).put(y, qq); + } + } + if (extraData != null) { + + Short aCurrentFrame = ((Map<Integer, Short[]>) extraData).get((int) Short.MAX_VALUE)[0]; + Short aSize = 40; + short nextFrame = (short) ((aCurrentFrame < aSize) ? (aCurrentFrame+1) : 0); + Short[] aCurrentFrameRGB = ((Map<Integer, Short[]>) extraData).get(aCurrentFrame < aSize ? (int) aCurrentFrame : 0); + ((Map<Integer, Short[]>) extraData).put((int) Short.MAX_VALUE, new Short[] {nextFrame}); + return Utils.rgbtoHexValue(aCurrentFrameRGB[0], aCurrentFrameRGB[1], aCurrentFrameRGB[2]); + + + /*Short aCurrentFrame = ((Map<Integer, Short[]>) extraData).get((int) Short.MAX_VALUE)[0]; + Short[] aCurrentFrameRGB = ((Map<Integer, Short[]>) extraData).get((int) aCurrentFrame); + short nextFrame = aCurrentFrame < 40 ? aCurrentFrame++ : 0; + ((Map<Integer, Short[]>) extraData).put((int) Short.MAX_VALUE, new Short[] {nextFrame}); + return Utils.rgbtoHexValue(aCurrentFrameRGB[0], aCurrentFrameRGB[1], aCurrentFrameRGB[2]);*/ + } + } + + //Rainbow Hue Cycle + else if (this.componentMaterial.getRGBA()[3] == 3) { + if (extraData == null) { + extraData = new HashMap<Integer, Short[]>(); + ((Map<Integer, Short[]>) extraData).put((int) Short.MAX_VALUE, new Short[] {0}); + ((Map<Integer, Short[]>) extraData).put((int) Short.MAX_VALUE-1, new Short[] {0}); + int aSlot = 0; + + //Let's say you're starting with green: + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 0}); + //Slowly start adding in some red to get to yellow: + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 51, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 51, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 51, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {102, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {102, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {102, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {153, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {153, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {153, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {204, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {204, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {204, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 255, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 255, 0}); + //Then, take out the green to get to red: + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 204, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 204, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 204, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 153, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 153, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 153, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 102, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 102, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 102, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 51, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 51, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 51, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 0}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 0}); + //Now, add blue to get to purple: + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 51}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 51}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 51}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 102}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 102}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 102}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 153}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 153}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 153}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 204}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 204}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 204}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {255, 0, 255}); + //Then, remove red to get to blue: + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {204, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {204, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {204, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {153, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {153, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {153, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {102, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {102, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] {102, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 51, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 51, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 51, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 0, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 0, 255}); + //Add the green back in to get to cyan: + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 51, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 51, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 51, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 102, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 102, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 102, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 153, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 153, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 153, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 204, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 204, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 204, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 255}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 255}); + //And finally remove the blue to get back to green: + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 204}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 204}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 204}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 153}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 153}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 153}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 102}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 102}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 102}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 51}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 51}); + ((Map<Integer, Short[]>) extraData).put(aSlot++, new Short[] { 0, 255, 51}); + ((Map<Integer, Short[]>) extraData).put((int) Byte.MAX_VALUE, new Short[] {(short) (((Map<Integer, Short[]>) extraData).size()-1)}); + + + } + if (extraData != null) { + Short aCurrentFrame = ((Map<Integer, Short[]>) extraData).get((int) Short.MAX_VALUE)[0]; + Short aSize = (short) (((Map<Integer, Short[]>) extraData).size() - 3); + short nextFrame = (short) ((aCurrentFrame < aSize) ? (aCurrentFrame+1) : 0); + Short[] aCurrentFrameRGB = ((Map<Integer, Short[]>) extraData).get(aCurrentFrame < aSize ? (int) aCurrentFrame : 0); + ((Map<Integer, Short[]>) extraData).put((int) Short.MAX_VALUE, new Short[] {nextFrame}); + return Utils.rgbtoHexValue(aCurrentFrameRGB[0], aCurrentFrameRGB[1], aCurrentFrameRGB[2]); + } + } + } + + + } + catch (Throwable t) { + + } return this.componentColour; + + + + + } @Override @@ -307,7 +514,7 @@ public class BaseItemComponent extends Item{ public OrePrefixes getGtOrePrefix() { return this.a_GT_EQUAL; } - + } } diff --git a/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java b/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java index 363b9ad00d..89cd1e55ae 100644 --- a/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java +++ b/src/Java/gtPlusPlus/core/item/base/misc/BaseItemParticle.java @@ -1,26 +1,54 @@ package gtPlusPlus.core.item.base.misc; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.item.base.CoreItem; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.material.Material; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -public class BaseItemParticle extends CoreItem { - - private final Material mParticleMaterial; +public abstract class BaseItemParticle extends CoreItem { + + protected static final Map<Integer, Integer> aColourMap = new LinkedHashMap<Integer, Integer> (); + private final int aMaxCount; - public BaseItemParticle(Material aMat, String aType) { - super("particle"+aMat.getLocalizedName()+aType, aMat.getLocalizedName()+" "+aType, AddToCreativeTab.tabOther, 64, 0, new String[] {}, EnumRarity.rare, EnumChatFormatting.DARK_AQUA, false, null); + public BaseItemParticle(String aType, int aCount, EnumRarity aRarity) { + super("particle"+aType, aType, AddToCreativeTab.tabOther, 64, 0, new String[] {}, aRarity, EnumChatFormatting.DARK_AQUA, false, null); this.setTextureName(CORE.MODID + ":" + "science/Atom"); - mParticleMaterial = aMat; + aMaxCount = aCount; + this.setHasSubtypes(true); + } @Override public int getColorFromItemStack(final ItemStack stack, final int HEX_OxFFFFFF) { - return this.mParticleMaterial.getRgbAsHex(); + return aColourMap.get(stack.getItemDamage()); + } + + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void getSubItems(Item item, CreativeTabs tab, List list) { + for (int i = 0; i < aMaxCount; i ++) { + list.add(new ItemStack(item, 1, i)); + } } + + @Override + public final String getItemStackDisplayName(final ItemStack tItem) { + String aReturnValue = super.getItemStackDisplayName(tItem); + String[] a2 = getAffixes(); + aReturnValue = (a2[0] + aReturnValue + a2[1]); + return aReturnValue; + } + + public abstract String[] getAffixes(); + } diff --git a/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java b/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java new file mode 100644 index 0000000000..ff5f67d2da --- /dev/null +++ b/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java @@ -0,0 +1,49 @@ +package gtPlusPlus.core.item.chemistry; + +import gregtech.api.enums.Materials; +import gtPlusPlus.core.item.base.misc.BaseItemParticle; +import gtPlusPlus.core.util.Utils; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; + +public class IonParticles extends BaseItemParticle { + + public IonParticles() { + super("Ion", aElements.length, EnumRarity.rare); + } + + private static final String[] aElements = new String[]{"Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminum", "Silicon", "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium", "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttrium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium", "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Cesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium", "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum", "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium", "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium", "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Nihonium", "Flerovium", "Moscovium", "Livermorium", "Tennessine", "Oganesson"}; + + static { + //Generate Ions + int key = 0; + for (String s : aElements) { + Materials m = Materials.get(s); + int aColour = 0; + if (m == null) { + aColour = Utils.rgbtoHexValue(128, 128, 128); + } + else { + aColour = Utils.rgbtoHexValue(m.mRGBa[0], m.mRGBa[1], m.mRGBa[2]); + } + aColourMap.put(key++, aColour); + } + + } + + @Override + public String[] getAffixes() { + return new String[] {"", ""}; + } + + @Override + public String getUnlocalizedName() { + return ""; + } + + @Override + public String getUnlocalizedName(final ItemStack itemStack) { + return "item.particle.ion" + "." + aElements[itemStack.getItemDamage()]; + } + +} diff --git a/src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java b/src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java new file mode 100644 index 0000000000..dd07d41b3d --- /dev/null +++ b/src/Java/gtPlusPlus/core/item/chemistry/StandardBaseParticles.java @@ -0,0 +1,77 @@ +package gtPlusPlus.core.item.chemistry; + +import gregtech.api.enums.Materials; +import gtPlusPlus.core.item.base.misc.BaseItemParticle; +import gtPlusPlus.core.material.Particle; +import gtPlusPlus.core.material.Particle.ElementaryGroup; +import gtPlusPlus.core.util.Utils; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemStack; + +public class StandardBaseParticles extends BaseItemParticle { + + public StandardBaseParticles() { + super("Base", aTypes.length, EnumRarity.rare); + } + + private static final String[] aTypes = new String[] { "Graviton", "Up", "Down", "Charm", "Strange", "Top", + "Bottom", "Electron", "Electron Neutrino", "Muon", "Muon Neutrino", "Tau", "Tau Neutrino", "Gluon", + "Photon", "Z Boson", "W Boson", "Higgs Boson", "Proton", "Neutron", "Lambda", "Omega", "Pion", + "ETA Meson", }; + + static { + //Generate Ions + int key = 0; + for (String s : aTypes) { + Particle p; + for (Particle o : Particle.aMap) { + int aColour = 0; + if (o.mParticleName.toLowerCase().equals(s.toLowerCase())) { + if (o.mParticleType == ElementaryGroup.BARYON) { + aColour = Utils.rgbtoHexValue(174, 226, 156); + aColourMap.put(key++, aColour); + } + else if (o.mParticleType == ElementaryGroup.BOSON) { + if (o == Particle.HIGGS_BOSON) { + aColour = Utils.rgbtoHexValue(226, 196, 104); + aColourMap.put(key++, aColour); + } + else { + aColour = Utils.rgbtoHexValue(226, 52, 66); + aColourMap.put(key++, aColour); + } + } + else if (o.mParticleType == ElementaryGroup.LEPTON) { + aColour = Utils.rgbtoHexValue(126, 226, 95); + aColourMap.put(key++, aColour); + } + else if (o.mParticleType == ElementaryGroup.MESON) { + aColour = Utils.rgbtoHexValue(90, 154, 226); + aColourMap.put(key++, aColour); + } + else { + aColour = Utils.rgbtoHexValue(188, 61, 226); + aColourMap.put(key++, aColour); + } + } + } + } + + } + + @Override + public String[] getAffixes() { + return new String[] {"", ""}; + } + + @Override + public String getUnlocalizedName() { + return ""; + } + + @Override + public String getUnlocalizedName(final ItemStack itemStack) { + return "item.particle.base" + "." + aTypes[itemStack.getItemDamage()]; + } + +} diff --git a/src/Java/gtPlusPlus/core/material/ALLOY.java b/src/Java/gtPlusPlus/core/material/ALLOY.java index 6a659fc165..a27cace300 100644 --- a/src/Java/gtPlusPlus/core/material/ALLOY.java +++ b/src/Java/gtPlusPlus/core/material/ALLOY.java @@ -280,6 +280,26 @@ public final class ALLOY { new MaterialStack(ELEMENT.getInstance().COBALT, 8), }); + public static final Material AQUATIC_STEEL = new Material( + "Watertight Steel", //Material Name + MaterialState.SOLID, //State + new short[] {120, 120, 180}, //Material Colour + 2673, //Melting Point in C + 4835, + -1, + -1, + true, //Uses Blast furnace? + //Material Stacks with Percentage of required elements. + new MaterialStack[]{ + new MaterialStack(ALLOY.STEEL, 60), + new MaterialStack(ELEMENT.getInstance().CARBON, 10), + new MaterialStack(ELEMENT.getInstance().MANGANESE, 5), + new MaterialStack(ELEMENT.getInstance().SILICON, 10), + new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 5), + new MaterialStack(ELEMENT.getInstance().SULFUR, 5), + new MaterialStack(ELEMENT.getInstance().ALUMINIUM, 5) + }); + public static final Material STELLITE = new Material( "Stellite", //Material Name MaterialState.SOLID, //State @@ -459,7 +479,7 @@ public final class ALLOY { "Tungsten Titanium Carbide", //Material Name MaterialState.SOLID, //State null, - -1, //Melting Point in C + 4422, //Melting Point in C -1, -1, -1, diff --git a/src/Java/gtPlusPlus/core/material/ELEMENT.java b/src/Java/gtPlusPlus/core/material/ELEMENT.java index d69ad9b065..99bc37444e 100644 --- a/src/Java/gtPlusPlus/core/material/ELEMENT.java +++ b/src/Java/gtPlusPlus/core/material/ELEMENT.java @@ -47,7 +47,7 @@ public final class ELEMENT { public final Material ARSENIC = MaterialUtils.generateMaterialFromGtENUM(Materials.Arsenic); public final Material SELENIUM = new Material("Selenium", MaterialState.SOLID, new short[]{190, 190, 190}, 217, 685, 34, 45, false, "Se", 0);//Not a GT Inherited Material public final Material BROMINE = new Material("Bromine", MaterialState.PURE_LIQUID, new short[]{200, 25, 25}, -7, 58, 35, 45, false, "Br", 0);//Not a GT Inherited Material - public final Material KRYPTON = new Material("Krypton", MaterialState.GAS, new short[]{255, 255, 255}, -157, -153, 36, 48, false, "Kr", 0);//Not a GT Inherited Material + public final Material KRYPTON = new Material("Krypton", MaterialState.PURE_LIQUID, new short[]{255, 255, 255}, -157, -153, 36, 48, false, "Kr", 0);//Not a GT Inherited Material public final Material RUBIDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Rubidium); public final Material STRONTIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Strontium); public final Material YTTRIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Yttrium); @@ -206,9 +206,9 @@ public final class ELEMENT { public static class STANDALONE { - public static final Material CELESTIAL_TUNGSTEN = new Material("Celestial Tungsten", MaterialState.SOLID, TextureSets.REFINED.get(), ELEMENT.INSTANCE.TUNGSTEN.getRGB(), INSTANCE.TUNGSTEN.getMeltingPointC()+6500, INSTANCE.TUNGSTEN.getBoilingPointC()+7500, 160, 101, true, "✦◆✦", 0);//Not a GT Inherited Material - public static final Material ASTRAL_TITANIUM = new Material("Astral Titanium", MaterialState.SOLID, TextureSets.REFINED.get(), ELEMENT.INSTANCE.TITANIUM.getRGB(), INSTANCE.TITANIUM.getMeltingPointC()+7500, INSTANCE.TITANIUM.getBoilingPointC()+7500, 145, 133, true, "✧◇✧", 0);//Not a GT Inherited Material - public static final Material CHRONOMATIC_GLASS = new Material("Chromatic Glass", MaterialState.SOLID, new short[]{255, 255, 255}, 9200, 17550, 40, 51, false, "🕛🕒🕕🕘🕛 ", 0);//Not a GT Inherited Material + public static final Material CELESTIAL_TUNGSTEN = new Material("Celestial Tungsten", MaterialState.SOLID, TextureSets.REFINED.get(), new short[] {50, 50, 50, 2}, INSTANCE.TUNGSTEN.getMeltingPointC()+6500, INSTANCE.TUNGSTEN.getBoilingPointC()+7500, 160, 101, true, "✦◆✦", 0);//Not a GT Inherited Material + public static final Material ASTRAL_TITANIUM = new Material("Astral Titanium", MaterialState.SOLID, TextureSets.REFINED.get(), new short[] {220, 160, 240, 2}, INSTANCE.TITANIUM.getMeltingPointC()+7500, INSTANCE.TITANIUM.getBoilingPointC()+7500, 145, 133, true, "✧◇✧", 0);//Not a GT Inherited Material + public static final Material CHRONOMATIC_GLASS = new Material("Chromatic Glass", MaterialState.SOLID, new short[]{255, 255, 255, 3}, 9200, 17550, 40, 51, false, "⌘☯𓍰 𓍱 𓍲 𓍳 𓍴 𓍵 𓍶 𓍷 𓍸 ☯⌘ ", 0);//Not a GT Inherited Material public static final Material ADVANCED_NITINOL = new Material("Advanced Nitinol", MaterialState.SOLID, TextureSets.ENRICHED.get(), ALLOY.NITINOL_60.getRGB(), 8400, 14377, 40, 51, true, "⚷⚙⚷ Ni4Ti6", 0);//Not a GT Inherited Material public static final Material HYPOGEN = new Material("Hypogen", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{220, 120, 75}, 12255, 19377, 240, 251, true, "Hy⚶", 0);//Not a GT Inherited Material diff --git a/src/Java/gtPlusPlus/core/material/ORES.java b/src/Java/gtPlusPlus/core/material/ORES.java index 78a0d250a9..a8b86a142c 100644 --- a/src/Java/gtPlusPlus/core/material/ORES.java +++ b/src/Java/gtPlusPlus/core/material/ORES.java @@ -797,7 +797,7 @@ public final class ORES { public static final Material DEEP_EARTH_REACTOR_FUEL_DEPOSIT = new Material( - "Radioactive Minerial Mix", //Material Name + "Radioactive Mineral Mix", //Material Name MaterialState.ORE, //State TextureSets.NUCLEAR.get(), //Texture Set null, //Material Colour diff --git a/src/Java/gtPlusPlus/core/material/Particle.java b/src/Java/gtPlusPlus/core/material/Particle.java index 5b3e37b4a9..6cc0f878d6 100644 --- a/src/Java/gtPlusPlus/core/material/Particle.java +++ b/src/Java/gtPlusPlus/core/material/Particle.java @@ -1,5 +1,7 @@ package gtPlusPlus.core.material; +import gtPlusPlus.api.objects.data.AutoMap; + public class Particle { public static final Particle GRAVITON; @@ -32,6 +34,8 @@ public class Particle { public static final Particle PION; public static final Particle ETA_MESON; + public static final AutoMap<Particle> aMap = new AutoMap<Particle>(); + static { /* @@ -99,7 +103,8 @@ public class Particle { public Particle(ElementaryGroup aParticleType, String aParticleName, Particle[] aComposition) { mParticleType = aParticleType; mParticleName = aParticleName; - mComposition = aComposition == null ? new Particle[] {this} : aComposition; + mComposition = aComposition == null ? new Particle[] {this} : aComposition; + aMap.put(this); } } diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java index 4ce4bb3da6..5cca67402b 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java @@ -1193,7 +1193,7 @@ public class RECIPES_Machines { } if (CORE.ConfigSwitches.enableMultiblock_IndustrialFishingPort){ - ItemStack plate = ALLOY.INCONEL_792.getPlate(1); + ItemStack plate = ALLOY.AQUATIC_STEEL.getPlate(1); RecipeUtils.recipeBuilder( plate, CI.craftingToolHammer_Hard, plate, "plateEglinSteel", "frameGtEglinSteel", "plateEglinSteel", @@ -1478,9 +1478,9 @@ public class RECIPES_Machines { new ItemStack[] { aDrillController, ItemUtils.getItemStackOfAmountFromOreDict("frameGtTriniumNaquadahCarbonite", 3), - ItemUtils.getItemStackOfAmountFromOreDict(CI.getTieredCircuitOreDictName(8), 2 * (CORE.GTNH ? 2 : 1)), - ItemUtils.getSimpleStack(CI.conveyorModule_ZPM, 2 * (CORE.GTNH ? 2 : 1)), - ItemUtils.getSimpleStack(CI.electricPump_ZPM, 4 * (CORE.GTNH ? 2 : 1)), + ItemUtils.getItemStackOfAmountFromOreDict(CI.getTieredCircuitOreDictName(9), 2 * (CORE.GTNH ? 4 : 1)), + ItemUtils.getSimpleStack((CORE.GTNH ? CI.conveyorModule_UV : CI.conveyorModule_ZPM), 2 * (CORE.GTNH ? 2 : 1)), + ItemUtils.getSimpleStack((CORE.GTNH ? CI.electricPump_UV : CI.electricPump_ZPM), 4 * (CORE.GTNH ? 2 : 1)), }, ALLOY.LAFIUM.getFluid(144 * 8 * (CORE.GTNH ? 2 : 1)), GregtechItemList.BedrockMiner_MKI.get(1), @@ -1494,7 +1494,7 @@ public class RECIPES_Machines { ItemUtils.getItemStackOfAmountFromOreDict("plateDoubleTriniumTitaniumAlloy", 1 * (CORE.GTNH ? 2 : 1)), ItemUtils.getItemStackOfAmountFromOreDict("gearGtPikyonium64B", 2 * (CORE.GTNH ? 2 : 1)), ALLOY.TRINIUM_REINFORCED_STEEL.getPlateDouble(4 * (CORE.GTNH ? 2 : 1)), - ItemUtils.getSimpleStack(CI.machineHull_LuV, 1 * (CORE.GTNH ? 2 : 1)), + ItemUtils.getSimpleStack((CORE.GTNH ? CI.machineHull_UV : CI.machineHull_LuV), 1 * (CORE.GTNH ? 2 : 1)), }, ALLOY.MARAGING350.getFluid(144 * 16 * (CORE.GTNH ? 2 : 1)), GregtechItemList.Casing_BedrockMiner.get(1), diff --git a/src/Java/gtPlusPlus/xmod/galacticraft/HANDLER_GalactiCraft.java b/src/Java/gtPlusPlus/xmod/galacticraft/HANDLER_GalactiCraft.java index 9e8ad6f57e..f58bd06cab 100644 --- a/src/Java/gtPlusPlus/xmod/galacticraft/HANDLER_GalactiCraft.java +++ b/src/Java/gtPlusPlus/xmod/galacticraft/HANDLER_GalactiCraft.java @@ -13,20 +13,20 @@ public class HANDLER_GalactiCraft { public static void preInit(){ if (LoadedMods.GalacticraftCore){ - mSystemsCache.put("HD10180", new SystemHD10180()); - for (BaseSolarSystem solar : mSystemsCache.values()) { + //mSystemsCache.put("HD10180", new SystemHD10180()); + /*for (BaseSolarSystem solar : mSystemsCache.values()) { Logger.SPACE("Running 'pre-init' for "+solar.mSystemName); solar.preInit(); - } + }*/ } } public static void init(){ if (LoadedMods.GalacticraftCore){ - for (BaseSolarSystem solar : mSystemsCache.values()) { + /*for (BaseSolarSystem solar : mSystemsCache.values()) { Logger.SPACE("Running 'init' for "+solar.mSystemName); solar.init(); - } + }*/ } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java index 26ac0dd4b2..1e5f138d7b 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java @@ -349,8 +349,8 @@ GT_MetaTileEntity_MultiBlockBase { public static Method aLogger = null; public void log(String s) { - boolean isDebugLogging = CORE.DEBUG; - boolean reset = false; + boolean isDebugLogging = CORE.DEBUG || true; + boolean reset = true; if (aLogger == null || reset) { if (isDebugLogging) { try { @@ -614,13 +614,14 @@ GT_MetaTileEntity_MultiBlockBase { } if (aBaseMetaTileEntity.isServerSide()) { - if (mUpdate == 0 || this.mStartUpCheck == 0) { + if (this.mUpdate == 1 || this.mStartUpCheck == 1) { this.mChargeHatches.clear(); this.mDischargeHatches.clear(); this.mControlCoreBus.clear(); this.mMultiDynamoHatches.clear(); } } + super.onPostTick(aBaseMetaTileEntity, aTick); } @@ -752,7 +753,7 @@ GT_MetaTileEntity_MultiBlockBase { final int aBaseCasingIndex) { if (aList.isEmpty()) { if (aTileEntity instanceof GT_MetaTileEntity_Hatch) { - Logger.INFO("Adding " + aTileEntity.getInventoryName() + " at " + new BlockPos(aTileEntity.getBaseMetaTileEntity()).getLocationString()); + log("Adding " + aTileEntity.getInventoryName() + " at " + new BlockPos(aTileEntity.getBaseMetaTileEntity()).getLocationString()); updateTexture(aTileEntity, aBaseCasingIndex); return aList.add((E) aTileEntity); } @@ -765,13 +766,13 @@ GT_MetaTileEntity_MultiBlockBase { BlockPos aPos = new BlockPos(b); if (b != null && aPos != null) { if (aCurPos.equals(aPos)) { - Logger.INFO("Found Duplicate "+b.getInventoryName()+" at " + aPos.getLocationString()); + log("Found Duplicate "+b.getInventoryName()+" at " + aPos.getLocationString()); return false; } } } if (aTileEntity instanceof GT_MetaTileEntity_Hatch) { - Logger.INFO("Adding " + aCur.getInventoryName() + " at " + aCurPos.getLocationString()); + log("Adding " + aCur.getInventoryName() + " at " + aCurPos.getLocationString()); updateTexture(aTileEntity, aBaseCasingIndex); return aList.add((E) aTileEntity); } @@ -780,7 +781,8 @@ GT_MetaTileEntity_MultiBlockBase { } public int getControlCoreTier() { - if (mControlCoreBus.size() == 0) { + if (mControlCoreBus.isEmpty()) { + log("No Control Core Modules Found."); return 0; } GT_MetaTileEntity_Hatch_ControlCore i = getControlCoreBus(); @@ -790,28 +792,33 @@ GT_MetaTileEntity_MultiBlockBase { return x.getItemDamage(); } } + log("Control Core Module was null."); return 0; } public GT_MetaTileEntity_Hatch_ControlCore getControlCoreBus() { GT_MetaTileEntity_Hatch_ControlCore x = this.mControlCoreBus.get(0); if (x != null) { + log("getControlCore(ok)"); return x; } + log("getControlCore(bad)"); return null; } //mControlCoreBus public boolean addControlCoreToMachineList(final IGregTechTileEntity aTileEntity, final int aBaseCasingIndex) { - log("Found GT_MetaTileEntity_Hatch_ControlCore"); final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity(); if (aMetaTileEntity == null) { + log("Tried to add null module entity."); return false; } if (!mControlCoreBus.isEmpty()) { + log("Tried to add a secondary control core module."); return false; } - + + log("Adding control core module."); return addToMachineListInternal(mControlCoreBus, aMetaTileEntity, aBaseCasingIndex); } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java index 2cf8d793f8..034ad323d9 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java @@ -6,15 +6,18 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import cofh.asmhooks.block.BlockWater; import gregtech.api.enums.TAE; 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_Hatch_Energy; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.util.FishPondFakeRecipe; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; +import gregtech.api.util.Recipe_GT; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.core.block.ModBlocks; @@ -27,6 +30,7 @@ import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.Gregtech import ic2.core.init.BlocksItems; import ic2.core.init.InternalName; import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -101,11 +105,11 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M @Override public boolean checkRecipe(final ItemStack aStack) { if (aStack != null) { - Logger.WARNING("Found " + aStack.getDisplayName()); + log("Found " + aStack.getDisplayName()); if (aStack.getItem() == circuit) { this.isUsingControllerCircuit = true; this.mMode = aStack.getItemDamage(); - Logger.WARNING("Found Circuit!"); + log("Found Circuit!"); } else { this.isUsingControllerCircuit = false; } @@ -113,11 +117,15 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M this.isUsingControllerCircuit = false; } if (!hasGenerateRecipes) { - Logger.WARNING("Generating Recipes."); + log("Generating Recipes."); generateRecipes(); } - if (hasGenerateRecipes && checkForWater()) { - Logger.WARNING("Trying to run recipe."); + if (hasGenerateRecipes) { + if (!checkForWater()) { + return false; + } + + log("Trying to run recipe."); ArrayList<ItemStack> tItems = getStoredInputs(); ArrayList<FluidStack> tFluids = getStoredFluids(); ItemStack[] tItemInputs = tItems.toArray(new ItemStack[tItems.size()]); @@ -143,13 +151,8 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M int mOffsetZ_Lower = 0; int mOffsetZ_Upper = 0; - if (mDirectionX == 0) { - mCurrentDirectionX = 2; - mCurrentDirectionZ = 3; - } else { - mCurrentDirectionX = 3; - mCurrentDirectionZ = 2; - } + mCurrentDirectionX = 4; + mCurrentDirectionZ = 4; mOffsetX_Lower = -4; mOffsetX_Upper = 4; @@ -161,20 +164,20 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * mCurrentDirectionZ; - Logger.WARNING("xDir" + (xDir)); - Logger.WARNING("zDir" + (zDir)); + log("xDir" + (xDir)); + log("zDir" + (zDir)); /* * if (!(aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir))) { return false; } */ int tAmount = 0; - for (int i = mOffsetX_Lower; i <= mOffsetX_Upper; ++i) { + check : for (int i = mOffsetX_Lower; i <= mOffsetX_Upper; ++i) { for (int j = mOffsetZ_Lower; j <= mOffsetZ_Upper; ++j) { for (int h = -1; h < 2; ++h) { if ((h != 0) || ((((xDir + i != 0) || (zDir + j != 0))) && (((i != 0) || (j != 0))))) { IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j); if (!addToMachineList(tTileEntity)) { - Logger.WARNING("X: " + i + " | Z: " + j); + log("X: " + i + " | Z: " + j); Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j); byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j); @@ -183,29 +186,38 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M } else { if ((i != mOffsetX_Lower && j != mOffsetZ_Lower && i != mOffsetX_Upper && j != mOffsetZ_Upper) && (h == 0 || h == 1)) { - if (tBlock == Blocks.air) { - Logger.WARNING("Found Air"); - } else if (tBlock == Blocks.water) { - Logger.WARNING("Found Water"); + + continue; + + /*if (tBlock instanceof BlockAir || tBlock.getUnlocalizedName().equalsIgnoreCase("tile.air") || tBlock.getUnlocalizedName().equalsIgnoreCase("tile.railcraft.residual.heat")) { + log("Found Air"); + continue; + } else if (tBlock instanceof BlockWater || tBlock == Blocks.water || tBlock == Blocks.flowing_water) { + log("Found Water"); + continue; } + else { + break check; + }*/ } else { if (tBlock.getLocalizedName().contains("gt.blockmachines") || tBlock == Blocks.water || tBlock == Blocks.flowing_water || tBlock == BlocksItems.getFluidBlock(InternalName.fluidDistilledWater)) { + continue; } else { - Logger.WARNING("[x] Did not form - Found: " + tBlock.getLocalizedName() + " | " + log("[x] Did not form - Found: " + tBlock.getLocalizedName() + " | " + tBlock.getDamageValue(aBaseMetaTileEntity.getWorld(), aBaseMetaTileEntity.getXCoord() + i, aBaseMetaTileEntity.getYCoord(), aBaseMetaTileEntity.getZCoord() + j) + " | Special Meta: " + (tTileEntity == null ? "0" : tTileEntity.getMetaTileID())); - Logger.WARNING("[x] Did not form - Found: " + log("[x] Did not form - Found: " + (aBaseMetaTileEntity.getXCoord() + xDir + i) + " | " + aBaseMetaTileEntity.getYCoord() + " | " + (aBaseMetaTileEntity.getZCoord() + zDir + j)); - return false; + break check; } } @@ -216,9 +228,9 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M } } if ((tAmount >= 64)) { - Logger.WARNING("Made structure."); + log("Made structure."); } else { - Logger.WARNING("Did not make structure."); + log("Did not make structure."); } return (tAmount >= 64); } @@ -256,11 +268,12 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M } private boolean addToMachineList(final IGregTechTileEntity tTileEntity) { - return ((this.addMaintenanceToMachineList(tTileEntity, this.getCasingTextureIndex())) + /*return ((this.addMaintenanceToMachineList(tTileEntity, this.getCasingTextureIndex())) || (this.addInputToMachineList(tTileEntity, this.getCasingTextureIndex())) || (this.addOutputToMachineList(tTileEntity, this.getCasingTextureIndex())) || (this.addMufflerToMachineList(tTileEntity, this.getCasingTextureIndex())) - || (this.addEnergyInputToMachineList(tTileEntity, this.getCasingTextureIndex()))); + || (this.addEnergyInputToMachineList(tTileEntity, this.getCasingTextureIndex())));*/ + return super.addToMachineList(tTileEntity, this.getCasingTextureIndex()); } public boolean checkForWater() { @@ -275,13 +288,9 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M int mOffsetZ_Lower = 0; int mOffsetZ_Upper = 0; - if (mDirectionX == 0) { - mCurrentDirectionX = 2; - mCurrentDirectionZ = 3; - } else { - mCurrentDirectionX = 3; - mCurrentDirectionZ = 2; - } + mCurrentDirectionX = 4; + mCurrentDirectionZ = 4; + mOffsetX_Lower = -4; mOffsetX_Upper = 4; mOffsetZ_Lower = -4; @@ -297,23 +306,17 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M int tAmount = 0; for (int i = mOffsetX_Lower + 1; i <= mOffsetX_Upper - 1; ++i) { for (int j = mOffsetZ_Lower + 1; j <= mOffsetZ_Upper - 1; ++j) { - for (int h = 0; h < 2; ++h) { + for (int h = 0; h < 2; h++) { Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j); // byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j); - if (tBlock == Blocks.air || tBlock == Blocks.flowing_water || tBlock == Blocks.water) { + if (tBlock == Blocks.air || tBlock == Blocks.flowing_water || tBlock == BlocksItems.getFluidBlock(InternalName.fluidDistilledWater)) { if (this.getStoredFluids() != null) { for (FluidStack stored : this.getStoredFluids()) { if (stored.isFluidEqual(FluidUtils.getFluidStack("water", 1))) { if (stored.amount >= 1000) { // Utils.LOG_WARNING("Going to try swap an air block for water from inut bus."); stored.amount -= 1000; - Block fluidUsed = null; - if (tBlock == Blocks.air || tBlock == Blocks.flowing_water) { - fluidUsed = Blocks.water; - } - if (tBlock == Blocks.water) { - fluidUsed = BlocksItems.getFluidBlock(InternalName.fluidDistilledWater); - } + Block fluidUsed = Blocks.water; aBaseMetaTileEntity.getWorld().setBlock( aBaseMetaTileEntity.getXCoord() + xDir + i, aBaseMetaTileEntity.getYCoord() + h, @@ -324,23 +327,35 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M } } } - if (tBlock == Blocks.water) { - ++tAmount; - // Logger.WARNING("Found Water"); - } else if (tBlock == BlocksItems.getFluidBlock(InternalName.fluidDistilledWater)) { + tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j); + if (tBlock == Blocks.water || tBlock == Blocks.flowing_water) { ++tAmount; - ++tAmount; - // Logger.WARNING("Found Distilled Water"); + // log("Found Water"); } } } } - if ((tAmount >= 80)) { - Logger.WARNING("Filled structure."); - } else { - Logger.WARNING("Did not fill structure."); + + boolean isValidWater = tAmount >= 60; + + if (isValidWater) { + log("Filled structure."); + return true; + } + else { + + long aAvgVoltage = 0; + for (GT_MetaTileEntity_Hatch_Energy g : this.mEnergyHatches) { + if (g != null) { + aAvgVoltage += (g.maxEUInput() * g.maxAmperesIn()); + } + } + this.mEUt = (int) Math.max(30, aAvgVoltage); + this.mMaxProgresstime = (int) Math.max(((aAvgVoltage/8)*20/10), 100); + this.mProgresstime = 1; + log("Did not fill structure. Consuming "+aAvgVoltage+"eu/t to try fill."); + return false; } - return (tAmount >= 80); } private static AutoMap<AutoMap<WeightedRandomFishable>> categories = new AutoMap<AutoMap<WeightedRandomFishable>>(); @@ -474,11 +489,34 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M public boolean checkRecipeGeneric(ItemStack[] aItemInputs, FluidStack[] aFluidInputs, int aMaxParallelRecipes, int aEUPercent, int aSpeedBonusPercent, int aOutputChanceRoll) { - // Based on the Processing Array. A bit overkill, but very flexible. + + + //Control Core to control the Multiblocks behaviour. + int aControlCoreTier = getControlCoreTier(); + + //If no core, return false; + if (aControlCoreTier == 0) { + log("Invalid/No Control Core"); + return false; + } + + + // Reset outputs and progress stats + this.mEUt = 0; + this.mMaxProgresstime = 0; + this.mOutputItems = new ItemStack[]{}; + this.mOutputFluids = new FluidStack[]{}; + long tVoltage = getMaxInputVoltage(); byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage)); + log("Running checkRecipeGeneric(0)"); - int parallelRecipes = 1; + //Check to see if Voltage Tier > Control Core Tier + if (tTier > aControlCoreTier) { + return false; + } + + // Based on the Processing Array. A bit overkill, but very flexible. getCircuit(aItemInputs); /* @@ -488,51 +526,67 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M */ ItemStack[] mFishOutput = generateLoot(this.mMode); - Logger.WARNING("Mode: " + this.mMode + " | Is loot valid? " + (mFishOutput != null)); + mFishOutput = removeNulls(mFishOutput); + GT_Recipe g = new Recipe_GT(true, new ItemStack[] {}, mFishOutput, null, new int[] {}, aFluidInputs, mOutputFluids, 100, 8, 0); + if (!this.canBufferOutputs(g, aMaxParallelRecipes)) { + log("No Space"); + return false; + } + + log("Mode: " + this.mMode + " | Is loot valid? " + (mFishOutput != null)); int jslot = 0; for (ItemStack x : mFishOutput) { if (x != null) { - Logger.WARNING( + log( "Slot " + jslot + " in mFishOutput contains " + x.stackSize + "x " + x.getDisplayName() + "."); } else { - Logger.WARNING("Slot " + jslot + " in mFishOutput was null."); + log("Slot " + jslot + " in mFishOutput was null."); } jslot++; } - + // EU discount - // float tRecipeEUt = (32 * aEUPercent) / 100.0f; + float tRecipeEUt = (8 * aEUPercent) / 100.0f; float tTotalEUt = 0.0f; - // Reset outputs and progress stats - this.mEUt = 0; - this.mMaxProgresstime = 0; - this.mOutputItems = new ItemStack[] {}; - this.mOutputFluids = new FluidStack[] {}; - - tTotalEUt = 8; - Logger.WARNING("Recipe Step. [1]"); + int parallelRecipes = 0; + + log("parallelRecipes: "+parallelRecipes); + log("aMaxParallelRecipes: "+aMaxParallelRecipes); + log("tTotalEUt: "+tTotalEUt); + log("tVoltage: "+tVoltage); + log("tRecipeEUt: "+tRecipeEUt); + // Count recipes to do in parallel, consuming input items and fluids and considering input voltage limits + for (; parallelRecipes < aMaxParallelRecipes && tTotalEUt < (tVoltage - tRecipeEUt); parallelRecipes++) { + log("Bumped EU from "+tTotalEUt+" to "+(tTotalEUt+tRecipeEUt)+"."); + tTotalEUt += tRecipeEUt; + } if (parallelRecipes == 0) { - Logger.WARNING("Recipe Step. [-1]"); + log("BAD RETURN - 3"); return false; } + // -- Try not to fail after this point - inputs have already been consumed! -- + + // Convert speed bonus to duration multiplier // e.g. 100% speed bonus = 200% speed = 100%/200% = 50% recipe duration. - float tTimeFactor = 100.0f / (100.0f + 0); - - float modeMulti = 1; - modeMulti = (this.mMode == 14 ? 5 : (this.mMode == 15 ? 1 : 20)); - this.mMaxProgresstime = (int) ((60 * modeMulti) * tTimeFactor); + aSpeedBonusPercent = Math.max(-99, aSpeedBonusPercent); + float tTimeFactor = 100.0f / (100.0f + aSpeedBonusPercent); + this.mMaxProgresstime = (int)(20 * tTimeFactor * 4); - this.mEUt = (int) Math.ceil(tTotalEUt); + this.mEUt = (int)Math.ceil(tTotalEUt); this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; - Logger.WARNING("Recipe Step. [2]"); + + //Only Overclock as high as the control circuit. + byte tTierOld = tTier; + tTier = (byte) aControlCoreTier; + // Overclock if (this.mEUt <= 16) { this.mEUt = (this.mEUt * (1 << tTier - 1) * (1 << tTier - 1)); @@ -549,8 +603,9 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M } this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); + - Logger.WARNING("Recipe Step. [3]"); + log("Recipe Step. [3]"); // Collect output item types ItemStack[] tOutputItems = mFishOutput; @@ -559,10 +614,10 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M for (ItemStack x : tOutputItems) { if (x != null) { - Logger.WARNING( + log( "rSlot " + rslot + " in mFishOutput contains " + x.stackSize + "x " + x.getDisplayName() + "."); } else { - Logger.WARNING("rSlot " + rslot + " in mFishOutput was null."); + log("rSlot " + rslot + " in mFishOutput was null."); } rslot++; } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java index 5a985c6151..d6be5def19 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java @@ -131,7 +131,7 @@ public class RecipeGen_BlastSmelter extends RecipeGen_Base { //Generate Recipes for all singular materials that can be made molten. if (hasMoreInputThanACircuit){ if (M.requiresBlastFurnace()) { - if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluid(fluidAmount), 100, (duration/mTotalPartsCounter), (int) aVoltage)){ + if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluid(fluidAmount), 100, (duration/(mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)), (int) aVoltage)){ Logger.WARNING("[BAS] Success."); Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluid(144), 100, duration, 120)){ @@ -153,7 +153,7 @@ public class RecipeGen_BlastSmelter extends RecipeGen_Base { } } else { - if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluid(fluidAmount), 100, duration/mTotalPartsCounter/2, (int) aVoltage)){ + if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluid(fluidAmount), 100, duration/(mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)/2, (int) aVoltage)){ Logger.WARNING("[BAS] Success."); if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ingot.get(0), M.getFluid(144), M.getIngot(1), duration/2, 60)){ Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); |