Jump to content

Recommended Posts

Posted

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

Posted

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 O.o

Aspergers is annoying sometimes :(

Posted

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.

Posted

@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.

Posted

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.

Posted

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.  :)

Posted

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.

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.