Create/src/main/java/com/simibubi/create/item/symmetry/SymmetryPlane.java
simibubi ddc846d860 Setup Infrastructure
- Relevant Mod files
- Relevant Classes
- Resources
- Added Symmetry Wand from TMA
2019-07-11 09:03:08 +02:00

92 lines
1.9 KiB
Java

package com.simibubi.create.item.symmetry;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.collect.ImmutableList;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.block.symmetry.BlockSymmetryPlane;
import net.minecraft.block.BlockState;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
public class SymmetryPlane extends SymmetryElement {
public static enum Align implements IStringSerializable {
XY("xy"), YZ("yz");
private final String name;
private Align(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
@Override
public String toString() {
return name;
}
}
public SymmetryPlane(Vec3d pos) {
super(pos);
orientation = Align.XY;
}
@Override
protected void setOrientation() {
if (orientationIndex < 0)
orientationIndex += Align.values().length;
if (orientationIndex >= Align.values().length)
orientationIndex -= Align.values().length;
orientation = Align.values()[orientationIndex];
}
@Override
public void setOrientation(int index) {
this.orientation = Align.values()[index];
orientationIndex = index;
}
@Override
public Map<BlockPos, BlockState> process(BlockPos position, BlockState block) {
Map<BlockPos, BlockState> result = new HashMap<>();
switch ((Align) orientation) {
case XY:
result.put(flipZ(position), flipZ(block));
break;
case YZ:
result.put(flipX(position), flipX(block));
break;
default:
break;
}
return result;
}
@Override
public String typeName() {
return PLANE;
}
@Override
public BlockState getModel() {
return AllBlocks.SYMMETRY_PLANE.block.getDefaultState().with(BlockSymmetryPlane.align, (Align) orientation);
}
@Override
public List<String> getAlignToolTips() {
return ImmutableList.of("Mirror Z", "Mirror X");
}
}