Advertisement
Guest User

Untitled

a guest
Jan 16th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.77 KB | None | 0 0
  1. package waDelma.tinyblocks;
  2.  
  3. import java.io.File;
  4. import java.lang.reflect.Constructor;
  5. import java.lang.reflect.Field;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8.  
  9. import net.minecraft.client.Minecraft;
  10. import net.minecraft.server.MinecraftServer;
  11. import net.minecraft.item.EnumToolMaterial;
  12. import net.minecraft.client.settings.KeyBinding;
  13. import net.minecraftforge.common.Configuration;
  14. import net.minecraftforge.common.EnumHelper;
  15. import net.minecraftforge.common.MinecraftForge;
  16. import waDelma.tinyblocks.UI.PacketHandlerTinyblock;
  17. import waDelma.tinyblocks.UI.TinyblockKeyHandler;
  18. import waDelma.tinyblocks.UI.TinyblockTicker;
  19. import waDelma.tinyblocks.UI.UIHandler;
  20. import waDelma.tinyblocks.block.BlockTinyblock;
  21. import waDelma.tinyblocks.block.ItemTinyBlock;
  22. import waDelma.tinyblocks.block.TileEntityTinyblock;
  23. import waDelma.tinyblocks.handlers.CraftingHandler;
  24. import waDelma.tinyblocks.items.ItemGlue;
  25. import waDelma.tinyblocks.items.ItemOpticTransformer;
  26. import waDelma.tinyblocks.items.ItemSaw;
  27. import waDelma.tinyblocks.items.ItemStoneStick;
  28. import cpw.mods.fml.client.FMLClientHandler;
  29. import cpw.mods.fml.client.registry.KeyBindingRegistry;
  30. import cpw.mods.fml.client.registry.RenderingRegistry;
  31. import cpw.mods.fml.common.Mod;
  32. import cpw.mods.fml.common.Mod.Block;
  33. import cpw.mods.fml.common.Mod.Init;
  34. import cpw.mods.fml.common.Mod.Instance;
  35. import cpw.mods.fml.common.Mod.Item;
  36. import cpw.mods.fml.common.Mod.Metadata;
  37. import cpw.mods.fml.common.Mod.PreInit;
  38. import cpw.mods.fml.common.ModMetadata;
  39. import cpw.mods.fml.relauncher.Side;
  40. import cpw.mods.fml.relauncher.SideOnly;
  41. import cpw.mods.fml.common.event.FMLInitializationEvent;
  42. import cpw.mods.fml.common.event.FMLPreInitializationEvent;
  43. import cpw.mods.fml.common.network.NetworkMod;
  44. import cpw.mods.fml.common.network.NetworkRegistry;
  45. import cpw.mods.fml.common.registry.GameRegistry;
  46. import cpw.mods.fml.common.registry.TickRegistry;
  47. import cpw.mods.fml.server.FMLServerHandler;
  48.  
  49. @Mod(modid = "Tinyblock", name = "Tinyblock", version = "1.4.5 V1")
  50. @NetworkMod(clientSideRequired = true, channels = { "keyPress" }, packetHandler = PacketHandlerTinyblock.class)
  51. public class mod_tinyblock {
  52.  
  53. /*
  54. * Because I care not which ID is default...
  55. */
  56. private static final int MAX_BLOCK_ID = net.minecraft.block.Block.blocksList.length - 1;
  57. private static final int MAX_ITEM_ID = net.minecraft.item.Item.itemsList.length - 1 - 256;
  58. public static final String CATEGORY_NAME = "names";
  59. public static final String CATEGORY_UI = "UI";
  60. private int defaultKey = 46;// c
  61. private String configFilePath = "/config/Tinyblock.cfg";
  62. private String keyBingingDescription = "Use saw/glue tool";
  63. public String TinyblockTag = "Tinyblock";
  64.  
  65. @SideOnly(Side.CLIENT)
  66. public KeyBinding uiKey;
  67.  
  68. // private File configFile;
  69. private Configuration config;
  70.  
  71. // private static int opticTransformerDefaultID = 2019;
  72.  
  73. // public int opticTransformerID;
  74.  
  75. @Item(name = "opticTransformer", typeClass = "ItemOpticTransformer.class")
  76. public static ItemOpticTransformer opticTransformer;
  77.  
  78. private static int tinyblocksDefaultID = 150;
  79.  
  80. // private static int sawDefaultIDWooden = 2012;
  81. // private static int sawDefaultIDIron = 2013;
  82. // private static int sawDefaultIDDiamond = 2014;
  83. // private static int sawDefaultIDFiery = 2015;
  84. //
  85. // private static int glueDefaultIDWeak = 2016;
  86. // private static int glueDefaultIDMedium = 2017;
  87. // private static int glueDefaultIDStrong = 2018;
  88.  
  89. private static EnumToolMaterial FIERY;
  90.  
  91. // SAWS
  92. @Material("WOOD")
  93. @Item(name = "sawWooden", typeClass = "ItemSaw.class")
  94. private ItemSaw sawWooden;
  95.  
  96. @Material("IRON")
  97. @Item(name = "sawIron", typeClass = "ItemSaw.class")
  98. private ItemSaw sawIron;
  99.  
  100. @Material("EMERALD")
  101. @Item(name = "sawDiamond", typeClass = "ItemSaw.class")
  102. private ItemSaw sawDiamond;
  103.  
  104. @Material("FIERY")
  105. @Item(name = "sawFiery", typeClass = "ItemSaw.class")
  106. private ItemSaw sawFiery;
  107.  
  108. // GLUES
  109. @Material("WOOD")
  110. @Item(name = "glueWeak", typeClass = "ItemGlue.class")
  111. private ItemGlue glueWeak;
  112.  
  113. @Material("IRON")
  114. @Item(name = "glueMedium", typeClass = "ItemGlue.class")
  115. private ItemGlue glueMedium;
  116.  
  117. @Material("EMERALD")
  118. @Item(name = "glueStrong", typeClass = "ItemGlue.class")
  119. private ItemGlue glueStrong;
  120.  
  121. @Item(name = "stoneStick", typeClass = "ItemStoneStick.class")
  122. public ItemStoneStick stoneStick;
  123.  
  124. @Metadata
  125. public ModMetadata meta;
  126. // private String path;
  127. private TinyblockKeyHandler keyhandler;
  128. //private List<Integer> listItemID;
  129.  
  130. public UIHandler uiHandler;
  131.  
  132. public String texturePath = "/texture/tinyblock_items.png";
  133. public String defaultTexturesPath = "/terrain.png";
  134. public int defaultColor = 0xf0f0f0;
  135. public int maxStacksize = 8 * 64;
  136.  
  137. @SideOnly(Side.CLIENT)
  138. public int tinyBlockRenderID;
  139. // private static int tinyblockID;
  140. public RendererTinyblock renderer;
  141. // public static RendererTinyblockItem itemRenderer;
  142.  
  143. @SideOnly(Side.SERVER)
  144. public MinecraftServer server;
  145.  
  146. @SideOnly(Side.CLIENT)
  147. public Minecraft client;
  148.  
  149. @Block(name = "tinyblock", itemTypeClass = ItemTinyBlock.class)
  150. public BlockTinyblock tinyblock;
  151.  
  152. // public static Random random;
  153.  
  154. public String opticTransformerName = "Optic Transformer";
  155. public String stoneStickName = "Stone Stick";
  156.  
  157. public String[] sawNames = new String[] { "Wooden Saw", "Iron Saw",
  158. "Diamond Saw", "Fiery Saw" };
  159.  
  160. public String[] glueNames = new String[] { "Tar Glue", "Mixed Glue",
  161. "Slime Glue" };
  162. private RecipeManager recipeManager;
  163.  
  164. @Instance
  165. private static mod_tinyblock instance;
  166.  
  167. public static mod_tinyblock instance() {
  168. return instance;
  169. }
  170.  
  171. @PreInit
  172. public void preinit(FMLPreInitializationEvent event) {
  173. addInformationToModMeta();
  174.  
  175. //listItemID = new ArrayList<Integer>();
  176. tinyblock = new BlockTinyblock(tinyblocksDefaultID);
  177. GameRegistry.registerBlock(tinyblock, ItemTinyBlock.class,
  178. TinyblockTag, meta.modId);
  179. GameRegistry
  180. .registerTileEntity(TileEntityTinyblock.class, TinyblockTag);
  181. NetworkRegistry.instance().registerGuiHandler(this, null);
  182. FIERY = EnumHelper.addToolMaterial("FIERY", 3, 3500, 6, 2, 16);
  183. GameRegistry.registerCraftingHandler(new CraftingHandler());
  184. }
  185.  
  186. private void addInformationToModMeta() {
  187. meta.url = "www.minecraftforum.net/topic/1138677-125/";
  188. meta.credits = "MrBaconsock for original idea. Yoshi9048, PyroNox and Nocte for fleshing out original idea. ashly138 for making textures.";
  189. meta.authorList = new ArrayList();
  190. meta.authorList.add("Wa_delma");
  191. meta.description = "Allows you to cut both vanilla and modded whole blocks to size of eight of the blocks.";
  192. meta.screenshots = new String[] { "http://i.imgur.com/rHD7R.png" };
  193. meta.autogenerated = false;
  194. }
  195.  
  196. public void populateItems() {
  197. for (Field field : this.getClass().getDeclaredFields()) {
  198. Item aItem = field.getAnnotation(Item.class);
  199. if (aItem != null) {
  200. try {
  201. Class c = field.getType();
  202. Constructor cons = c.getConstructors()[0];
  203. net.minecraft.item.Item item = (net.minecraft.item.Item) cons
  204. .newInstance(config.getItem(aItem.name(),
  205. MAX_ITEM_ID).getInt());
  206. item.setItemName(aItem.name());
  207. populateMaterial(field, item);
  208. field.set(this, item);
  209. } catch (Exception e) {
  210. e.printStackTrace();
  211. }
  212. }
  213. }
  214. }
  215.  
  216. private void populateMaterial(Field field, net.minecraft.item.Item item) {
  217. Material material = field.getAnnotation(Material.class);
  218. if (material != null) {
  219. EnumToolMaterial toolMaterial = EnumToolMaterial.valueOf(material
  220. .value());
  221. item.setMaxDamage(toolMaterial.getMaxUses() * 4);
  222. }
  223. }
  224.  
  225. // private int getFree() {
  226. // for (int n = 1; n < net.minecraft.item.Item.itemsList.length; n++) {
  227. // if (net.minecraft.item.Item.itemsList[n] == null
  228. // && !listItemID.contains(n)) {
  229. // listItemID.add(n);
  230. // return n;
  231. // }
  232. // }
  233. // return -1;
  234. // }
  235.  
  236. @Init
  237. @SideOnly(Side.SERVER)
  238. public void initServer(FMLInitializationEvent event) {
  239. server = FMLServerHandler.instance().getServer();
  240. loadServerConfig();
  241. recipeManager = new RecipeManager();
  242. }
  243.  
  244. @Init
  245. @SideOnly(Side.CLIENT)
  246. public void initClient(FMLInitializationEvent event) {
  247. // Packet packet = new PacketAskConfig();
  248. // FMLClientHandler.instance().sendPacket(packet);
  249. client = FMLClientHandler.instance().getClient();
  250. loadClientConfig();
  251. recipeManager = new RecipeManager();
  252.  
  253. uiHandler = new UIHandler(client);
  254. TickRegistry.registerTickHandler(new TinyblockTicker(uiHandler),
  255. Side.CLIENT);
  256. uiKey = new KeyBinding(keyBingingDescription, defaultKey);
  257. keyhandler = new TinyblockKeyHandler(uiKey, uiHandler);
  258. KeyBindingRegistry.registerKeyBinding(keyhandler);
  259.  
  260. renderer = new RendererTinyblock();
  261. tinyBlockRenderID = RenderingRegistry.getNextAvailableRenderId();
  262. RenderingRegistry.registerBlockHandler(tinyBlockRenderID, renderer);
  263.  
  264. MinecraftForge.EVENT_BUS
  265. .register(new TinyblockDrawBlockHighlightEvent());
  266. // itemRenderer = new RendererTinyblockItem();
  267. // MinecraftForgeClient.registerItemRenderer(tinyblock.blockID,
  268. // itemRenderer);
  269. }
  270.  
  271. @SideOnly(Side.SERVER)
  272. public void loadServerConfig() {
  273. createConfig(server.getFile(configFilePath), new ConfigAdder() {
  274.  
  275. @Override
  276. public void add() {
  277.  
  278. }
  279. });
  280.  
  281. /*
  282. * tinyblockID = config.getBlockID(TinyblockTag, tinyblocksDefaultID);
  283. *
  284. * sawIDs[0] = config.getItemID(sawNames[0], sawDefaultIDWooden);
  285. * sawIDs[1] = config.getItemID(sawNames[1], sawDefaultIDIron);
  286. * sawIDs[2] = config.getItemID(sawNames[2], sawDefaultIDDiamond);
  287. * sawIDs[3] = config.getItemID(sawNames[3], sawDefaultIDFiery);
  288. *
  289. * glueIDs[0] = config.getItemID(glueNames[0], glueDefaultIDWeak);
  290. * glueIDs[1] = config.getItemID(glueNames[1], glueDefaultIDMedium);
  291. * glueIDs[2] = config.getItemID(glueNames[2], glueDefaultIDStrong);
  292. *
  293. * opticTransformerID = config.getItemID(opticTransformerTag,
  294. * opticTransformerDefaultID);
  295. */
  296. // uihandler = new UIHandler(minecraft, config);
  297. }
  298.  
  299. @SideOnly(Side.CLIENT)
  300. private void loadClientConfig() {
  301. createConfig(new File(client.mcDataDir, configFilePath),
  302. new ConfigAdder() {
  303.  
  304. @Override
  305. public void add() {
  306. UIHandler.setValues(config);
  307. }
  308. });
  309. }
  310.  
  311. private void createConfig(File configFile, ConfigAdder adder) {
  312. config = new Configuration(configFile);
  313. config.load();
  314. adder.add();
  315. getNames(sawNames);
  316. getNames(glueNames);
  317. populateItems();
  318. config.save();
  319. // uihandler = new UIHandler(client, config);
  320.  
  321. }
  322.  
  323. private void getNames(String[] names) {
  324. for (String name : names) {
  325. name = config.get(CATEGORY_NAME, name.replace(" ", ""), name).value;
  326. }
  327. }
  328.  
  329. /*
  330. * @Override public String getVersion(){ return version; }
  331. */
  332.  
  333. /*
  334. * @Override public void keyboardEvent(KeyBinding keybinding){
  335. * if(keybinding.equals(UIkey)){ uihandler.UIKey(); } }
  336. */
  337.  
  338. /*
  339. * @Override public void load(){ minecraft =
  340. * ModLoader.getMinecraftInstance(); random = new Random(); UIkey = new
  341. * KeyBinding(keyBingingDescription, defaultKey); TinyBlockRenderID =
  342. * ModLoader.getUniqueBlockModelID(this, false);
  343. *
  344. * itemRenderer = new RendererTinyblockItem(); blockRenderer = new
  345. * RendererTinyblockBlock(minecraft.theWorld);
  346. *
  347. * ModLoader.registerKey(this, UIkey, false);
  348. * MinecraftForgeClient.preloadTexture(defaultTexturesPath);
  349. *
  350. * MinecraftForgeClient.registerItemRenderer(tinyblockID, itemRenderer);
  351. * //MinecraftForgeClient.registerRenderLastHandler(sawRenderer);
  352. *
  353. * tinyblock = new BlockTinyblock(tinyblockID);
  354. *
  355. * int l = 256;//Block.blocksList.length; sawWooden = new ItemSaw(sawIDs[0]
  356. * - l, 0); sawIron = new ItemSaw(sawIDs[1] - l, 1); sawDiamond = new
  357. * ItemSaw(sawIDs[2] - l, 2); sawFiery = new ItemSaw(sawIDs[3] - l, 3);
  358. *
  359. * glueWeak = new ItemGlue(glueIDs[0] - l, 0); glueMedium = new
  360. * ItemGlue(glueIDs[1] - l, 1); glueStrong = new ItemGlue(glueIDs[2] - l,
  361. * 2);
  362. *
  363. * opticTransformer = new ItemOpticTransformer(opticTransformerID);
  364. *
  365. * MinecraftForge.EVENT_BUS.register(new
  366. * TinyblockDrawBlockHighlightEvent());
  367. * MinecraftForge.EVENT_BUS.register(new
  368. * TinyblockEventSaveHandler(minecraft));
  369. *
  370. * ModLoader.registerBlock(tinyblock, ItemTinyBlock.class);
  371. * ModLoader.registerTileEntity(TileEntityTinyblock.class, TinyblockTag);
  372. *
  373. * ModLoader.setInGameHook(this, true, false);
  374. *
  375. * ModLoader.addRecipe(new ItemStack(opticTransformer, 1, 0), new
  376. * Object[]{" GR", " BG", "D ", 'B', new ItemStack(Item.blazeRod, 1, 0),
  377. * 'G', new ItemStack(Item.ingotGold, 1, 0), 'D', new
  378. * ItemStack(Item.diamond, 1, 0), 'R', new ItemStack(Item.redstone, 1, 0)});
  379. *
  380. * //Saw recipes: ModLoader.addRecipe(new ItemStack(sawWooden, 1, 0), new
  381. * Object[]{"HSS", "HSS", "H ", 'H', new ItemStack(Item.stick, 1, 0), 'S',
  382. * new ItemStack(Block.stone, 1, 0)}); ModLoader.addRecipe(new
  383. * ItemStack(sawIron, 1, 0), new Object[]{"HSS", "HSS", "H ", 'H', new
  384. * ItemStack(Block.stone, 1, 0), 'S', new ItemStack(Item.ingotIron, 1, 0)});
  385. * ModLoader.addRecipe(new ItemStack(sawDiamond, 1, 0), new Object[]{"HWS",
  386. * "HWS", "H ", 'H', new ItemStack(Block.stone, 1, 0), 'W', new
  387. * ItemStack(Item.ingotIron, 1, 0), 'S', new ItemStack(Item.diamond, 1,
  388. * 0)}); ModLoader.addRecipe(new ItemStack(sawFiery, 1, 0), new
  389. * Object[]{"HWS", "HWS", "H ", 'H', new ItemStack(Item.blazeRod, 1, 0),
  390. * 'W', new ItemStack(Item.ingotIron, 1, 0), 'S', new
  391. * ItemStack(Item.diamond, 1, 0)});
  392. *
  393. * //Glue recipes: ModLoader.addShapelessRecipe(new ItemStack(glueWeak, 1,
  394. * 0), new Object[]{new ItemStack(Block.wood, 1, 2), new
  395. * ItemStack(Block.wood, 1, 2), new ItemStack(Item.glassBottle, 1, 0), new
  396. * ItemStack(Item.coal, 1, 0)}); ModLoader.addShapelessRecipe(new
  397. * ItemStack(glueMedium, 1, 0), new Object[]{new ItemStack(Block.wood, 1,
  398. * 2), new ItemStack(Item.slimeBall, 1, 0), new ItemStack(Item.glassBottle,
  399. * 1, 0), new ItemStack(Item.coal, 1, 0)}); ModLoader.addShapelessRecipe(new
  400. * ItemStack(glueStrong, 1, 0), new Object[]{new ItemStack(Item.slimeBall,
  401. * 1, 0), new ItemStack(Item.slimeBall, 1, 0), new
  402. * ItemStack(Item.glassBottle, 1, 0), new ItemStack(Item.coal, 1, 0)}); }
  403. */
  404.  
  405. /*
  406. * @Override public boolean onTickInGame(float partialTicks, Minecraft
  407. * minecraft){ EntityPlayer player = minecraft.thePlayer;
  408. * if(!minecraft.inGameHasFocus || player.getSleepTimer() > 0 ||
  409. * player.capabilities.isCreativeMode || player.worldObj.isRemote) return
  410. * true; return uihandler.UIRender(); //return true; }
  411. */
  412.  
  413. /*
  414. * @Override public boolean renderWorldBlock(RenderBlocks renderblocks,
  415. * IBlockAccess iblockaccess, int i, int j, int k, Block block, int l){
  416. * return blockRenderer.renderTinyblock(iblockaccess, i, j, k, l,
  417. * renderblocks, block); }
  418. */
  419.  
  420. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement