| /** |
| * Copyright (c) SpaceToad, 2011 |
| * http://www.mod-buildcraft.com |
| * |
| * BuildCraft is distributed under the terms of the Minecraft Mod Public |
| * License 1.0, or MMPL. Please check the contents of the license located in |
| * http://www.mod-buildcraft.com/MMPL-1.0.txt |
| */ |
| |
| package buildcraft.api.bptblocks; |
| |
| import buildcraft.api.blueprints.BptBlock; |
| import buildcraft.api.blueprints.BptSlotInfo; |
| import buildcraft.api.blueprints.IBptContext; |
| import java.util.LinkedList; |
| import net.minecraft.item.ItemStack; |
| |
| @Deprecated |
| public class BptBlockRotateMeta extends BptBlock { |
| |
| int[] rot; |
| boolean rotateForward; |
| |
| int infoMask = 0; |
| |
| public BptBlockRotateMeta(int blockId, int[] rotations, boolean rotateForward) { |
| super(blockId); |
| |
| rot = rotations; |
| |
| for (int i = 0; i < rot.length; ++i) { |
| if (rot[i] < 4) { |
| infoMask = (infoMask < 3 ? 3 : infoMask); |
| } else if (rot[i] < 8) { |
| infoMask = (infoMask < 7 ? 7 : infoMask); |
| } else if (rot[i] < 16) { |
| infoMask = (infoMask < 15 ? 15 : infoMask); |
| } |
| } |
| |
| this.rotateForward = rotateForward; |
| } |
| |
| @Override |
| public void addRequirements(BptSlotInfo slot, IBptContext context, LinkedList<ItemStack> requirements) { |
| requirements.add(new ItemStack(slot.blockId, 1, 0)); |
| } |
| |
| @Override |
| public boolean isValid(BptSlotInfo slot, IBptContext context) { |
| return slot.blockId == context.world().getBlockId(slot.x, slot.y, slot.z); |
| } |
| |
| @Override |
| public void rotateLeft(BptSlotInfo slot, IBptContext context) { |
| int pos = slot.meta & infoMask; |
| int others = slot.meta - pos; |
| |
| if (rotateForward) { |
| if (pos == rot[0]) { |
| pos = rot[1]; |
| } else if (pos == rot[1]) { |
| pos = rot[2]; |
| } else if (pos == rot[2]) { |
| pos = rot[3]; |
| } else if (pos == rot[3]) { |
| pos = rot[0]; |
| } |
| } else { |
| if (pos == rot[0]) { |
| pos = rot[3]; |
| } else if (pos == rot[1]) { |
| pos = rot[2]; |
| } else if (pos == rot[2]) { |
| pos = rot[0]; |
| } else if (pos == rot[3]) { |
| pos = rot[1]; |
| } |
| } |
| |
| slot.meta = pos + others; |
| } |
| |
| } |