/** * 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 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; } }