diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c37caf --- /dev/null +++ b/.gitignore @@ -0,0 +1,118 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory +run/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json deleted file mode 100644 index f8b4888..0000000 --- a/.vs/ProjectSettings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "CurrentProjectSetting": null -} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite deleted file mode 100644 index 9bd1571..0000000 Binary files a/.vs/slnx.sqlite and /dev/null differ diff --git a/README.md b/README.md deleted file mode 100644 index 1d90fbe..0000000 --- a/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# AutoMessage - - -Spigot plugin: https://www.spigotmc.org/resources/automessage.372/ - -Added support for TellRaw messages. -Example messages: -- '{"text":"[Get more info on TellRaws here: minecraft.tools/en/tellraw.php ]","color":"dark_purple"}' -- '{"text":"[This is a test message!] ","color":"aqua"}' -- '["",{"text":"Click me to open URL!","color":"red","bold":true,"underlined":false,"clickEvent":{"action":"open_url","value":"https://www.google.com"}}]' -- '{"text":"Hover over me for help text!","color":"yellow","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"I - am a hint!","color":"yellow","bold":true}]}}}' -- '{"text":"Click me to run help command!","color":"yellow","bold":true,"clickEvent":{"action":"run_command","value":"/help"}}' \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..4c65a3b --- /dev/null +++ b/build.gradle @@ -0,0 +1,58 @@ +plugins { + id 'java' +} + +group = 'me.shawshark' + +repositories { + mavenCentral() + maven { + name = 'spigotmc-repo' + url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' + } + maven { + name = 'sonatype' + url = 'https://oss.sonatype.org/content/groups/public/' + } +} + +dependencies { + compileOnly 'org.spigotmc:spigot-api:1.15-R0.1-SNAPSHOT' + compileOnly 'org.projectlombok:lombok:1.18.22' + annotationProcessor 'org.projectlombok:lombok:1.18.22' + + testCompileOnly 'org.projectlombok:lombok:1.18.22' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.22' +} + +def targetJavaVersion = 8 +java { + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + sourceCompatibility = javaVersion + targetCompatibility = javaVersion + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } +} + +tasks.withType(JavaCompile).configureEach { + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + options.release = targetJavaVersion + } +} + +task deploy (dependsOn: build, type: Copy) { + group "plugin" + from "build/libs" + into serverPlugin + include "*.jar" +} + +processResources { + def props = [version: version] + inputs.properties props + filteringCharset 'UTF-8' + filesMatching('plugin.yml') { + expand props + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..f802974 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +serverPlugin = D:/Projects/Minecraft/TestServer/plugins +version = 1.5 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..7454180 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..05679dc --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..744e882 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## 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='"-Xmx64m" "-Xms64m"' + +# 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 + ;; + MSYS* | 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 or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; 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=`expr $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" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@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 Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@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="-Xmx64m" "-Xms64m" + +@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 execute + +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 execute + +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 + +: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 %* + +: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 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..532a25a --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'AutoMessage' diff --git a/src/me/shawshark/automessage/AutoMessager.java b/src/main/java/me/shawshark/automessage/AutoMessager.java similarity index 91% rename from src/me/shawshark/automessage/AutoMessager.java rename to src/main/java/me/shawshark/automessage/AutoMessager.java index 759d716..e45c250 100644 --- a/src/me/shawshark/automessage/AutoMessager.java +++ b/src/main/java/me/shawshark/automessage/AutoMessager.java @@ -1,191 +1,192 @@ -package me.shawshark.automessage; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.Random; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitRunnable; - -import lombok.Getter; -import lombok.Setter; - -public class AutoMessager extends JavaPlugin implements CommandExecutor { - - @Getter@Setter public HashMap messages = new HashMap(); - - @Getter@Setter public int messageid; // this is the currect message id we are up to. - @Getter@Setter public int lastMessageID = -1; - @Getter@Setter public int secondLastMessageID = -1; - @Getter@Setter public int thirdlastMessageID = -1; - - @Getter@Setter public int timer = 40; // default 40 - @Setter public boolean random; - - @Getter@Setter public int bukkitidTask; - - public void onEnable() { - - getCommand("automessage").setExecutor(this); - - getConfig().addDefault("timer", 10); - - List defaultMessages = new ArrayList(); - defaultMessages.add("&eThis is default message 1, Please change this in &cconfig.yml"); - defaultMessages.add("&cThis is default message 2, You can change this in &cconfig.yml"); - defaultMessages.add("&fThis is default message 3, You can change this in &cconfig.yml"); - defaultMessages.add("&bThis is default message 4, You can change this in &cconfig.yml"); - defaultMessages.add("&6This is default message 5, You can change this in &cconfig.yml"); - defaultMessages.add("&7This is default message 6, You can change this in &cconfig.yml"); - - List tellRawDefaultMessages = new ArrayList(); - tellRawDefaultMessages.add("{\"text\":\"[Get more info on TellRaws here: minecraft.tools/en/tellraw.php ]\",\"color\":\"dark_purple\"}"); - tellRawDefaultMessages.add("{\"text\":\"[This is a test message!] \",\"color\":\"aqua\"}"); - tellRawDefaultMessages.add("[\"\",{\"text\":\"Click me to open URL!\",\"color\":\"red\",\"bold\":true,\"underlined\":false,\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.google.com\"}}]"); - tellRawDefaultMessages.add("{\"text\":\"Hover over me for help text!\",\"color\":\"yellow\",\"bold\":true,\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"I am a hint!\",\"color\":\"yellow\",\"bold\":true}]}}}"); - tellRawDefaultMessages.add("{\"text\":\"Click me to run help command!\",\"color\":\"yellow\",\"bold\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/help\"}}"); - - getConfig().addDefault("Random", false); - getConfig().addDefault("UseTellRawMessages", false); - getConfig().addDefault("Messages", defaultMessages); - getConfig().addDefault("TellRawMessages", tellRawDefaultMessages); - getConfig().options().copyDefaults(true); - saveConfig(); - loadMessages(); - } - - public void loadMessages() { - - getMessages().clear(); - - setMessageid(1); - setLastMessageID(-1); - - setRandom(getConfig().getBoolean("Random", false)); - - setTimer(getConfig().getInt("timer")); - - int start = 1; - if(!getConfig().getBoolean("UseTellRawMessages")){ - if(getConfig().getStringList("Messages") != null) { - for(String message : getConfig().getStringList("Messages")) { - getMessages().put(start, message); - start++; - } - } - } else { - if(getConfig().getStringList("TellRawMessages") != null) { - for (String message : getConfig().getStringList("TellRawMessages")) { - getMessages().put(start, message); - start++; - } - } - } - - - run(); - } - - - public void run() { - bukkitidTask = new BukkitRunnable() { - - @Override - public void run() { - - if(!getMessages().isEmpty()) { - - for(Map.Entry i : getMessages().entrySet()) { - - if(random) { - int randomgen = getRandom(); - if(i.getKey() == randomgen) { - if(getLastMessageID() == randomgen || getSecondLastMessageID() == randomgen || getThirdlastMessageID() == randomgen) { - continue; - } else { - - String msg = i.getValue(); - - if(!getConfig().getBoolean("UseTellRawMessages")){ - Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', msg)); - - } else { - if(Bukkit.getOnlinePlayers().size() > 0){ - String tellRawCommand = new String("tellraw @a " + msg); - Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(),tellRawCommand); - } - } - - setThirdlastMessageID(getSecondLastMessageID()); - setSecondLastMessageID(getLastMessageID()); - setLastMessageID(i.getKey()); - break; - - } - } - } else { - - - if(i.getKey() == getMessageid()) { - - String message = i.getValue(); - messageid++; - - if(!getConfig().getBoolean("UseTellRawMessages")){ - Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', message)); - } else { - if(Bukkit.getOnlinePlayers().size() > 0){ - String tellRawCommand = new String("tellraw @a " + message); - Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(),tellRawCommand); - } - } - - //if we are past the set amount of messages, go back to the start. - if(getMessageid() == getMessages().size() + 1) { - setMessageid(1); - } - - break; - } - } - } - } - } // for test reasons every 5 seconds. - }.runTaskTimer(this,100,getTimer()*20).getTaskId();//runTaskTimerAsynchronously(this, 100, getTimer() * 20).getTaskId(); - - } - - public int getRandom() { - int number = new Random().nextInt(getMessages().size()); - if(number == 0) { - return 1; - } else { - return number; - } - } - - - @Override - public boolean onCommand(CommandSender sender, Command command, String arg2, String[] arg3) { - - if(!sender.hasPermission("automessage.reload")) { - PlayerUtils.msg(sender, "You don't have permissions to use this command"); - return true; - } - - reloadConfig(); - saveConfig(); - - getServer().getScheduler().cancelTask(getBukkitidTask()); - loadMessages(); - PlayerUtils.msg(sender, "&aYou've reloaded the config.yml config file."); - return true; - } -} +package me.shawshark.automessage; + +import java.util.*; +import java.util.Map.Entry; +import java.util.logging.Level; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitRunnable; + +import lombok.Getter; +import lombok.Setter; + +public class AutoMessager extends JavaPlugin implements CommandExecutor { + + @Getter@Setter public HashMap messages = new HashMap(); + + @Getter@Setter public int messageid; // this is the currect message id we are up to. + @Getter@Setter public int lastMessageID = -1; + @Getter@Setter public int secondLastMessageID = -1; + @Getter@Setter public int thirdlastMessageID = -1; + + @Getter@Setter public int timer = 40; // default 40 + @Setter public boolean random; + + @Getter@Setter public int bukkitidTask; + + public void onEnable() { + + getConfig().addDefault("timer", 10); + + List defaultMessages = new ArrayList(); + defaultMessages.add("&eThis is default message 1, Please change this in &cconfig.yml"); + defaultMessages.add("&cThis is default message 2, You can change this in &cconfig.yml"); + defaultMessages.add("&fThis is default message 3, You can change this in &cconfig.yml"); + defaultMessages.add("&bThis is default message 4, You can change this in &cconfig.yml"); + defaultMessages.add("&6This is default message 5, You can change this in &cconfig.yml"); + defaultMessages.add("&7This is default message 6, You can change this in &cconfig.yml"); + + List tellRawDefaultMessages = new ArrayList(); + tellRawDefaultMessages.add("{\"text\":\"[Get more info on TellRaws here: minecraft.tools/en/tellraw.php ]\",\"color\":\"dark_purple\"}"); + tellRawDefaultMessages.add("{\"text\":\"[This is a test message!] \",\"color\":\"aqua\"}"); + tellRawDefaultMessages.add("[\"\",{\"text\":\"Click me to open URL!\",\"color\":\"red\",\"bold\":true,\"underlined\":false,\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.google.com\"}}]"); + tellRawDefaultMessages.add("{\"text\":\"Hover over me for help text!\",\"color\":\"yellow\",\"bold\":true,\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"I am a hint!\",\"color\":\"yellow\",\"bold\":true}]}}}"); + tellRawDefaultMessages.add("{\"text\":\"Click me to run help command!\",\"color\":\"yellow\",\"bold\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/help\"}}"); + + getConfig().addDefault("Random", false); + getConfig().addDefault("UseTellRawMessages", false); + getConfig().addDefault("Messages", defaultMessages); + getConfig().addDefault("TellRawMessages", tellRawDefaultMessages); + getConfig().options().copyDefaults(true); + saveConfig(); + loadMessages(); + getCommand("automessage").setExecutor(this); + } + + public void loadMessages() { + + getMessages().clear(); + + setMessageid(1); + setLastMessageID(-1); + + setRandom(getConfig().getBoolean("Random", false)); + + setTimer(getConfig().getInt("timer")); + + int start = 1; + if(!getConfig().getBoolean("UseTellRawMessages")){ + if(getConfig().getStringList("Messages") != null) { + for(String message : getConfig().getStringList("Messages")) { + getMessages().put(start, message); + start++; + } + } + } else { + if(getConfig().getStringList("TellRawMessages") != null) { + for (String message : getConfig().getStringList("TellRawMessages")) { + getMessages().put(start, message); + start++; + } + } + } + + + run(); + } + + + public void run() { + bukkitidTask = new BukkitRunnable() { + + @Override + public void run() { + + if(!getMessages().isEmpty()) { + + for(Map.Entry i : getMessages().entrySet()) { + + if(random) { + int randomgen = getRandom(); + if(i.getKey() == randomgen) { + if(getLastMessageID() == randomgen || getSecondLastMessageID() == randomgen || getThirdlastMessageID() == randomgen) { + continue; + } else { + + String msg = i.getValue(); + getLogger().log(Level.INFO, msg); + if(!getConfig().getBoolean("UseTellRawMessages")){ + Bukkit.getOnlinePlayers().forEach(player -> { + player.sendMessage(ChatColor.translateAlternateColorCodes('&', msg)); + }); + } else { + if(Bukkit.getOnlinePlayers().size() > 0){ + String tellRawCommand = new String("tellraw @a " + msg); + Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(),tellRawCommand); + } + } + + setThirdlastMessageID(getSecondLastMessageID()); + setSecondLastMessageID(getLastMessageID()); + setLastMessageID(i.getKey()); + break; + + } + } + } else { + + + if(i.getKey() == getMessageid()) { + + String message = i.getValue(); + messageid++; + + if(!getConfig().getBoolean("UseTellRawMessages")){ + //Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', message)); + Bukkit.getOnlinePlayers().forEach(player -> { + player.sendMessage(ChatColor.translateAlternateColorCodes('&', message)); + }); + } else { + if(Bukkit.getOnlinePlayers().size() > 0){ + String tellRawCommand = new String("tellraw @a " + message); + Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(),tellRawCommand); + } + } + + //if we are past the set amount of messages, go back to the start. + if(getMessageid() == getMessages().size() + 1) { + setMessageid(1); + } + + break; + } + } + } + } + } // for test reasons every 5 seconds. + }.runTaskTimer(this,100,getTimer()*20).getTaskId();//runTaskTimerAsynchronously(this, 100, getTimer() * 20).getTaskId(); + + } + + public int getRandom() { + int number = new Random().nextInt(getMessages().size()); + if(number == 0) { + return 1; + } else { + return number; + } + } + + + @Override + public boolean onCommand(CommandSender sender, Command command, String arg2, String[] arg3) { + + if(!sender.hasPermission("automessage.reload")) { + PlayerUtils.msg(sender, "You don't have permissions to use this command"); + return true; + } + + reloadConfig(); + saveConfig(); + + getServer().getScheduler().cancelTask(getBukkitidTask()); + loadMessages(); + PlayerUtils.msg(sender, "&aYou've reloaded the config.yml config file."); + return true; + } +} diff --git a/src/me/shawshark/automessage/PlayerUtils.java b/src/main/java/me/shawshark/automessage/PlayerUtils.java similarity index 95% rename from src/me/shawshark/automessage/PlayerUtils.java rename to src/main/java/me/shawshark/automessage/PlayerUtils.java index ab3de51..34f8888 100644 --- a/src/me/shawshark/automessage/PlayerUtils.java +++ b/src/main/java/me/shawshark/automessage/PlayerUtils.java @@ -1,44 +1,44 @@ -package me.shawshark.automessage; - -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class PlayerUtils { - public static void msg(Player player, String msg, boolean colour) { - - if(colour) - msg = ChatColor.translateAlternateColorCodes('&', msg); - - if(player == null) { - System.out.println(msg); - //Bukkit.broadcastMessage(msg); - } else { - player.sendMessage(msg); - } - } - - public static void msg(Player player, String msg) { - - msg = ChatColor.translateAlternateColorCodes('&', msg); - - if(player == null) { - System.out.println(msg); - //Bukkit.broadcastMessage(msg); - } else { - player.sendMessage(msg); - } - } - - public static void msg(CommandSender sender, String msg) { - - msg = ChatColor.translateAlternateColorCodes('&', msg); - - if(sender == null) { - System.out.println(msg); - //Bukkit.broadcastMessage(msg); - } else { - sender.sendMessage(msg); - } - } -} +package me.shawshark.automessage; + +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class PlayerUtils { + public static void msg(Player player, String msg, boolean colour) { + + if(colour) + msg = ChatColor.translateAlternateColorCodes('&', msg); + + if(player == null) { + System.out.println(msg); + //Bukkit.broadcastMessage(msg); + } else { + player.sendMessage(msg); + } + } + + public static void msg(Player player, String msg) { + + msg = ChatColor.translateAlternateColorCodes('&', msg); + + if(player == null) { + System.out.println(msg); + //Bukkit.broadcastMessage(msg); + } else { + player.sendMessage(msg); + } + } + + public static void msg(CommandSender sender, String msg) { + + msg = ChatColor.translateAlternateColorCodes('&', msg); + + if(sender == null) { + System.out.println(msg); + //Bukkit.broadcastMessage(msg); + } else { + sender.sendMessage(msg); + } + } +} diff --git a/plugin.yml b/src/main/resources/plugin.yml similarity index 70% rename from plugin.yml rename to src/main/resources/plugin.yml index 11c3527..485f3c8 100644 --- a/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,8 +1,8 @@ -name: AutoMessage -author: shawshark -main: me.shawshark.automessage.AutoMessager -version: 1.0 -api-version: 1.15 - -commands: +name: AutoMessage +version: '${version}' +main: me.shawshark.automessage.AutoMessager +api-version: 1.15 +authors: [ shawshark ] + +commands: automessage: \ No newline at end of file