SackCastellon Posted January 2, 2014 Share Posted January 2, 2014 As, the title says, i want to know how to display a chat message on enter in a world. Thanks for helping. SOLUTION: Main.class package SackCastellon.core; import cpw.mods.fml.common.FMLCommonHandler; import SackCastellon.core.event.SkcEvent; import SackCastellon.core.proxy.CommonProxy; import SackCastellon.core.reference.Reference; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; @Mod(modid=Reference.ID, name=Reference.NAME, version=Reference.VERSION, dependencies=Reference.DEPENDENCIES) public class SKCCore { @Instance(Reference.ID) public static SKCCore instance; @SidedProxy(clientSide=Reference.CLPROXY, serverSide=Reference.CMPROXY) public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { FMLCommonHandler.instance().bus().register(new SkcEvent()); System.out.println("Event Handler Initialized"); } @EventHandler public void load(FMLInitializationEvent event) {} @EventHandler public void postInit(FMLPostInitializationEvent event) {} } Event.class package SackCastellon.core.event; import net.minecraft.util.ChatComponentText; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; public class SkcEvent { @SubscribeEvent public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { event.player.func_146105_b(new ChatComponentText(event.player.getDisplayName() + " is testing chat messages")); } } 1 Quote Link to comment Share on other sites More sharing options...
SackCastellon Posted January 2, 2014 Author Share Posted January 2, 2014 Ok, and now? Quote Link to comment Share on other sites More sharing options...
Draco18s Posted January 2, 2014 Share Posted January 2, 2014 Player.sendChatMessage(...) ? Assuming that method has been deobfuscated yet. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
BigDaveNz Posted January 3, 2014 Share Posted January 3, 2014 I'm just updating now. I haven't got a working version yet, simply because of the amount of changes I have to make before I can even run MC. 1.7.2 broke a lot haha. But anyway, You need to Hook into PlayerLoggedInEvent which is in PlayerEvent. Also with chat messages now this is the code for basic, non styled/non translated text. https://gist.github.com/BigDaveNz/8230352 Chatting to a player, command sender and Broadcasting a message to all players is here. (be aware this is untested but "should" work). The EIChatComponent is merely "[EI] " which gets added to all of my chat messages, and is usually styled although I haven't figured out colours/bold etc. for 1.7.2 yet. Quote The difference between stupidity and genius is that genius has its limits. - Albert Einstein Link to comment Share on other sites More sharing options...
SackCastellon Posted January 3, 2014 Author Share Posted January 3, 2014 I'm just updating now. I haven't got a working version yet, simply because of the amount of changes I have to make before I can even run MC. 1.7.2 broke a lot haha. But anyway, You need to Hook into PlayerLoggedInEvent which is in PlayerEvent. Also with chat messages now this is the code for basic, non styled/non translated text. https://gist.github.com/BigDaveNz/8230352 Chatting to a player, command sender and Broadcasting a message to all players is here. (be aware this is untested but "should" work). The EIChatComponent is merely "[EI] " which gets added to all of my chat messages, and is usually styled although I haven't figured out colours/bold etc. for 1.7.2 yet. I'm not verry good on Java, so how can i hook it? Quote Link to comment Share on other sites More sharing options...
BigDaveNz Posted January 4, 2014 Share Posted January 4, 2014 First you need to create a class to put all your @SubscribeEvent (1.7) annotations in. Then you subscribe to the appropriate event. Then you initialise your event handler https://github.com/BigDaveNz/EnchantInsanity/blob/master/common/nz/co/bigdavenz/ei/core/handler/EIEventHandler.java That's my event handler. the Key line that you need to know is line 13 My class that processes the events is here: https://github.com/BigDaveNz/EnchantInsanity/blob/master/common/nz/co/bigdavenz/ei/event/EIEvent.java (note this is 1.6.4) As you can see that is the class that is referenced in line 13 of EIEventHandler.java for 1.7 FML now has annotated events. @SubscribeEvent public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { //Do stuff } Quote The difference between stupidity and genius is that genius has its limits. - Albert Einstein Link to comment Share on other sites More sharing options...
MrArcane111 Posted January 4, 2014 Share Posted January 4, 2014 I like using ChatMessageComponent because you can do things like 'messageComponent.setColor(RED)' - approximate code, and italics and things. Quote Link to comment Share on other sites More sharing options...
BigDaveNz Posted January 4, 2014 Share Posted January 4, 2014 ChatMessageComponent is 1.6.4, It no longer Exists, theres now 3 components. Translation, Style, and Text. They all are used together to output a result. Since most functions are Obfuscated, styling is the hard bit at the moment. Quote The difference between stupidity and genius is that genius has its limits. - Albert Einstein Link to comment Share on other sites More sharing options...
SackCastellon Posted January 6, 2014 Author Share Posted January 6, 2014 First you need to create a class to put all your @SubscribeEvent (1.7) annotations in. Then you subscribe to the appropriate event. Then you initialise your event handler https://github.com/BigDaveNz/EnchantInsanity/blob/master/common/nz/co/bigdavenz/ei/core/handler/EIEventHandler.java That's my event handler. the Key line that you need to know is line 13 My class that processes the events is here: https://github.com/BigDaveNz/EnchantInsanity/blob/master/common/nz/co/bigdavenz/ei/event/EIEvent.java (note this is 1.6.4) As you can see that is the class that is referenced in line 13 of EIEventHandler.java for 1.7 FML now has annotated events. @SubscribeEvent public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { //Do stuff } Sorry, I've been busy. I made this code, based on your, but doesn't work: SkcEventHandler.java SkcEvent.java PlayerLoginEvent.java ChatMessageHandler.java And the EventHandler initialized on the Main class: SKCCore.java Quote Link to comment Share on other sites More sharing options...
Moritz Posted January 7, 2014 Share Posted January 7, 2014 Why so complicated? Just make it like this in your event: @SubscribeEvent public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { event.player.addChatMessage("Welcome"); LogHelper.info(Reference.ID, event.player.getDisplayName() + " logged In!"); } and by the way the static could be the problem. Quote Link to comment Share on other sites More sharing options...
SackCastellon Posted January 7, 2014 Author Share Posted January 7, 2014 Why so complicated? Just make it like this in your event: @SubscribeEvent public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { event.player.addChatMessage("Welcome"); LogHelper.info(Reference.ID, event.player.getDisplayName() + " logged In!"); } and by the way the static could be the problem. There isn't a .addChatMessage(String); or some similar method in forge 996 (as i've looked for) Quote Link to comment Share on other sites More sharing options...
Moritz Posted January 8, 2014 Share Posted January 8, 2014 But the EntityPlayer class have it. If not MC have removed it. Thats why i calling it. Quote Link to comment Share on other sites More sharing options...
SackCastellon Posted January 8, 2014 Author Share Posted January 8, 2014 But the EntityPlayer class have it. If not MC have removed it. Thats why i calling it. It mean that MC have removed it, because there isn't any method called .addChatMessage(String) even nor any method with only a String Quote Link to comment Share on other sites More sharing options...
BigDaveNz Posted January 8, 2014 Share Posted January 8, 2014 All chat strings have been moved to IChatComponents. there is still an addChatMessage()... Although it requires a component as the input, rather then a string. I'm currently on holiday at the moment, but I will be back on friday evening. So if you still haven't figured it out by then, I'll test in a 1.7 environment. And see if I can fix it for you. Quote The difference between stupidity and genius is that genius has its limits. - Albert Einstein Link to comment Share on other sites More sharing options...
SackCastellon Posted January 8, 2014 Author Share Posted January 8, 2014 All chat strings have been moved to IChatComponents. there is still an addChatMessage()... Although it requires a component as the input, rather then a string. I'm currently on holiday at the moment, but I will be back on friday evening. So if you still haven't figured it out by then, I'll test in a 1.7 environment. And see if I can fix it for you. Ok, thanks Quote Link to comment Share on other sites More sharing options...
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.