Files
MinecraftForge/patches/common/net/minecraft/src/BlockButton.java.patch
T

107 lines
4.7 KiB
Diff

--- ../src_base/common/net/minecraft/src/BlockButton.java
+++ ../src_work/common/net/minecraft/src/BlockButton.java
@@ -1,6 +1,10 @@
package net.minecraft.src;
import java.util.Random;
+
+import net.minecraftforge.common.ForgeDirection;
+
+import static net.minecraftforge.common.ForgeDirection.*;
public class BlockButton extends Block
{
@@ -50,7 +54,11 @@
*/
public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int par5)
{
- return par5 == 2 && par1World.isBlockNormalCube(par2, par3, par4 + 1) ? true : (par5 == 3 && par1World.isBlockNormalCube(par2, par3, par4 - 1) ? true : (par5 == 4 && par1World.isBlockNormalCube(par2 + 1, par3, par4) ? true : par5 == 5 && par1World.isBlockNormalCube(par2 - 1, par3, par4)));
+ ForgeDirection dir = ForgeDirection.getOrientation(par5);
+ return (dir == NORTH && par1World.isBlockSolidOnSide(par2, par3, par4 + 1, NORTH)) ||
+ (dir == SOUTH && par1World.isBlockSolidOnSide(par2, par3, par4 - 1, SOUTH)) ||
+ (dir == WEST && par1World.isBlockSolidOnSide(par2 + 1, par3, par4, WEST)) ||
+ (dir == EAST && par1World.isBlockSolidOnSide(par2 - 1, par3, par4, EAST));
}
/**
@@ -58,7 +66,10 @@
*/
public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4)
{
- return par1World.isBlockNormalCube(par2 - 1, par3, par4) ? true : (par1World.isBlockNormalCube(par2 + 1, par3, par4) ? true : (par1World.isBlockNormalCube(par2, par3, par4 - 1) ? true : par1World.isBlockNormalCube(par2, par3, par4 + 1)));
+ return (par1World.isBlockSolidOnSide(par2 - 1, par3, par4, EAST)) ||
+ (par1World.isBlockSolidOnSide(par2 + 1, par3, par4, WEST)) ||
+ (par1World.isBlockSolidOnSide(par2, par3, par4 - 1, SOUTH)) ||
+ (par1World.isBlockSolidOnSide(par2, par3, par4 + 1, NORTH));
}
/**
@@ -69,20 +80,22 @@
int var9 = par1World.getBlockMetadata(par2, par3, par4);
int var10 = var9 & 8;
var9 &= 7;
-
- if (par5 == 2 && par1World.isBlockNormalCube(par2, par3, par4 + 1))
+
+ ForgeDirection dir = ForgeDirection.getOrientation(par5);
+
+ if (dir == NORTH && par1World.isBlockSolidOnSide(par2, par3, par4 + 1, NORTH))
{
var9 = 4;
}
- else if (par5 == 3 && par1World.isBlockNormalCube(par2, par3, par4 - 1))
+ else if (dir == SOUTH && par1World.isBlockSolidOnSide(par2, par3, par4 - 1, SOUTH))
{
var9 = 3;
}
- else if (par5 == 4 && par1World.isBlockNormalCube(par2 + 1, par3, par4))
+ else if (dir == WEST && par1World.isBlockSolidOnSide(par2 + 1, par3, par4, WEST))
{
var9 = 2;
}
- else if (par5 == 5 && par1World.isBlockNormalCube(par2 - 1, par3, par4))
+ else if (dir == EAST && par1World.isBlockSolidOnSide(par2 - 1, par3, par4, EAST))
{
var9 = 1;
}
@@ -99,7 +112,11 @@
*/
private int getOrientation(World par1World, int par2, int par3, int par4)
{
- return par1World.isBlockNormalCube(par2 - 1, par3, par4) ? 1 : (par1World.isBlockNormalCube(par2 + 1, par3, par4) ? 2 : (par1World.isBlockNormalCube(par2, par3, par4 - 1) ? 3 : (par1World.isBlockNormalCube(par2, par3, par4 + 1) ? 4 : 1)));
+ if (par1World.isBlockSolidOnSide(par2 - 1, par3, par4, EAST)) return 1;
+ if (par1World.isBlockSolidOnSide(par2 + 1, par3, par4, WEST)) return 2;
+ if (par1World.isBlockSolidOnSide(par2, par3, par4 - 1, SOUTH)) return 3;
+ if (par1World.isBlockSolidOnSide(par2, par3, par4 + 1, NORTH)) return 4;
+ return 1;
}
/**
@@ -113,22 +130,22 @@
int var6 = par1World.getBlockMetadata(par2, par3, par4) & 7;
boolean var7 = false;
- if (!par1World.isBlockNormalCube(par2 - 1, par3, par4) && var6 == 1)
+ if (!par1World.isBlockSolidOnSide(par2 - 1, par3, par4, EAST) && var6 == 1)
{
var7 = true;
}
- if (!par1World.isBlockNormalCube(par2 + 1, par3, par4) && var6 == 2)
+ if (!par1World.isBlockSolidOnSide(par2 + 1, par3, par4, WEST) && var6 == 2)
{
var7 = true;
}
- if (!par1World.isBlockNormalCube(par2, par3, par4 - 1) && var6 == 3)
+ if (!par1World.isBlockSolidOnSide(par2, par3, par4 - 1, SOUTH) && var6 == 3)
{
var7 = true;
}
- if (!par1World.isBlockNormalCube(par2, par3, par4 + 1) && var6 == 4)
+ if (!par1World.isBlockSolidOnSide(par2, par3, par4 + 1, NORTH) && var6 == 4)
{
var7 = true;
}