Also changes like all packages inb4 "jared changes a package name in ModTweaker2 breaking compatability with everything" drama tweet.
234 lines
6 KiB
Java
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;
|
|
}
|
|
}
|
|
|
|
}
|