dude22072 Posted December 8, 2013 Posted December 8, 2013 How would I do this? Quote Legend of Zelda Mod[updated September 20th to 3.1.1] Extra Achievements(Minecraft 1.8!)[updated April 3rd to 2.3.0] Fancy Cheeses[updated May 8th to 0.5.0]
superckl Posted December 8, 2013 Posted December 8, 2013 Well, I see two ways. First, ensuring you are connected to a server, you can use reflection to access serverName in Minecraft. But that's probably not the best idea. The better way is to create a ConnectionHandler. Simply make a class: public class ConnectionHandler implements IConnectionHandler and register it in your @Init using: NetworkRegistry.instance().registerConnectionHandler(new ConnectionHandler()); You can then use to these to methods in your connection handler to keep track of the current server: @Override public void connectionOpened(final NetHandler netClientHandler, final String server, final int port, final INetworkManager manager) { } @Override public void connectionClosed(final INetworkManager manager) { } Quote http://i.imgur.com/nVI9Y.png[/img]
dude22072 Posted December 8, 2013 Author Posted December 8, 2013 So, could you give me an example of how to use this to add a stat (achievement) to the player? (for an example) how would i use this to activate player.addStat(ExtraAchievments.prot3ch, 1); when the player connects to a server with the IP "173.68.68.76"? Im asking because my mod (ExtraAchievements) is being added to a modpack I used to work on and i want to add an achievement for playing on the modpack's server. Quote Legend of Zelda Mod[updated September 20th to 3.1.1] Extra Achievements(Minecraft 1.8!)[updated April 3rd to 2.3.0] Fancy Cheeses[updated May 8th to 0.5.0]
superckl Posted December 8, 2013 Posted December 8, 2013 For that, I would use the playerLoggedIn method since it is fired server side when the connection is actually established. I haven't actually tried it, but this should work in your connection handler: @Override public void playerLoggedIn(final Player player, final NetHandler netHandler, final INetworkManager manager) { if(player instanceof EntityPlayerMP) ((EntityPlayerMP)player).addStat(ExtraAchievments.prot3ch, 1); } EDIT: I forgot to mention, you're going to want to make sure that code is actually running on the intended server. Using this, someone could just create a local server and join to get the achievement. Perhaps an encrypted key in a configuration file? Quote http://i.imgur.com/nVI9Y.png[/img]
dude22072 Posted December 8, 2013 Author Posted December 8, 2013 Thanks for the help! Quote Legend of Zelda Mod[updated September 20th to 3.1.1] Extra Achievements(Minecraft 1.8!)[updated April 3rd to 2.3.0] Fancy Cheeses[updated May 8th to 0.5.0]
superckl Posted December 8, 2013 Posted December 8, 2013 I've been thinking a bit more and it might just be best to use connectionOpened and check the server String . As I edited, they could just create a local server using the above method. Quote http://i.imgur.com/nVI9Y.png[/img]
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.