Archived
0
This repository has been archived on 2024-08-30. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Modules/src/main/java/com/redstoner/modules/mentio/Mentio.java
2019-01-13 22:38:39 -05:00

162 lines
4.6 KiB
Java

package com.redstoner.modules.mentio;
import java.io.File;
import java.util.ArrayList;
import java.util.UUID;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.nemez.cmdmgr.Command;
import com.redstoner.annotations.AutoRegisterListener;
import com.redstoner.annotations.Commands;
import com.redstoner.annotations.Version;
import com.redstoner.misc.CommandHolderType;
import com.redstoner.misc.JsonManager;
import com.redstoner.misc.Main;
import com.redstoner.modules.Module;
import net.nemez.chatapi.ChatAPI;
@Commands(CommandHolderType.File)
@AutoRegisterListener
@Version(major = 5, minor = 0, revision = 0, compatible = 4)
public class Mentio implements Module, Listener
{
private File mentioLocation = new File(Main.plugin.getDataFolder(), "mentio.json");
private JSONObject mentios;
public static Mentio instance;
@Override
public boolean onEnable()
{
instance = this;
loadMentios();
return true;
}
@Override
public void onDisable()
{
saveMentios();
}
@SuppressWarnings("unchecked")
@Command(hook = "addmentio")
public boolean addMentio(CommandSender sender, String trigger)
{
Player player = (Player) sender;
UUID uuid = player.getUniqueId();
JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
playerMentios = defaultMentio(playerMentios, player);
if (playerMentios.contains(trigger))
getLogger().message(sender, true, "You already had that as a mentio!");
else
{
playerMentios.add(trigger);
getLogger().message(sender, "Successfully added the trigger §e" + trigger + " §7for you!");
mentios.put(uuid.toString(), playerMentios);
saveMentios();
}
return true;
}
@SuppressWarnings("unchecked")
@Command(hook = "delmentio")
public boolean delMentio(CommandSender sender, String trigger)
{
Player player = (Player) sender;
UUID uuid = player.getUniqueId();
JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
playerMentios = defaultMentio(playerMentios, player);
if (!playerMentios.remove(trigger))
getLogger().message(sender, true, "You didn't have that as a mentio!");
else
{
getLogger().message(sender, "Successfully removed the trigger §e" + trigger + " §7for you!");
mentios.put(uuid.toString(), playerMentios);
saveMentios();
}
return true;
}
@Command(hook = "listmentios")
public boolean listMentios(CommandSender sender)
{
ArrayList<String> message = new ArrayList<>();
Player player = (Player) sender;
UUID uuid = player.getUniqueId();
JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
playerMentios = defaultMentio(playerMentios, player);
for (Object raw : playerMentios)
{
String mentio = (String) raw;
message.add("&2 -> &e" + mentio);
}
getLogger().message(sender, message.toArray(new String[] {}));
return true;
}
@SuppressWarnings("unchecked")
private JSONArray defaultMentio(JSONArray mentios, Player player) {
if (mentios == null)
{
mentios = new JSONArray();
mentios.add(player.getName());
String displayName = player.getDisplayName().split(" ")[0].replaceAll("§[0-9a-fk-or]", "");
if (!player.getName().equals(displayName))
mentios.add(displayName);
}
return mentios;
}
public String modifyMessageWithMentio(CommandSender permholder, Player player, String message)
{
UUID uuid = player.getUniqueId();
JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString());
playerMentios = defaultMentio(playerMentios, player);
for (Object raw : playerMentios)
{
String mentio = (String) raw;
String messageLC = message.toLowerCase();
String mentioLC = mentio.toLowerCase();
if (messageLC.contains(mentioLC))
{
char color = 'r';
int index = messageLC.indexOf(mentioLC);
for (int i = index; i > 0; i--) {
char next = messageLC.charAt(i-1);
char cur = messageLC.charAt(i);
if((next == '§' || next == '&') && ("" + cur).matches("[a-f0-9r]")) {
color = cur;
break;
}
}
return ChatAPI.colorify(permholder, message.substring(0, index)
+ "§a§o" + message.substring(index, index + mentio.length()) + "§r" + (permholder.hasPermission(ChatAPI.PERMISSION_CHAT_COLOR)? "&" + color : ""))
+ message.substring(index + mentio.length());
}
}
return null;
}
private void loadMentios()
{
mentios = JsonManager.getObject(mentioLocation);
if (mentios == null)
mentios = new JSONObject();
}
private void saveMentios()
{
JsonManager.save(mentios, mentioLocation);
}
}