Added versioning.

This commit is contained in:
SirSengir 2012-09-08 21:46:17 +02:00
parent 428d119699
commit 10143101da
15 changed files with 176 additions and 18 deletions

View file

@ -68,6 +68,9 @@
<arg value="install.sh" />
</exec>
<!-- Set build number -->
<buildnumber file="${src.dir}/buildcraft_resources/build.number"/>
<!-- Copy BC source -->
<copy todir="${clientsrc.dir}">
<fileset dir="${src.dir}/common">
@ -75,6 +78,7 @@
</fileset>
<filterset>
<filter token="VERSION" value="${bc.version}" />
<filter token="BUILD_NUMBER" value="${build.number}" />
</filterset>
</copy>

View file

@ -70,6 +70,7 @@ import buildcraft.builders.TileFiller;
import buildcraft.builders.TileMarker;
import buildcraft.builders.TilePathMarker;
import buildcraft.core.DefaultProps;
import buildcraft.core.Version;
import buildcraft.core.blueprints.BptPlayerIndex;
import buildcraft.core.blueprints.BptRootIndex;
import buildcraft.core.network.PacketHandler;
@ -82,7 +83,7 @@ import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.Property;
@Mod(name="BuildCraft Builders", version=DefaultProps.VERSION, useMetadata = false, modid = "BuildCraft|Builders", dependencies = DefaultProps.DEPENDENCY_CORE)
@Mod(name="BuildCraft Builders", version=Version.VERSION, useMetadata = false, modid = "BuildCraft|Builders", dependencies = DefaultProps.DEPENDENCY_CORE)
@NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandler.class, clientSideRequired = true, serverSideRequired = true)
public class BuildCraftBuilders {

View file

@ -17,8 +17,10 @@ import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.Mod.ServerStarting;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
@ -34,6 +36,7 @@ import buildcraft.api.liquids.LiquidStack;
import buildcraft.api.power.PowerFramework;
import buildcraft.core.BlockIndex;
import buildcraft.core.BuildCraftConfiguration;
import buildcraft.core.CommandBuildCraft;
import buildcraft.core.DefaultProps;
import buildcraft.core.EntityEnergyLaser;
import buildcraft.core.EntityLaser;
@ -41,10 +44,10 @@ import buildcraft.core.EntityRobot;
import buildcraft.core.ItemBuildCraft;
import buildcraft.core.ItemWrench;
import buildcraft.core.RedstonePowerFramework;
import buildcraft.core.Version;
import buildcraft.core.blueprints.BptItem;
import buildcraft.core.network.EntityIds;
import buildcraft.core.network.PacketHandler;
//import buildcraft.core.network.ConnectionHandler;
import buildcraft.core.network.PacketUpdate;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.core.triggers.ActionMachineControl;
@ -59,13 +62,14 @@ import buildcraft.core.utils.Localization;
import buildcraft.transport.triggers.TriggerRedstoneInput;
import net.minecraft.src.Block;
import net.minecraft.src.CommandHandler;
import net.minecraft.src.EntityList;
import net.minecraft.src.Item;
import net.minecraft.src.ItemStack;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
@Mod(name="BuildCraft", version=DefaultProps.VERSION, useMetadata = false, modid = "BuildCraft|Core")
@Mod(name="BuildCraft", version=Version.VERSION, useMetadata = false, modid = "BuildCraft|Core")
@NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandler.class, clientSideRequired = true, serverSideRequired = true)
public class BuildCraftCore {
public static enum RenderMode {
@ -138,8 +142,11 @@ public class BuildCraftCore {
@PreInit
public void loadConfiguration(FMLPreInitializationEvent evt) {
Version.versionCheck();
bcLog.setParent(FMLLog.getLogger());
bcLog.info("Starting BuildCraft " + DefaultProps.VERSION);
bcLog.info("Starting BuildCraft " + Version.getVersion());
bcLog.info("Copyright (c) SpaceToad, 2011");
bcLog.info("http://www.mod-buildcraft.com");
@ -253,6 +260,12 @@ public class BuildCraftCore {
}
@ServerStarting
public void serverStarting(FMLServerStartingEvent event) {
CommandHandler commandManager = (CommandHandler)event.getServer().getCommandManager();
commandManager.registerCommand(new CommandBuildCraft());
}
public void loadRecipes() {
GameRegistry.addRecipe(new ItemStack(wrenchItem), "I I", " G ", " I ", Character.valueOf('I'), Item.ingotIron, Character.valueOf('G'), stoneGearItem);
GameRegistry.addRecipe(new ItemStack(woodenGearItem), " S ", "S S", " S ", Character.valueOf('S'), Item.stick);

View file

@ -32,6 +32,7 @@ import buildcraft.api.recipes.RefineryRecipe;
import buildcraft.core.BlockIndex;
import buildcraft.core.DefaultProps;
import buildcraft.core.ItemBuildCraft;
import buildcraft.core.Version;
import buildcraft.core.network.PacketHandler;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.energy.BlockEngine;
@ -56,7 +57,7 @@ import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.Property;
@Mod(name="BuildCraft Energy", version=DefaultProps.VERSION, useMetadata = false, modid = "BuildCraft|Energy", dependencies = DefaultProps.DEPENDENCY_CORE)
@Mod(name="BuildCraft Energy", version=Version.VERSION, useMetadata = false, modid = "BuildCraft|Energy", dependencies = DefaultProps.DEPENDENCY_CORE)
@NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandler.class, clientSideRequired = true, serverSideRequired = true)
public class BuildCraftEnergy {

View file

@ -21,6 +21,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import buildcraft.core.DefaultProps;
import buildcraft.core.Version;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.factory.BlockAutoWorkbench;
import buildcraft.factory.BlockFrame;
@ -54,7 +55,7 @@ import net.minecraft.src.ItemStack;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
@Mod(name="BuildCraft Factory", version=DefaultProps.VERSION, useMetadata = false, modid = "BuildCraft|Factory", dependencies = DefaultProps.DEPENDENCY_CORE)
@Mod(name="BuildCraft Factory", version=Version.VERSION, useMetadata = false, modid = "BuildCraft|Factory", dependencies = DefaultProps.DEPENDENCY_CORE)
@NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandlerFactory.class, clientSideRequired = true, serverSideRequired = true)
public class BuildCraftFactory {

View file

@ -18,6 +18,7 @@ import buildcraft.api.bptblocks.BptBlockRotateMeta;
import buildcraft.api.recipes.AssemblyRecipe;
import buildcraft.core.DefaultProps;
import buildcraft.core.ItemRedstoneChipset;
import buildcraft.core.Version;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.silicon.BlockAssemblyTable;
import buildcraft.silicon.BlockLaser;
@ -33,7 +34,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
@Mod(name="BuildCraft Silicon", version=DefaultProps.VERSION, useMetadata = false, modid = "BuildCraft|Silicon", dependencies = DefaultProps.DEPENDENCY_TRANSPORT)
@Mod(name="BuildCraft Silicon", version=Version.VERSION, useMetadata = false, modid = "BuildCraft|Silicon", dependencies = DefaultProps.DEPENDENCY_TRANSPORT)
@NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandlerSilicon.class, clientSideRequired = true, serverSideRequired = true)
public class BuildCraftSilicon {
public static Item redstoneChipset;

View file

@ -30,6 +30,7 @@ import buildcraft.api.transport.IExtractionHandler;
import buildcraft.api.transport.PipeManager;
import buildcraft.core.DefaultProps;
import buildcraft.core.ItemBuildCraft;
import buildcraft.core.Version;
import buildcraft.transport.BlockGenericPipe;
import buildcraft.transport.GuiHandler;
import buildcraft.transport.ItemFacade;
@ -78,7 +79,7 @@ import net.minecraft.src.World;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
@Mod(version = DefaultProps.VERSION, modid="BuildCraft|Transport", name = "Buildcraft Transport", dependencies=DefaultProps.DEPENDENCY_CORE)
@Mod(version = Version.VERSION, modid="BuildCraft|Transport", name = "Buildcraft Transport", dependencies=DefaultProps.DEPENDENCY_CORE)
@NetworkMod(channels={DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandlerTransport.class)
public class BuildCraftTransport {
public static BlockGenericPipe genericPipeBlock;

View file

@ -31,7 +31,7 @@ public class BuildCraftConfiguration extends Configuration {
} else
versionProp = generalProperties.get("version");
versionProp.value = DefaultProps.VERSION;
versionProp.value = Version.VERSION;
super.save();
}

View file

@ -0,0 +1,55 @@
package buildcraft.core;
import java.util.List;
import buildcraft.core.proxy.CoreProxy;
import net.minecraft.src.CommandBase;
import net.minecraft.src.ICommand;
import net.minecraft.src.ICommandSender;
import net.minecraft.src.WrongUsageException;
public class CommandBuildCraft extends CommandBase {
@Override
public int compareTo(Object arg0) {
return this.getCommandName().compareTo(((ICommand)arg0).getCommandName());
}
@Override
public String getCommandName() {
return "buildcraft";
}
@Override
public String getCommandUsage(ICommandSender sender) {
return "/" + this.getCommandName() + " help";
}
@Override public List getCommandAliases() { return null; }
@Override
public void processCommand(ICommandSender sender, String[] arguments) {
if (arguments.length <= 0)
throw new WrongUsageException("Type '" + this.getCommandUsage(sender) + "' for help.");
if(arguments[0].matches("version")) {
commandVersion(sender, arguments);
return;
} else if(arguments[0].matches("help")) {
sender.sendChatToPlayer("Format: '"+ this.getCommandName() +" <command> <arguments>'");
sender.sendChatToPlayer("Available commands:");
sender.sendChatToPlayer("- version : Version information.");
return;
}
throw new WrongUsageException(this.getCommandUsage(sender));
}
private void commandVersion(ICommandSender sender, String[] arguments) {
sender.sendChatToPlayer(String.format("BuildCraft %s for Minecraft %s (Latest: %s).", Version.getVersion(), CoreProxy.proxy.getMinecraftVersion(), Version.getRecommendedVersion()));
}
}

View file

@ -11,10 +11,10 @@ package buildcraft.core;
public class DefaultProps {
public static final String VERSION = "@VERSION@";
public static final String MOD = "BuildCraft";
public static final String DEPENDENCY_CORE = "required-after:BuildCraft|Core@"+VERSION;
public static final String DEPENDENCY_TRANSPORT = "required-after:BuildCraft|Transport@"+VERSION;
public static final String DEPENDENCY_CORE = "required-after:BuildCraft|Core@"+Version.VERSION;
public static final String DEPENDENCY_TRANSPORT = "required-after:BuildCraft|Transport@"+Version.VERSION;
public static int WORLD_HEIGHT = 256;
public static final String NET_CHANNEL_NAME = "BC";

View file

@ -0,0 +1,79 @@
package buildcraft.core;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import buildcraft.core.proxy.CoreProxy;
import cpw.mods.fml.common.FMLLog;
public class Version {
public enum EnumUpdateState { CURRENT, OUTDATED, CONNECTION_ERROR }
public static final String VERSION = "@VERSION@";
public static final String BUILD_NUMBER = "@BUILD_NUMBER@";
private static final String REMOTE_VERSION_FILE = "http://bit.ly/buildcraftver";
public static EnumUpdateState currentVersion = EnumUpdateState.CURRENT;
public static final int FORGE_VERSION_MAJOR = 4;
public static final int FORGE_VERSION_MINOR = 0;
public static final int FORGE_VERSION_PATCH = 0;
private static String recommendedVersion;
public static String getVersion() {
return VERSION + " (:"+ BUILD_NUMBER +")";
}
public static String getRecommendedVersion() {
return recommendedVersion;
}
public static void versionCheck() {
try {
String location = REMOTE_VERSION_FILE;
HttpURLConnection conn = null;
while(location != null && !location.isEmpty()) {
URL url = new URL(location);
conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)");
conn.connect();
location = conn.getHeaderField("Location");
}
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
String mcVersion = CoreProxy.proxy.getMinecraftVersion();
while ((line = reader.readLine()) != null) {
if (line.startsWith(mcVersion)) {
if (line.contains(DefaultProps.MOD)) {
String[] tokens = line.split(":");
recommendedVersion = tokens[2];
if (line.endsWith(VERSION)) {
FMLLog.finer(DefaultProps.MOD + ": Using the latest version ["+ getVersion() +"] for Minecraft " + mcVersion);
currentVersion = EnumUpdateState.CURRENT;
return;
}
}
}
}
FMLLog.warning(DefaultProps.MOD + ": Using outdated version ["+ VERSION +" (build:"+ BUILD_NUMBER +")] for Minecraft " + mcVersion + ". Consider updating.");
currentVersion = EnumUpdateState.OUTDATED;
} catch (Exception e) {
e.printStackTrace();
FMLLog.warning(DefaultProps.MOD + ": Unable to read from remote version authority.");
currentVersion = EnumUpdateState.CONNECTION_ERROR;
}
}
}

View file

@ -22,7 +22,7 @@ import java.io.UnsupportedEncodingException;
import buildcraft.BuildCraftCore;
import buildcraft.core.Box;
import buildcraft.core.DefaultProps;
import buildcraft.core.Version;
import buildcraft.core.proxy.CoreProxy;
public abstract class BptBase {
@ -116,7 +116,7 @@ public abstract class BptBase {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "8859_1"));
writer.write("version:" + DefaultProps.VERSION);
writer.write("version:" + Version.VERSION);
writer.newLine();
if (this instanceof BptTemplate)

View file

@ -37,6 +37,8 @@ public class CoreProxy {
@SidedProxy(clientSide="buildcraft.core.proxy.CoreProxyClient", serverSide="buildcraft.core.proxy.CoreProxy")
public static CoreProxy proxy;
public String getMinecraftVersion() { return "1.3.2"; }
/* INSTANCES */
public Object getClient() { return null; }
public World getClientWorld() { return null; }

View file

@ -14,7 +14,7 @@ import buildcraft.api.blueprints.BptBlock;
import buildcraft.api.blueprints.BptSlotInfo;
import buildcraft.api.blueprints.IBptContext;
import buildcraft.api.core.Orientations;
import buildcraft.core.DefaultProps;
import buildcraft.core.Version;
import net.minecraft.src.Block;
public class BptBlockEngine extends BptBlock {
@ -53,7 +53,7 @@ public class BptBlockEngine extends BptBlock {
BlockSignature sig = super.getSignature(block);
sig.mod = "BuildCraftEnergy";
sig.modVersion = DefaultProps.VERSION;
sig.modVersion = Version.VERSION;
return sig;
}

View file

@ -19,7 +19,7 @@ import buildcraft.api.blueprints.BptSlotInfo;
import buildcraft.api.blueprints.IBptContext;
import buildcraft.api.gates.ActionManager;
import buildcraft.api.gates.TriggerParameter;
import buildcraft.core.DefaultProps;
import buildcraft.core.Version;
import buildcraft.transport.BlockGenericPipe;
import buildcraft.transport.Gate;
import buildcraft.transport.GateVanilla;
@ -169,7 +169,7 @@ public class BptBlockPipe extends BptBlock {
BlockSignature sig = super.getSignature(block);
sig.mod = "BuildCraftTransport";
sig.modVersion = DefaultProps.VERSION;
sig.modVersion = Version.VERSION;
return sig;
}