Files
LoginSystem/src/main/java/fr/xephi/authme/service/velocity/VelocitySender.java
T
2024-03-30 21:15:20 +08:00

77 lines
2.5 KiB
Java

package fr.xephi.authme.service.velocity;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.initialization.SettingsDependent;
import fr.xephi.authme.output.ConsoleLoggerFactory;
import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.service.bungeecord.MessageType;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.HooksSettings;
import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.Messenger;
import javax.inject.Inject;
public class VelocitySender implements SettingsDependent {
private final ConsoleLogger logger = ConsoleLoggerFactory.get(VelocitySender.class);
private final AuthMe plugin;
private final BukkitService bukkitService;
private boolean isEnabled;
/*
* Constructor.
*/
@Inject
VelocitySender(AuthMe plugin, BukkitService bukkitService, Settings settings) {
this.plugin = plugin;
this.bukkitService = bukkitService;
reload(settings);
}
@Override
public void reload(Settings settings) {
this.isEnabled = settings.getProperty(HooksSettings.VELOCITY);
if (this.isEnabled) {
Messenger messenger = plugin.getServer().getMessenger();
if (!messenger.isOutgoingChannelRegistered(plugin, "authmevelocity:main")) {
messenger.registerOutgoingPluginChannel(plugin, "authmevelocity:main");
}
}
}
public boolean isEnabled() {
return isEnabled;
}
private void sendForwardedVelocityMessage(Player player, VMessageType type, String playerName) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF(type.toString());
out.writeUTF(playerName);
bukkitService.sendVelocityMessage(player, out.toByteArray());
}
/**
* Sends a message to the AuthMe plugin messaging channel, if enabled.
*
* @param player The player related to the message
* @param type The message type, See {@link MessageType}
*/
public void sendAuthMeVelocityMessage(Player player, VMessageType type) {
if (!isEnabled) {
return;
}
if (!plugin.isEnabled()) {
logger.debug("Tried to send a " + type + " velocity message but the plugin was disabled!");
return;
}
sendForwardedVelocityMessage(player, type, player.getName());
}
}