diff --git a/src/main/java/modtweaker/mods/chisel/ChiselHelper.java b/src/main/java/modtweaker/mods/chisel/ChiselHelper.java index c31b82d..a40b751 100644 --- a/src/main/java/modtweaker/mods/chisel/ChiselHelper.java +++ b/src/main/java/modtweaker/mods/chisel/ChiselHelper.java @@ -17,12 +17,24 @@ public class ChiselHelper { { return CarvingUtils.getChiselRegistry().getGroup(name); } + public static ICarvingGroup getGroup(IItemStack stack) { return CarvingUtils.getChiselRegistry().getGroup(Block.getBlockFromItem(toStack(stack).getItem()), stack.getDamage()); } + public static ICarvingVariation getVariation(IItemStack stack) { return Carving.chisel.getVariation(Block.getBlockFromItem(toStack(stack).getItem()), stack.getDamage()); } + + public static boolean groupContainsVariation(ICarvingGroup group, ICarvingVariation variation) + { + for(ICarvingVariation otherVariation : group.getVariations()) + { + if(otherVariation.getBlock()==variation.getBlock() && otherVariation.getBlockMeta()==variation.getBlockMeta()) + return true; + } + return false; + } } diff --git a/src/main/java/modtweaker/mods/chisel/commands/ChiselVariationLogger.java b/src/main/java/modtweaker/mods/chisel/commands/ChiselVariationLogger.java index f0f7e69..c1043a2 100644 --- a/src/main/java/modtweaker/mods/chisel/commands/ChiselVariationLogger.java +++ b/src/main/java/modtweaker/mods/chisel/commands/ChiselVariationLogger.java @@ -13,6 +13,7 @@ import com.cricketcraft.chisel.api.carving.ICarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingVariation; import net.minecraft.entity.EntityList; +import net.minecraft.item.Item; import minetweaker.MineTweakerAPI; import minetweaker.MineTweakerImplementationAPI; import minetweaker.api.player.IPlayer; @@ -46,7 +47,7 @@ public class ChiselVariationLogger implements ICommandFunction{ } System.out.println("Chisel Variations: " + variations.size()); for (Entry entry: variations.entrySet()) { - String stringedVariation=entry.getKey().getBlock().getUnlocalizedName()+" "+entry.getKey().getBlockMeta(); + String stringedVariation="<"+Item.itemRegistry.getNameForObject(Item.getItemFromBlock(entry.getKey().getBlock()))+":"+entry.getKey().getBlockMeta()+">"; if(arguments.length==0) stringedVariation+=" "+entry.getValue().getName(); System.out.println("Chisel Variation " + stringedVariation); diff --git a/src/main/java/modtweaker/mods/chisel/handlers/Groups.java b/src/main/java/modtweaker/mods/chisel/handlers/Groups.java index 9506e8d..835ef3d 100644 --- a/src/main/java/modtweaker/mods/chisel/handlers/Groups.java +++ b/src/main/java/modtweaker/mods/chisel/handlers/Groups.java @@ -7,6 +7,7 @@ import static modtweaker.helpers.StackHelper.areEqual; import com.cricketcraft.chisel.api.carving.ICarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingVariation; +import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IIngredient; import minetweaker.api.item.IItemStack; @@ -33,8 +34,52 @@ public class Groups { MineTweakerAPI.getLogger().logError("Can create variation from " + stack); return; } - group.addVariation(variation); + MineTweakerAPI.apply(new AddVariation(group,variation, stack.getDisplayName())); } + + 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() { + group.addVariation(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() { + group.removeVariation(variation.getBlock(),variation.getBlockMeta()); + } + + @Override + public Object getOverrideKey() { + return null; + } + } + @ZenMethod public static void removeTransformation(String groupName, IItemStack stack) { @@ -50,11 +95,57 @@ public class Groups { MineTweakerAPI.getLogger().logError("Can create variation from " + stack); return; } - if(!group.getVariations().contains(variation)) + if(!ChiselHelper.groupContainsVariation(group, variation)) { MineTweakerAPI.getLogger().logError("Variation doesn't exist in group " + groupName); return; } - group.removeVariation(variation.getBlock(),variation.getBlockMeta()); + MineTweakerAPI.apply(new RemoveVariation(group,variation, stack.getDisplayName())); } + + + static class RemoveVariation implements IUndoableAction { + + ICarvingGroup group; + ICarvingVariation variation; + String variationName; + + public RemoveVariation(ICarvingGroup group,ICarvingVariation variation, String variationName) { + this.group=group; + this.variation=variation; + this.variationName=variationName; + } + + @Override + public void apply() { + group.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() { + group.addVariation(variation); + } + + @Override + public Object getOverrideKey() { + return null; + } + } + + } diff --git a/src/main/java/modtweaker/mods/thaumcraft/commands/AspectLogger.java b/src/main/java/modtweaker/mods/thaumcraft/commands/AspectLogger.java index 1a87f65..05a80e5 100644 --- a/src/main/java/modtweaker/mods/thaumcraft/commands/AspectLogger.java +++ b/src/main/java/modtweaker/mods/thaumcraft/commands/AspectLogger.java @@ -30,7 +30,7 @@ public class AspectLogger implements ICommandFunction{ { Item item=(Item)entry.getKey().get(i); - itemList.add("<"+item.itemRegistry.getNameForObject(item)+":"+entry.getKey().get(i+1)+">"); + itemList.add("<"+Item.itemRegistry.getNameForObject(item)+":"+entry.getKey().get(i+1)+">"); } lines.add(itemList.toString()+": "+ThaumcraftHelper.aspectsToString(entry.getValue())); }