Essentials/EssentialsChat/src/main/java/com/earth2me/essentials/chat/EssentialsChatPlayer.java

80 lines
2.6 KiB
Java
Raw Normal View History

2011-10-30 22:29:56 +01:00
package com.earth2me.essentials.chat;
import com.earth2me.essentials.ChargeException;
import com.earth2me.essentials.Trade;
import com.earth2me.essentials.User;
import net.ess3.api.IEssentials;
2011-10-30 22:29:56 +01:00
import org.bukkit.Server;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
2011-10-30 22:29:56 +01:00
2015-04-15 06:06:16 +02:00
import java.util.Map;
public abstract class EssentialsChatPlayer implements Listener {
2020-10-03 19:46:05 +02:00
final transient IEssentials ess;
final transient EssentialsChat essChat;
final transient Server server;
private final transient Map<AsyncPlayerChatEvent, ChatStore> chatStorage;
EssentialsChatPlayer(final Server server, final IEssentials ess, final EssentialsChat essChat, final Map<AsyncPlayerChatEvent, ChatStore> chatStorage) {
2015-04-15 06:06:16 +02:00
this.ess = ess;
this.essChat = essChat;
2015-04-15 06:06:16 +02:00
this.server = server;
this.chatStorage = chatStorage;
}
2011-10-30 22:29:56 +01:00
public abstract void onPlayerChat(final AsyncPlayerChatEvent event);
2011-10-30 22:29:56 +01:00
boolean isAborted(final AsyncPlayerChatEvent event) {
return event.isCancelled();
2015-04-15 06:06:16 +02:00
}
2011-10-30 22:29:56 +01:00
String getChatType(final User user, final String message) {
2015-04-15 06:06:16 +02:00
if (message.length() == 0) {
//Ignore empty chat events generated by plugins
return "";
}
2011-10-30 22:29:56 +01:00
2015-04-15 06:06:16 +02:00
final char prefix = message.charAt(0);
if (prefix == ess.getSettings().getChatShout()) {
if (user.isToggleShout()) {
return "";
}
return message.length() > 1 ? "shout" : "";
2021-09-17 04:55:16 +02:00
} else if (ess.getSettings().isChatQuestionEnabled() && prefix == ess.getSettings().getChatQuestion()) {
return message.length() > 1 ? "question" : "";
} else if (user.isToggleShout()) {
return message.length() > 1 ? "shout" : "";
2015-04-15 06:06:16 +02:00
} else {
return "";
}
}
2011-10-30 22:29:56 +01:00
ChatStore getChatStore(final AsyncPlayerChatEvent event) {
2015-04-15 06:06:16 +02:00
return chatStorage.get(event);
}
void setChatStore(final AsyncPlayerChatEvent event, final ChatStore chatStore) {
2015-04-15 06:06:16 +02:00
chatStorage.put(event, chatStore);
}
ChatStore delChatStore(final AsyncPlayerChatEvent event) {
2015-04-15 06:06:16 +02:00
return chatStorage.remove(event);
}
2011-10-30 22:29:56 +01:00
private void charge(final User user, final Trade charge) throws ChargeException {
2015-04-15 06:06:16 +02:00
charge.charge(user);
}
boolean charge(final AsyncPlayerChatEvent event, final ChatStore chatStore) {
2015-04-15 06:06:16 +02:00
try {
charge(chatStore.getUser(), chatStore.getCharge());
2020-10-03 19:46:05 +02:00
} catch (final ChargeException e) {
2015-04-15 06:06:16 +02:00
ess.showError(chatStore.getUser().getSource(), e, "\\ chat " + chatStore.getLongType());
event.setCancelled(true);
return false;
}
return true;
}
2011-10-30 22:29:56 +01:00
}