MinecraftMart Posted February 23, 2014 Posted February 23, 2014 So i tried some things and sometimes i dont know what to do or i dont know whats wrong! So can someone figure out what i did wrong or why they give error messages? Im modding in Forge 1.7.2 Main class called Achievements Reveal hidden contents package com.mart.achievements; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraft.stats.AchievementList; import net.minecraftforge.common.AchievementPage; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid = Achievements.modid, version = Achievements.version) public class Achievements { public static final String modid = "More Achievements!"; public static final String version = "Version 1.0"; @EventHandler public void config(FMLPreInitializationEvent event) { } //everything public static Achievement Tutorial; @EventHandler public void load(FMLInitializationEvent event) { System.out.println("Loaded!"); AchievementPage.registerAchievementPage(page1); //Error with registerPickupHandler: The method registerPickupHandler(PickupHandler) is undefined for the type GameRegistry GameRegistry.registerPickupHandler(new PickupHandler()); } @EventHandler public void modsLoaded(FMLPostInitializationEvent event) { //Error with this line: The constructor Achievement(int, String, int, int, Block, null) is undefined Tutorial = new Achievement(27, "Dirt", 0, 0, Blocks.dirt, null).registerAchievement(); this.addAchievementName("Dirt", "Dirt.. Really?"); this.addAchievementDesc("Dirt", "You just found a piece of dirt.."); } private void addAchievementName(String ach, String name) { LanguageRegistry.instance().addStringLocalization("achievement." + ach, "en_US", name); } private void addAchievementDesc(String ach, String desc) { LanguageRegistry.instance().addStringLocalization("achievement." + ach + ".desc", "en_US", desc); } public static AchievementPage page1 = new AchievementPage("More Achievements!"); } Reveal hidden contents package com.mart.achievements; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; //Error with IPickupNotifier says: Cannot be resolved to a type public class PickupHandler implements IPickupNotifier { public void notifyPickup(EntityItem item, EntityPlayer player) { //I dont know what to write in this line. I tried some things but it doesnt work if(Blocks.getEntityItem().Blocks == Blocks.dirt) { player.addStat(Achievements.Dirt, 1); } } } Quote
MinecraftMart Posted February 23, 2014 Author Posted February 23, 2014 On 2/23/2014 at 7:01 PM, diesieben07 said: IPickupHandler is an event now: PlayerEvent.ItemPickupEvent. Thx! But im not that good at modding and i dont know how to implement this. Quote
MinecraftMart Posted February 24, 2014 Author Posted February 24, 2014 Okay now i got that i still dont really know hot to do the rest. Since i cant find anything decent or i dont know what to do. Quote
MinecraftMart Posted February 25, 2014 Author Posted February 25, 2014 Well if you look at my code sometimes is says //Error I cant fix these or dont know what to put there Quote
MinecraftMart Posted February 25, 2014 Author Posted February 25, 2014 On 2/25/2014 at 7:47 PM, diesieben07 said: Quote Blocks.getEntityItem().BlocksWhat on earth. What is this? I tried some things. But now i got everything exept the achievement showing up at my achievement page or the normal one. Can you help me? I This is the new code: package com.mart.achievements; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraft.stats.AchievementList; import net.minecraftforge.common.AchievementPage; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid = Achievements.modid, version = Achievements.version) public class Achievements { public static final String modid = "More Achievements!"; public static final String version = "Version 1.0"; @EventHandler public void config(FMLPreInitializationEvent event) { } //everything public static Achievement Dirt; @EventHandler public void load(FMLInitializationEvent event) { System.out.println("Loaded!"); AchievementPage.registerAchievementPage(page1); MinecraftForge.EVENT_BUS.register(new PickupHandler()); } @EventHandler public void modsLoaded(FMLPostInitializationEvent event) { //I NEED THIS LINE CORRECTED. Dirt = new Achievement("Dirt", "Dirt", 0, 0, Blocks.dirt, null); this.addAchievementName("Dirt", "Dirt.. Really?"); this.addAchievementDesc("Dirt", "You just found a piece of dirt.."); } private void addAchievementName(String ach, String name) { LanguageRegistry.instance().addStringLocalization("achievement." + ach, "en_US", name); } private void addAchievementDesc(String ach, String desc) { LanguageRegistry.instance().addStringLocalization("achievement." + ach + ".desc", "en_US", desc); } public static AchievementPage page1 = new AchievementPage("More Achievements!"); } package com.mart.achievements; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.ItemPickupEvent; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class PickupHandler { private ItemStack MyBlockStack = new ItemStack(Blocks.dirt); @SubscribeEvent public void SomethingPickedup(ItemPickupEvent event) { if (event.pickedUp.getEntityItem() == MyBlockStack) { event.player.addStat(Achievements.Dirt, 1); } } } Quote
coolboy4531 Posted February 25, 2014 Posted February 25, 2014 One thing is, use your resources... (don't double post either) By resources I mean the MinecraftForge Wiki, tons of tutorials help out there. I don't even think you have to put it in post init. (correct me if I'm wrong someone) I mean take a look at your code, you aren't even applying any achievements to your AchievementPage. public static AchievementPage page1 = new AchievementPage("More Achievements!", paramAchievement //add more if u want); If you want to add more, I believe you need to just plainly add more. Don't over look the obvious... Another thing you need to keep in mind is that if you have less than 2 achievements the AchievementPage will break. Quote
MinecraftMart Posted February 26, 2014 Author Posted February 26, 2014 On 2/25/2014 at 11:14 PM, coolboy4531 said: One thing is, use your resources... (don't double post either) By resources I mean the MinecraftForge Wiki, tons of tutorials help out there. I don't even think you have to put it in post init. (correct me if I'm wrong someone) I mean take a look at your code, you aren't even applying any achievements to your AchievementPage. public static AchievementPage page1 = new AchievementPage("More Achievements!", paramAchievement //add more if u want); If you want to add more, I believe you need to just plainly add more. Don't over look the obvious... Another thing you need to keep in mind is that if you have less than 2 achievements the AchievementPage will break. Okay thx! But now why cant i put this after my achievement: .registerAchievement() and if so. is there a other method for the achievment registering? Quote
MinecraftMart Posted February 27, 2014 Author Posted February 27, 2014 And does somebody know a way to look into source files? Then i could see it for myself Quote
coolboy4531 Posted February 28, 2014 Posted February 28, 2014 Dirt = new Achievement("Dirt", "Dirt", 0, 0, Blocks.dirt, null).registerAchievement(); Source files as in Vanilla Minecraft run: gradlew.bat setupDevWorkspace Quote
Aquillian Posted March 1, 2014 Posted March 1, 2014 To register an achievement public static Achievement achievementName; in your FMLInitializationEvent func new Achievement(unLocalizedName, achievement name(used when adding an achievement on to it) , x, y, ItemStack(icon), (Achievement)parent(group)) achievementName = new Achievement("achievement.achievementName", "achievementName", 0, 0, Blocks.stone, (Achievement)null).registerStat(); then in your PickupHandler if(event.pickedUp.getEntityItem().isItemEqual(new ItemStack(Your item or block))){ System.out.println("Aquired. ..."); event.player.addStat(ModClass.achievementName , 1); } Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.