Skip to content

Commit

Permalink
Move to Forge block rotation implementation.
Browse files Browse the repository at this point in the history
Hopefully the configurator should rotate more stuff now and more wrenches should be able to rotate our blocks
  • Loading branch information
unpairedbracket committed Aug 7, 2014
1 parent 14b40d9 commit 799f49d
Show file tree
Hide file tree
Showing 6 changed files with 188 additions and 20 deletions.
33 changes: 33 additions & 0 deletions src/main/java/mekanism/common/block/BlockBasic.java
Original file line number Diff line number Diff line change
Expand Up @@ -802,4 +802,37 @@ public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int
return super.shouldSideBeRendered(world, x, y, z, side);
}
}

public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
{
TileEntity tile = world.getTileEntity(x, y, z);
ForgeDirection[] valid = new ForgeDirection[6];
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{
if(basicTile.canSetFacing(dir.ordinal()))
{
valid[dir.ordinal()] = dir;
}
}
}
return valid;
}

public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
{
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
if(basicTile.canSetFacing(axis.ordinal()))
{
basicTile.setFacing((short)axis.ordinal());
return true;
}
}
return false;
}
}
33 changes: 33 additions & 0 deletions src/main/java/mekanism/common/block/BlockEnergyCube.java
Original file line number Diff line number Diff line change
Expand Up @@ -321,4 +321,37 @@ public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirecti
{
return true;
}

public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
{
TileEntity tile = world.getTileEntity(x, y, z);
ForgeDirection[] valid = new ForgeDirection[6];
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{
if(basicTile.canSetFacing(dir.ordinal()))
{
valid[dir.ordinal()] = dir;
}
}
}
return valid;
}

public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
{
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
if(basicTile.canSetFacing(axis.ordinal()))
{
basicTile.setFacing((short)axis.ordinal());
return true;
}
}
return false;
}
}
35 changes: 35 additions & 0 deletions src/main/java/mekanism/common/block/BlockGasTank.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;

import buildcraft.api.tools.IToolWrench;

import cpw.mods.fml.common.ModAPIManager;
Expand Down Expand Up @@ -235,4 +237,37 @@ public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, i

return itemStack;
}

public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
{
TileEntity tile = world.getTileEntity(x, y, z);
ForgeDirection[] valid = new ForgeDirection[6];
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{
if(basicTile.canSetFacing(dir.ordinal()))
{
valid[dir.ordinal()] = dir;
}
}
}
return valid;
}

public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
{
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
if(basicTile.canSetFacing(axis.ordinal()))
{
basicTile.setFacing((short)axis.ordinal());
return true;
}
}
return false;
}
}
33 changes: 33 additions & 0 deletions src/main/java/mekanism/common/block/BlockMachine.java
Original file line number Diff line number Diff line change
Expand Up @@ -1279,4 +1279,37 @@ public IPeripheral getPeripheral(World world, int x, int y, int z, int side)

return null;
}

public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
{
TileEntity tile = world.getTileEntity(x, y, z);
ForgeDirection[] valid = new ForgeDirection[6];
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{
if(basicTile.canSetFacing(dir.ordinal()))
{
valid[dir.ordinal()] = dir;
}
}
}
return valid;
}

public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
{
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
if(basicTile.canSetFacing(axis.ordinal()))
{
basicTile.setFacing((short)axis.ordinal());
return true;
}
}
return false;
}
}
33 changes: 14 additions & 19 deletions src/main/java/mekanism/common/item/ItemConfigurator.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package mekanism.common.item;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

Expand All @@ -13,6 +14,8 @@
import mekanism.common.tile.TileEntityBasicBlock;
import mekanism.common.tile.TileEntityElectricChest;
import mekanism.common.util.MekanismUtils;

import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
Expand Down Expand Up @@ -65,6 +68,7 @@ public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world,
{
if(!world.isRemote)
{
Block block = world.getBlock(x, y, z);
TileEntity tile = world.getTileEntity(x, y, z);

if(tile instanceof IConfigurable)
Expand Down Expand Up @@ -172,27 +176,18 @@ else if(getState(stack) == 1)
}
else if(getState(stack) == 2)
{
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicBlock = (TileEntityBasicBlock)tile;
int newSide = basicBlock.facing;

if(!player.isSneaking())
{
newSide = side;
}
else {
newSide = ForgeDirection.OPPOSITES[side];
}
ForgeDirection axis = ForgeDirection.getOrientation(side);
List<ForgeDirection> l = Arrays.asList(block.getValidRotations(world, x, y, z));

if(basicBlock.canSetFacing(newSide))
{
basicBlock.setFacing((short)newSide);
world.playSoundEffect(x, y, z, "random.click", 1.0F, 1.0F);
}

return true;
if(!player.isSneaking() && l.contains(axis))
{
block.rotateBlock(world, x, y, z, axis);
}
else if(player.isSneaking() && l.contains(axis.getOpposite())) {
block.rotateBlock(world, x, y, z, axis.getOpposite());
}

return true;
}
else if(getState(stack) == 3)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,12 @@
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.tools.IToolWrench;
import dan200.computercraft.api.peripheral.IPeripheral;
import dan200.computercraft.api.peripheral.IPeripheralProvider;

import cpw.mods.fml.common.ModAPIManager;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.Method;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

Expand All @@ -55,7 +60,8 @@
* @author AidanBrady
*
*/
public class BlockGenerator extends BlockContainer implements ISpecialBounds
@Interface(iface = "dan200.computercraft.api.peripheral.IPeripheralProvider", modid = "ComputerCraft")
public class BlockGenerator extends BlockContainer implements ISpecialBounds, IPeripheralProvider
{
public Random machineRand = new Random();

Expand Down Expand Up @@ -608,4 +614,37 @@ public boolean doDefaultBoundSetting(int metadata)
{
return true;
}

public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
{
TileEntity tile = world.getTileEntity(x, y, z);
ForgeDirection[] valid = new ForgeDirection[6];
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
{
if(basicTile.canSetFacing(dir.ordinal()))
{
valid[dir.ordinal()] = dir;
}
}
}
return valid;
}

public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
{
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityBasicBlock)
{
TileEntityBasicBlock basicTile = (TileEntityBasicBlock)tile;
if(basicTile.canSetFacing(axis.ordinal()))
{
basicTile.setFacing((short)axis.ordinal());
return true;
}
}
return false;
}
}

0 comments on commit 799f49d

Please sign in to comment.