use of com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent in project InteractiveChat by LOOHP.
the class InteractiveChatVelocity method onReceive.
@Subscribe
public void onReceive(PluginMessageEvent event) {
if (!event.getIdentifier().getId().equals("interchat:main")) {
return;
}
ChannelMessageSource source = event.getSource();
if (!(source instanceof ServerConnection)) {
return;
}
event.setResult(ForwardResult.handled());
RegisteredServer server = ((ServerConnection) source).getServer();
String senderServer = server.getServerInfo().getName();
byte[] packet = Arrays.copyOf(event.getData(), event.getData().length);
ByteArrayDataInput in = ByteStreams.newDataInput(packet);
int packetNumber = in.readInt();
int packetId = in.readShort();
if (!Registry.PROXY_PASSTHROUGH_RELAY_PACKETS.contains(packetId)) {
boolean isEnding = in.readBoolean();
byte[] data = new byte[packet.length - 7];
in.readFully(data);
byte[] chain = incomming.remove(packetNumber);
if (chain != null) {
ByteBuffer buff = ByteBuffer.allocate(chain.length + data.length);
buff.put(chain);
buff.put(data);
data = buff.array();
}
if (!isEnding) {
incomming.put(packetNumber, data);
return;
}
byte[] finalData = data;
pluginMessageHandlingExecutor.submit(() -> {
try {
ByteArrayDataInput input = ByteStreams.newDataInput(finalData);
switch(packetId) {
case 0x07:
int cooldownType = input.readByte();
switch(cooldownType) {
case 0:
UUID uuid = DataTypeIO.readUUID(input);
long time = input.readLong();
playerCooldownManager.setPlayerUniversalLastTimestamp(uuid, time);
break;
case 1:
uuid = DataTypeIO.readUUID(input);
UUID internalId = DataTypeIO.readUUID(input);
time = input.readLong();
playerCooldownManager.setPlayerPlaceholderLastTimestamp(uuid, internalId, time);
break;
}
for (RegisteredServer eachServer : getServer().getAllServers()) {
if (!eachServer.getServerInfo().getName().equals(senderServer) && eachServer.getPlayersConnected().size() > 0) {
eachServer.sendPluginMessage(ICChannelIdentifier.INSTANCE, finalData);
pluginMessagesCounter.incrementAndGet();
}
}
break;
case 0x08:
UUID messageId = DataTypeIO.readUUID(input);
String component = DataTypeIO.readString(input, StandardCharsets.UTF_8);
messageForwardingHandler.receivedProcessedMessage(messageId, component);
break;
case 0x09:
loadConfig();
break;
case 0x0B:
int id = input.readInt();
boolean permissionValue = input.readBoolean();
permissionChecks.put(id, permissionValue);
break;
case 0x0C:
int size1 = input.readInt();
List<ICPlaceholder> list = new ArrayList<>(size1);
for (int i = 0; i < size1; i++) {
boolean isBuiltIn = input.readBoolean();
if (isBuiltIn) {
String keyword = DataTypeIO.readString(input, StandardCharsets.UTF_8);
String name = DataTypeIO.readString(input, StandardCharsets.UTF_8);
String description = DataTypeIO.readString(input, StandardCharsets.UTF_8);
String permission = DataTypeIO.readString(input, StandardCharsets.UTF_8);
long cooldown = input.readLong();
list.add(new BuiltInPlaceholder(Pattern.compile(keyword), name, description, permission, cooldown));
} else {
int customNo = input.readInt();
ParsePlayer parseplayer = ParsePlayer.fromOrder(input.readByte());
String placeholder = DataTypeIO.readString(input, StandardCharsets.UTF_8);
boolean parseKeyword = input.readBoolean();
long cooldown = input.readLong();
boolean hoverEnabled = input.readBoolean();
String hoverText = DataTypeIO.readString(input, StandardCharsets.UTF_8);
boolean clickEnabled = input.readBoolean();
String clickAction = DataTypeIO.readString(input, StandardCharsets.UTF_8);
String clickValue = DataTypeIO.readString(input, StandardCharsets.UTF_8);
boolean replaceEnabled = input.readBoolean();
String replaceText = DataTypeIO.readString(input, StandardCharsets.UTF_8);
String name = DataTypeIO.readString(input, StandardCharsets.UTF_8);
String description = DataTypeIO.readString(input, StandardCharsets.UTF_8);
list.add(new CustomPlaceholder(customNo, parseplayer, Pattern.compile(placeholder), parseKeyword, cooldown, new CustomPlaceholderHoverEvent(hoverEnabled, hoverText), new CustomPlaceholderClickEvent(clickEnabled, clickEnabled ? ClickEventAction.valueOf(clickAction) : null, clickValue), new CustomPlaceholderReplaceText(replaceEnabled, replaceText), name, description));
}
}
placeholderList.put(server.getServerInfo().getName(), list);
playerCooldownManager.reloadPlaceholders(placeholderList.values().stream().flatMap(each -> each.stream()).distinct().collect(Collectors.toList()));
PluginMessageSendingVelocity.forwardPlaceholderList(list, server);
break;
case 0x0D:
UUID uuid2 = DataTypeIO.readUUID(input);
PluginMessageSendingVelocity.reloadPlayerData(uuid2, server);
break;
case 0x10:
UUID requestUUID = DataTypeIO.readUUID(input);
int requestType = input.readByte();
switch(requestType) {
case 0:
PluginMessageSendingVelocity.respondPlayerListRequest(requestUUID, server);
break;
default:
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
});
} else {
pluginMessageHandlingExecutor.submit(() -> {
for (RegisteredServer eachServer : getServer().getAllServers()) {
if (!eachServer.getServerInfo().getName().equals(senderServer) && eachServer.getPlayersConnected().size() > 0) {
eachServer.sendPluginMessage(ICChannelIdentifier.INSTANCE, event.getData());
pluginMessagesCounter.incrementAndGet();
}
}
});
}
}
use of com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent in project InteractiveChat by LOOHP.
the class CustomPlaceholderCreator method toCustomPlaceholder.
public CustomPlaceholder toCustomPlaceholder() {
String name = textFieldName.getText();
String description = textFieldDescription.getText();
ParsePlayer parsePlayer = (ParsePlayer) boxParsePlayer.getSelectedItem();
Pattern keyword;
if (regexCheckBox.isSelected()) {
keyword = validRegex(textFieldKeyword.getText()) == null ? Pattern.compile(textFieldKeyword.getText()) : IMPOSSIBLE_PATTERN;
} else {
String joined = Stream.of(textFieldKeyword.getText().split(",")).map(each -> CustomStringUtils.escapeMetaCharacters(each)).collect(Collectors.joining("|"));
keyword = Pattern.compile(joined);
}
boolean parseKeyword = checkBoxParseKeyword.isSelected();
long cooldown = validLong(textFieldCooldown.getText()) == null ? Long.parseLong(textFieldCooldown.getText()) : 0;
CustomPlaceholderHoverEvent hoverEvent = new CustomPlaceholderHoverEvent(checkBoxHover.isSelected(), textAreaHover.getText());
CustomPlaceholderClickEvent clickEvent = new CustomPlaceholderClickEvent(checkBoxClick.isSelected(), (ClickEventAction) boxClickAction.getSelectedItem(), textFieldClickValue.getText());
CustomPlaceholderReplaceText replaceText = new CustomPlaceholderReplaceText(checkBoxReplace.isSelected(), textFieldReplaceText.getText());
return new CustomPlaceholder((int) spinnerIndex.getValue(), parsePlayer, keyword, parseKeyword, cooldown, hoverEvent, clickEvent, replaceText, name, description);
}
use of com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent in project InteractiveChat by LOOHP.
the class WebData method reload.
public void reload() {
JSONObject newJson = HTTPRequestUtils.getJSONResponse(URL);
if (newJson != null) {
json = newJson;
}
List<CustomPlaceholder> specialPlaceholders = new ArrayList<>();
for (Object obj : (JSONArray) json.get("special-placeholders")) {
JSONObject each = (JSONObject) obj;
specialPlaceholders.add(new CustomPlaceholder(-1, ParsePlayer.valueOf((String) each.get("parseplayer")), Pattern.compile((String) each.get("keyword")), true, Long.parseLong(each.get("cooldown").toString()), new CustomPlaceholderHoverEvent((boolean) each.get("hoverEnabled"), (String) each.get("hoverText")), new CustomPlaceholderClickEvent((boolean) each.get("clickEnabled"), ClickEventAction.valueOf((String) each.get("clickAction")), (String) each.get("clickValue")), new CustomPlaceholderReplaceText((boolean) each.get("replaceEnabled"), (String) each.get("replaceText")), (String) each.get("name"), ""));
}
this.specialPlaceholders = specialPlaceholders;
}
use of com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent in project InteractiveChat by LOOHP.
the class ConfigManager method loadConfig.
@SuppressWarnings("deprecation")
public static void loadConfig() {
InteractiveChat.commandsEventPriority = EventPriority.valueOf(getConfig().getString("Settings.EventPriorities.Commands").toUpperCase());
InteractiveChat.chatEventPriority = EventPriority.valueOf(getConfig().getString("Settings.EventPriorities.Chat").toUpperCase());
InteractiveChat.itemTagMaxLength = getConfig().getInt("Settings.ItemTagMaxLength");
InteractiveChat.packetStringMaxLength = getConfig().getInt("Settings.PacketStringMaxLength");
InteractiveChat.parsePAPIOnMainThread = getConfig().getBoolean("Settings.ParsePAPIOnMainThread");
InteractiveChat.useAccurateSenderFinder = getConfig().getBoolean("Settings.UseAccurateSenderParser");
InteractiveChat.tagEveryIdentifiableMessage = getConfig().getBoolean("Settings.TagEveryIdentifiableMessage");
String colorCodeString = getConfig().getString("Chat.TranslateAltColorCode");
InteractiveChat.chatAltColorCode = colorCodeString.length() == 1 ? Optional.of(colorCodeString.charAt(0)) : Optional.empty();
InteractiveChat.useCustomPlaceholderPermissions = getConfig().getBoolean("Settings.UseCustomPlaceholderPermissions");
InteractiveChat.filterUselessColorCodes = getConfig().getBoolean("Settings.FilterUselessColorCodes", true);
InteractiveChat.allowMention = getConfig().getBoolean("Chat.AllowMention");
InteractiveChat.disableHere = getConfig().getBoolean("Chat.DisableHere");
InteractiveChat.disableEveryone = getConfig().getBoolean("Chat.DisableEveryone");
InteractiveChat.universalCooldown = getConfig().getLong("Settings.UniversalCooldown") * 1000;
InteractiveChat.noPermissionMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.NoPermission"));
InteractiveChat.invExpiredMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvExpired"));
InteractiveChat.reloadPluginMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.ReloadPlugin"));
InteractiveChat.noConsoleMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.PlayerOnlyCommand"));
InteractiveChat.invalidPlayerMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvalidPlayer"));
InteractiveChat.listPlaceholderHeader = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.ListPlaceholdersHeader"));
InteractiveChat.listPlaceholderBody = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.ListPlaceholdersBody"));
InteractiveChat.notEnoughArgs = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.NoEnoughArgs"));
InteractiveChat.invalidArgs = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvalidArgs"));
InteractiveChat.setInvDisplayLayout = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.SetInventoryDisplayLayout"));
InteractiveChat.placeholderCooldownMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.PlaceholderCooldown"));
InteractiveChat.universalCooldownMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.UniversalCooldown"));
InteractiveChat.useItem = getConfig().getBoolean("ItemDisplay.Item.Enabled");
InteractiveChat.useInventory = getConfig().getBoolean("ItemDisplay.Inventory.Enabled");
InteractiveChat.useEnder = getConfig().getBoolean("ItemDisplay.EnderChest.Enabled");
InteractiveChat.itemMapPreview = getConfig().getBoolean("ItemDisplay.Item.PreviewMaps");
InteractiveChat.itemPlaceholder = Pattern.compile(getConfig().getString("ItemDisplay.Item.Keyword"));
InteractiveChat.invPlaceholder = Pattern.compile(getConfig().getString("ItemDisplay.Inventory.Keyword"));
InteractiveChat.enderPlaceholder = Pattern.compile(getConfig().getString("ItemDisplay.EnderChest.Keyword"));
InteractiveChat.itemReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.Text"));
InteractiveChat.itemSingularReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.SingularText"));
InteractiveChat.invReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.Text"));
InteractiveChat.enderReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.Text"));
InteractiveChat.itemAirAllow = getConfig().getBoolean("ItemDisplay.Item.EmptyItemSettings.AllowAir");
InteractiveChat.itemAirErrorMessage = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.EmptyItemSettings.DisallowMessage"));
InteractiveChat.itemTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.InventoryTitle"));
InteractiveChat.invTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.InventoryTitle"));
InteractiveChat.enderTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.InventoryTitle"));
InteractiveChat.itemHover = getConfig().getBoolean("ItemDisplay.Item.HoverEnabled");
InteractiveChat.itemAlternativeHoverMessage = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", getConfig().getStringList("ItemDisplay.Item.AlternativeHoverMessage")));
InteractiveChat.itemGUI = getConfig().getBoolean("ItemDisplay.Item.GUIEnabled");
InteractiveChat.translateHoverableItems = getConfig().getBoolean("ItemDisplay.Item.HoverableItemsTranslation.Enabled");
InteractiveChat.hoverableItemTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.HoverableItemsTranslation.InventoryTitle"));
InteractiveChat.containerViewTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.ContainerViewTitle"));
try {
try {
if (VERSION.isLegacy()) {
String str = getConfig().getString("ItemDisplay.Item.Frame.Primary");
Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
InteractiveChat.itemFrame1 = new ItemStack(material, 1, data);
} else {
InteractiveChat.itemFrame1 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Item.Frame.Primary")), 1);
}
} catch (Exception e) {
InteractiveChat.itemFrame1 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Item.Frame.Primary")).parseItem();
InteractiveChat.itemFrame1.setAmount(1);
}
} catch (Exception e) {
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Item.Frame.Primary)");
e.printStackTrace();
}
try {
try {
if (VERSION.isLegacy()) {
String str = getConfig().getString("ItemDisplay.Item.Frame.Secondary");
Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
InteractiveChat.itemFrame2 = new ItemStack(material, 1, data);
} else {
InteractiveChat.itemFrame2 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Item.Frame.Secondary")), 1);
}
} catch (Exception e) {
InteractiveChat.itemFrame2 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Item.Frame.Secondary")).parseItem();
InteractiveChat.itemFrame2.setAmount(1);
}
} catch (Exception e) {
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Item.Frame.Secondary)");
e.printStackTrace();
}
try {
try {
if (VERSION.isLegacy()) {
String str = getConfig().getString("ItemDisplay.Inventory.Frame.Primary");
Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
InteractiveChat.invFrame1 = new ItemStack(material, 1, data);
} else {
InteractiveChat.invFrame1 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Inventory.Frame.Primary")), 1);
}
} catch (Exception e) {
InteractiveChat.invFrame1 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Inventory.Frame.Primary")).parseItem();
InteractiveChat.invFrame1.setAmount(1);
}
} catch (Exception e) {
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Inventory.Frame.Primary)");
e.printStackTrace();
}
try {
try {
if (VERSION.isLegacy()) {
String str = getConfig().getString("ItemDisplay.Inventory.Frame.Secondary");
Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
InteractiveChat.invFrame2 = new ItemStack(material, 1, data);
} else {
InteractiveChat.invFrame2 = new ItemStack(Material.valueOf(getConfig().getString("ItemDisplay.Inventory.Frame.Secondary")), 1);
}
} catch (Exception e) {
InteractiveChat.invFrame2 = XMaterialUtils.matchXMaterial(getConfig().getString("ItemDisplay.Inventory.Frame.Secondary")).parseItem();
InteractiveChat.invFrame2.setAmount(1);
}
} catch (Exception e) {
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (ItemDisplay.Inventory.Frame.Secondary)");
e.printStackTrace();
}
InteractiveChat.invSkullName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.SkullDisplayName"));
InteractiveChat.invDisplayLayout = getConfig().getInt("ItemDisplay.Inventory.Layout");
InteractiveChat.itemDisplayTimeout = getConfig().getLong("ItemDisplay.Settings.Timeout") * 60 * 1000;
if (getConfig().contains("Secret.t")) {
InteractiveChat.t = getConfig().getBoolean("Secret.t");
}
InteractiveChat.usePlayerName = getConfig().getBoolean("Player.UsePlayerNameInteraction");
InteractiveChat.usePlayerNameOverrideHover = getConfig().getBoolean("Player.OverrideOriginal.HoverEvent");
InteractiveChat.usePlayerNameOverrideClick = getConfig().getBoolean("Player.OverrideOriginal.ClickEvent");
InteractiveChat.usePlayerNameHoverEnable = getConfig().getBoolean("Player.Hover.Enable");
List<String> stringList = getConfig().getStringList("Player.Hover.Text");
InteractiveChat.usePlayerNameHoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", stringList));
InteractiveChat.usePlayerNameClickEnable = getConfig().getBoolean("Player.Click.Enable");
InteractiveChat.usePlayerNameClickAction = getConfig().getString("Player.Click.Action");
InteractiveChat.usePlayerNameClickValue = getConfig().getString("Player.Click.Value");
InteractiveChat.usePlayerNameCaseSensitive = getConfig().getBoolean("Player.CaseSensitive");
InteractiveChat.useTooltipOnTab = getConfig().getBoolean("TabCompletion.PlayerNameToolTip.Enabled");
InteractiveChat.tabTooltip = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("TabCompletion.PlayerNameToolTip.ToolTip"));
InteractiveChat.playerNotFoundHoverEnable = getConfig().getBoolean("Settings.PlayerNotFound.Hover.Enable");
List<String> stringList2 = getConfig().getStringList("Settings.PlayerNotFound.Hover.Text");
InteractiveChat.playerNotFoundHoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", stringList2));
InteractiveChat.playerNotFoundClickEnable = getConfig().getBoolean("Settings.PlayerNotFound.Click.Enable");
InteractiveChat.playerNotFoundClickAction = getConfig().getString("Settings.PlayerNotFound.Click.Action");
InteractiveChat.playerNotFoundClickValue = getConfig().getString("Settings.PlayerNotFound.Click.Value");
InteractiveChat.playerNotFoundReplaceEnable = getConfig().getBoolean("Settings.PlayerNotFound.Replace.Enable");
InteractiveChat.playerNotFoundReplaceText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.PlayerNotFound.Replace.ReplaceText"));
InteractiveChat.placeholderList.clear();
if (InteractiveChat.useItem) {
String name = InteractiveChat.itemName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.Name"));
String description = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Item.Description"));
ICPlaceholder itemPlaceholder = new BuiltInPlaceholder(InteractiveChat.itemPlaceholder, name, description, "interactivechat.module.item", getConfig().getLong("ItemDisplay.Item.Cooldown") * 1000);
InteractiveChat.placeholderList.put(itemPlaceholder.getInternalId(), itemPlaceholder);
}
if (InteractiveChat.useInventory) {
String name = InteractiveChat.invName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.Name"));
String description = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.Inventory.Description"));
ICPlaceholder invPlaceholder = new BuiltInPlaceholder(InteractiveChat.invPlaceholder, name, description, "interactivechat.module.inventory", getConfig().getLong("ItemDisplay.Inventory.Cooldown") * 1000);
InteractiveChat.placeholderList.put(invPlaceholder.getInternalId(), invPlaceholder);
}
if (InteractiveChat.useEnder) {
String name = InteractiveChat.enderName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.Name"));
String description = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("ItemDisplay.EnderChest.Description"));
ICPlaceholder enderPlaceholder = new BuiltInPlaceholder(InteractiveChat.enderPlaceholder, name, description, "interactivechat.module.enderchest", getConfig().getLong("ItemDisplay.EnderChest.Cooldown") * 1000);
InteractiveChat.placeholderList.put(enderPlaceholder.getInternalId(), enderPlaceholder);
}
for (int customNo = 1; ConfigManager.getConfig().contains("CustomPlaceholders." + customNo); customNo++) {
ConfigurationSection s = getConfig().getConfigurationSection("CustomPlaceholders." + customNo);
ParsePlayer parseplayer = ParsePlayer.fromString(s.getString("ParsePlayer"));
String placeholder = s.getString("Keyword");
boolean parseKeyword = s.getBoolean("ParseKeyword");
long cooldown = s.getLong("Cooldown") * 1000;
boolean hoverEnabled = s.getBoolean("Hover.Enable");
String hoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", s.getStringList("Hover.Text")));
boolean clickEnabled = s.getBoolean("Click.Enable");
String clickAction = s.getString("Click.Action").toUpperCase();
String clickValue = s.getString("Click.Value");
boolean replaceEnabled = s.getBoolean("Replace.Enable");
String replaceText = ChatColorUtils.translateAlternateColorCodes('&', s.getString("Replace.ReplaceText"));
String name = ChatColorUtils.translateAlternateColorCodes('&', s.getString("Name", placeholder.replace("\\", "")));
String description = ChatColorUtils.translateAlternateColorCodes('&', s.getString("Description", "&7&oDescription missing"));
ICPlaceholder customPlaceholder = new CustomPlaceholder(customNo, parseplayer, Pattern.compile(placeholder), parseKeyword, cooldown, new CustomPlaceholderHoverEvent(hoverEnabled, hoverText), new CustomPlaceholderClickEvent(clickEnabled, clickEnabled ? ClickEventAction.valueOf(clickAction) : null, clickValue), new CustomPlaceholderReplaceText(replaceEnabled, replaceText), name, description);
InteractiveChat.placeholderList.put(customPlaceholder.getInternalId(), customPlaceholder);
}
if (InteractiveChat.bungeecordMode) {
InteractiveChat.queueRemoteUpdate = true;
}
InteractiveChat.commandList = getConfig().getStringList("Settings.CommandsToParse");
InteractiveChat.maxPlaceholders = getConfig().getInt("Settings.MaxPlaceholders");
InteractiveChat.limitReachMessage = getConfig().getString("Messages.LimitReached");
InteractiveChat.mentionPrefix = getConfig().getString("Chat.MentionPrefix");
InteractiveChat.mentionHighlight = getConfig().getString("Chat.MentionHighlight");
List<String> stringList3 = getConfig().getStringList("Chat.MentionHoverText");
InteractiveChat.mentionHover = String.join("\n", stringList3);
InteractiveChat.mentionDuration = getConfig().getDouble("Chat.MentionedTitleDuration");
InteractiveChat.mentionCooldown = (long) (getConfig().getDouble("Chat.MentionCooldown") * 1000);
InteractiveChat.mentionEnable = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.EnableMentions"));
InteractiveChat.mentionDisable = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.DisableMentions"));
InteractiveChat.mentionTitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionedTitle"));
InteractiveChat.mentionSubtitle = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.KnownPlayerMentionSubtitle"));
InteractiveChat.mentionActionbar = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.KnownPlayerMentionActionbar"));
InteractiveChat.mentionToast = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionToast"));
InteractiveChat.mentionBossBarText = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionBossBar.Text"));
InteractiveChat.mentionBossBarColorName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionBossBar.Color"));
InteractiveChat.mentionBossBarOverlayName = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Chat.MentionBossBar.Overlay"));
InteractiveChat.mentionSound = getConfig().getString("Chat.MentionedSound");
InteractiveChat.mentionTitleDuration = (int) Math.round(ConfigManager.getConfig().getDouble("Chat.MentionedTitleDuration") * 20);
InteractiveChat.mentionBossBarDuration = (int) Math.round(ConfigManager.getConfig().getDouble("Chat.MentionBossBar.Duration") * 20);
InteractiveChat.mentionBossBarRemoveDelay = (int) Math.round(ConfigManager.getConfig().getDouble("Chat.MentionBossBar.RemoveDelay") * 20);
InteractiveChat.updaterEnabled = getConfig().getBoolean("Options.Updater");
InteractiveChat.cancelledMessage = getConfig().getBoolean("Options.ShowCancelledNotice");
InteractiveChat.clickableCommands = getConfig().getBoolean("Commands.Enabled");
InteractiveChat.clickableCommandsFormat = getConfig().getString("Commands.Format");
InteractiveChat.clickableCommandsAction = ClickEvent.Action.valueOf(getConfig().getString("Commands.Action"));
InteractiveChat.clickableCommandsDisplay = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Commands.Text"));
InteractiveChat.clickableCommandsHoverText = ChatColorUtils.translateAlternateColorCodes('&', String.join("\n", getConfig().getStringList("Commands.HoverMessage")));
InteractiveChat.sendOriginalIfTooLong = getConfig().getBoolean("Settings.SendOriginalMessageIfExceedLengthLimit");
InteractiveChat.messageToIgnore = new HashSet<>(getConfig().getStringList("Settings.MessagesToIgnore"));
try {
try {
if (VERSION.isLegacy()) {
String str = getConfig().getString("ItemDisplay.Item.Frame.Secondary");
Material material = str.contains(":") ? Material.valueOf(str.substring(0, str.lastIndexOf(":"))) : Material.valueOf(str);
short data = str.contains(":") ? Short.valueOf(str.substring(str.lastIndexOf(":") + 1)) : 0;
ItemStack unknown = new ItemStack(material, 1, data);
ItemMeta meta = unknown.getItemMeta();
meta.setDisplayName(ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.BungeecordUnknownItem.DisplayName")));
meta.setLore(getConfig().getStringList("Settings.BungeecordUnknownItem.Lore").stream().map(each -> ChatColorUtils.translateAlternateColorCodes('&', each)).collect(Collectors.toList()));
unknown.setItemMeta(meta);
InteractiveChat.unknownReplaceItem = unknown;
} else {
ItemStack unknown = new ItemStack(Material.valueOf(getConfig().getString("Settings.BungeecordUnknownItem.ReplaceItem").toUpperCase()));
ItemMeta meta = unknown.getItemMeta();
meta.setDisplayName(ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.BungeecordUnknownItem.DisplayName")));
meta.setLore(getConfig().getStringList("Settings.BungeecordUnknownItem.Lore").stream().map(each -> ChatColorUtils.translateAlternateColorCodes('&', each)).collect(Collectors.toList()));
unknown.setItemMeta(meta);
InteractiveChat.unknownReplaceItem = unknown;
}
} catch (Exception e) {
ItemStack unknown = XMaterialUtils.matchXMaterial(getConfig().getString("Settings.BungeecordUnknownItem.ReplaceItem")).parseItem();
unknown.setAmount(1);
ItemMeta meta = unknown.getItemMeta();
meta.setDisplayName(ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Settings.BungeecordUnknownItem.DisplayName")));
meta.setLore(getConfig().getStringList("Settings.BungeecordUnknownItem.Lore").stream().map(each -> ChatColorUtils.translateAlternateColorCodes('&', each)).collect(Collectors.toList()));
unknown.setItemMeta(meta);
InteractiveChat.unknownReplaceItem = unknown;
}
} catch (Exception e) {
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You have an invalid material name in the config! Please take a look at the Q&A section on the resource page! (Settings.BungeecordUnknownItem.ReplaceItem)");
e.printStackTrace();
}
InteractiveChat.useBukkitDisplayName = getConfig().getBoolean("Chat.UseBukkitDisplayName");
InteractiveChat.useEssentialsNicknames = getConfig().getBoolean("Chat.UseEssentialsNicknames");
InteractiveChat.rgbTags = getConfig().getBoolean("Settings.FormattingTags.AllowRGBTags");
InteractiveChat.fontTags = getConfig().getBoolean("Settings.FormattingTags.AllowFontTags");
InteractiveChat.additionalRGBFormats = getConfig().getStringList("Settings.FormattingTags.AdditionalRGBFormats").stream().map(each -> Pattern.compile(each)).collect(Collectors.toList());
InteractiveChat.language = getConfig().getString("Settings.Language");
Bukkit.getScheduler().runTaskAsynchronously(InteractiveChat.plugin, () -> {
LanguageUtils.loadTranslations(InteractiveChat.language);
if (WebData.getInstance() == null) {
WebData.newInstance();
} else {
WebData.getInstance().reload();
}
});
InteractiveChat.itemDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
InteractiveChat.inventoryDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
InteractiveChat.inventoryDisplay1Upper.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
InteractiveChat.inventoryDisplay1Lower.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
InteractiveChat.enderDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
InteractiveChat.mapDisplay.clearAndSetTimeout(InteractiveChat.itemDisplayTimeout);
InteractiveChat.upperSharedInventory.clear();
InteractiveChat.lowerSharedInventory.clear();
}
use of com.loohp.interactivechat.objectholders.CustomPlaceholder.CustomPlaceholderClickEvent in project InteractiveChat by LOOHP.
the class PluginMessageSendingVelocity method forwardPlaceholderList.
@SuppressWarnings("deprecation")
public static void forwardPlaceholderList(List<ICPlaceholder> serverPlaceholderList, RegisteredServer serverFrom) throws IOException {
ByteArrayDataOutput output = ByteStreams.newDataOutput();
DataTypeIO.writeString(output, serverFrom.getServerInfo().getName(), StandardCharsets.UTF_8);
output.writeInt(serverPlaceholderList.size());
for (ICPlaceholder placeholder : serverPlaceholderList) {
boolean isBuiltIn = placeholder.isBuildIn();
output.writeBoolean(isBuiltIn);
if (isBuiltIn) {
DataTypeIO.writeString(output, placeholder.getKeyword().pattern(), StandardCharsets.UTF_8);
DataTypeIO.writeString(output, placeholder.getName(), StandardCharsets.UTF_8);
DataTypeIO.writeString(output, placeholder.getDescription(), StandardCharsets.UTF_8);
DataTypeIO.writeString(output, placeholder.getPermission(), StandardCharsets.UTF_8);
output.writeLong(placeholder.getCooldown());
} else {
CustomPlaceholder customPlaceholder = (CustomPlaceholder) placeholder;
output.writeInt(customPlaceholder.getPosition());
output.writeByte(customPlaceholder.getParsePlayer().getOrder());
DataTypeIO.writeString(output, customPlaceholder.getKeyword().pattern(), StandardCharsets.UTF_8);
output.writeBoolean(customPlaceholder.getParseKeyword());
output.writeLong(customPlaceholder.getCooldown());
CustomPlaceholderHoverEvent hover = customPlaceholder.getHover();
output.writeBoolean(hover.isEnabled());
DataTypeIO.writeString(output, hover.getText(), StandardCharsets.UTF_8);
CustomPlaceholderClickEvent click = customPlaceholder.getClick();
output.writeBoolean(click.isEnabled());
DataTypeIO.writeString(output, click.getAction() == null ? "" : click.getAction().name(), StandardCharsets.UTF_8);
DataTypeIO.writeString(output, click.getValue(), StandardCharsets.UTF_8);
CustomPlaceholderReplaceText replace = customPlaceholder.getReplace();
output.writeBoolean(replace.isEnabled());
DataTypeIO.writeString(output, replace.getReplaceText(), StandardCharsets.UTF_8);
DataTypeIO.writeString(output, placeholder.getName(), StandardCharsets.UTF_8);
DataTypeIO.writeString(output, placeholder.getDescription(), StandardCharsets.UTF_8);
}
}
int packetNumber = InteractiveChatVelocity.random.nextInt();
int packetId = 0x09;
byte[] data = output.toByteArray();
byte[][] dataArray = CustomArrayUtils.divideArray(data, 32700);
for (int i = 0; i < dataArray.length; i++) {
byte[] chunk = dataArray[i];
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeInt(packetNumber);
out.writeShort(packetId);
out.writeBoolean(i == (dataArray.length - 1));
out.write(chunk);
for (RegisteredServer server : getServer().getAllServers()) {
if (!server.getServerInfo().getName().equals(serverFrom.getServerInfo().getName())) {
server.sendPluginMessage(ICChannelIdentifier.INSTANCE, out.toByteArray());
InteractiveChatVelocity.pluginMessagesCounter.incrementAndGet();
}
}
}
}
Aggregations