diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1dc4df0e1..9c7718374 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -68,6 +68,7 @@ public class ModBlocks { public static Block ore_daffergon; public static Block ore_verticium; public static Block ore_rare; + public static Block ore_cobalt; public static Block ore_cinnebar; public static Block ore_coltan; @@ -79,6 +80,7 @@ public class ModBlocks { public static Block ore_nether_tungsten; public static Block ore_nether_sulfur; public static Block ore_nether_fire; + public static Block ore_nether_cobalt; public static Block ore_nether_schrabidium; public static Block ore_meteor_uranium; @@ -1132,6 +1134,7 @@ public class ModBlocks { ore_nether_tungsten = new BlockGeneric(Material.rock).setBlockName("ore_nether_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_tungsten"); ore_nether_sulfur = new BlockOre(Material.rock).setBlockName("ore_nether_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_sulfur"); ore_nether_fire = new BlockOre(Material.rock).setBlockName("ore_nether_fire").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_fire"); + ore_nether_cobalt = new BlockOre(Material.rock).setBlockName("ore_nether_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_cobalt"); ore_nether_schrabidium = new BlockGeneric(Material.rock).setBlockName("ore_nether_schrabidium").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_schrabidium"); ore_meteor_uranium = new BlockOre(Material.rock).setBlockName("ore_meteor_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_meteor_uranium"); @@ -1170,7 +1173,8 @@ public class ModBlocks { ore_unobtainium = new BlockGeneric(Material.rock).setBlockName("ore_unobtainium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_unobtainium"); ore_daffergon = new BlockGeneric(Material.rock).setBlockName("ore_daffergon").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_daffergon"); ore_verticium = new BlockGeneric(Material.rock).setBlockName("ore_verticium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_verticium"); - ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare"); + ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare"); + ore_cobalt = new BlockOre(Material.rock).setBlockName("ore_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cobalt"); ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar"); ore_coltan = new BlockOre(Material.rock).setBlockName("ore_coltan").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_coltan"); @@ -2006,6 +2010,7 @@ public class ModBlocks { GameRegistry.registerBlock(ore_daffergon, ItemOreBlock.class, ore_daffergon.getUnlocalizedName()); GameRegistry.registerBlock(ore_verticium, ItemOreBlock.class, ore_verticium.getUnlocalizedName()); GameRegistry.registerBlock(ore_rare, ItemOreBlock.class, ore_rare.getUnlocalizedName()); + GameRegistry.registerBlock(ore_cobalt, ore_cobalt.getUnlocalizedName()); GameRegistry.registerBlock(ore_cinnebar, ore_cinnebar.getUnlocalizedName()); GameRegistry.registerBlock(ore_coltan, ore_coltan.getUnlocalizedName()); @@ -2027,6 +2032,7 @@ public class ModBlocks { GameRegistry.registerBlock(ore_nether_tungsten, ore_nether_tungsten.getUnlocalizedName()); GameRegistry.registerBlock(ore_nether_sulfur, ore_nether_sulfur.getUnlocalizedName()); GameRegistry.registerBlock(ore_nether_fire, ore_nether_fire.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_cobalt, ore_nether_cobalt.getUnlocalizedName()); GameRegistry.registerBlock(ore_nether_schrabidium, ItemBlockLore.class, ore_nether_schrabidium.getUnlocalizedName()); //Meteor Ores diff --git a/src/main/java/com/hbm/blocks/bomb/BlockSemtex.java b/src/main/java/com/hbm/blocks/bomb/BlockSemtex.java index e9a604f7c..8bfd1f55c 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockSemtex.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockSemtex.java @@ -1,5 +1,12 @@ package com.hbm.blocks.bomb; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.BombConfig; +import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.logic.EntityNukeExplosionMK4; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNT; +import com.hbm.interfaces.IBomb; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -8,13 +15,15 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; +import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockSemtex extends Block { +public class BlockSemtex extends Block implements IBomb { @SideOnly(Side.CLIENT) private IIcon topIcon; @@ -45,22 +54,42 @@ public class BlockSemtex extends Block { p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, l, 2); } - public static int determineOrientation(World p_150071_0_, int p_150071_1_, int p_150071_2_, int p_150071_3_, EntityLivingBase p_150071_4_) { + public static int determineOrientation(World world, int x, int y, int z, EntityLivingBase player) { - if(MathHelper.abs((float) p_150071_4_.posX - (float) p_150071_1_) < 2.0F && MathHelper.abs((float) p_150071_4_.posZ - (float) p_150071_3_) < 2.0F) { - double d0 = p_150071_4_.posY + 1.82D - (double) p_150071_4_.yOffset; + if(MathHelper.abs((float) player.posX - (float) x) < 2.0F && MathHelper.abs((float) player.posZ - (float) z) < 2.0F) { + double d0 = player.posY + 1.82D - (double) player.yOffset; - if(d0 - (double) p_150071_2_ > 2.0D) { + if(d0 - (double) y > 2.0D) { return 0; } - if((double) p_150071_2_ - d0 > 0.0D) { + if((double) y - d0 > 0.0D) { return 1; } } - int l = MathHelper.floor_double((double) (p_150071_4_.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + int l = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; return l == 0 ? 3 : (l == 1 ? 4 : (l == 2 ? 2 : (l == 3 ? 5 : 1))); } + + @Override + public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { + this.explode(world, x, y, z); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) { + if(world.isBlockIndirectlyGettingPowered(x, y, z)) { + this.explode(world, x, y, z); + } + } + + @Override + public void explode(World world, int x, int y, int z) { + if(!world.isRemote) { + new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 50).overrideResolution(64).explode(); + ExplosionLarge.spawnParticles(world, x, y, z, ExplosionLarge.cloudFunction(15)); + } + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 4fe38e9f4..b9f933c8b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -216,6 +216,9 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_coltan) { return ModItems.fragment_coltan; } + if(this == ModBlocks.ore_cobalt || this == ModBlocks.ore_nether_cobalt) { + return ModItems.fragment_cobalt; + } return Item.getItemFromBlock(this); } @@ -246,6 +249,12 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_depth_zirconium) { return 2 + rand.nextInt(2); } + if(this == ModBlocks.ore_cobalt) { + return 4 + rand.nextInt(6); + } + if(this == ModBlocks.ore_nether_cobalt) { + return 5 + rand.nextInt(8); + } return 1; } diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index efeefcd42..f1f2e3acb 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -24,6 +24,7 @@ public class WorldConfig { public static int oilcoalSpawn = 128; public static int gassshaleSpawn = 5; public static int gasbubbleSpawn = 64; + public static int cobaltSpawn = 2; public static int ironClusterSpawn = 4; public static int titaniumClusterSpawn = 2; @@ -35,6 +36,7 @@ public class WorldConfig { public static int netherPhosphorusSpawn = 24; public static int netherCoalSpawn = 8; public static int netherPlutoniumSpawn = 8; + public static int netherCobaltSpawn = 2; public static int endTikiteSpawn = 8; @@ -91,6 +93,7 @@ public class WorldConfig { gassshaleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.16_gasShaleSpawnRate", "Amount of oil shale veins per chunk", 5); gasbubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.17_gasBubbleSpawnRate", "Spawns a gas bubble every nTH chunk", 64); cinnebarSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.18_cinnebarSpawnRate", "Amount of cinnebar ore veins per chunk", 1); + cobaltSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.18_cobaltSpawnRate", "Amount of cobalt ore veins per chunk", 2); ironClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C00_ironClusterSpawn", "Amount of iron cluster veins per chunk", 4); titaniumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C01_titaniumClusterSpawn", "Amount of titanium cluster veins per chunk", 2); @@ -102,6 +105,7 @@ public class WorldConfig { netherPhosphorusSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N03_phosphorusSpawnrate", "Amount of nether phosphorus per chunk", 24); netherCoalSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N04_coalSpawnrate", "Amount of nether coal per chunk", 8); netherPlutoniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N05_plutoniumSpawnrate", "Amount of nether plutonium per chunk, if enabled", 8); + netherCobaltSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N06_cobaltSpawnrate", "Amount of nether cobalt per chunk", 2); endTikiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.E00_tikiteSpawnrate", "Amount of end trixite per chunk", 8); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 4602f8693..f0ec9be5d 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -130,7 +130,7 @@ public class WeaponRecipes { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bolt_action, 1), new Object[] { "PPI", "SWD", 'P', "plateSteel", 'I', ModItems.mechanism_rifle_1, 'S', Items.stick, 'D', "plankWood", 'W', ModItems.wire_copper })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bolt_action_green, 1), new Object[] { "PPI", "SWD", 'P', "plateIron", 'I', ModItems.mechanism_rifle_1, 'S', Items.stick, 'D', "plankWood", 'W', ModItems.wire_copper })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_bolt_action_saturnite, 1), new Object[] { "PPI", "SWD", 'P', "plateSaturnite", 'I', ModItems.mechanism_rifle_1, 'S', Items.stick, 'D', "plankWood", 'W', ModItems.wire_tungsten })); - GameRegistry.addRecipe(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', ModItems.ingot_starmetal, 'S', ModItems.circuit_targeting_tier6, 'R', ModItems.gun_revolver_schrabidium }); + GameRegistry.addRecipe(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', ModItems.ingot_starmetal, 'C', ModItems.circuit_targeting_tier6, 'R', ModItems.gun_revolver_schrabidium }); GameRegistry.addRecipe(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark }); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', "plateSteel", 'S', ModItems.ingot_starmetal, 'E', ModItems.powder_spark_mix })); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, FluidType.ACID.getID()), GunB92Cell.getFullCell(), ModItems.wire_copper }); diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 7d3f92f55..b7dc18735 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -815,13 +815,6 @@ public class GUIHandler implements IGuiHandler { return null; } - case ModBlocks.guiID_rbmk_console: { - if(entity instanceof TileEntityRBMKConsole) { - // return new ContainerRBMKConsole(player.inventory, (TileEntityRBMKConsole) entity); - } - return null; - } - case ModBlocks.guiID_storage_drum: { if(entity instanceof TileEntityStorageDrum) { return new ContainerStorageDrum(player.inventory, (TileEntityStorageDrum) entity); diff --git a/src/main/java/com/hbm/handler/nei/AnvilRecipeHandler.java b/src/main/java/com/hbm/handler/nei/AnvilRecipeHandler.java new file mode 100644 index 000000000..b8b41cde5 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AnvilRecipeHandler.java @@ -0,0 +1,134 @@ +package com.hbm.handler.nei; + +import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.AnvilRecipes; +import com.hbm.inventory.AnvilRecipes.AnvilConstructionRecipe; +import com.hbm.inventory.AnvilRecipes.AnvilOutput; +import com.hbm.lib.RefStrings; + +import codechicken.lib.gui.GuiDraw; +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; + +public class AnvilRecipeHandler extends TemplateRecipeHandler { + + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList transferRectsGui = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + public LinkedList> guiGui = new LinkedList>(); + + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + + PositionedStack output; + int tier; + + public RecipeSet(ItemStack output, int tier) { + this.output = new PositionedStack(output, 111, 24); + this.tier = tier; + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 48, Arrays.asList(output)); + } + + @Override + public PositionedStack getResult() { + return output; + } + } + + @Override + public String getRecipeName() { + return "Anvil"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + + if(outputId.equals("ntmAnvil")) { + List recipes = AnvilRecipes.getConstruction(); + + for(AnvilConstructionRecipe recipe : recipes) { + this.arecipes.add(new RecipeSet(recipe.output.get(0).stack.copy(), recipe.tierLower)); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + + List recipes = AnvilRecipes.getConstruction(); + + for(AnvilConstructionRecipe recipe : recipes) { + + for(AnvilOutput out : recipe.output) { + if(NEIServerUtils.areStacksSameTypeCrafting(out.stack, result)) { + this.arecipes.add(new RecipeSet(recipe.output.get(0).stack.copy(), recipe.tierLower)); + } + } + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + + if(inputId.equals("ntmAnvil")) { + loadCraftingRecipes("ntmAnvil", new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + } + + @Override + public void loadTransferRects() { + } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + + for(int i = 0; i < 3; i++) + for(int j = 0; j < 3; j++) + fontRenderer.drawString("Tier " + rec.tier + " anvil", 51 + i, 50 + j, 0x000000); + fontRenderer.drawString("Tier " + rec.tier + " anvil", 52, 51, 0xffffff); + } + + @Override + public int recipiesPerPage() { + return 1; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/nei/gui_nei_anvil.png"; + } + + @Override + public void drawBackground(int recipeIndex) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GuiDraw.changeTexture(getGuiTexture()); + drawTexturedModalRect(0, 0, 5, 11, 166, 120); + } +} diff --git a/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java b/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java new file mode 100644 index 000000000..c0e9cb408 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java @@ -0,0 +1,149 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import com.hbm.inventory.AnvilRecipes; +import com.hbm.inventory.AnvilSmithingRecipe; +import com.hbm.inventory.gui.GUIAnvil; +import com.hbm.lib.RefStrings; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; + +public class SmithingRecipeHandler extends TemplateRecipeHandler { + + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList transferRectsGui = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + public LinkedList> guiGui = new LinkedList>(); + + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + + PositionedStack input1; + PositionedStack input2; + PositionedStack output; + int tier; + + public RecipeSet(AnvilSmithingRecipe recipe) { + this.input1 = new PositionedStack(recipe.getLeft(), 39, 24); + this.input2 = new PositionedStack(recipe.getRight(), 75, 24); + this.output = new PositionedStack(recipe.getOutput(input1.item, input2.item), 111, 24); + this.tier = recipe.tier; + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 48, Arrays.asList(input1, input2)); + } + + @Override + public PositionedStack getResult() { + return output; + } + } + + @Override + public String getRecipeName() { + return "Anvil"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + + if(outputId.equals("ntmSmithing")) { + List recipes = AnvilRecipes.getSmithing(); + + for(AnvilSmithingRecipe recipe : recipes) { + this.arecipes.add(new RecipeSet(recipe)); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + + List recipes = AnvilRecipes.getSmithing(); + + for(AnvilSmithingRecipe recipe : recipes) { + if(NEIServerUtils.areStacksSameTypeCrafting(recipe.getSimpleOutput(), result)) { + this.arecipes.add(new RecipeSet(recipe)); + } + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + + if(inputId.equals("ntmSmithing")) { + loadCraftingRecipes("ntmSmithing", new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + + List recipes = AnvilRecipes.getSmithing(); + + outer: + for(AnvilSmithingRecipe recipe : recipes) { + + for(ItemStack left : recipe.getLeft()) { + if(NEIServerUtils.areStacksSameTypeCrafting(left, ingredient)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + + for(ItemStack right : recipe.getRight()) { + if(NEIServerUtils.areStacksSameTypeCrafting(right, ingredient)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + } + } + + @Override + public void loadTransferRects() { + transferRectsGui = new LinkedList(); + guiGui = new LinkedList>(); + + transferRects.add(new RecipeTransferRect(new Rectangle(56, 24, 18, 18), "ntmSmithing")); + transferRects.add(new RecipeTransferRect(new Rectangle(92, 24, 18, 18), "ntmSmithing")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(39, 60, 60, 50), "ntmSmithing")); + guiGui.add(GUIAnvil.class); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + fontRenderer.drawString("Tier " + rec.tier, 52, 43, 0x404040); + } + + @Override + public int recipiesPerPage() { + return 2; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/nei/gui_nei_smithing.png"; + } +} diff --git a/src/main/java/com/hbm/inventory/AnvilRecipes.java b/src/main/java/com/hbm/inventory/AnvilRecipes.java index ec9b6174a..78fb21940 100644 --- a/src/main/java/com/hbm/inventory/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/AnvilRecipes.java @@ -34,13 +34,6 @@ public class AnvilRecipes { */ public static void registerSmithing() { - for(int i = 0; i < 9; i++) - smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_steel_dusted, 1, i + 1), - new ComparableStack(ModItems.ingot_steel_dusted, 1, i), new ComparableStack(ModItems.ingot_steel_dusted, 1, i))); - - smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_chainsteel, 1), - new ComparableStack(ModItems.ingot_steel_dusted, 1, 9), new ComparableStack(ModItems.ingot_steel_dusted, 1, 9))); - Block[] anvils = new Block[]{ModBlocks.anvil_iron, ModBlocks.anvil_lead}; for(Block anvil : anvils) { @@ -53,6 +46,13 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_steel, 1), new ComparableStack(anvil), new OreDictStack("ingotSteel", 10))); } + for(int i = 0; i < 9; i++) + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_steel_dusted, 1, i + 1), + new ComparableStack(ModItems.ingot_steel_dusted, 1, i), new ComparableStack(ModItems.ingot_steel_dusted, 1, i))); + + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_chainsteel, 1), + new ComparableStack(ModItems.ingot_steel_dusted, 1, 9), new ComparableStack(ModItems.ingot_steel_dusted, 1, 9))); + smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_meteorite_forged, 1), new ComparableStack(ModItems.ingot_meteorite), new ComparableStack(ModItems.ingot_meteorite))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.blade_meteorite, 1), new ComparableStack(ModItems.ingot_meteorite_forged), new ComparableStack(ModItems.ingot_meteorite_forged))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.meteorite_sword_reforged, 1), new ComparableStack(ModItems.meteorite_sword_seared), new ComparableStack(ModItems.ingot_meteorite_forged))); @@ -174,8 +174,8 @@ public class AnvilRecipes { public static class AnvilConstructionRecipe { public List input = new ArrayList(); public List output = new ArrayList(); - int tierLower = 0; - int tierUpper = -1; + public int tierLower = 0; + public int tierUpper = -1; OverlayType overlay = OverlayType.NONE; public AnvilConstructionRecipe(AStack input, AnvilOutput output) { diff --git a/src/main/java/com/hbm/inventory/AnvilSmithingHotRecipe.java b/src/main/java/com/hbm/inventory/AnvilSmithingHotRecipe.java index c48455d27..2984ac3d3 100644 --- a/src/main/java/com/hbm/inventory/AnvilSmithingHotRecipe.java +++ b/src/main/java/com/hbm/inventory/AnvilSmithingHotRecipe.java @@ -1,9 +1,12 @@ package com.hbm.inventory; +import java.util.List; + import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.items.special.ItemHot; import net.minecraft.item.ItemStack; +import scala.actors.threadpool.Arrays; public class AnvilSmithingHotRecipe extends AnvilSmithingRecipe { @@ -38,4 +41,22 @@ public class AnvilSmithingHotRecipe extends AnvilSmithingRecipe { return output.copy(); } + + public List getLeft() { + return Arrays.asList(new ItemStack[] {getHot(left)}); + } + + public List getRight() { + return Arrays.asList(new ItemStack[] {getHot(right)}); + } + + private ItemStack getHot(AStack stack) { + ItemStack first = stack.extractForNEI().get(0); + + if(first.getItem() instanceof ItemHot) { + ItemHot.heatUp(first); + } + + return first; + } } diff --git a/src/main/java/com/hbm/inventory/AnvilSmithingRecipe.java b/src/main/java/com/hbm/inventory/AnvilSmithingRecipe.java index ac1a62d49..d9af26467 100644 --- a/src/main/java/com/hbm/inventory/AnvilSmithingRecipe.java +++ b/src/main/java/com/hbm/inventory/AnvilSmithingRecipe.java @@ -1,5 +1,7 @@ package com.hbm.inventory; +import java.util.List; + import com.hbm.inventory.RecipesCommon.AStack; import net.minecraft.item.ItemStack; @@ -44,10 +46,22 @@ public class AnvilSmithingRecipe { return recipe.matchesRecipe(input, false); } - public ItemStack getOutput(ItemStack left, ItemStack right) { + public List getLeft() { + return left.extractForNEI(); + } + + public List getRight() { + return right.extractForNEI(); + } + + public ItemStack getSimpleOutput() { return output.copy(); } + public ItemStack getOutput(ItemStack left, ItemStack right) { + return getSimpleOutput(); + } + public int amountConsumed(int index, boolean mirrored) { if(index == 0) diff --git a/src/main/java/com/hbm/inventory/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/CentrifugeRecipes.java index 9c962dcd5..23caf51e3 100644 --- a/src/main/java/com/hbm/inventory/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/CentrifugeRecipes.java @@ -200,6 +200,24 @@ public class CentrifugeRecipes { new ItemStack(ModItems.ingot_phosphorus), new ItemStack(Blocks.netherrack) }); + recipes.put("oreCobalt", new ItemStack[] { + new ItemStack(ModItems.powder_cobalt, 2), + new ItemStack(ModItems.powder_iron, 1), + new ItemStack(ModItems.powder_copper, 1), + new ItemStack(Blocks.gravel, 1) }); + + List quartz = OreDictionary.getOres("crystalCertusQuartz"); + + if(quartz != null && !quartz.isEmpty()) { + ItemStack qItem = quartz.get(0).copy(); + + recipes.put("oreCertusQuartz", new ItemStack[] { + qItem, + qItem, + qItem, + qItem }); + } + recipes.put(new ComparableStack(Items.blaze_rod), new ItemStack[] {new ItemStack(Items.blaze_powder, 1), new ItemStack(Items.blaze_powder, 1), new ItemStack(ModItems.powder_fire, 1), new ItemStack(ModItems.powder_fire, 1) }); recipes.put(new ComparableStack(ModItems.ingot_schraranium), new ItemStack[] { new ItemStack(ModItems.nugget_schrabidium, 2), new ItemStack(ModItems.nugget_schrabidium, 1), new ItemStack(ModItems.nugget_uranium, 3), new ItemStack(ModItems.nugget_plutonium, 2) }); @@ -216,7 +234,7 @@ public class CentrifugeRecipes { recipes.put(new ComparableStack(ModItems.crystal_titanium), new ItemStack[] { new ItemStack(ModItems.powder_titanium, 2), new ItemStack(ModItems.powder_titanium, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_sulfur), new ItemStack[] { new ItemStack(ModItems.sulfur, 4), new ItemStack(ModItems.sulfur, 4), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.nugget_mercury, 1) }); recipes.put(new ComparableStack(ModItems.crystal_niter), new ItemStack[] { new ItemStack(ModItems.niter, 3), new ItemStack(ModItems.niter, 3), new ItemStack(ModItems.niter, 3), new ItemStack(ModItems.powder_lithium_tiny, 1) }); - recipes.put(new ComparableStack(ModItems.crystal_copper), new ItemStack[] { new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); + recipes.put(new ComparableStack(ModItems.crystal_copper), new ItemStack[] { new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.powder_copper, 2), new ItemStack(ModItems.sulfur, 1), new ItemStack(ModItems.powder_cobalt_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_tungsten), new ItemStack[] { new ItemStack(ModItems.powder_tungsten, 2), new ItemStack(ModItems.powder_tungsten, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_aluminium), new ItemStack[] { new ItemStack(ModItems.powder_aluminium, 2), new ItemStack(ModItems.powder_aluminium, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lithium_tiny, 1) }); recipes.put(new ComparableStack(ModItems.crystal_fluorite), new ItemStack[] { new ItemStack(ModItems.fluorite, 3), new ItemStack(ModItems.fluorite, 3), new ItemStack(ModItems.fluorite, 3), new ItemStack(ModItems.powder_lithium_tiny, 1) }); @@ -229,6 +247,7 @@ public class CentrifugeRecipes { recipes.put(new ComparableStack(ModItems.crystal_trixite), new ItemStack[] { new ItemStack(ModItems.powder_plutonium, 3), new ItemStack(ModItems.powder_cobalt, 3), new ItemStack(ModItems.powder_spark_mix, 1), new ItemStack(ModItems.powder_nitan_mix, 2) }); recipes.put(new ComparableStack(ModItems.crystal_lithium), new ItemStack[] { new ItemStack(ModItems.powder_lithium, 2), new ItemStack(ModItems.powder_lithium, 2), new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.fluorite, 1) }); recipes.put(new ComparableStack(ModItems.crystal_starmetal), new ItemStack[] { new ItemStack(ModItems.powder_dura_steel, 3), new ItemStack(ModItems.powder_cobalt, 3), new ItemStack(ModItems.powder_astatine, 2), new ItemStack(ModItems.nugget_mercury, 5) }); + recipes.put(new ComparableStack(ModItems.crystal_cobalt), new ItemStack[] { new ItemStack(ModItems.powder_cobalt, 2), new ItemStack(ModItems.powder_iron, 3), new ItemStack(ModItems.powder_copper, 3), new ItemStack(ModItems.powder_lithium_tiny, 1) }); } public static ItemStack[] getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/inventory/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/CrystallizerRecipes.java index 2da4c0760..ccc783c71 100644 --- a/src/main/java/com/hbm/inventory/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/CrystallizerRecipes.java @@ -46,6 +46,7 @@ public class CrystallizerRecipes { recipes.put("oreLithium", new ItemStack(ModItems.crystal_lithium)); recipes.put("oreStarmetal", new ItemStack(ModItems.crystal_starmetal)); recipes.put("oreRareEarth", new ItemStack(ModItems.crystal_rare)); + recipes.put("oreCobalt", new ItemStack(ModItems.crystal_cobalt)); recipes.put(new ComparableStack(ModBlocks.ore_nether_fire), new ItemStack(ModItems.crystal_phosphorus)); recipes.put(new ComparableStack(ModBlocks.ore_tikite), new ItemStack(ModItems.crystal_trixite)); @@ -70,6 +71,14 @@ public class CrystallizerRecipes { recipes.put(new ComparableStack(ModItems.powder_meteorite), new ItemStack(ModItems.fragment_meteorite, 1)); recipes.put(new ComparableStack(ModItems.meteorite_sword_treated), new ItemStack(ModItems.meteorite_sword_etched, 1)); + + List quartz = OreDictionary.getOres("crystalCertusQuartz"); + + if(quartz != null && !quartz.isEmpty()) { + ItemStack qItem = quartz.get(0).copy(); + qItem.stackSize = 6; + recipes.put("oreCertusQuartz", qItem); + } } public static ItemStack getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index 6c41ec756..560d577ef 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -43,8 +43,7 @@ public class FluidContainerRegistry { sta.stackSize = 1; for(FluidContainer container : allContainers) { - if(ItemStack.areItemStacksEqual(container.fullContainer, sta) && - ItemStack.areItemStackTagsEqual(container.fullContainer, sta)) + if(ItemStack.areItemStacksEqual(container.fullContainer, sta) && ItemStack.areItemStackTagsEqual(container.fullContainer, sta)) return container.type; } @@ -59,9 +58,7 @@ public class FluidContainerRegistry { sta.stackSize = 1; for(FluidContainer container : allContainers) { - if(ItemStack.areItemStacksEqual(container.emptyContainer, sta) && - ItemStack.areItemStackTagsEqual(container.emptyContainer, sta) && - container.type.name().equals(type.name())) + if(ItemStack.areItemStacksEqual(container.emptyContainer, sta) && ItemStack.areItemStackTagsEqual(container.emptyContainer, sta) && container.type.name().equals(type.name())) return container.fullContainer.copy(); } @@ -76,9 +73,8 @@ public class FluidContainerRegistry { sta.stackSize = 1; for(FluidContainer container : allContainers) { - if(ItemStack.areItemStacksEqual(container.fullContainer, sta) && - ItemStack.areItemStackTagsEqual(container.fullContainer, sta)) - return container.emptyContainer.copy(); + if(ItemStack.areItemStacksEqual(container.fullContainer, sta) && ItemStack.areItemStackTagsEqual(container.fullContainer, sta)) + return container.emptyContainer == null ? null : container.emptyContainer.copy(); } return null; diff --git a/src/main/java/com/hbm/inventory/FluidTank.java b/src/main/java/com/hbm/inventory/FluidTank.java index 338c314c5..8b8c99313 100644 --- a/src/main/java/com/hbm/inventory/FluidTank.java +++ b/src/main/java/com/hbm/inventory/FluidTank.java @@ -117,7 +117,7 @@ public class FluidTank { slots[in].stackSize--; if(slots[in].stackSize <= 0) slots[in] = null; - } else if(slots[out] != null && slots[out].getItem() == FluidContainerRegistry.getEmptyContainer(slots[in]).getItem() && slots[out].stackSize < slots[out].getMaxStackSize()) { + } else if(slots[out] != null && (FluidContainerRegistry.getEmptyContainer(slots[in]) == null || slots[out].getItem() == FluidContainerRegistry.getEmptyContainer(slots[in]).getItem()) && slots[out].stackSize < slots[out].getMaxStackSize()) { fluid += FluidContainerRegistry.getFluidContent(slots[in], type); slots[in].stackSize--; if(slots[in].stackSize <= 0) diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index c3c9303fc..73bf3a8e7 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -210,6 +210,7 @@ public class OreDictManager { OreDictionary.registerOre("oreRareEarth", ModBlocks.ore_rare); OreDictionary.registerOre("oreZirconium", ModBlocks.ore_depth_zirconium); OreDictionary.registerOre("oreColtan", ModBlocks.ore_coltan); + OreDictionary.registerOre("oreCobalt", ModBlocks.ore_cobalt); OreDictionary.registerOre("oreIron", ModBlocks.ore_gneiss_iron); OreDictionary.registerOre("oreGold", ModBlocks.ore_gneiss_gold); @@ -226,6 +227,7 @@ public class OreDictManager { OreDictionary.registerOre("orePlutonium", ModBlocks.ore_nether_plutonium); OreDictionary.registerOre("oreTungsten", ModBlocks.ore_nether_tungsten); OreDictionary.registerOre("oreSulfur", ModBlocks.ore_nether_sulfur); + OreDictionary.registerOre("oreCobalt", ModBlocks.ore_nether_cobalt); OreDictionary.registerOre("oreSchrabidium", ModBlocks.ore_nether_schrabidium); OreDictionary.registerOre("oreUranium", ModBlocks.ore_meteor_uranium); diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index 964de761b..f7717faa2 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -7,6 +7,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.oredict.OreDictionary; +import scala.actors.threadpool.Arrays; public class RecipesCommon { @@ -83,6 +84,12 @@ public class RecipesCommon { public abstract boolean matchesRecipe(ItemStack stack, boolean ignoreSize); public abstract AStack copy(); + + /** + * Generates either an ItemStack or an ArrayList of ItemStacks + * @return + */ + public abstract List extractForNEI(); } public static class ComparableStack extends AStack { @@ -240,6 +247,11 @@ public class RecipesCommon { return true; } + + @Override + public List extractForNEI() { + return Arrays.asList(new ItemStack[] {this.toStack()}); + } } /* @@ -351,6 +363,17 @@ public class RecipesCommon { return false; } + + @Override + public List extractForNEI() { + + List ores = OreDictionary.getOres(name); + + for(ItemStack stack : ores) + stack.stackSize = this.stacksize; + + return ores; + } } public static class MetaBlock { diff --git a/src/main/java/com/hbm/inventory/ShredderRecipes.java b/src/main/java/com/hbm/inventory/ShredderRecipes.java index b959b17ea..0dddd1341 100644 --- a/src/main/java/com/hbm/inventory/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/ShredderRecipes.java @@ -72,6 +72,15 @@ public class ShredderRecipes { } else if(name.length() > 3 && name.substring(0, 3).equals("gem")) { ItemStack dust = getDustByName(name.substring(3)); + if(dust != null && dust.getItem() != ModItems.scrap) { + + for(ItemStack stack : matches) { + shredderRecipes.put(new ComparableStack(stack), dust); + } + } + } else if(name.length() > 7 && name.substring(0, 7).equals("crystal")) { + ItemStack dust = getDustByName(name.substring(7)); + if(dust != null && dust.getItem() != ModItems.scrap) { for(ItemStack stack : matches) { @@ -179,6 +188,7 @@ public class ShredderRecipes { ShredderRecipes.setRecipe(ModItems.crystal_trixite, new ItemStack(ModItems.powder_plutonium, 6)); ShredderRecipes.setRecipe(ModItems.crystal_lithium, new ItemStack(ModItems.powder_lithium, 3)); ShredderRecipes.setRecipe(ModItems.crystal_starmetal, new ItemStack(ModItems.powder_dura_steel, 6)); + ShredderRecipes.setRecipe(ModItems.crystal_cobalt, new ItemStack(ModItems.powder_cobalt, 3)); ShredderRecipes.setRecipe(ModBlocks.steel_poles, new ItemStack(ModItems.powder_steel_tiny, 3)); ShredderRecipes.setRecipe(ModBlocks.pole_top, new ItemStack(ModItems.powder_tungsten, 4)); diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKConsole.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKConsole.java deleted file mode 100644 index ecbd057ff..000000000 --- a/src/main/java/com/hbm/inventory/container/ContainerRBMKConsole.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.hbm.inventory.container; - -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerRBMKConsole extends Container { - - private TileEntityRBMKConsole rbmk; - - public ContainerRBMKConsole(InventoryPlayer invPlayer, TileEntityRBMKConsole tedf) { - this.rbmk = tedf; - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if(var4 != null && var4.getHasStack()) { - return null; - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return rbmk.isUseableByPlayer(player); - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index 9c55880d4..ed6a5ff8e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -1,6 +1,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.apache.commons.lang3.math.NumberUtils; @@ -8,7 +9,6 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.handler.FluidTypeHandler.FluidType; -import com.hbm.inventory.container.ContainerRBMKConsole; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; @@ -18,16 +18,21 @@ import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.RBMKColumn; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; -public class GUIRBMKConsole extends GuiInfoContainer { +public class GUIRBMKConsole extends GuiScreen { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_console.png"); private TileEntityRBMKConsole console; + protected int guiLeft; + protected int guiTop; + protected int xSize; + protected int ySize; private boolean[] selection = new boolean[15 * 15]; private boolean az5Lid = true; @@ -36,7 +41,7 @@ public class GUIRBMKConsole extends GuiInfoContainer { private GuiTextField field; public GUIRBMKConsole(InventoryPlayer invPlayer, TileEntityRBMKConsole tedf) { - super(new ContainerRBMKConsole(invPlayer, tedf)); + super(); this.console = tedf; this.xSize = 244; @@ -54,11 +59,15 @@ public class GUIRBMKConsole extends GuiInfoContainer { this.field.setEnableBackgroundDrawing(false); this.field.setMaxStringLength(3); } + + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; } @Override public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); int bX = 86; int bY = 11; @@ -91,6 +100,12 @@ public class GUIRBMKConsole extends GuiInfoContainer { this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 39, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select blue group" } ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 50, guiTop + 70, 10, 10, mouseX, mouseY, new String[]{ "Select purple group" } ); } + + public void drawCustomInfoStat(int mouseX, int mouseY, int x, int y, int width, int height, int tPosX, int tPosY, String[] text) { + + if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) + this.func_146283_a(Arrays.asList(text), tPosX, tPosY); + } @Override protected void mouseClicked(int mouseX, int mouseY, int i) { @@ -196,12 +211,7 @@ public class GUIRBMKConsole extends GuiInfoContainer { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1F)); } } - - @Override - protected void drawGuiContainerForegroundLayer(int i, int j) { - } - @Override protected void drawGuiContainerBackgroundLayer(float interp, int mX, int mY) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); @@ -293,6 +303,11 @@ public class GUIRBMKConsole extends GuiInfoContainer { if(this.field.textboxKeyTyped(c, i)) return; + if(i == 1 || i == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + return; + } + super.keyTyped(c, i); } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a310d6dc1..9cd256264 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -313,6 +313,7 @@ public class ModItems { public static Item crystal_rare; public static Item crystal_phosphorus; public static Item crystal_lithium; + public static Item crystal_cobalt; public static Item crystal_starmetal; public static Item crystal_trixite; @@ -2658,6 +2659,7 @@ public class ModItems { crystal_rare = new Item().setUnlocalizedName("crystal_rare").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_rare"); crystal_phosphorus = new ItemHazard().addFire(15).toItem().setUnlocalizedName("crystal_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_phosphorus"); crystal_lithium = new ItemHazard().addHydroReactivity().toItem().setUnlocalizedName("crystal_lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_lithium"); + crystal_cobalt = new Item().setUnlocalizedName("crystal_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_cobalt"); crystal_starmetal = new Item().setUnlocalizedName("crystal_starmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_starmetal"); crystal_trixite = new ItemHazard().addRadiation(ItemHazard.trx * ItemHazard.crystal).toItem().setUnlocalizedName("crystal_trixite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crystal_trixite"); gem_tantalium = new ItemCustomLore().setUnlocalizedName("gem_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_tantalium"); @@ -5481,6 +5483,7 @@ public class ModItems { GameRegistry.registerItem(crystal_rare, crystal_rare.getUnlocalizedName()); GameRegistry.registerItem(crystal_phosphorus, crystal_phosphorus.getUnlocalizedName()); GameRegistry.registerItem(crystal_lithium, crystal_lithium.getUnlocalizedName()); + GameRegistry.registerItem(crystal_cobalt, crystal_cobalt.getUnlocalizedName()); GameRegistry.registerItem(crystal_starmetal, crystal_starmetal.getUnlocalizedName()); GameRegistry.registerItem(crystal_trixite, crystal_trixite.getUnlocalizedName()); GameRegistry.registerItem(gem_tantalium, gem_tantalium.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 063dd8b7b..e9303f889 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -91,6 +91,7 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.ligniteSpawn, 24, 35, 25, ModBlocks.ore_lignite); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.asbestosSpawn, 4, 16, 16, ModBlocks.ore_asbestos); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cinnebarSpawn, 4, 8, 16, ModBlocks.ore_cinnebar); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cobaltSpawn, 4, 4, 8, ModBlocks.ore_cobalt); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.ironClusterSpawn, 6, 5, 50, ModBlocks.cluster_iron); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumClusterSpawn, 6, 5, 30, ModBlocks.cluster_titanium); @@ -600,6 +601,7 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherSulfurSpawn, 12, 0, 127, ModBlocks.ore_nether_sulfur, Blocks.netherrack); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherPhosphorusSpawn, 6, 0, 127, ModBlocks.ore_nether_fire, Blocks.netherrack); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherCoalSpawn, 32, 16, 96, ModBlocks.ore_nether_coal, Blocks.netherrack); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherCobaltSpawn, 6, 100, 26, ModBlocks.ore_nether_cobalt, Blocks.netherrack); if(GeneralConfig.enablePlutoniumOre) DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherPlutoniumSpawn, 4, 0, 127, ModBlocks.ore_nether_plutonium, Blocks.netherrack); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 5ca922274..387dd9521 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -897,6 +897,8 @@ public class CraftingManager { GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_meteor_lead), new ItemStack(ModItems.ingot_lead, 3), 6.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_meteor_lithium), new ItemStack(ModItems.lithium), 20.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_meteor_starmetal), new ItemStack(ModItems.ingot_starmetal), 50.0F); + GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_cobalt), new ItemStack(ModItems.ingot_cobalt), 2.0F); + GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_nether_cobalt), new ItemStack(ModItems.ingot_cobalt), 2.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_gneiss_iron), new ItemStack(Items.iron_ingot), 5.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_gneiss_gold), new ItemStack(Items.gold_ingot), 5.0F); @@ -987,6 +989,7 @@ public class CraftingManager { GameRegistry.addSmelting(ModItems.crystal_rare, new ItemStack(ModItems.powder_desh_mix, 1), 2.0F); GameRegistry.addSmelting(ModItems.crystal_phosphorus, new ItemStack(ModItems.powder_fire, 6), 2.0F); GameRegistry.addSmelting(ModItems.crystal_lithium, new ItemStack(ModItems.lithium, 2), 2.0F); + GameRegistry.addSmelting(ModItems.crystal_cobalt, new ItemStack(ModItems.ingot_cobalt, 2), 2.0F); GameRegistry.addSmelting(ModItems.crystal_starmetal, new ItemStack(ModItems.ingot_starmetal, 2), 2.0F); GameRegistry.addSmelting(ModItems.crystal_trixite, new ItemStack(ModItems.ingot_plutonium, 4), 2.0F); GameRegistry.addSmelting(ModItems.gem_tantalium, new ItemStack(ModItems.ingot_tantalium, 1), 2.0F); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e2277afc0..f8b3c9b08 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -21,7 +21,6 @@ import net.minecraftforge.common.ForgeChunkManager.Ticket; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.event.terraingen.DecorateBiomeEvent; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; @@ -1077,8 +1076,9 @@ public class MainRegistry { FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.red_barrel), new ItemStack(ModItems.tank_steel), FluidType.DIESEL, 10000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.pink_barrel), new ItemStack(ModItems.tank_steel), FluidType.KEROSENE, 10000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.lox_barrel), new ItemStack(ModItems.tank_steel), FluidType.OXYGEN, 10000)); - - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_gneiss_gas), new ItemStack(ModBlocks.stone_gneiss), FluidType.PETROLEUM, 250)); + + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_oil), null, FluidType.OIL, 250)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_gneiss_gas), null, FluidType.PETROLEUM, 250)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_deuterium), new ItemStack(ModItems.cell_empty), FluidType.DEUTERIUM, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_tritium), new ItemStack(ModItems.cell_empty), FluidType.TRITIUM, 1000)); @@ -1091,6 +1091,7 @@ public class MainRegistry { FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_anti_schrabidium), new ItemStack(ModItems.cell_empty), FluidType.ASCHRAB, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_sas3), new ItemStack(ModItems.cell_empty), FluidType.SAS3, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.bottle_mercury), new ItemStack(Items.glass_bottle), FluidType.MERCURY, 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.nugget_mercury), null, FluidType.MERCURY, 125)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 1), new ItemStack(ModItems.tank_waste, 1, 0), FluidType.WATZ, 8000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.tank_waste, 1, 2), new ItemStack(ModItems.tank_waste, 1, 1), FluidType.WATZ, 8000)); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index aa35ec1ad..f104c96a6 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -50,6 +50,10 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new HadronRecipeHandler()); API.registerRecipeHandler(new SILEXRecipeHandler()); API.registerUsageHandler(new SILEXRecipeHandler()); + API.registerRecipeHandler(new SmithingRecipeHandler()); + API.registerUsageHandler(new SmithingRecipeHandler()); + API.registerRecipeHandler(new AnvilRecipeHandler()); + API.registerUsageHandler(new AnvilRecipeHandler()); //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java index e6c46bd26..df63d1493 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java @@ -62,6 +62,10 @@ public class TileEntityStorageDrum extends TileEntityMachineBase { if(item == ModItems.nuclear_waste_short_tiny && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) { slots[i] = new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, slots[i].getItemDamage()); } + + if(item == ModItems.nugget_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 100) == 0) { + slots[i] = new ItemStack(ModItems.nugget_mercury, 1, slots[i].getItemDamage()); + } } } @@ -113,7 +117,8 @@ public class TileEntityStorageDrum extends TileEntityMachineBase { if(item == ModItems.nuclear_waste_long || item == ModItems.nuclear_waste_long_tiny || item == ModItems.nuclear_waste_short || - item == ModItems.nuclear_waste_short_tiny) + item == ModItems.nuclear_waste_short_tiny || + item == ModItems.nugget_au198) return true; return false; @@ -132,7 +137,8 @@ public class TileEntityStorageDrum extends TileEntityMachineBase { if(item == ModItems.nuclear_waste_long_depleted || item == ModItems.nuclear_waste_long_depleted_tiny || item == ModItems.nuclear_waste_short_depleted || - item == ModItems.nuclear_waste_short_depleted_tiny) + item == ModItems.nuclear_waste_short_depleted_tiny || + item == ModItems.nugget_mercury) return true; return false; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 05ab4ff1d..a1148f884 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1022,6 +1022,7 @@ item.crystal_aluminium.name=Aluminiumkristalle item.crystal_beryllium.name=Berylliumkristalle item.crystal_charred.name=Verkohlter Kristall item.crystal_coal.name=Kohlekristalle +item.crystal_cobalt.name=Kobaltkristalle item.crystal_copper.name=Kupferkristalle item.crystal_diamond.name=Diamantkristalle item.crystal_energy.name=Energiekristall @@ -2988,6 +2989,7 @@ tile.ore_beryllium.name=Berylliumerz tile.ore_cinnebar.name=Zinnobererz tile.ore_coal_oil.name=Öliges Kohleerz tile.ore_coal_oil_burning.name=Brennendes Öliges Kohleerz +tile.ore_cobalt.name=Kobalterz tile.ore_coltan.name=Coltanerz tile.ore_copper.name=Kupfererz tile.ore_daffergon.name=Dellit @@ -3017,6 +3019,7 @@ tile.ore_meteor_titanium.name=Meteoriten-Titanerz tile.ore_meteor_tungsten.name=Meteoriten-Wolframerz tile.ore_meteor_uranium.name=Meteoriten-Uranerz tile.ore_nether_coal.name=Brennendes Nether-Kohleerz +tile.ore_nether_cobalt.name=Nether-Kobalterz tile.ore_nether_fire.name=Nether-Phosphorerz tile.ore_nether_plutonium.name=Nether-Plutoniumerz tile.ore_nether_schrabidium.name=Nether-Schrabidiumerz diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 23481043e..7ce2f918d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1090,6 +1090,7 @@ item.crystal_aluminium.name=Aluminium Crystals item.crystal_beryllium.name=Beryllium Crystals item.crystal_charred.name=Charred Crystal item.crystal_coal.name=Coal Crystals +item.crystal_cobalt.name=Cobalt Crystals item.crystal_copper.name=Copper Crystals item.crystal_diamond.name=Diamond Crystals item.crystal_energy.name=Energy Crystal @@ -3072,6 +3073,7 @@ tile.ore_beryllium.name=Beryllium Ore tile.ore_cinnebar.name=Cinnabar Ore tile.ore_coal_oil.name=Oily Coal Ore tile.ore_coal_oil_burning.name=Burning Oily Coal Ore +tile.ore_cobalt.name=Cobalt Ore tile.ore_coltan.name=Coltan Ore tile.ore_copper.name=Copper Ore tile.ore_daffergon.name=Dellite @@ -3101,6 +3103,7 @@ tile.ore_meteor_titanium.name=Meteor Titanium Ore tile.ore_meteor_tungsten.name=Meteor Tungsten Ore tile.ore_meteor_uranium.name=Meteor Uranium Ore tile.ore_nether_coal.name=Burning Nether Coal Ore +tile.ore_nether_cobalt.name=Nether Cobalt Ore tile.ore_nether_fire.name=Nether Phosphorus Ore tile.ore_nether_plutonium.name=Nether Plutonium Ore tile.ore_nether_schrabidium.name=Nether Schrabidium Ore diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png b/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png new file mode 100644 index 000000000..63c77c56f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_nether_cobalt.png b/src/main/resources/assets/hbm/textures/blocks/ore_nether_cobalt.png new file mode 100644 index 000000000..240561299 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_nether_cobalt.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_anvil.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_anvil.png new file mode 100644 index 000000000..fc8105f4f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_anvil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_smithing.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_smithing.png new file mode 100644 index 000000000..748e9f8a8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_smithing.png differ diff --git a/src/main/resources/assets/hbm/textures/items/crystal_cobalt.png b/src/main/resources/assets/hbm/textures/items/crystal_cobalt.png new file mode 100644 index 000000000..6657aeac8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/crystal_cobalt.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 6da43450f..46108ccee 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -8,7 +8,7 @@ "url": "", "updateUrl": "", "authorList": ["HbMinecraft"], - "credits": "rodolphito, grangerave, Hoboy, Doctor17, Drillgon200, HBM", + "credits": "rodolphito (explosion algorithms), grangerave (explosion algorithms), Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting), UFFR, Bismarck (chinese localization), FirzzleFrazzle (models), Minecreep (models), VT-6/24 (models, textures), PheodoreKaczynski (textures), Pashtet (russian localization), Sten89 (models), impbk2002 (project settings), OvermindDL1 (project settings)", "logoFile": "", "screenshots": [], "dependencies": []