anon-iclr-submission/benchname-bug-localization huggingface dataset:
Repository: mekanism/mekanism
Issue: [1.12] Electrolytic Separator + Energy Upgrades = Hydrogen Power

#### Issue description:
The Electrolytic Separator accepts Energy Upgrades.  In the past, this only increased the energy capacity.  The Electrolytic Separator was the only machine to not receive a boost in efficiency in order to prevent an infinite energy loop using Hydrogen Gas.

The Electrolytic Separator currently does get the energy boost and can produce an infinite energy loop using Hydrogen Gas.

#### Steps to reproduce:
1. Stick a full set of Energy Upgrades in the Electrolytic Separator.
2. Supply Water
3. Burn Hydrogen in a Gas-Burning Generator for 10x the power you put in.  A full set of Speed Upgrades will net you nearly 18k J/t.

#### Version (make sure you are on the latest version before reporting):
**Forge: 14.23.1.2561**
**Mekanism: 9.4.2.327**

Test pack included Mek Generators and Tools, and JEI 4.8.5.134.  No other mods.

Changed files:
src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java

diff --git a/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java b/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java
index 15fe5ff389..26df3dd624 100644
--- a/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java
+++ b/src/main/java/mekanism/common/tile/TileEntityElectrolyticSeparator.java
@@ -646,4 +646,21 @@ public class TileEntityElectrolyticSeparator extends TileEntityMachine implement
 	{
 		return new Object[] {fluidTank, leftTank, rightTank};
 	}
+
+	@Override
+	public void recalculateUpgradables(Upgrade upgrade)
+	{
+		super.recalculateUpgradables(upgrade);
+
+		switch(upgrade)
+		{
+			case ENERGY:
+				maxEnergy = MekanismUtils.getMaxEnergy(this, BASE_MAX_ENERGY);
+				energyPerTick = BlockStateMachine.MachineType.ELECTROLYTIC_SEPARATOR.getUsage();
+				setEnergy(Math.min(getMaxEnergy(), getEnergy()));
+				break;
+			default:
+				break;
+		}
+	}
 }
Repository: mekanism/mekanism
Issue: [1.10.2] Cardboard box deletes Advanced Solar Generator when boxing the base of it.

The box and the Advanced Solar Generator just straight up disappear, never to be seen again.


Changed files:
src/main/java/mekanism/generators/common/MekanismGenerators.java, src/main/java/mekanism/common/Mekanism.java

diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java
index a2860b183e..4033bc2254 100644
--- a/src/main/java/mekanism/common/Mekanism.java
+++ b/src/main/java/mekanism/common/Mekanism.java
@@ -1426,11 +1426,21 @@ public class Mekanism
 	public void onBlacklistUpdate(BoxBlacklistEvent event)
 	{
 		MekanismAPI.addBoxBlacklist(MekanismBlocks.CardboardBox, OreDictionary.WILDCARD_VALUE);
+
+		// Mekanism multiblock structures
 		MekanismAPI.addBoxBlacklist(MekanismBlocks.BoundingBlock, OreDictionary.WILDCARD_VALUE);
+		MekanismAPI.addBoxBlacklist(MekanismBlocks.BasicBlock2, 9);   // Security Desk
+		MekanismAPI.addBoxBlacklist(MekanismBlocks.MachineBlock, 4);  // Digital Miner
+		MekanismAPI.addBoxBlacklist(MekanismBlocks.MachineBlock2, 9); // Seismic Vibrator
+		MekanismAPI.addBoxBlacklist(MekanismBlocks.MachineBlock3, 1); // Solar Neutron Activator
+
+		// Minecraft unobtainable
 		MekanismAPI.addBoxBlacklist(Blocks.BEDROCK, 0);
 		MekanismAPI.addBoxBlacklist(Blocks.PORTAL, OreDictionary.WILDCARD_VALUE);
 		MekanismAPI.addBoxBlacklist(Blocks.END_PORTAL, OreDictionary.WILDCARD_VALUE);
 		MekanismAPI.addBoxBlacklist(Blocks.END_PORTAL_FRAME, OreDictionary.WILDCARD_VALUE);
+
+		// Minecraft multiblock structures
 		MekanismAPI.addBoxBlacklist(Blocks.BED, OreDictionary.WILDCARD_VALUE);
 		MekanismAPI.addBoxBlacklist(Blocks.OAK_DOOR, OreDictionary.WILDCARD_VALUE);
 		MekanismAPI.addBoxBlacklist(Blocks.SPRUCE_DOOR, OreDictionary.WILDCARD_VALUE);
diff --git a/src/main/java/mekanism/generators/common/MekanismGenerators.java b/src/main/java/mekanism/generators/common/MekanismGenerators.java
index b06fb7bc0b..0620e12a0e 100644
--- a/src/main/java/mekanism/generators/common/MekanismGenerators.java
+++ b/src/main/java/mekanism/generators/common/MekanismGenerators.java
@@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
 
 import java.io.IOException;
 
+import mekanism.api.MekanismAPI;
 import mekanism.api.gas.Gas;
 import mekanism.api.gas.GasRegistry;
 import mekanism.api.infuse.InfuseRegistry;
@@ -275,4 +276,12 @@ public class MekanismGenerators implements IModule
 			TypeConfigManager.updateConfigRecipes(GeneratorType.getGeneratorsForConfig(), generators.generatorsManager);
 		}
 	}
+
+	@SubscribeEvent
+	public void onBlacklistUpdate(MekanismAPI.BoxBlacklistEvent event)
+	{
+		// Mekanism Generators multiblock structures
+		MekanismAPI.addBoxBlacklist(GeneratorsBlocks.Generator, 5); // Advanced Solar Generator
+		MekanismAPI.addBoxBlacklist(GeneratorsBlocks.Generator, 6); // Wind Generator
+	}
 }
Repository: mekanism/mekanism
Issue: [1.11.2] Logistical Sorter item filtering issue

#### Issue description:
Using the logistical sorter to sort the drops from a mob farm and I've run into an issue when trying to send items like bows ect which are damaged to a different location it will only filter the exact bow that was used to create the filter because it's using the metadata from that item. 
With a bow filter in place it will send the bow or those with identical metadata to the correct storage but at the same time it also wont send the other bows to the other storage which is currently set to take everything not filtered so the bows will just sit in the original storage. 
I found a <a href="https://github.com/aidancbrady/Mekanism/issues/992">similar issue from 2014</a> where a subtype check was added but this doesn't seem to be an option in the logistical sorter anymore.

#### Steps to reproduce:
1. Place storage.
2. Place logistical sorter pulling from the storage.
3. Place logistical transporters connecting the sorter to two more storage and paint the transporters different colours.
4. Set the sorters default filter to 1 of the colours then create a filter for bows set to the 2nd colour.
5. Add some random items and bows with different metadata to the first storage.
6. The random items will now be in the 2nd storage and any bows with the same metadata as the original will be in the 3rd storage all the remaining bows will still be in the first storage.

#### Version (make sure you are on the latest version before reporting):
**Forge:** 13.20.1.2454
**Mekanism:** 9.3.4
**Other relevant version:** 

Changed files:
src/main/java/mekanism/common/content/transporter/Finder.java

diff --git a/src/main/java/mekanism/common/content/transporter/Finder.java b/src/main/java/mekanism/common/content/transporter/Finder.java
index 0d268be899..64c42a809d 100644
--- a/src/main/java/mekanism/common/content/transporter/Finder.java
+++ b/src/main/java/mekanism/common/content/transporter/Finder.java
@@ -87,7 +87,7 @@ public abstract class Finder
 		@Override
 		public boolean modifies(ItemStack stack)
 		{
-			return StackUtils.equalsWildcard(itemType, stack);
+			return itemType.getHasSubtypes() ? StackUtils.equalsWildcard(itemType, stack) : itemType.getItem() == stack.getItem();
 		}
 	}
Repository: mekanism/mekanism
Issue: [1.11.2] Energy side configuration doesn't respect block orientation

#### Issue description:
Regardless of which way a block is oriented the side configuration for energy always treats the faces as follows:
- Front is North
- Back is South
- Left is West
- Right is East
- Bottom is Down
- Top is Up

Also tested with items but this seems to be functioning as expected.

#### Steps to reproduce:
1. Face north
2. Place an energy cube / machine / quantum entangloporter
3. Configure the block to accept energy on every side
3. Surround the block with universal energy cables
4. Toggle the energy acceptance for each side on/off and make note of which cables detach
5. Repeat the process facing South, East, West, Up, Down as desired

#### Version:
**Forge:** 13.20.1.2393
**Mekanism:** 9.3.3.311-fix

Changed files:
src/main/java/mekanism/common/tile/TileEntityFactory.java, src/main/java/mekanism/common/tile/component/TileComponentConfig.java

diff --git a/src/main/java/mekanism/common/tile/TileEntityFactory.java b/src/main/java/mekanism/common/tile/TileEntityFactory.java
index 21c55246dd..5df3f9693f 100644
--- a/src/main/java/mekanism/common/tile/TileEntityFactory.java
+++ b/src/main/java/mekanism/common/tile/TileEntityFactory.java
@@ -394,6 +394,12 @@ public class TileEntityFactory extends TileEntityMachine implements IComputerInt
 	{
 		return configComponent.getSidesForData(TransmissionType.ENERGY, facing, 1);
 	}
+	
+	@Override
+	public boolean sideIsConsumer(EnumFacing side)
+	{
+		return configComponent.hasSideForData(TransmissionType.ENERGY, facing, 1, side);
+	}
 
 	public void sortInventory()
 	{
diff --git a/src/main/java/mekanism/common/tile/component/TileComponentConfig.java b/src/main/java/mekanism/common/tile/component/TileComponentConfig.java
index 682f2dafb7..5e8e65a9b2 100644
--- a/src/main/java/mekanism/common/tile/component/TileComponentConfig.java
+++ b/src/main/java/mekanism/common/tile/component/TileComponentConfig.java
@@ -70,11 +70,11 @@ public class TileComponentConfig implements ITileComponent
 		SideConfig config = getConfig(type);
 		EnumFacing[] translatedFacings = MekanismUtils.getBaseOrientations(facing);
 		
-		for(int i = 0; i < EnumFacing.VALUES.length; i++)
+		for(EnumFacing sideToCheck : EnumFacing.values())
 		{
-			if(config.get(translatedFacings[i]) == dataIndex)
+			if(config.get(translatedFacings[sideToCheck.ordinal()]) == dataIndex)
 			{
-				ret.add(translatedFacings[i]);
+				ret.add(sideToCheck);
 			}
 		}
 		
@@ -87,8 +87,8 @@ public class TileComponentConfig implements ITileComponent
 		{
 			return false;
 		}
-		
-		return getConfig(type).get(sideToTest) == dataIndex;
+		EnumFacing[] translatedFacings = MekanismUtils.getBaseOrientations(facing);
+		return getConfig(type).get(translatedFacings[sideToTest.ordinal()]) == dataIndex;
 	}
 	
 	public void setCanEject(TransmissionType type, boolean eject)
Repository: mekanism/mekanism
Issue: [1.11.2] Energy side configuration doesn't respect block orientation

#### Issue description:
Regardless of which way a block is oriented the side configuration for energy always treats the faces as follows:
- Front is North
- Back is South
- Left is West
- Right is East
- Bottom is Down
- Top is Up

Also tested with items but this seems to be functioning as expected.

#### Steps to reproduce:
1. Face north
2. Place an energy cube / machine / quantum entangloporter
3. Configure the block to accept energy on every side
3. Surround the block with universal energy cables
4. Toggle the energy acceptance for each side on/off and make note of which cables detach
5. Repeat the process facing South, East, West, Up, Down as desired

#### Version:
**Forge:** 13.20.1.2393
**Mekanism:** 9.3.3.311-fix

Changed files:
src/main/java/mekanism/common/tile/TileEntityFluidicPlenisher.java, src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java, src/main/java/mekanism/common/tile/TileEntityElectricPump.java

diff --git a/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java
index 7d56ed0a0d..602769200c 100644
--- a/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java
+++ b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java
@@ -1566,6 +1566,13 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I
 		return EnumSet.of(MekanismUtils.getLeft(facing), MekanismUtils.getRight(facing), EnumFacing.DOWN);
 	}
 
+	@Override
+	public boolean sideIsConsumer(EnumFacing side)
+	{
+		return side == MekanismUtils.getLeft(facing) || side == MekanismUtils.getRight(facing) || side == EnumFacing.DOWN;
+	}
+
+
 	@Override
 	public TileComponentSecurity getSecurity() 
 	{
diff --git a/src/main/java/mekanism/common/tile/TileEntityElectricPump.java b/src/main/java/mekanism/common/tile/TileEntityElectricPump.java
index 9ddc607d74..48301963d5 100644
--- a/src/main/java/mekanism/common/tile/TileEntityElectricPump.java
+++ b/src/main/java/mekanism/common/tile/TileEntityElectricPump.java
@@ -421,6 +421,12 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
 		return EnumSet.of(facing.getOpposite());
 	}
 
+	@Override
+	public boolean sideIsConsumer(EnumFacing side)
+	{
+		return facing.getOpposite() == side;
+	}
+
 	@Override
 	public boolean canSetFacing(int side)
 	{
diff --git a/src/main/java/mekanism/common/tile/TileEntityFluidicPlenisher.java b/src/main/java/mekanism/common/tile/TileEntityFluidicPlenisher.java
index 41770eb8a5..55b5e7b5d3 100644
--- a/src/main/java/mekanism/common/tile/TileEntityFluidicPlenisher.java
+++ b/src/main/java/mekanism/common/tile/TileEntityFluidicPlenisher.java
@@ -384,6 +384,12 @@ public class TileEntityFluidicPlenisher extends TileEntityElectricBlock implemen
 		return EnumSet.of(facing.getOpposite());
 	}
 
+	@Override
+	public boolean sideIsConsumer(EnumFacing side)
+	{
+		return facing.getOpposite() == side;
+	}
+
 	@Override
 	public boolean canSetFacing(int side)
 	{
Repository: slimeknights/tinkersconstruct
Issue: Drying rack mirrors items horizontally if placed while facing north or west

http://i.imgur.com/6i51sRL.png

Signs in the picture label which direction the player is facing.
Also possibly worth noting: as evident in the pictures, they're not properly centered on the rack.

This has been a problem as long as I can remember, frankly I'm surprised I can't find anything mentioning it.


Changed files:
src/main/java/tconstruct/armor/modelblock/DryingRackSpecialRender.java

diff --git a/src/main/java/tconstruct/armor/modelblock/DryingRackSpecialRender.java b/src/main/java/tconstruct/armor/modelblock/DryingRackSpecialRender.java
index 23f46f3de..ee94797ba 100644
--- a/src/main/java/tconstruct/armor/modelblock/DryingRackSpecialRender.java
+++ b/src/main/java/tconstruct/armor/modelblock/DryingRackSpecialRender.java
@@ -55,11 +55,23 @@ public class DryingRackSpecialRender extends TileEntitySpecialRenderer
             if (meta == 2)
                 GL11.glTranslatef(0F, 0F, 0.375F);
             if (meta == 3)
-                GL11.glTranslatef(0F, 0F, -0.375F);
+            {
+            	// Rotate, Flip.
+            	GL11.glRotatef(180F, 0F, 1F, 0F);
+            	GL11.glTranslatef(0F, 0F, 0.2F);
+            	//GL11.glTranslatef(0F, 0F, -0.375F);
+            }
             if (meta == 4)
+            {
                 GL11.glTranslatef(0F, 0F, 0.2875F);
+            }
             if (meta == 5)
-                GL11.glTranslatef(0F, 0F, -0.5F);
+            {
+            	//Rotate, Flip.
+            	GL11.glRotatef(180F, 0F, 1F, 0F);
+            	GL11.glTranslatef(0F, 0F, 0.3F);
+                //GL11.glTranslatef(0F, 0F, -0.5F);
+            }
         }
         GL11.glScalef(2F, 2F, 2F);
         if (stack.getItem() instanceof ItemBlock)
Repository: stripe/stripe-android
Issue: Duplicate card number prefix

Just wondering if there was a mistake on this line 
https://github.com/stripe/stripe-android/blob/master/stripe/src/main/java/com/stripe/android/model/Card.java#L19
or why is it that you are including `37` as a `Diners Club` prefix if according to your source page https://en.wikipedia.org/wiki/Bank_card_number#Issuer_identification_number_.28IIN.29 it clearly exclude `37`


Changed files:
stripe/src/main/java/com/stripe/android/model/Card.java

diff --git a/stripe/src/main/java/com/stripe/android/model/Card.java b/stripe/src/main/java/com/stripe/android/model/Card.java
index 8bd357522e..395aa01d83 100644
--- a/stripe/src/main/java/com/stripe/android/model/Card.java
+++ b/stripe/src/main/java/com/stripe/android/model/Card.java
@@ -16,7 +16,7 @@ public class Card extends com.stripe.model.StripeObject {
     public static final String[] PREFIXES_AMERICAN_EXPRESS = {"34", "37"};
     public static final String[] PREFIXES_DISCOVER = {"60", "62", "64", "65"};
     public static final String[] PREFIXES_JCB = {"35"};
-    public static final String[] PREFIXES_DINERS_CLUB = {"300", "301", "302", "303", "304", "305", "309", "36", "38", "37", "39"};
+    public static final String[] PREFIXES_DINERS_CLUB = {"300", "301", "302", "303", "304", "305", "309", "36", "38", "39"};
     public static final String[] PREFIXES_VISA = {"4"};
     public static final String[] PREFIXES_MASTERCARD = {"50", "51", "52", "53", "54", "55"};