144 lines
4.6 KiB
Java
Executable File
144 lines
4.6 KiB
Java
Executable File
/**
|
|
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
|
|
* http://www.mod-buildcraft.com
|
|
*
|
|
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
|
* License 1.0, or MMPL. Please check the contents of the license located in
|
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
|
*/
|
|
package buildcraft.tests;
|
|
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
|
|
import joptsimple.ArgumentAcceptingOptionSpec;
|
|
import joptsimple.OptionParser;
|
|
import joptsimple.OptionSet;
|
|
import joptsimple.OptionSpecBuilder;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.nbt.CompressedStreamTools;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.world.WorldServer;
|
|
|
|
import cpw.mods.fml.common.FMLCommonHandler;
|
|
import cpw.mods.fml.common.Mod;
|
|
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
|
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
|
import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent;
|
|
import cpw.mods.fml.common.network.NetworkRegistry;
|
|
|
|
import buildcraft.BuildCraftMod;
|
|
import buildcraft.core.DefaultProps;
|
|
import buildcraft.core.Version;
|
|
import buildcraft.core.proxy.CoreProxy;
|
|
import buildcraft.tests.testcase.BlockTestCase;
|
|
import buildcraft.tests.testcase.Sequence;
|
|
import buildcraft.tests.testcase.SequenceActionCheckBlockMeta;
|
|
import buildcraft.tests.testcase.SequenceActionUseItem;
|
|
import buildcraft.tests.testcase.TileTestCase;
|
|
|
|
@Mod(name = "BuildCraft Tests", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Tests", dependencies = DefaultProps.DEPENDENCY_CORE)
|
|
public class BuildCraftTests extends BuildCraftMod {
|
|
|
|
public static Block blockTestPathfinding;
|
|
public static Block blockTestCase;
|
|
|
|
public static Item tester;
|
|
|
|
@Mod.Instance("BuildCraft|Tests")
|
|
public static BuildCraftTests instance;
|
|
|
|
private long startTestTime = 0;
|
|
private String testFile = "";
|
|
private Sequence testSequence;
|
|
|
|
private boolean quitAfterRun = false;
|
|
|
|
@Mod.EventHandler
|
|
public void preInit(FMLPreInitializationEvent evt) {
|
|
blockTestPathfinding = new BlockTestPathfinding();
|
|
CoreProxy.proxy.registerBlock(blockTestPathfinding);
|
|
blockTestPathfinding.setBlockName("testPathFinding");
|
|
CoreProxy.proxy.registerTileEntity(TileTestPathfinding.class, "net.minecraft.src.builders.TileTestPathfinding");
|
|
|
|
blockTestCase = new BlockTestCase();
|
|
blockTestCase.setBlockName("testCase");
|
|
CoreProxy.proxy.registerBlock(blockTestCase);
|
|
CoreProxy.proxy.registerTileEntity(TileTestCase.class, "buildcraft.tests.testcase.TileTestCase");
|
|
|
|
tester = new ItemTester();
|
|
tester.setUnlocalizedName("tester");
|
|
CoreProxy.proxy.registerItem(tester);
|
|
|
|
Sequence.registerSequenceAction("useItem", SequenceActionUseItem.class);
|
|
Sequence.registerSequenceAction("checkBlockMeta", SequenceActionCheckBlockMeta.class);
|
|
}
|
|
|
|
@Mod.EventHandler
|
|
public void load(FMLInitializationEvent evt) {
|
|
NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
|
|
|
|
String commandLine = System.getProperty("sun.java.command");
|
|
OptionParser optionparser = new OptionParser();
|
|
optionparser.allowsUnrecognizedOptions();
|
|
|
|
ArgumentAcceptingOptionSpec<String> testOption = optionparser.accepts("test").withRequiredArg();
|
|
OptionSpecBuilder quitOption = optionparser.accepts("quit");
|
|
|
|
OptionSet optionset = optionparser.parse(commandLine.split(" "));
|
|
testFile = optionset.valueOf(testOption);
|
|
quitAfterRun = optionset.has(quitOption);
|
|
|
|
if (testFile != null && !"".equals(testFile)) {
|
|
FMLCommonHandler.instance().bus().register(this);
|
|
System.out.println("[TEST 0] [LOAD TEST] \"" + testFile + "\"");
|
|
}
|
|
}
|
|
|
|
@SubscribeEvent
|
|
public void tick(WorldTickEvent evt) {
|
|
WorldServer world = MinecraftServer.getServer().worldServers[0];
|
|
long time = world.getTotalWorldTime();
|
|
|
|
if (startTestTime == 0) {
|
|
startTestTime = time;
|
|
} else if (testSequence == null) {
|
|
if (time - startTestTime > 10) {
|
|
|
|
try {
|
|
testSequence = new Sequence(world);
|
|
|
|
File file = new File(testFile);
|
|
FileInputStream f = new FileInputStream(file);
|
|
byte[] data = new byte[(int) file.length()];
|
|
f.read(data);
|
|
f.close();
|
|
|
|
NBTTagCompound nbt = CompressedStreamTools.decompress(data);
|
|
|
|
testSequence.readFromNBT(nbt);
|
|
} catch (FileNotFoundException e) {
|
|
e.printStackTrace();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
} else {
|
|
if (!testSequence.done()) {
|
|
testSequence.iterate();
|
|
} else {
|
|
if (quitAfterRun) {
|
|
MinecraftServer.getServer().stopServer();
|
|
System.exit(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|