package minechess.common; import java.io.File; import minechess.common.ai.Chess; import minechess.common.network.NetworkHandler; import net.minecraft.command.ServerCommandManager; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import net.minecraftforge.fml.common.registry.EntityRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; /** * MineChess * @author MineMaarten * www.minemaarten.com * @license Lesser GNU Public License v3 (http://www.gnu.org/licenses/lgpl.html) */ // TODO increase version @Mod(modid = Constants.MOD_ID, name = "MineChess", version = "1.4.1") public class MineChess{ @SidedProxy(clientSide = "minechess.client.ClientProxyMineChess", serverSide = "minechess.common.CommonProxyMineChess") public static CommonProxyMineChess proxy; @Instance(Constants.MOD_ID) public static MineChess instance = new MineChess(); public static final boolean DEBUG = false; public static Item itemPieceMover; public static boolean configRenderMovement; public static int configWorldgenPuzzleUnderground; public static Property propertyAIDepth; //globally declared so we can the change the config with the /aidepth command. public static Configuration config; @EventHandler public void PreInit(FMLPreInitializationEvent event){ File configFile = event.getSuggestedConfigurationFile(); File oldConfig = new File(configFile.getAbsolutePath().replace("MineChess", "Minemaarten_Chess Mod")); if(oldConfig.exists()) configFile = oldConfig; Configuration config = new Configuration(configFile); config.load(); Property PropertyRenderMovement = config.get(Configuration.CATEGORY_GENERAL, "Display possible moves", true); PropertyRenderMovement.comment = "Setting this to false doesn't show the green tiles indicating the possible moves of the current selected chesspiece."; configRenderMovement = PropertyRenderMovement.getBoolean(false); Property PropertyPuzzleUnderground = config.get(Configuration.CATEGORY_GENERAL, "Spawnrate of underground Chess Puzzles", 40); PropertyPuzzleUnderground.comment = "Determines the spawnrate of the underground chess puzzles. The lesser the number, the more spawns. Set to 0 to completely disable the spawns."; configWorldgenPuzzleUnderground = PropertyPuzzleUnderground.getInt(); propertyAIDepth = config.get("AI settings", "AI depth", 5); propertyAIDepth.comment = "Determines the difficulty of the AI. This can also be changed in-game by using the command \"aidepth <depth>\". The default is quite a challenge and takes about 30 seconds before making a move. Decreasing the number lowers the diffuculty quite severely. Increasing it is also possible, but take more time in account."; Chess.maxDepthSetting = propertyAIDepth.getInt(); config.save(); itemPieceMover = new ItemPieceMover().setCreativeTab(CreativeTabs.tabTools).setUnlocalizedName("pieceMover"); gameRegisters(); proxy.registerHandlers(); AchievementHandler.init(); } @EventHandler public void load(FMLInitializationEvent event){ proxy.registerRenders(); NetworkHandler.init(); } public void gameRegisters(){ GameRegistry.registerItem(itemPieceMover, "pieceMover", Constants.MOD_ID); ItemStack chessColumn = new ItemStack(itemPieceMover, 1, 3); ItemStack blackWool = new ItemStack(Blocks.wool, 1, 15); ItemStack whiteWool = new ItemStack(Blocks.wool, 1, 0); // crafting recipes // piece movers for(int i = 0; i < 2; i++) { GameRegistry.addRecipe(new ItemStack(itemPieceMover, 1, 1 - i), " ww", " ww", "s ", 'w', new ItemStack(Blocks.wool, 1, i * 15), 's', new ItemStack(Items.stick)); } GameRegistry.addShapelessRecipe(new ItemStack(itemPieceMover, 1, 2), chessColumn, chessColumn, chessColumn, chessColumn, chessColumn, chessColumn, chessColumn, chessColumn); GameRegistry.addShapelessRecipe(chessColumn, blackWool, blackWool, blackWool, blackWool, whiteWool, whiteWool, whiteWool, whiteWool); // Entities // parms: entity class, mobname (for spawners), id, modclass, max player // distance for update, update frequency, boolean keep server updated // about velocities. EntityRegistry.registerModEntity(EntityKing.class, "King", 0, this, 80, 1, true); EntityRegistry.registerModEntity(EntityRook.class, "Rook", 1, this, 80, 1, true); EntityRegistry.registerModEntity(EntityPawn.class, "Pawn", 2, this, 80, 1, true); EntityRegistry.registerModEntity(EntityKnight.class, "Knight", 3, this, 80, 1, true); EntityRegistry.registerModEntity(EntityQueen.class, "Queen", 4, this, 80, 1, true); EntityRegistry.registerModEntity(EntityBishop.class, "Bishop", 5, this, 80, 1, true); EntityRegistry.registerModEntity(EntityPickyXPOrb.class, "Picky XP Orb", 6, this, 80, 1, true); // worldgenerators GameRegistry.registerWorldGenerator(new WorldGeneratorMineChess(), 0); } @EventHandler public void onServerStart(FMLServerStartingEvent event){ ServerCommandManager comManager = (ServerCommandManager)MinecraftServer.getServer().getCommandManager(); comManager.registerCommand(new CommandAIDepth()); comManager.registerCommand(new CommandKillPiece()); comManager.registerCommand(new CommandDraw()); } }