Дело токое, нужно написать код чтоб можно было изменять рецепты в компрессоре галактик крафта в скриптах ModTweaker. Я кое что написал, но при загрузке скриптов в чат пишет ошибку
Сам код:
Сам код:
Код:
package modtweaker2.mods.galacticcraft;
import minetweaker.MineTweakerAPI;
import modtweaker2.mods.galacticcraft.handlers.Compressor;
public class GalacticCraft {
public GalacticCraft() {
MineTweakerAPI.registerClass(Compressor.class);
}
}
Код:
package modtweaker2.mods.galacticcraft;
import java.util.List;
import micdoodle8.mods.galacticraft.api.recipe.CompressorRecipes;
import modtweaker2.helpers.LogHelper;
import net.minecraft.item.crafting.IRecipe;
public class GalacticCraftHelper {
public static List<IRecipe> compressor = null;
static {
try{
compressor = CompressorRecipes.getRecipeList();
} catch (Exception e) { LogHelper.logError("Error in GalacticCraftHelper", e); }
}
private GalacticCraftHelper() {}
}
Код:
package modtweaker2.mods.galacticcraft.commands;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.item.crafting.IRecipe;
import minetweaker.MineTweakerAPI;
import minetweaker.MineTweakerImplementationAPI;
import minetweaker.api.player.IPlayer;
import minetweaker.api.server.ICommandFunction;
import modtweaker2.helpers.LogHelper;
import modtweaker2.helpers.StringHelper;
import modtweaker2.mods.galacticcraft.GalacticCraftHelper;
public class GalacticCraftLogger implements ICommandFunction {
private static final List<String> validArguments = new LinkedList<String>();
static {
validArguments.add("Compressor");
}
@Override
public void execute(String[] arguments, IPlayer player) {
List<String> args = StringHelper.toLowerCase(Arrays.asList(arguments));
if(!validArguments.containsAll(args)) {
if(player != null) {
player.sendChat(MineTweakerImplementationAPI.platform.getMessage("Invalid atguments for command. Valid arguments: " + StringHelper.join(validArguments, ", ")));
}
} else {
if(args.isEmpty() || args.contains("Compressor")) {
for(IRecipe recipe : GalacticCraftHelper.compressor) {
MineTweakerAPI.logCommand(String.format("mods.galacticcraft.Compressor.addRecipe(%s, %s);",
LogHelper.getStackDescription(recipe.getRecipeOutput()),
LogHelper.getCraftingDescription(recipe)));
}
}
if (player != null) {
player.sendChat(MineTweakerImplementationAPI.platform.getMessage("List generated; see minetweaker.log in your minecraft dir"));
}
}
}
}
Код:
package modtweaker2.mods.galacticcraft.handlers;
import static modtweaker2.helpers.InputHelper.toObjects;
import static modtweaker2.helpers.InputHelper.toShapedObjects;
import static modtweaker2.helpers.InputHelper.toStack;
import java.util.List;
import minetweaker.MineTweakerAPI;
import minetweaker.api.item.IIngredient;
import minetweaker.api.item.IItemStack;
import modtweaker2.helpers.LogHelper;
import modtweaker2.mods.galacticcraft.GalacticCraftHelper;
import modtweaker2.utils.BaseCraftingAddition;
import modtweaker2.utils.BaseCraftingRemoval;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import stanhebben.zenscript.annotations.ZenClass;
import stanhebben.zenscript.annotations.ZenMethod;
@ZenClass("mods.galacticcraft.Compressor")
public class Compressor {
public static final String name = "Galactic Craft Compressor";
///////////////////////////////////////////////////////////////////////////////////////////////
@ZenMethod
public static void addShaped(IItemStack output, IIngredient[][] ingredients) {
MineTweakerAPI.apply(new Add(new ShapedOreRecipe(toStack(output), toShapedObjects(ingredients))));
}
@ZenMethod
public static void addShapeless(IItemStack output, IIngredient[] ingredients) {
MineTweakerAPI.apply(new Add(new ShapelessOreRecipe(toStack(output), toObjects(ingredients))));
}
private static class Add extends BaseCraftingAddition {
public Add(IRecipe recipe) {
super(Compressor.name, GalacticCraftHelper.compressor);
recipes.add(recipe);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ZenMethod
public static void removeRecipe(IIngredient ingredient) {
List<IRecipe> recipes = BaseCraftingRemoval.getRecipes(GalacticCraftHelper.compressor, ingredient);
if(!recipes.isEmpty()) {
MineTweakerAPI.apply(new Remove(recipes));
} else {
LogHelper.logWarning(String.format("No %s Recipes found for %s. Command ignored!", Compressor.name, ingredient.toString()));
}
}
private static class Remove extends BaseCraftingRemoval {
public Remove(List<IRecipe> recipes) {
super(Compressor.name, GalacticCraftHelper.compressor, recipes);
}
}
}