Initial Commit
This commit is contained in:
commit
49a29a7420
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,2 @@
|
||||||
|
/bin/
|
||||||
|
/target/
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>FPChatX</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,3 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding//src/main/java=UTF-8
|
||||||
|
encoding/src=UTF-8
|
|
@ -0,0 +1,13 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.8
|
|
@ -0,0 +1,4 @@
|
||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
version=1
|
|
@ -0,0 +1,117 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>FPChatX</groupId>
|
||||||
|
<artifactId>FPChatX</artifactId>
|
||||||
|
<version>1.0.0-BETA</version>
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/java</sourceDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.0</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<source>1.7</source>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>org.apache.commons*:*</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<relocations />
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>spigot-repo</id>
|
||||||
|
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>jitpack.io</id>
|
||||||
|
<url>https://jitpack.io</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>bungeecord-repo</id>
|
||||||
|
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>placeholderapi</id>
|
||||||
|
<url>http://repo.extendedclip.com/content/repositories/placeholderapi/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.15.1-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>bukkit</artifactId>
|
||||||
|
<version>1.15.1-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
<artifactId>bungeecord-api</artifactId>
|
||||||
|
<version>1.15-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>bungeecord-config</artifactId>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>bungeecord-event</artifactId>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>bungeecord-protocol</artifactId>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>netty-transport-native-unix-common</artifactId>
|
||||||
|
<groupId>io.netty</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.MilkBowl</groupId>
|
||||||
|
<artifactId>VaultAPI</artifactId>
|
||||||
|
<version>1.7</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>me.clip</groupId>
|
||||||
|
<artifactId>placeholderapi</artifactId>
|
||||||
|
<version>2.10.4</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>FPChatX</groupId>
|
||||||
|
<artifactId>FPChatX</artifactId>
|
||||||
|
<version>1.0.0-BETA</version>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>spigot-repo</id>
|
||||||
|
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>jitpack.io</id>
|
||||||
|
<url>https://jitpack.io</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>bungeecord-repo</id>
|
||||||
|
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>placeholderapi</id>
|
||||||
|
<url>http://repo.extendedclip.com/content/repositories/placeholderapi/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/java</sourceDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.0</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.7</source>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>org.apache.commons*:*</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<relocations>
|
||||||
|
</relocations>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.15.1-R0.1-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit</groupId>
|
||||||
|
<artifactId>bukkit</artifactId>
|
||||||
|
<version>1.15.1-R0.1-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
<artifactId>bungeecord-api</artifactId>
|
||||||
|
<version>1.15-SNAPSHOT</version>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.MilkBowl</groupId>
|
||||||
|
<artifactId>VaultAPI</artifactId>
|
||||||
|
<version>1.7</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>me.clip</groupId>
|
||||||
|
<artifactId>placeholderapi</artifactId>
|
||||||
|
<version>2.10.4</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,242 @@
|
||||||
|
package com.fpghoti.fpchatx;
|
||||||
|
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeList;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.ShoutChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.BadgeClearCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.BadgeEquipCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.BadgeListCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.BlacklistCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.DeleteCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.JoinCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.TalkCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.GiveBadgeCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.HelpCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.HushCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.IgnoreCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.IgnoreListCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.KickCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.LeaveCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.ChannelsCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.CreateCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.MessageCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.ReloadCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.ReplyCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.RevokeBadgeCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.ShoutCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.ShoutToggleCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.SpyCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.UnHushCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.UnignoreCommand;
|
||||||
|
import com.fpghoti.fpchatx.command.commands.WhoCommand;
|
||||||
|
import com.fpghoti.fpchatx.config.MainConfig;
|
||||||
|
import com.fpghoti.fpchatx.config.PlayerCache;
|
||||||
|
import com.fpghoti.fpchatx.listener.PlayerListener;
|
||||||
|
import com.fpghoti.fpchatx.mysql.MySQLConnection;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.VaultUtil;
|
||||||
|
|
||||||
|
public class FPChat extends JavaPlugin {
|
||||||
|
|
||||||
|
private static Logger log = Logger.getLogger("Minecraft");
|
||||||
|
private static Logger chatLog = Logger.getLogger("FPChat");
|
||||||
|
private MainConfig config;
|
||||||
|
private MySQLConnection sql;
|
||||||
|
private static FPChat plugin;
|
||||||
|
private int mysqlTimer = 1140;
|
||||||
|
private BukkitTask refresh = null;
|
||||||
|
private PlayerListener listener = null;
|
||||||
|
private PlayerCache cache;
|
||||||
|
|
||||||
|
public void onEnable() {
|
||||||
|
plugin = this;
|
||||||
|
VaultUtil vault = new VaultUtil(this);
|
||||||
|
vault.setupChat();
|
||||||
|
vault.setupEconomy();
|
||||||
|
vault.setupPermissions();
|
||||||
|
config = new MainConfig(this);
|
||||||
|
if(config.mySQLEnabled()) {
|
||||||
|
sql = new MySQLConnection(this);
|
||||||
|
sql.generate();
|
||||||
|
startTimers();
|
||||||
|
}
|
||||||
|
registerEvents();
|
||||||
|
registerCommands();
|
||||||
|
|
||||||
|
PluginDescriptionFile desc = getDescription();
|
||||||
|
|
||||||
|
ChatChannel.loadChannels();
|
||||||
|
ChatChannel.setShout(new ShoutChannel(this));
|
||||||
|
ChatChannel.setDefault(config.getDefaultChannel());
|
||||||
|
BadgeList.setupBadges();
|
||||||
|
for(int i : BadgeList.badgelist.keySet()) {
|
||||||
|
BadgeList.badgelist.put(i, BadgeList.badgelist.get(i).replace("&", "§"));
|
||||||
|
}
|
||||||
|
cache = new PlayerCache(this);
|
||||||
|
for(Player bp : Bukkit.getOnlinePlayers()){
|
||||||
|
FPlayer.getPlayer(bp);
|
||||||
|
}
|
||||||
|
log(Level.INFO, desc.getName() + " version " + desc.getVersion() + " enabled.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onDisable() {
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
p.cleanup();
|
||||||
|
}
|
||||||
|
if(config.mySQLEnabled()) {
|
||||||
|
sql.disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reload() {
|
||||||
|
Commands.blockCommands();
|
||||||
|
if(listener != null) {
|
||||||
|
listener.disable();
|
||||||
|
}
|
||||||
|
if(refresh != null) {
|
||||||
|
refresh.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.disconnect();
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
p.cleanup();
|
||||||
|
}
|
||||||
|
BadgeList.purge();
|
||||||
|
FPlayer.purge();
|
||||||
|
config = new MainConfig(this);
|
||||||
|
if(config.mySQLEnabled()) {
|
||||||
|
sql = new MySQLConnection(this);
|
||||||
|
sql.generate();
|
||||||
|
startTimers();
|
||||||
|
}
|
||||||
|
ChatChannel.loadChannels();
|
||||||
|
ChatChannel.setShout(new ShoutChannel(this));
|
||||||
|
ChatChannel.setDefault(config.getDefaultChannel());
|
||||||
|
BadgeList.setupBadges();
|
||||||
|
for(int i : BadgeList.badgelist.keySet()) {
|
||||||
|
BadgeList.badgelist.put(i, BadgeList.badgelist.get(i).replace("&", "§"));
|
||||||
|
}
|
||||||
|
cache = new PlayerCache(this);
|
||||||
|
for(Player bp : Bukkit.getOnlinePlayers()){
|
||||||
|
FPlayer.getPlayer(bp);
|
||||||
|
}
|
||||||
|
if(listener != null) {
|
||||||
|
listener.enable();
|
||||||
|
}
|
||||||
|
Commands.allowCommands();
|
||||||
|
log(Level.INFO, "FPChatX reloaded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerEvents() {
|
||||||
|
this.listener = new PlayerListener();
|
||||||
|
PluginManager pm = getServer().getPluginManager();
|
||||||
|
pm.registerEvents(listener, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void registerCommands() {
|
||||||
|
Commands.register(new ReloadCommand(this));
|
||||||
|
Commands.register(new ShoutCommand(this));
|
||||||
|
Commands.register(new ShoutToggleCommand(this));
|
||||||
|
Commands.register(new MessageCommand(this));
|
||||||
|
Commands.register(new ReplyCommand(this));
|
||||||
|
Commands.register(new IgnoreCommand(this));
|
||||||
|
Commands.register(new UnignoreCommand(this));
|
||||||
|
Commands.register(new IgnoreListCommand(this));
|
||||||
|
Commands.register(new BadgeListCommand(this));
|
||||||
|
Commands.register(new BadgeEquipCommand(this));
|
||||||
|
Commands.register(new BadgeClearCommand(this));
|
||||||
|
Commands.register(new SpyCommand(this));
|
||||||
|
Commands.register(new ChannelsCommand(this));
|
||||||
|
Commands.register(new WhoCommand(this));
|
||||||
|
Commands.register(new TalkCommand(this));
|
||||||
|
Commands.register(new JoinCommand(this));
|
||||||
|
Commands.register(new LeaveCommand(this));;
|
||||||
|
Commands.register(new CreateCommand(this));
|
||||||
|
Commands.register(new DeleteCommand(this));
|
||||||
|
Commands.register(new HushCommand(this));
|
||||||
|
Commands.register(new UnHushCommand(this));
|
||||||
|
Commands.register(new KickCommand(this));
|
||||||
|
Commands.register(new BlacklistCommand(this));
|
||||||
|
Commands.register(new HelpCommand(this));
|
||||||
|
Commands.register(new RevokeBadgeCommand(this));
|
||||||
|
Commands.register(new GiveBadgeCommand(this));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public MainConfig getMainConfig() {
|
||||||
|
return this.config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerCache getPlayerCache() {
|
||||||
|
return this.cache;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MySQLConnection getMySQLConnection() {
|
||||||
|
return this.sql;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void log(Level level, String msg) {
|
||||||
|
log.log(level, "[FPChatX] " + msg.replaceAll("§[0-9A-FK-OR]", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void logChat(String msg) {
|
||||||
|
chatLog.info(msg.replaceAll("§[0-9A-FK-OR]", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FPChat getPlugin(){
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String logo() {
|
||||||
|
return "" + ChatColor.DARK_RED + "[" + ChatColor.GREEN + ChatColor.BOLD + "FPChatX" + ChatColor.RESET + ChatColor.DARK_RED + "]" + ChatColor.RESET ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
return Commands.performCommand(sender, command, label, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void startTimers() {
|
||||||
|
refresh = new BukkitRunnable(){
|
||||||
|
public void run() {
|
||||||
|
if(config.shoutCooldownEnabled()) { //shout cooldown
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
if(p != null) {
|
||||||
|
int time = p.getShoutCooldown();
|
||||||
|
if(time > 0){
|
||||||
|
p.setShoutCooldown(time - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(config.mySQLEnabled()){ // mysql auto reconnect
|
||||||
|
if(mysqlTimer >= 1200){
|
||||||
|
sql.reconnect();
|
||||||
|
mysqlTimer = 0;
|
||||||
|
}else{
|
||||||
|
mysqlTimer++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskTimerAsynchronously(this, 1*20, 1*20);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.fpghoti.fpchatx.badge;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class BadgeGetter {
|
||||||
|
|
||||||
|
public static Integer[] getBadges(FPlayer p){
|
||||||
|
UUID id = p.getUniqueId();
|
||||||
|
String uuid = id.toString();
|
||||||
|
Integer badge1 = 0, badge2 = 0, badge3 = 0;
|
||||||
|
Util.connect();
|
||||||
|
if(!FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getChatFeatureTable())){
|
||||||
|
BadgeSet.createPlayer(p);
|
||||||
|
}
|
||||||
|
badge1 = (Integer) FPChat.getPlugin().getMySQLConnection().get("badge_slot1", "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getChatFeatureTable());
|
||||||
|
badge2 = (Integer)FPChat.getPlugin().getMySQLConnection().get("badge_slot2", "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getChatFeatureTable());
|
||||||
|
badge3 = (Integer)FPChat.getPlugin().getMySQLConnection().get("badge_slot3", "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getChatFeatureTable());
|
||||||
|
Integer[] badges = {badge1, badge2, badge3};
|
||||||
|
return badges;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean hasBadge(FPlayer p, int id){
|
||||||
|
if(id == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return p.hasPermission("fpchat.badge" + BadgeList.badgeperm.get(id)) || p.isSynced(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean canUseSlot(FPlayer p, int slotid){
|
||||||
|
if(slotid == 1){
|
||||||
|
return p.hasPermission("fpchat.slot1");
|
||||||
|
}else if(slotid == 2){
|
||||||
|
if(hasBadge(p,33) || hasBadge(p,34) || hasBadge(p,35) || hasBadge(p,52)){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return p.hasPermission("fpchat.slot2");
|
||||||
|
}else if(slotid == 3){
|
||||||
|
if(hasBadge(p,53)){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return p.hasPermission("fpchat.slot3");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,324 @@
|
||||||
|
package com.fpghoti.fpchatx.badge;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class BadgeList {
|
||||||
|
|
||||||
|
|
||||||
|
public static HashMap<Integer, String> badgelist = new LinkedHashMap<>();
|
||||||
|
public static HashMap<Integer, String> badgename = new LinkedHashMap<>();
|
||||||
|
public static HashMap<Integer, String> badgeperm = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
public static HashMap<FPlayer, Integer> pageInstance = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
public static void purge() {
|
||||||
|
badgelist = new LinkedHashMap<>();
|
||||||
|
badgename = new LinkedHashMap<>();
|
||||||
|
badgeperm = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
pageInstance = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void badgeList(FPlayer p , int page){
|
||||||
|
p.sendMessage("");
|
||||||
|
p.sendMessage(ChatColor.RED + "HOW TO USE:" + ChatColor.YELLOW + " You can equip badges with " + ChatColor.DARK_AQUA + "/equip slot# badge#" + ChatColor.YELLOW +". To unequip all badges, use " + ChatColor.DARK_AQUA + "/badgesclear" + ChatColor.YELLOW + ".");
|
||||||
|
p.sendMessage(ChatColor.AQUA + "------------------- Your Badges -------------------");
|
||||||
|
p.sendMessage("");
|
||||||
|
int eventnum = 0;
|
||||||
|
//for(Integer item : badgelist.keySet()){
|
||||||
|
for(int i = 0; i < badgelist.size(); i++){
|
||||||
|
eventnum = eventnum + 1;
|
||||||
|
}
|
||||||
|
double dp = (float)eventnum / 10.0;
|
||||||
|
int pagenum = (int)Math.ceil(dp);
|
||||||
|
if(page <= pagenum && page > 0){
|
||||||
|
pageInstance.put(p,0);
|
||||||
|
int pageten = (page * 10)- 10;
|
||||||
|
for(Integer entry : badgelist.keySet()){
|
||||||
|
if(pageInstance.get(p) == pageten || pageInstance.get(p) == pageten + 1 || pageInstance.get(p) == pageten + 2 || pageInstance.get(p) == pageten + 3 || pageInstance.get(p) == pageten + 4 || pageInstance.get(p) == pageten + 5 || pageInstance.get(p) == pageten + 6 || pageInstance.get(p) == pageten + 7 || pageInstance.get(p) == pageten + 8 || pageInstance.get(p) == pageten + 9){
|
||||||
|
if(entry == 0){
|
||||||
|
}else if(p.hasPermission("fpchat.badge" + badgeperm.get(entry)) || p.isSynced(entry)){
|
||||||
|
p.sendMessage(badgelist.get(entry) + ChatColor.GOLD + " Badge #" + entry + ": " + ChatColor.GREEN + " - " + badgename.get(entry) + ChatColor.GOLD + " - UNLOCKED");
|
||||||
|
}else{
|
||||||
|
p.sendMessage(badgelist.get(entry) + ChatColor.GOLD + " Badge #" + entry + ": " + ChatColor.GREEN + " - " + badgename.get(entry) + ChatColor.RED + " - LOCKED");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pageInstance.put(p,(pageInstance.get(p)+1));
|
||||||
|
}
|
||||||
|
p.sendMessage(ChatColor.AQUA + "");
|
||||||
|
p.sendMessage(ChatColor.YELLOW + "Page " + Integer.toString(page) + " of " + Integer.toString(pagenum));
|
||||||
|
p.sendMessage(ChatColor.AQUA + "---------------------------------------------------");
|
||||||
|
pageInstance.remove(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setupBadges(){
|
||||||
|
|
||||||
|
//DO NOT CHANGE ANY OF THE BADGEID NUMBERS. THIS WILL REALLY SCREW UP PEOPLES BADGE PERMISSIONS IN GAME. I WILL SOON ADD SOMETHING FOR PEOPLE TO MORE EASILY SEE THEIR UNLOCKED BADGES
|
||||||
|
|
||||||
|
//These are the designs used in game of each badge
|
||||||
|
|
||||||
|
badgelist.put(0, "");
|
||||||
|
badgelist.put(1, "&6{✮}");
|
||||||
|
badgelist.put(2, "&b{&7❂&b}");
|
||||||
|
badgelist.put(3, "&c[0G]");
|
||||||
|
badgelist.put(4, "&8{&9Ⓜ&8}");
|
||||||
|
badgelist.put(5, "&b(✌)");
|
||||||
|
badgelist.put(6, "&3{☹}");
|
||||||
|
badgelist.put(7, "&4<&8➳&4>");
|
||||||
|
badgelist.put(8, "&a(รɦṁ)");
|
||||||
|
badgelist.put(9, "&e[Ⓒ]");
|
||||||
|
badgelist.put(10, "&8[&f☠&8]");
|
||||||
|
badgelist.put(11, "&b{&f☃&b}");
|
||||||
|
badgelist.put(12, "&d{&6❀&d}");
|
||||||
|
badgelist.put(13, "&e<&a☣&e>");
|
||||||
|
badgelist.put(14, "&5(&3☔&5)");
|
||||||
|
badgelist.put(15, "&a{☎}");
|
||||||
|
badgelist.put(16, "&7{&b♫&7}");
|
||||||
|
badgelist.put(17, "&e<&6⚡&e>");
|
||||||
|
badgelist.put(18, "&3(&c⍤&3)");
|
||||||
|
badgelist.put(19, "&f[&c♛&f]");
|
||||||
|
badgelist.put(20, "&b[&a✦&b]");
|
||||||
|
badgelist.put(21, "&e[&7♜&e]");
|
||||||
|
badgelist.put(22, "&6[&7⚒&6]");
|
||||||
|
badgelist.put(23, "&3[&7❖&3]");
|
||||||
|
badgelist.put(24, "&2[&7⧈&2]");
|
||||||
|
badgelist.put(25, "&5(&d⚉&5)");
|
||||||
|
badgelist.put(26, "&1[&4β&1]");
|
||||||
|
badgelist.put(27, "&b{&3&lᴮᵀ&b}");
|
||||||
|
badgelist.put(28, "&c{&b&lᴴᴮᵀ&c}");
|
||||||
|
badgelist.put(29, "&8{&6&lᴮ&a&lᵒ&6&lᵒ&8}");
|
||||||
|
badgelist.put(30, "&3<&eᵒᵒᶠ&3>");
|
||||||
|
badgelist.put(31, "&b&l{&f&l✔&b&l}");
|
||||||
|
badgelist.put(32, "&a|PR0|");
|
||||||
|
badgelist.put(33, "&1⦅&b&lx2&r&1⦆");
|
||||||
|
badgelist.put(34, "&a«&2&lx2&r&a»");
|
||||||
|
badgelist.put(35, "&e⦉&6x2&e⦊");
|
||||||
|
badgelist.put(36, "&6﴾&cⰀ&6﴿");
|
||||||
|
badgelist.put(37, "&7﴾※﴿");
|
||||||
|
badgelist.put(38, "&7⌈&f◉&d⩐&f◉&7⌉");
|
||||||
|
badgelist.put(39, "&8[&7༗&8]");
|
||||||
|
badgelist.put(40, "&8[&bⒺ➀&8]");
|
||||||
|
badgelist.put(41, "&8[&eⒺ➁&8]");
|
||||||
|
badgelist.put(42, "&8[&2Ⓔ➂&8]");
|
||||||
|
badgelist.put(43, "&8[&6Ⓔ&c➃&8]");
|
||||||
|
badgelist.put(44, "&8[&bⒺ&a➄&8]");
|
||||||
|
badgelist.put(45, "&8[&cⒺ&b➅&8]");
|
||||||
|
badgelist.put(46, "&5{&dᴠɪᴘ&5}");
|
||||||
|
badgelist.put(47, "&5{&4ᴠ&eɪ&9ᴘ&a⁺&5}");
|
||||||
|
badgelist.put(48, "&6{&bᴠ&c⁺&a⁺&6}");
|
||||||
|
badgelist.put(49, "&3{&bᴛᴏᴘ&3}");
|
||||||
|
badgelist.put(50, "&6{&eᴘʟᴀᴛ&6}");
|
||||||
|
badgelist.put(51, "&8{&7ᴛɪ&8}");
|
||||||
|
badgelist.put(52, "&c⦉&4x2&c⦊");
|
||||||
|
badgelist.put(53, "&b⦅&1&lx3&r&b⦆");
|
||||||
|
badgelist.put(54, "&8[&5✥&8]");
|
||||||
|
badgelist.put(55, "&8{&bⒶ&8}");
|
||||||
|
badgelist.put(56, "&8{&3ᴼᴾ&8}");
|
||||||
|
badgelist.put(57, "&8{&4&l♔&8}");
|
||||||
|
badgelist.put(58, "&7{&9☯&7}");
|
||||||
|
badgelist.put(59, "&f⟦&6&o&l0G&8&f⟧");
|
||||||
|
badgelist.put(60, "&6ヽ( •_)ᕗ");
|
||||||
|
badgelist.put(61, "&c⦇&6☕&c⦈");
|
||||||
|
badgelist.put(62, "&b&l⦍&c&lF&b&l⦐");
|
||||||
|
badgelist.put(63, "&a⦇&e⧔⧕&d⦈");
|
||||||
|
badgelist.put(64, "&2[&c❒&2]");
|
||||||
|
badgelist.put(65, "&4{&e▼&4}");
|
||||||
|
badgelist.put(66, "&e{&d☞&e}");
|
||||||
|
badgelist.put(67, "&f<&7✄&f>");
|
||||||
|
badgelist.put(68, "&5⸨&d◕‿‿◕&5⸩");
|
||||||
|
badgelist.put(69, "&d⌇&4❤&d⌇");
|
||||||
|
badgelist.put(70, "&6ʕ•ᴥ•ʔ");
|
||||||
|
badgelist.put(71, "&f<&9☆彡&f>");
|
||||||
|
badgelist.put(72, "&a(&5✿&a}");
|
||||||
|
badgelist.put(73, "&a&k!&e&k!&c&k!&b&k!&c&k!&e&k!&a&k!&r");
|
||||||
|
badgelist.put(74, "&a[&f[&6Ⱑ&f]&a]");
|
||||||
|
badgelist.put(75, "&4]&8⸮&4[");
|
||||||
|
badgelist.put(76, "&0【&7&l〆&r&0】");
|
||||||
|
badgelist.put(77, "&9[&2⸙&9]");
|
||||||
|
badgelist.put(78, "&8⸠⨷⸡");
|
||||||
|
badgelist.put(79, "&a⦑&4⚐&9⚑&a⦒");
|
||||||
|
badgelist.put(80, "p");
|
||||||
|
|
||||||
|
// These are the badge names listed in the badge menu.
|
||||||
|
// See notes here for possible badge uses
|
||||||
|
|
||||||
|
badgename.put(0, "Empty"); //Represents an empty badge slot. Equipping removes whatever badge is in that slot.
|
||||||
|
badgename.put(1, "Gold Star"); //We have given these to people who win contests or in game events we have
|
||||||
|
badgename.put(2, "Silver Star"); //We've used this as a voting reward in the past
|
||||||
|
badgename.put(3, "Original Player"); //I've tried to reserve this one but people started giving it out, but we can still give this to old donors.
|
||||||
|
badgename.put(4, "Staff"); //Staff only
|
||||||
|
badgename.put(5, "Peace"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(6, "Boo-hoo"); //Obtainable by easter egg in one of the spawn vaults
|
||||||
|
badgename.put(7, "Hunter"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(8, "Shmeckle"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(9, "Copyright"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(10, "Skull"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(11, "Snowman"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(12, "Flower"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(13, "Radioactive"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(14, "Rainy"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(15, "Telephone"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(16, "Music"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(17, "Lightning"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(18, "Wow"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(19, "Monarch"); //Give to old creative donor with Monarch
|
||||||
|
badgename.put(20, "Baron"); //Give to old creative donor with Baron
|
||||||
|
badgename.put(21, "Artificer"); // Give to old creative donor with Artificer
|
||||||
|
badgename.put(22, "Craftsman"); // Give to old creative donor with Craftsman
|
||||||
|
badgename.put(23, "Journeyman"); // Give to old creative donor with Journeyman
|
||||||
|
badgename.put(24, "Carpenter"); // Give to old creative donor with Carpenter
|
||||||
|
badgename.put(25, "Pig"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(26, "Beta"); // Reserve for contests or special gift from staff
|
||||||
|
badgename.put(27, "Build Team"); // Reserve for Build team
|
||||||
|
badgename.put(28, "Head Builder"); // May not have any use anymore, but not really something for players
|
||||||
|
badgename.put(29, "Boo"); //Sell in-game or on the donor shop (OR give to players at Halloween)
|
||||||
|
badgename.put(30, "OOF!"); //Obtainable easteregg
|
||||||
|
badgename.put(31, "Trusted / Verified Player"); //Give to trusted/ex staff/ build team
|
||||||
|
badgename.put(32, "Professional Player"); //Can make a reward for parkour. We've associated this badge with an achievement in the past
|
||||||
|
badgename.put(33, "x2 Slots (Blue)"); // Anyone with this badge can equip a badge to a second slot
|
||||||
|
badgename.put(34, "x2 Slots (Green)"); // Same as #33 but green
|
||||||
|
badgename.put(35, "x2 Slots (Yellow)"); // same as #33 and #34 but yellow
|
||||||
|
badgename.put(36, "Gilded Crest"); //I've typically only given this one to staff
|
||||||
|
badgename.put(37, "Silver Crest"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(38, "Derp"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(39, "Hawk-Eye");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(40, "Expert Level 1"); // Survival can make unlockable with rank progression
|
||||||
|
badgename.put(41, "Expert Level 2"); // Survival can make unlockable with rank progression
|
||||||
|
badgename.put(42, "Expert Level 3"); // Survival can make unlockable with rank progression
|
||||||
|
badgename.put(43, "Expert Level 4"); // Survival can make unlockable with rank progression
|
||||||
|
badgename.put(44, "Expert Level 5"); // Survival can make unlockable with rank progression
|
||||||
|
badgename.put(45, "Expert Level 6"); // Survival can make unlockable with rank progression
|
||||||
|
badgename.put(46, "VIP"); // Give to old main donors
|
||||||
|
badgename.put(47, "VIP+"); // Give to old main donors
|
||||||
|
badgename.put(48, "VIP++"); // Give to old main donors
|
||||||
|
badgename.put(49, "Topaz"); // Give to old main donors
|
||||||
|
badgename.put(50, "Platinum"); // Give to old main donors
|
||||||
|
badgename.put(51, "Titanium"); // Give to old main donors
|
||||||
|
badgename.put(52, "x2 Slots (Red)"); // Same as #33, #34, and #35 but red
|
||||||
|
badgename.put(53, "x3 Slots (Blue)"); // Anyone with this badge can equip 3 badges
|
||||||
|
badgename.put(54, "Architect"); //Can make unlockable on creative
|
||||||
|
badgename.put(55, "Admin"); // Reserved for staff
|
||||||
|
badgename.put(56, "Operator"); // Reserved for staff
|
||||||
|
badgename.put(57, "Owner"); // I wonder who this is for
|
||||||
|
badgename.put(58, "PvP Legend"); // Can give to old PvP donors and maybe even kitpvp donors
|
||||||
|
badgename.put(59, "Gold OG"); // Can give to old donors who had some of the higher ranks
|
||||||
|
badgename.put(60, "Dab"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(61, "Coffee"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(62, "F"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(63, "Candy"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(64, "Box"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(65, "Pizza"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(66, "Pointer"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(67, "Scissors"); //Sell in-game or on the donor shop
|
||||||
|
badgename.put(68, "Grin");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(69, "Heart"); //Can give away for Valentine's day
|
||||||
|
badgename.put(70, "Bear");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(71, "Comet");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(72, "Tropical Flower");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(73, "Magic");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(74, "Sealed");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(75, "Backwards");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(76, "Dagger");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(77, "Leaf");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(78, "Starship");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(79, "Flags");//Sell in-game or on the donor shop
|
||||||
|
badgename.put(80, "Stunned");//Sell in-game or on the donor shop
|
||||||
|
|
||||||
|
|
||||||
|
// BADGE PERMS
|
||||||
|
// These are the specific perm for each badge. They go like this:
|
||||||
|
// fpchat.badge.<badgeperm> I.E fpchat.badge.goldstar
|
||||||
|
// See notes above for badges use ideas
|
||||||
|
|
||||||
|
badgeperm.put(0, "");
|
||||||
|
badgeperm.put(1, ".goldstar");
|
||||||
|
badgeperm.put(2, ".silverstar");
|
||||||
|
badgeperm.put(3, ".og");
|
||||||
|
badgeperm.put(4, ".staff");
|
||||||
|
badgeperm.put(5, ".peace");
|
||||||
|
badgeperm.put(6, ".boohoo");
|
||||||
|
badgeperm.put(7, ".hunter");
|
||||||
|
badgeperm.put(8, ".shmeckle");
|
||||||
|
badgeperm.put(9, ".copyright");
|
||||||
|
badgeperm.put(10, ".skull");
|
||||||
|
badgeperm.put(11, ".snowman");
|
||||||
|
badgeperm.put(12, ".flower");
|
||||||
|
badgeperm.put(13, ".radioactive");
|
||||||
|
badgeperm.put(14, ".rainy");
|
||||||
|
badgeperm.put(15, ".telephone");
|
||||||
|
badgeperm.put(16, ".music");
|
||||||
|
badgeperm.put(17, ".lightning");
|
||||||
|
badgeperm.put(18, ".wow");
|
||||||
|
badgeperm.put(19, ".monarch");
|
||||||
|
badgeperm.put(20, ".baron");
|
||||||
|
badgeperm.put(21, ".artificer");
|
||||||
|
badgeperm.put(22, ".craftsman");
|
||||||
|
badgeperm.put(23, ".journeyman");
|
||||||
|
badgeperm.put(24, ".carpenter");
|
||||||
|
badgeperm.put(25, ".pig");
|
||||||
|
badgeperm.put(26, ".fpn");
|
||||||
|
badgeperm.put(27, ".bt");
|
||||||
|
badgeperm.put(28, ".hbt");
|
||||||
|
badgeperm.put(29, ".boo");
|
||||||
|
badgeperm.put(30, ".oof");
|
||||||
|
badgeperm.put(31, ".verified");
|
||||||
|
badgeperm.put(32, ".pro");
|
||||||
|
badgeperm.put(33, ".2blue");
|
||||||
|
badgeperm.put(34, ".2green");
|
||||||
|
badgeperm.put(35, ".2yellow");
|
||||||
|
badgeperm.put(36, ".gildedcrest");
|
||||||
|
badgeperm.put(37, ".silvercrest");
|
||||||
|
badgeperm.put(38, ".derp");
|
||||||
|
badgeperm.put(39, ".hawkeye");
|
||||||
|
badgeperm.put(40, ".expert1");
|
||||||
|
badgeperm.put(41, ".expert2");
|
||||||
|
badgeperm.put(42, ".expert3");
|
||||||
|
badgeperm.put(43, ".expert4");
|
||||||
|
badgeperm.put(44, ".expert5");
|
||||||
|
badgeperm.put(45, ".expert6");
|
||||||
|
badgeperm.put(46, ".vip");
|
||||||
|
badgeperm.put(47, ".vip+");
|
||||||
|
badgeperm.put(48, ".vip++");
|
||||||
|
badgeperm.put(49, ".topaz");
|
||||||
|
badgeperm.put(50, ".platinum");
|
||||||
|
badgeperm.put(51, ".titanium");
|
||||||
|
badgeperm.put(52, ".2red");
|
||||||
|
badgeperm.put(53, ".3blue");
|
||||||
|
badgeperm.put(54, ".architect");
|
||||||
|
badgeperm.put(55, ".admin");
|
||||||
|
badgeperm.put(56, ".operator");
|
||||||
|
badgeperm.put(57, ".owner");
|
||||||
|
badgeperm.put(58, ".pvplegend");
|
||||||
|
badgeperm.put(59, ".goldog");
|
||||||
|
badgeperm.put(60, ".dab");
|
||||||
|
badgeperm.put(61, ".coffee");
|
||||||
|
badgeperm.put(62, ".f");
|
||||||
|
badgeperm.put(63, ".candy");
|
||||||
|
badgeperm.put(64, ".box");
|
||||||
|
badgeperm.put(65, ".pizza");
|
||||||
|
badgeperm.put(66, ".pointer");
|
||||||
|
badgeperm.put(67, ".scissors");
|
||||||
|
badgeperm.put(68, ".grin");
|
||||||
|
badgeperm.put(69, ".heart");
|
||||||
|
badgeperm.put(70, ".bear");
|
||||||
|
badgeperm.put(71, ".comet");
|
||||||
|
badgeperm.put(72, ".tropicalflower");
|
||||||
|
badgeperm.put(73, ".magic");
|
||||||
|
badgeperm.put(74, ".sealed");
|
||||||
|
badgeperm.put(75, ".backwards");
|
||||||
|
badgeperm.put(76, ".dagger");
|
||||||
|
badgeperm.put(77, ".leaf");
|
||||||
|
badgeperm.put(78, ".starship");
|
||||||
|
badgeperm.put(79, ".flags");
|
||||||
|
badgeperm.put(80, ".stunned");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.fpghoti.fpchatx.badge;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class BadgeSet {
|
||||||
|
|
||||||
|
public static void setBadge(FPlayer p, int slot, int badgeId){
|
||||||
|
if(slot > 3){
|
||||||
|
slot = 3;
|
||||||
|
}else if(slot < 1){
|
||||||
|
slot = 1;
|
||||||
|
}
|
||||||
|
String uuid = p.getUniqueId().toString();
|
||||||
|
Util.connect();
|
||||||
|
if(!FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getChatFeatureTable())){
|
||||||
|
createPlayer(p);
|
||||||
|
}
|
||||||
|
FPChat.getPlugin().getMySQLConnection().set("badge_slot" + String.valueOf(slot), badgeId, "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getChatFeatureTable());
|
||||||
|
BadgeGetter.getBadges(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createPlayer(FPlayer p){
|
||||||
|
String uuid = p.getUniqueId().toString();
|
||||||
|
Util.connect();
|
||||||
|
if(!FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getChatFeatureTable())){
|
||||||
|
FPChat.getPlugin().getMySQLConnection().insertInto("player_uuid, badge_slot1, badge_slot2, badge_slot3", " '" + uuid + "', '0', '0', '0' ", FPChat.getPlugin().getMainConfig().getChatFeatureTable());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.fpghoti.fpchatx.badge;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class SyncGetter {
|
||||||
|
|
||||||
|
public static void syncBadges(FPlayer p, boolean create){
|
||||||
|
UUID id = p.getUniqueId();
|
||||||
|
String uuid = id.toString();
|
||||||
|
Util.connect();
|
||||||
|
if(create && !FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable())){
|
||||||
|
SyncSet.createPlayer(p);
|
||||||
|
}
|
||||||
|
String raw = (String) FPChat.getPlugin().getMySQLConnection().get("badges", "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable());
|
||||||
|
if(raw != null && raw.length() > 0 && raw.charAt(0) == ','){
|
||||||
|
raw = raw.substring(1);
|
||||||
|
}
|
||||||
|
if(raw != null && !raw.equals("")) {
|
||||||
|
String list[] = Util.stripLast(raw).split(",");
|
||||||
|
for(String item : list) {
|
||||||
|
if(!item.equals("")) {
|
||||||
|
Integer badgeId = Integer.parseInt(item);
|
||||||
|
p.addSyncedBadge(badgeId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean syncExists(FPlayer p){
|
||||||
|
Boolean check = false;
|
||||||
|
if(p == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String uuid = p.getUniqueId().toString();
|
||||||
|
Util.connect();
|
||||||
|
if(FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable())){
|
||||||
|
check = true;
|
||||||
|
}
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,126 @@
|
||||||
|
package com.fpghoti.fpchatx.badge;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class SyncSet {
|
||||||
|
|
||||||
|
public static void update(FPlayer p) {
|
||||||
|
update(p, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void update(FPlayer p, boolean create){
|
||||||
|
String uuid = p.getUniqueId().toString();
|
||||||
|
Util.connect();
|
||||||
|
if(create && !FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable())){
|
||||||
|
createPlayer(p);
|
||||||
|
}
|
||||||
|
SyncGetter.syncBadges(p, false);
|
||||||
|
String nl = "";
|
||||||
|
String nl2 = "";
|
||||||
|
String permstring = getBadgeString(p);
|
||||||
|
String[] permids = permstring.split(",");
|
||||||
|
for(String item : permids){
|
||||||
|
if(Util.isDigit(item)) {
|
||||||
|
int id = Integer.parseInt(item);
|
||||||
|
if(!p.isSynced(id)){
|
||||||
|
nl = nl + item + ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int id : p.syncedList()){
|
||||||
|
String item = Integer.toString(id);
|
||||||
|
nl2 = nl2 + item + ",";
|
||||||
|
}
|
||||||
|
nl = nl + nl2;
|
||||||
|
FPChat.getPlugin().getMySQLConnection().set("badges", nl, "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable());
|
||||||
|
SyncGetter.syncBadges(p,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void revoke(FPlayer p) {
|
||||||
|
revoke(p,true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void revoke(FPlayer p, boolean create) {
|
||||||
|
String uuid = p.getUniqueId().toString();
|
||||||
|
Util.connect();
|
||||||
|
if(create && !FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable())){
|
||||||
|
createPlayer(p);
|
||||||
|
}
|
||||||
|
SyncGetter.syncBadges(p, false);
|
||||||
|
String nl = "";
|
||||||
|
FPChat.getPlugin().getMySQLConnection().set("badges", nl, "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable());
|
||||||
|
SyncGetter.syncBadges(p, false);
|
||||||
|
}
|
||||||
|
public static void revoke(FPlayer p, int badgeId){
|
||||||
|
revoke(p, badgeId, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void revoke(FPlayer p, int badgeId, boolean create){
|
||||||
|
String uuid = p.getUniqueId().toString();
|
||||||
|
|
||||||
|
Util.connect();
|
||||||
|
if(create && !FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable())){
|
||||||
|
createPlayer(p);
|
||||||
|
}
|
||||||
|
SyncGetter.syncBadges(p, false);
|
||||||
|
String nl = "";
|
||||||
|
String nl2 = "";
|
||||||
|
for(String item : revokeBadgeString(p, badgeId).split(",")){
|
||||||
|
if(Util.isDigit(item)) {
|
||||||
|
int id = Integer.parseInt(item);
|
||||||
|
if(p.isSynced(id)){
|
||||||
|
nl = nl + item + ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int id : p.syncedList()){
|
||||||
|
String item = Integer.toString(id);
|
||||||
|
if(id != badgeId){
|
||||||
|
nl2 = nl2 + item + ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nl = nl + nl2;
|
||||||
|
FPChat.getPlugin().getMySQLConnection().set("badges", nl, "player_uuid", "=", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable());
|
||||||
|
SyncGetter.syncBadges(p, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getBadgeString(FPlayer p){
|
||||||
|
String list = "";
|
||||||
|
for(int i = 1; i < BadgeList.badgeperm.size(); i++){
|
||||||
|
if(p.hasPermission("fpchat.badge" + BadgeList.badgeperm.get(i))){
|
||||||
|
String add = Integer.toString(i) + ",";
|
||||||
|
list = list + add;
|
||||||
|
}else if(p.getBadgeQueue().contains(i)) {
|
||||||
|
String add = Integer.toString(i) + ",";
|
||||||
|
list = list + add;
|
||||||
|
p.unqueueBadge(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String revokeBadgeString(FPlayer p, int badgeId){
|
||||||
|
String list = "";
|
||||||
|
for(int i = 1; i < BadgeList.badgeperm.size(); i++){
|
||||||
|
if(p.hasPermission("fpchat.badge" + BadgeList.badgeperm.get(i))){
|
||||||
|
if(i != badgeId){
|
||||||
|
String add = Integer.toString(i) + ",";
|
||||||
|
list = list + add;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createPlayer(FPlayer p){
|
||||||
|
String uuid = p.getUniqueId().toString();
|
||||||
|
Util.connect();
|
||||||
|
if(!FPChat.getPlugin().getMySQLConnection().itemExists("player_uuid", uuid, FPChat.getPlugin().getMainConfig().getPermSyncTable())){
|
||||||
|
FPChat.getPlugin().getMySQLConnection().insertInto("player_uuid, badges", " '" + uuid + "', '' ", FPChat.getPlugin().getMainConfig().getPermSyncTable());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,344 @@
|
||||||
|
package com.fpghoti.fpchatx.chat;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeList;
|
||||||
|
import com.fpghoti.fpchatx.config.ChannelFile;
|
||||||
|
import com.fpghoti.fpchatx.customcodes.BubbleCode;
|
||||||
|
import com.fpghoti.fpchatx.customcodes.Codify;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public abstract class ChatChannel {
|
||||||
|
|
||||||
|
private static ChatChannel defaultChannel = null;
|
||||||
|
private static ArrayList<StandardChannel> channels;
|
||||||
|
private static ArrayList<TempChannel> tempchannels;
|
||||||
|
private static ChatChannel shout;
|
||||||
|
private static final String[] reserved = {"shout"};
|
||||||
|
|
||||||
|
private static ArrayList<String> loadChannelNames() {
|
||||||
|
ArrayList<String> cnames = new ArrayList<String>();
|
||||||
|
for(File f : ChannelFile.getChannelFiles()) {
|
||||||
|
String fname = f.getName();
|
||||||
|
cnames.add(fname.substring(0, fname.length()-4));
|
||||||
|
}
|
||||||
|
return cnames;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static StandardChannel loadChannel(String channelname) {
|
||||||
|
if(ChannelFile.channelExists(channelname)) {
|
||||||
|
return makeChannel(channelname);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StandardChannel makeChannel(String channelname) {
|
||||||
|
ChannelFile file = new ChannelFile(FPChat.getPlugin(), channelname);
|
||||||
|
StandardChannel c = new StandardChannel(FPChat.getPlugin(), file);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TempChannel makeTempChannel(FPlayer owner, String channelname) {
|
||||||
|
TempChannel t = new TempChannel(FPChat.getPlugin(), owner, channelname);
|
||||||
|
t.setShortcut(channelname);
|
||||||
|
tempchannels.add(t);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setShout(ShoutChannel shoutchannel) {
|
||||||
|
shout = shoutchannel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void deleteChannel(String channelname) {
|
||||||
|
ChatChannel c = getChannel(channelname);
|
||||||
|
boolean temp = false;
|
||||||
|
if(c == null) {
|
||||||
|
c = getTempChannel(channelname);
|
||||||
|
temp = true;
|
||||||
|
}
|
||||||
|
if(c != null) {
|
||||||
|
String cname = c.getName();
|
||||||
|
for(FPlayer pl : c.getPlayers()) {
|
||||||
|
pl.leaveChannel(cname);
|
||||||
|
FPlayer.dualMsg(pl, ChatColor.YELLOW + "The channel you were in " + ChatColor.WHITE + c.getName() + ChatColor.YELLOW + " was deleted.");
|
||||||
|
}
|
||||||
|
tempchannels.remove(c);
|
||||||
|
channels.remove(c);
|
||||||
|
if(!temp) {
|
||||||
|
File cdir = new File(FPChat.getPlugin().getDataFolder() + File.separator + "channels");
|
||||||
|
cdir.mkdirs();
|
||||||
|
File configFile = new File(cdir, cname + ".yml");
|
||||||
|
if(configFile.delete()) {
|
||||||
|
FPChat.getPlugin().log(Level.INFO, "Channel file for " + cname + " successfully deleted.");
|
||||||
|
} else {
|
||||||
|
FPChat.getPlugin().log(Level.SEVERE, "======================================================");
|
||||||
|
FPChat.getPlugin().log(Level.SEVERE, "| ------------------ FPCHATX ERROR ----------------- |");
|
||||||
|
FPChat.getPlugin().log(Level.SEVERE, "======================================================");
|
||||||
|
FPChat.getPlugin().log(Level.SEVERE, "| Channel not properly removed. File deletion error. |");
|
||||||
|
FPChat.getPlugin().log(Level.SEVERE, "| ---------- Check the file and try again. --------- |");
|
||||||
|
FPChat.getPlugin().log(Level.SEVERE, "======================================================");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
FPChat.getPlugin().log(Level.INFO, "Temp Channel " + cname + " was deleted.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ChatChannel getDefault() {
|
||||||
|
return defaultChannel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setDefault(String channel) {
|
||||||
|
defaultChannel = getChannel(channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayList<ChatChannel> getChannels(){
|
||||||
|
ArrayList<ChatChannel> c = new ArrayList<ChatChannel>();
|
||||||
|
for(StandardChannel ch : channels) {
|
||||||
|
c.add(ch);
|
||||||
|
}
|
||||||
|
for(TempChannel ch : tempchannels) {
|
||||||
|
c.add(ch);
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ChatChannel getChannel(String name) {
|
||||||
|
for(ChatChannel c : channels) {
|
||||||
|
if(c.getName().equalsIgnoreCase(name)) {
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ChatChannel getTempChannel(String name) {
|
||||||
|
for(ChatChannel c : tempchannels) {
|
||||||
|
if(c.getName().equalsIgnoreCase(name)) {
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void loadChannels() {
|
||||||
|
shout = (ChatChannel)(new ShoutChannel(FPChat.getPlugin()));
|
||||||
|
channels = new ArrayList<StandardChannel>();
|
||||||
|
tempchannels = new ArrayList<TempChannel>();
|
||||||
|
for(String c : loadChannelNames()) {
|
||||||
|
StandardChannel chan = loadChannel(c);
|
||||||
|
if(chan != null) {
|
||||||
|
channels.add(chan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ChatChannel getShout() {
|
||||||
|
return shout;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean channelExists(String name) {
|
||||||
|
for(ChatChannel c : getChannels()) {
|
||||||
|
if(c.getName().equalsIgnoreCase(name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isReserved(String name) {
|
||||||
|
if(channelExists(name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
for(String s : reserved) {
|
||||||
|
if(s.equalsIgnoreCase(name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addChannel(StandardChannel channel) {
|
||||||
|
channels.add(channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected FPChat plugin;
|
||||||
|
protected String name;
|
||||||
|
protected String shortcut;
|
||||||
|
protected String chatFormat;
|
||||||
|
protected String distinguishedChatFormat;
|
||||||
|
protected boolean isWhitelisted;
|
||||||
|
|
||||||
|
protected ArrayList<UUID> whitelist;
|
||||||
|
protected ArrayList<UUID> banned;
|
||||||
|
|
||||||
|
public ChatChannel(FPChat plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.isWhitelisted = false;
|
||||||
|
this.whitelist = new ArrayList<UUID>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void makeDefault() {
|
||||||
|
ChatChannel.defaultChannel = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract boolean isTemp();
|
||||||
|
|
||||||
|
public abstract boolean isDefault();
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void kick(FPlayer p);
|
||||||
|
|
||||||
|
public abstract void setShortcut(String shortcut);
|
||||||
|
|
||||||
|
public String getShortcut() {
|
||||||
|
return this.shortcut;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void setChatFormat(String chatFormat);
|
||||||
|
|
||||||
|
public String getChatFormat() {
|
||||||
|
return this.chatFormat.replace("{channel}", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void setDistinguishedChatFormat(String chatFormat);
|
||||||
|
|
||||||
|
public String getDistinguishedChatFormat() {
|
||||||
|
return this.distinguishedChatFormat.replace("{channel}", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void enableWhitelist();
|
||||||
|
|
||||||
|
public abstract void disableWhitelist();
|
||||||
|
|
||||||
|
public boolean whitelistEnabled() {
|
||||||
|
return this.isWhitelisted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void whitelistAdd(OfflinePlayer p) {
|
||||||
|
whitelistAdd(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void whitelistAdd(Player p) {
|
||||||
|
whitelistAdd(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void whitelistAdd(FPlayer p) {
|
||||||
|
whitelistAdd(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void whitelistAdd(UUID uuid);
|
||||||
|
|
||||||
|
public void whitelistRemove(OfflinePlayer p) {
|
||||||
|
whitelistRemove(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void whitelistRemove(Player p) {
|
||||||
|
whitelistRemove(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void whitelistRemove(FPlayer p) {
|
||||||
|
whitelistRemove(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void whitelistRemove(UUID uuid);
|
||||||
|
|
||||||
|
public abstract boolean isWhitelisted(FPlayer p);
|
||||||
|
|
||||||
|
public void log(String str) {
|
||||||
|
plugin.log(Level.INFO, str);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void enableRadius();
|
||||||
|
|
||||||
|
public abstract void disableRadius();
|
||||||
|
|
||||||
|
public abstract boolean hasRadius();
|
||||||
|
|
||||||
|
public abstract void setRadius(int radius);
|
||||||
|
|
||||||
|
public abstract int getRadius();
|
||||||
|
|
||||||
|
public boolean isBanned(FPlayer p) {
|
||||||
|
return banned.contains(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void addBanned(FPlayer p);
|
||||||
|
|
||||||
|
public abstract ArrayList<FPlayer> getPlayers();
|
||||||
|
|
||||||
|
public abstract void removeBanned(FPlayer p);
|
||||||
|
|
||||||
|
public ArrayList<UUID> getBanned(){
|
||||||
|
return this.banned;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int playerCount() {
|
||||||
|
int count = 0;
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
if(p.getChannels().contains(name) || p.getTempChannels().contains(name)) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String format(FPlayer p, String msg) {
|
||||||
|
String finalMessage = "";
|
||||||
|
String slot3 = "", slot2 = "", slot1 = "";
|
||||||
|
String stf = "";
|
||||||
|
if (Permission.canUseColor(p)) {
|
||||||
|
msg = msg.replaceAll("&([0-9a-fk-or])", "§$1");
|
||||||
|
} else {
|
||||||
|
msg = msg.replaceAll("§[0-9a-fk-or]", "");
|
||||||
|
}
|
||||||
|
String header = PrepareChat.swapPlaceholders(p, this, msg);
|
||||||
|
if(Permission.isStaff(p)){
|
||||||
|
stf = FPChat.getPlugin().getMainConfig().getStaffBadge();
|
||||||
|
}
|
||||||
|
if(plugin.getMainConfig().mySQLEnabled()){
|
||||||
|
Integer[] badges = p.getBadges();
|
||||||
|
slot1 = BadgeList.badgelist.get(badges[0]);
|
||||||
|
slot2 = BadgeList.badgelist.get(badges[1]);
|
||||||
|
slot3 = BadgeList.badgelist.get(badges[2]);
|
||||||
|
}
|
||||||
|
String filler = "";
|
||||||
|
if(plugin.getMainConfig().chatFilterEnabled()){
|
||||||
|
filler = "word ";
|
||||||
|
}
|
||||||
|
if(Permission.canUseColor(p)){
|
||||||
|
String last = ChatFilter.filter(filler + msg);
|
||||||
|
last = BubbleCode.bubblecode(Permission.canBubbleCode(p), Codify.changeFormatSign(last));
|
||||||
|
finalMessage = stf + slot3 + slot2 + slot1 + header + last;
|
||||||
|
}else{
|
||||||
|
String newmsg = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('§', ChatFilter.filter(filler + msg)));
|
||||||
|
finalMessage = stf + slot3 + slot2 + slot1 + Codify.removeBubbles(header + newmsg);
|
||||||
|
}
|
||||||
|
return finalMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void sendMessage(String msg, FPlayer from);
|
||||||
|
|
||||||
|
public void delete() {
|
||||||
|
ChatChannel.deleteChannel(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
package com.fpghoti.fpchatx.chat;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
|
||||||
|
public class ChatFilter {
|
||||||
|
|
||||||
|
public static ArrayList<String> filtered = null;
|
||||||
|
|
||||||
|
//CHAT FILTER
|
||||||
|
|
||||||
|
public static String filter(String sentence){ // THIS FUNCTION TAKES THE RAW CHAT MESSAGE AND SENDS EACH
|
||||||
|
String msg = sentence; // INDIVIDUAL WORD INTO THE FILTER WORD FUNCTION BELOW
|
||||||
|
if(FPChat.getPlugin().getMainConfig().chatFilterEnabled()){
|
||||||
|
msg = "";
|
||||||
|
int i = 0;
|
||||||
|
for(String s : sentence.split(" ")){
|
||||||
|
if(i != 0){
|
||||||
|
msg = msg + filterWord(s) + " ";
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String filterWord(String word){ // THIS TAKES THE WORD, LOWERCASES IT,
|
||||||
|
String wordp = ""; // AND REPLACES CHARACTERS "1" and "!" with "i", "5" with "s", "6" with "g", and
|
||||||
|
if(FPChat.getPlugin().getMainConfig().chatFilterEnabled()){ // "3" with "e". It then compares it to the list of
|
||||||
|
String word2 = word.toLowerCase(); // Naughty words and replaces it with "Frank" or "bleep" if a match is found
|
||||||
|
String color = ChatColor.getLastColors(word2);
|
||||||
|
if(word2.length() >= 2 && word2.charAt(word2.length() -1) == '!'){
|
||||||
|
for(int i = 0; i < word2.length() -1; i++ ){
|
||||||
|
wordp += word2.charAt(i);
|
||||||
|
}
|
||||||
|
word2 = wordp;
|
||||||
|
}
|
||||||
|
wordp = "";
|
||||||
|
for(int i = 0; i < word2.length(); i++ ){
|
||||||
|
if(word2.charAt(i) != '!'){
|
||||||
|
wordp += word2.charAt(i);
|
||||||
|
}else{
|
||||||
|
wordp += 'i';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
word2 = wordp;
|
||||||
|
word2 = ChatColor.translateAlternateColorCodes('§', word2);
|
||||||
|
word2 = ChatColor.translateAlternateColorCodes('&', word2);
|
||||||
|
word2 = ChatColor.stripColor(word2);
|
||||||
|
word2 = word2.replaceAll("\\p{Punct}+", "").replaceAll("1", "i").replaceAll("5", "s").replaceAll("6", "g").replaceAll("3", "e");
|
||||||
|
if(filtered == null) {
|
||||||
|
filtered = new ArrayList<String>();
|
||||||
|
for(String s : FPChat.getPlugin().getMainConfig().getNaughtyWords().split(",")) {
|
||||||
|
filtered.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(String item : filtered){
|
||||||
|
if(ChatColor.stripColor(word2).equalsIgnoreCase(item) || ChatColor.stripColor(word2).equalsIgnoreCase(item + "s")){
|
||||||
|
if (word2.length() > 2) {
|
||||||
|
if(word2.substring(word2.length() - 3).equalsIgnoreCase("ing")){
|
||||||
|
word = "bleeping";
|
||||||
|
if(FPChat.getPlugin().getMainConfig().frankModeEnabled()){
|
||||||
|
word = "Franking";
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
word = "bleep";
|
||||||
|
if(FPChat.getPlugin().getMainConfig().frankModeEnabled()){
|
||||||
|
word = "Frank";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
word = color + word;
|
||||||
|
}
|
||||||
|
word2 = null;
|
||||||
|
}
|
||||||
|
return word;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// By the end of the loop, the sentence is reconstructed with the naughty words replaced
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
package com.fpghoti.fpchatx.chat;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.customcodes.BubbleCode;
|
||||||
|
import com.fpghoti.fpchatx.customcodes.Codify;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.VaultUtil;
|
||||||
|
|
||||||
|
public class PrepareChat {
|
||||||
|
|
||||||
|
public static String swapPlaceholders(FPlayer p, ChatChannel channel, String msg) {
|
||||||
|
return swapPlaceholders(p,channel,msg,"", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String swapPlaceholders(FPlayer p, String recipient, String msg, boolean in) {
|
||||||
|
return swapPlaceholders(p,null,msg,recipient,in);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String swapPlaceholders(FPlayer p, String msg) {
|
||||||
|
return swapPlaceholders(p,null,msg,"",false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static String swapPlaceholders(FPlayer p, ChatChannel channel, String msg, String recipient, boolean in) {
|
||||||
|
if(!p.isOnline()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
Player sender = Bukkit.getPlayer(p.getUniqueId());
|
||||||
|
String prefix = "";
|
||||||
|
String suffix = "";
|
||||||
|
String group = "";
|
||||||
|
String groupPrefix = "";
|
||||||
|
String groupSuffix = "";
|
||||||
|
World world = sender.getWorld();
|
||||||
|
prefix = VaultUtil.chat.getPlayerPrefix(sender);
|
||||||
|
prefix = BubbleCode.bubblecode(Permission.canBubbleCode(p), Codify.changeFormatSign(prefix)).replaceAll("&([0-9A-FK-OR])", "§$1").replace("&", "§");
|
||||||
|
suffix = VaultUtil.chat.getPlayerSuffix(sender);
|
||||||
|
suffix = BubbleCode.bubblecode(Permission.canBubbleCode(p), Codify.changeFormatSign(suffix)).replaceAll("&([0-9A-FK-OR])", "§$1").replace("&", "§");
|
||||||
|
group = VaultUtil.permission.getPrimaryGroup(sender);
|
||||||
|
groupPrefix = VaultUtil.chat.getGroupPrefix(world, group).replace("&", "§");
|
||||||
|
groupSuffix = VaultUtil.chat.getGroupSuffix(world, group).replace("&", "§");
|
||||||
|
String displayName = sender.getDisplayName();
|
||||||
|
displayName = BubbleCode.bubblecode(Permission.canBubbleCode(p), Codify.changeFormatSign(displayName)).replaceAll("&([0-9A-FK-OR])", "§$1").replace("&", "§");
|
||||||
|
String format = "";
|
||||||
|
if(channel != null) {
|
||||||
|
if(Permission.isDistinguished(p)) {
|
||||||
|
format = channel.getDistinguishedChatFormat();
|
||||||
|
}else {
|
||||||
|
format = channel.getChatFormat();
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
if(recipient.equals("")) {
|
||||||
|
format = FPChat.getPlugin().getMainConfig().getShoutFormat();
|
||||||
|
}else {
|
||||||
|
if(in) {
|
||||||
|
format = FPChat.getPlugin().getMainConfig().getInMsgFormat();
|
||||||
|
}else {
|
||||||
|
format = FPChat.getPlugin().getMainConfig().getOutMsgFormat();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
format = format.replaceAll("&([0-9a-fk-or])", "§$1");
|
||||||
|
format = format.replace("{prefix}", prefix);
|
||||||
|
format = format.replace("{prefix}", prefix);
|
||||||
|
format = format.replace("{suffix}", suffix);
|
||||||
|
format = format.replace("{group}", group);
|
||||||
|
format = format.replace("{groupprefix}", groupPrefix);
|
||||||
|
format = format.replace("{groupSuffix}", groupSuffix);
|
||||||
|
if (channel != null) {
|
||||||
|
format = format.replace("{shortcut}", channel.getShortcut());
|
||||||
|
format = format.replace("{name}", channel.getName());
|
||||||
|
}
|
||||||
|
format = format.replace("{player}", displayName);
|
||||||
|
format = format.replace("{recipient}", recipient);
|
||||||
|
format = format.replace("{world}", world.getName());
|
||||||
|
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,158 @@
|
||||||
|
package com.fpghoti.fpchatx.chat;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class ShoutChannel extends ChatChannel{
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the shout channel
|
||||||
|
*
|
||||||
|
* Shout is intended to act as a streamlined alternative
|
||||||
|
* to setting up a StandardChannel with the radius disabled.
|
||||||
|
*
|
||||||
|
* It also provides the ability to restrict global message sending
|
||||||
|
* to a cooldown.
|
||||||
|
*
|
||||||
|
* It also allows for a separate mute (hush) to be enforced.
|
||||||
|
*
|
||||||
|
* Players can opt out of seeing shout.
|
||||||
|
*
|
||||||
|
* Many functions here will do nothing. Shout extends ChatChannel
|
||||||
|
* for the sake of treating shouts as a form of chat message.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public ShoutChannel(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
this.name = "Shout";
|
||||||
|
this.shortcut = "Shout";
|
||||||
|
this.chatFormat = plugin.getMainConfig().getShoutFormat();
|
||||||
|
this.distinguishedChatFormat = plugin.getMainConfig().getDistinguishedShout();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTemp() {
|
||||||
|
// Shout will always be a registered channel while the plugin is enabled.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDefault() {
|
||||||
|
// Shout can only be spoken in by use of command, so cannot be default.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void kick(FPlayer p) {
|
||||||
|
// No real reason to use this. It will hush the player if called.
|
||||||
|
// Leaving the shout channel is impossible. Standard channel should
|
||||||
|
// be used if the ability to leave is required.
|
||||||
|
|
||||||
|
p.hush();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setShortcut(String shortcut) {
|
||||||
|
// Shout has a dedicated command, so a shortcut is not needed.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setChatFormat(String chatFormat) {
|
||||||
|
this.chatFormat = plugin.getMainConfig().getShoutFormat();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDistinguishedChatFormat(String chatFormat) {
|
||||||
|
this.distinguishedChatFormat = plugin.getMainConfig().getDistinguishedShout();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableWhitelist() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableWhitelist() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whitelistAdd(UUID uuid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whitelistRemove(UUID uuid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWhitelisted(FPlayer p) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableRadius() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableRadius() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasRadius() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRadius(int radius) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRadius() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<FPlayer> getPlayers(){
|
||||||
|
return FPlayer.getPlayers();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addBanned(FPlayer p) {
|
||||||
|
// No real reason to use this. It will hush the player if called.
|
||||||
|
// Leaving the shout channel is impossible. Standard channel should
|
||||||
|
// be used if the ability to leave is required.
|
||||||
|
|
||||||
|
p.hush();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeBanned(FPlayer p) {
|
||||||
|
// No real reason to use this. It will hush the player if called.
|
||||||
|
// Leaving the shout channel is impossible. Standard channel should
|
||||||
|
// be used if the ability to leave is required.
|
||||||
|
|
||||||
|
p.unhush();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(String msg, FPlayer from) {
|
||||||
|
plugin.log(Level.INFO, "Shout: " + msg);
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
if(p.isShoutVisible() && !p.isIgnoring(from)) {
|
||||||
|
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&4&lS&r&8]&r") + msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,358 @@
|
||||||
|
package com.fpghoti.fpchatx.chat;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.config.ChannelFile;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class StandardChannel extends ChatChannel{
|
||||||
|
|
||||||
|
private boolean hasRadius;
|
||||||
|
private int chatRadius;
|
||||||
|
private String permission;
|
||||||
|
private ChannelFile file;
|
||||||
|
|
||||||
|
public StandardChannel(FPChat plugin, ChannelFile file) {
|
||||||
|
super(plugin);
|
||||||
|
this.file = file;
|
||||||
|
setName(file.getName());
|
||||||
|
this.hasRadius = file.hasRadius();
|
||||||
|
this.permission = file.getWhitelistedPermissionNode();
|
||||||
|
this.banned = new ArrayList<UUID>();
|
||||||
|
if(!file.getBannedUUIDs().equals("")) {
|
||||||
|
for(String s : file.getBannedUUIDs().split(",")) {
|
||||||
|
UUID u = UUID.fromString(s);
|
||||||
|
banned.add(u);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.whitelist = new ArrayList<UUID>();
|
||||||
|
if(!file.getWhitelistedUUIDs().equals("")) {
|
||||||
|
for(String s : file.getWhitelistedUUIDs().split(",")) {
|
||||||
|
UUID u = UUID.fromString(s);
|
||||||
|
whitelist.add(u);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.shortcut = file.getShortcut();
|
||||||
|
this.distinguishedChatFormat = file.getDistinguishedChatFormat();
|
||||||
|
this.chatFormat = file.getChatFormat();
|
||||||
|
this.chatRadius = file.getRadius();
|
||||||
|
this.isWhitelisted = file.isWhitelisted();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTemp() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableRadius() {
|
||||||
|
this.hasRadius = true;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveHasRadius(true);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableRadius() {
|
||||||
|
this.hasRadius = false;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveHasRadius(false);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasRadius() {
|
||||||
|
return this.hasRadius;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRadius(int radius) {
|
||||||
|
this.chatRadius = radius;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveRadius(radius);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRadius() {
|
||||||
|
return this.chatRadius;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWhitelisted(FPlayer p) {
|
||||||
|
if(!whitelistEnabled()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(isDefault()){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(whitelist.contains(p.getUniqueId())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(p.hasPermission(permission)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPermission(String perm) {
|
||||||
|
this.permission = perm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPermission() {
|
||||||
|
return this.permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDefault() {
|
||||||
|
return ChatChannel.getDefault() == this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void kick(FPlayer p) {
|
||||||
|
p.leaveChannel(getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setShortcut(String shortcut) {
|
||||||
|
this.shortcut = shortcut;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveShortcut(shortcut);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableWhitelist() {
|
||||||
|
this.isWhitelisted = true;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveWhitelist(true);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableWhitelist() {
|
||||||
|
this.isWhitelisted = false;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveWhitelist(false);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whitelistAdd(UUID uuid) {
|
||||||
|
this.whitelist.add(uuid);
|
||||||
|
|
||||||
|
ArrayList<UUID> rl = this.whitelist;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
String setting = "";
|
||||||
|
for(UUID u : rl) {
|
||||||
|
String su = u.toString();
|
||||||
|
setting = setting + su + ",";
|
||||||
|
}
|
||||||
|
setting = StringUtils.chop(setting);
|
||||||
|
file.saveWhitelistedUUIDs(setting);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whitelistRemove(UUID uuid) {
|
||||||
|
this.whitelist.remove(uuid);
|
||||||
|
ArrayList<UUID> rl = this.whitelist;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
String setting = "";
|
||||||
|
for(UUID u : rl) {
|
||||||
|
String su = u.toString();
|
||||||
|
setting = setting + su + ",";
|
||||||
|
}
|
||||||
|
setting = StringUtils.chop(setting);
|
||||||
|
file.saveWhitelistedUUIDs(setting);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setChatFormat(String chatFormat) {
|
||||||
|
this.chatFormat = chatFormat;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveChatFormat(chatFormat);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<FPlayer> getPlayers(){
|
||||||
|
ArrayList<FPlayer> players = new ArrayList<FPlayer>();
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
if(p.getChannels().contains(name)) {
|
||||||
|
players.add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addBanned(FPlayer p) {
|
||||||
|
this.banned.add(p.getUniqueId());
|
||||||
|
ArrayList<UUID> rl = this.banned;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
String setting = "";
|
||||||
|
for(UUID u : rl) {
|
||||||
|
String su = u.toString();
|
||||||
|
setting = setting + su + ",";
|
||||||
|
}
|
||||||
|
setting = StringUtils.chop(setting);
|
||||||
|
file.saveBannedUUIDs(setting);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeBanned(FPlayer p) {
|
||||||
|
this.banned.remove(p.getUniqueId());
|
||||||
|
ArrayList<UUID> rl = this.banned;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
String setting = "";
|
||||||
|
for(UUID u : rl) {
|
||||||
|
String su = u.toString();
|
||||||
|
setting = setting + su + ",";
|
||||||
|
}
|
||||||
|
setting = StringUtils.chop(setting);
|
||||||
|
file.saveBannedUUIDs(setting);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDistinguishedChatFormat(String chatFormat) {
|
||||||
|
this.distinguishedChatFormat = chatFormat;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
file.saveDistinguishedChatFormat(chatFormat);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(String msg, FPlayer from) {
|
||||||
|
Player pf = Util.getEP(from.getName());
|
||||||
|
plugin.log(Level.INFO, name + ": " + msg);
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
if(p.getChannels().contains(name) && !p.isIgnoring(from)) {
|
||||||
|
if(hasRadius) {
|
||||||
|
Player pp = Util.getEP(p.getName());
|
||||||
|
if(pp.getWorld() == pf.getWorld()) {
|
||||||
|
if(pp.getLocation().distance(pf.getLocation()) < chatRadius){
|
||||||
|
p.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
p.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(ChannelFile file) {
|
||||||
|
this.file = file;
|
||||||
|
setName(file.getName());
|
||||||
|
this.hasRadius = file.hasRadius();
|
||||||
|
this.permission = file.getWhitelistedPermissionNode();
|
||||||
|
this.banned = new ArrayList<UUID>();
|
||||||
|
for(String s : file.getBannedUUIDs().split(",")) {
|
||||||
|
UUID u = UUID.fromString(s);
|
||||||
|
banned.add(u);
|
||||||
|
}
|
||||||
|
this.shortcut = file.getShortcut();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,157 @@
|
||||||
|
package com.fpghoti.fpchatx.chat;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class TempChannel extends ChatChannel{
|
||||||
|
|
||||||
|
private UUID owner;
|
||||||
|
|
||||||
|
public TempChannel(FPChat plugin, FPlayer owner, String name) {
|
||||||
|
super(plugin);
|
||||||
|
this.name = name;
|
||||||
|
this.owner = owner.getUniqueId();
|
||||||
|
this.chatFormat = plugin.getMainConfig().getTempChannelFormat();
|
||||||
|
this.distinguishedChatFormat = plugin.getMainConfig().getTempChannelFormat();
|
||||||
|
this.banned = new ArrayList<UUID>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public FPlayer getOwner() {
|
||||||
|
OfflinePlayer p = Bukkit.getOfflinePlayer(owner);
|
||||||
|
return FPlayer.getPlayer(p, !p.isOnline());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isOwner(FPlayer p) {
|
||||||
|
return p.getUniqueId() == this.owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOwner(FPlayer p) {
|
||||||
|
this.owner = p.getUniqueId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTemp() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isWhitelisted(FPlayer p) {
|
||||||
|
if(!whitelistEnabled()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(whitelist.contains(p.getUniqueId())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableRadius() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableRadius() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasRadius() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRadius(int radius) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRadius() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDefault() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void kick(FPlayer p) {
|
||||||
|
p.leaveTempChannel(getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setShortcut(String shortcut) {
|
||||||
|
this.shortcut = shortcut;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableWhitelist() {
|
||||||
|
this.isWhitelisted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disableWhitelist() {
|
||||||
|
this.isWhitelisted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whitelistAdd(UUID uuid){
|
||||||
|
this.whitelist.add(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void whitelistRemove(UUID uuid) {
|
||||||
|
this.whitelist.remove(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addBanned(FPlayer p) {
|
||||||
|
this.banned.add(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeBanned(FPlayer p) {
|
||||||
|
this.banned.remove(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setChatFormat(String chatFormat) {
|
||||||
|
this.chatFormat = chatFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDistinguishedChatFormat(String chatFormat) {
|
||||||
|
this.distinguishedChatFormat = chatFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<FPlayer> getPlayers(){
|
||||||
|
ArrayList<FPlayer> players = new ArrayList<FPlayer>();
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
if(p.getTempChannels().contains(name)) {
|
||||||
|
players.add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return players;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(String msg, FPlayer from) {
|
||||||
|
plugin.log(Level.INFO, "[TC] " + name + ": " + msg);
|
||||||
|
for(FPlayer p : FPlayer.getPlayers()) {
|
||||||
|
if(p.getTempChannels().contains(name) && !p.isIgnoring(from)) {
|
||||||
|
p.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,139 @@
|
||||||
|
package com.fpghoti.fpchatx.command;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
|
||||||
|
public abstract class Commands {
|
||||||
|
|
||||||
|
private static ArrayList<Commands> commands = new ArrayList<Commands>();
|
||||||
|
|
||||||
|
public static void register(Commands cmd) {
|
||||||
|
commands.add(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayList<Commands> getCommands(){
|
||||||
|
return commands;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean blocked = false;
|
||||||
|
|
||||||
|
public static boolean performCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if(blocked) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String input = label + " ";
|
||||||
|
for (String s : args) {
|
||||||
|
input += s + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
Commands match = null;
|
||||||
|
String[] trim = null;
|
||||||
|
StringBuilder lab = new StringBuilder();
|
||||||
|
|
||||||
|
for(Commands cmd : commands) {
|
||||||
|
StringBuilder l = new StringBuilder();
|
||||||
|
String[] temp = cmd.getArgs(input, l);
|
||||||
|
if (l.length() > lab.length()) {
|
||||||
|
lab = l;
|
||||||
|
match = cmd;
|
||||||
|
trim = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(match != null) {
|
||||||
|
if (trim == null || (trim.length > 0 && trim[0].equals("?"))) {
|
||||||
|
sender.sendMessage(ChatColor.RED + "Command:" + ChatColor.YELLOW + " " + match.getName());
|
||||||
|
sender.sendMessage(ChatColor.RED + "Description:" + ChatColor.YELLOW + " " + match.getDescription());
|
||||||
|
sender.sendMessage(ChatColor.RED + "Syntax:" + ChatColor.YELLOW + " " + match.getSyntax());
|
||||||
|
ArrayList<String> notes = match.getMisc();
|
||||||
|
for (String note : notes) {
|
||||||
|
sender.sendMessage(ChatColor.YELLOW + note);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
match.execute(sender, trim);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void blockCommands() {
|
||||||
|
blocked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void allowCommands() {
|
||||||
|
blocked = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected FPChat plugin;
|
||||||
|
protected String name;
|
||||||
|
protected String syntax;
|
||||||
|
protected String description;
|
||||||
|
protected int minArgs;
|
||||||
|
protected int maxArgs;
|
||||||
|
protected ArrayList<String> labels;
|
||||||
|
protected ArrayList<String> misc;
|
||||||
|
|
||||||
|
public Commands(FPChat plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.labels = new ArrayList<String>();
|
||||||
|
this.misc = new ArrayList<String>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getArgs(String input, StringBuilder label) {
|
||||||
|
boolean found = false;
|
||||||
|
int count = 0;
|
||||||
|
for(int i = 0; i < labels.size(); i++) {
|
||||||
|
String lab = labels.get(i).toLowerCase();
|
||||||
|
if (input.toLowerCase().matches(lab + "(\\s+.*|\\s*)")) {
|
||||||
|
if (lab.length() > labels.get(count).length() || !found) {
|
||||||
|
count = i;
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
label = label.append(labels.get(count));
|
||||||
|
String[] args = input.substring(label.length()).trim().split(" ");
|
||||||
|
if (args[0].isEmpty()) {
|
||||||
|
args = new String[0];
|
||||||
|
}
|
||||||
|
if (args.length >= minArgs && args.length <= maxArgs) {
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ArrayList<String> getLabels() {
|
||||||
|
return this.labels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setlabels(ArrayList<String> labels) {
|
||||||
|
this.labels = labels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSyntax() {
|
||||||
|
return this.syntax;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getMisc() {
|
||||||
|
return this.misc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void execute(CommandSender sender, String[] args);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeSet;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class BadgeClearCommand extends Commands {
|
||||||
|
|
||||||
|
public BadgeClearCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "BadgeClear";
|
||||||
|
description = "Unequips all badges";
|
||||||
|
syntax = ChatColor.GRAY + "/badgeclear";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 0;
|
||||||
|
labels.add("fpc badgeclear");
|
||||||
|
labels.add("fpchat badgeclear");
|
||||||
|
labels.add("ch badgeclear");
|
||||||
|
labels.add("badgeclear");
|
||||||
|
labels.add("badgesclear");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if(!(sender instanceof Player)) {
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
BadgeSet.setBadge(p, 1, 0);
|
||||||
|
BadgeSet.setBadge(p, 2, 0);
|
||||||
|
BadgeSet.setBadge(p, 3, 0);
|
||||||
|
p.sendMessage(FPChat.logo() + ChatColor.YELLOW + " Unequipped all badges!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeGetter;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeList;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeSet;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class BadgeEquipCommand extends Commands {
|
||||||
|
|
||||||
|
public BadgeEquipCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "BadgeEquip";
|
||||||
|
description = "Equips badges for use in chat";
|
||||||
|
syntax = ChatColor.GRAY + "/equip " + ChatColor.GOLD + "slot# badge#";
|
||||||
|
minArgs = 2;
|
||||||
|
maxArgs = 2;
|
||||||
|
labels.add("fpc badgeequip");
|
||||||
|
labels.add("fpchat badgeequip");
|
||||||
|
labels.add("ch badgeequip");
|
||||||
|
labels.add("badgeequip");
|
||||||
|
labels.add("equip");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if(!(sender instanceof Player)) {
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
if(Util.isDigit(args[0]) && Util.isDigit(args[1])){
|
||||||
|
|
||||||
|
Integer slot = Integer.parseInt(args[0]), badgeId = Integer.parseInt(args[1]);
|
||||||
|
if(BadgeGetter.canUseSlot(p, slot)){
|
||||||
|
if(BadgeList.badgelist.containsKey(badgeId) && BadgeGetter.hasBadge(p, badgeId)){
|
||||||
|
BadgeSet.setBadge(p, slot, badgeId);
|
||||||
|
p.updateBadges(slot, badgeId);
|
||||||
|
p.sendMessage( FPChat.logo() + ChatColor.YELLOW + " You have equipped a badge!");
|
||||||
|
}else{
|
||||||
|
p.sendMessage(FPChat.logo() + ChatColor.YELLOW + " You do not have permission to equip this badge!");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
p.sendMessage(FPChat.logo() + ChatColor.YELLOW + " You do not have permission to equip a badge in this slot!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeList;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class BadgeListCommand extends Commands {
|
||||||
|
|
||||||
|
public BadgeListCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "BadgeList";
|
||||||
|
description = "Pulls up a list of badges you own";
|
||||||
|
syntax = ChatColor.GRAY + "/badgelist " + ChatColor.GOLD + "[page#]";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc badgelist");
|
||||||
|
labels.add("fpchat badgelist");
|
||||||
|
labels.add("ch badgelist");
|
||||||
|
labels.add("badges");
|
||||||
|
labels.add("badgelist");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if(!(sender instanceof Player)) {
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
if(args.length == 0 || !Util.isDigit(args[0])){
|
||||||
|
BadgeList.badgeList(p, 1);
|
||||||
|
}else{
|
||||||
|
BadgeList.badgeList(p, Integer.parseInt(args[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,115 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.StandardChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.TempChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class BlacklistCommand extends Commands {
|
||||||
|
|
||||||
|
public BlacklistCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Blacklist";
|
||||||
|
description = "Toggles blacklisted status of a player in a specific channel";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc blacklist " + ChatColor.GOLD + "channel player";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 2;
|
||||||
|
labels.add("fpc blacklist");
|
||||||
|
labels.add("fpchat blacklist");
|
||||||
|
labels.add("ch blacklist");
|
||||||
|
labels.add("fpc ban");
|
||||||
|
labels.add("fpchat ban");
|
||||||
|
labels.add("ch ban");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
|
||||||
|
FPlayer p = null;
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
p = FPlayer.getPlayer((Player)sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatChannel c = ChatChannel.getChannel(args[0]);
|
||||||
|
|
||||||
|
if(c == null) {
|
||||||
|
c = ChatChannel.getTempChannel(args[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(c == ChatChannel.getDefault()) {
|
||||||
|
FPlayer.errMsg(p, "You cannot blacklist a player from the default/fallback channel. If you wish to prevent someone from speaking in default, try muting instead.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c != null) {
|
||||||
|
if (args.length == 1) {
|
||||||
|
|
||||||
|
String msg = "There are no blacklisted players in this channel.";
|
||||||
|
if (!c.getBanned().isEmpty()) {
|
||||||
|
msg = c.getName() + " Blacklist: ";
|
||||||
|
for (UUID uuid : c.getBanned()) {
|
||||||
|
FPlayer bp = FPlayer.getPlayer(Bukkit.getOfflinePlayer(uuid));
|
||||||
|
String name = ChatColor.RED + bp.getName();
|
||||||
|
if(bp.isOnline()) {
|
||||||
|
name = ChatColor.GREEN + bp.getName();
|
||||||
|
}
|
||||||
|
msg = msg + name + ChatColor.WHITE + ", ";
|
||||||
|
}
|
||||||
|
msg = msg.substring(0, msg.length() - 2);
|
||||||
|
}
|
||||||
|
FPlayer.dualMsg(p, msg);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if( p == null || (Permission.isAdmin(p) || Permission.canBan(p) || (c instanceof TempChannel && ((TempChannel)c).getOwner().equals(p)))) {
|
||||||
|
FPlayer banned = FPlayer.getPlayer(args[1]);
|
||||||
|
if(banned == null) {
|
||||||
|
banned = FPlayer.getOfflinePlayer(args[1]);
|
||||||
|
}
|
||||||
|
if(banned != null) {
|
||||||
|
String name = banned.getName();
|
||||||
|
if(p == null || !(Permission.isAdmin(banned) || Permission.canBan(banned))) {
|
||||||
|
if(c.getBanned().contains(banned.getUniqueId())) {
|
||||||
|
c.removeBanned(banned);
|
||||||
|
FPlayer.goodMsg(p, ChatColor.YELLOW + name + ChatColor.GREEN + " has been removed from the blacklist of channel " + ChatColor.YELLOW + c.getName() + ChatColor.GREEN + ".");
|
||||||
|
}else{
|
||||||
|
if(banned.getChannels().contains(c.getName()) || banned.getTempChannels().contains(c.getName())) {
|
||||||
|
FPlayer.errMsg(banned, "You have been blacklisted from " + ChatColor.YELLOW + c.getName() + ChatColor.RED + ".");
|
||||||
|
}
|
||||||
|
c.addBanned(banned);
|
||||||
|
c.kick(banned);
|
||||||
|
FPlayer.goodMsg(p, ChatColor.YELLOW + name + ChatColor.GREEN + " has been blacklisted from " + ChatColor.YELLOW + c.getName() + ChatColor.GREEN + ".");
|
||||||
|
banned.leaveChannel(c.getName());
|
||||||
|
if(c instanceof StandardChannel) {
|
||||||
|
banned.setPrimaryChannel(ChatChannel.getDefault().getName());
|
||||||
|
}
|
||||||
|
if(c instanceof TempChannel) {
|
||||||
|
banned.stopTempSpeak();
|
||||||
|
banned.setPrimaryTempChannel("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "Player cannot be removed from the channel.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "Cannot find specified player.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, Permission.noPerm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "That channel does not exist.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.StandardChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.TempChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
|
||||||
|
public class ChannelsCommand extends Commands {
|
||||||
|
public ChannelsCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Channels";
|
||||||
|
description = "Lists all open channels";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc channels " + ChatColor.GOLD + "[page#]";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc channels");
|
||||||
|
labels.add("fpchat channels");
|
||||||
|
labels.add("ch channels");
|
||||||
|
labels.add("fpc list");
|
||||||
|
labels.add("fpchat list");
|
||||||
|
labels.add("ch list");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
p = FPlayer.getPlayer((Player)sender);
|
||||||
|
}
|
||||||
|
int pg = 1;
|
||||||
|
if (args.length > 0) {
|
||||||
|
if(Util.isDigit(args[0])) {
|
||||||
|
pg = Integer.parseInt(args[0]);
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, syntax);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ArrayList<String> channels = new ArrayList<String>();
|
||||||
|
for(ChatChannel c : ChatChannel.getChannels()) {
|
||||||
|
if(p == null || p.canJoin(c)) {
|
||||||
|
if(c instanceof StandardChannel) {
|
||||||
|
String s = ChatColor.DARK_GREEN + "Channel: " + ChatColor.GREEN + c.getName();
|
||||||
|
channels.add(s);
|
||||||
|
}else if(c instanceof TempChannel) {
|
||||||
|
String s = ChatColor.DARK_AQUA + "TempChannel: " + ChatColor.AQUA + c.getName();
|
||||||
|
channels.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int pageCount = (int) Math.ceil((double) channels.size() / 8);
|
||||||
|
if (pg > pageCount) {
|
||||||
|
pg = pageCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer.plainMsg(p, ChatColor.GOLD + "[" + Integer.toString(pg) + "/" + Integer.toString(pageCount) + "] " + ChatColor.YELLOW + "Open Channels:");
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
int index = (pg - 1) * 8 + i;
|
||||||
|
if (index < channels.size()) {
|
||||||
|
String msg = channels.get(index);
|
||||||
|
FPlayer.plainMsg(p, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,182 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatFilter;
|
||||||
|
import com.fpghoti.fpchatx.chat.StandardChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class CreateCommand extends Commands {
|
||||||
|
|
||||||
|
public CreateCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Create";
|
||||||
|
description = "Makes a new channel";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc create " + ChatColor.GOLD + "<temp> name <flags>";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 2 + validflags.length;
|
||||||
|
labels.add("fpc create");
|
||||||
|
labels.add("fpchat create");
|
||||||
|
labels.add("ch create");
|
||||||
|
misc.add("Possible Flags:");
|
||||||
|
misc.add("-w : Create with whitelist enabled");
|
||||||
|
misc.add("-a : Broadcast alert to all players when channel is made");
|
||||||
|
misc.add("-p : Set your primary channel to the new channel upon creation");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String[] validflags = {"-w", "-a", "-p"};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
p = FPlayer.getPlayer((Player)sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean canTemp = false;
|
||||||
|
boolean canStandard = false;
|
||||||
|
boolean canAlert = false;
|
||||||
|
boolean isTemp = false;
|
||||||
|
|
||||||
|
boolean whitelist = false;
|
||||||
|
boolean alert = false;
|
||||||
|
boolean primary = false;
|
||||||
|
|
||||||
|
String name;
|
||||||
|
ArrayList<String> flags = new ArrayList<String>();
|
||||||
|
|
||||||
|
ChatChannel channel;
|
||||||
|
|
||||||
|
if(p == null) {
|
||||||
|
canStandard = true;
|
||||||
|
canAlert = true;
|
||||||
|
}else {
|
||||||
|
canTemp = Permission.canMakeTempChannel(p);
|
||||||
|
canStandard = Permission.canMakeChannel(p);
|
||||||
|
canAlert = Permission.canAlertMakeChannel(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(args[0].equalsIgnoreCase("temp")) {
|
||||||
|
isTemp = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isTemp && args.length == 1) {
|
||||||
|
FPlayer.errMsg(p, syntax);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isTemp && !canTemp) {
|
||||||
|
if(p == null) {
|
||||||
|
FPlayer.errMsg(p,"Temporary channels are designed for player use only.");
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, "You do not have permission to create temporary channels.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isTemp && !canStandard) {
|
||||||
|
FPlayer.errMsg(p, "You do not have permission to create permanent channels.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isTemp) {
|
||||||
|
name = args[1];
|
||||||
|
if(args.length > 2) {
|
||||||
|
for(int i = 2; i < args.length; i++) {
|
||||||
|
flags.add(args[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
name = args[0];
|
||||||
|
if(args.length > 1) {
|
||||||
|
for(int i = 1; i < args.length; i++) {
|
||||||
|
flags.add(args[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(FPChat.getPlugin().getMainConfig().chatFilterEnabled()) {
|
||||||
|
if(!ChatFilter.filterWord(name).equals(name)) {
|
||||||
|
FPlayer.errMsg(p, "This channel name is not allowed on this server.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(String s : flags) {
|
||||||
|
if(!Util.contains(validflags, s.toLowerCase())) {
|
||||||
|
FPlayer.errMsg(p, "You tried use an invalid flag.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(p == null && s.equalsIgnoreCase("-p")) {
|
||||||
|
FPlayer.errMsg(p, "Console cannot set a primary chat channel.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(s.equalsIgnoreCase("-w")) {
|
||||||
|
whitelist = true;
|
||||||
|
}
|
||||||
|
if(s.equalsIgnoreCase("-a")) {
|
||||||
|
alert = true;
|
||||||
|
}
|
||||||
|
if(s.equalsIgnoreCase("-p")) {
|
||||||
|
primary = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ChatChannel.isReserved(name)) {
|
||||||
|
FPlayer.errMsg(p, "This name is unavailable. Please try something else.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isTemp) {
|
||||||
|
channel = ChatChannel.makeTempChannel(p, name);
|
||||||
|
p.joinChannel(name);
|
||||||
|
if(primary) {
|
||||||
|
p.speakingInTemp();
|
||||||
|
p.setPrimaryTempChannel(name);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
channel = ChatChannel.makeChannel(name);
|
||||||
|
StandardChannel loaded = ChatChannel.loadChannel(name);
|
||||||
|
if(loaded != null) {
|
||||||
|
ChatChannel.addChannel(loaded);
|
||||||
|
}
|
||||||
|
if(p != null) {
|
||||||
|
p.joinChannel(name);
|
||||||
|
if(primary) {
|
||||||
|
p.stopTempSpeak();
|
||||||
|
p.setPrimaryChannel(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(whitelist) {
|
||||||
|
channel.enableWhitelist();
|
||||||
|
}
|
||||||
|
if(alert) {
|
||||||
|
if(canAlert) {
|
||||||
|
String creator = "CONSOLE";
|
||||||
|
if(p != null) {
|
||||||
|
creator = p.getName();
|
||||||
|
}
|
||||||
|
for(FPlayer player : FPlayer.getPlayers()) {
|
||||||
|
FPlayer.plainMsg(player, ChatColor.YELLOW + creator + ChatColor.AQUA + " has created a new channel: " + ChatColor.WHITE + name);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, "You do not have permission to send an alert.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer.goodMsg(p, "Channel created!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.TempChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class DeleteCommand extends Commands {
|
||||||
|
|
||||||
|
public DeleteCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Delete";
|
||||||
|
description = "Deletes a channel";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc delete " + ChatColor.GOLD + "channel";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc delete");
|
||||||
|
labels.add("fpchat delete");
|
||||||
|
labels.add("ch delete");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
|
||||||
|
FPlayer p = null;
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
p = FPlayer.getPlayer((Player)sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatChannel c = ChatChannel.getChannel(args[0]);
|
||||||
|
|
||||||
|
if(c == null) {
|
||||||
|
c = ChatChannel.getTempChannel(args[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean allowed = false;
|
||||||
|
|
||||||
|
if(p == null) {
|
||||||
|
allowed = true;
|
||||||
|
}else {
|
||||||
|
if(c instanceof TempChannel) {
|
||||||
|
TempChannel temp = (TempChannel)c;
|
||||||
|
if(temp.getOwner().equals(p)) {
|
||||||
|
allowed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(Permission.canDeleteChannel(p)) {
|
||||||
|
allowed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!allowed) {
|
||||||
|
FPlayer.errMsg(p, Permission.noPerm);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(c == ChatChannel.getDefault()) {
|
||||||
|
FPlayer.errMsg(p, "You cannot delete the default/fallback channel. If you wish to delete this channel, try setting a different default channel first.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c != null) {
|
||||||
|
c.delete();
|
||||||
|
FPlayer.goodMsg(p,"Channel deleted.");
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "That channel does not exist.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeList;
|
||||||
|
import com.fpghoti.fpchatx.badge.SyncSet;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class GiveBadgeCommand extends Commands {
|
||||||
|
|
||||||
|
public GiveBadgeCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "GiveBadge";
|
||||||
|
description = "Give player a badge";
|
||||||
|
syntax = ChatColor.GRAY + "/givebadge " + ChatColor.GOLD + "player badge#";
|
||||||
|
minArgs = 2;
|
||||||
|
maxArgs = 2;
|
||||||
|
labels.add("fpc givebadge");
|
||||||
|
labels.add("fpchat givebadge");
|
||||||
|
labels.add("ch givebadge");
|
||||||
|
labels.add("givebadge");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
Boolean console = true;
|
||||||
|
if(sender instanceof Player){
|
||||||
|
console = false;
|
||||||
|
p = FPlayer.getPlayer((Player) sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(console || Permission.isAdmin(p)){
|
||||||
|
FPlayer toGive = FPlayer.getPlayer(args[0]);
|
||||||
|
if(toGive == null) {
|
||||||
|
toGive = FPlayer.getPlayer(args[0]);
|
||||||
|
}
|
||||||
|
if(toGive == null) {
|
||||||
|
FPlayer.errMsg(p,"That player cannot be found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(Util.isDigit(args[1]) && BadgeList.badgeperm.containsKey(Integer.parseInt(args[1]))) {
|
||||||
|
int id = Integer.parseInt(args[1]);
|
||||||
|
toGive.queueBadgeAdd(id);
|
||||||
|
SyncSet.update(toGive);
|
||||||
|
toGive.addSyncedBadge(id);
|
||||||
|
FPlayer.goodMsg(p, "Badge granted.");
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p,"Wrong command usage.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class HelpCommand extends Commands {
|
||||||
|
|
||||||
|
public HelpCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Help";
|
||||||
|
description = "Displays the help menu";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc help " + ChatColor.GOLD + "page#";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc help");
|
||||||
|
labels.add("fpchat help");
|
||||||
|
labels.add("ch help");
|
||||||
|
labels.add("fpc");
|
||||||
|
labels.add("fpchat");
|
||||||
|
labels.add("ch");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
p = FPlayer.getPlayer((Player)sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pg = 1;
|
||||||
|
if (args.length > 0) {
|
||||||
|
if(Util.isDigit(args[0])) {
|
||||||
|
pg = Integer.parseInt(args[0]);
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, syntax);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<Commands> commands = Commands.getCommands();
|
||||||
|
|
||||||
|
int pageCount = (int) Math.ceil((double) commands.size() / 8);
|
||||||
|
if (pg > pageCount) {
|
||||||
|
pg = pageCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer.plainMsg(p, "");
|
||||||
|
String name = "";
|
||||||
|
String ctype = "Normal";
|
||||||
|
if(Permission.isAdmin(p)) {
|
||||||
|
name = name + ChatColor.AQUA + "[ADMIN] ";
|
||||||
|
}else if(Permission.isStaff(p)) {
|
||||||
|
name = name + ChatColor.BLUE + "[STAFF] ";
|
||||||
|
}
|
||||||
|
name = ChatColor.DARK_AQUA + "Player: " + name + ChatColor.GREEN + p.getName();
|
||||||
|
String cname = p.getPrimaryChannel().getName();
|
||||||
|
String ccount = Integer.toString(p.getPrimaryChannel().playerCount());
|
||||||
|
if(p.speakingInTemp() && p.getPrimaryTempChannel() != null) {
|
||||||
|
ccount = Integer.toString(p.getPrimaryTempChannel().playerCount());
|
||||||
|
cname = p.getPrimaryTempChannel().getName();
|
||||||
|
ctype = "Temporary";
|
||||||
|
}
|
||||||
|
String primary = ChatColor.DARK_AQUA + "Current Channel: " + ChatColor.GREEN + cname;
|
||||||
|
ctype = ChatColor.DARK_AQUA + "Channel Type: " + ChatColor.GREEN + ctype;
|
||||||
|
String online = ChatColor.DARK_AQUA + "Members Online: " + ChatColor.GREEN + ccount;
|
||||||
|
if(args.length == 0) {
|
||||||
|
FPlayer.plainMsg(p, ChatColor.GOLD + "[INFO] " + ChatColor.YELLOW + "FPChatX:");
|
||||||
|
FPlayer.plainMsg(p,name);
|
||||||
|
FPlayer.plainMsg(p,primary);
|
||||||
|
FPlayer.plainMsg(p,ctype);
|
||||||
|
FPlayer.plainMsg(p,online);
|
||||||
|
FPlayer.plainMsg(p,ChatColor.GRAY + "Use " + ChatColor.WHITE + "/fpc who " + ChatColor.GRAY + "to see who is in this channel.");
|
||||||
|
FPlayer.plainMsg(p, ChatColor.GRAY + "Use " + ChatColor.WHITE + "/fpc help page# " + ChatColor.GRAY + "for a list of commands.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FPlayer.plainMsg(p, ChatColor.GOLD + "[" + Integer.toString(pg) + "/" + Integer.toString(pageCount) + "] " + ChatColor.YELLOW + "FPChatX Commands:");
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
int index = (pg - 1) * 8 + i;
|
||||||
|
if (index < commands.size()) {
|
||||||
|
String msg = ChatColor.GREEN + "- " + commands.get(index).getSyntax();
|
||||||
|
FPlayer.plainMsg(p, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class HushCommand extends Commands {
|
||||||
|
|
||||||
|
public HushCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Hush";
|
||||||
|
description = "Prevents a player from shouting";
|
||||||
|
syntax = ChatColor.GRAY + "/hush " + ChatColor.GOLD + "player";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc hush");
|
||||||
|
labels.add("fpchat hush");
|
||||||
|
labels.add("ch hush");
|
||||||
|
labels.add("hush");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
Boolean console = true;
|
||||||
|
if(sender instanceof Player){
|
||||||
|
console = false;
|
||||||
|
p = FPlayer.getPlayer((Player) sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(console || Permission.canHush(p)){
|
||||||
|
FPlayer hush = FPlayer.getPlayer(args[0]);
|
||||||
|
if(hush == null) {
|
||||||
|
hush = FPlayer.getPlayer(args[0]);
|
||||||
|
}
|
||||||
|
if(hush == null) {
|
||||||
|
FPlayer.errMsg(p,"That player cannot be found.");
|
||||||
|
}else{
|
||||||
|
hush.hush();
|
||||||
|
FPlayer.dualMsg(hush, "You have been hushed. Your shouts will no longer send.");
|
||||||
|
FPlayer.goodMsg(p, "Player can no longer use shout.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class IgnoreCommand extends Commands {
|
||||||
|
|
||||||
|
public IgnoreCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Ignore";
|
||||||
|
description = "Ignores all messages from a player";
|
||||||
|
syntax = ChatColor.GRAY + "/ignore " + ChatColor.GOLD + "player";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc ignore");
|
||||||
|
labels.add("fpchat ignore");
|
||||||
|
labels.add("ch ignore");
|
||||||
|
labels.add("ignore");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
if(Permission.canIgnore(p)) {
|
||||||
|
UUID u = plugin.getPlayerCache().getUUID(args[0]);
|
||||||
|
if(u == null) {
|
||||||
|
FPlayer.errMsg(p, "Invalid player.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
OfflinePlayer o = Bukkit.getOfflinePlayer(u);
|
||||||
|
|
||||||
|
if(o != null) {
|
||||||
|
FPlayer ignored = FPlayer.getPlayer(o, true);
|
||||||
|
if(p.getIgnored().contains(u)) {
|
||||||
|
FPlayer.errMsg(p, "This player is already ignored.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boolean result = p.ignore(ignored);
|
||||||
|
if(result) {
|
||||||
|
FPlayer.goodMsg(p, "Player ignored.");
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, "This player cannot be ignored.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "Invalid player.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(null, "You must be a player to use ignore.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class IgnoreListCommand extends Commands {
|
||||||
|
|
||||||
|
public IgnoreListCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Ignore List";
|
||||||
|
description = "Lists all players you have ignored";
|
||||||
|
syntax = ChatColor.GRAY + "/ignorelist " + ChatColor.GOLD + "[page#]";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc ignorelist");
|
||||||
|
labels.add("fpchat ignorelist");
|
||||||
|
labels.add("ch ignorelist");
|
||||||
|
labels.add("ignorelist");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
|
||||||
|
int pg = 1;
|
||||||
|
if (args.length > 0) {
|
||||||
|
if(Util.isDigit(args[0])) {
|
||||||
|
pg = Integer.parseInt(args[0]);
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, syntax);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<UUID> players = p.getIgnored();
|
||||||
|
|
||||||
|
if(players.size() == 0) {
|
||||||
|
FPlayer.dualMsg(p, "Your ignore list is currently empty.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pageCount = (int) Math.ceil((double) players.size() / 8);
|
||||||
|
if (pg > pageCount) {
|
||||||
|
pg = pageCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer.plainMsg(p, "");
|
||||||
|
FPlayer.plainMsg(p, ChatColor.GOLD + "[" + Integer.toString(pg) + "/" + Integer.toString(pageCount) + "] " + ChatColor.YELLOW + "Ignored Players:");
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
int index = (pg - 1) * 8 + i;
|
||||||
|
if (index < players.size()) {
|
||||||
|
OfflinePlayer o = Bukkit.getOfflinePlayer(players.get(index));
|
||||||
|
String msg = ChatColor.GREEN + "- " + ChatColor.YELLOW + o.getName();
|
||||||
|
FPlayer.plainMsg(p, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class JoinCommand extends Commands {
|
||||||
|
|
||||||
|
public JoinCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Join";
|
||||||
|
description = "Enters a channel";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc join " + ChatColor.GOLD + "channel";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc join");
|
||||||
|
labels.add("fpchat join");
|
||||||
|
labels.add("ch join");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
ChatChannel channel = ChatChannel.getChannel(args[0]);
|
||||||
|
if(channel == null) {
|
||||||
|
channel = ChatChannel.getTempChannel(args[0]);
|
||||||
|
}
|
||||||
|
if(channel == null) {
|
||||||
|
FPlayer.errMsg(p, "The channel you are trying to join does not exist.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
p.joinChannel(channel.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.StandardChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.TempChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class KickCommand extends Commands {
|
||||||
|
|
||||||
|
public KickCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Kick";
|
||||||
|
description = "Kicks a player from a channel";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc kick " + ChatColor.GOLD + "channel player";
|
||||||
|
minArgs = 2;
|
||||||
|
maxArgs = 2;
|
||||||
|
labels.add("fpc kick");
|
||||||
|
labels.add("fpchat kick");
|
||||||
|
labels.add("ch kick");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
|
||||||
|
FPlayer p = null;
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
p = FPlayer.getPlayer((Player)sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatChannel c = ChatChannel.getChannel(args[0]);
|
||||||
|
|
||||||
|
if(c == null) {
|
||||||
|
c = ChatChannel.getTempChannel(args[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(c == ChatChannel.getDefault()) {
|
||||||
|
FPlayer.errMsg(p, "You cannot kick a player from the default/fallback channel. If you wish to prevent someone from speaking in default, try muting instead.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c != null) {
|
||||||
|
if( p == null || (Permission.isAdmin(p) || Permission.canBan(p))) {
|
||||||
|
FPlayer kicked = FPlayer.getPlayer(args[1]);
|
||||||
|
if(kicked == null) {
|
||||||
|
kicked = FPlayer.getOfflinePlayer(args[1]);
|
||||||
|
}
|
||||||
|
if(kicked != null) {
|
||||||
|
String name = kicked.getName();
|
||||||
|
if(p == null || !(Permission.isAdmin(kicked) || Permission.canBan(kicked))) {
|
||||||
|
if(kicked.getChannels().contains(c.getName())) {
|
||||||
|
c.kick(kicked);
|
||||||
|
FPlayer.goodMsg(p, ChatColor.YELLOW + name + ChatColor.GREEN + " has been kicked from " + c.getName());
|
||||||
|
FPlayer.errMsg(kicked, "You have been kicked from " + ChatColor.YELLOW + c.getName());
|
||||||
|
kicked.leaveChannel(c.getName());
|
||||||
|
if(c instanceof StandardChannel) {
|
||||||
|
kicked.setPrimaryChannel(ChatChannel.getDefault().getName());
|
||||||
|
}
|
||||||
|
if(c instanceof TempChannel) {
|
||||||
|
kicked.stopTempSpeak();
|
||||||
|
kicked.setPrimaryTempChannel("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "Player cannot be kicked from the channel.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "Cannot find specified player.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, Permission.noPerm);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "That channel does not exist.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class LeaveCommand extends Commands {
|
||||||
|
|
||||||
|
public LeaveCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Leave";
|
||||||
|
description = "Leaves a channel";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc leave " + ChatColor.GOLD + "channel";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc leave");
|
||||||
|
labels.add("fpchat leave");
|
||||||
|
labels.add("ch leave");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
ChatChannel channel = ChatChannel.getChannel(args[0]);
|
||||||
|
if(channel == null) {
|
||||||
|
FPlayer.errMsg(p, "The channel you are trying to leave does not exist.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
p.leaveChannel(channel.getName());
|
||||||
|
p.leaveTempChannel(channel.getName());
|
||||||
|
FPlayer.goodMsg(p, "You left the channel.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class MessageCommand extends Commands {
|
||||||
|
|
||||||
|
public MessageCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Message";
|
||||||
|
description = "Sends a private message to another player";
|
||||||
|
syntax = ChatColor.GRAY + "/msg " + ChatColor.GOLD + "player message";
|
||||||
|
minArgs = 2;
|
||||||
|
maxArgs = 100000;
|
||||||
|
labels.add("msg");
|
||||||
|
labels.add("fpc msg");
|
||||||
|
labels.add("fpchat msg");
|
||||||
|
labels.add("ch msg");
|
||||||
|
labels.add("tell");
|
||||||
|
labels.add("ch tell");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
if(Permission.canPrivateMessage(p)) {
|
||||||
|
Player tp = Util.getEP(args[0]);
|
||||||
|
if(tp != null) {
|
||||||
|
FPlayer target = FPlayer.getPlayer(tp);
|
||||||
|
String msg ="";
|
||||||
|
String last = args[args.length - 1];
|
||||||
|
for(int i = 1; i < args.length - 1; i++) {
|
||||||
|
msg = msg + args[i] + " ";
|
||||||
|
}
|
||||||
|
msg = msg + last;
|
||||||
|
p.sendPM(target, msg);
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, "Target player is not online.");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, Permission.noPerm);
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
String msg = ChatColor.GREEN + "PM from CONSOLE: " + ChatColor.GRAY;
|
||||||
|
String last = args[args.length - 1];
|
||||||
|
for(int i = 1; i < args.length - 1; i++) {
|
||||||
|
msg = msg + args[i] + " ";
|
||||||
|
}
|
||||||
|
msg = msg + last;
|
||||||
|
|
||||||
|
Player target = Util.getEP(args[0]);
|
||||||
|
if(target == null) {
|
||||||
|
FPlayer.errMsg(null,"Invalid player.");
|
||||||
|
}else {
|
||||||
|
target.sendMessage(msg);
|
||||||
|
plugin.log(Level.INFO, ChatColor.GREEN + "PM to " + target.getName() + ": " + ChatColor.GRAY + msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class ReloadCommand extends Commands {
|
||||||
|
|
||||||
|
public ReloadCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Reload";
|
||||||
|
description = "Reloads the plugin's configuration and data files.";
|
||||||
|
syntax = "§7/fpc reload";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 0;
|
||||||
|
labels.add("fpc reload");
|
||||||
|
labels.add("fpchat reload");
|
||||||
|
labels.add("ch reload");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
boolean allowed = true;
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
p = FPlayer.getPlayer((Player)sender);
|
||||||
|
allowed = Permission.isAdmin(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(allowed) {
|
||||||
|
|
||||||
|
FPlayer.dualMsg(p,"Reloading config files...");
|
||||||
|
plugin.reload();
|
||||||
|
FPlayer.goodMsg(p,"Config files reloaded.");
|
||||||
|
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, Permission.noPerm);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class ReplyCommand extends Commands {
|
||||||
|
|
||||||
|
public ReplyCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Reply";
|
||||||
|
description = "Reply to a PM from another player";
|
||||||
|
syntax = ChatColor.GRAY + "/r " + ChatColor.GOLD + "message";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 10000;
|
||||||
|
labels.add("reply");
|
||||||
|
labels.add("fpc reply");
|
||||||
|
labels.add("fpchat reply");
|
||||||
|
labels.add("ch reply");
|
||||||
|
labels.add("r");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
if(Permission.canPrivateMessage(p)) {
|
||||||
|
FPlayer target = p.getLastMessage();
|
||||||
|
if(target != null) {
|
||||||
|
String msg ="";
|
||||||
|
String last = args[args.length - 1];
|
||||||
|
for(int i = 0; i < args.length - 1; i++) {
|
||||||
|
msg = msg + args[i] + " ";
|
||||||
|
}
|
||||||
|
msg = msg + last;
|
||||||
|
p.sendPM(target, msg);
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, "Target player is not online.");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, Permission.noPerm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeList;
|
||||||
|
import com.fpghoti.fpchatx.badge.SyncGetter;
|
||||||
|
import com.fpghoti.fpchatx.badge.SyncSet;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class RevokeBadgeCommand extends Commands {
|
||||||
|
|
||||||
|
public RevokeBadgeCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "RevokeBadge";
|
||||||
|
description = "Revokes badge from player";
|
||||||
|
syntax = ChatColor.GRAY + "/revokebadge " + ChatColor.GOLD + "player badge#";
|
||||||
|
minArgs = 2;
|
||||||
|
maxArgs = 2;
|
||||||
|
labels.add("fpc revokebadge");
|
||||||
|
labels.add("fpchat revokebadge");
|
||||||
|
labels.add("ch revokebadge");
|
||||||
|
labels.add("revokebadge");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
Boolean console = true;
|
||||||
|
if(sender instanceof Player){
|
||||||
|
console = false;
|
||||||
|
p = FPlayer.getPlayer((Player) sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(console || Permission.isAdmin(p)){
|
||||||
|
UUID u = plugin.getPlayerCache().getUUID(args[0]);
|
||||||
|
if(u == null) {
|
||||||
|
FPlayer.errMsg(null, "Invalid player.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
OfflinePlayer o = Bukkit.getOfflinePlayer(u);
|
||||||
|
if(o != null) {
|
||||||
|
FPlayer toRevoke = FPlayer.getPlayer(o,true);
|
||||||
|
if(SyncGetter.syncExists(toRevoke) && (Util.isDigit(args[1]) || args[1].equals("*") )){
|
||||||
|
|
||||||
|
if(args[1].equals("*")) {
|
||||||
|
SyncSet.revoke(toRevoke);
|
||||||
|
FPlayer.goodMsg(p, "All badges revoked from the specified player.");
|
||||||
|
}else {
|
||||||
|
|
||||||
|
if(Integer.parseInt(args[1]) < BadgeList.badgeperm.size()) {
|
||||||
|
int id = Integer.parseInt(args[1]);
|
||||||
|
SyncSet.revoke(toRevoke, id);
|
||||||
|
toRevoke.removeSyncedBadge(id);
|
||||||
|
toRevoke.clearUnownedBadges();
|
||||||
|
FPlayer.goodMsg(p, "Badge revoked from the specified player.");
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, "Invalid badge.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, "Invalid player.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class ShoutCommand extends Commands {
|
||||||
|
|
||||||
|
public ShoutCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Shout";
|
||||||
|
description = "Sends a chat message to every online player";
|
||||||
|
syntax = ChatColor.GRAY + "/shout " + ChatColor.GOLD + "msg";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 100000;
|
||||||
|
labels.add("fpc shout");
|
||||||
|
labels.add("fpchat shout");
|
||||||
|
labels.add("ch shout");
|
||||||
|
labels.add("fshout");
|
||||||
|
labels.add("fyell");
|
||||||
|
labels.add("shout");
|
||||||
|
labels.add("yell");
|
||||||
|
labels.add("y");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
String msg = "";
|
||||||
|
String last = args[args.length - 1];
|
||||||
|
for(int i = 0; i < args.length - 1; i++) {
|
||||||
|
msg = msg + args[i] + " ";
|
||||||
|
}
|
||||||
|
msg = msg + last;
|
||||||
|
p.shout(msg);
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class ShoutToggleCommand extends Commands {
|
||||||
|
|
||||||
|
public ShoutToggleCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "ShoutToggle";
|
||||||
|
description = "Temporarily enables or disables shout";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc shouttoggle " + ChatColor.GOLD + "channel";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 0;
|
||||||
|
labels.add("fpc shouttoggle");
|
||||||
|
labels.add("fpchat shouttoggle");
|
||||||
|
labels.add("ch shouttoggle");
|
||||||
|
labels.add("shouttoggle");
|
||||||
|
labels.add("frankoffshout");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player) sender);
|
||||||
|
if(Permission.canToggleShout(p)){
|
||||||
|
if(args.length == 0){
|
||||||
|
if(!p.isShoutVisible()){
|
||||||
|
p.showShout();
|
||||||
|
FPlayer.goodMsg(p,"Now showing shout!");
|
||||||
|
}else if(p.isShoutVisible()){
|
||||||
|
p.hideShout();
|
||||||
|
FPlayer.goodMsg(p,"Now hiding shout!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(p, "You do not have permission to use this command!");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class SpyCommand extends Commands{
|
||||||
|
|
||||||
|
FPChat plugin;
|
||||||
|
|
||||||
|
public SpyCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Spy";
|
||||||
|
description = "Toggles Spy mode";
|
||||||
|
syntax = ChatColor.GRAY + "/spy " + ChatColor.GOLD + "on/off";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("spy");
|
||||||
|
labels.add("fpc spy");
|
||||||
|
labels.add("fpchat spy");
|
||||||
|
labels.add("ch spy");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player) sender);
|
||||||
|
if(Permission.canSpy(p)){
|
||||||
|
if(args.length == 1){
|
||||||
|
if(args[0].equalsIgnoreCase("true") || args[0].equalsIgnoreCase("on")){
|
||||||
|
p.enableSpy();
|
||||||
|
FPlayer.goodMsg(p,"PM Spy Enabled!");
|
||||||
|
}else if(args[0].equalsIgnoreCase("false") || args[0].equalsIgnoreCase("off")){
|
||||||
|
p.disableSpy();
|
||||||
|
FPlayer.goodMsg(p,"PM Spy Disabled!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(p, "You do not have permission to use this command!");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,82 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.StandardChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.TempChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class TalkCommand extends Commands {
|
||||||
|
|
||||||
|
public TalkCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Talk";
|
||||||
|
description = "Talk in a specific channel";
|
||||||
|
syntax = ChatColor.GRAY + "/talk " + ChatColor.GOLD + "channel [msg]";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 100000;
|
||||||
|
labels.add("fpc talk");
|
||||||
|
labels.add("fpchat talk");
|
||||||
|
labels.add("ch talk");
|
||||||
|
labels.add("fpc tk");
|
||||||
|
labels.add("fpchat tk");
|
||||||
|
labels.add("ch tk");
|
||||||
|
labels.add("talk");
|
||||||
|
labels.add("tk");
|
||||||
|
misc.add("Helpful alias: /tk");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
ChatChannel channel = ChatChannel.getChannel(args[0]);
|
||||||
|
if(channel == null) {
|
||||||
|
channel = ChatChannel.getTempChannel(args[0]);
|
||||||
|
}
|
||||||
|
if(channel == null) {
|
||||||
|
FPlayer.errMsg(p, "The channel you are trying to talk in does not exist.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!p.getChannels().contains(channel.getName()) && !p.getTempChannels().contains(channel.getName())) {
|
||||||
|
FPlayer.errMsg(p, "You are not currently in that channel.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(args.length == 1) {
|
||||||
|
if(channel instanceof StandardChannel) {
|
||||||
|
p.setPrimaryChannel(channel.getName());
|
||||||
|
p.stopTempSpeak();
|
||||||
|
}else if(channel instanceof TempChannel) {
|
||||||
|
p.setPrimaryTempChannel(channel.getName());
|
||||||
|
p.speakInTemp();
|
||||||
|
}
|
||||||
|
FPlayer.dualMsg(p,ChatColor.YELLOW + "Now speaking in " + ChatColor.GREEN + channel.getName() + ChatColor.YELLOW + ".");
|
||||||
|
}else {
|
||||||
|
String msg = "";
|
||||||
|
String last = args[args.length - 1];
|
||||||
|
for(int i = 1; i < args.length - 1; i++) {
|
||||||
|
msg = msg + args[i] + " ";
|
||||||
|
}
|
||||||
|
msg = msg + last;
|
||||||
|
p.setTalk(true);
|
||||||
|
p.setTalkChannel(channel);
|
||||||
|
Player pl = Util.getEP(p.getName());
|
||||||
|
AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(false, pl, msg, new HashSet<Player>(Bukkit.getOnlinePlayers()));
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class UnHushCommand extends Commands {
|
||||||
|
|
||||||
|
public UnHushCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "UnHush";
|
||||||
|
description = "Unhushes a player";
|
||||||
|
syntax = ChatColor.GRAY + "/unhush " + ChatColor.GOLD + "player";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc unhush");
|
||||||
|
labels.add("fpchat unhush");
|
||||||
|
labels.add("ch unhush");
|
||||||
|
labels.add("unhush");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
FPlayer p = null;
|
||||||
|
Boolean console = true;
|
||||||
|
if(sender instanceof Player){
|
||||||
|
console = false;
|
||||||
|
p = FPlayer.getPlayer((Player) sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(console || Permission.canHush(p)){
|
||||||
|
FPlayer hush = FPlayer.getPlayer(args[0]);
|
||||||
|
if(hush == null) {
|
||||||
|
hush = FPlayer.getPlayer(args[0]);
|
||||||
|
}
|
||||||
|
if(hush == null) {
|
||||||
|
FPlayer.errMsg(p,"That player cannot be found.");
|
||||||
|
}else{
|
||||||
|
hush.unhush();
|
||||||
|
FPlayer.dualMsg(hush, "You have been unhushed. Your shouts will now send.");
|
||||||
|
FPlayer.goodMsg(p, "Player can now use shout.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class UnignoreCommand extends Commands {
|
||||||
|
|
||||||
|
public UnignoreCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Unignore";
|
||||||
|
description = "Unignores all messages from a player";
|
||||||
|
syntax = ChatColor.GRAY + "/unignore " + ChatColor.GOLD + "player";
|
||||||
|
minArgs = 1;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc unignore");
|
||||||
|
labels.add("fpchat unignore");
|
||||||
|
labels.add("ch unignore");
|
||||||
|
labels.add("unignore");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if(sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
UUID u = plugin.getPlayerCache().getUUID(args[0]);
|
||||||
|
if(u == null) {
|
||||||
|
FPlayer.errMsg(p, "Invalid player.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
OfflinePlayer o = Bukkit.getOfflinePlayer(u);
|
||||||
|
if(o != null) {
|
||||||
|
FPlayer unignored = FPlayer.getPlayer(o, true);
|
||||||
|
p.unignore(unignored);
|
||||||
|
FPlayer.goodMsg(p, "Player unignored.");
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(p, "Invalid player.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
FPlayer.errMsg(null, "You must be a player to use unignore.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
package com.fpghoti.fpchatx.command.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.command.Commands;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
|
||||||
|
public class WhoCommand extends Commands {
|
||||||
|
|
||||||
|
public WhoCommand(FPChat plugin) {
|
||||||
|
super(plugin);
|
||||||
|
name = "Who";
|
||||||
|
description = "Lists all players in your primary channel";
|
||||||
|
syntax = ChatColor.GRAY + "/fpc who " + ChatColor.GOLD + "[page#]";
|
||||||
|
minArgs = 0;
|
||||||
|
maxArgs = 1;
|
||||||
|
labels.add("fpc who");
|
||||||
|
labels.add("fpchat who");
|
||||||
|
labels.add("ch who");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
FPlayer p = FPlayer.getPlayer((Player)sender);
|
||||||
|
ChatChannel c = p.getPrimaryChannel();
|
||||||
|
if(p.speakingInTemp()) {
|
||||||
|
c = p.getPrimaryTempChannel();
|
||||||
|
}
|
||||||
|
if (c != null) {
|
||||||
|
|
||||||
|
int pg = 1;
|
||||||
|
if (args.length > 0) {
|
||||||
|
if(Util.isDigit(args[0])) {
|
||||||
|
pg = Integer.parseInt(args[0]);
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(p, syntax);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<FPlayer> players = c.getPlayers();
|
||||||
|
|
||||||
|
int pageCount = (int) Math.ceil((double) players.size() / 8);
|
||||||
|
if (pg > pageCount) {
|
||||||
|
pg = pageCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer.plainMsg(p, "");
|
||||||
|
FPlayer.plainMsg(p, ChatColor.GOLD + "[" + Integer.toString(pg) + "/" + Integer.toString(pageCount) + "] " + ChatColor.YELLOW + "Players in " + ChatColor.WHITE + c.getName() + ChatColor.YELLOW +":");
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
int index = (pg - 1) * 8 + i;
|
||||||
|
if (index < players.size()) {
|
||||||
|
FPlayer member = players.get(index);
|
||||||
|
String msg = ChatColor.GREEN + "- ";
|
||||||
|
if(Permission.isAdmin(member)) {
|
||||||
|
msg = msg + ChatColor.AQUA + "[ADMIN] ";
|
||||||
|
}else if(Permission.isStaff(member)) {
|
||||||
|
msg = msg + ChatColor.BLUE + "[STAFF] ";
|
||||||
|
}
|
||||||
|
msg = msg + ChatColor.YELLOW + member.getName();
|
||||||
|
FPlayer.plainMsg(p, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
FPlayer.errMsg(null, "This command is for players only.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,221 @@
|
||||||
|
package com.fpghoti.fpchatx.config;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FilenameFilter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
|
||||||
|
public class ChannelFile {
|
||||||
|
|
||||||
|
private FPChat plugin;
|
||||||
|
private File configFile;
|
||||||
|
private FileConfiguration config;
|
||||||
|
private String filename;
|
||||||
|
private String channel;
|
||||||
|
|
||||||
|
public ChannelFile(FPChat plugin, String channel) {
|
||||||
|
this.channel = channel;
|
||||||
|
this.filename = channel + ".yml";
|
||||||
|
this.plugin = plugin;
|
||||||
|
File cdir = new File(this.plugin.getDataFolder() + File.separator + "channels");
|
||||||
|
cdir.mkdirs();
|
||||||
|
this.configFile = new File(cdir, filename);
|
||||||
|
this.config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
try {
|
||||||
|
generate();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayList<File> getChannelFiles(){
|
||||||
|
ArrayList<File> files = new ArrayList<File>();
|
||||||
|
File cdir = new File(FPChat.getPlugin().getDataFolder(), "channels");
|
||||||
|
if(!cdir.exists()) {
|
||||||
|
cdir.mkdirs();
|
||||||
|
new ChannelFile(FPChat.getPlugin(), "Default");
|
||||||
|
}
|
||||||
|
File[] foundfiles = cdir.listFiles(new FilenameFilter() {
|
||||||
|
@Override public boolean accept(File dir, String name) {
|
||||||
|
return name.toLowerCase().endsWith(".yml");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for(File f : foundfiles) {
|
||||||
|
files.add(f);
|
||||||
|
}
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean channelExists(String c) {
|
||||||
|
File cdir = new File(FPChat.getPlugin().getDataFolder() + File.separator + "channels");
|
||||||
|
if(!cdir.exists()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String fname = c + ".yml";
|
||||||
|
File file = new File(cdir, fname);
|
||||||
|
return file.exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void generate() throws IOException{
|
||||||
|
if (config.get("Name")==null) {
|
||||||
|
config.createSection("Name");
|
||||||
|
config.set("Name", channel);
|
||||||
|
}
|
||||||
|
if (config.get("Shortcut")==null) {
|
||||||
|
config.createSection("Shortcut");
|
||||||
|
config.set("Shortcut", channel);
|
||||||
|
}
|
||||||
|
if (config.get("ChatFormat")==null) {
|
||||||
|
config.createSection("ChatFormat");
|
||||||
|
config.set("ChatFormat", "&8[{prefix}&8]{suffix}{player}&8:&7 ");
|
||||||
|
}
|
||||||
|
if (config.get("DistinguishedChatFormat")==null){
|
||||||
|
config.createSection("DistinguishedChatFormat");
|
||||||
|
config.set("DistinguishedChatFormat", "&8&l(&r{prefix}&8&l)&r{suffix}{player}&8&l - &r&7");
|
||||||
|
}
|
||||||
|
if (config.get("Whitelist")==null) {
|
||||||
|
config.createSection("Whitelist");
|
||||||
|
config.set("Whitelist", false);
|
||||||
|
}
|
||||||
|
if (config.get("WhitelistedUUIDs")==null) {
|
||||||
|
config.createSection("WhitelistedUUIDs");
|
||||||
|
config.set("WhitelistedUUIDs", "");
|
||||||
|
}
|
||||||
|
if (config.get("WhitelistedPermissionNode")==null) {
|
||||||
|
config.createSection("WhitelistedPermissionNode");
|
||||||
|
config.set("WhitelistedPermissionNode", "fpchat.whitelisted." + channel);
|
||||||
|
}
|
||||||
|
if (config.get("HasRadius")==null) {
|
||||||
|
config.createSection("HasRadius");
|
||||||
|
config.set("HasRadius", false);
|
||||||
|
}
|
||||||
|
if (config.get("Radius")==null) {
|
||||||
|
config.createSection("Radus");
|
||||||
|
config.set("Radius", 300);
|
||||||
|
}
|
||||||
|
if (config.get("BannedUUIDs")==null) {
|
||||||
|
config.createSection("BannedUUIDs");
|
||||||
|
config.set("BannedUUIDs", "");
|
||||||
|
}
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return config.getString("Name");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShortcut() {
|
||||||
|
return config.getString("Shortcut");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveShortcut(String shortcut) throws IOException{
|
||||||
|
if (config.get("Shortcut")==null) {
|
||||||
|
config.createSection("Shortcut");
|
||||||
|
}
|
||||||
|
config.set("Shortcut", shortcut);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChatFormat() {
|
||||||
|
return config.getString("ChatFormat");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveChatFormat(String format) throws IOException{
|
||||||
|
if (config.get("ChatFormat")==null) {
|
||||||
|
config.createSection("ChatFormat");
|
||||||
|
}
|
||||||
|
config.set("ChatFormat", format);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDistinguishedChatFormat() {
|
||||||
|
return config.getString("DistinguishedChatFormat");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveDistinguishedChatFormat(String format) throws IOException{
|
||||||
|
if (config.get("DistinguishedChatFormat")==null) {
|
||||||
|
config.createSection("DistinguishedChatFormat");
|
||||||
|
}
|
||||||
|
config.set("DistinguishedChatFormat", format);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWhitelisted() {
|
||||||
|
return config.getBoolean("Whitelist");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveWhitelist(boolean whitelisted) throws IOException {
|
||||||
|
if (config.get("Whitelist")==null) {
|
||||||
|
config.createSection("Whitelist");
|
||||||
|
}
|
||||||
|
config.set("Whitelist", whitelisted);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWhitelistedUUIDs() {
|
||||||
|
return config.getString("WhitelistedUUIDs");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveWhitelistedUUIDs(String uuids) throws IOException {
|
||||||
|
if (config.get("WhitelistedUUIDs")==null) {
|
||||||
|
config.createSection("WhitelistedUUIDs");
|
||||||
|
}
|
||||||
|
config.set("WhitelistedUUIDs", uuids);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWhitelistedPermissionNode() {
|
||||||
|
return config.getString("WhitelistedPermissionNode");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveWhitelistedPermissionNode(String perm) throws IOException{
|
||||||
|
if (config.get("WhitelistedPermissionNode")==null) {
|
||||||
|
config.createSection("WhitelistedPermissionNode");
|
||||||
|
}
|
||||||
|
config.set("WhitelistedPermissionNode", perm);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasRadius() {
|
||||||
|
return config.getBoolean("HasRadius");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveHasRadius(boolean b) throws IOException {
|
||||||
|
if (config.get("HasRadius")==null) {
|
||||||
|
config.createSection("HasRadius");
|
||||||
|
}
|
||||||
|
config.set("HasRadius", b);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRadius() {
|
||||||
|
return config.getInt("Radius");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveRadius(int radius) throws IOException{
|
||||||
|
if (config.get("Radius")==null) {
|
||||||
|
config.createSection("Radius");
|
||||||
|
}
|
||||||
|
config.set("Radius", radius);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBannedUUIDs() {
|
||||||
|
return config.getString("BannedUUIDs");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveBannedUUIDs(String uuids) throws IOException {
|
||||||
|
if (config.get("BannedUUIDs")==null) {
|
||||||
|
config.createSection("BannedUUIDs");
|
||||||
|
}
|
||||||
|
config.set("BannedUUIDs", uuids);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,242 @@
|
||||||
|
package com.fpghoti.fpchatx.config;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
|
||||||
|
public class MainConfig {
|
||||||
|
|
||||||
|
private FPChat plugin;
|
||||||
|
private File configFile;
|
||||||
|
private FileConfiguration config;
|
||||||
|
|
||||||
|
public MainConfig(FPChat plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
this.configFile = new File(plugin.getDataFolder(), "config.yml");
|
||||||
|
this.config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void generate(){
|
||||||
|
if (config.get("MySQL")==null) {
|
||||||
|
config.createSection("MySQL");
|
||||||
|
config.set("MySQL", false);
|
||||||
|
}
|
||||||
|
if (config.get("Host")==null) {
|
||||||
|
config.createSection("Host");
|
||||||
|
config.set("Host", "0.0.0.0");
|
||||||
|
}
|
||||||
|
if (config.get("Port")==null) {
|
||||||
|
config.createSection("Port");
|
||||||
|
config.set("Port", "3306");
|
||||||
|
}
|
||||||
|
if (config.get("User")==null) {
|
||||||
|
config.createSection("User");
|
||||||
|
config.set("User", "Username");
|
||||||
|
}
|
||||||
|
if (config.get("Password")==null) {
|
||||||
|
config.createSection("Password");
|
||||||
|
config.set("Password", "blee");
|
||||||
|
}
|
||||||
|
if (config.get("Database")==null) {
|
||||||
|
config.createSection("Database");
|
||||||
|
config.set("Database", "mydb");
|
||||||
|
}
|
||||||
|
if (config.get("Chat-Feature-Table")==null) {
|
||||||
|
config.createSection("Chat-Feature-Table");
|
||||||
|
config.set("Chat-Feature-Table", "fpchat");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.get("PermSync-Table")==null) {
|
||||||
|
config.createSection("PermSync-Table");
|
||||||
|
config.set("PermSync-Table", "fpchatsync");
|
||||||
|
}
|
||||||
|
if (config.get("StaffBadgeEnabled")==null) {
|
||||||
|
config.createSection("StaffBadgeEnabled");
|
||||||
|
config.set("StaffBadgeEnabled", false);
|
||||||
|
}
|
||||||
|
if (config.get("StaffBadge")==null) {
|
||||||
|
config.createSection("StaffBadge");
|
||||||
|
config.set("StaffBadge", "&6&l⟪Տ⟫&r");
|
||||||
|
}
|
||||||
|
if (config.get("ShoutCooldownEnabled")==null) {
|
||||||
|
config.createSection("ShoutCooldownEnabled");
|
||||||
|
config.set("ShoutCooldownEnabled", false);
|
||||||
|
}
|
||||||
|
if (config.get("ShoutCooldownSeconds")==null) {
|
||||||
|
config.createSection("ShoutCooldownSeconds");
|
||||||
|
config.set("ShoutCooldownSeconds", 45);
|
||||||
|
}
|
||||||
|
if (config.get("ShoutFormat")==null) {
|
||||||
|
config.createSection("ShoutFormat");
|
||||||
|
config.set("ShoutFormat", "&8[{prefix}&8]{suffix}{player}&8:&f ");
|
||||||
|
}
|
||||||
|
if (config.get("In-Message-Format")==null) {
|
||||||
|
config.createSection("In-Message-Format");
|
||||||
|
config.set("In-Message-Format", "&3[&a{player} &c -> &aMe&3]&f ");
|
||||||
|
}
|
||||||
|
if (config.get("Out-Message-Format")==null) {
|
||||||
|
config.createSection("Out-Message-Format");
|
||||||
|
config.set("Out-Message-Format", "&3[&aMe &c -> &a{recipient}&3]&f ");
|
||||||
|
}
|
||||||
|
if (config.get("Temp-Channel-Format")==null) {
|
||||||
|
config.createSection("Temp-Channel-Format");
|
||||||
|
config.set("Temp-Channel-Format", "&2[&6{channel}&2]&7{player}&2:&e ");
|
||||||
|
}
|
||||||
|
if (config.get("Filter")==null){
|
||||||
|
config.createSection("Filter");
|
||||||
|
config.set("Filter", false);
|
||||||
|
}
|
||||||
|
if (config.get("NaughtyWords")==null){
|
||||||
|
config.createSection("NaughtyWords");
|
||||||
|
config.set("NaughtyWords", "word1,word2,word3");
|
||||||
|
}
|
||||||
|
if (config.get("FrankMode")==null){
|
||||||
|
config.createSection("FrankMode");
|
||||||
|
config.set("FrankMode", false);
|
||||||
|
}
|
||||||
|
if (config.get("DistinguishedShout")==null){
|
||||||
|
config.createSection("DistinguishedShout");
|
||||||
|
config.set("DistinguishedShout", "&8&l(&r{prefix}&8&l)&r{suffix}{player}&8&l - &r&f");
|
||||||
|
}
|
||||||
|
if (config.get("DefaultChannel")==null){
|
||||||
|
config.createSection("DefaultChannel");
|
||||||
|
config.set("DefaultChannel", "Default");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
config.save(configFile);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean mySQLEnabled() {
|
||||||
|
return config.getBoolean("MySQL");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHost() {
|
||||||
|
if(mySQLEnabled()) {
|
||||||
|
return config.getString("Host");
|
||||||
|
}else {
|
||||||
|
plugin.getLogger().log(Level.SEVERE, "Null SQL host. Is MySQL disabled?");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPort() {
|
||||||
|
if(mySQLEnabled()) {
|
||||||
|
return config.getString("Port");
|
||||||
|
}else {
|
||||||
|
plugin.getLogger().log(Level.SEVERE, "Null SQL port. Is MySQL disabled?");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUser() {
|
||||||
|
if(mySQLEnabled()) {
|
||||||
|
return config.getString("User");
|
||||||
|
}else {
|
||||||
|
plugin.getLogger().log(Level.SEVERE, "Null SQL user. Is MySQL disabled?");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
if(mySQLEnabled()) {
|
||||||
|
return config.getString("Password");
|
||||||
|
}else {
|
||||||
|
plugin.getLogger().log(Level.SEVERE, "Null SQL password. Is MySQL disabled?");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDatabase() {
|
||||||
|
if(mySQLEnabled()) {
|
||||||
|
return config.getString("Database");
|
||||||
|
}else {
|
||||||
|
plugin.getLogger().log(Level.SEVERE, "Null SQL database. Is MySQL disabled?");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChatFeatureTable() {
|
||||||
|
if(mySQLEnabled()) {
|
||||||
|
return config.getString("Chat-Feature-Table");
|
||||||
|
}else {
|
||||||
|
plugin.getLogger().log(Level.SEVERE, "Null SQL chat feature table. Is MySQL disabled?");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPermSyncTable() {
|
||||||
|
if(mySQLEnabled()) {
|
||||||
|
return config.getString("PermSync-Table");
|
||||||
|
}else {
|
||||||
|
plugin.getLogger().log(Level.SEVERE, "Null SQL perm sync table. Is MySQL disabled?");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean staffBadgeEnabled() {
|
||||||
|
return config.getBoolean("StaffBadgeEnabled");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStaffBadge() {
|
||||||
|
if(staffBadgeEnabled()) {
|
||||||
|
return ChatColor.translateAlternateColorCodes('&', config.getString("StaffBadge"));
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean shoutCooldownEnabled(){
|
||||||
|
return config.getBoolean("ShoutCooldownEnabled");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getShoutSeconds(){
|
||||||
|
return config.getInt("ShoutCooldownSeconds");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDefaultChannel() {
|
||||||
|
return config.getString("DefaultChannel");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShoutFormat() {
|
||||||
|
return config.getString("ShoutFormat");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInMsgFormat() {
|
||||||
|
return config.getString("In-Message-Format");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOutMsgFormat() {
|
||||||
|
return config.getString("Out-Message-Format");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTempChannelFormat() {
|
||||||
|
return config.getString("Temp-Channel-Format");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean chatFilterEnabled() {
|
||||||
|
return config.getBoolean("Filter");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNaughtyWords() {
|
||||||
|
return config.getString("NaughtyWords");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean frankModeEnabled() {
|
||||||
|
return config.getBoolean("FrankMode");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDistinguishedShout() {
|
||||||
|
return config.getString("DistinguishedShout");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.fpghoti.fpchatx.config;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
|
||||||
|
public class PlayerCache {
|
||||||
|
|
||||||
|
private FPChat plugin;
|
||||||
|
private File configFile;
|
||||||
|
private FileConfiguration config;
|
||||||
|
|
||||||
|
public PlayerCache(FPChat plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
configFile = new File(this.plugin.getDataFolder(), "playercache.yml");
|
||||||
|
this.config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
config = YamlConfiguration.loadConfiguration(configFile); // In case the player had changed their name and the config updated.
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getUUID(String name) {
|
||||||
|
try {
|
||||||
|
return UUID.fromString(config.getString(name.toLowerCase()));
|
||||||
|
}catch(IllegalArgumentException ex) {
|
||||||
|
return null;
|
||||||
|
}catch(NullPointerException ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveUUID(String name, UUID uuid) throws IOException {
|
||||||
|
name = name.toLowerCase();
|
||||||
|
if (config.get(name)==null) {
|
||||||
|
config.createSection(name);
|
||||||
|
}
|
||||||
|
config.set(name, uuid.toString());
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,157 @@
|
||||||
|
package com.fpghoti.fpchatx.config;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
|
||||||
|
public class PlayerFile {
|
||||||
|
|
||||||
|
private FPChat plugin;
|
||||||
|
private File configFile;
|
||||||
|
private FileConfiguration config;
|
||||||
|
private String filename;
|
||||||
|
private OfflinePlayer player;
|
||||||
|
|
||||||
|
public PlayerFile(FPChat plugin, OfflinePlayer p) {
|
||||||
|
this.player = p;
|
||||||
|
filename = p.getUniqueId().toString() + ".yml";
|
||||||
|
this.plugin = plugin;
|
||||||
|
File pdir = new File(this.plugin.getDataFolder(), "players");
|
||||||
|
pdir.mkdirs();
|
||||||
|
configFile = new File(pdir, filename);
|
||||||
|
this.config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
try {
|
||||||
|
generate();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
config = YamlConfiguration.loadConfiguration(configFile); // In case the player had changed their name and the config updated.
|
||||||
|
}
|
||||||
|
|
||||||
|
private void generate() throws IOException{
|
||||||
|
if (config.get("UUID")==null) {
|
||||||
|
config.createSection("UUID");
|
||||||
|
config.set("UUID", player.getUniqueId().toString());
|
||||||
|
}
|
||||||
|
if (config.get("Name")==null) {
|
||||||
|
config.createSection("Name");
|
||||||
|
config.set("Name", player.getName());
|
||||||
|
}
|
||||||
|
if (config.get("CurrentChannel")==null) {
|
||||||
|
config.createSection("CurrentChannel");
|
||||||
|
config.set("CurrentChannel", ChatChannel.getDefault().getName());
|
||||||
|
}
|
||||||
|
if (config.get("Ignore")==null) {
|
||||||
|
config.createSection("Ignore");
|
||||||
|
config.set("Ignore", "");
|
||||||
|
}
|
||||||
|
if (config.get("Channels")==null) {
|
||||||
|
config.createSection("Channels");
|
||||||
|
config.set("Channels", ChatChannel.getDefault().getName() + ",");
|
||||||
|
}
|
||||||
|
if (config.get("Spy")==null) {
|
||||||
|
config.createSection("Spy");
|
||||||
|
config.set("Spy", false);
|
||||||
|
}
|
||||||
|
if (config.get("ShoutVisible")==null) {
|
||||||
|
config.createSection("ShoutVisible");
|
||||||
|
config.set("ShoutVisible", true);
|
||||||
|
}
|
||||||
|
if (config.get("Hushed")==null) {
|
||||||
|
config.createSection("Hushed");
|
||||||
|
config.set("Hushed", false);
|
||||||
|
}
|
||||||
|
config.set("Name", player.getName());
|
||||||
|
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getUUID() {
|
||||||
|
return config.getString("UUID");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return config.getString("Name");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSpy() {
|
||||||
|
return config.getBoolean("Spy");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveSpy(boolean spy) throws IOException {
|
||||||
|
if (config.get("Spy")==null) {
|
||||||
|
config.createSection("Spy");
|
||||||
|
}
|
||||||
|
config.set("Spy", spy);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean shoutVisible() {
|
||||||
|
return config.getBoolean("ShoutVisible");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveShoutVisible(boolean visible) throws IOException {
|
||||||
|
if (config.get("ShoutVisible")==null) {
|
||||||
|
config.createSection("ShoutVisible");
|
||||||
|
}
|
||||||
|
config.set("ShoutVisible", visible);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHushed() {
|
||||||
|
return config.getBoolean("Hushed");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveHushed(boolean hushed) throws IOException {
|
||||||
|
if (config.get("Hushed")==null) {
|
||||||
|
config.createSection("Hushed");
|
||||||
|
}
|
||||||
|
config.set("Hushed", hushed);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getCurrentChannel() {
|
||||||
|
return config.getString("CurrentChannel");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveCurrentChannel(String channel) throws IOException {
|
||||||
|
if (config.get("CurrentChannel")==null) {
|
||||||
|
config.createSection("CurrentChannel");
|
||||||
|
}
|
||||||
|
config.set("CurrentChannel", channel);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIgnore() {
|
||||||
|
return config.getString("Ignore");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveIgnore(String ignore) throws IOException {
|
||||||
|
if (config.get("Ignore")==null) {
|
||||||
|
config.createSection("Ignore");
|
||||||
|
}
|
||||||
|
config.set("Ignore", ignore);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChannels() {
|
||||||
|
return config.getString("Channels");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveChannels(String channels) throws IOException {
|
||||||
|
if (config.get("Channels")==null) {
|
||||||
|
config.createSection("Channels");
|
||||||
|
}
|
||||||
|
config.set("Channels", channels);
|
||||||
|
config.save(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
package com.fpghoti.fpchatx.customcodes;
|
||||||
|
|
||||||
|
public class BubbleCode {
|
||||||
|
|
||||||
|
public static String bubblecode(Boolean hasPerm, String msg) {
|
||||||
|
String newmsg = msg;
|
||||||
|
if(hasPerm) {
|
||||||
|
newmsg = replaceChar(msg);
|
||||||
|
}
|
||||||
|
return newmsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String replaceChar(String msg) {
|
||||||
|
Boolean on = false;
|
||||||
|
String newmsg = "";
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while(i < msg.length()) {
|
||||||
|
if(msg.substring(i, i + 1).equals("§")) {
|
||||||
|
String code = msg.substring(i + 1, i + 2);
|
||||||
|
if(code.equals("r")) {
|
||||||
|
on = false;
|
||||||
|
}
|
||||||
|
String wcode = "§" + code;
|
||||||
|
newmsg = newmsg + wcode;
|
||||||
|
i++;
|
||||||
|
}else if(msg.substring(i, i + 1).equals("&")) {
|
||||||
|
if(msg.substring(i + 1, i + 2).equals("w")) {
|
||||||
|
on = true;
|
||||||
|
i++;
|
||||||
|
}else {
|
||||||
|
newmsg = newmsg + "&";
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
String sub = msg.substring(i, i + 1);
|
||||||
|
if(on) {
|
||||||
|
sub = sub.replace('a', 'ⓐ');
|
||||||
|
sub = sub.replace('b', 'ⓑ');
|
||||||
|
sub = sub.replace('c', 'ⓒ');
|
||||||
|
sub = sub.replace('d', 'ⓓ');
|
||||||
|
sub = sub.replace('e', 'ⓔ');
|
||||||
|
sub = sub.replace('f', 'ⓕ');
|
||||||
|
sub = sub.replace('g', 'ⓖ');
|
||||||
|
sub = sub.replace('h', 'ⓗ');
|
||||||
|
sub = sub.replace('i', 'ⓘ');
|
||||||
|
sub = sub.replace('j', 'ⓙ');
|
||||||
|
sub = sub.replace('k', 'ⓚ');
|
||||||
|
sub = sub.replace('l', 'ⓛ');
|
||||||
|
sub = sub.replace('m', 'ⓜ');
|
||||||
|
sub = sub.replace('n', 'ⓝ');
|
||||||
|
sub = sub.replace('o', 'ⓞ');
|
||||||
|
sub = sub.replace('p', 'ⓟ');
|
||||||
|
sub = sub.replace('q', 'ⓠ');
|
||||||
|
sub = sub.replace('r', 'ⓡ');
|
||||||
|
sub = sub.replace('s', 'ⓢ');
|
||||||
|
sub = sub.replace('t', 'ⓣ');
|
||||||
|
sub = sub.replace('u', 'ⓤ');
|
||||||
|
sub = sub.replace('v', 'ⓥ');
|
||||||
|
sub = sub.replace('w', 'ⓦ');
|
||||||
|
sub = sub.replace('x', 'ⓧ');
|
||||||
|
sub = sub.replace('y', 'ⓨ');
|
||||||
|
sub = sub.replace('z', 'ⓩ');
|
||||||
|
sub = sub.replace('A', 'Ⓐ');
|
||||||
|
sub = sub.replace('B', 'Ⓑ');
|
||||||
|
sub = sub.replace('C', 'Ⓒ');
|
||||||
|
sub = sub.replace('D', 'Ⓓ');
|
||||||
|
sub = sub.replace('E', 'Ⓔ');
|
||||||
|
sub = sub.replace('F', 'Ⓕ');
|
||||||
|
sub = sub.replace('G', 'Ⓖ');
|
||||||
|
sub = sub.replace('H', 'Ⓗ');
|
||||||
|
sub = sub.replace('I', 'Ⓘ');
|
||||||
|
sub = sub.replace('J', 'Ⓙ');
|
||||||
|
sub = sub.replace('K', 'Ⓚ');
|
||||||
|
sub = sub.replace('L', 'Ⓛ');
|
||||||
|
sub = sub.replace('M', 'Ⓜ');
|
||||||
|
sub = sub.replace('N', 'Ⓝ');
|
||||||
|
sub = sub.replace('O', 'Ⓞ');
|
||||||
|
sub = sub.replace('P', 'Ⓟ');
|
||||||
|
sub = sub.replace('Q', 'Ⓠ');
|
||||||
|
sub = sub.replace('R', 'Ⓡ');
|
||||||
|
sub = sub.replace('S', 'Ⓢ');
|
||||||
|
sub = sub.replace('T', 'Ⓣ');
|
||||||
|
sub = sub.replace('U', 'Ⓤ');
|
||||||
|
sub = sub.replace('V', 'Ⓥ');
|
||||||
|
sub = sub.replace('W', 'Ⓦ');
|
||||||
|
sub = sub.replace('X', 'Ⓧ');
|
||||||
|
sub = sub.replace('Y', 'Ⓨ');
|
||||||
|
sub = sub.replace('Z', 'Ⓩ');
|
||||||
|
sub = sub.replace('1', '①');
|
||||||
|
sub = sub.replace('2', '②');
|
||||||
|
sub = sub.replace('3', '③');
|
||||||
|
sub = sub.replace('4', '④');
|
||||||
|
sub = sub.replace('5', '⑤');
|
||||||
|
sub = sub.replace('6', '⑥');
|
||||||
|
sub = sub.replace('7', '⑦');
|
||||||
|
sub = sub.replace('8', '⑧');
|
||||||
|
sub = sub.replace('9', '⑨');
|
||||||
|
sub = sub.replace('0', '⓪');
|
||||||
|
}
|
||||||
|
newmsg = newmsg + sub;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return newmsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
package com.fpghoti.fpchatx.customcodes;
|
||||||
|
|
||||||
|
public class Codify {
|
||||||
|
|
||||||
|
public static String changeFormatSign(String str) {
|
||||||
|
String nstr = str;
|
||||||
|
nstr = nstr.replace("&0", "§0");
|
||||||
|
nstr = nstr.replace("&1", "§1");
|
||||||
|
nstr = nstr.replace("&2", "§2");
|
||||||
|
nstr = nstr.replace("&3", "§3");
|
||||||
|
nstr = nstr.replace("&4", "§4");
|
||||||
|
nstr = nstr.replace("&5", "§5");
|
||||||
|
nstr = nstr.replace("&6", "§6");
|
||||||
|
nstr = nstr.replace("&7", "§7");
|
||||||
|
nstr = nstr.replace("&8", "§8");
|
||||||
|
nstr = nstr.replace("&9", "§9");
|
||||||
|
nstr = nstr.replace("&a", "§a");
|
||||||
|
nstr = nstr.replace("&b", "§b");
|
||||||
|
nstr = nstr.replace("&c", "§c");
|
||||||
|
nstr = nstr.replace("&d", "§d");
|
||||||
|
nstr = nstr.replace("&e", "§e");
|
||||||
|
nstr = nstr.replace("&f", "§f");
|
||||||
|
nstr = nstr.replace("&k", "§k");
|
||||||
|
nstr = nstr.replace("&l", "§l");
|
||||||
|
nstr = nstr.replace("&m", "§m");
|
||||||
|
nstr = nstr.replace("&n", "§n");
|
||||||
|
nstr = nstr.replace("&o", "§o");
|
||||||
|
nstr = nstr.replace("&r", "§r");
|
||||||
|
//nstr = nstr.replace("&w", "§w");
|
||||||
|
//nstr = nstr.replace("&x", "§x");
|
||||||
|
return nstr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String removeBubbles(String str) {
|
||||||
|
String nstr = str;
|
||||||
|
nstr = nstr.replace('ⓐ', 'a');
|
||||||
|
nstr = nstr.replace('ⓑ', 'b');
|
||||||
|
nstr = nstr.replace('ⓒ', 'c');
|
||||||
|
nstr = nstr.replace('ⓓ', 'd');
|
||||||
|
nstr = nstr.replace('ⓔ', 'e');
|
||||||
|
nstr = nstr.replace('ⓕ', 'f');
|
||||||
|
nstr = nstr.replace('ⓖ', 'g');
|
||||||
|
nstr = nstr.replace('ⓗ', 'h');
|
||||||
|
nstr = nstr.replace('ⓘ', 'i');
|
||||||
|
nstr = nstr.replace('ⓙ', 'j');
|
||||||
|
nstr = nstr.replace('ⓚ', 'k');
|
||||||
|
nstr = nstr.replace('ⓛ', 'l');
|
||||||
|
nstr = nstr.replace('ⓜ', 'm');
|
||||||
|
nstr = nstr.replace('ⓝ', 'n');
|
||||||
|
nstr = nstr.replace('ⓞ', 'o');
|
||||||
|
nstr = nstr.replace('ⓟ', 'p');
|
||||||
|
nstr = nstr.replace('ⓠ', 'q');
|
||||||
|
nstr = nstr.replace('ⓡ', 'r');
|
||||||
|
nstr = nstr.replace('ⓢ', 's');
|
||||||
|
nstr = nstr.replace('ⓣ', 't');
|
||||||
|
nstr = nstr.replace('ⓤ', 'u');
|
||||||
|
nstr = nstr.replace('ⓥ', 'v');
|
||||||
|
nstr = nstr.replace('ⓦ', 'w');
|
||||||
|
nstr = nstr.replace('ⓧ', 'x');
|
||||||
|
nstr = nstr.replace('ⓨ', 'y');
|
||||||
|
nstr = nstr.replace('ⓩ', 'z');
|
||||||
|
nstr = nstr.replace('Ⓐ', 'A');
|
||||||
|
nstr = nstr.replace('Ⓑ', 'B');
|
||||||
|
nstr = nstr.replace('Ⓒ', 'C');
|
||||||
|
nstr = nstr.replace('Ⓓ', 'D');
|
||||||
|
nstr = nstr.replace('Ⓔ', 'E');
|
||||||
|
nstr = nstr.replace('Ⓕ', 'F');
|
||||||
|
nstr = nstr.replace('Ⓖ', 'G');
|
||||||
|
nstr = nstr.replace('Ⓗ', 'H');
|
||||||
|
nstr = nstr.replace('Ⓘ', 'I');
|
||||||
|
nstr = nstr.replace('Ⓙ', 'J');
|
||||||
|
nstr = nstr.replace('Ⓚ', 'K');
|
||||||
|
nstr = nstr.replace('Ⓛ', 'L');
|
||||||
|
nstr = nstr.replace('Ⓜ', 'M');
|
||||||
|
nstr = nstr.replace('Ⓝ', 'N');
|
||||||
|
nstr = nstr.replace('Ⓞ', 'O');
|
||||||
|
nstr = nstr.replace('Ⓟ', 'P');
|
||||||
|
nstr = nstr.replace('Ⓠ', 'Q');
|
||||||
|
nstr = nstr.replace('Ⓡ', 'R');
|
||||||
|
nstr = nstr.replace('Ⓢ', 'S');
|
||||||
|
nstr = nstr.replace('Ⓣ', 'T');
|
||||||
|
nstr = nstr.replace('Ⓤ', 'U');
|
||||||
|
nstr = nstr.replace('Ⓥ', 'V');
|
||||||
|
nstr = nstr.replace('Ⓦ', 'W');
|
||||||
|
nstr = nstr.replace('Ⓧ', 'X');
|
||||||
|
nstr = nstr.replace('Ⓨ', 'Y');
|
||||||
|
nstr = nstr.replace('Ⓩ', 'Z');
|
||||||
|
nstr = nstr.replace('①', '1');
|
||||||
|
nstr = nstr.replace('②', '2');
|
||||||
|
nstr = nstr.replace('③', '3');
|
||||||
|
nstr = nstr.replace('④', '4');
|
||||||
|
nstr = nstr.replace('⑤', '5');
|
||||||
|
nstr = nstr.replace('⑥', '6');
|
||||||
|
nstr = nstr.replace('⑦', '7');
|
||||||
|
nstr = nstr.replace('⑧', '8');
|
||||||
|
nstr = nstr.replace('⑨', '9');
|
||||||
|
nstr = nstr.replace('⓪', '0');
|
||||||
|
return nstr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean isCode(String c) {
|
||||||
|
String code = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,k,l,m,n,o,r,w,x";
|
||||||
|
Boolean found = false;
|
||||||
|
String[] codes = code.split(",");
|
||||||
|
int size = codes.length;
|
||||||
|
for(int i = 0; i < size; i++) {
|
||||||
|
if(c.contains(codes[i])) {
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
package com.fpghoti.fpchatx.listener;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerKickEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class PlayerListener implements Listener {
|
||||||
|
|
||||||
|
private boolean enabled = true;
|
||||||
|
|
||||||
|
@EventHandler (priority = EventPriority.HIGH)
|
||||||
|
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
||||||
|
if(enabled) {
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player sender = event.getPlayer();
|
||||||
|
FPlayer p = FPlayer.getPlayer(sender);
|
||||||
|
if(p.toTalk() && p.getTalkChannel() != null) {
|
||||||
|
p.setTalk(false);
|
||||||
|
ChatChannel c = p.getTalkChannel();
|
||||||
|
p.setTalkChannel(null);
|
||||||
|
p.chat(c, event.getMessage());
|
||||||
|
}else {
|
||||||
|
p.chat(event.getMessage());
|
||||||
|
}
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler (priority = EventPriority.NORMAL)
|
||||||
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
|
if(enabled) {
|
||||||
|
try {
|
||||||
|
FPChat.getPlugin().getPlayerCache().saveUUID(event.getPlayer().getName(), event.getPlayer().getUniqueId());
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
FPlayer.getPlayer(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler (priority = EventPriority.NORMAL)
|
||||||
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
if(enabled) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(event.getPlayer());
|
||||||
|
p.cleanup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler (priority = EventPriority.NORMAL)
|
||||||
|
public void onPlayerKick(PlayerKickEvent event) {
|
||||||
|
if(enabled) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(event.getPlayer());
|
||||||
|
p.cleanup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void enable() {
|
||||||
|
this.enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disable() {
|
||||||
|
this.enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,233 @@
|
||||||
|
package com.fpghoti.fpchatx.mysql;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.config.MainConfig;
|
||||||
|
|
||||||
|
|
||||||
|
public class MySQLConnection{
|
||||||
|
|
||||||
|
private FPChat plugin;
|
||||||
|
private String host, user, password, database, port;
|
||||||
|
private MainConfig config;
|
||||||
|
|
||||||
|
public MySQLConnection(FPChat plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
config = plugin.getMainConfig();
|
||||||
|
host = config.getHost();
|
||||||
|
user = config.getUser();
|
||||||
|
password = config.getPassword();
|
||||||
|
database = config.getDatabase();
|
||||||
|
port = config.getPort();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Connection connection;
|
||||||
|
|
||||||
|
public Connection getConnection(){
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void generate() {
|
||||||
|
if(config.mySQLEnabled()){
|
||||||
|
plugin.log(Level.INFO, "Connecting to MySQL...");
|
||||||
|
connect();
|
||||||
|
if(!tableExists(config.getChatFeatureTable())){
|
||||||
|
plugin.log(Level.INFO, "FPChat table not found. Creating new table...");
|
||||||
|
//createTable(config.getChatFeatureTable(), "player_uuid VARCHAR (36), badge_slot1 INT (11), badge_slot2 INT (11), badge_slot3 INT (11)");
|
||||||
|
update("CREATE TABLE " + config.getChatFeatureTable() + " (player_uuid VARCHAR (36), badge_slot1 INT (11), badge_slot2 INT (11), badge_slot3 INT (11), PRIMARY KEY(player_uuid))");
|
||||||
|
plugin.log(Level.INFO, "FPChat table created!");
|
||||||
|
}
|
||||||
|
if(!tableExists(config.getPermSyncTable())){
|
||||||
|
//createTable(config.getPermSyncTable(), "player_uuid VARCHAR (36), badges TEXT");
|
||||||
|
update("CREATE TABLE " + config.getPermSyncTable() + " (player_uuid VARCHAR (36), badges TEXT, PRIMARY KEY(player_uuid))");
|
||||||
|
}
|
||||||
|
plugin.log(Level.INFO, "FPChat successfully connected to MySQL!");
|
||||||
|
plugin.log(Level.INFO, "Badges have been enabled!");
|
||||||
|
}else{
|
||||||
|
plugin.log(Level.INFO, "Continuing without MySQL.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connect(){
|
||||||
|
|
||||||
|
if (host.equalsIgnoreCase("") || host == null) {
|
||||||
|
plugin.log(Level.SEVERE, "You have not specified a host in the FPChatX config!");
|
||||||
|
} else if (user.equalsIgnoreCase("") || user == null) {
|
||||||
|
plugin.log(Level.SEVERE, "You have not specified a user in the FPChatX config!");
|
||||||
|
} else if (password.equalsIgnoreCase("") || password == null) {
|
||||||
|
plugin.log(Level.SEVERE, "You have not specified a password in the FPChatX config!");
|
||||||
|
} else if (database.equalsIgnoreCase("") || database == null) {
|
||||||
|
plugin.log(Level.SEVERE, "You have not specified a database in the FPChatX config!");
|
||||||
|
} else {
|
||||||
|
login();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect(){
|
||||||
|
try{
|
||||||
|
if (getConnection() != null){
|
||||||
|
connection.close();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
plugin.log(Level.SEVERE, "There was an issue with MySQL: FPChatX is not currently connected to a database.");
|
||||||
|
}
|
||||||
|
}catch(SQLException e){
|
||||||
|
plugin.log(Level.SEVERE, "There was an issue with MySQL: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
connection = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reconnect(){
|
||||||
|
disconnect();
|
||||||
|
connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void login(){
|
||||||
|
try{
|
||||||
|
if (getConnection() != null){
|
||||||
|
connection.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e){}
|
||||||
|
connection = null;
|
||||||
|
try{
|
||||||
|
connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, user, password);
|
||||||
|
}catch(SQLException e){
|
||||||
|
plugin.log(Level.SEVERE, "There was an issue with MySQL: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResultSet query(String query){
|
||||||
|
if (query == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
connect();
|
||||||
|
ResultSet results = null;
|
||||||
|
try{
|
||||||
|
Statement statement = getConnection().createStatement();
|
||||||
|
results = statement.executeQuery(query);
|
||||||
|
}catch(SQLException e){
|
||||||
|
plugin.log(Level.SEVERE, "There has been an error:" + e.getMessage());
|
||||||
|
plugin.log(Level.SEVERE,"Failed Query in MySQL using the following query input:");
|
||||||
|
plugin.log(Level.SEVERE, query);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(String input){
|
||||||
|
if (input == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
connect();
|
||||||
|
try{
|
||||||
|
Statement statement = getConnection().createStatement();
|
||||||
|
statement.executeUpdate(input);
|
||||||
|
statement.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
plugin.log(Level.SEVERE, "There has been an error:" + e.getMessage());
|
||||||
|
plugin.log(Level.SEVERE,"Failed to update MySQL using the following update input:");
|
||||||
|
plugin.log(Level.SEVERE, input);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean tableExists(String tablename){
|
||||||
|
if (tablename == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
if (getConnection() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getConnection().getMetaData() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ResultSet results = getConnection().getMetaData().getTables(null, null, tablename, null);
|
||||||
|
if (results.next()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}catch(SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean itemExists(String column, String data, String table){
|
||||||
|
if (data != null) {
|
||||||
|
data = "'" + data + "'";
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
ResultSet results = query("SELECT * FROM " + table + " WHERE " + column + "=" + data);
|
||||||
|
while (results.next()) {
|
||||||
|
if (results.getString(column) != null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(SQLException e) {
|
||||||
|
plugin.log(Level.SEVERE, "MYSQL itemExists error: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createTable(String table, String columns){
|
||||||
|
if (!tableExists(table)) {
|
||||||
|
update("CREATE TABLE " + table + " (" + columns + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void insertInto(final String columns, final String values, final String table){
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
update("INSERT INTO " + table + " (" + columns + ") VALUES (" + values + ")");
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void set(final String selected, final Object object, final String column, final String equality, final String data, final String table){
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Object gobject = object;
|
||||||
|
String gdata = data;
|
||||||
|
if (gobject != null) {
|
||||||
|
gobject = "'" + gobject + "'";
|
||||||
|
}
|
||||||
|
if (gdata != null) {
|
||||||
|
gdata = "'" + gdata + "'";
|
||||||
|
}
|
||||||
|
update("UPDATE " + table + " SET " + selected + "=" + gobject + " WHERE " + column + equality + gdata + ";");
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Object get(String selected, String column, String equality, String data, String table){
|
||||||
|
if (data != null) {
|
||||||
|
data = "'" + data + "'";
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
ResultSet rs = query("SELECT * FROM " + table + " WHERE " + column + equality + data);
|
||||||
|
if (rs.next()) {
|
||||||
|
return rs.getObject(selected);
|
||||||
|
}
|
||||||
|
}catch(SQLException e) {
|
||||||
|
plugin.log(Level.SEVERE, "MySQL get error: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,242 @@
|
||||||
|
package com.fpghoti.fpchatx.permission;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.player.FPlayer;
|
||||||
|
|
||||||
|
public class Permission {
|
||||||
|
|
||||||
|
public static String noPerm = "You lack the permission required to perform this action.";
|
||||||
|
|
||||||
|
public static boolean canUseColor(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.colorcodes");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canUseColor(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canUseColor(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canShoutColor(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.shoutcolor");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canShoutColor(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canShoutColor(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canPMColor(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.pmcolor");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canPMColor(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canPMColor(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canBubbleCode(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.bubblecode");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canBubbleCode(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canBubbleCode(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canSpy(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.spy");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canSpy(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canSpy(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isAdmin(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.admin");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isAdmin(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return isAdmin(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canBan(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.ban");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canMakeChannel(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.makechannel");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canMakeChannel(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canMakeChannel(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canMakeTempChannel(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.maketempchannel");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canMakeTempChannel(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canMakeTempChannel(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canAlertMakeChannel(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.alertmakechannel");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canAlertMakeChannel(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canAlertMakeChannel(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canIgnore(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.ignore");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canIgnore(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canIgnore(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isStaff(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.staff");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isStaff(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return isStaff(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canKick(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.kick");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canKick(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canKick(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canMute(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.mute");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canMute(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canMute(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canHush(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.hush");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canHush(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canHush(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canShout(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.shout");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canShout(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canShout(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canToggleShout(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.toggleshout");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canToggleShout(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canToggleShout(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean isDistinguished(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.distinguished");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isDistinguished(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return isDistinguished(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canDeleteChannel(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.deletechannel");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canDeleteChannel(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canDeleteChannel(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canPrivateMessage(FPlayer p) {
|
||||||
|
return p.hasPermission("fpchat.privatemessage");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean canPrivateMessage(String playername) {
|
||||||
|
if(FPlayer.getPlayer(playername) != null) {
|
||||||
|
FPlayer p = FPlayer.getPlayer(playername);
|
||||||
|
return canPrivateMessage(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,677 @@
|
||||||
|
package com.fpghoti.fpchatx.player;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeGetter;
|
||||||
|
import com.fpghoti.fpchatx.badge.BadgeSet;
|
||||||
|
import com.fpghoti.fpchatx.badge.SyncSet;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.ChatFilter;
|
||||||
|
import com.fpghoti.fpchatx.chat.PrepareChat;
|
||||||
|
import com.fpghoti.fpchatx.chat.StandardChannel;
|
||||||
|
import com.fpghoti.fpchatx.chat.TempChannel;
|
||||||
|
import com.fpghoti.fpchatx.config.PlayerFile;
|
||||||
|
import com.fpghoti.fpchatx.customcodes.BubbleCode;
|
||||||
|
import com.fpghoti.fpchatx.customcodes.Codify;
|
||||||
|
import com.fpghoti.fpchatx.permission.Permission;
|
||||||
|
import com.fpghoti.fpchatx.util.Util;
|
||||||
|
import com.fpghoti.fpchatx.util.VaultUtil;
|
||||||
|
|
||||||
|
public class FPlayer {
|
||||||
|
|
||||||
|
private static HashMap<UUID,FPlayer> players = new HashMap<UUID,FPlayer>();
|
||||||
|
|
||||||
|
public static void purge() {
|
||||||
|
players = new HashMap<UUID,FPlayer>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayList<FPlayer> getPlayers(){
|
||||||
|
ArrayList<FPlayer> temp = new ArrayList<FPlayer>(players.values());
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FPlayer getPlayer(OfflinePlayer p) {
|
||||||
|
return getPlayer(p,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Needed in order to run command using name when player offline. Most people can't remember UUIDs!!
|
||||||
|
public static FPlayer getOfflinePlayer(String name) {
|
||||||
|
return getPlayer(Bukkit.getOfflinePlayer(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void dualMsg(FPlayer p, String msg) { // Messages FPlayer. If FPlayer NULL msges CONSOLE instead
|
||||||
|
if(p == null) {
|
||||||
|
FPChat.getPlugin().log(Level.INFO, msg);
|
||||||
|
}else {
|
||||||
|
p.sendMessage(FPChat.logo() + ChatColor.YELLOW + " " + msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void goodMsg(FPlayer p, String msg) { // Messages FPlayer. If FPlayer NULL msges CONSOLE instead
|
||||||
|
if(p == null) {
|
||||||
|
FPChat.getPlugin().log(Level.INFO, msg);
|
||||||
|
}else {
|
||||||
|
p.sendMessage(FPChat.logo() + ChatColor.YELLOW + " " + msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void errMsg(FPlayer p, String msg) { // Messages FPlayer. If FPlayer NULL msges CONSOLE instead
|
||||||
|
if(p == null) {
|
||||||
|
FPChat.getPlugin().log(Level.INFO, "" + ChatColor.RED + msg);
|
||||||
|
}else {
|
||||||
|
p.sendMessage(FPChat.logo() + ChatColor.RED + " " + msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void plainMsg(FPlayer p, String msg) { // Messages FPlayer. If FPlayer NULL msges CONSOLE instead
|
||||||
|
if(p == null) {
|
||||||
|
FPChat.getPlugin().log(Level.INFO, msg);
|
||||||
|
}else {
|
||||||
|
p.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static FPlayer getPlayer(Player p) {
|
||||||
|
return getPlayer(Bukkit.getOfflinePlayer(p.getUniqueId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FPlayer getPlayer(String playername) {
|
||||||
|
return getPlayer(Util.getEP(playername));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FPlayer getPlayer(OfflinePlayer p, Boolean temp) {
|
||||||
|
UUID uuid = p.getUniqueId();
|
||||||
|
if(players.containsKey(uuid)) {
|
||||||
|
return players.get(uuid);
|
||||||
|
}else {
|
||||||
|
FPlayer fplayer = new FPlayer(p);
|
||||||
|
if(!temp) {
|
||||||
|
players.put(uuid, fplayer);
|
||||||
|
}
|
||||||
|
return fplayer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private UUID uuid;
|
||||||
|
private PlayerFile pfile;
|
||||||
|
private OfflinePlayer offlinePlayer;
|
||||||
|
private ArrayList<UUID> ignored;
|
||||||
|
private ArrayList<String> channels;
|
||||||
|
private ArrayList<String> tempchannels;
|
||||||
|
private boolean tempspeak;
|
||||||
|
private String primaryChannel;
|
||||||
|
private String primaryTempChannel;
|
||||||
|
private int shoutCooldown;
|
||||||
|
private Integer[] badges;
|
||||||
|
private UUID lastMsg;
|
||||||
|
private boolean spy;
|
||||||
|
private boolean shoutVisible;
|
||||||
|
private boolean hushed;
|
||||||
|
private ArrayList<Integer> synced;
|
||||||
|
private boolean toShout;
|
||||||
|
private boolean toTalk;
|
||||||
|
private ChatChannel talkChannel;
|
||||||
|
private ArrayList<Integer> giveBadgeQueue;
|
||||||
|
|
||||||
|
private FPlayer(OfflinePlayer p) {
|
||||||
|
this.toShout = false;
|
||||||
|
this.toTalk = false;
|
||||||
|
this.talkChannel = null;
|
||||||
|
this.synced = new ArrayList<Integer>();
|
||||||
|
this.offlinePlayer = p;
|
||||||
|
this.name = p.getName();
|
||||||
|
this.uuid = p.getUniqueId();
|
||||||
|
this.pfile = new PlayerFile(FPChat.getPlugin(),p);
|
||||||
|
this.ignored = new ArrayList<UUID>();
|
||||||
|
this.shoutCooldown = 0;
|
||||||
|
this.lastMsg = null;
|
||||||
|
this.spy = pfile.isSpy();
|
||||||
|
this.shoutVisible = pfile.shoutVisible();
|
||||||
|
this.hushed = pfile.isHushed();
|
||||||
|
this.giveBadgeQueue = new ArrayList<Integer>();
|
||||||
|
String rawignore = pfile.getIgnore();
|
||||||
|
if(!rawignore.equals("")) {
|
||||||
|
for(String s : rawignore.split(",")) {
|
||||||
|
ignored.add(UUID.fromString(s));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String rawchannel = pfile.getCurrentChannel();
|
||||||
|
if(rawchannel.equals("default")) {
|
||||||
|
this.primaryChannel = ChatChannel.getDefault().getName();
|
||||||
|
}else if(ChatChannel.getChannel(rawchannel) != null) {
|
||||||
|
this.primaryChannel = rawchannel;
|
||||||
|
}else {
|
||||||
|
this.primaryChannel = ChatChannel.getDefault().getName();
|
||||||
|
}
|
||||||
|
this.channels = new ArrayList<String>();
|
||||||
|
this.tempchannels = new ArrayList<String>();
|
||||||
|
channels.add(ChatChannel.getDefault().getName());
|
||||||
|
channels.add(primaryChannel);
|
||||||
|
String rawchannels = pfile.getChannels();
|
||||||
|
if(!rawchannels.equals("")) {
|
||||||
|
for(String s : rawchannels.split(",")) {
|
||||||
|
ChatChannel chan = ChatChannel.getChannel(s);
|
||||||
|
if(chan != null && !chan.getName().equals(ChatChannel.getDefault().getName()) && !chan.getName().equals(primaryChannel)) {
|
||||||
|
this.channels.add(chan.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(FPChat.getPlugin().getMainConfig().mySQLEnabled()) {
|
||||||
|
Util.connect();
|
||||||
|
SyncSet.update(this);
|
||||||
|
this.badges = BadgeGetter.getBadges(this);
|
||||||
|
}else {
|
||||||
|
Integer[] empt = {0,0,0};
|
||||||
|
this.badges = empt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean equals(FPlayer p) {
|
||||||
|
return this.uuid == p.getUniqueId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateBadges(int slot, int id) {
|
||||||
|
badges[slot-1] = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearUnownedBadges() {
|
||||||
|
if(!BadgeGetter.hasBadge(this, badges[0])) {
|
||||||
|
BadgeSet.setBadge(this, 1, 0);
|
||||||
|
updateBadges(1,0);
|
||||||
|
}
|
||||||
|
if(!BadgeGetter.hasBadge(this, badges[1])) {
|
||||||
|
BadgeSet.setBadge(this, 2, 0);
|
||||||
|
updateBadges(2,0);
|
||||||
|
}
|
||||||
|
if(!BadgeGetter.hasBadge(this, badges[2])) {
|
||||||
|
BadgeSet.setBadge(this, 3, 0);
|
||||||
|
updateBadges(3,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addSyncedBadge(Integer id) {
|
||||||
|
if(!synced.contains(id)) {
|
||||||
|
this.synced.add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeSyncedBadge(Integer id) {
|
||||||
|
this.synced.remove(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSynced(Integer id) {
|
||||||
|
return this.synced.contains(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Integer> syncedList(){
|
||||||
|
return this.synced;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getShoutCooldown() {
|
||||||
|
return this.shoutCooldown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShoutCooldown(int time) {
|
||||||
|
this.shoutCooldown = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UUID getUniqueId() {
|
||||||
|
return this.uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerFile getFile() {
|
||||||
|
return this.pfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isOnline() {
|
||||||
|
return offlinePlayer.isOnline();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSpy() {
|
||||||
|
return this.spy && Permission.canSpy(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean enableSpy() {
|
||||||
|
if(Permission.canSpy(this)) {
|
||||||
|
this.spy = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disableSpy() {
|
||||||
|
this.spy = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isShoutVisible() {
|
||||||
|
return this.shoutVisible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showShout() {
|
||||||
|
this.shoutVisible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideShout() {
|
||||||
|
this.shoutVisible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHushed() {
|
||||||
|
return this.hushed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hush() {
|
||||||
|
this.hushed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unhush() {
|
||||||
|
this.hushed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer[] getBadges() {
|
||||||
|
return this.badges;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FPlayer getLastMessage() {
|
||||||
|
if(this.lastMsg == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if(Bukkit.getOfflinePlayer(this.lastMsg).isOnline()) {
|
||||||
|
return FPlayer.getPlayer(Bukkit.getPlayer(this.lastMsg));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasPermission(String permission) {
|
||||||
|
if(isOnline()) {
|
||||||
|
Player p = offlinePlayer.getPlayer();
|
||||||
|
return VaultUtil.permission.playerHas(p, permission);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrimaryChannel(String channel) {
|
||||||
|
this.primaryChannel = channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatChannel getPrimaryChannel() {
|
||||||
|
ChatChannel c = ChatChannel.getChannel(this.primaryChannel);
|
||||||
|
if(c != null) {
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
c = ChatChannel.getDefault();
|
||||||
|
this.primaryChannel = c.getName();
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrimaryTempChannel(String channel) {
|
||||||
|
this.primaryTempChannel = channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatChannel getPrimaryTempChannel() {
|
||||||
|
ChatChannel c = ChatChannel.getTempChannel(this.primaryTempChannel);
|
||||||
|
if(c != null) {
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
this.tempspeak = false;
|
||||||
|
return getPrimaryChannel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean speakingInTemp() {
|
||||||
|
return this.tempspeak;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void speakInTemp() {
|
||||||
|
this.tempspeak = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopTempSpeak() {
|
||||||
|
this.tempspeak = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getChannels(){
|
||||||
|
return this.channels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getTempChannels(){
|
||||||
|
return this.tempchannels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendMessage(String message) {
|
||||||
|
if(isOnline()) {
|
||||||
|
Player p = Bukkit.getPlayer(uuid);
|
||||||
|
p.sendMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer() {
|
||||||
|
if(isOnline()) {
|
||||||
|
return Util.getEP(name);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean joinChannel(String channel) {
|
||||||
|
ChatChannel cc = ChatChannel.getChannel(channel);
|
||||||
|
if(cc == null) {
|
||||||
|
cc = ChatChannel.getTempChannel(channel);
|
||||||
|
}
|
||||||
|
if(cc == null) {
|
||||||
|
joinStandardChannel(ChatChannel.getDefault().getName());
|
||||||
|
FPlayer.errMsg(this, "You tried to join a channel that no longer exists. You have been placed in the default channel instead.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(cc.isBanned(this)) {
|
||||||
|
FPlayer.errMsg(this, "Unable to join. You are blacklisted from this channel.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(cc instanceof StandardChannel) {
|
||||||
|
return joinStandardChannel(cc.getName());
|
||||||
|
}else if(cc instanceof TempChannel) {
|
||||||
|
return joinTempChannel(cc.getName());
|
||||||
|
}
|
||||||
|
FPlayer.errMsg(this, "An error has occurred. Unable to join channel.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean joinStandardChannel(String channel) {
|
||||||
|
ChatChannel cc = ChatChannel.getChannel(channel);
|
||||||
|
if(cc == null || !(cc instanceof StandardChannel)) {
|
||||||
|
joinStandardChannel(ChatChannel.getDefault().getName());
|
||||||
|
FPlayer.errMsg(this, "You tried to join a channel that no longer exists. You have been placed in the default channel instead.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
StandardChannel c = (StandardChannel)cc;
|
||||||
|
if(!c.whitelistEnabled() || c.isWhitelisted(this)) {
|
||||||
|
channels.add(channel);
|
||||||
|
FPlayer.goodMsg(this, "You have joined channel " + ChatColor.YELLOW + cc.getName() + ChatColor.GREEN + ".");
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(this, "Unable to join. Channel is whitelisted.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void leaveChannel(String channel) {
|
||||||
|
if(ChatChannel.getDefault().getName().equalsIgnoreCase(channel)) {
|
||||||
|
FPlayer.errMsg(this, "You cannot leave the default channel.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(getPrimaryChannel().getName().equalsIgnoreCase(channel)) {
|
||||||
|
setPrimaryChannel(ChatChannel.getDefault().getName());
|
||||||
|
}
|
||||||
|
channels.remove(channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean joinTempChannel(String channel) {
|
||||||
|
ChatChannel cc = ChatChannel.getTempChannel(channel);
|
||||||
|
if(cc == null || !(cc instanceof TempChannel)) {
|
||||||
|
joinStandardChannel(ChatChannel.getDefault().getName());
|
||||||
|
FPlayer.errMsg(this, "You tried to join a channel that no longer exists. You have been placed in the default channel instead.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
TempChannel c = (TempChannel)cc;
|
||||||
|
if(!c.whitelistEnabled() || c.isWhitelisted(this)) {
|
||||||
|
tempchannels.add(channel);
|
||||||
|
FPlayer.goodMsg(this, "You have joined temporary channel " + ChatColor.YELLOW + cc.getName() + ChatColor.GREEN + ".");
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(this, "Unable to join. Channel is whitelisted.");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canJoin(ChatChannel channel) {
|
||||||
|
if(channel.isBanned(this)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(channel.whitelistEnabled() && !channel.isWhitelisted(this)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void leaveTempChannel(String channel) {
|
||||||
|
if(getPrimaryTempChannel().getName().equalsIgnoreCase(channel)) {
|
||||||
|
stopTempSpeak();
|
||||||
|
this.primaryTempChannel = null;
|
||||||
|
}
|
||||||
|
tempchannels.remove(channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String formatChat(String msg) {
|
||||||
|
if(tempspeak) {
|
||||||
|
return formatChat(getPrimaryTempChannel(),msg);
|
||||||
|
}
|
||||||
|
return formatChat(getPrimaryChannel(), msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String formatChat(ChatChannel channel, String msg) {
|
||||||
|
return channel.format(this, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void chat(ChatChannel channel, String msg) {
|
||||||
|
channel.sendMessage(formatChat(channel,msg), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void chat(String msg) {
|
||||||
|
if(toShout) {
|
||||||
|
toShout = false;
|
||||||
|
ChatChannel.getShout().sendMessage(formatChat(ChatChannel.getShout(),msg), this);
|
||||||
|
if(FPChat.getPlugin().getMainConfig().shoutCooldownEnabled()) {
|
||||||
|
shoutCooldown = FPChat.getPlugin().getMainConfig().getShoutSeconds();
|
||||||
|
}
|
||||||
|
}else if(tempspeak) {
|
||||||
|
getPrimaryTempChannel().sendMessage(formatChat(getPrimaryTempChannel(),msg), this);
|
||||||
|
}else {
|
||||||
|
getPrimaryChannel().sendMessage(formatChat(msg), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean shout(String message) {
|
||||||
|
if(!hushed && FPChat.getPlugin().getMainConfig().shoutCooldownEnabled() && shoutCooldown > 0) {
|
||||||
|
int i = shoutCooldown;
|
||||||
|
String time = " seconds ";
|
||||||
|
if(i == 1) {
|
||||||
|
time = " second ";
|
||||||
|
}
|
||||||
|
FPlayer.errMsg(this, "You must wait " + Integer.toString(i) + time + "before you can shout again.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hushed) {
|
||||||
|
FPlayer.errMsg(this, "You are hushed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isOnline() && (shoutCooldown == 0 || !FPChat.getPlugin().getMainConfig().shoutCooldownEnabled() ) && !isHushed()) {
|
||||||
|
if(Permission.canShout(this)) {
|
||||||
|
Player p = Bukkit.getPlayer(uuid);
|
||||||
|
toShout = true;
|
||||||
|
AsyncPlayerChatEvent event = new AsyncPlayerChatEvent(false, p, message, new HashSet<Player>(Bukkit.getOnlinePlayers()));
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
FPlayer.errMsg(this, Permission.noPerm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean ignore(FPlayer p) {
|
||||||
|
if(Permission.isAdmin(p) || Permission.isStaff(p)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ignored.add(p.getUniqueId());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unignore(FPlayer p) {
|
||||||
|
ignored.remove(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<UUID> getIgnored(){
|
||||||
|
return ignored;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isIgnoring(FPlayer p) {
|
||||||
|
if(Permission.isAdmin(p) || Permission.isStaff(p)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return this.ignored.contains(p.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean reply(String msg) {
|
||||||
|
if(getLastMessage() == null) {
|
||||||
|
sendMessage(FPChat.logo() + ChatColor.RED + "There is nobody currently online who you can reply to.");
|
||||||
|
return false;
|
||||||
|
}else {
|
||||||
|
FPlayer p = getLastMessage();
|
||||||
|
return sendPM(p,msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean toTalk() {
|
||||||
|
return this.toTalk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTalk(boolean b) {
|
||||||
|
toTalk = b;
|
||||||
|
}
|
||||||
|
public ChatChannel getTalkChannel() {
|
||||||
|
return this.talkChannel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTalkChannel(ChatChannel c) {
|
||||||
|
talkChannel = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean receivePM(FPlayer from, String msg) {
|
||||||
|
if(!from.isIgnoring(this)) {
|
||||||
|
String finalMessage = "";
|
||||||
|
String stf = "";
|
||||||
|
if (Permission.canPMColor(from)) {
|
||||||
|
msg = msg.replaceAll("&([0-9a-fk-or])", "§$1");
|
||||||
|
} else {
|
||||||
|
msg = msg.replaceAll("§[0-9a-fk-or]", "");
|
||||||
|
}
|
||||||
|
String header = PrepareChat.swapPlaceholders(from, this.getName(), msg, true);
|
||||||
|
if(Permission.isStaff(from)){
|
||||||
|
stf = FPChat.getPlugin().getMainConfig().getStaffBadge();
|
||||||
|
}
|
||||||
|
String filler = "";
|
||||||
|
if(FPChat.getPlugin().getMainConfig().chatFilterEnabled()){
|
||||||
|
filler = "word ";
|
||||||
|
}
|
||||||
|
if(Permission.canPMColor(from)){
|
||||||
|
String last = ChatFilter.filter(filler + msg);
|
||||||
|
last = BubbleCode.bubblecode(Permission.canBubbleCode(from), Codify.changeFormatSign(last));
|
||||||
|
finalMessage = stf + header + last;
|
||||||
|
}else{
|
||||||
|
String newmsg = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('§', ChatFilter.filter(filler + msg)));
|
||||||
|
finalMessage = stf + Codify.removeBubbles(header + newmsg);
|
||||||
|
}
|
||||||
|
sendMessage(finalMessage);
|
||||||
|
lastMsg = from.getUniqueId();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean sendPM(FPlayer to, String msg) {
|
||||||
|
boolean received = to.receivePM(this, msg);
|
||||||
|
if(to.isOnline() && received) {
|
||||||
|
String finalMessage = "";
|
||||||
|
String stf = "";
|
||||||
|
if (Permission.canPMColor(this)) {
|
||||||
|
msg = msg.replaceAll("&([0-9a-fk-or])", "§$1");
|
||||||
|
} else {
|
||||||
|
msg = msg.replaceAll("§[0-9a-fk-or]", "");
|
||||||
|
}
|
||||||
|
String header = PrepareChat.swapPlaceholders(this, to.getName(), msg, false);
|
||||||
|
if(Permission.isStaff(this)){
|
||||||
|
stf = FPChat.getPlugin().getMainConfig().getStaffBadge();
|
||||||
|
}
|
||||||
|
String filler = "";
|
||||||
|
if(FPChat.getPlugin().getMainConfig().chatFilterEnabled()){
|
||||||
|
filler = "word ";
|
||||||
|
}
|
||||||
|
if(Permission.canPMColor(this)){
|
||||||
|
String last = ChatFilter.filter(filler + msg);
|
||||||
|
last = BubbleCode.bubblecode(Permission.canBubbleCode(this), Codify.changeFormatSign(last));
|
||||||
|
finalMessage = stf + header + last;
|
||||||
|
}else{
|
||||||
|
String newmsg = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('§', ChatFilter.filter(filler + msg)));
|
||||||
|
finalMessage = stf + Codify.removeBubbles(header + newmsg);
|
||||||
|
}
|
||||||
|
lastMsg = to.getUniqueId();
|
||||||
|
sendMessage(finalMessage);
|
||||||
|
if(!Permission.isAdmin(this)) {
|
||||||
|
for(FPlayer p: FPlayer.getPlayers()){
|
||||||
|
if(p.isSpy()){
|
||||||
|
p.sendMessage(ChatColor.DARK_GRAY + name + " --> " + to.getName() + ": " + msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
sendMessage(FPChat.logo() + ChatColor.RED + "The person you are trying to send a message to is either offline or ignoring you.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void queueBadgeAdd(int id) {
|
||||||
|
if(!BadgeGetter.hasBadge(this, id) && !giveBadgeQueue.contains(id)) {
|
||||||
|
giveBadgeQueue.add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unqueueBadge(Integer id) {
|
||||||
|
giveBadgeQueue.remove(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Integer> getBadgeQueue(){
|
||||||
|
return this.giveBadgeQueue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cleanup() {
|
||||||
|
String ignorelist = "";
|
||||||
|
for(UUID id : ignored) {
|
||||||
|
ignorelist = id.toString() + ",";
|
||||||
|
}
|
||||||
|
ignorelist = Util.stripLast(ignorelist);
|
||||||
|
String chanlist = "";
|
||||||
|
for(String c : channels) {
|
||||||
|
if(chanlist.equals("") || !Util.contains(Util.stripLast(chanlist).split(","), c)) {
|
||||||
|
chanlist = chanlist + c + ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chanlist = Util.stripLast(chanlist);
|
||||||
|
try {
|
||||||
|
pfile.saveIgnore(ignorelist);
|
||||||
|
pfile.saveChannels(chanlist);
|
||||||
|
pfile.saveCurrentChannel(getPrimaryChannel().getName());
|
||||||
|
pfile.saveSpy(spy);
|
||||||
|
pfile.saveHushed(hushed);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
players.remove(this.uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package com.fpghoti.fpchatx.util;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
|
||||||
|
public class Util {
|
||||||
|
|
||||||
|
public static void connect(){
|
||||||
|
if(FPChat.getPlugin().getMySQLConnection().getConnection() == null){
|
||||||
|
FPChat.getPlugin().getMySQLConnection().reconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player playerGet(String uuid){
|
||||||
|
UUID id = UUID.fromString(uuid);
|
||||||
|
Player p = Bukkit.getPlayer(id);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String fixCodes(String s){
|
||||||
|
return s.replaceAll("&", "§");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Player getEP(String playername){
|
||||||
|
Player p = null;
|
||||||
|
for(Player item : Bukkit.getOnlinePlayers()){
|
||||||
|
if(playername.equalsIgnoreCase(item.getName())){
|
||||||
|
p = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isDigit(String s){
|
||||||
|
return s.matches("[0-9]+");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String stripLast(String s) {
|
||||||
|
if (s.length() != 0) {
|
||||||
|
s = s.substring(0, s.length()-1);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean contains(String[] list, String s) {
|
||||||
|
Boolean check = false;
|
||||||
|
for(String item: list){
|
||||||
|
if(item.equals(s)){
|
||||||
|
check = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package com.fpghoti.fpchatx.util;
|
||||||
|
|
||||||
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
|
||||||
|
import com.fpghoti.fpchatx.FPChat;
|
||||||
|
|
||||||
|
import net.milkbowl.vault.chat.Chat;
|
||||||
|
import net.milkbowl.vault.economy.Economy;
|
||||||
|
import net.milkbowl.vault.permission.Permission;
|
||||||
|
|
||||||
|
public class VaultUtil {
|
||||||
|
|
||||||
|
public static Permission permission = null;
|
||||||
|
public static Economy economy = null;
|
||||||
|
public static Chat chat = null;
|
||||||
|
private FPChat plugin;
|
||||||
|
|
||||||
|
public VaultUtil(FPChat plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setupPermissions(){
|
||||||
|
RegisteredServiceProvider<Permission> permissionProvider = plugin.getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
|
||||||
|
if (permissionProvider != null) {
|
||||||
|
permission = permissionProvider.getProvider();
|
||||||
|
}
|
||||||
|
return (permission != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setupChat(){
|
||||||
|
RegisteredServiceProvider<Chat> chatProvider = plugin.getServer().getServicesManager().getRegistration(net.milkbowl.vault.chat.Chat.class);
|
||||||
|
if (chatProvider != null) {
|
||||||
|
chat = chatProvider.getProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (chat != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setupEconomy(){
|
||||||
|
RegisteredServiceProvider<Economy> economyProvider = plugin.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
|
||||||
|
if (economyProvider != null) {
|
||||||
|
economy = economyProvider.getProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (economy != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Chat getChat() {
|
||||||
|
return chat;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
name: FPChatX
|
||||||
|
version: ${project.version}
|
||||||
|
main: com.fpghoti.fpchatx.FPChat
|
||||||
|
description: Chat plugin for 1.12+
|
||||||
|
depend: [Vault]
|
||||||
|
softdepend: [PlaceholderAPI]
|
||||||
|
commands:
|
||||||
|
fpc:
|
||||||
|
aliases: [fpchat,ch]
|
||||||
|
description: Main FPChat command
|
||||||
|
usage: Wrong usage. For help, type /<command> help
|
||||||
|
shout:
|
||||||
|
aliases: [fyell, fshout, yell, y]
|
||||||
|
description: Send a global message to all players
|
||||||
|
usage: /shout message
|
||||||
|
spy:
|
||||||
|
description: Enables listening in on private messages
|
||||||
|
usage: /spy <on/off>
|
||||||
|
hush:
|
||||||
|
description: Disables a user's shout and tempchannel abilities
|
||||||
|
usage: /<command> player
|
||||||
|
unhush:
|
||||||
|
description: Re-enables a user's shout and tempchannel abilities
|
||||||
|
usage: /<command> player
|
||||||
|
badgelist:
|
||||||
|
aliases: [badges]
|
||||||
|
description: Pulls up a list of badges you own
|
||||||
|
usage: /<command> page#
|
||||||
|
badgeequip:
|
||||||
|
aliases: [equip]
|
||||||
|
description: equips a badge
|
||||||
|
usage: /<command> slot# badge#
|
||||||
|
badgeclear:
|
||||||
|
aliases: [badgesclear]
|
||||||
|
description: unequips all badges
|
||||||
|
usage: /<command>
|
||||||
|
msg:
|
||||||
|
aliases: [tell]
|
||||||
|
description: Starts or ends a private conversation
|
||||||
|
usage: /<command> player message
|
||||||
|
reply:
|
||||||
|
aliases: [r]
|
||||||
|
description: Replies to a private conversation
|
||||||
|
usage: /<command> message
|
||||||
|
ignore:
|
||||||
|
description: Ignores a player
|
||||||
|
usage: /<command> player
|
||||||
|
unignore:
|
||||||
|
description: Unignores a player.
|
||||||
|
usage: /<command> player
|
||||||
|
ignorelist:
|
||||||
|
description: Shows ignorelist
|
||||||
|
usage: /<command>
|
||||||
|
revokebadge:
|
||||||
|
description: Deletes synced badge in MySQL.
|
||||||
|
usage: /<command> player badge#
|
||||||
|
givebadge:
|
||||||
|
description: Grants player a badge.
|
||||||
|
usage: /<command> player badge#
|
||||||
|
shouttoggle:
|
||||||
|
aliases: [frankoffshout]
|
||||||
|
description: Toggles ability to see shout.
|
||||||
|
usage: /<command> player badge#
|
||||||
|
tempchat:
|
||||||
|
aliases: [tc]
|
||||||
|
description: Tempchat main command.
|
||||||
|
usage: /<command>
|
||||||
|
talk:
|
||||||
|
aliases: [tk]
|
||||||
|
description: Set main channel
|
||||||
|
usage: /<command> channel
|
||||||
|
|
Loading…
Reference in New Issue