package com.jaquadro.minecraft.storagedrawers.integration.minetweaker; import com.jaquadro.minecraft.storagedrawers.StorageDrawers; import minetweaker.IUndoableAction; import minetweaker.MineTweakerAPI; import minetweaker.api.item.IItemStack; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; @ZenClass("mods.storagedrawers.Compaction") public class Compaction { @ZenMethod public static void add (IItemStack upper, IItemStack lower, int conversion) { if (upper == null || lower == null) { MineTweakerAPI.logError("Tried to add compacting tier with invalid item stack."); return; } ItemStack upperStack = (ItemStack)upper.getInternal(); ItemStack lowerStack = (ItemStack)lower.getInternal(); if (upperStack == null || lowerStack == null) MineTweakerAPI.logError("Tried to add compacting tier with invalid item stack."); else MineTweakerAPI.apply(new AddRecordAction(upperStack, lowerStack, conversion)); } private static class AddRecordAction implements IUndoableAction { ItemStack upper; ItemStack lower; int conversionRate; boolean added; public AddRecordAction (ItemStack upper, ItemStack lower, int conversionRate) { this.upper = upper; this.lower = lower; this.conversionRate = conversionRate; } @Override public void apply () { added = StorageDrawers.compRegistry.register(upper, lower, conversionRate); } @Override public boolean canUndo () { return true; } @Override public void undo () { if (added) StorageDrawers.compRegistry.unregisterUpperTarget(upper); } @Override public String describe () { if (added) return "Adding compacting tier: 1 '" + upper.getDisplayName() + "' = " + conversionRate + " '" + lower.getDisplayName() + "'."; else return "Failed to add compacting tier."; } @Override public String describeUndo () { if (added) return "Removing previously added compacting tier: 1 '" + upper.getDisplayName() + "' = " + conversionRate + " '" + lower.getDisplayName() + "'."; else return ""; } @Override public Object getOverrideKey () { return null; } } }