Initial commit
commit
79c4c9c4a2
|
@ -0,0 +1,38 @@
|
||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
|
group = pluginGroup
|
||||||
|
version = 1.1
|
||||||
|
|
||||||
|
sourceCompatibility = 1.8
|
||||||
|
targetCompatibility = 1.8
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven {
|
||||||
|
name = 'spigotmc-repo'
|
||||||
|
url = 'https://hub.spigotmc.org/nexus/content/groups/public/'
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
name = 'sonatype'
|
||||||
|
url = 'https://oss.sonatype.org/content/groups/public/'
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
name = 'nexus-hc'
|
||||||
|
url = 'http://nexus.hc.to/content/repositories/pub_releases'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||||
|
compile 'org.spigotmc:spigot-api:1.8.8-R0.1-SNAPSHOT'
|
||||||
|
compile 'net.milkbowl.vault:VaultAPI:1.6'
|
||||||
|
compile group: 'org.xerial', name: 'sqlite-jdbc', version: '3.23.1'
|
||||||
|
}
|
||||||
|
|
||||||
|
import org.apache.tools.ant.filters.ReplaceTokens
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
from(sourceSets.main.resources.srcDirs) {
|
||||||
|
filter ReplaceTokens, tokens: [version: version]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
pluginGroup=com.tidefactions
|
||||||
|
pluginVersion=1.0-SNAPSHOT
|
|
@ -0,0 +1,172 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
##
|
||||||
|
## Gradle start up script for UN*X
|
||||||
|
##
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
PRG="$0"
|
||||||
|
# Need this for relative symlinks.
|
||||||
|
while [ -h "$PRG" ] ; do
|
||||||
|
ls=`ls -ld "$PRG"`
|
||||||
|
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||||
|
if expr "$link" : '/.*' > /dev/null; then
|
||||||
|
PRG="$link"
|
||||||
|
else
|
||||||
|
PRG=`dirname "$PRG"`"/$link"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
SAVED="`pwd`"
|
||||||
|
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||||
|
APP_HOME="`pwd -P`"
|
||||||
|
cd "$SAVED" >/dev/null
|
||||||
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
|
APP_BASE_NAME=`basename "$0"`
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS=""
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD="maximum"
|
||||||
|
|
||||||
|
warn ( ) {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
die ( ) {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN* )
|
||||||
|
cygwin=true
|
||||||
|
;;
|
||||||
|
Darwin* )
|
||||||
|
darwin=true
|
||||||
|
;;
|
||||||
|
MINGW* )
|
||||||
|
msys=true
|
||||||
|
;;
|
||||||
|
NONSTOP* )
|
||||||
|
nonstop=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||||
|
else
|
||||||
|
JAVACMD="$JAVA_HOME/bin/java"
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD="java"
|
||||||
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||||
|
MAX_FD_LIMIT=`ulimit -H -n`
|
||||||
|
if [ $? -eq 0 ] ; then
|
||||||
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||||
|
MAX_FD="$MAX_FD_LIMIT"
|
||||||
|
fi
|
||||||
|
ulimit -n $MAX_FD
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Darwin, add options to specify how the application appears in the dock
|
||||||
|
if $darwin; then
|
||||||
|
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For Cygwin, switch paths to Windows format before running java
|
||||||
|
if $cygwin ; then
|
||||||
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||||
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||||
|
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||||
|
|
||||||
|
# We build the pattern for arguments to be converted via cygpath
|
||||||
|
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||||
|
SEP=""
|
||||||
|
for dir in $ROOTDIRSRAW ; do
|
||||||
|
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||||
|
SEP="|"
|
||||||
|
done
|
||||||
|
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||||
|
# Add a user-defined pattern to the cygpath arguments
|
||||||
|
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||||
|
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||||
|
fi
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
i=0
|
||||||
|
for arg in "$@" ; do
|
||||||
|
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||||
|
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||||
|
|
||||||
|
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||||
|
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||||
|
else
|
||||||
|
eval `echo args$i`="\"$arg\""
|
||||||
|
fi
|
||||||
|
i=$((i+1))
|
||||||
|
done
|
||||||
|
case $i in
|
||||||
|
(0) set -- ;;
|
||||||
|
(1) set -- "$args0" ;;
|
||||||
|
(2) set -- "$args0" "$args1" ;;
|
||||||
|
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||||
|
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||||
|
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||||
|
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||||
|
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||||
|
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||||
|
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Escape application args
|
||||||
|
save ( ) {
|
||||||
|
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||||
|
echo " "
|
||||||
|
}
|
||||||
|
APP_ARGS=$(save "$@")
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||||
|
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||||
|
|
||||||
|
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||||
|
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
|
@ -0,0 +1,84 @@
|
||||||
|
@if "%DEBUG%" == "" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS=
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if "%ERRORLEVEL%" == "0" goto init
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto init
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
|
echo.
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
echo location of your Java installation.
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:init
|
||||||
|
@rem Get command-line arguments, handling Windows variants
|
||||||
|
|
||||||
|
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||||
|
|
||||||
|
:win9xME_args
|
||||||
|
@rem Slurp the command line arguments.
|
||||||
|
set CMD_LINE_ARGS=
|
||||||
|
set _SKIP=2
|
||||||
|
|
||||||
|
:win9xME_args_slurp
|
||||||
|
if "x%~1" == "x" goto execute
|
||||||
|
|
||||||
|
set CMD_LINE_ARGS=%*
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.tidefactions.chat.Commands;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Messages;
|
||||||
|
import com.tidefactions.chat.Types.ChatMode;
|
||||||
|
import com.tidefactions.chat.Utils.ChatUtils;
|
||||||
|
import net.milkbowl.vault.chat.Chat;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class CommandAdminChat implements CommandExecutor {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
|
||||||
|
if (sender.hasPermission(ChatMode.ADMIN.getPermission())) {
|
||||||
|
if (args.length >= 1) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
ChatUtils.sendMessageInChannel(
|
||||||
|
((Player) sender),
|
||||||
|
ChatMode.ADMIN,
|
||||||
|
StringUtils.join(args, " "),
|
||||||
|
"Command");
|
||||||
|
} else {
|
||||||
|
ChatUtils.sendMessageInChannelAsConsole(
|
||||||
|
ChatMode.ADMIN,
|
||||||
|
StringUtils.join(args, " "),
|
||||||
|
"Command");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
if (ChatUtils.getChatMode(((Player) sender)) == ChatMode.ADMIN) {
|
||||||
|
ChatUtils.setChatMode(((Player) sender), ChatMode.PUBLIC);
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.AC_TOGGLE_OFF);
|
||||||
|
} else {
|
||||||
|
ChatUtils.setChatMode(((Player) sender), ChatMode.ADMIN);
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.AC_TOGGLE_ON);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.AC_CONSOLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.NO_PERMISSION);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.tidefactions.chat.Commands;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Messages;
|
||||||
|
import com.tidefactions.chat.Types.ChatMode;
|
||||||
|
import com.tidefactions.chat.Utils.ChatUtils;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class CommandBuilderChat implements CommandExecutor {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
|
||||||
|
if (sender.hasPermission(ChatMode.BUILDER.getPermission())) {
|
||||||
|
if (args.length >= 1) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
ChatUtils.sendMessageInChannel(
|
||||||
|
((Player) sender),
|
||||||
|
ChatMode.BUILDER,
|
||||||
|
StringUtils.join(args, " "),
|
||||||
|
"Command");
|
||||||
|
} else {
|
||||||
|
ChatUtils.sendMessageInChannelAsConsole(
|
||||||
|
ChatMode.BUILDER,
|
||||||
|
StringUtils.join(args, " "),
|
||||||
|
"Command");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
if (ChatUtils.getChatMode(((Player) sender)) == ChatMode.BUILDER) {
|
||||||
|
ChatUtils.setChatMode(((Player) sender), ChatMode.PUBLIC);
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.BC_TOGGLE_OFF);
|
||||||
|
} else {
|
||||||
|
ChatUtils.setChatMode(((Player) sender), ChatMode.BUILDER);
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.BC_TOGGLE_ON);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.BC_CONSOLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.NO_PERMISSION);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.tidefactions.chat.Commands;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.GUI.PrefixGui;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class CommandPrefix implements CommandExecutor {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
|
||||||
|
if (sender instanceof Player)
|
||||||
|
new PrefixGui().open(((Player) sender));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.tidefactions.chat.Commands;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Messages;
|
||||||
|
import com.tidefactions.chat.Types.ChatMode;
|
||||||
|
import com.tidefactions.chat.Utils.ChatUtils;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class CommandStaffChat implements CommandExecutor {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
|
||||||
|
if (sender.hasPermission(ChatMode.STAFF.getPermission())) {
|
||||||
|
if (args.length >= 1) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
ChatUtils.sendMessageInChannel(
|
||||||
|
((Player) sender),
|
||||||
|
ChatMode.STAFF,
|
||||||
|
StringUtils.join(args, " "),
|
||||||
|
"Command");
|
||||||
|
} else {
|
||||||
|
ChatUtils.sendMessageInChannelAsConsole(
|
||||||
|
ChatMode.STAFF,
|
||||||
|
StringUtils.join(args, " "),
|
||||||
|
"Command");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
if (ChatUtils.getChatMode(((Player) sender)) == ChatMode.STAFF) {
|
||||||
|
ChatUtils.setChatMode(((Player) sender), ChatMode.PUBLIC);
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.SC_TOGGLE_OFF);
|
||||||
|
} else {
|
||||||
|
ChatUtils.setChatMode(((Player) sender), ChatMode.STAFF);
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.SC_TOGGLE_ON);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.SC_CONSOLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(Messages.PREFIX + Messages.NO_PERMISSION);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.tidefactions.chat;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import static com.tidefactions.chat.Main.colorCodes;
|
||||||
|
|
||||||
|
public class Config {
|
||||||
|
// Chat formats
|
||||||
|
public static String GLOBAL_CHAT_FORMAT;
|
||||||
|
public static String STAFF_CHAT_FORMAT;
|
||||||
|
public static String ADMIN_CHAT_FORMAT;
|
||||||
|
public static String BUILDER_CHAT_FORMAT;
|
||||||
|
|
||||||
|
// Console chat settings
|
||||||
|
public static String CONSOLE_PREFIX;
|
||||||
|
public static String CONSOLE_TITLE;
|
||||||
|
public static String CONSOLE_CHAT_COLOR;
|
||||||
|
|
||||||
|
public static void load(File file) {
|
||||||
|
try {
|
||||||
|
if (!file.getParentFile().exists())
|
||||||
|
file.getParentFile().mkdirs();
|
||||||
|
if (!file.exists())
|
||||||
|
Main.ExportResource("/config.yml", file);
|
||||||
|
YamlConfiguration config = new YamlConfiguration();
|
||||||
|
config.load(file);
|
||||||
|
|
||||||
|
// Chat formats
|
||||||
|
GLOBAL_CHAT_FORMAT = colorCodes(config.getString("format.global"));
|
||||||
|
STAFF_CHAT_FORMAT = colorCodes(config.getString("format.staff"));
|
||||||
|
ADMIN_CHAT_FORMAT = colorCodes(config.getString("format.admin"));
|
||||||
|
BUILDER_CHAT_FORMAT = colorCodes(config.getString("format.builder"));
|
||||||
|
// Console chat settings
|
||||||
|
CONSOLE_PREFIX = colorCodes(config.getString("console.prefix"));
|
||||||
|
CONSOLE_TITLE = colorCodes(config.getString("console.title"));
|
||||||
|
CONSOLE_CHAT_COLOR = colorCodes(config.getString("console.chat-color"));
|
||||||
|
} catch (IOException | InvalidConfigurationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package com.tidefactions.chat.Databases;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Types.Prefix;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.sql.*;
|
||||||
|
|
||||||
|
public class PrefixDatabase {
|
||||||
|
|
||||||
|
private static String url;
|
||||||
|
|
||||||
|
public static void init(String path) {
|
||||||
|
File dbFile = new File(path + "/playerData.db");
|
||||||
|
url = "jdbc:sqlite:" + path + "/playerData.db";
|
||||||
|
if (!dbFile.getParentFile().exists())
|
||||||
|
dbFile.getParentFile().mkdirs();
|
||||||
|
if (!dbFile.exists()) {
|
||||||
|
createTable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createTable() {
|
||||||
|
// SQL statement for creating a new table
|
||||||
|
String sql = "CREATE TABLE IF NOT EXISTS prefixes (\n"
|
||||||
|
+ " uuid TEXT PRIMARY KEY,\n"
|
||||||
|
+ " prefix TEXT NOT NULL\n"
|
||||||
|
+ ");";
|
||||||
|
|
||||||
|
try (Connection conn = DriverManager.getConnection(url);
|
||||||
|
Statement stmt = conn.createStatement()) {
|
||||||
|
stmt.execute(sql);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getPrefixIDForPlayer(Player player) {
|
||||||
|
try (Connection conn = DriverManager.getConnection(url);
|
||||||
|
Statement stmt = conn.createStatement()) {
|
||||||
|
ResultSet result = stmt.executeQuery("SELECT * FROM prefixes WHERE uuid='" + player.getUniqueId() + "'");
|
||||||
|
while (result.next()) {
|
||||||
|
return result.getString("prefix");
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return "Default";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setPrefix(Player player, Prefix prefix) {
|
||||||
|
try (Connection conn = DriverManager.getConnection(url);
|
||||||
|
Statement stmt = conn.createStatement()) {
|
||||||
|
stmt.execute("DELETE FROM prefixes WHERE uuid='" + player.getUniqueId() + "'");
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
try (Connection conn = DriverManager.getConnection(url);
|
||||||
|
Statement stmt = conn.createStatement()) {
|
||||||
|
stmt.execute("INSERT INTO prefixes ('uuid', 'prefix') VALUES ('" + player.getUniqueId() + "', '" + prefix.getName() + "')");
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.tidefactions.chat.EventHandlers;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Types.ChatMode;
|
||||||
|
import com.tidefactions.chat.Utils.ChatUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class ChatHandler implements Listener {
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
|
public void onAsyncChatEvent(AsyncPlayerChatEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
ChatUtils.sendMessageInChannel(
|
||||||
|
player,
|
||||||
|
ChatUtils.getChatMode(player),
|
||||||
|
event.getMessage(),
|
||||||
|
"Chat");
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.tidefactions.chat.EventHandlers;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.GUI.PrefixGui;
|
||||||
|
import com.tidefactions.chat.Types.Prefix;
|
||||||
|
import com.tidefactions.chat.Utils.PrefixUtils;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class InventoryHandler implements Listener{
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onClickEvent(InventoryClickEvent event) {
|
||||||
|
if (PrefixGui.views.contains(event.getView())) {
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
if (event.getCurrentItem() != null) {
|
||||||
|
if (event.getCurrentItem().getType() != Material.AIR) {
|
||||||
|
List<String> lore = event.getCurrentItem().getItemMeta().getLore();
|
||||||
|
Prefix prefix = PrefixUtils.getPrefixByID(lore.get(lore.size() - 1));
|
||||||
|
if (prefix != null) {
|
||||||
|
if (player.hasPermission(prefix.getPermission())) {
|
||||||
|
PrefixUtils.setPrefixForPlayer(player, prefix);
|
||||||
|
PrefixGui.views.remove(event.getView());
|
||||||
|
player.closeInventory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onCloseEvent(InventoryCloseEvent event) {
|
||||||
|
if (PrefixGui.views.contains(event.getView())) {
|
||||||
|
PrefixGui.views.remove(event.getView());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.tidefactions.chat.Events;
|
||||||
|
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Types.ChatMode;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class MessageSendInChannelEvent extends Event {
|
||||||
|
|
||||||
|
private static HandlerList handlerList = new HandlerList();
|
||||||
|
|
||||||
|
private String player;
|
||||||
|
private ChatMode chatMode;
|
||||||
|
private String message;
|
||||||
|
private String source;
|
||||||
|
|
||||||
|
public MessageSendInChannelEvent(String player, ChatMode chatMode, String message, String source) {
|
||||||
|
this.player = player;
|
||||||
|
this.chatMode = chatMode;
|
||||||
|
this.message = message;
|
||||||
|
this.source = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPlayer() {
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatMode getChatMode() {
|
||||||
|
return chatMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSource() {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package com.tidefactions.chat.GUI;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Types.Prefix;
|
||||||
|
import com.tidefactions.chat.Utils.PrefixUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryView;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class PrefixGui {
|
||||||
|
|
||||||
|
public static List<InventoryView> views = new ArrayList<>();
|
||||||
|
|
||||||
|
public void open(Player player) {
|
||||||
|
int size = (int) (Math.ceil(PrefixUtils.getPrefixes().size() / 9) * 9);
|
||||||
|
if (size < 9)
|
||||||
|
size = 9;
|
||||||
|
Inventory inv = Bukkit.createInventory(null, size, ChatColor.GREEN + "Prefix " + ChatColor.DARK_GRAY + " selection");
|
||||||
|
String currentPrefixID = null;
|
||||||
|
if (PrefixUtils.getPrefixForPlayer(player) != null) {
|
||||||
|
currentPrefixID = PrefixUtils.getPrefixForPlayer(player).getName();
|
||||||
|
}
|
||||||
|
for (Prefix prefix : PrefixUtils.getPrefixes()) {
|
||||||
|
if (player.hasPermission(prefix.getPermission())) {
|
||||||
|
ItemStack is = new ItemStack(
|
||||||
|
prefix.getItem(),
|
||||||
|
1,
|
||||||
|
prefix.getItemMeta());
|
||||||
|
ItemMeta im = is.getItemMeta();
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
if (currentPrefixID.equals(prefix.getName()))
|
||||||
|
lore.add(ChatColor.GREEN + "Active");
|
||||||
|
|
||||||
|
lore.addAll(prefix.getDescription());
|
||||||
|
lore.add(ChatColor.BLACK + prefix.getName());
|
||||||
|
im.setLore(lore);
|
||||||
|
im.setDisplayName(prefix.getPrefix());
|
||||||
|
is.setItemMeta(im);
|
||||||
|
inv.addItem(is);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
views.add(player.openInventory(inv));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
package com.tidefactions.chat;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Commands.CommandAdminChat;
|
||||||
|
import com.tidefactions.chat.Commands.CommandBuilderChat;
|
||||||
|
import com.tidefactions.chat.Commands.CommandPrefix;
|
||||||
|
import com.tidefactions.chat.Commands.CommandStaffChat;
|
||||||
|
import com.tidefactions.chat.Databases.PrefixDatabase;
|
||||||
|
import com.tidefactions.chat.EventHandlers.ChatHandler;
|
||||||
|
import com.tidefactions.chat.EventHandlers.InventoryHandler;
|
||||||
|
import com.tidefactions.chat.Utils.PrefixUtils;
|
||||||
|
import net.milkbowl.vault.chat.Chat;
|
||||||
|
import net.milkbowl.vault.permission.Permission;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
public final class Main extends JavaPlugin {
|
||||||
|
|
||||||
|
public static Logger logger;
|
||||||
|
public static Main plugin;
|
||||||
|
|
||||||
|
public static Permission perms = null;
|
||||||
|
public static Chat chat = null;
|
||||||
|
|
||||||
|
|
||||||
|
//TODO list
|
||||||
|
//- Save and load current prefix
|
||||||
|
//- Announcement support
|
||||||
|
//- Titles
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
logger = this.getLogger();
|
||||||
|
plugin = this;
|
||||||
|
setupPermissions();
|
||||||
|
PrefixDatabase.init(getDataFolder().getPath());
|
||||||
|
Config.load(new File(getDataFolder(), "config.yml"));
|
||||||
|
Messages.load(new File(getDataFolder(), "messages.yml"));
|
||||||
|
PrefixUtils.loadPrefixes(new File(plugin.getDataFolder(), "prefixes.yml"));
|
||||||
|
getServer().getPluginManager().registerEvents(new ChatHandler(), this);
|
||||||
|
getServer().getPluginManager().registerEvents(new InventoryHandler(), this);
|
||||||
|
getCommand("bc").setExecutor(new CommandBuilderChat());
|
||||||
|
getCommand("sc").setExecutor(new CommandStaffChat());
|
||||||
|
getCommand("ac").setExecutor(new CommandAdminChat());
|
||||||
|
getCommand("prefix").setExecutor(new CommandPrefix());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
// Plugin shutdown logic
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ExportResource(String resourceName, File output) {
|
||||||
|
try (InputStream stream = Main.class.getResourceAsStream(resourceName); OutputStream resStreamOut = new FileOutputStream(output)) {
|
||||||
|
if (stream == null) {
|
||||||
|
throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file.");
|
||||||
|
}
|
||||||
|
|
||||||
|
int readBytes;
|
||||||
|
byte[] buffer = new byte[4096];
|
||||||
|
while ((readBytes = stream.read(buffer)) > 0) {
|
||||||
|
resStreamOut.write(buffer, 0, readBytes);
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
//Fail silently
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String colorCodes(String string) {
|
||||||
|
return ChatColor.translateAlternateColorCodes('&', string);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean setupPermissions() {
|
||||||
|
RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
|
||||||
|
perms = rsp.getProvider();
|
||||||
|
return perms != null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
package com.tidefactions.chat;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static com.tidefactions.chat.Main.colorCodes;
|
||||||
|
|
||||||
|
public class Messages {
|
||||||
|
|
||||||
|
public static String PREFIX;
|
||||||
|
public static String NO_PERMISSION;
|
||||||
|
public static String AC_CONSOLE;
|
||||||
|
public static String AC_TOGGLE_ON;
|
||||||
|
public static String AC_TOGGLE_OFF;
|
||||||
|
public static String SC_CONSOLE;
|
||||||
|
public static String SC_TOGGLE_ON;
|
||||||
|
public static String SC_TOGGLE_OFF;
|
||||||
|
public static String BC_CONSOLE;
|
||||||
|
public static String BC_TOGGLE_ON;
|
||||||
|
public static String BC_TOGGLE_OFF;
|
||||||
|
|
||||||
|
|
||||||
|
public static void load(File file) {
|
||||||
|
try {
|
||||||
|
if (!file.getParentFile().exists())
|
||||||
|
file.getParentFile().mkdirs();
|
||||||
|
if (!file.exists())
|
||||||
|
Main.ExportResource("/messages.yml", file);
|
||||||
|
YamlConfiguration config = new YamlConfiguration();
|
||||||
|
config.load(file);
|
||||||
|
|
||||||
|
// Generic
|
||||||
|
PREFIX = colorCodes(config.getString("prefix"));
|
||||||
|
NO_PERMISSION = colorCodes(config.getString("no-permission"));
|
||||||
|
|
||||||
|
// Ac messages
|
||||||
|
AC_CONSOLE = colorCodes(config.getString("ac-console"));
|
||||||
|
AC_TOGGLE_ON = colorCodes(config.getString("ac-toggle-on"));
|
||||||
|
AC_TOGGLE_OFF = colorCodes(config.getString("ac-toggle-off"));
|
||||||
|
|
||||||
|
// Sc messages
|
||||||
|
SC_CONSOLE = colorCodes(config.getString("sc-console"));
|
||||||
|
SC_TOGGLE_ON = colorCodes(config.getString("sc-toggle-on"));
|
||||||
|
SC_TOGGLE_OFF = colorCodes(config.getString("sc-toggle-off"));
|
||||||
|
|
||||||
|
// Bc messages
|
||||||
|
BC_CONSOLE = colorCodes(config.getString("bc-console"));
|
||||||
|
BC_TOGGLE_ON = colorCodes(config.getString("bc-toggle-on"));
|
||||||
|
BC_TOGGLE_OFF = colorCodes(config.getString("bc-toggle-off"));
|
||||||
|
} catch (IOException | InvalidConfigurationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.tidefactions.chat.Types;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Config;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
|
public enum ChatMode {
|
||||||
|
PUBLIC("chat.public", "", Config.GLOBAL_CHAT_FORMAT),
|
||||||
|
STAFF("chat.staff", ChatColor.DARK_GRAY + "[" + ChatColor.AQUA + "STAFF" + ChatColor.DARK_GRAY + "] " + ChatColor.RESET, Config.STAFF_CHAT_FORMAT),
|
||||||
|
ADMIN("chat.admin", ChatColor.DARK_GRAY + "[" + ChatColor.RED + "ADMIN" + ChatColor.DARK_GRAY + "] " + ChatColor.RESET, Config.ADMIN_CHAT_FORMAT),
|
||||||
|
BUILDER("chat.builder", ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "BUILDER" + ChatColor.DARK_GRAY + "] " + ChatColor.RESET, Config.BUILDER_CHAT_FORMAT);
|
||||||
|
|
||||||
|
private String permission;
|
||||||
|
private String prefix;
|
||||||
|
private String format;
|
||||||
|
|
||||||
|
ChatMode(String permission, String prefix, String format) {
|
||||||
|
this.permission = permission;
|
||||||
|
this.prefix = prefix;
|
||||||
|
this.format = format;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPermission() {
|
||||||
|
return permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPrefix() {
|
||||||
|
return prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFormat() {
|
||||||
|
return format;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package com.tidefactions.chat.Types;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Prefix {
|
||||||
|
private String name;
|
||||||
|
private String permission;
|
||||||
|
private String prefix;
|
||||||
|
private Material item;
|
||||||
|
private Short itemMeta;
|
||||||
|
private List<String> description;
|
||||||
|
private ChatColor chatColor;
|
||||||
|
|
||||||
|
public Prefix(String name, String permission, String prefix, Material item, Integer itemMeta, List<String> description, ChatColor chatColor) {
|
||||||
|
this.name = name;
|
||||||
|
this.permission = permission;
|
||||||
|
this.prefix = prefix;
|
||||||
|
this.item = item;
|
||||||
|
this.itemMeta = itemMeta.shortValue();
|
||||||
|
this.description = description;
|
||||||
|
this.chatColor = chatColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPermission() {
|
||||||
|
return permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPrefix() {
|
||||||
|
return prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Material getItem() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Short getItemMeta() {
|
||||||
|
return itemMeta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChatColor getChatColor() {
|
||||||
|
return chatColor;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package com.tidefactions.chat.Utils;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Config;
|
||||||
|
import com.tidefactions.chat.Events.MessageSendInChannelEvent;
|
||||||
|
import com.tidefactions.chat.Types.ChatMode;
|
||||||
|
import com.tidefactions.chat.Types.Prefix;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class ChatUtils {
|
||||||
|
|
||||||
|
private static HashMap<UUID, ChatMode> currentChatMode = new HashMap<>();
|
||||||
|
|
||||||
|
public static void sendMessageInChannel(Player player, ChatMode mode, String message, String source) {
|
||||||
|
String finalMessage = getMessageForChannel(player, mode, message);
|
||||||
|
MessageSendInChannelEvent event = new MessageSendInChannelEvent(player.getName(), mode, message, source);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
Bukkit.broadcast(finalMessage, mode.getPermission());
|
||||||
|
if (message.contains("@")) {
|
||||||
|
String[] array = message.split(" ");
|
||||||
|
for (String word : array)
|
||||||
|
if (word.startsWith("@")) {
|
||||||
|
Player mentioned = Bukkit.getPlayer(word.replace("@", ""));
|
||||||
|
if (mentioned != null)
|
||||||
|
mentioned.playSound(mentioned.getLocation(), Sound.ORB_PICKUP, 1, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void sendMessageInChannelAsConsole(ChatMode mode, String message, String source) {
|
||||||
|
String finalMessage = getMessageForChannelAsConsole(mode, message);
|
||||||
|
MessageSendInChannelEvent event = new MessageSendInChannelEvent("CONSOLE", mode, message, source);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
Bukkit.broadcast(finalMessage, mode.getPermission());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMessageForChannel(Player player, ChatMode mode, String message) {
|
||||||
|
Prefix prefix = PrefixUtils.getPrefixForPlayer(player);
|
||||||
|
return mode.getFormat()
|
||||||
|
.replaceAll("<MODE_PREFIX>", mode.getPrefix())
|
||||||
|
.replaceAll("<PREFIX>", prefix.getPrefix())
|
||||||
|
.replaceAll("<PLAYER_NAME>", player.getName())
|
||||||
|
.replaceAll("<TITLE>", TitleUtils.getTitleForPlayer(player))
|
||||||
|
.replaceAll("<CHAT_COLOR>", prefix.getChatColor().toString())
|
||||||
|
.replaceAll("<MESSAGE>", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMessageForChannelAsConsole(ChatMode mode, String message) {
|
||||||
|
return mode.getFormat()
|
||||||
|
.replaceAll("<MODE_PREFIX>", mode.getPrefix())
|
||||||
|
.replaceAll("<PREFIX>", Config.CONSOLE_PREFIX)
|
||||||
|
.replaceAll("<PLAYER_NAME>", "CONSOLE")
|
||||||
|
.replaceAll("<TITLE>", Config.CONSOLE_TITLE)
|
||||||
|
.replaceAll("<CHAT_COLOR>", Config.CONSOLE_CHAT_COLOR)
|
||||||
|
.replaceAll("<MESSAGE>", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setChatMode(Player player, ChatMode mode) {
|
||||||
|
currentChatMode.put(player.getUniqueId(), mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ChatMode getChatMode(Player player) {
|
||||||
|
return currentChatMode.getOrDefault(player.getUniqueId(), ChatMode.PUBLIC);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.tidefactions.chat.Utils;
|
||||||
|
|
||||||
|
import com.tidefactions.chat.Databases.PrefixDatabase;
|
||||||
|
import com.tidefactions.chat.Main;
|
||||||
|
import com.tidefactions.chat.Types.Prefix;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import static com.tidefactions.chat.Main.logger;
|
||||||
|
|
||||||
|
public class PrefixUtils {
|
||||||
|
|
||||||
|
private static HashMap<String, Prefix> prefixes = new HashMap<>();
|
||||||
|
|
||||||
|
public static void loadPrefixes(File prefixFile) {
|
||||||
|
if (!prefixFile.getParentFile().exists())
|
||||||
|
prefixFile.getParentFile().mkdirs();
|
||||||
|
if (!prefixFile.exists())
|
||||||
|
Main.ExportResource("/prefixes.yml", prefixFile);
|
||||||
|
try {
|
||||||
|
YamlConfiguration config = new YamlConfiguration();
|
||||||
|
config.load(prefixFile);
|
||||||
|
for (String key : config.getKeys(false)) {
|
||||||
|
prefixes.put(key, new Prefix(
|
||||||
|
key,
|
||||||
|
config.getString(key + ".permission"),
|
||||||
|
ChatColor.translateAlternateColorCodes('&', config.getString(key + ".prefix")),
|
||||||
|
Material.getMaterial(config.getString(key + ".item")),
|
||||||
|
config.getInt(key + ".item-meta"),
|
||||||
|
config.getStringList(key + ".description"),
|
||||||
|
ChatColor.valueOf(config.getString(key + ".chat-color"))
|
||||||
|
));
|
||||||
|
logger.info("Loaded prefix: " + key);
|
||||||
|
}
|
||||||
|
} catch (IOException | InvalidConfigurationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Prefix getPrefixForPlayer(Player player) {
|
||||||
|
return prefixes.getOrDefault(PrefixDatabase.getPrefixIDForPlayer(player), prefixes.get("Default"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setPrefixForPlayer(Player player, Prefix prefix) {
|
||||||
|
PrefixDatabase.setPrefix(player, prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Prefix getPrefixByID(String id) {
|
||||||
|
return prefixes.get(id.replaceAll(ChatColor.BLACK.toString(), ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Collection<Prefix> getPrefixes() {
|
||||||
|
return prefixes.values();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.tidefactions.chat.Utils;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class TitleUtils {
|
||||||
|
|
||||||
|
|
||||||
|
public static String getTitleForPlayer(Player player) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
format:
|
||||||
|
global: "<MODE_PREFIX><PREFIX> &r<PLAYER_NAME><TITLE>&7: <CHAT_COLOR><MESSAGE>"
|
||||||
|
staff: "<MODE_PREFIX><PREFIX> &r<PLAYER_NAME>&7: <CHAT_COLOR><MESSAGE>"
|
||||||
|
admin: "<MODE_PREFIX><PREFIX> &r<PLAYER_NAME>&7: <CHAT_COLOR><MESSAGE>"
|
||||||
|
builder: "<MODE_PREFIX><PREFIX> &r<PLAYER_NAME>&7: <CHAT_COLOR><MESSAGE>"
|
||||||
|
console:
|
||||||
|
prefix: "&8[&4CONSOLE&8]"
|
||||||
|
title: ""
|
||||||
|
chat-color: "&4"
|
|
@ -0,0 +1,11 @@
|
||||||
|
prefix: "&8[&2Tide&8Chat] &f"
|
||||||
|
no-permission: "You do not have permission for this command."
|
||||||
|
ac-console: "Console cant use /ac without arguments it has to use /ac <message>."
|
||||||
|
ac-toggle-on: "You turned on admin chat."
|
||||||
|
ac-toggle-off: "You turned off admin chat."
|
||||||
|
sc-console: "Console cant use /sc without arguments it has to use /sc <message>."
|
||||||
|
sc-toggle-on: "You turned on staff chat."
|
||||||
|
sc-toggle-off: "You turned off staff chat."
|
||||||
|
bc-console: "Console cant use /bc without arguments it has to use /bc <message>."
|
||||||
|
bc-toggle-on: "You turned on builder chat."
|
||||||
|
bc-toggle-off: "You turned off builder chat."
|
|
@ -0,0 +1,10 @@
|
||||||
|
name: Chat
|
||||||
|
version: @version@
|
||||||
|
main: com.tidefactions.chat.Main
|
||||||
|
authors: [dragontamerfred]
|
||||||
|
depend: [Vault]
|
||||||
|
commands:
|
||||||
|
bc:
|
||||||
|
sc:
|
||||||
|
ac:
|
||||||
|
prefix:
|
|
@ -0,0 +1,81 @@
|
||||||
|
Default:
|
||||||
|
permission: 'prefix.default'
|
||||||
|
prefix: '&8[&fMember&8]'
|
||||||
|
item: 'WOOL'
|
||||||
|
item-meta: 0
|
||||||
|
chat-color: "GRAY"
|
||||||
|
description:
|
||||||
|
- 'The default tag.'
|
||||||
|
- 'This is nothing special.'
|
||||||
|
Builder:
|
||||||
|
permission: 'prefix.builder'
|
||||||
|
prefix: '&8[&9Builder&8]'
|
||||||
|
item: 'WOOL'
|
||||||
|
item-meta: 11
|
||||||
|
chat-color: "BLUE"
|
||||||
|
description:
|
||||||
|
- 'This special tag will'
|
||||||
|
- 'show everyone that you'
|
||||||
|
- 'helped with building.'
|
||||||
|
Helper:
|
||||||
|
permission: 'prefix.helper'
|
||||||
|
prefix: '&8[&eHelper&8]'
|
||||||
|
item: 'WOOL'
|
||||||
|
item-meta: 4
|
||||||
|
chat-color: "YELLOW"
|
||||||
|
description:
|
||||||
|
- 'This special tag will'
|
||||||
|
- 'show everyone that you'
|
||||||
|
- 'are willing to help out.'
|
||||||
|
Moderator:
|
||||||
|
permission: 'prefix.moderator'
|
||||||
|
prefix: '&8[&6Moderator&8]'
|
||||||
|
item: 'STAINED_CLAY'
|
||||||
|
item-meta: 4
|
||||||
|
chat-color: "GOLD"
|
||||||
|
description:
|
||||||
|
- 'This special tag will'
|
||||||
|
- 'show everyone that you'
|
||||||
|
- 'are a Moderator.'
|
||||||
|
Sr-Moderator:
|
||||||
|
permission: 'prefix.sr-moderator'
|
||||||
|
prefix: '&8[&6Sr.Moderator&8]'
|
||||||
|
item: 'GOLD_BLOCK'
|
||||||
|
item-meta: 0
|
||||||
|
chat-color: "GOLD"
|
||||||
|
description:
|
||||||
|
- 'This special tag will'
|
||||||
|
- 'show everyone that you'
|
||||||
|
- 'have been a moderator'
|
||||||
|
- 'for a long time.'
|
||||||
|
Admin:
|
||||||
|
permission: 'prefix.admin'
|
||||||
|
prefix: '&8[&cAdmin&8]'
|
||||||
|
item: 'WOOL'
|
||||||
|
item-meta: 14
|
||||||
|
chat-color: "RED"
|
||||||
|
description:
|
||||||
|
- 'This special tag will'
|
||||||
|
- 'show everyone that you'
|
||||||
|
- 'are an Admin.'
|
||||||
|
Developer:
|
||||||
|
permission: 'prefix.developer'
|
||||||
|
prefix: '&8[&bDeveloper&8]'
|
||||||
|
item: 'WOOL'
|
||||||
|
item-meta: 3
|
||||||
|
chat-color: "AQUA"
|
||||||
|
description:
|
||||||
|
- 'This special tag will'
|
||||||
|
- 'show everyone that you'
|
||||||
|
- 'are an Developer for'
|
||||||
|
- 'the server.'
|
||||||
|
Owner:
|
||||||
|
permission: 'prefix.owner'
|
||||||
|
prefix: '&8[&4Owner&8]'
|
||||||
|
item: 'WOOL'
|
||||||
|
item-meta: 14
|
||||||
|
chat-color: "DARK_RED"
|
||||||
|
description:
|
||||||
|
- 'This special tag will'
|
||||||
|
- 'show everyone that you'
|
||||||
|
- 'are, well the Owner.'
|
Loading…
Reference in New Issue