From a72e0439474dcf07efa344136f2d9f6b7f0ee8e0 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Mon, 11 Jan 2016 20:55:16 -0500 Subject: [PATCH 01/21] WAILA bounding block support --- .../common/integration/WailaDataProvider.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/mekanism/common/integration/WailaDataProvider.java b/src/main/java/mekanism/common/integration/WailaDataProvider.java index f75c5b866..7695f6263 100644 --- a/src/main/java/mekanism/common/integration/WailaDataProvider.java +++ b/src/main/java/mekanism/common/integration/WailaDataProvider.java @@ -6,11 +6,14 @@ import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; import mcp.mobius.waila.api.IWailaDataProvider; import mcp.mobius.waila.api.IWailaRegistrar; +import mekanism.api.Coord4D; import mekanism.api.EnumColor; +import mekanism.common.tile.TileEntityBoundingBlock; import mekanism.common.tile.TileEntityFactory; import mekanism.common.tile.TileEntityInductionCell; import mekanism.common.tile.TileEntityInductionProvider; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -29,6 +32,7 @@ public class WailaDataProvider implements IWailaDataProvider registrar.registerHeadProvider(provider, TileEntityInductionCell.class); registrar.registerHeadProvider(provider, TileEntityInductionProvider.class); registrar.registerHeadProvider(provider, TileEntityFactory.class); + registrar.registerHeadProvider(provider, TileEntityBoundingBlock.class); } @Override @@ -56,6 +60,16 @@ public class WailaDataProvider implements IWailaDataProvider { currenttip.set(0, EnumColor.WHITE + ((TileEntityFactory)tile).getInventoryName()); } + else if(tile instanceof TileEntityBoundingBlock) + { + TileEntityBoundingBlock bound = (TileEntityBoundingBlock)tile; + Coord4D coord = new Coord4D(bound.mainX, bound.mainY, bound.mainZ, tile.getWorldObj().provider.dimensionId); + + if(bound.receivedCoords && coord.getTileEntity(tile.getWorldObj()) instanceof IInventory) + { + currenttip.set(0, EnumColor.WHITE + ((IInventory)coord.getTileEntity(tile.getWorldObj())).getInventoryName()); + } + } return currenttip; } From 0b984148b45fdc5cc73585ce671be6c1a97ba948 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Mon, 11 Jan 2016 21:00:32 -0500 Subject: [PATCH 02/21] Fixed blocks not being harvested by items with one damage level --- src/main/java/mekanism/common/block/BlockBasic.java | 2 +- src/main/java/mekanism/common/block/BlockCardboardBox.java | 2 +- src/main/java/mekanism/common/block/BlockEnergyCube.java | 2 +- src/main/java/mekanism/common/block/BlockGasTank.java | 2 +- src/main/java/mekanism/common/block/BlockMachine.java | 2 +- src/main/java/mekanism/common/block/BlockPlasticFence.java | 4 +++- .../java/mekanism/generators/common/block/BlockGenerator.java | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/mekanism/common/block/BlockBasic.java b/src/main/java/mekanism/common/block/BlockBasic.java index 848c9b9fb..d2a115d19 100644 --- a/src/main/java/mekanism/common/block/BlockBasic.java +++ b/src/main/java/mekanism/common/block/BlockBasic.java @@ -950,7 +950,7 @@ public class BlockBasic extends Block implements IBlockCTM, ICustomBlockIcon @Override public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { - if(!player.capabilities.isCreativeMode && !world.isRemote && canHarvestBlock(player, world.getBlockMetadata(x, y, z))) + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { float motion = 0.7F; diff --git a/src/main/java/mekanism/common/block/BlockCardboardBox.java b/src/main/java/mekanism/common/block/BlockCardboardBox.java index f1d20d359..386e49549 100644 --- a/src/main/java/mekanism/common/block/BlockCardboardBox.java +++ b/src/main/java/mekanism/common/block/BlockCardboardBox.java @@ -169,7 +169,7 @@ public class BlockCardboardBox extends BlockContainer @Override public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { - if(!player.capabilities.isCreativeMode && !world.isRemote && canHarvestBlock(player, world.getBlockMetadata(x, y, z))) + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { float motion = 0.7F; double motionX = (world.rand.nextFloat() * motion) + (1.0F - motion) * 0.5D; diff --git a/src/main/java/mekanism/common/block/BlockEnergyCube.java b/src/main/java/mekanism/common/block/BlockEnergyCube.java index eaf62ef2c..75ff04913 100644 --- a/src/main/java/mekanism/common/block/BlockEnergyCube.java +++ b/src/main/java/mekanism/common/block/BlockEnergyCube.java @@ -189,7 +189,7 @@ public class BlockEnergyCube extends BlockContainer @Override public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { - if(!player.capabilities.isCreativeMode && !world.isRemote && canHarvestBlock(player, world.getBlockMetadata(x, y, z))) + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { float motion = 0.7F; double motionX = (world.rand.nextFloat() * motion) + (1.0F - motion) * 0.5D; diff --git a/src/main/java/mekanism/common/block/BlockGasTank.java b/src/main/java/mekanism/common/block/BlockGasTank.java index 9c9055f75..af2e6f2d5 100644 --- a/src/main/java/mekanism/common/block/BlockGasTank.java +++ b/src/main/java/mekanism/common/block/BlockGasTank.java @@ -135,7 +135,7 @@ public class BlockGasTank extends BlockContainer @Override public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { - if(!player.capabilities.isCreativeMode && !world.isRemote && canHarvestBlock(player, world.getBlockMetadata(x, y, z))) + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { float motion = 0.7F; double motionX = (world.rand.nextFloat() * motion) + (1.0F - motion) * 0.5D; diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index 3f9bb2d41..b1592a6ea 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -690,7 +690,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo @Override public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { - if(!player.capabilities.isCreativeMode && !world.isRemote && canHarvestBlock(player, world.getBlockMetadata(x, y, z))) + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { TileEntityBasicBlock tileEntity = (TileEntityBasicBlock)world.getTileEntity(x, y, z); diff --git a/src/main/java/mekanism/common/block/BlockPlasticFence.java b/src/main/java/mekanism/common/block/BlockPlasticFence.java index e315c5865..ce0565398 100644 --- a/src/main/java/mekanism/common/block/BlockPlasticFence.java +++ b/src/main/java/mekanism/common/block/BlockPlasticFence.java @@ -51,11 +51,13 @@ public class BlockPlasticFence extends BlockFence public boolean recolourBlock(World world, int x, int y, int z, ForgeDirection side, int colour) { int meta = world.getBlockMetadata(x, y, z); - if (meta != (15 - colour)) + + if(meta != (15 - colour)) { world.setBlockMetadataWithNotify(x, y, z, 15-colour, 3); return true; } + return false; } diff --git a/src/main/java/mekanism/generators/common/block/BlockGenerator.java b/src/main/java/mekanism/generators/common/block/BlockGenerator.java index ccaccedcf..0e609af53 100644 --- a/src/main/java/mekanism/generators/common/block/BlockGenerator.java +++ b/src/main/java/mekanism/generators/common/block/BlockGenerator.java @@ -424,7 +424,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds @Override public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { - if(!player.capabilities.isCreativeMode && !world.isRemote && canHarvestBlock(player, world.getBlockMetadata(x, y, z))) + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { float motion = 0.7F; double motionX = (world.rand.nextFloat() * motion) + (1.0F - motion) * 0.5D; From ab5fe0c81974336fb1ab2be4a3a156ad7ece8cb8 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Mon, 11 Jan 2016 21:13:36 -0500 Subject: [PATCH 03/21] Fixed IMC recipe deletion --- src/main/java/mekanism/common/IMCHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/mekanism/common/IMCHandler.java b/src/main/java/mekanism/common/IMCHandler.java index adb1b7831..8943d48be 100644 --- a/src/main/java/mekanism/common/IMCHandler.java +++ b/src/main/java/mekanism/common/IMCHandler.java @@ -21,10 +21,12 @@ public class IMCHandler try { boolean found = false; boolean delete = false; + + String message = msg.key; - if(msg.key.startsWith("Delete")) + if(message.startsWith("Delete") || message.startsWith("Remove")) { - msg.key.replace("Delete", ""); + message = message.replace("Delete", "").replace("Remove", ""); delete = true; } From 9b3969f1ff688e6fbcd177681c56bddf823c246d Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Tue, 12 Jan 2016 18:41:15 -0500 Subject: [PATCH 04/21] Shapeless Mekanism Recipes, IMC crafting recipe integration, fixed removal of machine recipes --- .../java/mekanism/api/util/StackUtils.java | 1 + .../client/nei/MekanismRecipeHandler.java | 228 ---------- .../client/nei/NEIMekanismConfig.java | 9 +- .../nei/ShapedMekanismRecipeHandler.java | 156 +++++++ .../nei/ShapelessMekanismRecipeHandler.java | 125 ++++++ src/main/java/mekanism/common/IMCHandler.java | 55 ++- src/main/java/mekanism/common/Mekanism.java | 396 ++++++++++------- .../mekanism/common/block/BlockMachine.java | 10 +- .../common/recipe/ShapedMekanismRecipe.java | 298 +++++++++++++ .../recipe/ShapelessMekanismRecipe.java | 179 ++++++++ .../RecipeUtils.java} | 399 ++++++------------ .../generators/common/MekanismGenerators.java | 28 +- .../mekanism/tools/common/MekanismTools.java | 132 +++--- .../resources/assets/mekanism/lang/en_US.lang | 1 + 14 files changed, 1258 insertions(+), 759 deletions(-) delete mode 100644 src/main/java/mekanism/client/nei/MekanismRecipeHandler.java create mode 100644 src/main/java/mekanism/client/nei/ShapedMekanismRecipeHandler.java create mode 100644 src/main/java/mekanism/client/nei/ShapelessMekanismRecipeHandler.java create mode 100644 src/main/java/mekanism/common/recipe/ShapedMekanismRecipe.java create mode 100644 src/main/java/mekanism/common/recipe/ShapelessMekanismRecipe.java rename src/main/java/mekanism/common/{recipe/MekanismRecipe.java => util/RecipeUtils.java} (56%) diff --git a/src/main/java/mekanism/api/util/StackUtils.java b/src/main/java/mekanism/api/util/StackUtils.java index b3a3aca92..7363c754d 100644 --- a/src/main/java/mekanism/api/util/StackUtils.java +++ b/src/main/java/mekanism/api/util/StackUtils.java @@ -59,6 +59,7 @@ public final class StackUtils { return check == wild; } + return wild.getItem() == check.getItem() && (wild.getItemDamage() == OreDictionary.WILDCARD_VALUE || wild.getItemDamage() == check.getItemDamage()); } diff --git a/src/main/java/mekanism/client/nei/MekanismRecipeHandler.java b/src/main/java/mekanism/client/nei/MekanismRecipeHandler.java deleted file mode 100644 index 19771a322..000000000 --- a/src/main/java/mekanism/client/nei/MekanismRecipeHandler.java +++ /dev/null @@ -1,228 +0,0 @@ -package mekanism.client.nei; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import mekanism.api.energy.IEnergizedItem; -import mekanism.api.gas.IGasItem; -import mekanism.common.base.IEnergyCube; -import mekanism.common.base.IFactory; -import mekanism.common.block.BlockMachine.MachineType; -import mekanism.common.item.ItemBlockBasic; -import mekanism.common.recipe.MekanismRecipe; -import mekanism.common.util.LangUtils; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; -import net.minecraft.item.crafting.IRecipe; -import net.minecraftforge.oredict.OreDictionary; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.ShapedRecipeHandler; - -public class MekanismRecipeHandler extends ShapedRecipeHandler -{ - @Override - public String getRecipeName() - { - return "Mekanism " + LangUtils.localize("recipe.mekanismShaped"); - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) - { - if(outputId.equals("crafting") && getClass() == MekanismRecipeHandler.class) - { - List allrecipes = CraftingManager.getInstance().getRecipeList(); - - for(IRecipe irecipe : allrecipes) - { - if(irecipe instanceof MekanismRecipe) - { - MekanismRecipe energyRecipe = (MekanismRecipe)irecipe; - CachedEnergyRecipe recipe = new CachedEnergyRecipe(energyRecipe.width, energyRecipe.height, energyRecipe.getInput(), energyRecipe.getRecipeOutput()); - arecipes.add(recipe); - } - } - } - else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) - { - List allrecipes = CraftingManager.getInstance().getRecipeList(); - - for(IRecipe irecipe : allrecipes) - { - if(irecipe instanceof MekanismRecipe && areItemsEqual(irecipe.getRecipeOutput(), result)) - { - MekanismRecipe energyRecipe = (MekanismRecipe)irecipe; - CachedEnergyRecipe recipe = new CachedEnergyRecipe(energyRecipe.width, energyRecipe.height, energyRecipe.getInput(), energyRecipe.getRecipeOutput()); - arecipes.add(recipe); - } - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) - { - List allrecipes = CraftingManager.getInstance().getRecipeList(); - - for(IRecipe irecipe : allrecipes) - { - if(irecipe instanceof MekanismRecipe) - { - MekanismRecipe energyRecipe = (MekanismRecipe)irecipe; - CachedEnergyRecipe recipe = new CachedEnergyRecipe(energyRecipe.width, energyRecipe.height, energyRecipe.getInput(), energyRecipe.getRecipeOutput()); - - if(recipe.contains(recipe.ingredients, ingredient)) - { - recipe.setIngredientPermutation(recipe.ingredients, ingredient); - arecipes.add(recipe); - } - } - } - } - - public static boolean areItemsEqual(ItemStack target, ItemStack input) - { - if(target == null && input != null || target != null && input == null) - { - return false; - } - else if(target == null && input == null) - { - return true; - } - - if(target.getItem() != input.getItem()) - { - return false; - } - - if(!(target.getItem() instanceof IEnergizedItem) && !(input.getItem() instanceof IEnergizedItem) && !(target.getItem() instanceof IGasItem) && !(input.getItem() instanceof IGasItem)) - { - if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) - { - return false; - } - } - else { - if(target.getItem() instanceof IEnergizedItem && input.getItem() instanceof IEnergizedItem) - { - if(((IEnergizedItem)target.getItem()).isMetadataSpecific(target) && ((IEnergizedItem)input.getItem()).isMetadataSpecific(input)) - { - if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) - { - return false; - } - } - } - - if(target.getItem() instanceof IGasItem && input.getItem() instanceof IGasItem) - { - if(((IGasItem)target.getItem()).isMetadataSpecific(target) && ((IGasItem)input.getItem()).isMetadataSpecific(input)) - { - if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) - { - return false; - } - } - } - - if(target.getItem() instanceof IEnergyCube && input.getItem() instanceof IEnergyCube) - { - if(((IEnergyCube)target.getItem()).getEnergyCubeTier(target) != ((IEnergyCube)input.getItem()).getEnergyCubeTier(input)) - { - return false; - } - } - else if(target.getItem() instanceof ItemBlockBasic && input.getItem() instanceof ItemBlockBasic) - { - if(((ItemBlockBasic)target.getItem()).getTier(target) != ((ItemBlockBasic)input.getItem()).getTier(input)) - { - return false; - } - } - else if(target.getItem() instanceof IFactory && input.getItem() instanceof IFactory) - { - if(isFactory(target) && isFactory(input)) - { - if(((IFactory)target.getItem()).getRecipeType(target) != ((IFactory)input.getItem()).getRecipeType(input)) - { - return false; - } - } - } - } - - return true; - } - - private static boolean isFactory(ItemStack stack) - { - return MachineType.get(stack) == MachineType.BASIC_FACTORY || MachineType.get(stack) == MachineType.ADVANCED_FACTORY || MachineType.get(stack) == MachineType.ELITE_FACTORY; - } - - public class CachedEnergyRecipe extends CachedRecipe - { - public ArrayList ingredients; - public PositionedStack result; - - public CachedEnergyRecipe(int width, int height, Object[] items, ItemStack out) - { - result = new PositionedStack(out, 119, 24); - ingredients = new ArrayList(); - setIngredients(width, height, items); - } - - public void setIngredients(int width, int height, Object[] items) - { - for(int x = 0; x < width; x++) - { - for(int y = 0; y < height; y++) - { - if(items[y*width+x] == null) - { - continue; - } - - PositionedStack stack = new PositionedStack(items[y*width+x], 25+x*18, 6+y*18); - stack.setMaxSize(1); - ingredients.add(stack); - } - } - } - - @Override - public ArrayList getIngredients() - { - return (ArrayList)getCycledIngredients(MekanismRecipeHandler.this.cycleticks / 20, ingredients); - } - - @Override - public PositionedStack getResult() - { - return result; - } - - @Override - public boolean contains(Collection ingredients, ItemStack ingredient) - { - for(PositionedStack stack : ingredients) - { - for(ItemStack item : stack.items) - { - if(areItemsEqual(item, ingredient)) - { - return true; - } - } - } - - return false; - } - } -} diff --git a/src/main/java/mekanism/client/nei/NEIMekanismConfig.java b/src/main/java/mekanism/client/nei/NEIMekanismConfig.java index 03203cb17..e74def22b 100644 --- a/src/main/java/mekanism/client/nei/NEIMekanismConfig.java +++ b/src/main/java/mekanism/client/nei/NEIMekanismConfig.java @@ -51,9 +51,6 @@ public class NEIMekanismConfig implements IConfigureNEI API.registerRecipeHandler(new ChemicalInjectionChamberRecipeHandler()); API.registerUsageHandler(new ChemicalInjectionChamberRecipeHandler()); - API.registerRecipeHandler(new MekanismRecipeHandler()); - API.registerUsageHandler(new MekanismRecipeHandler()); - API.registerRecipeHandler(new ChemicalOxidizerRecipeHandler()); API.registerUsageHandler(new ChemicalOxidizerRecipeHandler()); @@ -86,6 +83,12 @@ public class NEIMekanismConfig implements IConfigureNEI API.registerRecipeHandler(new SolarNeutronRecipeHandler()); API.registerUsageHandler(new SolarNeutronRecipeHandler()); + + API.registerRecipeHandler(new ShapedMekanismRecipeHandler()); + API.registerUsageHandler(new ShapedMekanismRecipeHandler()); + + API.registerRecipeHandler(new ShapelessMekanismRecipeHandler()); + API.registerUsageHandler(new ShapelessMekanismRecipeHandler()); API.setGuiOffset(GuiEnrichmentChamber.class, 16, 6); API.setGuiOffset(GuiOsmiumCompressor.class, 16, 6); diff --git a/src/main/java/mekanism/client/nei/ShapedMekanismRecipeHandler.java b/src/main/java/mekanism/client/nei/ShapedMekanismRecipeHandler.java new file mode 100644 index 000000000..0c87a628a --- /dev/null +++ b/src/main/java/mekanism/client/nei/ShapedMekanismRecipeHandler.java @@ -0,0 +1,156 @@ +package mekanism.client.nei; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import mekanism.common.recipe.ShapedMekanismRecipe; +import mekanism.common.util.LangUtils; +import mekanism.common.util.RecipeUtils; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraft.item.crafting.IRecipe; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.ShapedRecipeHandler; + +public class ShapedMekanismRecipeHandler extends ShapedRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Mekanism " + LangUtils.localize("recipe.mekanismShaped"); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) + { + if(outputId.equals("crafting") && getClass() == ShapedMekanismRecipeHandler.class) + { + List allrecipes = CraftingManager.getInstance().getRecipeList(); + + for(IRecipe irecipe : allrecipes) + { + if(irecipe instanceof ShapedMekanismRecipe) + { + ShapedMekanismRecipe mekanismRecipe = (ShapedMekanismRecipe)irecipe; + CachedShapedMekanismRecipe recipe = new CachedShapedMekanismRecipe(mekanismRecipe); + + recipe.computeVisuals(); + arecipes.add(recipe); + } + } + } + else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) + { + List allrecipes = CraftingManager.getInstance().getRecipeList(); + + for(IRecipe irecipe : allrecipes) + { + if(irecipe instanceof ShapedMekanismRecipe && RecipeUtils.areItemsEqualForCrafting(irecipe.getRecipeOutput(), result)) + { + ShapedMekanismRecipe mekanismRecipe = (ShapedMekanismRecipe)irecipe; + CachedShapedMekanismRecipe recipe = new CachedShapedMekanismRecipe(mekanismRecipe); + + recipe.computeVisuals(); + arecipes.add(recipe); + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) + { + List allrecipes = CraftingManager.getInstance().getRecipeList(); + + for(IRecipe irecipe : allrecipes) + { + if(irecipe instanceof ShapedMekanismRecipe) + { + ShapedMekanismRecipe mekanismRecipe = (ShapedMekanismRecipe)irecipe; + CachedShapedMekanismRecipe recipe = new CachedShapedMekanismRecipe(mekanismRecipe); + + recipe.computeVisuals(); + + if(recipe.contains(recipe.ingredients, ingredient)) + { + recipe.setIngredientPermutation(recipe.ingredients, ingredient); + arecipes.add(recipe); + } + } + } + } + + public class CachedShapedMekanismRecipe extends CachedRecipe + { + public ArrayList ingredients; + public PositionedStack result; + + public CachedShapedMekanismRecipe(ShapedMekanismRecipe recipe) + { + result = new PositionedStack(recipe.getRecipeOutput(), 119, 24); + ingredients = new ArrayList(); + setIngredients(recipe.width, recipe.height, recipe.getInput()); + } + + public void setIngredients(int width, int height, Object[] items) + { + for(int x = 0; x < width; x++) + { + for(int y = 0; y < height; y++) + { + if(items[y*width+x] == null) + { + continue; + } + + PositionedStack stack = new PositionedStack(items[y*width+x], 25+x*18, 6+y*18); + stack.setMaxSize(1); + ingredients.add(stack); + } + } + } + + @Override + public List getIngredients() + { + return getCycledIngredients(cycleticks / 20, ingredients); + } + + @Override + public PositionedStack getResult() + { + return result; + } + + public void computeVisuals() + { + for(PositionedStack p : ingredients) + { + p.generatePermutations(); + } + } + + @Override + public boolean contains(Collection ingredients, ItemStack ingredient) + { + for(PositionedStack stack : ingredients) + { + for(ItemStack item : stack.items) + { + if(RecipeUtils.areItemsEqualForCrafting(item, ingredient)) + { + return true; + } + } + } + + return false; + } + } +} diff --git a/src/main/java/mekanism/client/nei/ShapelessMekanismRecipeHandler.java b/src/main/java/mekanism/client/nei/ShapelessMekanismRecipeHandler.java new file mode 100644 index 000000000..f3cecc9a5 --- /dev/null +++ b/src/main/java/mekanism/client/nei/ShapelessMekanismRecipeHandler.java @@ -0,0 +1,125 @@ +package mekanism.client.nei; + +import java.util.ArrayList; +import java.util.List; + +import mekanism.common.recipe.ShapelessMekanismRecipe; +import mekanism.common.util.LangUtils; +import mekanism.common.util.RecipeUtils; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraft.item.crafting.IRecipe; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.ShapelessRecipeHandler; + +public class ShapelessMekanismRecipeHandler extends ShapelessRecipeHandler +{ + @Override + public String getRecipeName() + { + return "Mekanism " + LangUtils.localize("recipe.mekanismShapeless"); + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) + { + if(outputId.equals("crafting") && getClass() == ShapelessMekanismRecipeHandler.class) + { + List allrecipes = CraftingManager.getInstance().getRecipeList(); + + for(IRecipe irecipe : allrecipes) + { + if(irecipe instanceof ShapelessMekanismRecipe) + { + ShapelessMekanismRecipe mekanismRecipe = (ShapelessMekanismRecipe)irecipe; + CachedShapelessMekanismRecipe recipe = new CachedShapelessMekanismRecipe(mekanismRecipe); + + arecipes.add(recipe); + } + } + } + else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) + { + List allrecipes = CraftingManager.getInstance().getRecipeList(); + + for(IRecipe irecipe : allrecipes) + { + if(irecipe instanceof ShapelessMekanismRecipe && RecipeUtils.areItemsEqualForCrafting(irecipe.getRecipeOutput(), result)) + { + ShapelessMekanismRecipe mekanismRecipe = (ShapelessMekanismRecipe)irecipe; + CachedShapelessMekanismRecipe recipe = new CachedShapelessMekanismRecipe(mekanismRecipe); + + arecipes.add(recipe); + } + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) + { + List allrecipes = CraftingManager.getInstance().getRecipeList(); + + for(IRecipe irecipe : allrecipes) + { + if(irecipe instanceof ShapelessMekanismRecipe) + { + ShapelessMekanismRecipe mekanismRecipe = (ShapelessMekanismRecipe)irecipe; + CachedShapelessMekanismRecipe recipe = new CachedShapelessMekanismRecipe(mekanismRecipe); + + if(recipe.contains(recipe.ingredients, ingredient)) + { + recipe.setIngredientPermutation(recipe.ingredients, ingredient); + arecipes.add(recipe); + } + } + } + } + + public class CachedShapelessMekanismRecipe extends CachedRecipe + { + public ArrayList ingredients; + public PositionedStack result; + + public CachedShapelessMekanismRecipe(ShapelessMekanismRecipe recipe) + { + result = new PositionedStack(recipe.getRecipeOutput(), 119, 24); + ingredients = new ArrayList(); + setIngredients(recipe.getInput()); + } + + public void setIngredients(List items) + { + ingredients.clear(); + + for(int x = 0; x < items.size(); x++) + { + PositionedStack stack = new PositionedStack(items.get(x), 25 + stackorder[x][0] * 18, 6 + stackorder[x][1] * 18); + stack.setMaxSize(1); + ingredients.add(stack); + } + } + + public void setResult(ItemStack output) + { + result = new PositionedStack(output, 119, 24); + } + + @Override + public List getIngredients() + { + return getCycledIngredients(cycleticks / 20, ingredients); + } + + @Override + public PositionedStack getResult() + { + return result; + } + } +} diff --git a/src/main/java/mekanism/common/IMCHandler.java b/src/main/java/mekanism/common/IMCHandler.java index 8943d48be..4a3a49fd1 100644 --- a/src/main/java/mekanism/common/IMCHandler.java +++ b/src/main/java/mekanism/common/IMCHandler.java @@ -4,10 +4,15 @@ import java.util.List; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.ShapedMekanismRecipe; +import mekanism.common.recipe.ShapelessMekanismRecipe; import mekanism.common.recipe.inputs.MachineInput; import mekanism.common.recipe.machines.MachineRecipe; +import mekanism.common.util.RecipeUtils; +import net.minecraft.item.ItemStack; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; +import cpw.mods.fml.common.registry.GameRegistry; public class IMCHandler { @@ -23,6 +28,52 @@ public class IMCHandler boolean delete = false; String message = msg.key; + + if(message.equals("ShapedMekanismRecipe")) + { + ShapedMekanismRecipe recipe = ShapedMekanismRecipe.create(msg.getNBTValue()); + + if(recipe != null) + { + GameRegistry.addRecipe(recipe); + Mekanism.logger.info("[Mekanism] " + msg.getSender() + " added a shaped recipe to the recipe list."); + } + else { + Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to add an invalid shaped recipe."); + } + + found = true; + } + else if(message.equals("ShapelessMekanismRecipe")) + { + ShapelessMekanismRecipe recipe = ShapelessMekanismRecipe.create(msg.getNBTValue()); + + if(recipe != null) + { + GameRegistry.addRecipe(recipe); + Mekanism.logger.info("[Mekanism] " + msg.getSender() + " added a shapeless recipe to the recipe list."); + } + else { + Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to add an invalid shapeless recipe."); + } + + found = true; + } + else if(message.equals("DeleteMekanismRecipes") || message.equals("RemoveMekanismRecipes")) + { + ItemStack stack = RecipeUtils.loadRecipeItemStack(msg.getNBTValue()); + + if(stack != null) + { + RecipeUtils.removeRecipes(stack); + Mekanism.logger.info("[Mekanism] " + msg.getSender() + " removed a Mekanism recipe from the recipe list."); + } + else { + Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to remove a Mekanism recipe with an invalid output."); + } + + found = true; + } if(message.startsWith("Delete") || message.startsWith("Remove")) { @@ -53,11 +104,11 @@ public class IMCHandler } } else { - Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to " + (delete ? "remove" : "add") + "recipe of type " + type.getRecipeName() + " with an invalid output."); + Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to " + (delete ? "remove" : "add") + " recipe of type " + type.getRecipeName() + " with an invalid output."); } } else { - Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to " + (delete ? "remove" : "add") + "recipe of type " + type.getRecipeName() + " with an invalid input."); + Mekanism.logger.error("[Mekanism] " + msg.getSender() + " attempted to " + (delete ? "remove" : "add") + " recipe of type " + type.getRecipeName() + " with an invalid input."); } found = true; diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index ddf7302ab..935a9aac6 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -1,16 +1,15 @@ package mekanism.common; -import codechicken.multipart.handler.MultipartProxy; -import com.mojang.authlib.GameProfile; -import cpw.mods.fml.client.event.ConfigChangedEvent; -import cpw.mods.fml.common.*; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.event.*; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.EntityRegistry; -import cpw.mods.fml.common.registry.GameRegistry; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.api.MekanismAPI; @@ -32,7 +31,11 @@ import mekanism.api.transmitters.TransmitterNetworkRegistry; import mekanism.client.ClientTickHandler; import mekanism.common.EnergyNetwork.EnergyTransferEvent; import mekanism.common.FluidNetwork.FluidTransferEvent; -import mekanism.common.Tier.*; +import mekanism.common.Tier.BaseTier; +import mekanism.common.Tier.EnergyCubeTier; +import mekanism.common.Tier.FactoryTier; +import mekanism.common.Tier.InductionCellTier; +import mekanism.common.Tier.InductionProviderTier; import mekanism.common.base.IChunkLoadHandler; import mekanism.common.base.IFactory.RecipeType; import mekanism.common.base.IModule; @@ -45,7 +48,11 @@ import mekanism.common.content.tank.SynchronizedTankData; import mekanism.common.content.transporter.PathfinderCache; import mekanism.common.content.transporter.TransporterManager; import mekanism.common.content.turbine.SynchronizedTurbineData; -import mekanism.common.entity.*; +import mekanism.common.entity.EntityBabySkeleton; +import mekanism.common.entity.EntityBalloon; +import mekanism.common.entity.EntityFlame; +import mekanism.common.entity.EntityObsidianTNT; +import mekanism.common.entity.EntityRobit; import mekanism.common.frequency.Frequency; import mekanism.common.frequency.FrequencyManager; import mekanism.common.integration.MekanismHooks; @@ -56,13 +63,22 @@ import mekanism.common.network.PacketDataRequest.DataRequestMessage; import mekanism.common.network.PacketTransmitterUpdate.PacketType; import mekanism.common.network.PacketTransmitterUpdate.TransmitterUpdateMessage; import mekanism.common.recipe.BinRecipe; -import mekanism.common.recipe.MekanismRecipe; import mekanism.common.recipe.RecipeHandler; import mekanism.common.recipe.RecipeHandler.Recipe; +import mekanism.common.recipe.ShapedMekanismRecipe; +import mekanism.common.recipe.ShapelessMekanismRecipe; import mekanism.common.recipe.inputs.ItemStackInput; import mekanism.common.recipe.machines.SmeltingRecipe; import mekanism.common.recipe.outputs.ItemStackOutput; -import mekanism.common.tile.*; +import mekanism.common.tile.TileEntityAdvancedBoundingBlock; +import mekanism.common.tile.TileEntityBoiler; +import mekanism.common.tile.TileEntityBoilerValve; +import mekanism.common.tile.TileEntityBoundingBlock; +import mekanism.common.tile.TileEntityCardboardBox; +import mekanism.common.tile.TileEntityElectricBlock; +import mekanism.common.tile.TileEntityEntangledBlock; +import mekanism.common.tile.TileEntitySolarEvaporationBlock; +import mekanism.common.tile.TileEntitySolarEvaporationValve; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.common.voice.VoiceServerManager; @@ -74,6 +90,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.biome.BiomeGenBase; @@ -89,14 +106,35 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.RecipeSorter; import net.minecraftforge.oredict.RecipeSorter.Category; -import net.minecraftforge.oredict.ShapelessOreRecipe; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + import rebelkeithy.mods.metallurgy.api.IOreInfo; import rebelkeithy.mods.metallurgy.api.MetallurgyAPI; +import codechicken.multipart.handler.MultipartProxy; -import java.io.File; -import java.util.*; +import com.mojang.authlib.GameProfile; + +import cpw.mods.fml.client.event.ConfigChangedEvent; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.IFuelHandler; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.Mod.Instance; +import cpw.mods.fml.common.SidedProxy; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLInterModComms; +import cpw.mods.fml.common.event.FMLLoadCompleteEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.event.FMLServerStartingEvent; +import cpw.mods.fml.common.event.FMLServerStoppingEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.common.registry.GameRegistry; /** * Mekanism - a Minecraft mod @@ -185,348 +223,348 @@ public class Mekanism public void addRecipes() { //Storage Recipes - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 3), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 3), new Object[] { "***", "***", "***", Character.valueOf('*'), new ItemStack(Items.coal, 1, 1) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(Items.coal, 9, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(Items.coal, 9, 1), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 3) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 2), new Object[] { "***", "***", "***", Character.valueOf('*'), "ingotRefinedObsidian" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 0), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 2) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 4), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 4), new Object[] { "***", "***", "***", Character.valueOf('*'), "ingotRefinedGlowstone" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 3), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 3), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 4) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 0), new Object[] { "XXX", "XXX", "XXX", Character.valueOf('X'), "ingotOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 1), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 0) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 1), new Object[] { "***", "***", "***", Character.valueOf('*'), "ingotBronze" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 2), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 1) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 5), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 5), new Object[] { "***", "***", "***", Character.valueOf('*'), "ingotSteel" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 4), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 4), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 5) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 12), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 12), new Object[] { "***", "***", "***", Character.valueOf('*'), "ingotCopper" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 5), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 5), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 12) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 13), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 13), new Object[] { "***", "***", "***", Character.valueOf('*'), "ingotTin" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 6), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Ingot, 9, 6), new Object[] { "*", Character.valueOf('*'), new ItemStack(MekanismBlocks.BasicBlock, 1, 13) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.SaltBlock), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.SaltBlock), new Object[] { "**", "**", Character.valueOf('*'), MekanismItems.Salt })); //Base Recipes - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.ObsidianTNT, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.ObsidianTNT, 1), new Object[] { "***", "XXX", "***", Character.valueOf('*'), Blocks.obsidian, Character.valueOf('X'), Blocks.tnt })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.ElectricBow.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.ElectricBow.getUnchargedItem(), new Object[] { " AB", "E B", " AB", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('B'), Items.string, Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.EnergyTablet.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.EnergyTablet.getUnchargedItem(), new Object[] { "RCR", "ECE", "RCR", Character.valueOf('C'), "ingotGold", Character.valueOf('R'), "dustRedstone", Character.valueOf('E'), MekanismItems.EnrichedAlloy })); - MachineType.ENRICHMENT_CHAMBER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 0), new Object[] { + MachineType.ENRICHMENT_CHAMBER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 0), new Object[] { "RCR", "iIi", "RCR", Character.valueOf('i'), "ingotIron", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('R'), "alloyBasic", Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - MachineType.OSMIUM_COMPRESSOR.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 1), new Object[] { + MachineType.OSMIUM_COMPRESSOR.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 1), new Object[] { "ECE", "BIB", "ECE", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ADVANCED), Character.valueOf('B'), Items.bucket, Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - MachineType.COMBINER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 2), new Object[] { + MachineType.COMBINER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 2), new Object[] { "RCR", "SIS", "RCR", Character.valueOf('S'), Blocks.cobblestone, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ELITE), Character.valueOf('R'), "alloyElite", Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - MachineType.CRUSHER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 3), new Object[] { + MachineType.CRUSHER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 3), new Object[] { "RCR", "LIL", "RCR", Character.valueOf('R'), "dustRedstone", Character.valueOf('L'), Items.lava_bucket, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.SpeedUpgrade), new Object[]{ + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.SpeedUpgrade), new Object[]{ " G ", "ADA", " G ", Character.valueOf('G'), "blockGlass", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('D'), "dustOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.EnergyUpgrade), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.EnergyUpgrade), new Object[] { " G ", "ADA", " G ", Character.valueOf('G'), "blockGlass", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('D'), "dustGold" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.FilterUpgrade), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.FilterUpgrade), new Object[] { " G ", "ADA", " G ", Character.valueOf('G'), "blockGlass", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('D'), "dustTin" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.GasUpgrade), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.GasUpgrade), new Object[] { " G ", "ADA", " G ", Character.valueOf('G'), "blockGlass", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('D'), "dustIron" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.AtomicDisassembler.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.AtomicDisassembler.getUnchargedItem(), new Object[] { "AEA", "ACA", " O ", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('C'), MekanismItems.AtomicAlloy, Character.valueOf('O'), "ingotRefinedObsidian" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getEmptyGasTank(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getEmptyGasTank(), new Object[] { "PPP", "PDP", "PPP", Character.valueOf('P'), "ingotOsmium", Character.valueOf('D'), "dustIron" })); - MachineType.METALLURGIC_INFUSER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 8), new Object[] { + MachineType.METALLURGIC_INFUSER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 8), new Object[] { "IFI", "ROR", "IFI", Character.valueOf('I'), "ingotIron", Character.valueOf('F'), Blocks.furnace, Character.valueOf('R'), "dustRedstone", Character.valueOf('O'), "ingotOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.TeleportationCore), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.TeleportationCore), new Object[] { "LAL", "GDG", "LAL", Character.valueOf('L'), new ItemStack(Items.dye, 1, 4), Character.valueOf('A'), MekanismItems.AtomicAlloy, Character.valueOf('G'), "ingotGold", Character.valueOf('D'), Items.diamond })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.PortableTeleporter.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.PortableTeleporter.getUnchargedItem(), new Object[] { " E ", "CTC", " E ", Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('T'), MekanismItems.TeleportationCore })); - MachineType.TELEPORTER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 11), new Object[] { + MachineType.TELEPORTER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 11), new Object[] { "COC", "OTO", "COC", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('O'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('T'), MekanismItems.TeleportationCore })); - MachineType.PURIFICATION_CHAMBER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 9), new Object[] { + MachineType.PURIFICATION_CHAMBER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 9), new Object[] { "ECE", "ORO", "ECE", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ADVANCED), Character.valueOf('E'), "alloyAdvanced", Character.valueOf('O'), "ingotOsmium", Character.valueOf('R'), new ItemStack(MekanismBlocks.MachineBlock, 1, 0) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.Configurator.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.Configurator.getUnchargedItem(), new Object[] { " L ", "AEA", " S ", Character.valueOf('L'), new ItemStack(Items.dye, 1, 4), Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('S'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 9, 7), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 9, 7), new Object[] { "OOO", "OGO", "OOO", Character.valueOf('O'), "ingotRefinedObsidian", Character.valueOf('G'), "ingotRefinedGlowstone" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 8), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 8), new Object[] { " S ", "SPS", " S ", Character.valueOf('S'), "ingotSteel", Character.valueOf('P'), "ingotOsmium" })); - MachineType.ENERGIZED_SMELTER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 10), new Object[] { + MachineType.ENERGIZED_SMELTER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 10), new Object[] { "RCR", "GIG", "RCR", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('R'), "alloyBasic", Character.valueOf('G'), "blockGlass", Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - MachineType.ELECTRIC_PUMP.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 12), new Object[] { + MachineType.ELECTRIC_PUMP.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 12), new Object[] { " B ", "ECE", "OOO", Character.valueOf('B'), Items.bucket, Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('C'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('O'), "ingotOsmium" })); - MachineType.ELECTRIC_CHEST.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 13), new Object[] { + MachineType.ELECTRIC_CHEST.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 13), new Object[] { "SGS", "CcC", "SSS", Character.valueOf('S'), "ingotSteel", Character.valueOf('G'), "blockGlass", Character.valueOf('C'), Blocks.chest, Character.valueOf('c'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 4, 9), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 4, 9), new Object[] { " I ", "IBI", " I ", Character.valueOf('I'), "ingotSteel", Character.valueOf('B'), Items.bucket })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 4, 10), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 4, 10), new Object[] { " I ", "IGI", " I ", Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 9), Character.valueOf('G'), "blockGlass" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 2, 11), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 2, 11), new Object[] { " I ", "ICI", " I ", Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 9), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - MachineType.CHARGEPAD.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 14), new Object[] { + MachineType.CHARGEPAD.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 14), new Object[] { "PPP", "SES", Character.valueOf('P'), Blocks.stone_pressure_plate, Character.valueOf('S'), "ingotSteel", Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.Robit.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.Robit.getUnchargedItem(), new Object[] { " S ", "ECE", "OIO", Character.valueOf('S'), "ingotSteel", Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('C'), MekanismItems.AtomicAlloy, Character.valueOf('O'), "ingotRefinedObsidian", Character.valueOf('I'), new ItemStack(MekanismBlocks.MachineBlock, 1, 13) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.NetworkReader.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.NetworkReader.getUnchargedItem(), new Object[] { " G ", "AEA", " I ", Character.valueOf('G'), "blockGlass", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('I'), "ingotSteel" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.WalkieTalkie), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.WalkieTalkie), new Object[] { " O", "SCS", " S ", Character.valueOf('O'), "ingotOsmium", Character.valueOf('S'), "ingotSteel", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - MachineType.LOGISTICAL_SORTER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 15), new Object[] { + MachineType.LOGISTICAL_SORTER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 15), new Object[] { "IPI", "ICI", "III", Character.valueOf('I'), "ingotIron", Character.valueOf('P'), Blocks.piston, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 6), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 6), new Object[] { "SSS", "SCS", "SSS", Character.valueOf('S'), Blocks.cobblestone, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - MachineType.DIGITAL_MINER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 4), new Object[] { + MachineType.DIGITAL_MINER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock, 1, 4), new Object[] { "ACA", "SES", "TIT", Character.valueOf('A'), MekanismItems.AtomicAlloy, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('S'), new ItemStack(MekanismBlocks.MachineBlock, 1, 15), Character.valueOf('E'), MekanismItems.Robit.getUnchargedItem(), Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('T'), MekanismItems.TeleportationCore })); - MachineType.ROTARY_CONDENSENTRATOR.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 0), new Object[] { + MachineType.ROTARY_CONDENSENTRATOR.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 0), new Object[] { "GCG", "tEI", "GCG", Character.valueOf('G'), "blockGlass", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('t'), MekanismUtils.getEmptyGasTank(), Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('T'), new ItemStack(MekanismBlocks.BasicBlock, 1, 9), Character.valueOf('I'), new ItemStack(MekanismBlocks.MachineBlock2, 1, 11) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.Jetpack.getEmptyItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.Jetpack.getEmptyItem(), new Object[] { "SCS", "TGT", " T ", Character.valueOf('S'), "ingotSteel", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('T'), "ingotTin", Character.valueOf('G'), MekanismUtils.getEmptyGasTank() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Dictionary), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Dictionary), new Object[] { "C", "B", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('B'), Items.book })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.GasMask), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.GasMask), new Object[] { " S ", "GCG", "S S", Character.valueOf('S'), "ingotSteel", Character.valueOf('G'), "blockGlass", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.ScubaTank.getEmptyItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.ScubaTank.getEmptyItem(), new Object[] { " C ", "ATA", "SSS", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('S'), "ingotSteel" })); - MachineType.CHEMICAL_OXIDIZER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 1), new Object[] { + MachineType.CHEMICAL_OXIDIZER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 1), new Object[] { "ACA", "ERG", "ACA", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('R'), new ItemStack(MekanismBlocks.BasicBlock, 1, 9), Character.valueOf('G'), MekanismUtils.getEmptyGasTank(), Character.valueOf('E'), new ItemStack(MekanismBlocks.MachineBlock, 1, 13), Character.valueOf('A'), MekanismItems.EnrichedAlloy })); - MachineType.CHEMICAL_INFUSER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 2), new Object[] { + MachineType.CHEMICAL_INFUSER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 2), new Object[] { "ACA", "GRG", "ACA", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('R'), new ItemStack(MekanismBlocks.BasicBlock, 1, 9), Character.valueOf('G'), MekanismUtils.getEmptyGasTank(), Character.valueOf('A'), MekanismItems.EnrichedAlloy })); - MachineType.CHEMICAL_INJECTION_CHAMBER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 3), new Object[] { + MachineType.CHEMICAL_INJECTION_CHAMBER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 3), new Object[] { "RCR", "GPG", "RCR", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ELITE), Character.valueOf('R'), "alloyElite", Character.valueOf('G'), "ingotGold", Character.valueOf('P'), new ItemStack(MekanismBlocks.MachineBlock, 1, 9) })); - MachineType.ELECTROLYTIC_SEPARATOR.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 4), new Object[] { + MachineType.ELECTROLYTIC_SEPARATOR.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 4), new Object[] { "IRI", "ECE", "IRI", Character.valueOf('I'), "ingotIron", Character.valueOf('R'), "dustRedstone", Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('C'), MekanismItems.ElectrolyticCore })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.ElectrolyticCore), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.ElectrolyticCore), new Object[] { "EPE", "IEG", "EPE", Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('P'), "dustOsmium", Character.valueOf('I'), "dustIron", Character.valueOf('G'), "dustGold" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.CardboardBox), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.CardboardBox), new Object[] { "SS", "SS", Character.valueOf('S'), "pulpWood" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(Items.paper, 6), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(Items.paper, 6), new Object[] { "SSS", Character.valueOf('S'), MekanismItems.Sawdust })); - MachineType.PRECISION_SAWMILL.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 5), new Object[] { + MachineType.PRECISION_SAWMILL.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 5), new Object[] { "ICI", "ASA", "ICI", Character.valueOf('I'), "ingotIron", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('S'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 14), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 14), new Object[] { "CGC", "IBI", "CGC", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('G'), "paneGlass", Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('B'), "blockCopper" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 15), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock, 1, 15), new Object[] { "ITI", "CBC", "ITI", Character.valueOf('I'), "ingotCopper", Character.valueOf('T'), new ItemStack(MekanismBlocks.BasicBlock, 1, 11), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('B'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock2, 1, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock2, 1, 0), new Object[] { "CCC", "CTC", "CCC", Character.valueOf('C'), "ingotCopper", Character.valueOf('T'), new ItemStack(MekanismBlocks.BasicBlock, 1, 9) })); - MachineType.CHEMICAL_DISSOLUTION_CHAMBER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 6), new Object[] { + MachineType.CHEMICAL_DISSOLUTION_CHAMBER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 6), new Object[] { "CGC", "EAE", "CGC", Character.valueOf('G'), MekanismUtils.getEmptyGasTank(), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('A'), MekanismItems.AtomicAlloy, Character.valueOf('E'), MekanismItems.EnrichedAlloy })); - MachineType.CHEMICAL_WASHER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 7), new Object[] { + MachineType.CHEMICAL_WASHER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 7), new Object[] { "CWC", "EIE", "CGC", Character.valueOf('W'), Items.bucket, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('G'), MekanismUtils.getEmptyGasTank(), Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - MachineType.CHEMICAL_CRYSTALLIZER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 8), new Object[] { + MachineType.CHEMICAL_CRYSTALLIZER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 8), new Object[] { "CGC", "ASA", "CGC", Character.valueOf('G'), MekanismUtils.getEmptyGasTank(), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('A'), MekanismItems.AtomicAlloy, Character.valueOf('S'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.FreeRunners.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.FreeRunners.getUnchargedItem(), new Object[] { "C C", "A A", "T T", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.ArmoredJetpack.getEmptyItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.ArmoredJetpack.getEmptyItem(), new Object[] { "D D", "BSB", " J ", Character.valueOf('D'), "dustDiamond", Character.valueOf('B'), "ingotBronze", Character.valueOf('S'), "blockSteel", Character.valueOf('J'), MekanismItems.Jetpack.getEmptyItem() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.FilterCard), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.FilterCard), new Object[] { " A ", "ACA", " A ", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.SeismicReader.getUnchargedItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.SeismicReader.getUnchargedItem(), new Object[] { "SLS", "STS", "SSS", Character.valueOf('S'), "ingotSteel", Character.valueOf('L'), new ItemStack(Items.dye, 1, 4), Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem() })); - MachineType.SEISMIC_VIBRATOR.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 9), new Object[] { + MachineType.SEISMIC_VIBRATOR.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 9), new Object[] { "TLT", "CIC", "TTT", Character.valueOf('T'), "ingotTin", Character.valueOf('L'), new ItemStack(Items.dye, 1, 4), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - MachineType.PRESSURIZED_REACTION_CHAMBER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 10), new Object[] { + MachineType.PRESSURIZED_REACTION_CHAMBER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 10), new Object[] { "TET", "CIC", "GFG", Character.valueOf('S'), "ingotSteel", Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('G'), MekanismUtils.getEmptyGasTank(), Character.valueOf('I'), new ItemStack(MekanismBlocks.MachineBlock, 1, 0), Character.valueOf('F'), new ItemStack(MekanismBlocks.BasicBlock, 1, 9) })); - MachineType.PORTABLE_TANK.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 11), new Object[] { + MachineType.PORTABLE_TANK.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 11), new Object[] { "III", "GCG", "III", Character.valueOf('I'), "ingotIron", Character.valueOf('G'), "blockGlass", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - MachineType.FLUIDIC_PLENISHER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 12), new Object[] { + MachineType.FLUIDIC_PLENISHER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 12), new Object[] { "TTT", "CPC", "TTT", Character.valueOf('P'), new ItemStack(MekanismBlocks.MachineBlock, 1, 12), Character.valueOf('T'), "ingotTin", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(Blocks.rail, 24), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(Blocks.rail, 24), new Object[] { "O O", "OSO", "O O", Character.valueOf('O'), "ingotOsmium", Character.valueOf('S'), "stickWood" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.Flamethrower.getEmptyItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.Flamethrower.getEmptyItem(), new Object[] { "TTT", "TGS", "BCB", Character.valueOf('T'), "ingotTin", Character.valueOf('G'), MekanismUtils.getEmptyGasTank(), Character.valueOf('S'), Items.flint_and_steel, Character.valueOf('B'), "ingotBronze", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ADVANCED) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismItems.GaugeDropper.getEmptyItem(), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismItems.GaugeDropper.getEmptyItem(), new Object[] { " O ", "G G", "GGG", Character.valueOf('O'), "ingotOsmium", Character.valueOf('G'), "paneGlass" })); - MachineType.SOLAR_NEUTRON_ACTIVATOR.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock3, 1, 1), new Object[] { + MachineType.SOLAR_NEUTRON_ACTIVATOR.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock3, 1, 1), new Object[] { "APA", "CSC", "BBB", Character.valueOf('A'), "alloyElite", Character.valueOf('S'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('P'), new ItemStack(MekanismItems.Polyethene, 1, 2), Character.valueOf('B'), "ingotBronze", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ELITE) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock2, 4, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock2, 4, 1), new Object[] { " S ", "SES", " S ", Character.valueOf('S'), "ingotSteel", Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock2, 2, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.BasicBlock2, 2, 2), new Object[] { " I ", "ICI", " I ", Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock2, 1, 1), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ELITE) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.FactoryInstaller, 1, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.FactoryInstaller, 1, 0), new Object[] { "RCR", "iWi", "RCR", Character.valueOf('R'), "alloyBasic", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('i'), "ingotIron", Character.valueOf('W'), "plankWood" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.FactoryInstaller, 1, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.FactoryInstaller, 1, 1), new Object[] { "ECE", "oWo", "ECE", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ADVANCED), Character.valueOf('o'), "ingotOsmium", Character.valueOf('W'), "plankWood" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.FactoryInstaller, 1, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.FactoryInstaller, 1, 2), new Object[] { "RCR", "gWg", "RCR", Character.valueOf('R'), "alloyElite", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ELITE), Character.valueOf('g'), "ingotGold", Character.valueOf('W'), "plankWood" })); - MachineType.OREDICTIONIFICATOR.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock3, 1, 3), new Object[] { + MachineType.OREDICTIONIFICATOR.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock3, 1, 3), new Object[] { "SGS", "CBC", "SWS", Character.valueOf('S'), "ingotSteel", Character.valueOf('G'), "paneGlass", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('B'), MekanismItems.Dictionary, Character.valueOf('W'), Blocks.chest })); - MachineType.LASER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 13), new Object[] { + MachineType.LASER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 13), new Object[] { "RE ", "RCD", "RE ", Character.valueOf('R'), "alloyElite", Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('C'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('D'), "gemDiamond" })); - MachineType.LASER_AMPLIFIER.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 14), new Object[] { + MachineType.LASER_AMPLIFIER.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 14), new Object[] { "SSS", "SED", "SSS", Character.valueOf('S'), "ingotSteel", Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.BASIC), Character.valueOf('D'), "gemDiamond" })); - MachineType.LASER_TRACTOR_BEAM.addRecipe(new MekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 15), new Object[] { + MachineType.LASER_TRACTOR_BEAM.addRecipe(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.MachineBlock2, 1, 15), new Object[] { "C", "F", Character.valueOf('C'), new ItemStack(MekanismBlocks.MachineBlock, 1, 13), Character.valueOf('F'), new ItemStack(MekanismBlocks.MachineBlock2, 1, 14) })); //Energy Cube recipes - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.BASIC), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.BASIC), new Object[] { "RTR", "iIi", "RTR", Character.valueOf('R'), "alloyBasic", Character.valueOf('i'), "ingotIron", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.ADVANCED), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.ADVANCED), new Object[] { "ETE", "oBo", "ETE", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('o'), "ingotOsmium", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('B'), MekanismUtils.getEnergyCube(EnergyCubeTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.ELITE), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.ELITE), new Object[] { "RTR", "gAg", "RTR", Character.valueOf('R'), "alloyElite", Character.valueOf('g'), "ingotGold", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('A'), MekanismUtils.getEnergyCube(EnergyCubeTier.ADVANCED) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.ULTIMATE), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getEnergyCube(EnergyCubeTier.ULTIMATE), new Object[] { "ATA", "dEd", "ATA", Character.valueOf('A'), "alloyUltimate", Character.valueOf('d'), "gemDiamond", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.ELITE) })); //Induction Cell recipes - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.BASIC), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.BASIC), new Object[] { "LTL", "TET", "LTL", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.BASIC), Character.valueOf('L'), "dustLithium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.ADVANCED), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.ADVANCED), new Object[] { "TCT", "CEC", "TCT", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.ADVANCED), Character.valueOf('C'), MekanismUtils.getInductionCell(InductionCellTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.ELITE), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.ELITE), new Object[] { "TCT", "CEC", "TCT", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.ELITE), Character.valueOf('C'), MekanismUtils.getInductionCell(InductionCellTier.ADVANCED) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.ULTIMATE), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionCell(InductionCellTier.ULTIMATE), new Object[] { "TCT", "CEC", "TCT", Character.valueOf('T'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.ULTIMATE), Character.valueOf('C'), MekanismUtils.getInductionCell(InductionCellTier.ELITE) })); //Induction Provider recipes - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.BASIC), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.BASIC), new Object[] { "LCL", "CEC", "LCL", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.BASIC), Character.valueOf('L'), "dustLithium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.ADVANCED), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.ADVANCED), new Object[] { "CPC", "PEP", "CPC", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ADVANCED), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.ADVANCED), Character.valueOf('P'), MekanismUtils.getInductionProvider(InductionProviderTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.ELITE), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.ELITE), new Object[] { "CPC", "PEP", "CPC", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ELITE), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.ELITE), Character.valueOf('P'), MekanismUtils.getInductionProvider(InductionProviderTier.ADVANCED) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.ULTIMATE), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(MekanismUtils.getInductionProvider(InductionProviderTier.ULTIMATE), new Object[] { "CPC", "PEP", "CPC", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ULTIMATE), Character.valueOf('E'), MekanismUtils.getEnergyCube(EnergyCubeTier.ULTIMATE), Character.valueOf('P'), MekanismUtils.getInductionProvider(InductionProviderTier.ELITE) })); //Circuit recipes - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.ControlCircuit, 1, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.ControlCircuit, 1, 1), new Object[] { "ECE", Character.valueOf('C'), new ItemStack(MekanismItems.ControlCircuit, 1, 0), Character.valueOf('E'), "alloyAdvanced" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.ControlCircuit, 1, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.ControlCircuit, 1, 2), new Object[] { "RCR", Character.valueOf('C'), new ItemStack(MekanismItems.ControlCircuit, 1, 1), Character.valueOf('R'), "alloyElite" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.ControlCircuit, 1, 3), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.ControlCircuit, 1, 3), new Object[] { "ACA", Character.valueOf('C'), new ItemStack(MekanismItems.ControlCircuit, 1, 2), Character.valueOf('A'), "alloyUltimate" })); //Factory recipes for(RecipeType type : RecipeType.values()) { - MachineType.BASIC_FACTORY.addRecipe(new MekanismRecipe(MekanismUtils.getFactory(FactoryTier.BASIC, type), new Object[] { + MachineType.BASIC_FACTORY.addRecipe(new ShapedMekanismRecipe(MekanismUtils.getFactory(FactoryTier.BASIC, type), new Object[] { "RCR", "iOi", "RCR", Character.valueOf('R'), "alloyBasic", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('i'), "ingotIron", Character.valueOf('O'), type.getStack() })); - MachineType.ADVANCED_FACTORY.addRecipe(new MekanismRecipe(MekanismUtils.getFactory(FactoryTier.ADVANCED, type), new Object[] { + MachineType.ADVANCED_FACTORY.addRecipe(new ShapedMekanismRecipe(MekanismUtils.getFactory(FactoryTier.ADVANCED, type), new Object[] { "ECE", "oOo", "ECE", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ADVANCED), Character.valueOf('o'), "ingotOsmium", Character.valueOf('O'), MekanismUtils.getFactory(FactoryTier.BASIC, type) })); - MachineType.ELITE_FACTORY.addRecipe(new MekanismRecipe(MekanismUtils.getFactory(FactoryTier.ELITE, type), new Object[] { + MachineType.ELITE_FACTORY.addRecipe(new ShapedMekanismRecipe(MekanismUtils.getFactory(FactoryTier.ELITE, type), new Object[] { "RCR", "gOg", "RCR", Character.valueOf('R'), "alloyElite", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ELITE), Character.valueOf('g'), "ingotGold", Character.valueOf('O'), MekanismUtils.getFactory(FactoryTier.ADVANCED, type) })); } @@ -535,127 +573,127 @@ public class Mekanism CraftingManager.getInstance().getRecipeList().add(new BinRecipe()); //Transmitters - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 0), new Object[] { "SRS", Character.valueOf('S'), "ingotSteel", Character.valueOf('R'), "dustRedstone" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 1), new Object[] { "TTT", "TET", "TTT", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 0) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 2), new Object[] { "TTT", "TRT", "TTT", Character.valueOf('R'), "alloyElite", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 1) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 3), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 3), new Object[] { "TTT", "TAT", "TTT", Character.valueOf('A'), "alloyUltimate", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 2) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 4), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 4), new Object[] { "SBS", Character.valueOf('S'), "ingotSteel", Character.valueOf('B'), Items.bucket })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 5), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 5), new Object[] { "TTT", "TET", "TTT", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 4) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 6), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 6), new Object[] { "TTT", "TRT", "TTT", Character.valueOf('R'), "alloyElite", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 5) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 7), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 7), new Object[] { "TTT", "TAT", "TTT", Character.valueOf('A'), "alloyUltimate", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 6) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 8), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 8), new Object[] { "SGS", Character.valueOf('S'), "ingotSteel", Character.valueOf('G'), "blockGlass" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 9), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 9), new Object[] { "TTT", "TET", "TTT", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 8) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 10), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 10), new Object[] { "TTT", "TRT", "TTT", Character.valueOf('R'), "alloyElite", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 9) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 11), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 11), new Object[] { "TTT", "TAT", "TTT", Character.valueOf('A'), "alloyUltimate", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 10) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 12), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 12), new Object[] { "SCS", Character.valueOf('S'), "ingotSteel", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 13), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 13), new Object[] { "TTT", "TET", "TTT", Character.valueOf('E'), "alloyAdvanced", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 12) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 14), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 14), new Object[] { "TTT", "TRT", "TTT", Character.valueOf('R'), "alloyElite", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 13) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 15), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 8, 15), new Object[] { "TTT", "TAT", "TTT", Character.valueOf('A'), "alloyUltimate", Character.valueOf('T'), new ItemStack(MekanismItems.PartTransmitter, 1, 14) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 2, 16), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 2, 16), new Object[] { "SBS", Character.valueOf('S'), "ingotSteel", Character.valueOf('B'), Blocks.iron_bars })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 2, 17), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.PartTransmitter, 2, 17), new Object[] { "RRR", "SBS", "RRR", Character.valueOf('R'), "dustRedstone", Character.valueOf('S'), "ingotSteel", Character.valueOf('B'), Blocks.iron_bars })); //Plastic stuff - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 1), new Object[] { "PP", "PP", Character.valueOf('P'), new ItemStack(MekanismItems.Polyethene, 1, 0) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 2), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 2), new Object[] { "PPP", "P P", "PPP", Character.valueOf('P'), new ItemStack(MekanismItems.Polyethene, 1, 0) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 3), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.Polyethene, 1, 3), new Object[] { "R", "R", Character.valueOf('R'), new ItemStack(MekanismItems.Polyethene, 1, 1) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.PlasticBlock, 4, 15), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.PlasticBlock, 4, 15), new Object[] { "SSS", "S S", "SSS", Character.valueOf('S'), new ItemStack(MekanismItems.Polyethene, 1, 2) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.GlowPanel, 2, 15), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.GlowPanel, 2, 15), new Object[] { "PSP", "S S", "GSG", Character.valueOf('P'), "paneGlass", Character.valueOf('S'), new ItemStack(MekanismItems.Polyethene, 1, 2), Character.valueOf('G'), Items.glowstone_dust })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.PlasticFence, 3, 15), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.PlasticFence, 3, 15), new Object[] { "BSB", "BSB", Character.valueOf('B'), new ItemStack(MekanismBlocks.PlasticBlock, 1, 15), Character.valueOf('S'), new ItemStack(MekanismItems.Polyethene, 1, 3) })); for(int i = 0; i < EnumColor.DYES.length-1; i++) { - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.PlasticBlock, 4, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.PlasticBlock, 4, i), new Object[] { "SSS", "SDS", "SSS", Character.valueOf('S'), new ItemStack(MekanismItems.Polyethene, 1, 2), Character.valueOf('D'), "dye" + EnumColor.DYES[i].dyeName })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.GlowPanel, 2, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.GlowPanel, 2, i), new Object[] { "PSP", "SDS", "GSG", Character.valueOf('P'), "paneGlass", Character.valueOf('S'), new ItemStack(MekanismItems.Polyethene, 1, 2), Character.valueOf('D'), "dye" + EnumColor.DYES[i].dyeName, Character.valueOf('G'), Items.glowstone_dust })); } for(int i = 0; i < EnumColor.DYES.length; i++) { - CraftingManager.getInstance().getRecipeList().add(new ShapelessOreRecipe(new ItemStack(MekanismItems.Balloon, 2, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapelessMekanismRecipe(new ItemStack(MekanismItems.Balloon, 2, i), new Object[] { Items.leather, Items.string, "dye" + EnumColor.DYES[i].dyeName })); for(int j = 0; j < EnumColor.DYES.length; j++) { - CraftingManager.getInstance().getRecipeList().add(new ShapelessOreRecipe(new ItemStack(MekanismItems.Balloon, 1, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapelessMekanismRecipe(new ItemStack(MekanismItems.Balloon, 1, i), new Object[] { new ItemStack(MekanismItems.Balloon, 1, j), "dye" + EnumColor.DYES[i].dyeName })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.PlasticBlock, 4, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.PlasticBlock, 4, i), new Object[] { " P ", "PDP", " P ", Character.valueOf('P'), new ItemStack(MekanismBlocks.PlasticBlock, 1, j), Character.valueOf('D'), "dye" + EnumColor.DYES[i].dyeName })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.SlickPlasticBlock, 4, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.SlickPlasticBlock, 4, i), new Object[] { " P ", "PDP", " P ", Character.valueOf('P'), new ItemStack(MekanismBlocks.SlickPlasticBlock, 1, j), Character.valueOf('D'), "dye" + EnumColor.DYES[i].dyeName })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.GlowPlasticBlock, 4, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.GlowPlasticBlock, 4, i), new Object[] { " P ", "PDP", " P ", Character.valueOf('P'), new ItemStack(MekanismBlocks.GlowPlasticBlock, 1, j), Character.valueOf('D'), "dye" + EnumColor.DYES[i].dyeName })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.ReinforcedPlasticBlock, 4, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.ReinforcedPlasticBlock, 4, i), new Object[] { " P ", "PDP", " P ", Character.valueOf('P'), new ItemStack(MekanismBlocks.ReinforcedPlasticBlock, 1, j), Character.valueOf('D'), "dye" + EnumColor.DYES[i].dyeName })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismItems.GlowPanel, 4, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismItems.GlowPanel, 4, i), new Object[] { " P ", "PDP", " P ", Character.valueOf('P'), new ItemStack(MekanismItems.GlowPanel, 1, j), Character.valueOf('D'), "dye" + EnumColor.DYES[i].dyeName })); } - CraftingManager.getInstance().getRecipeList().add(new ShapelessOreRecipe(new ItemStack(MekanismBlocks.GlowPlasticBlock, 3, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapelessMekanismRecipe(new ItemStack(MekanismBlocks.GlowPlasticBlock, 3, i), new Object[] { new ItemStack(MekanismBlocks.PlasticBlock, 1, i), new ItemStack(MekanismBlocks.PlasticBlock, 1, i), new ItemStack(MekanismBlocks.PlasticBlock, 1, i), new ItemStack(Items.glowstone_dust) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.ReinforcedPlasticBlock, 4, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.ReinforcedPlasticBlock, 4, i), new Object[] { " P ", "POP", " P ", Character.valueOf('P'), new ItemStack(MekanismBlocks.PlasticBlock, 1, i), Character.valueOf('O'), "dustOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MekanismBlocks.RoadPlasticBlock, 3, i), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(MekanismBlocks.RoadPlasticBlock, 3, i), new Object[] { "SSS", "PPP", "SSS", Character.valueOf('S'), Blocks.sand, Character.valueOf('P'), new ItemStack(MekanismBlocks.SlickPlasticBlock, 1, i) })); } @@ -863,7 +901,8 @@ public class Mekanism FuelHandler.addGas(GasRegistry.getGas("hydrogen"), 1, general.FROM_H2); //RecipeSorter registrations - RecipeSorter.register("mekanism", MekanismRecipe.class, Category.SHAPED, ""); + RecipeSorter.register("mekanism_shaped", ShapedMekanismRecipe.class, Category.SHAPED, ""); + RecipeSorter.register("mekanism_shapeless", ShapelessMekanismRecipe.class, Category.SHAPELESS, ""); RecipeSorter.register("bin", BinRecipe.class, Category.SHAPELESS, ""); } @@ -1205,6 +1244,35 @@ public class Mekanism //Integrate with Waila FMLInterModComms.sendMessage("Waila", "register", "mekanism.common.integration.WailaDataProvider.register"); + + NBTTagCompound compound = new NBTTagCompound(); + compound.setTag("result", MekanismItems.EnergyTablet.getUnchargedItem().writeToNBT(new NBTTagCompound())); + + NBTTagList input = new NBTTagList(); + + NBTTagCompound com0 = new NBTTagCompound(); + com0.setString("pattern", "CS"); + input.appendTag(com0); + + NBTTagCompound com5 = new NBTTagCompound(); + com5.setString("character", "C"); + input.appendTag(com5); + + NBTTagCompound com1 = new NBTTagCompound(); + com1.setTag("itemstack", new ItemStack(Blocks.cobblestone).writeToNBT(new NBTTagCompound())); + input.appendTag(com1); + + NBTTagCompound com4 = new NBTTagCompound(); + com4.setString("character", "S"); + input.appendTag(com4); + + NBTTagCompound com2 = new NBTTagCompound(); + com2.setTag("itemstack", new ItemStack(Blocks.stone).writeToNBT(new NBTTagCompound())); + input.appendTag(com2); + + compound.setTag("input", input); + + FMLInterModComms.sendMessage("Mekanism", "ShapedMekanismRecipe", compound); //Integrate with OpenComputers if(Loader.isModLoaded("OpenComputers")) diff --git a/src/main/java/mekanism/common/block/BlockMachine.java b/src/main/java/mekanism/common/block/BlockMachine.java index b1592a6ea..e1c49a94d 100644 --- a/src/main/java/mekanism/common/block/BlockMachine.java +++ b/src/main/java/mekanism/common/block/BlockMachine.java @@ -26,7 +26,7 @@ import mekanism.common.network.PacketElectricChest.ElectricChestMessage; import mekanism.common.network.PacketElectricChest.ElectricChestPacketType; import mekanism.common.network.PacketLogisticalSorterGui.LogisticalSorterGuiMessage; import mekanism.common.network.PacketLogisticalSorterGui.SorterGuiPacket; -import mekanism.common.recipe.MekanismRecipe; +import mekanism.common.recipe.ShapedMekanismRecipe; import mekanism.common.tile.*; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; @@ -1090,7 +1090,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo public boolean isElectric; public boolean hasModel; public boolean supportsUpgrades; - public Collection machineRecipes = new HashSet(); + public Collection machineRecipes = new HashSet(); private MachineType(MachineBlock block, int i, String s, int j, Class tileClass, boolean electric, boolean model, boolean upgrades) { @@ -1109,17 +1109,17 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds, IBlo return machines.isEnabled(this.name); } - public void addRecipes(Collection recipes) + public void addRecipes(Collection recipes) { machineRecipes.addAll(recipes); } - public void addRecipe(MekanismRecipe recipe) + public void addRecipe(ShapedMekanismRecipe recipe) { machineRecipes.add(recipe); } - public Collection getRecipes() + public Collection getRecipes() { return machineRecipes; } diff --git a/src/main/java/mekanism/common/recipe/ShapedMekanismRecipe.java b/src/main/java/mekanism/common/recipe/ShapedMekanismRecipe.java new file mode 100644 index 000000000..5e8c6a975 --- /dev/null +++ b/src/main/java/mekanism/common/recipe/ShapedMekanismRecipe.java @@ -0,0 +1,298 @@ +package mekanism.common.recipe; + +import java.util.ArrayList; +import java.util.HashMap; + +import mekanism.common.Mekanism; +import mekanism.common.util.RecipeUtils; +import net.minecraft.block.Block; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.oredict.OreDictionary; + +/** + * Code originally from Eloraam and her work on the Ore Dictionary. Cleaned up and modified to work well with energized items. + * @author Eloraam, aidancbrady + * + */ +public class ShapedMekanismRecipe implements IRecipe +{ + private static final int MAX_CRAFT_GRID_WIDTH = 3; + private static final int MAX_CRAFT_GRID_HEIGHT = 3; + + private ItemStack output = null; + private Object[] input = null; + + public int width = 0; + public int height = 0; + + private boolean mirrored = true; + + public ShapedMekanismRecipe(ItemStack result, Object... recipe) + { + output = result.copy(); + + String shape = ""; + int idx = 0; + + if(recipe[idx] instanceof Boolean) + { + mirrored = (Boolean)recipe[idx]; + + if(recipe[idx+1] instanceof Object[]) + { + recipe = (Object[])recipe[idx+1]; + } + else { + idx = 1; + } + } + + if(recipe[idx] instanceof String[]) + { + String[] parts = ((String[])recipe[idx++]); + + for(String s : parts) + { + width = s.length(); + shape += s; + } + + height = parts.length; + } + else { + while(recipe[idx] instanceof String) + { + String s = (String)recipe[idx++]; + shape += s; + width = s.length(); + height++; + } + } + + if(width * height != shape.length()) + { + String ret = "Invalid shaped Mekanism recipe: "; + + for(Object tmp : recipe) + { + ret += tmp + ", "; + } + + ret += output; + + throw new RuntimeException(ret); + } + + HashMap itemMap = new HashMap(); + + for(; idx < recipe.length; idx += 2) + { + Character chr = (Character)recipe[idx]; + Object in = recipe[idx + 1]; + + if(in instanceof ItemStack) + { + itemMap.put(chr, ((ItemStack)in).copy()); + } + else if(in instanceof Item) + { + itemMap.put(chr, new ItemStack((Item)in)); + } + else if(in instanceof Block) + { + itemMap.put(chr, new ItemStack((Block)in, 1, OreDictionary.WILDCARD_VALUE)); + } + else if(in instanceof String) + { + itemMap.put(chr, OreDictionary.getOres((String)in)); + } + else { + String ret = "Invalid shaped Mekanism recipe: "; + + for(Object tmp : recipe) + { + ret += tmp + ", "; + } + + ret += output; + throw new RuntimeException(ret); + } + } + + input = new Object[width * height]; + int x = 0; + + for(char chr : shape.toCharArray()) + { + input[x++] = itemMap.get(chr); + } + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting inv) + { + return RecipeUtils.getCraftingResult(inv, output.copy()); + } + + @Override + public int getRecipeSize() + { + return input.length; + } + + @Override + public ItemStack getRecipeOutput() + { + return output; + } + + @Override + public boolean matches(InventoryCrafting inv, World world) + { + for(int x = 0; x <= MAX_CRAFT_GRID_WIDTH - width; x++) + { + for(int y = 0; y <= MAX_CRAFT_GRID_HEIGHT - height; ++y) + { + if(checkMatch(inv, x, y, true)) + { + return true; + } + + if(mirrored && checkMatch(inv, x, y, false)) + { + return true; + } + } + } + + return false; + } + + private boolean checkMatch(InventoryCrafting inv, int startX, int startY, boolean mirror) + { + for(int x = 0; x < MAX_CRAFT_GRID_WIDTH; x++) + { + for(int y = 0; y < MAX_CRAFT_GRID_HEIGHT; y++) + { + int subX = x - startX; + int subY = y - startY; + Object target = null; + + if(subX >= 0 && subY >= 0 && subX < width && subY < height) + { + if(mirror) + { + target = input[width - subX - 1 + subY * width]; + } + else { + target = input[subX + subY * width]; + } + } + + ItemStack slot = inv.getStackInRowAndColumn(x, y); + + if(target instanceof ItemStack) + { + if(!RecipeUtils.areItemsEqualForCrafting((ItemStack)target, slot)) + { + return false; + } + } + else if(target instanceof ArrayList) + { + boolean matched = false; + + for(ItemStack item : (ArrayList)target) + { + matched = matched || RecipeUtils.areItemsEqualForCrafting(item, slot); + } + + if(!matched) + { + return false; + } + } + else if(target == null && slot != null) + { + return false; + } + } + } + + return true; + } + + public ShapedMekanismRecipe setMirrored(boolean mirror) + { + mirrored = mirror; + return this; + } + + public Object[] getInput() + { + return input; + } + + public static ShapedMekanismRecipe create(NBTTagCompound nbtTags) + { + if(!nbtTags.hasKey("result") || !nbtTags.hasKey("input")) + { + Mekanism.logger.error("[Mekanism] Shaped recipe parse error: missing input or result compound tag."); + return null; + } + + ItemStack result = ItemStack.loadItemStackFromNBT(nbtTags.getCompoundTag("result")); + NBTTagList list = nbtTags.getTagList("input", NBT.TAG_COMPOUND); + + if(result == null || list.tagCount() == 0) + { + Mekanism.logger.error("[Mekanism] Shaped recipe parse error: invalid result stack or input data list."); + return null; + } + + Object[] ret = new Object[list.tagCount()]; + + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound compound = list.getCompoundTagAt(i); + + if(compound.hasKey("oredict")) + { + ret[i] = compound.getString("oredict"); + } + else if(compound.hasKey("pattern")) + { + ret[i] = compound.getString("pattern"); + } + else if(compound.hasKey("character")) + { + String s = compound.getString("character"); + + if(s.length() > 1) + { + Mekanism.logger.error("[Mekanism] Shaped recipe parse error: invalid pattern character data."); + return null; + } + + ret[i] = compound.getString("character").toCharArray()[0]; + } + else if(compound.hasKey("itemstack")) + { + ret[i] = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("itemstack")); + } + else { + Mekanism.logger.error("[Mekanism] Shaped recipe parse error: invalid input tag data key."); + return null; + } + } + + return new ShapedMekanismRecipe(result, ret); + } +} diff --git a/src/main/java/mekanism/common/recipe/ShapelessMekanismRecipe.java b/src/main/java/mekanism/common/recipe/ShapelessMekanismRecipe.java new file mode 100644 index 000000000..3ce9a0fe9 --- /dev/null +++ b/src/main/java/mekanism/common/recipe/ShapelessMekanismRecipe.java @@ -0,0 +1,179 @@ +package mekanism.common.recipe; + +import java.util.ArrayList; +import java.util.Iterator; + +import mekanism.common.Mekanism; +import mekanism.common.util.RecipeUtils; +import net.minecraft.block.Block; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants.NBT; +import net.minecraftforge.oredict.OreDictionary; + +public class ShapelessMekanismRecipe implements IRecipe +{ + private ItemStack output = null; + private ArrayList input = new ArrayList(); + + public ShapelessMekanismRecipe(Block result, Object... recipe){ this(new ItemStack(result), recipe); } + public ShapelessMekanismRecipe(Item result, Object... recipe){ this(new ItemStack(result), recipe); } + + public ShapelessMekanismRecipe(ItemStack result, Object... recipe) + { + output = result.copy(); + + for(Object obj : recipe) + { + if(obj instanceof ItemStack) + { + input.add(((ItemStack)obj).copy()); + } + else if(obj instanceof Item) + { + input.add(new ItemStack((Item)obj)); + } + else if(obj instanceof Block) + { + input.add(new ItemStack((Block)obj)); + } + else if(obj instanceof String) + { + input.add(OreDictionary.getOres((String)obj)); + } + else { + String ret = "Invalid shapeless Mekanism recipe: "; + + for(Object tmp : recipe) + { + ret += tmp + ", "; + } + + ret += output; + throw new RuntimeException(ret); + } + } + } + + @Override + public int getRecipeSize() + { + return input.size(); + } + + @Override + public ItemStack getRecipeOutput() + { + return output; + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting inv) + { + return RecipeUtils.getCraftingResult(inv, output.copy()); + } + + @SuppressWarnings("unchecked") + @Override + public boolean matches(InventoryCrafting inv, World world) + { + ArrayList required = new ArrayList(input); + + for(int x = 0; x < inv.getSizeInventory(); x++) + { + ItemStack slot = inv.getStackInSlot(x); + + if(slot != null) + { + boolean inRecipe = false; + Iterator req = required.iterator(); + + while(req.hasNext()) + { + boolean match = false; + + Object next = req.next(); + + if(next instanceof ItemStack) + { + match = RecipeUtils.areItemsEqualForCrafting((ItemStack)next, slot); + } + else if(next instanceof ArrayList) + { + Iterator itr = ((ArrayList)next).iterator(); + + while(itr.hasNext() && !match) + { + match = RecipeUtils.areItemsEqualForCrafting(itr.next(), slot); + } + } + + if(match) + { + inRecipe = true; + required.remove(next); + + break; + } + } + + if(!inRecipe) + { + return false; + } + } + } + + return required.isEmpty(); + } + + public ArrayList getInput() + { + return input; + } + + public static ShapelessMekanismRecipe create(NBTTagCompound nbtTags) + { + if(!nbtTags.hasKey("result") || !nbtTags.hasKey("input")) + { + Mekanism.logger.error("[Mekanism] Shapeless recipe parse error: missing input or result compound tag."); + return null; + } + + ItemStack result = ItemStack.loadItemStackFromNBT(nbtTags.getCompoundTag("result")); + NBTTagList list = nbtTags.getTagList("input", NBT.TAG_COMPOUND); + + if(result == null || list.tagCount() == 0) + { + Mekanism.logger.error("[Mekanism] Shapeless recipe parse error: invalid result stack or input data list."); + return null; + } + + Object[] ret = new Object[list.tagCount()]; + + for(int i = 0; i < list.tagCount(); i++) + { + NBTTagCompound compound = list.getCompoundTagAt(i); + + if(compound.hasKey("oredict")) + { + ret[i] = compound.getString("oredict"); + } + else if(compound.hasKey("itemstack")) + { + ret[i] = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("itemstack")); + } + else { + Mekanism.logger.error("[Mekanism] Shapeless recipe parse error: invalid input tag data key."); + return null; + } + } + + return new ShapelessMekanismRecipe(result, ret); + } +} diff --git a/src/main/java/mekanism/common/recipe/MekanismRecipe.java b/src/main/java/mekanism/common/util/RecipeUtils.java similarity index 56% rename from src/main/java/mekanism/common/recipe/MekanismRecipe.java rename to src/main/java/mekanism/common/util/RecipeUtils.java index de4809499..482a0e8eb 100644 --- a/src/main/java/mekanism/common/recipe/MekanismRecipe.java +++ b/src/main/java/mekanism/common/util/RecipeUtils.java @@ -1,7 +1,8 @@ -package mekanism.common.recipe; +package mekanism.common.util; -import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; +import java.util.List; import java.util.Map; import mekanism.api.energy.IEnergizedItem; @@ -12,139 +13,101 @@ import mekanism.common.base.IEnergyCube; import mekanism.common.base.IFactory; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.item.ItemBlockBasic; +import mekanism.common.recipe.ShapedMekanismRecipe; +import mekanism.common.recipe.ShapelessMekanismRecipe; import net.minecraft.block.Block; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; -/** - * Code originally from Eloraam and her work on the Ore Dictionary. Cleaned up and modified to work well with energized items. - * @author Eloraam, aidancbrady - * - */ -public class MekanismRecipe implements IRecipe +public class RecipeUtils { - private static final int MAX_CRAFT_GRID_WIDTH = 3; - private static final int MAX_CRAFT_GRID_HEIGHT = 3; - - private ItemStack output = null; - private Object[] input = null; - - public int width = 0; - public int height = 0; - - private boolean mirrored = true; - - public MekanismRecipe(ItemStack result, Object... recipe) + public static boolean areItemsEqualForCrafting(ItemStack target, ItemStack input) { - output = result.copy(); - - String shape = ""; - int idx = 0; - - if(recipe[idx] instanceof Boolean) + if(target == null && input != null || target != null && input == null) { - mirrored = (Boolean)recipe[idx]; - - if(recipe[idx+1] instanceof Object[]) - { - recipe = (Object[])recipe[idx+1]; - } - else { - idx = 1; - } + return false; + } + else if(target == null && input == null) + { + return true; } - if(recipe[idx] instanceof String[]) + if(target.getItem() != input.getItem()) { - String[] parts = ((String[])recipe[idx++]); + return false; + } - for(String s : parts) + if(!(target.getItem() instanceof IEnergizedItem) && !(input.getItem() instanceof IEnergizedItem) && !(target.getItem() instanceof IGasItem) && !(input.getItem() instanceof IGasItem)) + { + if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) { - width = s.length(); - shape += s; + return false; } - - height = parts.length; } else { - while(recipe[idx] instanceof String) + if(target.getItem() instanceof IEnergizedItem && input.getItem() instanceof IEnergizedItem) { - String s = (String)recipe[idx++]; - shape += s; - width = s.length(); - height++; - } - } - - if(width * height != shape.length()) - { - String ret = "Invalid shaped ore recipe: "; - - for(Object tmp : recipe) - { - ret += tmp + ", "; - } - - ret += output; - - throw new RuntimeException(ret); - } - - HashMap itemMap = new HashMap(); - - for(; idx < recipe.length; idx += 2) - { - Character chr = (Character)recipe[idx]; - Object in = recipe[idx + 1]; - - if(in instanceof ItemStack) - { - itemMap.put(chr, ((ItemStack)in).copy()); - } - else if(in instanceof Item) - { - itemMap.put(chr, new ItemStack((Item)in)); - } - else if(in instanceof Block) - { - itemMap.put(chr, new ItemStack((Block)in, 1, OreDictionary.WILDCARD_VALUE)); - } - else if(in instanceof String) - { - itemMap.put(chr, OreDictionary.getOres((String)in)); - } - else { - String ret = "Invalid shaped ore recipe: "; - - for(Object tmp : recipe) + if(((IEnergizedItem)target.getItem()).isMetadataSpecific(target) && ((IEnergizedItem)input.getItem()).isMetadataSpecific(input)) { - ret += tmp + ", "; + if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) + { + return false; + } } + } + + if(target.getItem() instanceof IGasItem && input.getItem() instanceof IGasItem) + { + if(((IGasItem)target.getItem()).isMetadataSpecific(target) && ((IGasItem)input.getItem()).isMetadataSpecific(input)) + { + if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) + { + return false; + } + } + } - ret += output; - throw new RuntimeException(ret); + if(target.getItem() instanceof IEnergyCube && input.getItem() instanceof IEnergyCube) + { + if(((IEnergyCube)target.getItem()).getEnergyCubeTier(target) != ((IEnergyCube)input.getItem()).getEnergyCubeTier(input)) + { + return false; + } + } + else if(target.getItem() instanceof ItemBlockBasic && input.getItem() instanceof ItemBlockBasic) + { + if(((ItemBlockBasic)target.getItem()).getTier(target) != ((ItemBlockBasic)input.getItem()).getTier(input)) + { + return false; + } + } + else if(target.getItem() instanceof IFactory && input.getItem() instanceof IFactory) + { + if(isFactory(target) && isFactory(input)) + { + if(((IFactory)target.getItem()).getRecipeType(target) != ((IFactory)input.getItem()).getRecipeType(input)) + { + return false; + } + } } } - input = new Object[width * height]; - int x = 0; - - for(char chr : shape.toCharArray()) - { - input[x++] = itemMap.get(chr); - } + return true; } - - @Override - public ItemStack getCraftingResult(InventoryCrafting inv) + + private static boolean isFactory(ItemStack stack) + { + return MachineType.get(stack) == MachineType.BASIC_FACTORY || MachineType.get(stack) == MachineType.ADVANCED_FACTORY || MachineType.get(stack) == MachineType.ELITE_FACTORY; + } + + public static ItemStack getCraftingResult(InventoryCrafting inv, ItemStack toReturn) { - ItemStack toReturn = output.copy(); - if(toReturn.getItem() instanceof IEnergizedItem) { double energyFound = 0; @@ -238,183 +201,65 @@ public class MekanismRecipe implements IRecipe return toReturn; } - - @Override - public int getRecipeSize() + + public static ItemStack loadRecipeItemStack(NBTTagCompound nbtTags) { - return input.length; - } - - @Override - public ItemStack getRecipeOutput() - { - return output; - } - - @Override - public boolean matches(InventoryCrafting inv, World world) - { - for(int x = 0; x <= MAX_CRAFT_GRID_WIDTH - width; x++) + int meta = 0; + int amount = 1; + + if(nbtTags.hasKey("meta")) { - for(int y = 0; y <= MAX_CRAFT_GRID_HEIGHT - height; ++y) + meta = nbtTags.getInteger("meta"); + } + + if(nbtTags.hasKey("amount")) + { + amount = nbtTags.getInteger("amount"); + } + + if(nbtTags.hasKey("itemstack")) + { + return ItemStack.loadItemStackFromNBT(nbtTags.getCompoundTag("itemstack")); + } + else if(nbtTags.hasKey("itemname")) + { + Object obj = Item.itemRegistry.getObject(nbtTags.getString("itemname")); + + if(obj instanceof Item) { - if(checkMatch(inv, x, y, true)) + return new ItemStack((Item)obj, amount, meta); + } + } + else if(nbtTags.hasKey("blockname")) + { + Object obj = Block.blockRegistry.getObject(nbtTags.getString("blockname")); + + if(obj instanceof Block) + { + return new ItemStack((Block)obj, amount, meta); + } + } + + return null; + } + + public static boolean removeRecipes(ItemStack stack) + { + List recipes = CraftingManager.getInstance().getRecipeList(); + + for(Iterator iter = recipes.iterator(); iter.hasNext();) + { + IRecipe iterRecipe = iter.next(); + + if(iterRecipe instanceof ShapedMekanismRecipe || iterRecipe instanceof ShapelessMekanismRecipe) + { + if(ItemStack.areItemStacksEqual(stack, iterRecipe.getRecipeOutput())) { - return true; - } - - if(mirrored && checkMatch(inv, x, y, false)) - { - return true; + iter.remove(); } } } - + return false; } - - private boolean checkMatch(InventoryCrafting inv, int startX, int startY, boolean mirror) - { - for(int x = 0; x < MAX_CRAFT_GRID_WIDTH; x++) - { - for(int y = 0; y < MAX_CRAFT_GRID_HEIGHT; y++) - { - int subX = x - startX; - int subY = y - startY; - Object target = null; - - if(subX >= 0 && subY >= 0 && subX < width && subY < height) - { - if(mirror) - { - target = input[width - subX - 1 + subY * width]; - } - else { - target = input[subX + subY * width]; - } - } - - ItemStack slot = inv.getStackInRowAndColumn(x, y); - - if(target instanceof ItemStack) - { - if(!checkItemEquals((ItemStack)target, slot)) - { - return false; - } - } - else if(target instanceof ArrayList) - { - boolean matched = false; - - for(ItemStack item : (ArrayList)target) - { - matched = matched || checkItemEquals(item, slot); - } - - if(!matched) - { - return false; - } - } - else if(target == null && slot != null) - { - return false; - } - } - } - - return true; - } - - private boolean checkItemEquals(ItemStack target, ItemStack input) - { - if(input == null && target != null || input != null && target == null) - { - return false; - } - else if(input == null && target == null) - { - return true; - } - - if(target.getItem() != input.getItem()) - { - return false; - } - - if(!(target.getItem() instanceof IEnergizedItem) && !(input.getItem() instanceof IEnergizedItem) && !(target.getItem() instanceof IGasItem) && !(input.getItem() instanceof IGasItem)) - { - if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) - { - return false; - } - } - else { - if(target.getItem() instanceof IEnergizedItem && input.getItem() instanceof IEnergizedItem) - { - if(((IEnergizedItem)target.getItem()).isMetadataSpecific(target) && ((IEnergizedItem)input.getItem()).isMetadataSpecific(input)) - { - if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) - { - return false; - } - } - } - - if(target.getItem() instanceof IGasItem && input.getItem() instanceof IGasItem) - { - if(((IGasItem)target.getItem()).isMetadataSpecific(target) && ((IGasItem)input.getItem()).isMetadataSpecific(input)) - { - if(target.getItemDamage() != input.getItemDamage() && target.getItemDamage() != OreDictionary.WILDCARD_VALUE) - { - return false; - } - } - } - - if(target.getItem() instanceof IEnergyCube && input.getItem() instanceof IEnergyCube) - { - if(((IEnergyCube)target.getItem()).getEnergyCubeTier(target) != ((IEnergyCube)input.getItem()).getEnergyCubeTier(input)) - { - return false; - } - } - else if(target.getItem() instanceof ItemBlockBasic && input.getItem() instanceof ItemBlockBasic) - { - if(((ItemBlockBasic)target.getItem()).getTier(target) != ((ItemBlockBasic)input.getItem()).getTier(input)) - { - return false; - } - } - else if(target.getItem() instanceof IFactory && input.getItem() instanceof IFactory) - { - if(isFactory(target) && isFactory(input)) - { - if(((IFactory)target.getItem()).getRecipeType(target) != ((IFactory)input.getItem()).getRecipeType(input)) - { - return false; - } - } - } - } - - return true; - } - - private static boolean isFactory(ItemStack stack) - { - return MachineType.get(stack) == MachineType.BASIC_FACTORY || MachineType.get(stack) == MachineType.ADVANCED_FACTORY || MachineType.get(stack) == MachineType.ELITE_FACTORY; - } - - public MekanismRecipe setMirrored(boolean mirror) - { - mirrored = mirror; - return this; - } - - public Object[] getInput() - { - return input; - } } diff --git a/src/main/java/mekanism/generators/common/MekanismGenerators.java b/src/main/java/mekanism/generators/common/MekanismGenerators.java index 4d16a344e..130eaf489 100644 --- a/src/main/java/mekanism/generators/common/MekanismGenerators.java +++ b/src/main/java/mekanism/generators/common/MekanismGenerators.java @@ -22,7 +22,7 @@ import mekanism.api.infuse.InfuseRegistry; import mekanism.common.*; import mekanism.common.Tier.BaseTier; import mekanism.common.base.IModule; -import mekanism.common.recipe.MekanismRecipe; +import mekanism.common.recipe.ShapedMekanismRecipe; import mekanism.common.recipe.RecipeHandler; import mekanism.common.util.MekanismUtils; import net.minecraft.init.Blocks; @@ -104,45 +104,45 @@ public class MekanismGenerators implements IModule public void addRecipes() { - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 0), new Object[] { "III", "WOW", "CFC", Character.valueOf('I'), "ingotIron", Character.valueOf('C'), "ingotCopper", Character.valueOf('O'), "ingotOsmium", Character.valueOf('F'), Blocks.furnace, Character.valueOf('W'), "plankWood" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 1), new Object[] { "SSS", "AIA", "PEP", Character.valueOf('S'), GeneratorsItems.SolarPanel, Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('I'), "ingotIron", Character.valueOf('P'), "dustOsmium", Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 5), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 5), new Object[] { "SES", "SES", "III", Character.valueOf('S'), new ItemStack(GeneratorsBlocks.Generator, 1, 1), Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('I'), "ingotIron" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 4), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 4), new Object[] { "RER", "BCB", "NEN", Character.valueOf('R'), "dustRedstone", Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('B'), MekanismItems.BioFuel, Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC), Character.valueOf('N'), "ingotIron" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 3), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 3), new Object[] { "PEP", "ICI", "PEP", Character.valueOf('P'), "ingotOsmium", Character.valueOf('E'), MekanismItems.EnrichedAlloy, Character.valueOf('I'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('C'), MekanismItems.ElectrolyticCore })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsItems.SolarPanel), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsItems.SolarPanel), new Object[] { "GGG", "RAR", "PPP", Character.valueOf('G'), "paneGlass", Character.valueOf('R'), "dustRedstone", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('P'), "ingotOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 6), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Generator, 1, 6), new Object[] { " O ", "OAO", "ECE", Character.valueOf('O'), "ingotOsmium", Character.valueOf('A'), MekanismItems.EnrichedAlloy, Character.valueOf('E'), MekanismItems.EnergyTablet.getUnchargedItem(), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.BASIC) })); //Reactor Recipes - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 4, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 4, 1), new Object[] { " C ", "CAC", " C ", Character.valueOf('C'), new ItemStack(MekanismBlocks.BasicBlock, 1, 8), Character.valueOf('A'), "alloyUltimate" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 2, 3), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 2, 3), new Object[] { " I ", "ICI", " I ", Character.valueOf('I'), new ItemStack(GeneratorsBlocks.Reactor, 1, 1), Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ULTIMATE) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.ReactorGlass, 4, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.ReactorGlass, 4, 0), new Object[] { " I ", "IGI", " I ", Character.valueOf('I'), new ItemStack(GeneratorsBlocks.Reactor, 1, 1), Character.valueOf('G'), "blockGlass" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 1, 0), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 1, 0), new Object[] { "CGC", "ITI", "III", Character.valueOf('C'), MekanismUtils.getControlCircuit(BaseTier.ULTIMATE), Character.valueOf('G'), "paneGlass", Character.valueOf('I'), new ItemStack(GeneratorsBlocks.Reactor, 1, 1), Character.valueOf('T'), MekanismUtils.getEmptyGasTank() })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.ReactorGlass, 2, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.ReactorGlass, 2, 1), new Object[] { " I ", "ILI", " I ", Character.valueOf('I'), new ItemStack(GeneratorsBlocks.ReactorGlass, 1, 0), Character.valueOf('L'), "blockRedstone" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 1, 4), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(GeneratorsBlocks.Reactor, 1, 4), new Object[] { " R ", "RFR", " R ", Character.valueOf('R'), "dustRedstone", Character.valueOf('F'), new ItemStack(GeneratorsBlocks.Reactor, 1, 1) })); diff --git a/src/main/java/mekanism/tools/common/MekanismTools.java b/src/main/java/mekanism/tools/common/MekanismTools.java index 2fd11244e..2fdda0e63 100644 --- a/src/main/java/mekanism/tools/common/MekanismTools.java +++ b/src/main/java/mekanism/tools/common/MekanismTools.java @@ -14,7 +14,7 @@ import mekanism.api.MekanismConfig.tools; import mekanism.common.Mekanism; import mekanism.common.Version; import mekanism.common.base.IModule; -import mekanism.common.recipe.MekanismRecipe; +import mekanism.common.recipe.ShapedMekanismRecipe; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.monster.EntityZombie; import net.minecraft.init.Items; @@ -92,211 +92,211 @@ public class MekanismTools implements IModule { //Crafting Recipes //Base - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.WoodPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.WoodPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), Items.wooden_axe, Character.valueOf('Y'), Items.wooden_pickaxe, Character.valueOf('Z'), Items.wooden_shovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.StonePaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.StonePaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), Items.stone_axe, Character.valueOf('Y'), Items.stone_pickaxe, Character.valueOf('Z'), Items.stone_shovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.IronPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.IronPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), Items.iron_axe, Character.valueOf('Y'), Items.iron_pickaxe, Character.valueOf('Z'), Items.iron_shovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.DiamondPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.DiamondPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), Items.diamond_axe, Character.valueOf('Y'), Items.diamond_pickaxe, Character.valueOf('Z'), Items.diamond_shovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GoldPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GoldPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), Items.golden_axe, Character.valueOf('Y'), Items.golden_pickaxe, Character.valueOf('Z'), Items.golden_shovel, Character.valueOf('T'), Items.stick })); //Obsidian - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianHelmet, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianHelmet, 1), new Object[] { "***", "* *", Character.valueOf('*'), "ingotRefinedObsidian" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianChestplate, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianChestplate, 1), new Object[] { "* *", "***", "***", Character.valueOf('*'), "ingotRefinedObsidian" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianLeggings, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianLeggings, 1), new Object[] { "***", "* *", "* *", Character.valueOf('*'), "ingotRefinedObsidian" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianBoots, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianBoots, 1), new Object[] { "* *", "* *", Character.valueOf('*'), "ingotRefinedObsidian" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), ToolsItems.ObsidianAxe, Character.valueOf('Y'), ToolsItems.ObsidianPickaxe, Character.valueOf('Z'), ToolsItems.ObsidianShovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianPickaxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianPickaxe, 1), new Object[] { "XXX", " T ", " T ", Character.valueOf('X'), "ingotRefinedObsidian", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianAxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianAxe, 1), new Object[] { "XX", "XT", " T", Character.valueOf('X'), "ingotRefinedObsidian", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianShovel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianShovel, 1), new Object[] { "X", "T", "T", Character.valueOf('X'), "ingotRefinedObsidian", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianHoe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianHoe, 1), new Object[] { "XX", " T", " T", Character.valueOf('X'), "ingotRefinedObsidian", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.ObsidianSword, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.ObsidianSword, 1), new Object[] { "X", "X", "T", Character.valueOf('X'), "ingotRefinedObsidian", Character.valueOf('T'), Items.stick })); //Glowstone - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstonePaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstonePaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), ToolsItems.GlowstoneAxe, Character.valueOf('Y'), ToolsItems.GlowstonePickaxe, Character.valueOf('Z'), ToolsItems.GlowstoneShovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstonePickaxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstonePickaxe, 1), new Object[] { "XXX", " T ", " T ", Character.valueOf('X'), "ingotRefinedGlowstone", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneAxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneAxe, 1), new Object[] { "XX", "XT", " T", Character.valueOf('X'), "ingotRefinedGlowstone", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneShovel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneShovel, 1), new Object[] { "X", "T", "T", Character.valueOf('X'), "ingotRefinedGlowstone", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneHoe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneHoe, 1), new Object[] { "XX", " T", " T", Character.valueOf('X'), "ingotRefinedGlowstone", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneSword, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneSword, 1), new Object[] { "X", "X", "T", Character.valueOf('X'), "ingotRefinedGlowstone", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneHelmet, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneHelmet, 1), new Object[] { "***", "* *", Character.valueOf('*'), "ingotRefinedGlowstone" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneChestplate, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneChestplate, 1), new Object[] { "* *", "***", "***", Character.valueOf('*'), "ingotRefinedGlowstone" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneLeggings, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneLeggings, 1), new Object[] { "***", "* *", "* *", Character.valueOf('*'), "ingotRefinedGlowstone" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.GlowstoneBoots, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.GlowstoneBoots, 1), new Object[] { "* *", "* *", Character.valueOf('*'), "ingotRefinedGlowstone" })); //Lazuli - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliHelmet, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliHelmet, 1), new Object[] { "***", "* *", Character.valueOf('*'), new ItemStack(Items.dye, 1, 4) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliChestplate, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliChestplate, 1), new Object[] { "* *", "***", "***", Character.valueOf('*'), new ItemStack(Items.dye, 1, 4) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliLeggings, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliLeggings, 1), new Object[] { "***", "* *", "* *", Character.valueOf('*'), new ItemStack(Items.dye, 1, 4) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliBoots, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliBoots, 1), new Object[] { "* *", "* *", Character.valueOf('*'), new ItemStack(Items.dye, 1, 4) })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), ToolsItems.LazuliAxe, Character.valueOf('Y'), ToolsItems.LazuliPickaxe, Character.valueOf('Z'), ToolsItems.LazuliShovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliPickaxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliPickaxe, 1), new Object[] { "XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Items.dye, 1, 4), Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliAxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliAxe, 1), new Object[] { "XX", "XT", " T", Character.valueOf('X'), new ItemStack(Items.dye, 1, 4), Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliShovel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliShovel, 1), new Object[] { "X", "T", "T", Character.valueOf('X'), new ItemStack(Items.dye, 1, 4), Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliHoe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliHoe, 1), new Object[] { "XX", " T", " T", Character.valueOf('X'), new ItemStack(Items.dye, 1, 4), Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.LazuliSword, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.LazuliSword, 1), new Object[] { "X", "X", "T", Character.valueOf('X'), new ItemStack(Items.dye, 1, 4), Character.valueOf('T'), Items.stick })); //Osmium - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumPaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), ToolsItems.OsmiumAxe, Character.valueOf('Y'), ToolsItems.OsmiumPickaxe, Character.valueOf('Z'), ToolsItems.OsmiumShovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumPickaxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumPickaxe, 1), new Object[] { "XXX", " T ", " T ", Character.valueOf('X'), "ingotOsmium", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumAxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumAxe, 1), new Object[] { "XX", "XT", " T", Character.valueOf('X'), "ingotOsmium", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumShovel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumShovel, 1), new Object[] { "X", "T", "T", Character.valueOf('X'), "ingotOsmium", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumHoe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumHoe, 1), new Object[] { "XX", " T", " T", Character.valueOf('X'), "ingotOsmium", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumSword, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumSword, 1), new Object[] { "X", "X", "T", Character.valueOf('X'), "ingotOsmium", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumHelmet, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumHelmet, 1), new Object[] { "***", "* *", Character.valueOf('*'), "ingotOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumChestplate, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumChestplate, 1), new Object[] { "* *", "***", "***", Character.valueOf('*'), "ingotOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumLeggings, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumLeggings, 1), new Object[] { "***", "* *", "* *", Character.valueOf('*'), "ingotOsmium" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.OsmiumBoots, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.OsmiumBoots, 1), new Object[] { "* *", "* *", Character.valueOf('*'), "ingotOsmium" })); //Bronze - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzePaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzePaxel, 1), new Object[] { "XYZ", " T ", " T ", Character.valueOf('X'), ToolsItems.BronzeAxe, Character.valueOf('Y'), ToolsItems.BronzePickaxe, Character.valueOf('Z'), ToolsItems.BronzeShovel, Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzePickaxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzePickaxe, 1), new Object[] { "XXX", " T ", " T ", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeAxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeAxe, 1), new Object[] { "XX", "XT", " T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeShovel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeShovel, 1), new Object[] { "X", "T", "T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeHoe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeHoe, 1), new Object[] { "XX", " T", " T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeSword, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeSword, 1), new Object[] { "X", "X", "T", Character.valueOf('X'), "ingotBronze", Character.valueOf('T'), Items.stick })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeHelmet, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeHelmet, 1), new Object[] { "***", "* *", Character.valueOf('*'), "ingotBronze" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeChestplate, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeChestplate, 1), new Object[] { "* *", "***", "***", Character.valueOf('*'), "ingotBronze" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeLeggings, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeLeggings, 1), new Object[] { "***", "* *", "* *", Character.valueOf('*'), "ingotBronze" })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.BronzeBoots, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.BronzeBoots, 1), new Object[] { "* *", "* *", Character.valueOf('*'), "ingotBronze" })); //Steel - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelPaxel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelPaxel, 1), new Object[] { "XYZ", " I ", " I ", Character.valueOf('X'), ToolsItems.SteelAxe, Character.valueOf('Y'), ToolsItems.SteelPickaxe, Character.valueOf('Z'), ToolsItems.SteelShovel, Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelPickaxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelPickaxe, 1), new Object[] { "XXX", " I ", " I ", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelAxe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelAxe, 1), new Object[] { "XX", "XI", " I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelShovel, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelShovel, 1), new Object[] { "X", "I", "I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelHoe, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelHoe, 1), new Object[] { "XX", " I", " I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelSword, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelSword, 1), new Object[] { "X", "X", "I", Character.valueOf('X'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelHelmet, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelHelmet, 1), new Object[] { "***", "I I", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelChestplate, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelChestplate, 1), new Object[] { "I I", "*I*", "***", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelLeggings, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelLeggings, 1), new Object[] { "I*I", "* *", "* *", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); - CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(ToolsItems.SteelBoots, 1), new Object[] { + CraftingManager.getInstance().getRecipeList().add(new ShapedMekanismRecipe(new ItemStack(ToolsItems.SteelBoots, 1), new Object[] { "I *", "* I", Character.valueOf('*'), "ingotSteel", Character.valueOf('I'), Items.iron_ingot })); } diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index a7b092aed..008503f18 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -598,6 +598,7 @@ gui.digitalMiner.missingBlock=Missing block //Recipe names recipe.mekanismShaped=Shaped +recipe.mekanismShapeless=Shapeless //Item and block tooltip text tooltip.configurator.configurate=Configurate From 0e1a08474c93525fb3218c5965197e475ac6eb4b Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Tue, 12 Jan 2016 18:48:35 -0500 Subject: [PATCH 05/21] Removed test recipe registration --- src/main/java/mekanism/common/Mekanism.java | 30 --------------------- 1 file changed, 30 deletions(-) diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 935a9aac6..4600a4b3d 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -90,7 +90,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.biome.BiomeGenBase; @@ -1244,35 +1243,6 @@ public class Mekanism //Integrate with Waila FMLInterModComms.sendMessage("Waila", "register", "mekanism.common.integration.WailaDataProvider.register"); - - NBTTagCompound compound = new NBTTagCompound(); - compound.setTag("result", MekanismItems.EnergyTablet.getUnchargedItem().writeToNBT(new NBTTagCompound())); - - NBTTagList input = new NBTTagList(); - - NBTTagCompound com0 = new NBTTagCompound(); - com0.setString("pattern", "CS"); - input.appendTag(com0); - - NBTTagCompound com5 = new NBTTagCompound(); - com5.setString("character", "C"); - input.appendTag(com5); - - NBTTagCompound com1 = new NBTTagCompound(); - com1.setTag("itemstack", new ItemStack(Blocks.cobblestone).writeToNBT(new NBTTagCompound())); - input.appendTag(com1); - - NBTTagCompound com4 = new NBTTagCompound(); - com4.setString("character", "S"); - input.appendTag(com4); - - NBTTagCompound com2 = new NBTTagCompound(); - com2.setTag("itemstack", new ItemStack(Blocks.stone).writeToNBT(new NBTTagCompound())); - input.appendTag(com2); - - compound.setTag("input", input); - - FMLInterModComms.sendMessage("Mekanism", "ShapedMekanismRecipe", compound); //Integrate with OpenComputers if(Loader.isModLoaded("OpenComputers")) From 0961b7e042966faedaf05a1c0d3ee679931f74f5 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Tue, 12 Jan 2016 19:07:29 -0500 Subject: [PATCH 06/21] Reactors now scale steam and water tank capacity to injection rate --- .../generators/common/FusionReactor.java | 16 +++++++++++++++- .../reactor/TileEntityReactorController.java | 7 ++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/mekanism/generators/common/FusionReactor.java b/src/main/java/mekanism/generators/common/FusionReactor.java index 4a247485b..4f05034cc 100644 --- a/src/main/java/mekanism/generators/common/FusionReactor.java +++ b/src/main/java/mekanism/generators/common/FusionReactor.java @@ -25,7 +25,6 @@ import mekanism.generators.common.item.ItemHohlraum; import mekanism.generators.common.tile.reactor.TileEntityReactorController; import net.minecraft.block.Block; import net.minecraft.entity.Entity; -import net.minecraft.item.ItemCoal; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -492,6 +491,21 @@ public class FusionReactor implements IFusionReactor public void setInjectionRate(int rate) { injectionRate = rate; + + int capRate = Math.max(1, rate); + + controller.waterTank.setCapacity(TileEntityReactorController.MAX_WATER*capRate); + controller.steamTank.setCapacity(TileEntityReactorController.MAX_STEAM*capRate); + + if(controller.waterTank.getFluid() != null) + { + controller.waterTank.getFluid().amount = Math.min(controller.waterTank.getFluid().amount, controller.waterTank.getCapacity()); + } + + if(controller.steamTank.getFluid() != null) + { + controller.steamTank.getFluid().amount = Math.min(controller.steamTank.getFluid().amount, controller.steamTank.getCapacity()); + } } @Override diff --git a/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorController.java b/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorController.java index 43d191c79..df5d6745d 100644 --- a/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorController.java +++ b/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorController.java @@ -35,11 +35,12 @@ import cpw.mods.fml.relauncher.SideOnly; public class TileEntityReactorController extends TileEntityReactorBlock implements IActiveState, IHasSound, ISoundSource { public static final int MAX_WATER = 100 * FluidContainerRegistry.BUCKET_VOLUME; + public static final int MAX_STEAM = MAX_WATER * 1000; public static final int MAX_FUEL = 1 * FluidContainerRegistry.BUCKET_VOLUME; public FluidTank waterTank = new FluidTank(MAX_WATER); - public FluidTank steamTank = new FluidTank(MAX_WATER*1000); + public FluidTank steamTank = new FluidTank(MAX_STEAM); public GasTank deuteriumTank = new GasTank(MAX_FUEL); public GasTank tritiumTank = new GasTank(MAX_FUEL); @@ -217,7 +218,9 @@ public class TileEntityReactorController extends TileEntityReactorBlock implemen data.add(fuelTank.getStored()); data.add(deuteriumTank.getStored()); data.add(tritiumTank.getStored()); + data.add(waterTank.getCapacity()); data.add(waterTank.getFluidAmount()); + data.add(steamTank.getCapacity()); data.add(steamTank.getFluidAmount()); } @@ -272,7 +275,9 @@ public class TileEntityReactorController extends TileEntityReactorBlock implemen fuelTank.setGas(new GasStack(GasRegistry.getGas("fusionFuelDT"), dataStream.readInt())); deuteriumTank.setGas(new GasStack(GasRegistry.getGas("deuterium"), dataStream.readInt())); tritiumTank.setGas(new GasStack(GasRegistry.getGas("tritium"), dataStream.readInt())); + waterTank.setCapacity(dataStream.readInt()); waterTank.setFluid(new FluidStack(FluidRegistry.getFluid("water"), dataStream.readInt())); + steamTank.setCapacity(dataStream.readInt()); steamTank.setFluid(new FluidStack(FluidRegistry.getFluid("steam"), dataStream.readInt())); } else if(getReactor() != null) From a8efb3b0deba006513c03b90e67412b965692e6a Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Wed, 13 Jan 2016 00:10:13 -0500 Subject: [PATCH 07/21] Better Solar Evaporation Plant algorithm- much less CPU intensive and fixes all the weird building bugs --- .../recipe/machines/BasicMachineRecipe.java | 2 - .../TileEntitySolarEvaporationController.java | 147 ++++++------------ 2 files changed, 51 insertions(+), 98 deletions(-) diff --git a/src/main/java/mekanism/common/recipe/machines/BasicMachineRecipe.java b/src/main/java/mekanism/common/recipe/machines/BasicMachineRecipe.java index 47ce58801..3c3d8ed25 100644 --- a/src/main/java/mekanism/common/recipe/machines/BasicMachineRecipe.java +++ b/src/main/java/mekanism/common/recipe/machines/BasicMachineRecipe.java @@ -28,7 +28,5 @@ public abstract class BasicMachineRecipe 18 || middle != height-2) + if(height < 3 || height > 18) { height = 0; return false; } - structured = scanTopLayer(startPoint); - height = structured ? height : 0; + structured = true; markDirty(); - return structured; + return true; } public boolean scanTopLayer(Coord4D current) { - ForgeDirection left = MekanismUtils.getLeft(facing); + ForgeDirection right = MekanismUtils.getRight(facing); ForgeDirection back = MekanismUtils.getBack(facing); for(int x = 0; x < 4; x++) { for(int z = 0; z < 4; z++) { - Coord4D pointer = current.getFromSide(left, x).getFromSide(back, z); + Coord4D pointer = current.getFromSide(right, x).getFromSide(back, z); + TileEntity pointerTile = pointer.getTileEntity(worldObj); int corner = getCorner(x, z); @@ -432,7 +435,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora { continue; } - else if(!addTankPart(pointer.getTileEntity(worldObj))) + else if(pointer.getFromSide(ForgeDirection.UP).getTileEntity(worldObj) instanceof TileEntitySolarEvaporationBlock || !addTankPart(pointerTile)) { return false; } @@ -446,9 +449,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora } } else { - TileEntity pointerTile = pointer.getTileEntity(worldObj); - - if(!addTankPart(pointerTile)) + if(pointer.getFromSide(ForgeDirection.UP).getTileEntity(worldObj) instanceof TileEntitySolarEvaporationBlock || !addTankPart(pointerTile)) { return false; } @@ -487,103 +488,57 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora return -1; } - public boolean scanMiddleLayer(Coord4D current) + public boolean scanLowerLayer(Coord4D current) { - ForgeDirection left = MekanismUtils.getLeft(facing); + ForgeDirection right = MekanismUtils.getRight(facing); ForgeDirection back = MekanismUtils.getBack(facing); + + boolean foundCenter = false; for(int x = 0; x < 4; x++) { for(int z = 0; z < 4; z++) { - Coord4D pointer = current.getFromSide(left, x).getFromSide(back, z); + Coord4D pointer = current.getFromSide(right, x).getFromSide(back, z); + TileEntity pointerTile = pointer.getTileEntity(worldObj); if((x == 1 || x == 2) && (z == 1 || z == 2)) { - if(!pointer.isAirBlock(worldObj)) + if(pointerTile instanceof TileEntitySolarEvaporationBlock) { - return false; + if(!foundCenter) + { + if(x == 1 && z == 1) + { + foundCenter = true; + } + else { + height = -1; + return false; + } + } + } + else { + if(foundCenter || !pointer.isAirBlock(worldObj)) + { + height = -1; + return false; + } } } else { - TileEntity pointerTile = pointer.getTileEntity(worldObj); - if(!addTankPart(pointerTile)) { + height = -1; return false; } } } } - return true; - } - - public boolean scanBottomLayer() - { - height = 1; - Coord4D baseBlock = Coord4D.get(this); + height++; - while(baseBlock.getFromSide(ForgeDirection.DOWN).getTileEntity(worldObj) instanceof TileEntitySolarEvaporationBlock) - { - baseBlock.step(ForgeDirection.DOWN); - height++; - } - - ForgeDirection left = MekanismUtils.getLeft(facing); - ForgeDirection right = MekanismUtils.getRight(facing); - - if(!scanBottomRow(baseBlock)) - { - return false; - }; - - if(!scanBottomRow(baseBlock.getFromSide(left))) - { - return false; - }; - - if(!scanBottomRow(baseBlock.getFromSide(right))) - { - return false; - }; - - boolean twoLeft = scanBottomRow(baseBlock.getFromSide(left).getFromSide(left)); - boolean twoRight = scanBottomRow(baseBlock.getFromSide(right).getFromSide(right)); - - if(twoLeft == twoRight) - { - return false; - } - - isLeftOnFace = twoRight; - - return true; - } - - /** - * Scans the bottom row of this multiblock, going in a line across the base. - * @param start - * @return - */ - public boolean scanBottomRow(Coord4D start) - { - ForgeDirection back = MekanismUtils.getBack(facing); - Coord4D current = start; - - for(int i = 1; i <= 4; i++) - { - TileEntity tile = current.getTileEntity(worldObj); - - if(!addTankPart(tile)) - { - return false; - } - - current = current.getFromSide(back); - } - - return true; + return !foundCenter; } public boolean addTankPart(TileEntity tile) @@ -806,7 +761,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora @Override public boolean renderUpdate() { - return false; + return true; } @Override From e950c645e78d5ca86796c81dda0b78f1c1b3893f Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Wed, 13 Jan 2016 10:53:16 -0500 Subject: [PATCH 08/21] Fixed Solar Evaporation Plant memory leaks --- .../tile/TileEntitySolarEvaporationBlock.java | 34 +++++++++++++++---- .../TileEntitySolarEvaporationController.java | 15 +++++--- .../tile/TileEntitySolarEvaporationValve.java | 27 ++++++++++----- 3 files changed, 56 insertions(+), 20 deletions(-) diff --git a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationBlock.java b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationBlock.java index 8576fccff..66f86774a 100644 --- a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationBlock.java +++ b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationBlock.java @@ -4,14 +4,14 @@ import java.util.HashSet; import java.util.Set; import mekanism.api.Coord4D; - import net.minecraft.block.Block; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; public class TileEntitySolarEvaporationBlock extends TileEntityContainerBlock { - public TileEntitySolarEvaporationController master; + public Coord4D master; public boolean attempted; @@ -40,7 +40,7 @@ public class TileEntitySolarEvaporationBlock extends TileEntityContainerBlock attempted = false; } - public void addToStructure(TileEntitySolarEvaporationController controller) + public void addToStructure(Coord4D controller) { master = controller; } @@ -57,7 +57,12 @@ public class TileEntitySolarEvaporationBlock extends TileEntityContainerBlock if(master != null) { - master.refresh(); + TileEntitySolarEvaporationController tile = getController(); + + if(tile != null) + { + ((TileEntitySolarEvaporationController)tile).refresh(); + } } } @@ -68,9 +73,11 @@ public class TileEntitySolarEvaporationBlock extends TileEntityContainerBlock if(!worldObj.isRemote) { - if(master != null) + TileEntitySolarEvaporationController tile = getController(); + + if(tile != null) { - master.refresh(); + ((TileEntitySolarEvaporationController)tile).refresh(); } else { updateController(); @@ -91,6 +98,21 @@ public class TileEntitySolarEvaporationBlock extends TileEntityContainerBlock } } + public TileEntitySolarEvaporationController getController() + { + if(master != null) + { + TileEntity tile = master.getTileEntity(worldObj); + + if(tile instanceof TileEntitySolarEvaporationController) + { + return (TileEntitySolarEvaporationController)tile; + } + } + + return null; + } + public class ControllerFinder { public TileEntitySolarEvaporationController found; diff --git a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java index cfadaef4a..3e46ee8c1 100644 --- a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java +++ b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationController.java @@ -43,7 +43,7 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora public FluidTank inputTank = new FluidTank(0); public FluidTank outputTank = new FluidTank(MAX_OUTPUT); - public Set tankParts = new HashSet(); + public Set tankParts = new HashSet(); public ISalinationSolar[] solars = new ISalinationSolar[4]; public boolean temperatureSet = false; @@ -547,8 +547,8 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora { if(tile != this) { - ((TileEntitySolarEvaporationBlock)tile).addToStructure(this); - tankParts.add((TileEntitySolarEvaporationBlock)tile); + ((TileEntitySolarEvaporationBlock)tile).addToStructure(Coord4D.get(this)); + tankParts.add(Coord4D.get(tile)); } return true; @@ -730,9 +730,14 @@ public class TileEntitySolarEvaporationController extends TileEntitySolarEvapora public void clearStructure() { - for(TileEntitySolarEvaporationBlock tankPart : tankParts) + for(Coord4D tankPart : tankParts) { - tankPart.controllerGone(); + TileEntity tile = tankPart.getTileEntity(worldObj); + + if(tile instanceof TileEntitySolarEvaporationBlock) + { + ((TileEntitySolarEvaporationBlock)tile).controllerGone(); + } } tankParts.clear(); diff --git a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java index eb4ecc107..f21abc989 100644 --- a/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java +++ b/src/main/java/mekanism/common/tile/TileEntitySolarEvaporationValve.java @@ -39,15 +39,18 @@ public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationB @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { - return master == null ? 0 : master.inputTank.fill(resource, doFill); + TileEntitySolarEvaporationController controller = getController(); + return controller == null ? 0 : controller.inputTank.fill(resource, doFill); } @Override public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { - if(master != null && (resource == null || resource.isFluidEqual(master.outputTank.getFluid()))) + TileEntitySolarEvaporationController controller = getController(); + + if(controller != null && (resource == null || resource.isFluidEqual(controller.outputTank.getFluid()))) { - return master.outputTank.drain(resource.amount, doDrain); + return controller.outputTank.drain(resource.amount, doDrain); } return null; @@ -56,9 +59,11 @@ public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationB @Override public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { - if(master != null) + TileEntitySolarEvaporationController controller = getController(); + + if(controller != null) { - return master.outputTank.drain(maxDrain, doDrain); + return controller.outputTank.drain(maxDrain, doDrain); } return null; @@ -67,23 +72,27 @@ public class TileEntitySolarEvaporationValve extends TileEntitySolarEvaporationB @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return master != null && master.hasRecipe(fluid); + TileEntitySolarEvaporationController controller = getController(); + return controller != null && controller.hasRecipe(fluid); } @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { - return master != null && master.outputTank.getFluidAmount() > 0; + TileEntitySolarEvaporationController controller = getController(); + return controller != null && controller.outputTank.getFluidAmount() > 0; } @Override public FluidTankInfo[] getTankInfo(ForgeDirection from) { - if(master == null) + TileEntitySolarEvaporationController controller = getController(); + + if(controller == null) { return PipeUtils.EMPTY; } - return new FluidTankInfo[] {new FluidTankInfo(master.inputTank), new FluidTankInfo(master.outputTank)}; + return new FluidTankInfo[] {new FluidTankInfo(controller.inputTank), new FluidTankInfo(controller.outputTank)}; } } From 0efbd28c8fe51efce093694b471585d19731a13c Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Wed, 13 Jan 2016 16:08:14 -0500 Subject: [PATCH 09/21] Updated Box Blacklist parser to be more intuitive --- src/main/java/mekanism/common/BoxBlacklistParser.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/mekanism/common/BoxBlacklistParser.java b/src/main/java/mekanism/common/BoxBlacklistParser.java index 0b1772fb7..d83fca4fa 100644 --- a/src/main/java/mekanism/common/BoxBlacklistParser.java +++ b/src/main/java/mekanism/common/BoxBlacklistParser.java @@ -65,15 +65,15 @@ public final class BoxBlacklistParser continue; } - String[] split = readingLine.split(":"); + String[] split = readingLine.split(" "); - if(split.length < 2 || split.length > 3 || !isInteger(split[split.length-1])) + if(split.length != 2 || !isInteger(split[split.length-1])) { Mekanism.logger.error("BoxBlacklist.txt: Couldn't parse blacklist data on line " + line); continue; } - String blockName = (split.length == 2) ? split[0].trim() : split[0].trim() + ":" + split[1].trim(); + String blockName = split[0].trim(); Block block = Block.getBlockFromName(blockName); @@ -99,10 +99,10 @@ public final class BoxBlacklistParser writer.append("# Use this file to tell Mekanism which blocks should not be picked up by a cardboard box."); writer.newLine(); - writer.append("# Proper syntax is \"NAME:META\". Example (for stone):"); + writer.append("# Proper syntax is \"NAME META\". Example (for stone):"); writer.newLine(); - writer.append("# stone:0"); + writer.append("# minecraft:stone 0"); writer.flush(); writer.close(); From c03c7e0f7a40d85efd56712d642b8ec49e77bc18 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Wed, 13 Jan 2016 16:21:08 -0500 Subject: [PATCH 10/21] Fixed Reactor Port not accepting items --- src/main/java/mekanism/common/util/TransporterUtils.java | 5 +++++ .../common/tile/reactor/TileEntityReactorPort.java | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/main/java/mekanism/common/util/TransporterUtils.java b/src/main/java/mekanism/common/util/TransporterUtils.java index 25c7fb1ce..40591cc96 100644 --- a/src/main/java/mekanism/common/util/TransporterUtils.java +++ b/src/main/java/mekanism/common/util/TransporterUtils.java @@ -55,19 +55,24 @@ public final class TransporterUtils public static boolean isValidAcceptorOnSide(TileEntity tile, ForgeDirection side) { if(tile instanceof ITransmitterTile || !(tile instanceof IInventory)) + { return false; + } IInventory inventory = (IInventory)tile; if(inventory.getSizeInventory() > 0) { if(!(inventory instanceof ISidedInventory)) + { return true; + } int[] slots = ((ISidedInventory)inventory).getAccessibleSlotsFromSide(side.getOpposite().ordinal()); return (slots != null && slots.length > 0); } + return false; } diff --git a/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorPort.java b/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorPort.java index fde17a63d..08d5e3468 100644 --- a/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorPort.java +++ b/src/main/java/mekanism/generators/common/tile/reactor/TileEntityReactorPort.java @@ -309,6 +309,12 @@ public class TileEntityReactorPort extends TileEntityReactorBlock implements IFl { return getReactor() != null && getReactor().isFormed() ? getReactor().getInventory()[slotID] : null; } + + @Override + public int getSizeInventory() + { + return getReactor() != null && getReactor().isFormed() ? 1 : 0; + } @Override public void setInventorySlotContents(int slotID, ItemStack itemstack) From 3f158d26daee12f9b1812985c6b9103afd4ed536 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Wed, 13 Jan 2016 17:00:25 -0500 Subject: [PATCH 11/21] Fixed cable crash --- .../mekanism/common/multipart/PartUniversalCable.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/mekanism/common/multipart/PartUniversalCable.java b/src/main/java/mekanism/common/multipart/PartUniversalCable.java index 7d49be3ef..648fa3118 100644 --- a/src/main/java/mekanism/common/multipart/PartUniversalCable.java +++ b/src/main/java/mekanism/common/multipart/PartUniversalCable.java @@ -295,14 +295,14 @@ public class PartUniversalCable extends PartTransmitter Date: Wed, 13 Jan 2016 18:02:47 -0500 Subject: [PATCH 12/21] Changed name of boiler to fix conflicts --- src/main/java/mekanism/common/Mekanism.java | 8 ++++---- .../common/content/boiler/BoilerManager.java | 12 ++++++------ .../common/content/boiler/BoilerSteamTank.java | 4 ++-- .../mekanism/common/content/boiler/BoilerTank.java | 6 +++--- .../common/content/boiler/BoilerUpdateProtocol.java | 8 ++++---- .../common/content/boiler/BoilerWaterTank.java | 4 ++-- ...iler.java => TileEntityThermoelectricBoiler.java} | 8 ++++---- ...Valve.java => TileEntityThermoelectricValve.java} | 4 ++-- 8 files changed, 27 insertions(+), 27 deletions(-) rename src/main/java/mekanism/common/tile/{TileEntityBoiler.java => TileEntityThermoelectricBoiler.java} (97%) rename src/main/java/mekanism/common/tile/{TileEntityBoilerValve.java => TileEntityThermoelectricValve.java} (92%) diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 4600a4b3d..543433fdb 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -71,8 +71,8 @@ import mekanism.common.recipe.inputs.ItemStackInput; import mekanism.common.recipe.machines.SmeltingRecipe; import mekanism.common.recipe.outputs.ItemStackOutput; import mekanism.common.tile.TileEntityAdvancedBoundingBlock; -import mekanism.common.tile.TileEntityBoiler; -import mekanism.common.tile.TileEntityBoilerValve; +import mekanism.common.tile.TileEntityThermoelectricBoiler; +import mekanism.common.tile.TileEntityThermoelectricValve; import mekanism.common.tile.TileEntityBoundingBlock; import mekanism.common.tile.TileEntityCardboardBox; import mekanism.common.tile.TileEntityElectricBlock; @@ -1061,8 +1061,8 @@ public class Mekanism GameRegistry.registerTileEntity(TileEntitySolarEvaporationValve.class, "SalinationValve"); GameRegistry.registerTileEntity(TileEntitySolarEvaporationBlock.class, "SalinationTank"); GameRegistry.registerTileEntity(TileEntityEntangledBlock.class, "EntangledBlock"); - GameRegistry.registerTileEntity(TileEntityBoiler.class, "SteamBoiler"); - GameRegistry.registerTileEntity(TileEntityBoilerValve.class, "BoilerValve"); + GameRegistry.registerTileEntity(TileEntityThermoelectricBoiler.class, "ThermoelectricBoiler"); + GameRegistry.registerTileEntity(TileEntityThermoelectricValve.class, "ThermoelectricValve"); //Load tile entities that have special renderers. proxy.registerSpecialTileEntities(); diff --git a/src/main/java/mekanism/common/content/boiler/BoilerManager.java b/src/main/java/mekanism/common/content/boiler/BoilerManager.java index efef8421d..c30fbbf71 100644 --- a/src/main/java/mekanism/common/content/boiler/BoilerManager.java +++ b/src/main/java/mekanism/common/content/boiler/BoilerManager.java @@ -8,7 +8,7 @@ import java.util.Map; import mekanism.api.Coord4D; import mekanism.common.multiblock.MultiblockCache; import mekanism.common.multiblock.MultiblockManager; -import mekanism.common.tile.TileEntityBoiler; +import mekanism.common.tile.TileEntityThermoelectricBoiler; import mekanism.common.tile.TileEntityMultiblock; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -32,7 +32,7 @@ public class BoilerManager extends MultiblockManager { int inventoryID = entry.getKey(); - HashSet boilers = new HashSet(); + HashSet boilers = new HashSet(); for(Coord4D obj : entry.getValue().locations) { @@ -49,10 +49,10 @@ public class BoilerManager extends MultiblockManager tilesToKill.get(inventoryID).add(obj); } - else if(tileEntity instanceof TileEntityBoiler) + else if(tileEntity instanceof TileEntityThermoelectricBoiler) { - ((TileEntityBoiler)tileEntity).simulateHeat(); - boilers.add((TileEntityBoiler) tileEntity); + ((TileEntityThermoelectricBoiler)tileEntity).simulateHeat(); + boilers.add((TileEntityThermoelectricBoiler) tileEntity); } } } @@ -66,7 +66,7 @@ public class BoilerManager extends MultiblockManager boilers.iterator().next().getSynchronizedData().applyTemperatureChange(); } - for (TileEntityBoiler boiler : boilers) + for (TileEntityThermoelectricBoiler boiler : boilers) { boiler.applyTemperatureChange(); } diff --git a/src/main/java/mekanism/common/content/boiler/BoilerSteamTank.java b/src/main/java/mekanism/common/content/boiler/BoilerSteamTank.java index a2c554440..e9bad8614 100644 --- a/src/main/java/mekanism/common/content/boiler/BoilerSteamTank.java +++ b/src/main/java/mekanism/common/content/boiler/BoilerSteamTank.java @@ -1,12 +1,12 @@ package mekanism.common.content.boiler; -import mekanism.common.tile.TileEntityBoiler; +import mekanism.common.tile.TileEntityThermoelectricBoiler; import net.minecraftforge.fluids.FluidStack; public class BoilerSteamTank extends BoilerTank { - public BoilerSteamTank(TileEntityBoiler tileEntity) + public BoilerSteamTank(TileEntityThermoelectricBoiler tileEntity) { super(tileEntity); } diff --git a/src/main/java/mekanism/common/content/boiler/BoilerTank.java b/src/main/java/mekanism/common/content/boiler/BoilerTank.java index 821e8d48a..dd0289031 100644 --- a/src/main/java/mekanism/common/content/boiler/BoilerTank.java +++ b/src/main/java/mekanism/common/content/boiler/BoilerTank.java @@ -2,7 +2,7 @@ package mekanism.common.content.boiler; import mekanism.api.Coord4D; import mekanism.common.content.boiler.SynchronizedBoilerData.ValveData; -import mekanism.common.tile.TileEntityBoiler; +import mekanism.common.tile.TileEntityThermoelectricBoiler; import mekanism.common.util.MekanismUtils; import net.minecraftforge.fluids.FluidStack; @@ -11,9 +11,9 @@ import net.minecraftforge.fluids.IFluidTank; public abstract class BoilerTank implements IFluidTank { - public TileEntityBoiler steamBoiler; + public TileEntityThermoelectricBoiler steamBoiler; - public BoilerTank(TileEntityBoiler tileEntity) + public BoilerTank(TileEntityThermoelectricBoiler tileEntity) { steamBoiler = tileEntity; } diff --git a/src/main/java/mekanism/common/content/boiler/BoilerUpdateProtocol.java b/src/main/java/mekanism/common/content/boiler/BoilerUpdateProtocol.java index 848b6b4cc..7c248cb3e 100644 --- a/src/main/java/mekanism/common/content/boiler/BoilerUpdateProtocol.java +++ b/src/main/java/mekanism/common/content/boiler/BoilerUpdateProtocol.java @@ -10,8 +10,8 @@ import mekanism.common.content.boiler.SynchronizedBoilerData.ValveData; import mekanism.common.multiblock.MultiblockCache; import mekanism.common.multiblock.MultiblockManager; import mekanism.common.multiblock.UpdateProtocol; -import mekanism.common.tile.TileEntityBoiler; -import mekanism.common.tile.TileEntityBoilerValve; +import mekanism.common.tile.TileEntityThermoelectricBoiler; +import mekanism.common.tile.TileEntityThermoelectricValve; import net.minecraft.item.ItemStack; @@ -20,7 +20,7 @@ public class BoilerUpdateProtocol extends UpdateProtocol public static final int WATER_PER_TANK = 16000; public static final int STEAM_PER_TANK = 160000; - public BoilerUpdateProtocol(TileEntityBoiler tileEntity) + public BoilerUpdateProtocol(TileEntityThermoelectricBoiler tileEntity) { super(tileEntity); } @@ -98,7 +98,7 @@ public class BoilerUpdateProtocol extends UpdateProtocol { for(Coord4D obj : structure.locations) { - if(obj.getTileEntity(pointer.getWorldObj()) instanceof TileEntityBoilerValve) + if(obj.getTileEntity(pointer.getWorldObj()) instanceof TileEntityThermoelectricValve) { ValveData data = new ValveData(); data.location = obj; diff --git a/src/main/java/mekanism/common/content/boiler/BoilerWaterTank.java b/src/main/java/mekanism/common/content/boiler/BoilerWaterTank.java index bbe231061..31e1e4ee3 100644 --- a/src/main/java/mekanism/common/content/boiler/BoilerWaterTank.java +++ b/src/main/java/mekanism/common/content/boiler/BoilerWaterTank.java @@ -1,12 +1,12 @@ package mekanism.common.content.boiler; -import mekanism.common.tile.TileEntityBoiler; +import mekanism.common.tile.TileEntityThermoelectricBoiler; import net.minecraftforge.fluids.FluidStack; public class BoilerWaterTank extends BoilerTank { - public BoilerWaterTank(TileEntityBoiler tileEntity) + public BoilerWaterTank(TileEntityThermoelectricBoiler tileEntity) { super(tileEntity); } diff --git a/src/main/java/mekanism/common/tile/TileEntityBoiler.java b/src/main/java/mekanism/common/tile/TileEntityThermoelectricBoiler.java similarity index 97% rename from src/main/java/mekanism/common/tile/TileEntityBoiler.java rename to src/main/java/mekanism/common/tile/TileEntityThermoelectricBoiler.java index c6c12ef8a..c47487be5 100644 --- a/src/main/java/mekanism/common/tile/TileEntityBoiler.java +++ b/src/main/java/mekanism/common/tile/TileEntityThermoelectricBoiler.java @@ -27,7 +27,7 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; -public class TileEntityBoiler extends TileEntityMultiblock implements IFluidContainerManager, IHeatTransfer +public class TileEntityThermoelectricBoiler extends TileEntityMultiblock implements IFluidContainerManager, IHeatTransfer { /** A client-sided and server-sided map of valves on this tank's structure, used on the client for rendering fluids. */ public Map valveViewing = new HashMap(); @@ -45,12 +45,12 @@ public class TileEntityBoiler extends TileEntityMultiblock Date: Wed, 13 Jan 2016 23:15:58 -0500 Subject: [PATCH 13/21] Fixed factory tab lighting --- .../java/mekanism/client/gui/GuiFactory.java | 4 ++-- .../mekanism/gui/elements/GuiRecipeType.png | Bin 3022 -> 3100 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/mekanism/client/gui/GuiFactory.java b/src/main/java/mekanism/client/gui/GuiFactory.java index fedb4802a..d11edd3d0 100644 --- a/src/main/java/mekanism/client/gui/GuiFactory.java +++ b/src/main/java/mekanism/client/gui/GuiFactory.java @@ -78,8 +78,6 @@ public class GuiFactory extends GuiMekanism @Override protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY) { - super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); - mc.renderEngine.bindTexture(tileEntity.tier.guiLocation); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int guiWidth = (width - xSize) / 2; @@ -129,6 +127,8 @@ public class GuiFactory extends GuiMekanism { displayGauge(8, 78, tileEntity.getScaledGasLevel(160), 5, tileEntity.gasTank.getGas()); } + + super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY); } public void displayGauge(int xPos, int yPos, int sizeX, int sizeY, GasStack gas) diff --git a/src/main/resources/assets/mekanism/gui/elements/GuiRecipeType.png b/src/main/resources/assets/mekanism/gui/elements/GuiRecipeType.png index 2f995cdc5b81bc2239147153b0293b7c68f946eb..510d16feea97fc2325fa157f93f804041cdbf266 100644 GIT binary patch delta 2235 zcmZ{jc{r4f8phvwdudceWXm!}q%0L*!4nPD)NNgp#fzH`o>=RAMj*Zo}2ef_Tc>6giqy{!sEq5)=R4whzSD2Iqp zzkuNL0AP@o=H%h8;3Q?z5P3m$Z@**kA6KIaO-0p2?>hfcP*o3)k7GhIEit2Lw(s&> zf7Y9R1HFc|0(*0ZxWm)AQti#PB$URlont0d2k&iD8~upVFsb@G(Se=vl#^|!mmN@F z&Nx38x0KI)5IYCIy1*4;zj}TqGhGTHo%2FlMwb~$xs`0Jc{_NDIHX_Al@;P+jN`5{@z$uThbzWA-T9e-Qw;2(YoeD zhjGuXQ;9A9SC@!w&jzxoCQ00L?tIN7YOJsLcI)SNs1^bwGl&>pqcAy^nVT+QDt!A3 zBd6@C1Q+LCGPd=36ZLUv^$nE-RuX1Oi>aMFpwH@YY#Awjezzm95YxX307Z6pInZQp#C{K6~|sm%GBN}cyd1@ad&%SGF)JB zY?;MeFaKgCzC|uj{)Z*3bLWwm+re)h#HZ{5>m4%sAC;}8IjiJTv<+NkN(8CwtZ*?t zHO+oh`_(jO1>eyx6Gx4^iYX?;O`??|LK<0zD2?zo+cR4vd^NDb6VfC8MTugBW5 zayJMCelmMlbfd+iRoQ(lO|2R0-Q9%5mAd|_1HKfKE7BG6f}17MAI>inUv>A9G)>Ub z2Tj%GP`f@S4tVNXE~kgb8>%B_QF32s zHE_jQ&MpmC!b{{)sRJq$64}U-9R37x(Qz`W(lPkTXj;d}->z2gZtGKFU9z@!gwr zoDtXg?-O1_nR9MD-MdwgkgQjDWse8?QQ!_B9f7iJz6`=3g|2P#O?r7*JSyT>x zJhqck`ScQv2=WDrLq#DKr>5WgFyg_pAC87_MEiDMwtj!tTfPi)ATwv0om?n;t=s0N zzawRo=(PtHuS;EpLRqGq(H&1Y*KAB)Qih&DhFoH&nb8_%n z4+Vg&J(jp*r~g9Cj@zDMVx<7Dmp^y7w^h6C_lVj4`%CNM4hAlzI;gBgO_u7EJ)QLU zdXioD{F5H^_hDELG9C&PK?SCY8TrOU zN58o=_w#DA%Eiz30rEK*G`C0O6g86&`NNQG1&XDA^d0V6ZSm>3@)Vq9(< z{Mz8FweL_q7K6aC2&K-S+1|M(mZ<&}HL})|dys_;+epa&(t250nfa=Vxx5H-M5AC7 z(>Q;>--Xk-3w7uP_5$dCEj%`sABsP^5qfSwPO*7kMjtX21-~;yu7$=exw{F(70olcj~gbq7%FS@xz1vAa<7d&o0H z`h-+eup42?Sl!o{ydV^F3t&on9eJ`eq+13d-`dk6A#vq7OVjP|E^|Iw=`t3r-0N2a8hwyB9dL zkTR;7NB<6fhQtRg!MnBT08&cQAP0E(vnJ&VvG;~~krxQTH;_E5{{S{epVmNt9Z-xK zsnB?Kek!iKTgrxn4JR`QTW_9>5-?{Az|CVkB}A(Hy&j~vtT_z>js#;8HPcwzIv;h| zKuGr{tTqByH%O+~EI8l?b}OL$3E(#o10mS~S6fKOZqf^SmwG5cNlSm_>+QUo7a<+k zZIkx<3E`QesUsG<*ze2p=;yabsgwLzq3h_dUp@uJL({AiI5l!_i2tC3za-lRnCcu{ zDHbDWhq^hJE?JT2Mvyy{cf#=c9jpXGgoZ3WF7nn43ugU4h3t75!4$&|6X|ID{tOt{ ze2$}%*e}EOoAr1tdd9qVY&K53uyx+b%kLllHy>GnuY48}w13C_CoMWkQBbkRAqu*N ztV0^$2AUv0o&VJgrJv!7qFfD;B4Tx062|}Ro!pfR1`mnZ(O7nKcKOW z4i$^9Ra0BJ8yc;~21%2p=|UR0&DbiW$#rfTQ`a`O(`{9s_5yDV_yd5l2Of}kLK+Oj z_Ok5(v`JGz71bo9J#^YYXp{DWs&KBaQ@dTpxRI}aIp=pi?|;!XK*v{_pO}_ARv`(`K_~P;r>1*Ox?C;-F2;pN*27;R!QM9q+Ux&wbylgT10KeMtdQo=mnqksdx=&F5&oys0TJd`E>GI|#kK((J)n0eU)DVBJ zYq?3pFC)I@_!%aD74f~sTqTWoFF^8{ntPr?L_-if$s_=TxZzG%&qCb(^K zdCoqnhMa4x{ z6hi)zV+ON`xsmg3L#>3I8=9NTb3f!hwJM>{)UK+QWxX9ld>D=;G@xL^4DLEuumLit zkcSMu9e;39Qv(A`lu*=Clo*MpVGd>OdF6n^am1Jntk;<}MrqIC5$=Q>n{*R}?8oOI zDUw5En2dl--Xw34!z7E+5pr%d2c?H4INKjdmEV*< zl@;X+<-BrtTbJ8*N%&OwR`^l)PWWE<8D!y-a9Q|CxFUQbT#TL7ym&1JoWQ-+)%LMCuYy_wP6ZWs zL5D3kvu*xEYtl=GNMYO54zpQqF~pph71JP#d&LoPNE~Olm7ll=btAavwoIM=mAd9q7A z>MqdgAh7QszoH+g!S^k(^Lixn-v&7J7v5PnBH45U;A;<{`?W~chj-$$p8;Grpf}uw z@Xk*pegW`m`}gsGT^YQaZZ(?^@V@H!1YqOiX7iurW^?09^uGph$@~{t0C9K{wSVD; z000M>Nklv0Rlw? zE^lvdH=m!M#s0pcKIr&G&P1UE2!H%o;7=S8|MQlZ;(z!^FmG>fl0XSyWfGVua5?e# z?BS&nOSV!Q2@n`9@I3-(_TKGw&Fsmq4-XHUo12^L@i8)x9I`|<5~w23N&rz~bl@q| z)6-M7b9XQNO{vSV1PDwMDEbzl8(P}=)A{axmI)B3BXBSR=vMpw{@z{HT7SO2zHTiK zE$Hw=GS(BAPavBBqVsRJ+iY~P&zK|-@A)NxETxSEstXLh1?YDEkB^T{`qxAn3F6o& zq1iXR@R!av+r1JXP*-3u0d&K-y1M$eDxLqga^#GTKN8Ar1S$xOP5|eOMG`otrm_f} zE-*_1h;aL^2lTBw{nQ*ufPcU-f!Pv3-zcDO-LVs}odAK;1!hYC5pvq$)A`d+$B_gG z{6rvo8}KIu9oyH}e2)p)PN2TP=n+8N0&J#qzFFs$0D<)h42}Te!#(L|0fuh*=kl00RpoN zWD|hSKYRNKfIv}!!G8phcK&p}Xfz5ZK%lBXZvxQatG0p42+StXn*iM7pRGMqOrWYj zZvu!2(j<`1SB*|(1PBxr7)$_BtBzmPUf~307sw`nh)xoiy^RDwpqRkX1Q0d%T@>tF zS1d{e6ChATU{nI=8wK>OD-xkX2@ohIFe(8=?P-Tk=Zi(AV1EJxiVKYXI&egy;}>ra z6%eQ@FnR<~H7b=6AW%i1H3Hb}c9ScO=L*K7#Y_YUEMK6N03zJzz*DApsHo=(P7!o0 zfqDYo0@Sls6M@AE9Ekx1ea2@R= zN&-a$B!D8U3MH@(0SRCo?IcP9MFb>(BCHA}unqwUU>)rwN&-a$M%@L7I{-ts0gFVX zPyz(12n;5GxUZjn7NC0@u!(NJ-}@j?gW;9H$^-@zKroy~lLT_- Date: Sat, 16 Jan 2016 11:29:37 -0500 Subject: [PATCH 14/21] Fixed Metallurgic Infuser slots, added new helper UpdateProtocol methods --- .../container/ContainerMetallurgicInfuser.java | 4 ++-- .../mekanism/common/multiblock/UpdateProtocol.java | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java b/src/main/java/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java index 141abba2d..036d745c9 100644 --- a/src/main/java/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java +++ b/src/main/java/mekanism/common/inventory/container/ContainerMetallurgicInfuser.java @@ -75,7 +75,7 @@ public class ContainerMetallurgicInfuser extends Container { if(InfuseRegistry.getObject(slotStack) != null && (tileEntity.infuseStored.type == null || tileEntity.infuseStored.type == InfuseRegistry.getObject(slotStack).type)) { - if(!mergeItemStack(slotStack, 1, 2, false)) + if(!mergeItemStack(slotStack, 0, 1, false)) { return null; } @@ -89,7 +89,7 @@ public class ContainerMetallurgicInfuser extends Container } else if(isInputItem(slotStack)) { - if(!mergeItemStack(slotStack, 2, 3, false)) + if(!mergeItemStack(slotStack, 1, 2, false)) { return null; } diff --git a/src/main/java/mekanism/common/multiblock/UpdateProtocol.java b/src/main/java/mekanism/common/multiblock/UpdateProtocol.java index d1587b67d..55ef70374 100644 --- a/src/main/java/mekanism/common/multiblock/UpdateProtocol.java +++ b/src/main/java/mekanism/common/multiblock/UpdateProtocol.java @@ -200,13 +200,17 @@ public abstract class UpdateProtocol> if(structure.locations.contains(Coord4D.get(pointer)) && isCorrectCorner(Coord4D.get(tile), origX+xmin, origY+ymin, origZ+zmin)) { - structureFound = structure; - return; + if(isInteriorValid(structure)) + { + structureFound = structure; + return; + } } } } } + innerNodes.clear(); iteratedNodes.add(tile); for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) @@ -222,6 +226,11 @@ public abstract class UpdateProtocol> } } } + + public boolean isInteriorValid(T structure) + { + return true; + } public ForgeDirection getSide(Coord4D obj, int xmin, int xmax, int ymin, int ymax, int zmin, int zmax) { From cde76479abaf9942d1b21952dfdf7cbcb9fd6112 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Mon, 15 Feb 2016 18:41:23 -0500 Subject: [PATCH 15/21] Fixed Digital Miner redstone slot interaction --- .../common/inventory/container/ContainerDigitalMiner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/mekanism/common/inventory/container/ContainerDigitalMiner.java b/src/main/java/mekanism/common/inventory/container/ContainerDigitalMiner.java index 864104316..07dc5e6b8 100644 --- a/src/main/java/mekanism/common/inventory/container/ContainerDigitalMiner.java +++ b/src/main/java/mekanism/common/inventory/container/ContainerDigitalMiner.java @@ -75,14 +75,14 @@ public class ContainerDigitalMiner extends Container if(ChargeUtils.canBeDischarged(slotStack)) { - if(slotID != 27) + if(slotID > 27) { if(!mergeItemStack(slotStack, 27, 28, false)) { return null; } } - else if(slotID == 27) + else if(slotID <= 27) { if(!mergeItemStack(slotStack, 28, inventorySlots.size(), true)) { From 7e9aa46fe370ac7c56a4b4493d2cb8ae2cf21934 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Fri, 19 Feb 2016 18:09:03 -0500 Subject: [PATCH 16/21] Fixed chunk boundary acceptor interaction --- .../common/multipart/PartSidedPipe.java | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/main/java/mekanism/common/multipart/PartSidedPipe.java b/src/main/java/mekanism/common/multipart/PartSidedPipe.java index 50d940194..c15f21123 100644 --- a/src/main/java/mekanism/common/multipart/PartSidedPipe.java +++ b/src/main/java/mekanism/common/multipart/PartSidedPipe.java @@ -68,6 +68,8 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, public boolean redstonePowered = false; public boolean redstoneReactive = true; + + public boolean forceUpdate = false; public ConnectionType[] connectionTypes = {ConnectionType.NORMAL, ConnectionType.NORMAL, ConnectionType.NORMAL, ConnectionType.NORMAL, ConnectionType.NORMAL, ConnectionType.NORMAL}; public TileEntity[] cachedAcceptors = new TileEntity[6]; @@ -171,10 +173,19 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, } } - if(sendDesc && !world().isRemote) + if(!world().isRemote) { - sendDescUpdate(); - sendDesc = false; + if(forceUpdate) + { + refreshConnections(); + forceUpdate = false; + } + + if(sendDesc) + { + sendDescUpdate(); + sendDesc = false; + } } } @@ -270,6 +281,7 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, cachedAcceptors[side.ordinal()] = tileEntity; markDirtyAcceptor(side); } + return true; } } @@ -315,7 +327,15 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, { if(canConnectMutual(side)) { - TileEntity tileEntity = Coord4D.get(tile()).getFromSide(side).getTileEntity(world()); + Coord4D coord = Coord4D.get(tile()).getFromSide(side); + + if(!world().isRemote && !coord.exists(world())) + { + forceUpdate = true; + continue; + } + + TileEntity tileEntity = coord.getTileEntity(world()); if(isValidAcceptor(tileEntity, side)) { @@ -324,10 +344,12 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, cachedAcceptors[side.ordinal()] = tileEntity; markDirtyAcceptor(side); } + connections |= 1 << side.ordinal(); continue; } } + if(cachedAcceptors[side.ordinal()] != null) { cachedAcceptors[side.ordinal()] = null; @@ -596,11 +618,11 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart, redstonePowered = false; } - byte possibleTransmitters = getPossibleTransmitterConnections(); - byte possibleAcceptors = getPossibleAcceptorConnections(); - if(!world().isRemote) { + byte possibleTransmitters = getPossibleTransmitterConnections(); + byte possibleAcceptors = getPossibleAcceptorConnections(); + if((possibleTransmitters | possibleAcceptors) != getAllCurrentConnections()) { sendDesc = true; From 18a22800b404b1e8b896833d1845acc9f01e8746 Mon Sep 17 00:00:00 2001 From: LordSheogarad Date: Sun, 21 Feb 2016 08:07:09 +0500 Subject: [PATCH 17/21] Made text more readable, fix some mistakes --- .../resources/assets/mekanism/lang/ru_RU.lang | 210 +++++++++--------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/src/main/resources/assets/mekanism/lang/ru_RU.lang b/src/main/resources/assets/mekanism/lang/ru_RU.lang index a6267135c..70a277d33 100644 --- a/src/main/resources/assets/mekanism/lang/ru_RU.lang +++ b/src/main/resources/assets/mekanism/lang/ru_RU.lang @@ -1,4 +1,4 @@ -//********// +//********// //MEKANISM// //********// @@ -51,7 +51,7 @@ item.BioFuel.name=Биотопливо item.BasicControlCircuit.name=Основная схема управления item.AdvancedControlCircuit.name=Продвинутая схема управления item.EliteControlCircuit.name=Элитная схема управления -item.UltimateControlCircuit.name=Максимальная схема управления +item.UltimateControlCircuit.name=Совершенная схема управления //Gas Tank tile.GasTank.GasTank.name=Газовый баллон @@ -137,13 +137,13 @@ tile.MachineBlock3.SolarNeutronActivator.name=Активатор солнечн tile.MachineBlock3.Oredictionificator.name=Унификатор словаря руд //Plastic -tile.PlasticBlock.name=пластиковый блок -tile.SlickPlasticBlock.name=гладкий пластиковый блок -tile.GlowPlasticBlock.name=пластиковый светящийся блок -tile.ReinforcedPlasticBlock.name=укреплённый пластиковый блок -tile.RoadPlasticBlock.name=пластиковый путь +tile.PlasticBlock.name=Пластиковый блок +tile.SlickPlasticBlock.name=Пладкий пластиковый блок +tile.GlowPlasticBlock.name=Пластиковый светящийся блок +tile.ReinforcedPlasticBlock.name=Укреплённый пластиковый блок +tile.RoadPlasticBlock.name=Пластиковый путь -tile.PlasticFence.name=пластиковый забор +tile.PlasticFence.name=Пластиковый забор //Infuse types infuse.carbon=Углерод @@ -163,30 +163,30 @@ tile.OreBlock.TinOre.name=Оловянная руда item.MultipartTransmitter.BasicPressurizedTube.name=Основная герметичная труба item.MultipartTransmitter.AdvancedPressurizedTube.name=Продвинутая герметичная труба item.MultipartTransmitter.ElitePressurizedTube.name=Элитная герметичная труба -item.MultipartTransmitter.UltimatePressurizedTube.name=Максимальная герметичная труба +item.MultipartTransmitter.UltimatePressurizedTube.name=Совершенная герметичная труба item.MultipartTransmitter.BasicUniversalCable.name=Основной универсальный провод item.MultipartTransmitter.AdvancedUniversalCable.name=Продвинутый универсальный провод item.MultipartTransmitter.EliteUniversalCable.name=Элитный универсальный провод -item.MultipartTransmitter.UltimateUniversalCable.name=Максимальный универсальный провод +item.MultipartTransmitter.UltimateUniversalCable.name=Совершенный универсальный провод item.MultipartTransmitter.BasicMechanicalPipe.name=Основная механическая труба item.MultipartTransmitter.AdvancedMechanicalPipe.name=Продвинутая механическая труба item.MultipartTransmitter.EliteMechanicalPipe.name=Элитная механическая труба -item.MultipartTransmitter.UltimateMechanicalPipe.name=Максимальная механическая труба +item.MultipartTransmitter.UltimateMechanicalPipe.name=Совершенная механическая труба item.MultipartTransmitter.BasicLogisticalTransporter.name=Основной логистический транспортер item.MultipartTransmitter.AdvancedLogisticalTransporter.name=Продвинутый логистический транспортер item.MultipartTransmitter.EliteLogisticalTransporter.name=Элитный логистический транспортер -item.MultipartTransmitter.UltimateLogisticalTransporter.name=Максимальный логистический транспортер +item.MultipartTransmitter.UltimateLogisticalTransporter.name=Совершенный логистический транспортер item.MultipartTransmitter.RestrictiveTransporter.name=Ограничительный транспортер item.MultipartTransmitter.DiversionTransporter.name=Отклоняющий транспортер //Glow Panel -item.GlowPanel.name=светящийся полублок +item.GlowPanel.name=Cветящийся полублок //Energy Cubes tile.EnergyCubeBasic.name=Основной энергетический куб tile.EnergyCubeAdvanced.name=Продвинутый энергетический куб tile.EnergyCubeElite.name=Элитный энергетический куб -tile.EnergyCubeUltimate.name=Максимальный энергетический куб +tile.EnergyCubeUltimate.name=Совершенный энергетический куб tile.EnergyCubeCreative.name=Творческий энергетический куб //Factory Installers @@ -237,13 +237,13 @@ item.silverCrystal.name=Серебряный кристалл item.leadCrystal.name=Свинцовый кристалл //Dirty Dust -item.dirtyIronDust.name=Грязная железная пыль -item.dirtyGoldDust.name=Грязная золотая пыль -item.dirtyOsmiumDust.name=Грязная осмиевая пыль -item.dirtyCopperDust.name=Грязная медная пыль -item.dirtyTinDust.name=Грязная оловянная пыль -item.dirtySilverDust.name=Грязная серебряная пыль -item.dirtyLeadDust.name=Грязная свинцовая пыль +item.dirtyIronDust.name=Загрязненная железная пыль +item.dirtyGoldDust.name=Загрязненная золотая пыль +item.dirtyOsmiumDust.name=Загрязненная осмиевая пыль +item.dirtyCopperDust.name=Загрязненная медная пыль +item.dirtyTinDust.name=Загрязненная оловянная пыль +item.dirtySilverDust.name=Загрязненная серебряная пыль +item.dirtyLeadDust.name=Загрязненная свинцовая пыль //Ingots item.obsidianIngot.name=Обсидиановый слиток @@ -271,7 +271,7 @@ gas.brine=Газообразная рапа gas.deuterium=Дейтерий gas.tritium=Тритий gas.lithium=Литий -gas.fusionFuelDT=Д/т топливо +gas.fusionFuelDT=Дейтерий-тритиевое топливо gas.iron=Расплавленное железо gas.gold=Расплавленное золото @@ -310,7 +310,7 @@ fluid.heavyWater=Тяжёлая вода fluid.lithium=Жидкий литий fluid.deuterium=Жидкий дейтерий fluid.tritium=Жидкий тритий -fluid.fusionFuelDT=Жидкое д/т топливо +fluid.fusionFuelDT=Жидкое дейтерий-тритиевое топливо //OreGas names oregas.iron=Железная руда @@ -340,7 +340,7 @@ transmission.Heat=Нагрев update.consider=Подумайте о обновлении до версии update.newFeatures=Нововведения update.visit=Посетите -update.toDownload=чтобы загрузить +update.toDownload=Чтобы загрузить update.devBuild=Используется сборка разработчиков update.outdated=Используется устаревшая версия одного или нескольких модулей @@ -435,20 +435,20 @@ gui.noDelay=Без задержки gui.fuel=Топливо gui.heat=Нагрев gui.formed=Сформировано -gui.incomplete=Незавершено +gui.incomplete=Незавершенно gui.inductionMatrix=Индукционная матрица gui.matrixStats=Статистика матрицы gui.main=Главное gui.outputting=Выход -gui.dimensions=Dimensions +gui.dimensions=Измерения gui.constituents=Составляющие -gui.cells=ячейки -gui.providers=поставщики +gui.cells=Ячейки +gui.providers=Поставщики gui.structure=Структура gui.dynamicTank=Динам. резервуар -gui.visuals=Visuals +gui.visuals=Визуальные gui.noEject=Невозможно извлечь -gui.undefined=Неопределено +gui.undefined=Неопределенно gui.owner=Владелец gui.public=Общественный gui.private=Частный @@ -456,7 +456,7 @@ gui.add=Добавить gui.set=Установить gui.freq=Частота gui.security=Безопасность -gui.index=Index +gui.index=Индекс gui.producing=Производится gui.maxOutput=Макс. выход gui.storing=Накапливается @@ -466,13 +466,13 @@ gui.needed=Нужно gui.noRecipe=Нет рецепта gui.conflict=Конфликт gui.height=Высота -gui.mult=Mult +gui.mult=Мульти gui.chunk=Чанк gui.vibrating=Вибрации gui.abundancy=Избыток gui.nextItem=След. предмет gui.lastItem=Послед. предмет -gui.oreDictCompat=Compatible OreDict Key +gui.oreDictCompat=Совместимый OreDict ключ gui.toggleCooling=Переключить измерение охлаждения gui.coolingMeasurements=Активное охлаждение gui.redstoneOutputMode=Режим красного камня @@ -491,9 +491,9 @@ gui.upgrades.effect=Эффект gui.chemicalInfuser.short=Хим. зарядник gui.chemicalDissolutionChamber.short=Хим. камера растворения -gui.solarEvaporationController.short=Контроллер солнечного опресн. +gui.solarEvaporationController.short=Контроллер солнечного опреснения -gui.dictionary.noKey=Нет ключа. +gui.dictionary.noKey=Нет ключа gui.configuration=Конфигурация gui.config=Настройка @@ -509,13 +509,13 @@ gui.factory.autoSort=Авто-сортировка //Recipe types gui.factory.Smelting=Плавящая gui.factory.Enriching=Обогащающая -gui.factory.Crushing=Дроблящая +gui.factory.Crushing=Дробящая gui.factory.Compressing=Сжимающая gui.factory.Combining=Объединяющая gui.factory.Purifying=Очищающая gui.factory.Injecting=Впрыскивающая -gui.seismicReader.short=С. считыватель +gui.seismicReader.short=Сейсм. считыватель gui.seismicReader.solids=Твёрдые gui.seismicReader.fluids=Жидкости gui.seismicReader.reading=Считывание @@ -527,7 +527,7 @@ gui.oredictFilter.noKey=Нет введённых ключей gui.oredictFilter.sameKey=Одинаковый ключ gui.modIDFilter=Фильтр по ID мода -gui.modIDFilter.noID=Нет введённых ID +gui.modIDFilter.noID=Не введен ID gui.modIDFilter.sameID=Одинаковый ID gui.oredictionificatorFilter=Фильтр унификатора словаря руд @@ -564,7 +564,7 @@ gui.password.identical=Идентичный gui.password.invalid=Неправильный gui.password=Пароль -gui.logisticalSorter.default=По-умолч. +gui.logisticalSorter.default=По умолчанию gui.logisticalSorter.auto=Авто gui.logisticalSorter.roundRobin=Цикл @@ -576,7 +576,7 @@ gui.teleporter.noFrame=Нет каркаса gui.teleporter.noLink=Нет соединения gui.teleporter.exceeds=Соединений > 2 gui.teleporter.needsEnergy=Требуется энергия -gui.teleporter.noAccess=У Вас нет доступа к этому телепорту. +gui.teleporter.noAccess=У Вас нет доступа к этому телепорту gui.teleporter.noFreq=Нет частоты gui.digitalMinerConfig=Настройки цифрового шахтёра @@ -587,7 +587,7 @@ gui.digitalMiner.reset=Сброс gui.digitalMiner.silkTouch=Шёлковое касание gui.digitalMiner.pull=Собирать gui.digitalMiner.silk=Шёлк -gui.digitalMiner.toMine=To mine +gui.digitalMiner.toMine=Копать gui.digitalMiner.running=Работает gui.digitalMiner.inverse="Обратный" режим gui.digitalMiner.requireReplace=Требуется замена @@ -609,7 +609,7 @@ tooltip.configurator.viewMode=Текущий режим: %s tooltip.configurator.unauth=Этот сундук закрыт tooltip.configurator.noLink=Нет соединения tooltip.configurator.linkMsg=Связан с -tooltip.configurator.dim=измерение +tooltip.configurator.dim=Измерение tooltip.configurator.setLink=Установить соединение на блок tooltip.configurator.plenisherReset=Сбросить расчёт жидкостного снабжателя tooltip.configurator.inductionPortMode=Режим передачи индукционного порта переключен на @@ -625,14 +625,14 @@ tooltip.auth=Проверенный tooltip.locked=Закрытый tooltip.recipeType=Тип рецепта tooltip.hold=Зажмите -tooltip.forDesc=для описания -tooltip.forDetails=для деталей +tooltip.forDesc=Для описания +tooltip.forDetails=Для деталей tooltip.fireMode=Режим огня tooltip.capacity=Ёмкость tooltip.pumpRate=Скорость откачки tooltip.items=Предметы tooltip.blocks=Блоки -tooltip.universal=любые +tooltip.universal=Любые tooltip.fluids=Жидкости tooltip.gasses=Газы tooltip.capableTrans=Подходит для передачи @@ -645,13 +645,13 @@ tooltip.mode=Режим tooltip.efficiency=Эффективность tooltip.modeToggle=Режим изменён на tooltip.flowing=Текущий -tooltip.yes=да -tooltip.no=нет +tooltip.yes=Да +tooltip.no=Нет tooltip.name=Имя tooltip.blockData=Данные блока tooltip.block=Блок tooltip.meta=Метаданные -tooltip.tile=Tile +tooltip.tile=Плитка tooltip.keysFound=Ключ(и) найдены tooltip.noKey=Нет ключа tooltip.hp=Прочность @@ -663,11 +663,11 @@ tooltip.speed=Скорость tooltip.portableTank.bucketMode=Режим ведра -tooltip.disassembler.normal=обычный -tooltip.disassembler.slow=медленный -tooltip.disassembler.fast=быстрый -tooltip.disassembler.vein=жила -tooltip.disassembler.off=откл. +tooltip.disassembler.normal=Обычный +tooltip.disassembler.slow=Медленный +tooltip.disassembler.fast=Быстрый +tooltip.disassembler.vein=Жила +tooltip.disassembler.off=Откл. tooltip.filterCard.got=Получены данные фильтра из %s tooltip.filterCard.set=Введены данные фильтра типа %s @@ -676,7 +676,7 @@ tooltip.filterCard.logisticalSorter=Логистический сортиров tooltip.filterCard.digitalMiner=Цифровой шахтёр tooltip.filterCard.oredictionificator=Унификатор словаря руд -tooltip.balloon=воздушный шар +tooltip.balloon=Воздушный шар tooltip.jetpack.regular=Обычный tooltip.jetpack.hover=Зависание @@ -704,10 +704,10 @@ tooltip.LogisticalSorter=Основанный на фильтре, продви tooltip.RotaryCondensentrator=Механизм, способный конвертировать газы в !nжидкость и наоборот. tooltip.ChemicalInjectionChamber=Элитный механизм, способный перерабатывать руды в !nчетыре осколка, выступающие в качестве начальной !nстадии 400% переработки руды. tooltip.ElectrolyticSeparator=Механизм, который использует процесс !nэлектролиза для разделения газа !nна два других газа. -tooltip.PrecisionSawmill=Этот механизм используется для обработки древесины и других !nдеревянных предметов, а также !nдля получения опилков. -tooltip.ChemicalDissolutionChamber=Максимальный механизм используемый для !nхимического растворения всех примесей !nруды, оставляя необработанный расплав. -tooltip.ChemicalWasher=Максимальный механизм, который очищает необработанные !nрасплавленные руды и подготавливает их для кристаллизации. -tooltip.ChemicalCrystalizer=Максимальный механизм, который используется для кристаллизации !nочищенной расплавленной руды в кристаллы. +tooltip.PrecisionSawmill=Этот механизм используется для обработки древесины и других !nдеревянных предметов, а также !nдля получения опилок. +tooltip.ChemicalDissolutionChamber=Совершенный механизм используемый для !nхимического растворения всех примесей !nруды, оставляя необработанный расплав. +tooltip.ChemicalWasher=Совершенный механизм, который очищает необработанные !nрасплавленные руды и подготавливает их для кристаллизации. +tooltip.ChemicalCrystalizer=Совершенный механизм, который используется для кристаллизации !nочищенной расплавленной руды в кристаллы. tooltip.ChemicalOxidizer=Механизм, который окисляет !nтвёрдые материалы до газа. tooltip.ChemicalInfuser=Механизм, который производит !nновый газ, путём объединения двух других газов. tooltip.SeismicVibrator=Механизм, который использует сейсмические колебания для !nпредоставления информации о различных слоях мира. @@ -727,17 +727,17 @@ tooltip.BioGenerator=Генератор, который сжигает орга tooltip.AdvancedSolarGenerator=Продвинутый генератор, который напрямую !nпоглощает солнечные лучи с небольшой потерей, !nдля производства энергии. tooltip.WindTurbine=Генератор, который использует силу ветра !nдля производства энергии, с большей эффективностью !nна большой высоте. -tooltip.ReactorGlass=Укреплённое стекло, которое используется !nстроительстве термоядерного реактора. +tooltip.ReactorGlass=Укреплённое стекло, которое используется при !nстроительстве термоядерного реактора. tooltip.ReactorLaserFocusMatrix=Панель из реакторного стекла, которая !nспособна поглощать оптическую энергию, !nнагревая термоядерный реактор. tooltip.ReactorController=Блок управления для всего !nтермоядерного реактора. -tooltip.ReactorFrame=Укреплённый каркас, который используется в !nстроительстве термоядерного реактора. +tooltip.ReactorFrame=Укреплённый каркас, который используется при !nстроительстве термоядерного реактора. tooltip.ReactorNeutronCapturePlate=Блок, который используется как !nдля блокирования излучения термоядерного реактора, так и для !nполучения трития. -tooltip.ReactorPort=Блок укреплённого каркаса, который способен !nуправлять и передачей газа и передачей энергии !nтермоядерного реактора. +tooltip.ReactorPort=Блок укреплённого каркаса, который способен !nуправлять передачей газа и энергии !nтермоядерного реактора. tooltip.ReactorLogicAdapter=Блок, который может быть использован для !nмониторинга основных функций реактора, используя красный камень. tooltip.OsmiumOre=Крепкий минерал, который можно найти !nпочти на любой высоте в мире. Он как известно !nимеет множество применений в !nпроизводстве механизмов. -tooltip.CopperOre=Общий проводящий материал, который может быть использован !nв производстве проводов. Имеет способность выдерживать!nвысокие температуры, это делает его необходимым для !nсовременного оборудования. -tooltip.TinOre=Лёгкий, но крепкий проводящий материал, !nкоторый находится немного реже, чем медь. +tooltip.CopperOre=Общий проводящий материал, который может быть использован !nпри производстве проводов. Способность выдерживать!nвысокие температуры, делает его незаменимым в !nсовременном оборудовании. +tooltip.TinOre=Лёгкий, но крепкий проводящий материал, !nкоторый встречается немного реже, чем медь. //Side data sideData.None=Нет @@ -765,54 +765,54 @@ fluidedit.fill=Заполнять fluidedit.empty=Опустошать //Colors -color.black=Чёрный -color.darkBlue=Тёмно-синий -color.darkGreen=Тёмно-зелёный -color.darkAqua=Тёмно-голбуй -color.darkRed=Тёмно-красный +color.black=Черный +color.darkBlue=Темно-Синий +color.darkGreen=Темно-Зеленый +color.darkAqua=Темно-Голубой +color.darkRed=Темно-Красный color.purple=Фиолетовый color.orange=Оранжевый color.grey=Серый -color.darkGrey=Тёмно-серый +color.darkGrey=Темно-Серый color.indigo=Индиго -color.brightGreen=Светло-зелёный +color.brightGreen=Светло-Серый color.aqua=Голубой color.red=Красный color.pink=Розовый -color.yellow=Жёлтый +color.yellow=Желтый color.white=Белый color.brown=Коричневый -color.brightPink=Светло-розовый +color.brightPink=Светло-Розовый //Dyes -dye.black=Чёрный +dye.black=Черный dye.darkBlue=Синий dye.brown=Коричневый -dye.darkGreen=Зелёный -dye.darkAqua=Бирюзовый -dye.darkRed=Тёмно-красный +dye.darkGreen=Зеленый +dye.darkAqua=Темно-Голубой +dye.darkRed=Темно-Красный dye.purple=Фиолетовый dye.orange=Оранжевый -dye.grey=Светло-серый +dye.grey=Светло-Серый dye.darkGrey=Серый -dye.indigo=Светло-синий -dye.brightGreen=Лаймовый +dye.indigo=Светло-Голубой +dye.brightGreen=Светло-Зеленый dye.aqua=Голубой dye.red=Красный dye.brightPink=Розовый -dye.pink=Сиреневый -dye.yellow=Жёлтый +dye.pink=Пурпурный +dye.yellow=Желтый dye.white=Белый //Reactor Logic modes -reactor.disabled=Disabled -reactor.disabled.desc=Will not emit a redstone signal -reactor.ready=Ready for Ignition -reactor.ready.desc=Reactor has reached the required heat level to ignite -reactor.capacity=Heat Capacity Met -reactor.capacity.desc=The reactor's core heat capacity has been met -reactor.depleted=Insufficient Fuel -reactor.depleted.desc=The reactor has insufficient fuel to sustain a reaction +reactor.disabled=Отключен +reactor.disabled.desc=Не излучает редстоун сигнал +reactor.ready=Реактор вот-вот взорвется +reactor.ready.desc=Реактор сильно перегрелся и скоро взорвется +reactor.capacity=Перегрев +reactor.capacity.desc=Ядро реактора перегрелось +reactor.depleted=Недостаточно топлива +reactor.depleted.desc=Реактору не хватает топлива для поддержания реакции //Creative tab itemGroup.tabMekanism=Mekanism @@ -837,13 +837,13 @@ tile.Generator.BioGenerator.name=Биогенератор tile.Generator.AdvancedSolarGenerator.name=Продвинутый солнечный генератор tile.Generator.WindTurbine.name=Ветровая турбина -tile.Reactor.ReactorController.name=Реакторный контроллер -tile.Reactor.ReactorFrame.name=Реакторный каркас +tile.Reactor.ReactorController.name=Панель управления реактором +tile.Reactor.ReactorFrame.name=Каракас реактора tile.Reactor.ReactorNeutronCapturePlate.name=Пластина нейтронного захвата -tile.Reactor.ReactorPort.name=Реакторный порт -tile.Reactor.ReactorLogicAdapter.name=Реакторный логический адаптер +tile.Reactor.ReactorPort.name=Порт реактора +tile.Reactor.ReactorLogicAdapter.name=Логический адаптер реактора -tile.ReactorGlass.ReactorGlass.name=Реакторное стекло +tile.ReactorGlass.ReactorGlass.name=Стекло реактора tile.ReactorGlass.ReactorLaserFocusMatrix.name=Матрица лазерного фокуса //Gui text @@ -867,18 +867,18 @@ gui.steamProduction=Производство пара //*****// //Vanilla Paxels -item.WoodPaxel.name=Деревянный мульти-инмтрумент -item.StonePaxel.name=Каменный мульти-инмтрумент -item.IronPaxel.name=Железный мульти-инмтрумент -item.DiamondPaxel.name=Алмазный мульти-инмтрумент -item.GoldPaxel.name=Золотой мульти-инмтрумент +item.WoodPaxel.name=Деревянный мульти-инcтрумент +item.StonePaxel.name=Каменный мульти-инcтрумент +item.IronPaxel.name=Железный мульти-инcтрумент +item.DiamondPaxel.name=Алмазный мульти-инcтрумент +item.GoldPaxel.name=Золотой мульти-инcтрумент //Obsidian item.ObsidianHelmet.name=Обсидиановый шлем item.ObsidianChestplate.name=Обсидиановая кираса item.ObsidianLeggings.name=Обсидиановые поножи item.ObsidianBoots.name=Обсидиановые ботинки -item.ObsidianPaxel.name=Обсидиановый мульти-инмтрумент +item.ObsidianPaxel.name=Обсидиановый мульти-инcтрумент item.ObsidianPickaxe.name=Обсидиановая кирка item.ObsidianAxe.name=Обсидиановый топор item.ObsidianShovel.name=Обсидиановая лопата @@ -890,7 +890,7 @@ item.LazuliHelmet.name=Лазуритовый шлем item.LazuliChestplate.name=Лазуритовая кираса item.LazuliLeggings.name=Лазуритовые поножи item.LazuliBoots.name=Лазуритовые ботинки -item.LazuliPaxel.name=Лазуритовый мульти-инмтрумент +item.LazuliPaxel.name=Лазуритовый мульти-инcтрумент item.LazuliPickaxe.name=Лазуритовая кирка item.LazuliAxe.name=Лазуритовый топор item.LazuliShovel.name=Лазуритовая лопата @@ -902,7 +902,7 @@ item.OsmiumHelmet.name=Осмиевый шлем item.OsmiumChestplate.name=Осмиевая кираса item.OsmiumLeggings.name=Осмиевые поножи item.OsmiumBoots.name=Осмиевые ботинки -item.OsmiumPaxel.name=Осмиевый мульти-инмтрумент +item.OsmiumPaxel.name=Осмиевый мульти-инcтрумент item.OsmiumPickaxe.name=Осмиевая кирка item.OsmiumAxe.name=Осмиевый топор item.OsmiumShovel.name=Осмиевая лопата @@ -914,7 +914,7 @@ item.BronzeHelmet.name=Бронзовый шлем item.BronzeChestplate.name=Бронзовая кираса item.BronzeLeggings.name=Бронзовые поножи item.BronzeBoots.name=Бронзовые ботинки -item.BronzePaxel.name=Бронзовый мульти-инмтрумент +item.BronzePaxel.name=Бронзовый мульти-инcтрумент item.BronzePickaxe.name=Бронзовая кирка item.BronzeAxe.name=Бронзовый топор item.BronzeShovel.name=Бронзовая лопата @@ -926,7 +926,7 @@ item.GlowstoneHelmet.name=Шлем из светящегося камня item.GlowstoneChestplate.name=Кираса из светящегося камня item.GlowstoneLeggings.name=Поножи из светящегося камня item.GlowstoneBoots.name=Ботинки из светящегося камня -item.GlowstonePaxel.name=Мульти-инмтрумент из светящегося камня +item.GlowstonePaxel.name=Мульти-инcтрумент из светящегося камня item.GlowstonePickaxe.name=Кирка из светящегося камня item.GlowstoneAxe.name=Топор из светящегося камня item.GlowstoneShovel.name=Лопата из светящегося камня @@ -938,7 +938,7 @@ item.SteelHelmet.name=Стальной шлем item.SteelChestplate.name=Стальная кираса item.SteelLeggings.name=Стальные поножи item.SteelBoots.name=Стальные ботинки -item.SteelPaxel.name=Стальной мульти-инмтрумент +item.SteelPaxel.name=Стальной мульти-инcтрумент item.SteelPickaxe.name=Стальная кирка item.SteelAxe.name=Стальной топор item.SteelShovel.name=Стальная лопата From 693e7b5e8b5f53c90229aafaede34bd577434bac Mon Sep 17 00:00:00 2001 From: Lucas Falch Date: Sun, 21 Feb 2016 17:43:26 +0100 Subject: [PATCH 18/21] Add Danish translation Still needs some extra polishing and testing --- .../resources/assets/mekanism/lang/da_DK.lang | 917 ++++++++++++++++++ 1 file changed, 917 insertions(+) create mode 100644 src/main/resources/assets/mekanism/lang/da_DK.lang diff --git a/src/main/resources/assets/mekanism/lang/da_DK.lang b/src/main/resources/assets/mekanism/lang/da_DK.lang new file mode 100644 index 000000000..663817486 --- /dev/null +++ b/src/main/resources/assets/mekanism/lang/da_DK.lang @@ -0,0 +1,917 @@ +//********// +//MEKANISM// +//********// + +//Items +tile.ObsidianTNT.name=Obsidian TNT +item.EnrichedAlloy.name=Beriget Legering +item.ReinforcedAlloy.name=Forstærket Legering +item.AtomicAlloy.name=Kernefysisk Legering +item.EnergyTablet.name=Energi Tablet +item.SpeedUpgrade.name=Hastighedsopgradering +item.EnergyUpgrade.name=Energiopgradering +item.FilterUpgrade.name=Filtreringsopgradering +item.Robit.name=Robit +item.AtomicDisassembler.name=Entomadskiller +item.ElectricBow.name=Elektrisk Bue +item.EnrichedIron.name=Beriget Jern +item.CompressedCarbon.name=Komprimeret Kulstof +item.CompressedRedstone.name=Komprimeret Rødsten +item.CompressedDiamond.name=Komprimeret Diamant +item.CompressedObsidian.name=Komprimeret Obsidian +item.PortableTeleporter.name=Portabel Teleportør +item.TeleportationCore.name=Teleporteringskerne +item.Configurator.name=Konfiguratør +item.NetworkReader.name=Netværkslæser +item.WalkieTalkie.name=Walkie-Talkie +item.Jetpack.name=Jetpack +item.ScubaTank.name=Iltflaske +item.GasMask.name=Gasmaske +item.Dictionary.name=Ordbog +item.ElectrolyticCore.name=Elektrolysekerne +item.Sawdust.name=Savsmuld +item.Salt.name=Salt +item.BrineBucket.name=Saltlagespand +item.LithiumBucket.name=Litiumsspand +item.FreeRunners.name=Fritløbere +item.ArmoredJetpack.name=Panseret Jetpack +item.FilterCard.name=Filterkort +item.SeismicReader.name=Seismisk Aflæser +item.HDPEPellet.name=HDPE-pellets +item.HDPERod.name=HDPE-stav +item.HDPESheet.name=HDPE-plade +item.PlaStick.name=PlaStick +item.Substrate.name=Substrat +item.Flamethrower.name=Flammekaster +item.GaugeDropper.name=Gauge Dropper +item.BioFuel.name=Biobrændsel + +//Control Circuits +item.BasicControlCircuit.name=Basalt Kontrolkredsløb +item.AdvancedControlCircuit.name=Envanceret Kontrolkredsløb +item.EliteControlCircuit.name=Elite Kontrolkredsløb +item.UltimateControlCircuit.name=Ultimativt Kontrolkredsløb + +//Gas Tank +tile.GasTank.GasTank.name=Gasstank + +//Cardboard Box +tile.CardboardBox.name=Papkasse + +//Bounding Block +tile.BoundingBlock.name=Markeringsblok + +//Salt +tile.SaltBlock.name=Saltblok + +//Basic Block +tile.BasicBlock.OsmiumBlock.name=Osmiumblok +tile.BasicBlock.BronzeBlock.name=Bronzeblok +tile.BasicBlock.RefinedObsidian.name=Raffineret Obsidian +tile.BasicBlock.CharcoalBlock.name=Trækulsblok +tile.BasicBlock.RefinedGlowstone.name=Raffineretglødesten +tile.BasicBlock.SteelBlock.name=Stålblok +tile.BasicBlock.Bin.name=Papirkurv +tile.BasicBlock.TeleporterFrame.name=Teleportørramme +tile.BasicBlock.SteelCasing.name=Stål Casing +tile.BasicBlock.DynamicTank.name=Dynamisk Tank +tile.BasicBlock.DynamicGlass.name=Dynamisk Glas +tile.BasicBlock.DynamicValve.name=Dynamisk Ventil +tile.BasicBlock.CopperBlock.name=Kobberblok +tile.BasicBlock.TinBlock.name=Tinblok +tile.BasicBlock.SolarEvaporationController.name=Solfordampningscontroller +tile.BasicBlock.SolarEvaporationValve.name=Solfordampningsventil + +//Basic Block 2 (second ID iteration) +tile.BasicBlock2.SolarEvaporationBlock.name=Solfordampningsblok +tile.BasicBlock2.InductionCasing.name=Induktionskasse +tile.BasicBlock2.InductionPort.name=Induktionsport +tile.BasicBlock2.InductionCellBasic.name=Basal Induktionscelle +tile.BasicBlock2.InductionCellAdvanced.name=Envanceret Induktionscelle +tile.BasicBlock2.InductionCellElite.name=Elite Induktionscelle +tile.BasicBlock2.InductionCellUltimate.name=Ultimativ Induktionscelle +tile.BasicBlock2.InductionProviderBasic.name=Basal Induktionsprovider +tile.BasicBlock2.InductionProviderAdvanced.name=Envanceret Induktionsprovider +tile.BasicBlock2.InductionProviderElite.name=Elite Induktionsprovider +tile.BasicBlock2.InductionProviderUltimate.name=Ultimativ Induktionsprovider + +//Machine Block +tile.MachineBlock.EnrichmentChamber.name=Berigelseskammer +tile.MachineBlock.OsmiumCompressor.name=Osmiumkompressor +tile.MachineBlock.Combiner.name=Kombinerer +tile.MachineBlock.Crusher.name=Knuser +tile.MachineBlock.BasicFactory.name=Basal Fabrik +tile.MachineBlock.AdvancedFactory.name=Envanceret Fabrik +tile.MachineBlock.EliteFactory.name=Elite Fabrik +tile.MachineBlock.MetallurgicInfuser.name=Metallurgic Infuser +tile.MachineBlock.PurificationChamber.name=Rensningskammer +tile.MachineBlock.EnergizedSmelter.name=Energibaseret Smelteværk +tile.MachineBlock.Teleporter.name=Teleporter +tile.MachineBlock.ElectricPump.name=Elektrisk Pumpe +tile.MachineBlock.ElectricChest.name=Elektrisk Kiste +tile.MachineBlock.Chargepad.name=Chargepad +tile.MachineBlock.LogisticalSorter.name=Logistical Sorterer +tile.MachineBlock.DigitalMiner.name=Digital Miner + +//Machine Block 2 (second ID iteration) +tile.MachineBlock2.RotaryCondensentrator.name=Rotary Condensentrator +tile.MachineBlock2.ChemicalOxidizer.name=Kemisk Oxidationsenhed +tile.MachineBlock2.ChemicalInfuser.name=Kemisk Infuser +tile.MachineBlock2.ChemicalCombiner.name=Kemisk Kombinerer +tile.MachineBlock2.ChemicalInjectionChamber.name=Kemisk Injektionskammer +tile.MachineBlock2.ElectrolyticSeparator.name=Electrolyseseparator +tile.MachineBlock2.PrecisionSawmill.name=Precisionssavmølle +tile.MachineBlock2.ChemicalDissolutionChamber.name=Kemisk Opløsningskammer +tile.MachineBlock2.ChemicalWasher.name=Kemisk vasker +tile.MachineBlock2.ChemicalCrystallizer.name=Kemisk Krystalisator +tile.MachineBlock2.SeismicVibrator.name=Seismisk Vibrator +tile.MachineBlock2.PressurizedReactionChamber.name=Pressurized Reaction Chamber +tile.MachineBlock2.PressurizedReactionChamber.short.name=PRC +tile.MachineBlock2.PortableTank.name=Mobil Tank +tile.MachineBlock2.FluidicPlenisher.name=Fluidisk Plenisher +tile.MachineBlock2.Laser.name=Laser +tile.MachineBlock2.LaserAmplifier.name=Laserfortstærker +tile.MachineBlock2.LaserTractorBeam.name=Laser Traktorstråle + +//Machine Block 3 (third ID iteration) +tile.MachineBlock3.SolarNeutronActivator.name=Solar Neutron Activator +tile.MachineBlock3.Oredictionificator.name=Oredictionificator + +//Plastic +tile.PlasticBlock.name=Plastblok +tile.SlickPlasticBlock.name=Slick Plastblok +tile.GlowPlasticBlock.name=Plast Glødeblok +tile.ReinforcedPlasticBlock.name=Forstærket Plastblok +tile.RoadPlasticBlock.name=Plastvej + +tile.PlasticFence.name=Plastbarriere + +//Infuse types +infuse.carbon=Kulstof +infuse.tin=Tin +infuse.diamond=Diamant +infuse.redstone=Rødsten +infuse.fungi=Fungi +infuse.obsidian=Obsidian +infuse.bio=Biomasse + +//Ore Block +tile.OreBlock.OsmiumOre.name=Osmiummalm +tile.OreBlock.CopperOre.name=Kobbermalm +tile.OreBlock.TinOre.name=Tinmalm + +//Transmitters +item.MultipartTransmitter.PressurizedTube.name=Trykrør +item.MultipartTransmitter.BasicUniversalCable.name=Basalt Universalkabel +item.MultipartTransmitter.AdvancedUniversalCable.name=Envanceret Universalkabel +item.MultipartTransmitter.EliteUniversalCable.name=Elite Universalkabel +item.MultipartTransmitter.UltimateUniversalCable.name=Ultimativt Universalkabel +item.MultipartTransmitter.BasicMechanicalPipe.name=Basalt Mekanisk Rør +item.MultipartTransmitter.AdvancedMechanicalPipe.name=Envanceret Mekanisk Rør +item.MultipartTransmitter.EliteMechanicalPipe.name=Elite Mekanisk Rør +item.MultipartTransmitter.UltimateMechanicalPipe.name=Ultimativt Mekanisk Rør +item.MultipartTransmitter.LogisticalTransporter.name=Logistisk Transporter +item.MultipartTransmitter.RestrictiveTransporter.name=Begrænsende Transporter +item.MultipartTransmitter.DiversionTransporter.name=Enfledningstransporter + +//Glow Panel +item.GlowPanel.name=Glødepanel + +//Energy Cubes +tile.EnergyCube.Basic.name=Basal Energikube +tile.EnergyCube.Advanced.name=Envanceret Energikube +tile.EnergyCube.Elite.name=Elite Energikube +tile.EnergyCube.Ultimate.name=Ultimativ Energikube +tile.EnergyCube.Creative.name=Kreativ Energikube + +//Factory Installers +item.basicFactoryInstaller.name=Basal Fabrikinstallerer +item.advancedFactoryInstaller.name=Endvanceret Fabrikinstallerer +item.eliteFactoryInstaller.name=Elite Fabrikinstallerer + +//Dust +item.ironDust.name=Jernstøv +item.goldDust.name=Guldstøv +item.osmiumDust.name=Osmiumstøv +item.obsidianDust.name=Obsidianstøv +item.refinedobsidianDust.name=Raffineret Obsidianstøv +item.diamondDust.name=Diamantstøv +item.steelDust.name=Stålstøv +item.copperDust.name=Kobberstøv +item.tinDust.name=Tinstøv +item.silverDust.name=Sølvstøv +item.leadDust.name=Blystøv +item.sulfurDust.name=Svovlstøv +item.lithiumDust.name=Lithiumstøv + +//Clumps +item.ironClump.name=Jernklump +item.goldClump.name=Guldklump +item.osmiumClump.name=Osmiumklump +item.copperClump.name=Kobberklump +item.tinClump.name=Tinklump +item.silverClump.name=Sølvklump +item.leadClump.name=Blyklump + +//Shards +item.ironShard.name=Jernshard +item.goldShard.name=Guldshard +item.osmiumShard.name=Osmiumshard +item.copperShard.name=Kobbershard +item.tinShard.name=Tinshard +item.silverShard.name=Sølvshard +item.leadShard.name=Blyshard + +//Crystals +item.ironCrystal.name=Jernkrystal +item.goldCrystal.name=Guldkrystal +item.osmiumCrystal.name=Osmiumkrystal +item.copperCrystal.name=Kobberkrystal +item.tinCrystal.name=Tinkrystal +item.silverCrystal.name=Sølvkrystal +item.leadCrystal.name=Blykrystal + +//Dirty Dust +item.dirtyIronDust.name=Beskidt Jernstøv +item.dirtyGoldDust.name=Beskidt Guldstøv +item.dirtyOsmiumDust.name=Beskidt Osmiumstøv +item.dirtyCopperDust.name=Beskidt Kobberstøv +item.dirtyTinDust.name=Beskidt Tinstøv +item.dirtySilverDust.name=Beskidt Sølvstøv +item.dirtyLeadDust.name=Beskidt Blystøv + +//Ingots +item.obsidianIngot.name=Obsidianbarre +item.osmiumIngot.name=Osmiumbarre +item.bronzeIngot.name=Bronzebarre +item.glowstoneIngot.name=Glødestensbarre +item.steelIngot.name=Stålbarre +item.copperIngot.name=Kobberbarre +item.tinIngot.name=Tinbarre + +//Gasses +gas.hydrogen=Brint +gas.oxygen=Ilt +gas.water=Vanddamp +gas.chlorine=Klor +gas.sulfurDioxideGas=Svovldioxid +gas.sulfurTrioxideGas=Svovltrioxid +gas.sulfuricAcid=Svovlsyre +gas.hydrogenChloride=Hydrogenklorid +gas.liquidOsmium=Flydende Osmium +gas.liquidStone=Flydende Sten +gas.ethene=Ethen +gas.sodium=Natrium +gas.brine=Saltlage i Gasform +gas.deuterium=Deuterium +gas.tritium=Tritium +gas.lithium=Lithium +gas.fusionFuelDT=D-T Brændsel + +gas.iron=Jernslurry +gas.gold=Guldslurry +gas.osmium=Osmiumslurry +gas.copper=Kobberslurry +gas.tin=Tinslurry +gas.silver=Sølvslurry +gas.obsidian=Obsidianslurry +gas.lead=Blyslurry + + +gas.cleanIron=Ren Jernslurry +gas.cleanGold=Ren Guldslurry +gas.cleanOsmium=Ren Osmiumslurry +gas.cleanCopper=Ren Kobberslurry +gas.cleanTin=Ren Tinslurry +gas.cleanSilver=Ren Sølvslurry +gas.cleanObsidian=Ren Obsidianslurry +gas.cleanLead=Ren Blyslurry + +//BC Fuel Gases +gas.fuel=Fordampet Brændsel +gas.oil=Fordampet Olie + +//Fluids +fluid.hydrogen=Flydende Brint +fluid.oxygen=Flydende Ilt +fluid.chlorine=Flydende Klor +fluid.sulfurDioxideGas=Flydende Svovldioxid +fluid.sulfurTrioxideGas=Flydende Svovltrioxid +fluid.sulfuricAcid=Flydende Svovlsyre +fluid.hydrogenChloride=Flydende Hydrogenklorid +fluid.brine=Saltlage +fluid.ethene=Flydende Ethen +fluid.sodium=Flydende Natrium +fluid.heavyWater=Tungtvand +fluid.lithium=Flydende Lithium +fluid.deuterium=Flydende Deuterium +fluid.tritium=Flydende Tritium +fluid.fusionFuelDT=Flydende D-T Brændsel + +//OreGas names +oregas.iron=Jernmalm +oregas.gold=Guldmalm +oregas.osmium=Osmiummalm +oregas.copper=Kobbermalm +oregas.tin=Tinmalm +oregas.silver=Sølvmalm +oregas.obsidian=Obsidianmalm +oregas.lead=Blymalm + +//Transmission types +transmission.Energy=Energi +transmission.Fluids=Væsker +transmission.Gases=Gasser +transmission.Items=Ting +transmission.Heat=Varme + +//Update handler text +update.consider=Tænk på at opdatere til version +update.newFeatures=Nye funktioner +update.visit=Besøg +update.toDownload=til at downloade +update.devBuild=Du bruger en udviklerversion +update.outdated=Du bruger en forældet version på et eller flere moduler + +//Upgrades +upgrade.energy=Energi +upgrade.energy.desc=Øger energieffektiviteten !nog kapaciteten på maskinen. +upgrade.speed=Hastighed +upgrade.speed.desc=Øger hastigheden på maskinen. +upgrade.filter=Filter +upgrade.filter.desc=Et filter som sepererer !ntungtvand fra almindelig vand. + +//Key description text +key.mode=Ændr Itemmodus +key.armorMode=Ændr Armormodus +key.voice=Stemme + +//Entities +entity.Robit.name=Robit +entity.BabySkeleton.name=Baby Skelet + +//Config Gui +mekanism.configgui.ctgy.general=Mekanism Generelle Indstillinger +mekanism.configgui.ctgy.machines=Maskinindstillinger +mekanism.configgui.ctgy.tier=Tierindstillinger +mekanism.configgui.ctgy.usage=Brugsindstillinger +mekanism.configgui.ctgy.client=Klientindstillinger + +//Config Tooltips +mekanism.configgui.ctgy.general.tooltip=Generelle indstillinger vedr. Mekanism og alle dets moduler +mekanism.configgui.ctgy.machines.tooltip=Indstillinger vedr. aktivering og deaktivering af specifikke maskiner +mekanism.configgui.ctgy.tier.tooltip=Indstillinger vedr. Mekanism tiers og deres tilsvarende værdier +mekanism.configgui.ctgy.usage.tooltip=Indstillinger vedr. machinery og deres energiforbrug +mekanism.configgui.ctgy.client.tooltip=Klientspecifikke indstillinger vedr. Mekanism og alle dets moduler + +//Gui text +gui.removeSpeedUpgrade=Fjern hastighedsopgradering +gui.removeEnergyUpgrade=Fjern energiopgradering +gui.condensentrating=Condensentrating +gui.decondensentrating=Decondensentrating +gui.power=Strøm +gui.confirm=Bekræft +gui.open=Åbn +gui.allOK=Enlt OK +gui.none=Ingen +gui.new=Ny +gui.edit=Ændr +gui.save=Lagr +gui.output=Udgang +gui.delete=Slet +gui.status=Status +gui.autoEject=Enuto-udstød +gui.itemstack=ItemStack +gui.oredict=OreDict +gui.material=Materiale +gui.out=Ud +gui.noFluid=Ingen væske +gui.empty=Tom +gui.volume=Volume +gui.start=Start +gui.stop=Stop +gui.config=Konfig +gui.teleport=Teleportér +gui.eject=Udstød +gui.input=Input +gui.strictInput=Striks Input +gui.slots=Plads +gui.state=Tilstand +gui.on=Til +gui.off=Fra +gui.filters=Filtere +gui.filter=Filter +gui.idle=Inaktiv +gui.data=Data +gui.newFilter=Nyt Filter +gui.energy=Energi +gui.gas=Gas +gui.dumping=Udsmidning +gui.dumping_excess=Smid overflødigt ud +gui.modID=Mod ID +gui.key=Nøgle +gui.id=ID +gui.finished=Færdig +gui.well=Enlt er vel! +gui.upgrade=Opgradér +gui.infinite=Uendelig +gui.min=Min +gui.max=Maks +gui.delay=Forsinkelse +gui.noDelay=Ingen forsinkelse +gui.fuel=Brændsel +gui.heat=Varme +gui.formed=Formet +gui.incomplete=Ufuldstændig +gui.inductionMatrix=Induktionsatrice +gui.matrixStats=Matricestatistik +gui.main=Hoved +gui.outputting=Outputting +gui.dimensions=dimensioner +gui.constituents=Bestanddele +gui.cells=celler +gui.providers=providers +gui.structure=Struktur +gui.dynamicTank=Dynamisk Tank +gui.visuals=Visuelle +gui.noEject=Kan ikke udstøde +gui.undefined=Udefineret +gui.owner=Ejer +gui.public=Offentlig +gui.private=Privat +gui.add=Tilføj +gui.set=Sæt +gui.freq=Frekvens +gui.security=Sikkerhed +gui.index=Indeks + +gui.reactor.injectionRate=Injektionssats + +gui.upgrades=Opgraderinger +gui.upgrades.supported=Støttet +gui.upgrades.noSelection=Intet valgt +gui.upgrades.amount=Mængde +gui.upgrades.max=Maks +gui.upgrades.effect=Effekt + +gui.chemicalInfuser.short=C. Infuser +gui.chemicalDissolutionChamber.short=C. Opløsningskammer +gui.solarEvaporationController.short=Sol E. Kontrollør + +gui.dictionary.noKey=Ingen nøgle. + +gui.configuration=Konfiguration +gui.config=Konfig +gui.configuration.side=Sidekonfig +gui.configuration.transporter=Transportørskonfig +gui.configuration.strictInput=Striks Input + +gui.rotaryCondensentrator.toggleOperation=Byt operation + +gui.factory.secondaryEnergy=Sekundær energi +gui.factory.smelting=Smeltning +gui.factory.enriching=Berigelse +gui.factory.crushing=Knusning +gui.factory.compressing=Komprimering +gui.factory.combining=Kombinering +gui.factory.purifying=Rensning +gui.factory.injecting=Injicering +gui.factory.autoSort=Enuto-sorterer + +gui.seismicReader.short=S. Aflæser +gui.seismicReader.solids=Faste Stoffer +gui.seismicReader.fluids=Væsker +gui.seismicReader.reading=Læser + +gui.filterSelect.title=Lav Nyt Filter + +gui.oredictFilter=OreDict Filter +gui.oredictFilter.noKey=Ingen nøgle +gui.oredictFilter.sameKey=Samme nøgle + +gui.modIDFilter=Mod ID Filter +gui.modIDFilter.noID=Intet ID +gui.modIDFilter.sameID=Samme ID + +gui.oredictionificatorFilter=Oredictionificator Filter + +gui.itemFilter=Genstandsfilter +gui.itemFilter.noItem=Ingen genstand +gui.itemFilter.details=ItemStack Detaljer +gui.itemFilter.min=Min +gui.itemFilter.max=Maks + +gui.materialFilter=Materialefilter +gui.materialFilter.details=Bruger materiale af + +gui.portableTeleporter=Mobil Teleportør + +gui.robit=Robit +gui.robit.smelting=Robit Smeltning +gui.robit.inventory=Robit Inventar +gui.robit.crafting=Robit Crafting +gui.robit.greeting=Hej, jeg hedder +gui.robit.toggleFollow=Skift 'følge'-modus +gui.robit.rename=Giv nyt navn til denne Robit +gui.robit.teleport=Teleportér hjem +gui.robit.togglePickup=Skift 'saml ting op'-modus +gui.robit.following=Følger +gui.robit.dropPickup=Saml ting op +gui.robit.owner=Ejer + +gui.password.setPassword=Sæt adgangskode +gui.password.enterPassword=Skriv adgangskode +gui.password.fieldsEmpty=Felt(er) tomme +gui.password.notMatching=Matcher ikke +gui.password.identical=Idenstisk +gui.password.invalid=Ugyldig +gui.password=Endgangskode + +gui.logisticalSorter.default=Standard +gui.logisticalSorter.auto=Enuto +gui.logisticalSorter.roundRobin=Round-robin + +gui.electricChest.editPassword=Ændr Adgangskode + +gui.teleporter.notReady=Ikke klar +gui.teleporter.ready=Klar +gui.teleporter.noFrame=Ingen ramme +gui.teleporter.noLink=Ingen tilkobling +gui.teleporter.exceeds=Tilkoblinger > 2 +gui.teleporter.needsEnergy=Mangler energi +gui.teleporter.noAccess=Du har ikke adgang til denne teleportør. +gui.teleporter.noFreq=Ingen frekvens + +gui.digitalMinerConfig=Digital Miner Konfig + +gui.digitalMiner.autoPull=Enuto-træk +gui.digitalMiner.replaceBlock=Erstat blok +gui.digitalMiner.reset=Nulstil +gui.digitalMiner.silkTouch=Silk touch +gui.digitalMiner.pull=Træk +gui.digitalMiner.silk=Silk +gui.digitalMiner.toMine=Ent grave +gui.digitalMiner.running=Kører +gui.digitalMiner.inverse=Inverse modus +gui.digitalMiner.requireReplace=Kræv erstatning +gui.digitalMiner.fuzzyMode=Fuzzy modus +gui.digitalMiner.missingBlock=Manglende blok + +//Recipe names +recipe.mekanismShaped=Formet + +//Item and block tooltip text +tooltip.configurator.configurate=Konfigurér +tooltip.configurator.empty=Tom +tooltip.configurator.rotate=Rotér +tooltip.configurator.wrench=Skruenøgle +tooltip.configurator.pumpReset=Nulstil Elektrisk Pumpe udregning +tooltip.configurator.toggleDiverter=Enfledermodus ændret til +tooltip.configurator.toggleMode=%s opførsel ændret til +tooltip.configurator.viewMode=Nuværende %s opførsel +tooltip.configurator.unauth=Denne kiste er låst +tooltip.configurator.noLink=Ingen forbindelse +tooltip.configurator.linkMsg=Forbundet til +tooltip.configurator.dim=dimension +tooltip.configurator.setLink=Sæt tilkobling til blok +tooltip.configurator.plenisherReset=Nulstil Fluidisk Plenisher udregning +tooltip.configurator.inductionPortMode=Skiftet Indukstionsports overføringsmodus til + +tooltip.upgrade.speed=Hastighed +tooltip.upgrade.energy=Energi + +tooltip.inventory=Inventar +tooltip.storedEnergy=Opbevaret energi +tooltip.auth=Enutentificeret +tooltip.locked=Låst +tooltip.recipeType=Opskriftstype +tooltip.hold=Hold +tooltip.forDesc=for en beskrivelse +tooltip.forDetails=for detaljer +tooltip.fireMode=Enffyringsmodus +tooltip.capacity=Kapacitet +tooltip.pumpRate=Pumpningssats +tooltip.items=Genstande +tooltip.blocks=Blokke +tooltip.universal=universal +tooltip.fluids=Væsker +tooltip.gasses=Gasser +tooltip.capableTrans=I stand til at overføre +tooltip.restrictiveDesc=Kun brugt hvis ingen andre veje er tilgængelige +tooltip.diversionDesc=Kontrollerbar via rødsten +tooltip.noGas=Ingen gas opbevaret +tooltip.stored=Opbevaret +tooltip.channel=Kanal +tooltip.mode=Modus +tooltip.efficiency=Effektivitet +tooltip.modeToggle=Modus skiftet til +tooltip.flowing=Strømmer +tooltip.yes=ja +tooltip.no=nej +tooltip.name=Navn +tooltip.blockData=Blokdata +tooltip.block=Blok +tooltip.meta=Metadata +tooltip.tile=Tile +tooltip.keysFound=Tast(er) fundet +tooltip.noKey=Ingen tast +tooltip.hp=HP +tooltip.configureState=Konfigurér tilstand +tooltip.outputRate=Output Sats +tooltip.insufficientFuel=Utilstrækkelig Brændsel +tooltip.readyForReaction=Klar til Reaktion + +tooltip.portableTank.bucketMode=Spandmodus + +tooltip.disassembler.normal=normal +tooltip.disassembler.slow=langsom +tooltip.disassembler.fast=hurtig +tooltip.disassembler.vein=åre +tooltip.disassembler.off=fra + +tooltip.filterCard.got=Hentet filterdata fra %s +tooltip.filterCard.set=Injicerede filterdata af typen %s +tooltip.filterCard.unequal=Ulige filterdata-formater +tooltip.filterCard.logisticalSorter=Logistisk Sorterer +tooltip.filterCard.digitalMiner=Digital Miner +tooltip.filterCard.oredictionificator=Oredictionificator + +tooltip.balloon=Ballon + +tooltip.flamethrower.combat=Kamp +tooltip.flamethrower.heat=Opvarm +tooltip.flamethrower.inferno=Inferno +tooltip.flamethrower.modeBump=Flammekastermodus skubbet til + +tooltip.seismicReader.needsEnergy=Ikke nok energi til at læse vibration +tooltip.seismicReader.noVibrations=Ikke i stand til at opdage nogen vibrationer + +tooltip.EnrichmentChamber=En simpel maskine brugt til at berige malm om til !nto af deres støvmodparter, såvel som at !nudføre mange andre operationer. +tooltip.OsmiumCompressor=En nogenlunde avanceret maskine brugt til at !nkomprimere osmium om til adskillige støve for !nså at kunne lave deres barremodparter. +tooltip.Combiner=En maskine brugt til at kombinere støv og brosten !nfor at forme deres malmmodparter. +tooltip.Crusher=En maskine brugt til at knuse barrer om til deres støvmodparter, !nså vel som at udføre mange andre operationer. +tooltip.DigitalMiner=En højtavanceret, filterbaseret, auto-miner !nder kan mine hvilken som helst blok du beder den om !inden for en 32-bloks(maks)radius. +tooltip.BasicFactory=Det laveste tier i linjen af Fabrikker, !nder kan bruges til at processere forskellige !nmaskinoperationer ad gangen. +tooltip.AdvancedFactory=Det mellemste tier i linjen af Fabrikker, !nder kan bruges til at processere forskellige !nmaskinoperationer ad gangen. +tooltip.EliteFactory=The højeste tier i linjen af Fabrikker, !nder kan bruges til at processere forskellige !nmaskinoperationer ad gangen. +tooltip.MetallurgicInfuser=En maskine brugt til at infuse adskillige materialer !nom til (generalt) metaller til at lave legeringer !nog andre sammensætninger. +tooltip.PurificationChamber=En avanceret maskine i stand til at processere !nmalm om til the klumper: Bruges som det indledende !nfase i 300%-malmforarbejdning. +tooltip.EnergizedSmelter=En simpel maskine der bruges som en Mekanism-baseret !novn, der kører på energy. +tooltip.Teleporter=En maskine i stand til at teleportere spillere til forskellige !nsteder defineret af en anden teleporter. +tooltip.ElectricPump=En avanceret pumpe i stand til at pumpe !nen hele lavasø op. +tooltip.ElectricChest=En mobil kiste, med 54 pladser, der bruger energi til at låse !nsig selv fra andre vha. adgangskodebeskyttelse. +tooltip.Chargepad=En universal chargepad der kan lade !nenhver energibaseret ting fra enhver mod. +tooltip.LogisticalSorter=En filterbaseret, avanceret sorteringsmaskine, der !nautomatisk kan ustøde specifikke ting ud fra og ind i !ninventarer og Logistiske Transporters ved siden af. +tooltip.RotaryCondensentrator=En maskine i stand til at konvertere gasser om til !nderes flydende form og vice versa. +tooltip.ChemicalInjectionChamber=En elite maskine i stand til at forarbejde !nmalm om til fire shards: Bruges som det indledende !nfase i 400%-malmforarbejdning. +tooltip.ElectrolyticSeparator=En maskine, der bruger electrolyse til at !nsplitte en bestemt gas !nom til to forskellige gasser. +tooltip.PrecisionSawmill=En maskine brugt til at forarbejde logs og andre !ntræbaserede ting mere effektivt, så vel som !nat opnå savsmuld. +tooltip.ChemicalDissolutionChamber=En ultimativ maskine brugt til kemisk at !nopløse alle urenheder af malm, !nder efterlader en uforarbejdet slurry. +tooltip.ChemicalWasher=En ultimativ maskine der rengører uforarbejdet !nslurry og forbereder det krystalisering. +tooltip.ChemicalCrystallizer=En ultimativ maskine brugt til at krystalisere !nrenset malm slurry om til malmkrystaller. +tooltip.ChemicalOxidizer=En maskine i stand til at oxidere !nfast materiale ind til gasform. +tooltip.ChemicalInfuser=En maskine, der producerer en ny !ngas ved infuse til andre. +tooltip.SeismicVibrator=En maskine, der bruger seismiske vibrationer til at !ngive information om forskellige lag !ni verdenen. +tooltip.PressurizedReactionChamber=En avanceret maskine der forarbejder en !nfast, flydende og gasformig blanding og !nlaver både et gasformigt og fast produkt. +tooltip.PortableTank=En handy, mobil tank, der lader dig !nbære 14 spande væske hvorhen du !nønsker. Kan også bruges som spand! +tooltip.FluidicPlenisher=En maskine i stand til at lave hele !nsøer ved at fylde slugter med væske. +tooltip.Laser=En avanceret form for linær!nenergitransfer der udnytter en!nekstremt kollimeret lysstråle. +tooltip.LaserAmplifier=En blok that can be brugt til at merge,!nredirect and amplify laser beams,!nwith fine controls over when to fire. +tooltip.LaserTractorBeam=En blok brugt til at forene og!omdirigere laserstråler. Indsamler!ndrops fra blokke, den ødelægger. +tooltip.SolarNeutronActivator=En maskine der dirigerer neutronstrålingen !nfra solen om til sin interne reserve, hvilket tillader !nen langsom dannelse af forskelige isotoper. +tooltip.Oredictionificator=En maskine brugt til at forene og oversætte mellem forskellige ting !nog blokke vha. Ore Dictionaryen. + +tooltip.HeatGenerator=En generator der bruger lavaens varme eller !nandre brændbare ressourcer til at producere energi. +tooltip.SolarGenerator=En generator der bruger solens !nkraft til producere energi. +tooltip.GasGenerator=En generator der udnytter de molekulært !nvariende gasser til producere energi. +tooltip.BioGenerator=En generator der brænder organisk materiale i !nverdenen til producere energi. +tooltip.AdvancedSolarGenerator=En avanceret generator der direkte !nabsorberer solens stråler med lille tab !ntil at producere energi. +tooltip.WindTurbine=En generator der bruger vindens styrke !ntil at producere energi med større effektivitet !nved højere niveauer. + +tooltip.ReactorGlass=Forstærket glas, der kan bruges i !nFusionsreaktor-multiblokken. +tooltip.ReactorLaserFocusMatrix=Et panel af Reaktorglas i !nstand til at absorbere optisk energi og !nderved opvarme Fusionsreaktoren. +tooltip.ReactorController=Den kotrollerende blok til hele !nFusionsreaktorens struktur. +tooltip.ReactorFrame=Forstærket indramning, der kan bruges i !nFusionsreaktor-multiblokken. +tooltip.ReactorNeutronCapturePlate=En blok, der kan bruges til !nbåde at blokere Fusionsreaktorstråling og assistere !ni produktionen af Tritium. +tooltip.ReactorPort=En blok forstærket indramning i stand til !nat håndtere både gas- og energioverførslen !naf Fusionsreaktoren. +tooltip.ReactorLogicAdapter=En blok der kan bruges til at !ntillade basal overvågning af en reaktor vha. rødsten. + +tooltip.OsmiumOre=Et stærkt mineral der kan findes på !nenhver højde i verdenen. Den er!nkendt for at have mange anvendelser i !nthe konstruktionen af maskineri. +tooltip.CopperOre=Et almindeligt, ledende materiale der !nkan bruges i produktionen af !nledninger. Dets evne til at modstå !nhøj varme gør den også essential !ntil avanceret maskineri. +tooltip.TinOre=Et letvægts, dog stadig robust, ledende !nmateriale, der er en smule mindre !nsjælden end Kobber. + +//Side data +sideData.None=Ingen +sideData.Input=Indgang +sideData.Output=Udgang +sideData.Energy=Energi +sideData.Gas=Gas +sideData.Extra=Ekstra +sideData.Infuse=Infuse +sideData.Fluid=Væske + +//Redstone control +control.disabled=Deaktiveret +control.high=Høj +control.low=Lav +control.pulse=Puls +control.disabled.desc=Altid aktiv +control.high.desc=Aktiv med signal +control.low.desc=Aktiv uden signal +control.pulse.desc=Kun aktiv ved modtagelse af første signal + +//Container edit modes +fluidedit.both=Begge +fluidedit.fill=Fyld +fluidedit.empty=Tom + +//Colors +color.black=Sort +color.darkBlue=Mørkeblå +color.darkGreen=Mørkegrøn +color.darkAqua=Mørkeaqua +color.darkRed=Mørkerød +color.purple=Lilla +color.orange=Orange +color.grey=Grå +color.darkGrey=Mørkegrå +color.indigo=Indigo +color.brightGreen=Lysegrøn +color.aqua=Aqua +color.red=Rød +color.pink=Pink +color.yellow=Gul +color.white=Hvid +color.brown=Brun +color.brightPink=Lyserød + +//Dyes +dye.black=Sort +dye.darkBlu=Blå +dye.brown=Brun +dye.darkGreen=Grøn +dye.darkAqua=Cyan +dye.darkRed=Mørkerød +dye.purple=Lilla +dye.orange=Orange +dye.grey=Lysegrå +dye.darkGrey=Mørkegrå +dye.indigo=Lyseblå +dye.brightGreen=Lime +dye.aqua=Aqua +dye.red=Rød +dye.brightPink=Pink +dye.pink=Magenta +dye.yellow=Gul +dye.white=Hvid + +//Reactor Logic modes +reactor.disabled=Deaktiveret +reactor.disabled.desc=Vil ikke udgive et rødstenssignal +reactor.ready=Klar til at tænde +reactor.ready.desc=Reaktoren er nået det nødvendige varmeniveau til at tænde +reactor.capacity=Varmekapacitet mødt +reactor.capacity.desc=Reaktorens kernevarmekapacitet er blevet mødt +reactor.depleted=Utilstrækkelig Brændstof +reactor.depleted.desc=Reaktoren har utilstrækkelig brændstof til at vedligeholde en reaktion + +//Creative tab +itemGroup.tabMekanism=Mekanism + +//NEI stuff +nei.chemicalInjectionChamber=C. Injektionskammer +nei.rotaryCondensentrator=R. Condensentrator + +//**********// +//GENERATORS// +//**********// + +//Items +item.SolarPanel.name=Solpanel +item.Hohlraum.name=Hohlraum + +//Generators +tile.Generator.HeatGenerator.name=Varmegenerator +tile.Generator.SolarGenerator.name=Solgenerator +tile.Generator.GasGenerator.name=Gasbrændende Generator +tile.Generator.BioGenerator.name=Bio-generator +tile.Generator.AdvancedSolarGenerator.name=Avanceret Solgenerator +tile.Generator.WindTurbine.name=Vindturbine + +tile.Reactor.ReactorController.name=Reaktor-controller +tile.Reactor.ReactorFrame.name=Reaktorramme +tile.Reactor.ReactorNeutronCapturePlate.name=Neutronfanger-plade +tile.Reactor.ReactorInOutPort.name=Reaktor-port +tile.Reactor.ReactorLogicAdapter.name=Reaktorlogiks-adapter + +tile.ReactorGlass.ReactorGlass.name=Reaktorglas +tile.ReactorGlass.ReactorLaserFocusMatrix.name=Laserfokus-matrice + +//Gui text +gui.heatGenerator.fuel=Brændstof +gui.solarGenerator.sun=Sol +gui.bioGenerator.bioFuel=Bio-brændsel +gui.electrolyticSeparator.dump=Udstød + +gui.passive=Luftkølet +gui.active=Vandkølet + +gui.minInject=Min. injektionssats +gui.ignition=Tændingstemp. +gui.maxPlasma=Maks. Plasma-temp. +gui.maxCasing=Maks. Casing-temp. +gui.passiveGeneration=Passiv Generering +gui.steamProduction=Dampproduktion + +//*****// +//TOOLS// +//*****// + +//Vanilla Paxels +item.WoodPaxel.name=Træ-paxel +item.StonePaxel.name=Sten-paxel +item.IronPaxel.name=Jern-paxel +item.DiamondPaxel.name=Diamant-paxel +item.GoldPaxel.name=Guld-paxel + +//Obsidian +item.ObsidianHelmet.name=Obsidianhjelm +item.ObsidianChestplate.name=Obsidianbrystplade +item.ObsidianLeggings.name=Obsidianbukser +item.ObsidianBoots.name=Obsidianstøvler +item.ObsidianPaxel.name=Obsidian-paxel +item.ObsidianPickaxe.name=Obsidianhakke +item.ObsidianAxe.name=Obsidianøkse +item.ObsidianShovel.name=Obsidianspade +item.ObsidianHoe.name=Obsidianlugejern +item.ObsidianSword.name=Obsidiansværd + +//Lapis Lazuli +item.LazuliHelmet.name=Lapis Lazuli-hjelm +item.LazuliChestplate.name=Lapis Lazuli-brystplate +item.LazuliLeggings.name=Lapis Lazuli-bukser +item.LazuliBoots.name=Lapis Lazuli-støvler +item.LazuliPaxel.name=Lapis Lazuli-paxel +item.LazuliPickaxe.name=Lapis Lazuli-hakke +item.LazuliAxe.name=Lapis Lazuli-økse +item.LazuliShovel.name=Lapis Lazuli-spade +item.LazuliHoe.name=Lapis Lazuli-lugejern +item.LazuliSword.name=Lapis Lazuli-sværd + +//Osmium +item.OsmiumHelmet.name=Osmiumhjelm +item.OsmiumChestplate.name=Osmiumbrystplade +item.OsmiumLeggings.name=Osmiumbukser +item.OsmiumBoots.name=Osmiumstøvler +item.OsmiumPaxel.name=Osmium-paxel +item.OsmiumPickaxe.name=Osmiumhakke +item.OsmiumAxe.name=Osmiumøkse +item.OsmiumShovel.name=Osmiumspade +item.OsmiumHoe.name=Osmiumlugejern +item.OsmiumSword.name=Osmiumsværd + +//Bronze +item.BronzeHelmet.name=Bronzehjelm +item.BronzeChestplate.name=Bronzebrystplade +item.BronzeLeggings.name=Bronzebukser +item.BronzeBoots.name=Bronzestøvler +item.BronzePaxel.name=Bronze-paxel +item.BronzePickaxe.name=Bronzehakke +item.BronzeAxe.name=Bronzeøkse +item.BronzeShovel.name=Bronzespade +item.BronzeHoe.name=Bronzelugejern +item.BronzeSword.name=Bronzesværd + +//Glow +item.GlowstoneHelmet.name=Glødestenshjelm +item.GlowstoneChestplate.name=Glødestensbrystplade +item.GlowstoneLeggings.name=Glødestensbukser +item.GlowstoneBoots.name=Glødestensstøvler +item.GlowstonePaxel.name=Glødestens-paxel +item.GlowstonePickaxe.name=Glødestenshakke +item.GlowstoneAxe.name=Glødestensøkse +item.GlowstoneShovel.name=Glødestensspade +item.GlowstoneHoe.name=Glødestenslugejern +item.GlowstoneSword.name=Glødestenssværd + +//Steel +item.SteelHelmet.name=Stålhjelm +item.SteelChestplate.name=Stålbrystplade +item.SteelLeggings.name=Stålbukser +item.SteelBoots.name=Stålstøvler +item.SteelPaxel.name=Stål-paxel +item.SteelPickaxe.name=Stålhakke +item.SteelAxe.name=Ståløkse +item.SteelShovel.name=Stålspade +item.SteelHoe.name=Stållugejern +item.SteelSword.name=Stålsværd + +//Config Gui +mekanism.configgui.ctgy.tools.general=Generelt +mekanism.configgui.ctgy.tools.armor=Rustningsbalance +mekanism.configgui.ctgy.tools.tools=Værktøjsbalance + +//Config Tooltips +mekanism.configgui.ctgy.tools.general.tooltip=Indstillinger vedr. MekanismTools' generelle konfiguration. +mekanism.configgui.ctgy.tools.armor.tooltip=Indstillinger vedr. beskyttelsesværdier og balance for MekanismTools rustninger. +mekanism.configgui.ctgy.tools.tools.tooltip=Indstillinger vedr. effektivitetsværdier og balance for MekanismTools værktøj. From 3fe65bdb3a491bb9c1c468816c96f3c8a655b2fa Mon Sep 17 00:00:00 2001 From: Lucas Falch Date: Sun, 21 Feb 2016 23:07:18 +0100 Subject: [PATCH 19/21] Update Danish locale Correct mistakes and add missing translations --- .../resources/assets/mekanism/lang/da_DK.lang | 183 +++++++++++------- 1 file changed, 115 insertions(+), 68 deletions(-) diff --git a/src/main/resources/assets/mekanism/lang/da_DK.lang b/src/main/resources/assets/mekanism/lang/da_DK.lang index 663817486..1ef32add0 100644 --- a/src/main/resources/assets/mekanism/lang/da_DK.lang +++ b/src/main/resources/assets/mekanism/lang/da_DK.lang @@ -6,13 +6,14 @@ tile.ObsidianTNT.name=Obsidian TNT item.EnrichedAlloy.name=Beriget Legering item.ReinforcedAlloy.name=Forstærket Legering -item.AtomicAlloy.name=Kernefysisk Legering -item.EnergyTablet.name=Energi Tablet +item.AtomicAlloy.name=Atomar Legering +item.EnergyTablet.name=Energi-tablet item.SpeedUpgrade.name=Hastighedsopgradering item.EnergyUpgrade.name=Energiopgradering item.FilterUpgrade.name=Filtreringsopgradering +item.GasUpgrade.name=Gasopgradering item.Robit.name=Robit -item.AtomicDisassembler.name=Entomadskiller +item.AtomicDisassembler.name=Atomadskiller item.ElectricBow.name=Elektrisk Bue item.EnrichedIron.name=Beriget Jern item.CompressedCarbon.name=Komprimeret Kulstof @@ -32,12 +33,13 @@ item.ElectrolyticCore.name=Elektrolysekerne item.Sawdust.name=Savsmuld item.Salt.name=Salt item.BrineBucket.name=Saltlagespand -item.LithiumBucket.name=Litiumsspand +item.LithiumBucket.name=Lithiumsspand +item.HeavyWaterBucket.name=Tungtvandsspand item.FreeRunners.name=Fritløbere item.ArmoredJetpack.name=Panseret Jetpack item.FilterCard.name=Filterkort item.SeismicReader.name=Seismisk Aflæser -item.HDPEPellet.name=HDPE-pellets +item.HDPEPellet.name=HDPE-pellet item.HDPERod.name=HDPE-stav item.HDPESheet.name=HDPE-plade item.PlaStick.name=PlaStick @@ -48,7 +50,7 @@ item.BioFuel.name=Biobrændsel //Control Circuits item.BasicControlCircuit.name=Basalt Kontrolkredsløb -item.AdvancedControlCircuit.name=Envanceret Kontrolkredsløb +item.AdvancedControlCircuit.name=Avanceret Kontrolkredsløb item.EliteControlCircuit.name=Elite Kontrolkredsløb item.UltimateControlCircuit.name=Ultimativt Kontrolkredsløb @@ -69,11 +71,11 @@ tile.BasicBlock.OsmiumBlock.name=Osmiumblok tile.BasicBlock.BronzeBlock.name=Bronzeblok tile.BasicBlock.RefinedObsidian.name=Raffineret Obsidian tile.BasicBlock.CharcoalBlock.name=Trækulsblok -tile.BasicBlock.RefinedGlowstone.name=Raffineretglødesten +tile.BasicBlock.RefinedGlowstone.name=Raffineret Glødesten tile.BasicBlock.SteelBlock.name=Stålblok tile.BasicBlock.Bin.name=Papirkurv -tile.BasicBlock.TeleporterFrame.name=Teleportørramme -tile.BasicBlock.SteelCasing.name=Stål Casing +tile.BasicBlock.TeleporterFrame.name=Teleportørindramning +tile.BasicBlock.SteelCasing.name=Stål-casing tile.BasicBlock.DynamicTank.name=Dynamisk Tank tile.BasicBlock.DynamicGlass.name=Dynamisk Glas tile.BasicBlock.DynamicValve.name=Dynamisk Ventil @@ -84,14 +86,14 @@ tile.BasicBlock.SolarEvaporationValve.name=Solfordampningsventil //Basic Block 2 (second ID iteration) tile.BasicBlock2.SolarEvaporationBlock.name=Solfordampningsblok -tile.BasicBlock2.InductionCasing.name=Induktionskasse +tile.BasicBlock2.InductionCasing.name=Induktions-casing tile.BasicBlock2.InductionPort.name=Induktionsport tile.BasicBlock2.InductionCellBasic.name=Basal Induktionscelle -tile.BasicBlock2.InductionCellAdvanced.name=Envanceret Induktionscelle +tile.BasicBlock2.InductionCellAdvanced.name=Avanceret Induktionscelle tile.BasicBlock2.InductionCellElite.name=Elite Induktionscelle tile.BasicBlock2.InductionCellUltimate.name=Ultimativ Induktionscelle tile.BasicBlock2.InductionProviderBasic.name=Basal Induktionsprovider -tile.BasicBlock2.InductionProviderAdvanced.name=Envanceret Induktionsprovider +tile.BasicBlock2.InductionProviderAdvanced.name=Avanceret Induktionsprovider tile.BasicBlock2.InductionProviderElite.name=Elite Induktionsprovider tile.BasicBlock2.InductionProviderUltimate.name=Ultimativ Induktionsprovider @@ -100,9 +102,7 @@ tile.MachineBlock.EnrichmentChamber.name=Berigelseskammer tile.MachineBlock.OsmiumCompressor.name=Osmiumkompressor tile.MachineBlock.Combiner.name=Kombinerer tile.MachineBlock.Crusher.name=Knuser -tile.MachineBlock.BasicFactory.name=Basal Fabrik -tile.MachineBlock.AdvancedFactory.name=Envanceret Fabrik -tile.MachineBlock.EliteFactory.name=Elite Fabrik +tile.MachineBlock.Factory.name=Fabrik tile.MachineBlock.MetallurgicInfuser.name=Metallurgic Infuser tile.MachineBlock.PurificationChamber.name=Rensningskammer tile.MachineBlock.EnergizedSmelter.name=Energibaseret Smelteværk @@ -119,7 +119,7 @@ tile.MachineBlock2.ChemicalOxidizer.name=Kemisk Oxidationsenhed tile.MachineBlock2.ChemicalInfuser.name=Kemisk Infuser tile.MachineBlock2.ChemicalCombiner.name=Kemisk Kombinerer tile.MachineBlock2.ChemicalInjectionChamber.name=Kemisk Injektionskammer -tile.MachineBlock2.ElectrolyticSeparator.name=Electrolyseseparator +tile.MachineBlock2.ElectrolyticSeparator.name=Elektrolytisk Separator tile.MachineBlock2.PrecisionSawmill.name=Precisionssavmølle tile.MachineBlock2.ChemicalDissolutionChamber.name=Kemisk Opløsningskammer tile.MachineBlock2.ChemicalWasher.name=Kemisk vasker @@ -161,32 +161,38 @@ tile.OreBlock.CopperOre.name=Kobbermalm tile.OreBlock.TinOre.name=Tinmalm //Transmitters -item.MultipartTransmitter.PressurizedTube.name=Trykrør +item.MultipartTransmitter.BasicPressurizedTube.name=Basal Tryk-tube +item.MultipartTransmitter.AdvancedPressurizedTube.name=Avanceret Tryk-tube +item.MultipartTransmitter.ElitePressurizedTube.name=Elite Tryk-tube +item.MultipartTransmitter.UltimatePressurizedTube.name=Ultimativ Tryk-tube item.MultipartTransmitter.BasicUniversalCable.name=Basalt Universalkabel -item.MultipartTransmitter.AdvancedUniversalCable.name=Envanceret Universalkabel +item.MultipartTransmitter.AdvancedUniversalCable.name=Avanceret Universalkabel item.MultipartTransmitter.EliteUniversalCable.name=Elite Universalkabel item.MultipartTransmitter.UltimateUniversalCable.name=Ultimativt Universalkabel item.MultipartTransmitter.BasicMechanicalPipe.name=Basalt Mekanisk Rør -item.MultipartTransmitter.AdvancedMechanicalPipe.name=Envanceret Mekanisk Rør +item.MultipartTransmitter.AdvancedMechanicalPipe.name=Avanceret Mekanisk Rør item.MultipartTransmitter.EliteMechanicalPipe.name=Elite Mekanisk Rør item.MultipartTransmitter.UltimateMechanicalPipe.name=Ultimativt Mekanisk Rør -item.MultipartTransmitter.LogisticalTransporter.name=Logistisk Transporter +item.MultipartTransmitter.BasicLogisticalTransporter.name=Basal Logistisk Transportør +item.MultipartTransmitter.AdvancedLogisticalTransporter.name=Avanceret Logistisk Transportør +item.MultipartTransmitter.EliteLogisticalTransporter.name=Elite Logistisk Transportør +item.MultipartTransmitter.UltimateLogisticalTransporter.name=Ultimativ Logistisk Transportør item.MultipartTransmitter.RestrictiveTransporter.name=Begrænsende Transporter -item.MultipartTransmitter.DiversionTransporter.name=Enfledningstransporter +item.MultipartTransmitter.DiversionTransporter.name=Afledningstransporter //Glow Panel item.GlowPanel.name=Glødepanel //Energy Cubes -tile.EnergyCube.Basic.name=Basal Energikube -tile.EnergyCube.Advanced.name=Envanceret Energikube -tile.EnergyCube.Elite.name=Elite Energikube -tile.EnergyCube.Ultimate.name=Ultimativ Energikube -tile.EnergyCube.Creative.name=Kreativ Energikube +tile.EnergyCubeBasic.name=Basal Energikube +tile.EnergyCubeAdvanced.name=Avanceret Energikube +tile.EnergyCubeElite.name=Elite Energikube +tile.EnergyCubeUltimate.name=Ultimativ Energikube +tile.EnergyCubeCreative.name=Kreativ Energikube //Factory Installers item.basicFactoryInstaller.name=Basal Fabrikinstallerer -item.advancedFactoryInstaller.name=Endvanceret Fabrikinstallerer +item.advancedFactoryInstaller.name=Avanceret Fabrikinstallerer item.eliteFactoryInstaller.name=Elite Fabrikinstallerer //Dust @@ -277,7 +283,6 @@ gas.silver=Sølvslurry gas.obsidian=Obsidianslurry gas.lead=Blyslurry - gas.cleanIron=Ren Jernslurry gas.cleanGold=Ren Guldslurry gas.cleanOsmium=Ren Osmiumslurry @@ -318,6 +323,13 @@ oregas.silver=Sølvmalm oregas.obsidian=Obsidianmalm oregas.lead=Blymalm +//Tier names +tier.Basic=Basal +tier.Advanced=Avanceret +tier.Elite=Elite +tier.Ultimate=Ultimativ +tier.Creative=Kreativ + //Transmission types transmission.Energy=Energi transmission.Fluids=Væsker @@ -340,6 +352,8 @@ upgrade.speed=Hastighed upgrade.speed.desc=Øger hastigheden på maskinen. upgrade.filter=Filter upgrade.filter.desc=Et filter som sepererer !ntungtvand fra almindelig vand. +upgrade.gas=Gas +upgrade.gas.desc=Øger effektiviteten !naf gasforbrugende maskineri. //Key description text key.mode=Ændr Itemmodus @@ -372,15 +386,15 @@ gui.decondensentrating=Decondensentrating gui.power=Strøm gui.confirm=Bekræft gui.open=Åbn -gui.allOK=Enlt OK +gui.allOK=Alt OK gui.none=Ingen -gui.new=Ny +gui.new=Nyt gui.edit=Ændr gui.save=Lagr gui.output=Udgang gui.delete=Slet gui.status=Status -gui.autoEject=Enuto-udstød +gui.autoEject=Auto-udstød gui.itemstack=ItemStack gui.oredict=OreDict gui.material=Materiale @@ -412,22 +426,23 @@ gui.modID=Mod ID gui.key=Nøgle gui.id=ID gui.finished=Færdig -gui.well=Enlt er vel! +gui.well=Alt er vel! gui.upgrade=Opgradér gui.infinite=Uendelig gui.min=Min gui.max=Maks gui.delay=Forsinkelse gui.noDelay=Ingen forsinkelse -gui.fuel=Brændsel +gui.fuel=Brændstof gui.heat=Varme gui.formed=Formet gui.incomplete=Ufuldstændig -gui.inductionMatrix=Induktionsatrice -gui.matrixStats=Matricestatistik +gui.inductionMatrix=Induktionsmatrice +gui.matrixStats=Matrice-statistik gui.main=Hoved gui.outputting=Outputting -gui.dimensions=dimensioner +gui.receiving=Modtager +gui.dimensions=Dimensioner gui.constituents=Bestanddele gui.cells=celler gui.providers=providers @@ -441,9 +456,31 @@ gui.public=Offentlig gui.private=Privat gui.add=Tilføj gui.set=Sæt -gui.freq=Frekvens +gui.freq=Frek. gui.security=Sikkerhed gui.index=Indeks +gui.producing=Producing +gui.maxOutput=Max Output +gui.storing=Storing +gui.skyBlocked=Sky blocked +gui.using=Using +gui.needed=Needed +gui.noRecipe=No recipe +gui.conflict=Conflict +gui.height=Height +gui.mult=Mult +gui.chunk=Chunk +gui.vibrating=Vibrating +gui.abundancy=Abundancy +gui.nextItem=Next Item +gui.lastItem=Last Item +gui.oreDictCompat=Compatible OreDict Key +gui.toggleCooling=Toggle Cooling Measurements +gui.coolingMeasurements=Active cooling +gui.redstoneOutputMode=Redstone mode +gui.entityDetection=Entity Detection +gui.moveUp=Move Up +gui.moveDown=Move Down gui.reactor.injectionRate=Injektionssats @@ -454,8 +491,8 @@ gui.upgrades.amount=Mængde gui.upgrades.max=Maks gui.upgrades.effect=Effekt -gui.chemicalInfuser.short=C. Infuser -gui.chemicalDissolutionChamber.short=C. Opløsningskammer +gui.chemicalInfuser.short=K. Infuser +gui.chemicalDissolutionChamber.short=K. Opløsningskammer gui.solarEvaporationController.short=Sol E. Kontrollør gui.dictionary.noKey=Ingen nøgle. @@ -463,25 +500,27 @@ gui.dictionary.noKey=Ingen nøgle. gui.configuration=Konfiguration gui.config=Konfig gui.configuration.side=Sidekonfig -gui.configuration.transporter=Transportørskonfig +gui.configuration.transporter=Transporter-konfig gui.configuration.strictInput=Striks Input -gui.rotaryCondensentrator.toggleOperation=Byt operation +gui.rotaryCondensentrator.toggleOperation=Skift operation gui.factory.secondaryEnergy=Sekundær energi -gui.factory.smelting=Smeltning -gui.factory.enriching=Berigelse -gui.factory.crushing=Knusning -gui.factory.compressing=Komprimering -gui.factory.combining=Kombinering -gui.factory.purifying=Rensning -gui.factory.injecting=Injicering -gui.factory.autoSort=Enuto-sorterer +gui.factory.autoSort=Auto-sortér + +//Recipe types +gui.factory.Smelting=Smeltnings +gui.factory.Enriching=Berigelses +gui.factory.Crushing=Knusnings +gui.factory.Compressing=Komprimerings +gui.factory.Combining=Kombinerings +gui.factory.Purifying=Rensnings +gui.factory.Injecting=Injicerings gui.seismicReader.short=S. Aflæser gui.seismicReader.solids=Faste Stoffer gui.seismicReader.fluids=Væsker -gui.seismicReader.reading=Læser +gui.seismicReader.reading=Aflæser gui.filterSelect.title=Lav Nyt Filter @@ -525,18 +564,18 @@ gui.password.fieldsEmpty=Felt(er) tomme gui.password.notMatching=Matcher ikke gui.password.identical=Idenstisk gui.password.invalid=Ugyldig -gui.password=Endgangskode +gui.password=Adgangskode gui.logisticalSorter.default=Standard -gui.logisticalSorter.auto=Enuto +gui.logisticalSorter.auto=Auto gui.logisticalSorter.roundRobin=Round-robin -gui.electricChest.editPassword=Ændr Adgangskode +gui.electricChest.editPassword=Ændr Kode gui.teleporter.notReady=Ikke klar gui.teleporter.ready=Klar -gui.teleporter.noFrame=Ingen ramme -gui.teleporter.noLink=Ingen tilkobling +gui.teleporter.noFrame=Ingen indramning +gui.teleporter.noLink=Ingen tilkoblinge gui.teleporter.exceeds=Tilkoblinger > 2 gui.teleporter.needsEnergy=Mangler energi gui.teleporter.noAccess=Du har ikke adgang til denne teleportør. @@ -544,13 +583,13 @@ gui.teleporter.noFreq=Ingen frekvens gui.digitalMinerConfig=Digital Miner Konfig -gui.digitalMiner.autoPull=Enuto-træk +gui.digitalMiner.autoPull=Auto-træk gui.digitalMiner.replaceBlock=Erstat blok gui.digitalMiner.reset=Nulstil gui.digitalMiner.silkTouch=Silk touch gui.digitalMiner.pull=Træk gui.digitalMiner.silk=Silk -gui.digitalMiner.toMine=Ent grave +gui.digitalMiner.toMine=At grave gui.digitalMiner.running=Kører gui.digitalMiner.inverse=Inverse modus gui.digitalMiner.requireReplace=Kræv erstatning @@ -566,7 +605,7 @@ tooltip.configurator.empty=Tom tooltip.configurator.rotate=Rotér tooltip.configurator.wrench=Skruenøgle tooltip.configurator.pumpReset=Nulstil Elektrisk Pumpe udregning -tooltip.configurator.toggleDiverter=Enfledermodus ændret til +tooltip.configurator.toggleDiverter=Afledermodus ændret til tooltip.configurator.toggleMode=%s opførsel ændret til tooltip.configurator.viewMode=Nuværende %s opførsel tooltip.configurator.unauth=Denne kiste er låst @@ -576,6 +615,8 @@ tooltip.configurator.dim=dimension tooltip.configurator.setLink=Sæt tilkobling til blok tooltip.configurator.plenisherReset=Nulstil Fluidisk Plenisher udregning tooltip.configurator.inductionPortMode=Skiftet Indukstionsports overføringsmodus til +tooltip.configurator.toggleColor=Farve skiftet til +tooltip.configurator.viewColor=Nuværende farve tooltip.upgrade.speed=Hastighed tooltip.upgrade.energy=Energi @@ -620,8 +661,10 @@ tooltip.configureState=Konfigurér tilstand tooltip.outputRate=Output Sats tooltip.insufficientFuel=Utilstrækkelig Brændsel tooltip.readyForReaction=Klar til Reaktion +tooltip.speed=Fart +tooltip.and=og -tooltip.portableTank.bucketMode=Spandmodus +tooltip.portableTank.bucketMode=Spand-modus tooltip.disassembler.normal=normal tooltip.disassembler.slow=langsom @@ -638,6 +681,10 @@ tooltip.filterCard.oredictionificator=Oredictionificator tooltip.balloon=Ballon +tooltip.jetpack.regular=Almindelig +tooltip.jetpack.hover=Svæv +tooltip.jetpack.disabled=Deaktiveret + tooltip.flamethrower.combat=Kamp tooltip.flamethrower.heat=Opvarm tooltip.flamethrower.inferno=Inferno @@ -650,11 +697,11 @@ tooltip.EnrichmentChamber=En simpel maskine brugt til at berige malm om til !nto tooltip.OsmiumCompressor=En nogenlunde avanceret maskine brugt til at !nkomprimere osmium om til adskillige støve for !nså at kunne lave deres barremodparter. tooltip.Combiner=En maskine brugt til at kombinere støv og brosten !nfor at forme deres malmmodparter. tooltip.Crusher=En maskine brugt til at knuse barrer om til deres støvmodparter, !nså vel som at udføre mange andre operationer. -tooltip.DigitalMiner=En højtavanceret, filterbaseret, auto-miner !nder kan mine hvilken som helst blok du beder den om !inden for en 32-bloks(maks)radius. +tooltip.DigitalMiner=En højtavanceret, filterbaseret, auto-miner !nder kan mine hvilken som helst blok du beder den om !ninden for en 32-bloks(maks)radius. tooltip.BasicFactory=Det laveste tier i linjen af Fabrikker, !nder kan bruges til at processere forskellige !nmaskinoperationer ad gangen. tooltip.AdvancedFactory=Det mellemste tier i linjen af Fabrikker, !nder kan bruges til at processere forskellige !nmaskinoperationer ad gangen. tooltip.EliteFactory=The højeste tier i linjen af Fabrikker, !nder kan bruges til at processere forskellige !nmaskinoperationer ad gangen. -tooltip.MetallurgicInfuser=En maskine brugt til at infuse adskillige materialer !nom til (generalt) metaller til at lave legeringer !nog andre sammensætninger. +tooltip.MetallurgicInfuser=En maskine brugt til at infuse adskillige materialer !nom til (generelt) metaller til at lave legeringer !nog andre sammensætninger. tooltip.PurificationChamber=En avanceret maskine i stand til at processere !nmalm om til the klumper: Bruges som det indledende !nfase i 300%-malmforarbejdning. tooltip.EnergizedSmelter=En simpel maskine der bruges som en Mekanism-baseret !novn, der kører på energy. tooltip.Teleporter=En maskine i stand til at teleportere spillere til forskellige !nsteder defineret af en anden teleporter. @@ -674,12 +721,12 @@ tooltip.ChemicalInfuser=En maskine, der producerer en ny !ngas ved infuse til an tooltip.SeismicVibrator=En maskine, der bruger seismiske vibrationer til at !ngive information om forskellige lag !ni verdenen. tooltip.PressurizedReactionChamber=En avanceret maskine der forarbejder en !nfast, flydende og gasformig blanding og !nlaver både et gasformigt og fast produkt. tooltip.PortableTank=En handy, mobil tank, der lader dig !nbære 14 spande væske hvorhen du !nønsker. Kan også bruges som spand! -tooltip.FluidicPlenisher=En maskine i stand til at lave hele !nsøer ved at fylde slugter med væske. +tooltip.FluidicPlenisher=En maskine i stand til at lave hele !nsøer ved at fylde slugter op med væske. tooltip.Laser=En avanceret form for linær!nenergitransfer der udnytter en!nekstremt kollimeret lysstråle. -tooltip.LaserAmplifier=En blok that can be brugt til at merge,!nredirect and amplify laser beams,!nwith fine controls over when to fire. -tooltip.LaserTractorBeam=En blok brugt til at forene og!omdirigere laserstråler. Indsamler!ndrops fra blokke, den ødelægger. +tooltip.LaserAmplifier=En blok that can be brugt til at merge,!nomdirigere og forstærke laserstråler,!nmed finkontrollering over hvornår der skydes. +tooltip.LaserTractorBeam=En blok brugt til at forene og!nomdirigere laserstråler. Indsamler!ndrops fra blokke, den ødelægger. tooltip.SolarNeutronActivator=En maskine der dirigerer neutronstrålingen !nfra solen om til sin interne reserve, hvilket tillader !nen langsom dannelse af forskelige isotoper. -tooltip.Oredictionificator=En maskine brugt til at forene og oversætte mellem forskellige ting !nog blokke vha. Ore Dictionaryen. +tooltip.Oredictionificator=En maskine brugt til at forene og !noversætte mellem forskellige ting !nog blokke vha. Ore Dictionaryen. tooltip.HeatGenerator=En generator der bruger lavaens varme eller !nandre brændbare ressourcer til at producere energi. tooltip.SolarGenerator=En generator der bruger solens !nkraft til producere energi. @@ -696,7 +743,7 @@ tooltip.ReactorNeutronCapturePlate=En blok, der kan bruges til !nbåde at bloker tooltip.ReactorPort=En blok forstærket indramning i stand til !nat håndtere både gas- og energioverførslen !naf Fusionsreaktoren. tooltip.ReactorLogicAdapter=En blok der kan bruges til at !ntillade basal overvågning af en reaktor vha. rødsten. -tooltip.OsmiumOre=Et stærkt mineral der kan findes på !nenhver højde i verdenen. Den er!nkendt for at have mange anvendelser i !nthe konstruktionen af maskineri. +tooltip.OsmiumOre=Et stærkt mineral der kan findes på !nenhver højde i verdenen. Den er!nkendt for at have mange anvendelser i !nkonstruktionen af maskineri. tooltip.CopperOre=Et almindeligt, ledende materiale der !nkan bruges i produktionen af !nledninger. Dets evne til at modstå !nhøj varme gør den også essential !ntil avanceret maskineri. tooltip.TinOre=Et letvægts, dog stadig robust, ledende !nmateriale, der er en smule mindre !nsjælden end Kobber. @@ -779,7 +826,7 @@ reactor.depleted.desc=Reaktoren har utilstrækkelig brændstof til at vedligehol itemGroup.tabMekanism=Mekanism //NEI stuff -nei.chemicalInjectionChamber=C. Injektionskammer +nei.chemicalInjectionChamber=K. Injektionskammer nei.rotaryCondensentrator=R. Condensentrator //**********// @@ -799,7 +846,7 @@ tile.Generator.AdvancedSolarGenerator.name=Avanceret Solgenerator tile.Generator.WindTurbine.name=Vindturbine tile.Reactor.ReactorController.name=Reaktor-controller -tile.Reactor.ReactorFrame.name=Reaktorramme +tile.Reactor.ReactorFrame.name=Reaktorindramning tile.Reactor.ReactorNeutronCapturePlate.name=Neutronfanger-plade tile.Reactor.ReactorInOutPort.name=Reaktor-port tile.Reactor.ReactorLogicAdapter.name=Reaktorlogiks-adapter From baf3ae6f59412b36c767d5f723ad2c9487e3c344 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Fri, 26 Feb 2016 14:30:49 -0500 Subject: [PATCH 20/21] Update build number --- build.properties | 2 +- src/main/java/mekanism/common/Mekanism.java | 4 +- .../generators/common/MekanismGenerators.java | 49 ++++++++++--------- .../mekanism/tools/common/MekanismTools.java | 4 +- 4 files changed, 32 insertions(+), 27 deletions(-) diff --git a/build.properties b/build.properties index d2a61e32c..f54a2b0ff 100644 --- a/build.properties +++ b/build.properties @@ -4,4 +4,4 @@ FMP_version=1.1.2.331 CCLIB_version=1.1.3.136 NEI_version=1.0.4.101 CCC_version=1.0.6.39 -mod_version=8.1.8 +mod_version=8.1.9 diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 543433fdb..5723ae14e 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -140,7 +140,7 @@ import cpw.mods.fml.common.registry.GameRegistry; * @author AidanBrady * */ -@Mod(modid = "Mekanism", name = "Mekanism", version = "8.1.8", guiFactory = "mekanism.client.gui.ConfigGuiFactory", +@Mod(modid = "Mekanism", name = "Mekanism", version = "8.1.9", guiFactory = "mekanism.client.gui.ConfigGuiFactory", dependencies = "after:ForgeMultipart;after:BuildCraft;after:BuildCraftAPI;after:IC2;after:CoFHCore;" + "after:ComputerCraft;after:Galacticraft API;after:MetallurgyCore") public class Mekanism @@ -166,7 +166,7 @@ public class Mekanism public static Configuration configuration; /** Mekanism version number */ - public static Version versionNumber = new Version(8, 1, 8); + public static Version versionNumber = new Version(8, 1, 9); /** MultiblockManagers for various structrures */ public static MultiblockManager tankManager = new MultiblockManager("dynamicTank"); diff --git a/src/main/java/mekanism/generators/common/MekanismGenerators.java b/src/main/java/mekanism/generators/common/MekanismGenerators.java index 130eaf489..b911ea5cc 100644 --- a/src/main/java/mekanism/generators/common/MekanismGenerators.java +++ b/src/main/java/mekanism/generators/common/MekanismGenerators.java @@ -1,5 +1,30 @@ package mekanism.generators.common; +import io.netty.buffer.ByteBuf; + +import java.io.IOException; + +import mekanism.api.MekanismConfig.general; +import mekanism.api.MekanismConfig.generators; +import mekanism.api.gas.Gas; +import mekanism.api.gas.GasRegistry; +import mekanism.api.infuse.InfuseRegistry; +import mekanism.common.FuelHandler; +import mekanism.common.Mekanism; +import mekanism.common.MekanismBlocks; +import mekanism.common.MekanismItems; +import mekanism.common.Tier.BaseTier; +import mekanism.common.Version; +import mekanism.common.base.IModule; +import mekanism.common.recipe.RecipeHandler; +import mekanism.common.recipe.ShapedMekanismRecipe; +import mekanism.common.util.MekanismUtils; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.oredict.OreDictionary; import buildcraft.api.fuels.BuildcraftFuelRegistry; import buildcraft.api.fuels.IFuel; import cpw.mods.fml.client.event.ConfigChangedEvent.OnConfigChangedEvent; @@ -13,28 +38,8 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.network.NetworkRegistry; -import io.netty.buffer.ByteBuf; -import mekanism.api.MekanismConfig.general; -import mekanism.api.MekanismConfig.generators; -import mekanism.api.gas.Gas; -import mekanism.api.gas.GasRegistry; -import mekanism.api.infuse.InfuseRegistry; -import mekanism.common.*; -import mekanism.common.Tier.BaseTier; -import mekanism.common.base.IModule; -import mekanism.common.recipe.ShapedMekanismRecipe; -import mekanism.common.recipe.RecipeHandler; -import mekanism.common.util.MekanismUtils; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.oredict.OreDictionary; -import java.io.IOException; - -@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "8.1.8", dependencies = "required-after:Mekanism", guiFactory = "mekanism.generators.client.gui.GeneratorsGuiFactory") +@Mod(modid = "MekanismGenerators", name = "MekanismGenerators", version = "8.1.9", dependencies = "required-after:Mekanism", guiFactory = "mekanism.generators.client.gui.GeneratorsGuiFactory") public class MekanismGenerators implements IModule { /** Mekanism Generators Packet Pipeline */ @@ -47,7 +52,7 @@ public class MekanismGenerators implements IModule public static MekanismGenerators instance; /** MekanismGenerators version number */ - public static Version versionNumber = new Version(8, 1, 8); + public static Version versionNumber = new Version(8, 1, 9); @EventHandler public void preInit(FMLPreInitializationEvent event) diff --git a/src/main/java/mekanism/tools/common/MekanismTools.java b/src/main/java/mekanism/tools/common/MekanismTools.java index 2fdda0e63..53cbb54be 100644 --- a/src/main/java/mekanism/tools/common/MekanismTools.java +++ b/src/main/java/mekanism/tools/common/MekanismTools.java @@ -28,7 +28,7 @@ import net.minecraftforge.event.entity.living.LivingSpawnEvent; import java.io.IOException; -@Mod(modid = "MekanismTools", name = "MekanismTools", version = "8.1.8", dependencies = "required-after:Mekanism", guiFactory = "mekanism.tools.client.gui.ToolsGuiFactory") +@Mod(modid = "MekanismTools", name = "MekanismTools", version = "8.1.9", dependencies = "required-after:Mekanism", guiFactory = "mekanism.tools.client.gui.ToolsGuiFactory") public class MekanismTools implements IModule { @SidedProxy(clientSide = "mekanism.tools.client.ToolsClientProxy", serverSide = "mekanism.tools.common.ToolsCommonProxy") @@ -38,7 +38,7 @@ public class MekanismTools implements IModule public static MekanismTools instance; /** MekanismTools version number */ - public static Version versionNumber = new Version(8, 1, 8); + public static Version versionNumber = new Version(8, 1, 9); //Enums: Tools public static ToolMaterial toolOBSIDIAN; From 9d43e4ab49c5c4bf628e9ade5b4915eaf08dfb83 Mon Sep 17 00:00:00 2001 From: aidancbrady Date: Sun, 28 Feb 2016 12:31:27 -0500 Subject: [PATCH 21/21] Fixed Induction Matrix issue --- .../common/content/matrix/MatrixUpdateProtocol.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/mekanism/common/content/matrix/MatrixUpdateProtocol.java b/src/main/java/mekanism/common/content/matrix/MatrixUpdateProtocol.java index d31e5ee80..52f482aba 100644 --- a/src/main/java/mekanism/common/content/matrix/MatrixUpdateProtocol.java +++ b/src/main/java/mekanism/common/content/matrix/MatrixUpdateProtocol.java @@ -73,7 +73,7 @@ public class MatrixUpdateProtocol extends UpdateProtocol } @Override - protected void onFormed() + public boolean isInteriorValid(SynchronizedMatrixData structure) { for(Coord4D coord : innerNodes) { @@ -81,14 +81,16 @@ public class MatrixUpdateProtocol extends UpdateProtocol if(tile instanceof TileEntityInductionCell) { - structureFound.cells.add(coord); - structureFound.storageCap += ((TileEntityInductionCell)tile).tier.maxEnergy; + structure.cells.add(coord); + structure.storageCap += ((TileEntityInductionCell)tile).tier.maxEnergy; } else if(tile instanceof TileEntityInductionProvider) { - structureFound.providers.add(coord); - structureFound.transferCap += ((TileEntityInductionProvider)tile).tier.output; + structure.providers.add(coord); + structure.transferCap += ((TileEntityInductionProvider)tile).tier.output; } } + + return true; } }