Posted August 5, 201312 yr Basically I need a very simple mod to remind me to do stuff so it would write to my chat what I would set it to write. I just don't know how to send a chat message programmatically. And also, since this mod is meant to run on a multiplayer server, I would like the message to be private, so only I could read it. Is there any method to acomplish that? thanks
August 5, 201312 yr You need to decide if you want this to be a serverside or a clientside mod. If you want it clientside it's easy. Just store the data somewhere in a text file and use Minecraft.thePlayer.addChatMessage(). If you want to make it serverside you need a data structure, possibly a Map that maps players/usernames to their "stored stuff". Then again you can use player.addChatMessage and it will only send it to the given player. You beat me to it, but then my post disappeared Aspergers is annoying sometimes
August 5, 201312 yr Author It's supposed to be client side. I just need time based reminders of things I have to do. I spend to much time standing still trying to remember what I was gonna do next
August 5, 201312 yr I made this: public class CommandToDo extends CommandBase{ /** * @author GotoLink */ private static Map<String,List<String>> toDoList = new HashMap(); @Override public String getCommandName() { return "TODO"; } @Override public String getCommandUsage(ICommandSender icommandsender) { return "/" + getCommandName() + "<print:remove:add <message>> "; } @Override public void processCommand(ICommandSender sender, String[] command) { if(command.length == 1 ||( command.length == 2 && command[0].equals("add")))//We have valid number of arguments { String username = sender.getCommandSenderName(); if(toDoList.containsKey(username)) { List<String> business = toDoList.get(username); if(command[0].equals("print")) { sender.sendChatToPlayer(ChatMessageComponent.func_111066_d(business.get(0))); } else if(command[0].equals("add")) { business.add(command[0]); toDoList.put(username, business); } else if(command[0].equals("remove")) { business.remove(0); toDoList.put(username, business); } } else if(command[0].equals("add")) { List<String> business = new ArrayList(); business.add(command[0]); toDoList.put(username, business); } } else throw new WrongUsageException(getCommandUsage(sender)); } @Override public List addTabCompletionOptions(ICommandSender var1, String[] var2) { return var2.length == 1 ? getListOfStringsMatchingLastWord(var2, new String[] {"print", "add", "remove"}): null; } } This command allows a player to store is own TODO list. Usage: A player types /TODO add Remind me to do this please. he can then /TODO print to get back "Remind me to do this please." as a private chat message. or /TODO remove to check out his oldest TODO message.
August 5, 201312 yr Author @GotoLink Thanks for your answer. Would that work on a multiplayer server? I'm guessing commands are handled at server side? The server wouldn't have this class and wouldn't know the command. That's just a guess, I don't really know how commands are implemented, but it makes sense to think they are handled by the server, to avoid commands like /godmode or something.
August 5, 201312 yr If installed on the server, it will work for everyone. I made it multiplayer compatible. You need to register the command into server for it to work. Having it on client will try registering it, but I don't know what would be the result. Oh, it is written for 1.6 by the way, though downgrading to 1.5.2 shouldn't require much work.
August 5, 201312 yr Author I can't have it installed on the server because it's someone else's dedicated server. I know the problem is more complex than this but first I'd like to know if there's a way to write something on my client chat. Client side only. The server won't have the mod installed. Thanks.
August 5, 201312 yr Well you can still use my code, but you'll need to catch chat messages instead. You can use ClientChatReceivedEvent for that. Then combine it with diesieben07 advice.
August 6, 201312 yr Author Thanks a lot guys! I was able to register to the event, and to print stuff to my chat. Just gotta figure out how I want to implement the list and if I will need some kind of timer. But this question is closed.
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.