ModTweaker/src/main/java/modtweaker2/mods/chisel/handlers/Groups.java
jaredlll08 ec562b62ea This closes #17 and closes #58, I tested and it worked using the script given
Also changes like all packages
inb4 "jared changes a package name in ModTweaker2 breaking compatability
with everything" drama tweet.
2015-02-20 23:57:32 +02:00

234 lines
6 KiB
Java

package modtweaker2.mods.chisel.handlers;
import minetweaker.IUndoableAction;
import minetweaker.MineTweakerAPI;
import minetweaker.api.item.IItemStack;
import modtweaker2.mods.chisel.ChiselHelper;
import stanhebben.zenscript.annotations.ZenClass;
import stanhebben.zenscript.annotations.ZenMethod;
import com.cricketcraft.chisel.api.carving.CarvingUtils;
import com.cricketcraft.chisel.api.carving.ICarvingGroup;
import com.cricketcraft.chisel.api.carving.ICarvingVariation;
@ZenClass("mods.chisel.Groups")
public class Groups {
@ZenMethod
public static void addVariation(String groupName, IItemStack stack) {
ICarvingGroup group=ChiselHelper.getGroup(groupName);
ICarvingVariation variation=ChiselHelper.makeVariation(stack);
if(group==null)
{
MineTweakerAPI.getLogger().logError("Cannot find group " + groupName);
return;
}
if(variation==null)
{
MineTweakerAPI.getLogger().logError("Can't create variation from " + stack);
return;
}
MineTweakerAPI.apply(new AddVariation(group,variation, stack.toString()));
}
static class AddVariation implements IUndoableAction {
ICarvingGroup group;
ICarvingVariation variation;
String variationName;
public AddVariation(ICarvingGroup group,ICarvingVariation variation, String variationName) {
this.group=group;
this.variation=variation;
this.variationName=variationName;
}
@Override
public void apply() {
CarvingUtils.getChiselRegistry().addVariation(group.getName(),variation);
}
@Override
public boolean canUndo() {
return group != null && variation != null;
}
@Override
public String describe() {
return "Adding Variation: " + variationName;
}
@Override
public String describeUndo() {
return "Removing Variation: " + variationName;
}
@Override
public void undo() {
CarvingUtils.getChiselRegistry().removeVariation(variation.getBlock(),variation.getBlockMeta());
}
@Override
public Object getOverrideKey() {
return null;
}
}
@ZenMethod
public static void removeVariation(IItemStack stack) {
ICarvingVariation variation=ChiselHelper.getVariation(stack);
if(variation==null)
{
MineTweakerAPI.getLogger().logError("Can't find variation from " + stack);
return;
}
MineTweakerAPI.apply(new RemoveVariation(variation, stack.toString()));
}
static class RemoveVariation implements IUndoableAction {
ICarvingVariation variation;
String variationName;
ICarvingGroup group;
public RemoveVariation(ICarvingVariation variation, String variationName) {
this.variation=variation;
this.variationName=variationName;
}
@Override
public void apply() {
group=CarvingUtils.getChiselRegistry().getGroup(variation.getBlock(),variation.getBlockMeta());
CarvingUtils.getChiselRegistry().removeVariation(variation.getBlock(),variation.getBlockMeta());
}
@Override
public boolean canUndo() {
return group!= null && variation != null;
}
@Override
public String describe() {
return "Removing Variation: " + variationName;
}
@Override
public String describeUndo() {
return "Adding Variation: " + variationName;
}
@Override
public void undo() {
CarvingUtils.getChiselRegistry().addVariation(group.getName(),variation);
}
@Override
public Object getOverrideKey() {
return null;
}
}
@ZenMethod
public static void addGroup(String groupName) {
ICarvingGroup group=ChiselHelper.getGroup(groupName);
if(group!=null)
{
MineTweakerAPI.getLogger().logError("Group already exists " + groupName);
return;
}
group=ChiselHelper.makeGroup(groupName);
MineTweakerAPI.apply(new AddGroup(group));
}
static class AddGroup implements IUndoableAction {
ICarvingGroup group;
public AddGroup(ICarvingGroup group) {
this.group=group;
}
@Override
public void apply() {
CarvingUtils.getChiselRegistry().addGroup(group);
}
@Override
public boolean canUndo() {
return group != null;
}
@Override
public String describe() {
return "Adding Group: " + group.getName();
}
@Override
public String describeUndo() {
return "Removing Group: " + group.getName();
}
@Override
public void undo() {
CarvingUtils.getChiselRegistry().removeGroup(group.getName());
}
@Override
public Object getOverrideKey() {
return null;
}
}
@ZenMethod
public static void removeGroup(String groupName) {
ICarvingGroup group=ChiselHelper.getGroup(groupName);
if(group==null)
{
MineTweakerAPI.getLogger().logError("Could not find group " + groupName);
return;
}
MineTweakerAPI.apply(new RemoveGroup(group));
}
static class RemoveGroup implements IUndoableAction {
ICarvingGroup group;
public RemoveGroup(ICarvingGroup group) {
this.group=group;
}
@Override
public void apply() {
CarvingUtils.getChiselRegistry().removeGroup(group.getName());
}
@Override
public boolean canUndo() {
return group != null;
}
@Override
public String describe() {
return "Removing Group: " + group.getName();
}
@Override
public String describeUndo() {
return "Adding Group: " + group.getName();
}
@Override
public void undo() {
CarvingUtils.getChiselRegistry().addGroup(group);
}
@Override
public Object getOverrideKey() {
return null;
}
}
}