mirror of
https://github.com/Aust1n46/VentureChat.git
synced 2025-12-13 13:44:52 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b9e19e2441 | ||
|
|
d964918a7b | ||
|
|
05762e0bc7 | ||
|
|
d87c255059 |
56
pom.xml
56
pom.xml
@@ -5,7 +5,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>mineverse.Aust1n46.chat</groupId>
|
||||
<artifactId>VentureChat</artifactId>
|
||||
<version>3.6.0</version>
|
||||
<version>3.8.0</version>
|
||||
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>
|
||||
<scm>
|
||||
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>
|
||||
@@ -30,10 +30,10 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<version>3.11.0</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<source>17</source>
|
||||
<target>17</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
@@ -56,7 +56,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.4</version>
|
||||
<version>3.4.1</version>
|
||||
<configuration>
|
||||
<relocations>
|
||||
<relocation>
|
||||
@@ -91,22 +91,10 @@
|
||||
<id>jitpack.io</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>placeholderapi</id>
|
||||
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>dmulloy2-repo</id>
|
||||
<url>https://repo.dmulloy2.net/repository/public/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>bungeecord-repo</id>
|
||||
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>essentialsx-repo</id>
|
||||
<url>https://repo.essentialsx.net/releases/</url>
|
||||
@@ -116,15 +104,15 @@
|
||||
<url>https://repo.velocitypowered.com/snapshots/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>papermc</id>
|
||||
<url>https://papermc.io/repo/repository/maven-public/</url>
|
||||
</repository>
|
||||
<id>papermc</id>
|
||||
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>io.papermc.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.17.1-R0.1-SNAPSHOT</version>
|
||||
<version>1.21.8-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -134,10 +122,9 @@
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.clip</groupId>
|
||||
<groupId>com.github.placeholderapi</groupId>
|
||||
<artifactId>placeholderapi</artifactId>
|
||||
<version>2.10.9</version>
|
||||
<scope>provided</scope>
|
||||
<version>2.11.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.MilkBowl</groupId>
|
||||
@@ -152,9 +139,9 @@
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.comphenix.protocol</groupId>
|
||||
<groupId>net.dmulloy2</groupId>
|
||||
<artifactId>ProtocolLib</artifactId>
|
||||
<version>5.0.0-SNAPSHOT</version>
|
||||
<version>5.4.0</version>
|
||||
</dependency>
|
||||
<!--These are long depreciated. I would've removed them, but that is outside the scope of what I want to do here.
|
||||
I am using the latest builds of these plugins to be published to SpigotMC.-->
|
||||
@@ -216,11 +203,22 @@
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.20-R0.1-SNAPSHOT</version>
|
||||
<groupId>net.kyori</groupId>
|
||||
<artifactId>adventure-api</artifactId>
|
||||
<version>4.24.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.kyori</groupId>
|
||||
<artifactId>adventure-platform-bukkit</artifactId>
|
||||
<version>4.4.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.googlecode.json-simple</groupId>
|
||||
<artifactId>json-simple</artifactId>
|
||||
<version>1.1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
||||
@@ -79,6 +79,17 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
|
||||
private static Permission permission = null;
|
||||
private static Chat chat = null;
|
||||
|
||||
// TODO: This won't be so poorly done in the 4.0.0 branch I promise...
|
||||
public static boolean isConnectedToProxy() {
|
||||
try {
|
||||
final MineverseChat plugin = MineverseChat.getInstance();
|
||||
return (plugin.getServer().spigot().getConfig().getBoolean("settings.bungeecord")
|
||||
|| plugin.getServer().spigot().getPaperConfig().getBoolean("settings.velocity-support.enabled")
|
||||
|| plugin.getServer().spigot().getPaperConfig().getBoolean("proxies.velocity.enabled"));
|
||||
} catch (final NoSuchMethodError ignored) {} // Thrown if server isn't Paper.
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
ccInfo = new ChatChannelInfo();
|
||||
@@ -126,9 +137,11 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
|
||||
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Registering Listeners"));
|
||||
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Attaching to Executors"));
|
||||
|
||||
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord"));
|
||||
Bukkit.getMessenger().registerOutgoingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL);
|
||||
Bukkit.getMessenger().registerIncomingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL, this);
|
||||
if (MineverseChat.isConnectedToProxy()) {
|
||||
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Establishing BungeeCord"));
|
||||
Bukkit.getMessenger().registerOutgoingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL);
|
||||
Bukkit.getMessenger().registerIncomingPluginChannel(this, PLUGIN_MESSAGING_CHANNEL, this);
|
||||
}
|
||||
|
||||
PluginManager pluginManager = getServer().getPluginManager();
|
||||
if(pluginManager.isPluginEnabled("Towny")) {
|
||||
@@ -363,6 +376,9 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
|
||||
|
||||
@Override
|
||||
public void onPluginMessageReceived(String channel, Player player, byte[] inputStream) {
|
||||
if (!MineverseChat.isConnectedToProxy()) {
|
||||
return;
|
||||
}
|
||||
if(!channel.equals(PLUGIN_MESSAGING_CHANNEL)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -73,21 +73,14 @@ public class LoginListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if(plugin.getServer().spigot().getConfig().getBoolean("settings.bungeecord")
|
||||
|| plugin.getServer().spigot().getPaperConfig().getBoolean("settings.velocity-support.enabled")
|
||||
|| plugin.getServer().spigot().getPaperConfig().getBoolean("proxies.velocity.enabled")) {
|
||||
long delayInTicks = 20L;
|
||||
final MineverseChatPlayer sync = mcp;
|
||||
plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||
public void run() {
|
||||
MineverseChat.synchronize(sync, false);
|
||||
}
|
||||
}, delayInTicks);
|
||||
}
|
||||
}
|
||||
catch(NoSuchMethodError exception) { // Thrown if server isn't Paper.
|
||||
// Do nothing
|
||||
if (MineverseChat.isConnectedToProxy()) {
|
||||
long delayInTicks = 20L;
|
||||
final MineverseChatPlayer sync = mcp;
|
||||
plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() {
|
||||
public void run() {
|
||||
MineverseChat.synchronize(sync, false);
|
||||
}
|
||||
}, delayInTicks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +105,9 @@ public class VentureChatBungee extends Plugin implements Listener, VentureChatPr
|
||||
if(!event.getTag().equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !event.getTag().contains("viaversion:")) {
|
||||
return;
|
||||
}
|
||||
// Critical to prevent client from sending or receiving messages
|
||||
event.setCancelled(true);
|
||||
|
||||
if(!(event.getSender() instanceof Server)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -134,12 +134,14 @@ public class VentureChatVelocity implements VentureChatProxySource {
|
||||
if(!channelIdentifierId.equals(VentureChatProxy.PLUGIN_MESSAGING_CHANNEL_STRING) && !channelIdentifierId.contains("viaversion:")) {
|
||||
return;
|
||||
}
|
||||
// Critical to prevent client from sending or receiving messages
|
||||
event.setResult(ForwardResult.handled());
|
||||
|
||||
if(!(event.getSource() instanceof ServerConnection)) {
|
||||
return;
|
||||
}
|
||||
String serverName = ((ServerConnection) event.getSource()).getServerInfo().getName();
|
||||
VentureChatProxy.onPluginMessage(event.getData(), serverName, this);
|
||||
event.setResult(ForwardResult.handled());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,13 +3,12 @@ package mineverse.Aust1n46.chat.utilities;
|
||||
import static mineverse.Aust1n46.chat.MineverseChat.getInstance;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import mineverse.Aust1n46.chat.MineverseChat;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@@ -134,14 +133,14 @@ public class Format {
|
||||
} else {
|
||||
final String clickText = escapeJsonChars(Format.FormatStringAll(
|
||||
PlaceholderAPI.setBracketPlaceholders(icp.getPlayer(), jsonAttribute.getClickText())));
|
||||
actionJson = ",\"clickEvent\":{\"action\":\"" + jsonAttribute.getClickAction().toString() + "\",\"value\":\"" + clickText
|
||||
actionJson = ",\"click_event\":{\"action\":\"" + jsonAttribute.getClickAction().toString() + "\",\"command\":\"" + clickText
|
||||
+ "\"}";
|
||||
}
|
||||
final String hoverJson;
|
||||
if (hoverText.isEmpty()) {
|
||||
hoverJson = StringUtils.EMPTY;
|
||||
} else {
|
||||
hoverJson = ",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["
|
||||
hoverJson = ",\"hover_event\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["
|
||||
+ convertToJsonColors(hoverText) + "]}}";
|
||||
}
|
||||
temp += convertToJsonColors(lastCode + formattedPlaceholder, actionJson + hoverJson) + ",";
|
||||
@@ -190,10 +189,10 @@ public class Format {
|
||||
if (ChatColor.stripColor(link).contains("https://"))
|
||||
https = "s";
|
||||
temp += convertToJsonColors(lastCode + link,
|
||||
",\"underlined\":\"" + underlineURLs()
|
||||
+ "\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"http" + https + "://"
|
||||
",\"underlined\":" + underlineURLs()
|
||||
+ ",\"click_event\":{\"action\":\"open_url\",\"url\":\"http" + https + "://"
|
||||
+ ChatColor.stripColor(link.replace("http://", "").replace("https://", ""))
|
||||
+ "\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["
|
||||
+ "\"},\"hover_event\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["
|
||||
+ convertToJsonColors(lastCode + link) + "]}}")
|
||||
+ ",";
|
||||
lastCode = getLastCode(lastCode + link);
|
||||
@@ -343,15 +342,35 @@ public class Format {
|
||||
underlined = false;
|
||||
}
|
||||
if (bold)
|
||||
modifier += ",\"bold\":\"true\"";
|
||||
if (VersionHandler.isAtLeast_1_20_4()) {
|
||||
modifier += ",\"bold\":true";
|
||||
} else {
|
||||
modifier += ",\"bold\":\"true\"";
|
||||
}
|
||||
if (obfuscated)
|
||||
modifier += ",\"obfuscated\":\"true\"";
|
||||
if (VersionHandler.isAtLeast_1_20_4()) {
|
||||
modifier += ",\"obfuscated\":true";
|
||||
} else {
|
||||
modifier += ",\"obfuscated\":\"true\"";
|
||||
}
|
||||
if (italic)
|
||||
modifier += ",\"italic\":\"true\"";
|
||||
if (VersionHandler.isAtLeast_1_20_4()) {
|
||||
modifier += ",\"italic\":true";
|
||||
} else {
|
||||
modifier += ",\"italic\":\"true\"";
|
||||
}
|
||||
if (underlined)
|
||||
modifier += ",\"underlined\":\"true\"";
|
||||
if (VersionHandler.isAtLeast_1_20_4()) {
|
||||
modifier += ",\"underlined\":true";
|
||||
} else {
|
||||
modifier += ",\"underlined\":\"true\"";
|
||||
}
|
||||
if (strikethrough)
|
||||
modifier += ",\"strikethrough\":\"true\"";
|
||||
if (VersionHandler.isAtLeast_1_20_4()) {
|
||||
modifier += ",\"strikethrough\":true";
|
||||
} else {
|
||||
modifier += ",\"strikethrough\":\"true\"";
|
||||
}
|
||||
remaining = remaining.substring(colorLength);
|
||||
colorLength = LEGACY_COLOR_CODE_LENGTH;
|
||||
indexNextColor = remaining.indexOf(BUKKIT_COLOR_CODE_PREFIX);
|
||||
@@ -435,9 +454,9 @@ public class Format {
|
||||
if (player.hasPermission("venturechat.gui")) {
|
||||
json = json.substring(0, json.length() - 1);
|
||||
json += "," + Format.convertToJsonColors(Format.FormatStringAll(getInstance().getConfig().getString("guiicon")),
|
||||
",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/vchatgui " + sender + " " + channelName
|
||||
",\"click_event\":{\"action\":\"run_command\",\"command\":\"/vchatgui " + sender + " " + channelName
|
||||
+ " " + hash
|
||||
+ "\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["
|
||||
+ "\"},\"hover_event\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":["
|
||||
+ Format.convertToJsonColors(
|
||||
Format.FormatStringAll(getInstance().getConfig().getString("guitext")))
|
||||
+ "]}}")
|
||||
@@ -448,16 +467,20 @@ public class Format {
|
||||
|
||||
public static PacketContainer createPacketPlayOutChat(String json) {
|
||||
final PacketContainer container;
|
||||
if (VersionHandler.isAbove_1_19()) {
|
||||
if (VersionHandler.isAtLeast_1_20_4()) { // 1.20.4+
|
||||
container = new PacketContainer(PacketType.Play.Server.SYSTEM_CHAT);
|
||||
container.getChatComponents().write(0, WrappedChatComponent.fromJson(json));
|
||||
container.getBooleans().write(0, false);
|
||||
} else if (VersionHandler.isAbove_1_19()) { // 1.19.1 -> 1.20.3
|
||||
container = new PacketContainer(PacketType.Play.Server.SYSTEM_CHAT);
|
||||
container.getStrings().write(0, json);
|
||||
container.getBooleans().write(0, false);
|
||||
} else if (VersionHandler.isUnder_1_19()) {
|
||||
} else if (VersionHandler.isUnder_1_19()) { // 1.7 -> 1.19
|
||||
WrappedChatComponent component = WrappedChatComponent.fromJson(json);
|
||||
container = new PacketContainer(PacketType.Play.Server.CHAT);
|
||||
container.getModifier().writeDefaults();
|
||||
container.getChatComponents().write(0, component);
|
||||
} else {
|
||||
} else { // 1.19
|
||||
container = new PacketContainer(PacketType.Play.Server.SYSTEM_CHAT);
|
||||
container.getStrings().write(0, json);
|
||||
container.getIntegers().write(0, 1);
|
||||
@@ -467,15 +490,19 @@ public class Format {
|
||||
|
||||
public static PacketContainer createPacketPlayOutChat(WrappedChatComponent component) {
|
||||
final PacketContainer container;
|
||||
if (VersionHandler.isAbove_1_19()) {
|
||||
if (VersionHandler.isAtLeast_1_20_4()) { // 1.20.4+
|
||||
container = new PacketContainer(PacketType.Play.Server.SYSTEM_CHAT);
|
||||
container.getChatComponents().write(0, component);
|
||||
container.getBooleans().write(0, false);
|
||||
} else if (VersionHandler.isAbove_1_19()) { // 1.19.1 -> 1.20.3
|
||||
container = new PacketContainer(PacketType.Play.Server.SYSTEM_CHAT);
|
||||
container.getStrings().write(0, component.getJson());
|
||||
container.getBooleans().write(0, false);
|
||||
} else if (VersionHandler.isUnder_1_19()) {
|
||||
} else if (VersionHandler.isUnder_1_19()) { // 1.7 -> 1.19
|
||||
container = new PacketContainer(PacketType.Play.Server.CHAT);
|
||||
container.getModifier().writeDefaults();
|
||||
container.getChatComponents().write(0, component);
|
||||
} else {
|
||||
} else { // 1.19
|
||||
container = new PacketContainer(PacketType.Play.Server.SYSTEM_CHAT);
|
||||
container.getStrings().write(0, component.getJson());
|
||||
container.getIntegers().write(0, 1);
|
||||
@@ -783,8 +810,13 @@ public class Format {
|
||||
.replace(")", "\\)").replace("|", "\\|").replace("+", "\\+").replace("*", "\\*");
|
||||
}
|
||||
|
||||
public static boolean underlineURLs() {
|
||||
return getInstance().getConfig().getBoolean("underlineurls", true);
|
||||
public static String underlineURLs() {
|
||||
final boolean configValue = getInstance().getConfig().getBoolean("underlineurls", true);
|
||||
if (VersionHandler.isAtLeast_1_20_4()) {
|
||||
return String.valueOf(configValue);
|
||||
} else {
|
||||
return "\"" + configValue + "\"";
|
||||
}
|
||||
}
|
||||
|
||||
public static String parseTimeStringFromMillis(long millis) {
|
||||
@@ -927,15 +959,23 @@ public class Format {
|
||||
public static void playMessageSound(MineverseChatPlayer mcp) {
|
||||
Player player = mcp.getPlayer();
|
||||
String soundName = getInstance().getConfig().getString("message_sound", DEFAULT_MESSAGE_SOUND);
|
||||
if(!soundName.equalsIgnoreCase("None")) {
|
||||
Sound messageSound = getSound(soundName);
|
||||
player.playSound(player.getLocation(), messageSound, 1, 0);
|
||||
if (!soundName.equalsIgnoreCase("None")) {
|
||||
try {
|
||||
Sound messageSound = getSound(soundName);
|
||||
player.playSound(player.getLocation(), messageSound, 1, 0);
|
||||
} catch (final Exception e) {
|
||||
if (MineverseChat.getInstance().getConfig().getString("loglevel", "info").equals("debug")) {
|
||||
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&c - Error playing sound, defaulting to none"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Sound getSound(String soundName) {
|
||||
if(Arrays.asList(Sound.values()).stream().map(Sound::toString).collect(Collectors.toList()).contains(soundName)) {
|
||||
return Sound.valueOf(soundName);
|
||||
for (Sound sound : Sound.values()) {
|
||||
if (sound.toString().equalsIgnoreCase(soundName)) {
|
||||
return sound;
|
||||
}
|
||||
}
|
||||
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&c - Message sound invalid!"));
|
||||
return getDefaultMessageSound();
|
||||
|
||||
@@ -7,6 +7,7 @@ public final class VersionHandler {
|
||||
public static final MinecraftVersion SERVER_VERSION = MinecraftVersion.getCurrentVersion();
|
||||
private static final MinecraftVersion MC1_19 = new MinecraftVersion(1, 19, 0);
|
||||
private static final MinecraftVersion MC1_19_1 = new MinecraftVersion(1, 19, 1);
|
||||
private static final MinecraftVersion MC1_20_4 = new MinecraftVersion(1, 20, 4);
|
||||
|
||||
private VersionHandler() {
|
||||
}
|
||||
@@ -74,4 +75,8 @@ public final class VersionHandler {
|
||||
public static boolean isAbove_1_19() {
|
||||
return SERVER_VERSION.isAtLeast(MC1_19_1);
|
||||
}
|
||||
|
||||
public static boolean isAtLeast_1_20_4() {
|
||||
return SERVER_VERSION.isAtLeast(MC1_20_4);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user