84 lines
2 KiB
Java
84 lines
2 KiB
Java
/**
|
|
* 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;
|
|
}
|
|
|
|
}
|