
Harvest Moon gets an add custom crop type that's itemstack sensitive for crops that share an item for seeds., it's not perfect but it works pretty well. Also gets a MT method to interface with this new harvest type MT functions to add/remove focus items for falling tower as well as define the meteor size and distribution.
139 lines
3.7 KiB
Java
139 lines
3.7 KiB
Java
package WayofTime.alchemicalWizardry.common.tweaker;
|
|
|
|
import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorParadigm;
|
|
import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorRegistry;
|
|
import minetweaker.IUndoableAction;
|
|
import minetweaker.MineTweakerAPI;
|
|
import minetweaker.api.item.IItemStack;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraftforge.oredict.OreDictionary;
|
|
import stanhebben.zenscript.annotations.ZenClass;
|
|
import stanhebben.zenscript.annotations.ZenMethod;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import static WayofTime.alchemicalWizardry.common.tweaker.MTHelper.toStack;
|
|
|
|
/**
|
|
* MineTweaker3 Falling Tower Paradigm Handler by hilburn *
|
|
*/
|
|
@ZenClass("mods.bloodmagic.FallingTower")
|
|
public class FallingTower
|
|
{
|
|
@ZenMethod
|
|
public static void addFocus(IItemStack stack, int radius, String[] components)
|
|
{
|
|
MineTweakerAPI.apply(new Add(toStack(stack),radius, components));
|
|
}
|
|
|
|
@ZenMethod
|
|
public static void addFocus(IItemStack stack, int radius, String components)
|
|
{
|
|
MineTweakerAPI.apply(new Add(toStack(stack),radius, components.split("\\s*,\\s*")));
|
|
}
|
|
|
|
@ZenMethod
|
|
public static void removeFocus(IItemStack output) {
|
|
MineTweakerAPI.apply(new Remove(toStack(output)));
|
|
}
|
|
|
|
private static class Add implements IUndoableAction
|
|
{
|
|
private MeteorParadigm paradigm;
|
|
|
|
public Add(ItemStack stack, int radius, String[] components)
|
|
{
|
|
paradigm = new MeteorParadigm(stack,radius);
|
|
paradigm.parseStringArray(components);
|
|
}
|
|
|
|
@Override
|
|
public void apply()
|
|
{
|
|
MeteorRegistry.registerMeteorParadigm(paradigm);
|
|
}
|
|
|
|
@Override
|
|
public boolean canUndo()
|
|
{
|
|
return MeteorRegistry.paradigmList!= null;
|
|
}
|
|
|
|
@Override
|
|
public void undo()
|
|
{
|
|
MeteorRegistry.paradigmList.remove(paradigm);
|
|
}
|
|
|
|
@Override
|
|
public String describe() {
|
|
return "Adding Falling Tower Focus for " + paradigm.focusStack.getDisplayName();
|
|
}
|
|
|
|
@Override
|
|
public String describeUndo()
|
|
{
|
|
return "Removing Falling Tower Focus for " + paradigm.focusStack.getDisplayName();
|
|
}
|
|
|
|
@Override
|
|
public Object getOverrideKey()
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static class Remove implements IUndoableAction {
|
|
private final ItemStack focus;
|
|
private MeteorParadigm paradigm;
|
|
|
|
public Remove(ItemStack focus)
|
|
{
|
|
this.focus = focus;
|
|
}
|
|
|
|
@Override
|
|
public void apply()
|
|
{
|
|
for (Iterator<MeteorParadigm> itr = MeteorRegistry.paradigmList.iterator(); itr.hasNext();)
|
|
{
|
|
MeteorParadigm paradigm = itr.next();
|
|
if (OreDictionary.itemMatches(paradigm.focusStack,focus,false))
|
|
{
|
|
this.paradigm = paradigm;
|
|
itr.remove();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean canUndo()
|
|
{
|
|
return MeteorRegistry.paradigmList!= null && paradigm != null;
|
|
}
|
|
|
|
@Override
|
|
public void undo()
|
|
{
|
|
MeteorRegistry.paradigmList.add(paradigm);
|
|
}
|
|
|
|
@Override
|
|
public String describe() {
|
|
return "Removing Falling Tower Focus for " + focus.getDisplayName();
|
|
}
|
|
|
|
@Override
|
|
public String describeUndo()
|
|
{
|
|
return "Restoring Falling Tower Focus for " + focus.getDisplayName();
|
|
}
|
|
|
|
@Override
|
|
public Object getOverrideKey()
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|