Everything posted by Hisha
-
How do I trigger achievements?
Alright, I will have a look at it. Thank you very much for your help
-
How do I trigger achievements?
Thank you very much, I got it to give me the achievements now.. Well. All of them at once for some reason, but I guess that's on my end Where do I find the pack.mcmeta file if I have it? Or where should I make it?
-
How do I trigger achievements?
Hello, I have been trying to get achievements to work but I just can't seem to get them to trigger. I have registered them and they are showing up in the achievement page I have created and registered, so my suspicion is that the problem lies in my event handler. My event handler class looks like this: public class AchievementEventHandler { @Mod.EventHandler public void onEditorOpened(AchievementEvent.EditorOpenedEvent event) { event.player.addStat(CompilerMod.achievementOpenEditor, 1); } @Mod.EventHandler public void onEditorSaved(AchievementEvent.EditorSavedEvent event) { event.player.addStat(CompilerMod.achievementSaveFirst, 1); //If compiler errors event.player.addStat(CompilerMod.achievementError, 1); } @Mod.EventHandler public void onRobotChat(AchievementEvent.RobotChatEvent event) { event.player.addStat(CompilerMod.achievementRobotChat, 1); } @Mod.EventHandler public void onRobotBroadcast(AchievementEvent.RobotBroadcastEvent event) { event.player.addStat(CompilerMod.achievementBroadcastMessage, 1); //If channel has listeners event.player.addStat(CompilerMod.achievementCoodination, 1); } @Mod.EventHandler public void onRobotAction(AchievementEvent.RobotActionEvent event) { if(event.robotAction.equals("explode")) event.player.addStat(CompilerMod.achievementRobotExplode, 1); if(event.robotAction.equals("attack")) event.player.addStat(CompilerMod.achievementRobotAttackOther, 1); } @Mod.EventHandler public void onRobotPlaceBlock(AchievementEvent.RobotPlaceBlockEvent event) { //Check how blocks are placed event.player.addStat(CompilerMod.achievementBuildHouse, 1); } } And the events are set up as follows: public class AchievementEvent extends Event { public final EntityPlayer player; private AchievementEvent(EntityPlayer player){ this.player = player; } public static class EditorOpenedEvent extends AchievementEvent { public EditorOpenedEvent(EntityPlayer player) { super(player); } } public static class EditorSavedEvent extends AchievementEvent { public EditorSavedEvent(EntityPlayer player) { super(player); } } public static class RobotChatEvent extends AchievementEvent { public String chatMessage; public RobotChatEvent(EntityPlayer owner, String chatMessage) { super(owner); this.chatMessage = chatMessage; } } public static class RobotBroadcastEvent extends AchievementEvent { public String message; public String channel; public RobotBroadcastEvent(EntityPlayer owner, String message, String channel) { super(owner); this.message = message; this.channel = channel; } } public static class RobotActionEvent extends AchievementEvent { //This could be changed to an enum public String robotAction; public RobotActionEvent(EntityPlayer owner, String robotAction) { super(owner); this.robotAction = robotAction; } } public static class RobotPlaceBlockEvent extends AchievementEvent { //This could be changed to an enum public Block block; public RobotPlaceBlockEvent(EntityPlayer owner, Block block) { super(owner); this.block = block; } } } But when I attempt to raise an event, nothing happens. Here is an example of a trigger I tried to set up: public GuiProgramEditor() { super(); //TEMP ACHIEVEMENT TEST MinecraftForge.EVENT_BUS.post(new AchievementEvent.EditorOpenedEvent(Minecraft.getMinecraft().player)); } Which is located in a GUI constructor. And finally, the registrations @Mod.EventHandler public void init(FMLInitializationEvent event) { Proxy.registerModels(); achievementOpenEditor = new Achievement("", "Opened editor", 0, 0, Items.BOOK, null); achievementSaveFirst = new Achievement("", "Saved first script", 2, 0, Items.ITEM_FRAME, achievementOpenEditor); achievementRobotChat = new Achievement("", "First words", 2, 2, Items.GHAST_TEAR, achievementSaveFirst); achievementRobotExplode = new Achievement("", "Boom", 4,4, Items.TNT_MINECART, achievementSaveFirst).setSpecial(); achievementRobotAttackOther = new Achievement("", "Ouch", 2,4, Items.DIAMOND_SWORD, achievementSaveFirst); achievementBroadcastMessage = new Achievement("", "Robot phone home", 3, 0, Items.WRITABLE_BOOK, achievementSaveFirst); achievementCoodination = new Achievement("", "Hello? This is home", 3, 2, Items.WRITTEN_BOOK, achievementBroadcastMessage); achievementBuildHouse = new Achievement("", "Nice house", 4,4, Items.COMMAND_BLOCK_MINECART, achievementSaveFirst); achievementError = new Achievement("", "ERROR", 5,5, Items.BOOK, achievementSaveFirst).setSpecial(); educodeAchievementPage = new AchievementPage("EduCode", achievementOpenEditor, achievementSaveFirst, achievementRobotChat, achievementRobotExplode, achievementRobotAttackOther, achievementBroadcastMessage, achievementCoodination, achievementBuildHouse, achievementError); AchievementPage.registerAchievementPage(educodeAchievementPage); } Can someone point out to me what I am doing wrong? I have followed countless tutorials about the achievement system, but none of them seem to touch the subject of custom events. And as a last note, where do I need to put my en_US.lang file, because none of the directories I've tried yet has worked for me Thanks in advance EDIT: This is on Forge 13.20.0.2228 for Minecraft 1.11.2
IPS spam blocked by CleanTalk.