diff --git a/build.gradle b/build.gradle
new file mode 100644
index 00000000..70d3c8e8
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,81 @@
+apply plugin: 'java'
+
+group = 'net.canarymod'
+version = '2.0.0-SNAPSHOT'
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+repositories {
+ mavenLocal()
+ mavenCentral()
+ maven {
+ name 'vi-repo'
+ url 'http://repo.visualillusionsent.net/repository/internal/'
+ }
+ maven {
+ name 'vi-snapshots'
+ url 'http://repo.visualillusionsent.net/repository/snapshots/'
+ }
+ maven {
+ name 'mojang'
+ url 'https://libraries.minecraft.net/'
+ }
+ maven {
+ name 'mcstats'
+ url 'http://repo.mcstats.org/content/repositories/releases/'
+ }
+ maven {
+ name 'mcstats.snapshots'
+ url 'http://repo.mcstats.org/content/repositories/snapshots/'
+ }
+}
+
+dependencies {
+ // Provided by Minecraft
+ compile 'com.google.guava:guava:21.0'
+ compile 'com.google.code.gson:gson:2.8.0'
+ compile 'com.mojang:authlib:1.5.25'
+
+ // Logging
+ compile 'org.slf4j:slf4j-api:1.7.25'
+
+ // Other
+ compile 'net.visualillusionsent:viutils:1.4.2'
+ compile 'org.jdom:jdom2:2.0.5'
+ compile 'com.zaxxer:HikariCP:2.7.4'
+ compile 'com.googlecode.json-simple:json-simple:1.1.1'
+ compile 'org.mcstats.standalone:metrics:R7'
+
+ // Runtime
+ compile 'org.xerial:sqlite-jdbc:3.8.7'
+ compile 'mysql:mysql-connector-java:5.1.34'
+
+ testCompile 'junit:junit:4.12'
+}
+
+// Source compiler configuration
+tasks.withType(JavaCompile) {
+ options.compilerArgs += ['-Xlint:all', '-Xlint:-path', '-parameters']
+ options.deprecation = true
+ options.encoding = 'UTF-8'
+}
+
+javadoc {
+ options.encoding = 'UTF-8'
+ options.charSet = 'UTF-8'
+ options.links(
+ 'https://google.github.io/guava/releases/21.0/api/docs/',
+ 'http://www.slf4j.org/apidocs/',
+ 'http://www.jdom.org/docs/apidocs/',
+ 'http://www.mchange.com/projects/c3p0/apidocs/',
+ 'https://docs.oracle.com/javase/8/docs/api/'
+ )
+
+ // Disable the crazy super-strict doclint tool in Java 8
+ options.addStringOption('Xdoclint:none', '-quiet')
+}
+
+task wrapper(type: Wrapper) {
+ gradleVersion = '4.1'
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 00000000..ad93ae55
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,3 @@
+name = CanaryLib
+url = http://www.canarymod.net
+inceptionYear = 2012
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..6b6ea3ab
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 00000000..f16d2666
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 00000000..cccdd3d5
--- /dev/null
+++ b/gradlew
@@ -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" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 00000000..e95643d6
--- /dev/null
+++ b/gradlew.bat
@@ -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
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index b490a227..00000000
--- a/pom.xml
+++ /dev/null
@@ -1,370 +0,0 @@
-
-
- 4.0.0
- net.canarymod
- CanaryLib
- jar
- 1.2.1-SNAPSHOT
- CanaryLib
- http://www.canarymod.net
- 2012
-
-
- CanaryMod Team
- http://canarymod.net
-
-
-
- UTF-8
- dd MMMM yyyy HH:mm z
-
-
- R7
- 1.4.2
- 2.0.5
- 0.9.5
- 2.0-beta9
- 17.0
- 1.5.21
- 1.1.1
- 3.8.7
- 5.1.34
- 4.12
-
-
-
-
- BSD 3-Clause License
- http://opensource.org/licenses/BSD-3-Clause
-
- Copyright (c) 2012 - 2015, CanaryMod Team
- Under the management of PlayBlack and Visual Illusions Entertainment
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the CanaryMod Team nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL CANARYMOD TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- Any source code from the Minecraft Server is not owned by CanaryMod Team, PlayBlack,
- Visual Illusions Entertainment, or its contributors and is not covered by above license.
- Usage of source code from the Minecraft Server is subject to the Minecraft End User License Agreement
- as set forth by Mojang AB.
- The Minecraft EULA can be viewed at https://account.mojang.com/documents/minecraft_eula
- CanaryMod Team, PlayBlack, Visual Illusions Entertainment, CanaryLib, CanaryMod,
- and its contributors are NOT affiliated with, endorsed, or sponsored by Mojang AB, makers of Minecraft.
- "Minecraft" is a trademark of Notch Development AB
- "CanaryMod" name is used with permission from FallenMoonNetwork.
-
-
-
-
-
- scm:git:git://github.com/CanaryModTeam/CanaryLib.git
- https://github.com/CanaryModTeam/CanaryLib
- scm:git:git@github.com:CanaryModTeam/CanaryLib.git
-
-
-
- https://github.com/CanaryModTeam/CanaryLib/issues
- GitHub
-
-
-
- Jenkins
- http://ci.visualillusionsent.net/job/CanaryLib/
-
-
-
-
- vi-repo
- Visual Illusions Repository
- http://repo.visualillusionsent.net/repository/internal/
-
-
- vi-repo
- Visual Illusions Repository
- http://repo.visualillusionsent.net/repository/snapshots/
-
-
-
-
- vi-repo
- Visual Illusions Repository
- http://repo.visualillusionsent.net/repository/internal/
-
-
- vi-snapshots
- Visual Illusions Snapshots Repository
- http://repo.visualillusionsent.net/repository/snapshots/
-
-
- mojang
- Minecraft Libraries
- https://libraries.minecraft.net
-
-
- mcstats
- mcstats.org releases
- http://repo.mcstats.org/content/repositories/releases/
-
-
- mcstats.snapshots
- MCStats Repository
- http://repo.mcstats.org/content/repositories/snapshots/
-
-
-
-
-
-
- net.visualillusionsent
- viutils
- ${viutils}
- compile
-
-
- org.jdom
- jdom2
- ${jdom}
- compile
-
-
- com.mchange
- c3p0
- ${c3p0}
- compile
-
-
- org.apache.logging.log4j
- log4j-api
- ${log4j}
- compile
-
-
- com.google.guava
- guava
- ${guava}
- compile
-
-
- com.mojang
- authlib
- ${authlib}
- compile
-
-
- com.googlecode.json-simple
- json-simple
- ${jsonSimple}
- compile
-
-
- org.mcstats.standalone
- metrics
- ${metrics}
- compile
-
-
-
- org.xerial
- sqlite-jdbc
- ${sqlite}
- runtime
-
-
- mysql
- mysql-connector-java
- ${mysql}
- runtime
-
-
-
- junit
- junit
- ${junit}
- test
-
-
-
-
- clean install
-
- ${project.name}-${project.version}${build.number}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 2.3.2
-
- 1.6
- 1.6
-
-
-
- compile
-
- compile
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 2.0
-
-
- package
-
- shade
-
-
- true
- shaded
-
-
-
-
-
-
- *:*
-
- META-INF/*.SF
- META-INF/*.DSA
- META-INF/*.RSA
-
-
-
-
-
-
- org.mcstats
- net.canarymod.metrics
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 2.3.1
-
-
- true
-
- true
- true
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-release-plugin
- 2.2.2
-
- jar:jar
- jar:jar
- @{project.version}
-
-
-
-
-
-
-
- attach-sources-javadoc
-
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
- 2.2.1
-
-
- attach-sources
-
- jar
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 2.7
-
- true
- ${project.name} ${project.version}
- Generated: ${maven.build.timestamp}
-
-
- http://docs.visualillusionsent.net/VIUtils/1.4.0/
- http://www.jdom.org/docs/apidocs/
-
-
-
-
- PluginDev
- a
- PluginDev:
-
-
-
-
-
- attach-javadocs
-
- jar
-
-
-
-
-
-
-
-
-
- jenkins
-
-
- BUILD_NUMBER
-
-
-
- -${BUILD_NUMBER}
-
-
-
-
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 00000000..ae239c6c
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = name
+
diff --git a/src/main/java/net/canarymod/Canary.java b/src/main/java/net/canarymod/Canary.java
index 071aa89b..d031d382 100644
--- a/src/main/java/net/canarymod/Canary.java
+++ b/src/main/java/net/canarymod/Canary.java
@@ -1,6 +1,6 @@
package net.canarymod;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import net.canarymod.api.Server;
import net.canarymod.api.entity.living.humanoid.Player;
import net.canarymod.api.factory.Factory;
@@ -14,7 +14,6 @@
import net.canarymod.help.HelpManager;
import net.canarymod.hook.HookExecutor;
import net.canarymod.kit.KitProvider;
-import net.canarymod.logger.Logman;
import net.canarymod.metrics.CanaryMetrics;
import net.canarymod.motd.MessageOfTheDay;
import net.canarymod.permissionsystem.PermissionManager;
@@ -31,6 +30,8 @@
import net.canarymod.util.JsonNBTUtility;
import net.canarymod.warp.WarpProvider;
import net.visualillusionsent.utils.JarUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@@ -47,7 +48,7 @@
* @author Jason (darkdiplomat)
*/
public abstract class Canary implements TaskOwner {
- public final static Logman log;
+ public final static Logger log;
private static boolean latePluginsLoaded, earlyPluginsLoaded;
private static String jarPath;
private static CanaryMetrics metrics;
@@ -80,7 +81,7 @@ public abstract class Canary implements TaskOwner {
static {
System.out.println("Please wait while the libraries initialize...");
- log = Logman.getLogman(getImplementationTitle());
+ log = LoggerFactory.getLogger(getImplementationTitle());
try {
PluginLifecycleFactory.registerLifecycle("java", JavaPluginLifecycle.class);
@@ -425,7 +426,7 @@ public void reload() {
* @return specification title
*/
public static String getSpecificationTitle() {
- return Objects.firstNonNull(Canary.class.getPackage().getSpecificationTitle(), "CanaryLib");
+ return MoreObjects.firstNonNull(Canary.class.getPackage().getSpecificationTitle(), "CanaryLib");
}
/**
@@ -434,7 +435,7 @@ public static String getSpecificationTitle() {
* @return specification version
*/
public static String getSpecificationVersion() {
- return Objects.firstNonNull(Canary.class.getPackage().getSpecificationVersion(), "dev");
+ return MoreObjects.firstNonNull(Canary.class.getPackage().getSpecificationVersion(), "dev");
}
/**
@@ -443,7 +444,7 @@ public static String getSpecificationVersion() {
* @return implementation title
*/
public static String getImplementationTitle() {
- return Objects.firstNonNull(Canary.class.getPackage().getImplementationTitle(), "CanaryMod");
+ return MoreObjects.firstNonNull(Canary.class.getPackage().getImplementationTitle(), "CanaryMod");
}
/**
@@ -452,7 +453,7 @@ public static String getImplementationTitle() {
* @return implementation version
*/
public static String getImplementationVersion() {
- return Objects.firstNonNull(Canary.class.getPackage().getImplementationVersion(), "dev");
+ return MoreObjects.firstNonNull(Canary.class.getPackage().getImplementationVersion(), "dev");
}
public static long getBuildNumber() {
diff --git a/src/main/java/net/canarymod/api/attributes/GenericAttribute.java b/src/main/java/net/canarymod/api/attributes/GenericAttribute.java
index 4cb13794..c2c1e0b0 100644
--- a/src/main/java/net/canarymod/api/attributes/GenericAttribute.java
+++ b/src/main/java/net/canarymod/api/attributes/GenericAttribute.java
@@ -14,6 +14,9 @@ public enum GenericAttribute {
MOVEMENTSPEED("generic.movementSpeed"),
ATTACKDAMAGE("generic.attackDamage"),
KNOCKBACKRESIST("generic.knockbackResistance"),
+ ARMOR("generic.armor"),
+ ATTACKSPEED("generic.attackSpeed"),
+ LUCK("generic.luck"),
;
private final String nmsName;
@@ -29,5 +32,4 @@ public Attribute getAttribute() {
public String getNativeName() {
return this.nmsName;
}
-
}
diff --git a/src/main/java/net/canarymod/api/entity/Arrow.java b/src/main/java/net/canarymod/api/entity/Arrow.java
index c9589e5b..b8b52a74 100644
--- a/src/main/java/net/canarymod/api/entity/Arrow.java
+++ b/src/main/java/net/canarymod/api/entity/Arrow.java
@@ -7,6 +7,19 @@
*/
public interface Arrow extends Entity, Projectile {
+ enum ArrowType {
+ NORMAL,
+ SPECTRAL,
+ TIPPED
+ }
+
+ /**
+ * Gets the type of this Arrow. Currently either NORMAL, SPECTRAL or TIPPED
+ *
+ * @return the type
+ */
+ ArrowType getArrowType();
+
/**
* Returns true if this Arrow can be retrieved by a Player
*
diff --git a/src/main/java/net/canarymod/api/entity/EntityType.java b/src/main/java/net/canarymod/api/entity/EntityType.java
index a7c9ed93..f1407460 100644
--- a/src/main/java/net/canarymod/api/entity/EntityType.java
+++ b/src/main/java/net/canarymod/api/entity/EntityType.java
@@ -68,9 +68,11 @@ public enum EntityType {
PIG(90, GENERIC_ANIMAL),
PIGZOMBIE(57, GENERIC_MOB),
PLAYER(48, GENERIC_LIVING),
+ POLARBEAR(102, GENERIC_ANIMAL),
POTION(16, GENERIC_THROWABLE),
PRIEST(120, GENERIC_LIVING),
SHEEP(91, GENERIC_ANIMAL),
+ SHULKER(68, GENERIC_MOB),
SILVERFISH(60, GENERIC_MOB),
SKELETON(51, GENERIC_MOB),
SKELETONHORSE(100, GENERIC_ANIMAL),
@@ -97,7 +99,7 @@ public enum EntityType {
private final short id;
private EntityType subtype;
- private EntityType(int id, EntityType subtype) {
+ EntityType(int id, EntityType subtype) {
this.id = (short)id;
this.subtype = subtype;
}
diff --git a/src/main/java/net/canarymod/api/entity/TippedArrow.java b/src/main/java/net/canarymod/api/entity/TippedArrow.java
new file mode 100644
index 00000000..11d3ce75
--- /dev/null
+++ b/src/main/java/net/canarymod/api/entity/TippedArrow.java
@@ -0,0 +1,35 @@
+package net.canarymod.api.entity;
+
+import net.canarymod.api.potion.PotionEffect;
+import net.canarymod.api.potion.PotionType;
+
+import java.util.Set;
+
+/**
+ * Tipped Arrow wrapper
+ *
+ * @author Jamie Mansfield (jamierocks)
+ */
+public interface TippedArrow extends Arrow {
+
+ /**
+ * Gets the type of potion used by this Arrow
+ *
+ * @return the potion type
+ */
+ PotionType getPotionType();
+
+ /**
+ * Gets the potion effects applied to this Arrow
+ *
+ * @return the potion effects
+ */
+ Set getPotionEffects();
+
+ /**
+ * Applies the specified potion effects to this Arrow
+ *
+ * @param potionEffects the potion effect(s) to apply
+ */
+ void addPotionEffects(PotionEffect... potionEffects);
+}
diff --git a/src/main/java/net/canarymod/api/entity/living/animal/PolarBear.java b/src/main/java/net/canarymod/api/entity/living/animal/PolarBear.java
new file mode 100644
index 00000000..59bb99d9
--- /dev/null
+++ b/src/main/java/net/canarymod/api/entity/living/animal/PolarBear.java
@@ -0,0 +1,10 @@
+package net.canarymod.api.entity.living.animal;
+
+/**
+ * Polar Bear Wrapper
+ *
+ * @author Jamie Mansfield (jamierocks)
+ */
+public interface PolarBear extends EntityAnimal {
+
+}
diff --git a/src/main/java/net/canarymod/api/entity/living/humanoid/npc/NPCBehaviorRegistry.java b/src/main/java/net/canarymod/api/entity/living/humanoid/npc/NPCBehaviorRegistry.java
index 59001473..2f724417 100644
--- a/src/main/java/net/canarymod/api/entity/living/humanoid/npc/NPCBehaviorRegistry.java
+++ b/src/main/java/net/canarymod/api/entity/living/humanoid/npc/NPCBehaviorRegistry.java
@@ -1,5 +1,7 @@
package net.canarymod.api.entity.living.humanoid.npc;
+import static net.canarymod.Canary.log;
+
import com.google.common.collect.ArrayListMultimap;
import net.canarymod.ToolBox;
import net.canarymod.api.entity.living.humanoid.NonPlayableCharacter;
@@ -10,8 +12,6 @@
import java.util.Iterator;
import java.util.List;
-import static net.canarymod.Canary.log;
-
/**
* @author Jason (darkdiplomat)
*/
@@ -21,7 +21,7 @@ public final class NPCBehaviorRegistry {
/**
* Registers a new {@link net.canarymod.api.entity.living.humanoid.npc.NPCBehaviorListener}
*
- * @param listner
+ * @param listener
* the {@link net.canarymod.api.entity.living.humanoid.npc.NPCBehaviorListener} to be added
* @param npc
* the {@link net.canarymod.api.entity.living.humanoid.NonPlayableCharacter} associated with the listener
@@ -167,7 +167,7 @@ public static void execute(NonPlayableCharacter npc, NPCAI npcai) {
listener.execute(npcai);
}
catch (NPCAIExcutionException npcaieex) {
- log.error(npcaieex.getCause());
+ log.error("Failed to execute NPC AI", npcaieex);
}
}
}
diff --git a/src/main/java/net/canarymod/api/entity/living/monster/Shulker.java b/src/main/java/net/canarymod/api/entity/living/monster/Shulker.java
new file mode 100644
index 00000000..3896dd8a
--- /dev/null
+++ b/src/main/java/net/canarymod/api/entity/living/monster/Shulker.java
@@ -0,0 +1,12 @@
+package net.canarymod.api.entity.living.monster;
+
+import net.canarymod.api.entity.living.Golem;
+
+/**
+ * Shulker wrapper
+ *
+ * @author Jamie Mansfield (jamierocks)
+ */
+public interface Shulker extends EntityMob, Golem {
+
+}
diff --git a/src/main/java/net/canarymod/api/inventory/Enchantment.java b/src/main/java/net/canarymod/api/inventory/Enchantment.java
index 6de979e7..a49de7e8 100644
--- a/src/main/java/net/canarymod/api/inventory/Enchantment.java
+++ b/src/main/java/net/canarymod/api/inventory/Enchantment.java
@@ -39,6 +39,8 @@ enum Type {
//
DepthStrider(8),
//
+ FrostWalker(9),
+ //
Sharpness(16),
//
Smite(17),
@@ -71,6 +73,7 @@ enum Type {
//
Lure(62),
//
+ Mending(70),
;
diff --git a/src/main/java/net/canarymod/api/inventory/PlayerInventory.java b/src/main/java/net/canarymod/api/inventory/PlayerInventory.java
index 979223fc..bcffdfa7 100644
--- a/src/main/java/net/canarymod/api/inventory/PlayerInventory.java
+++ b/src/main/java/net/canarymod/api/inventory/PlayerInventory.java
@@ -81,6 +81,13 @@ public interface PlayerInventory extends Inventory {
*/
Item getItemInHand();
+ /**
+ * Gets the current {@link Item} in offhand
+ *
+ * @return the {@link Item} in offhand
+ */
+ Item getItemInOffhand();
+
/**
* Gets the current {@link Item} on the cursor
*
diff --git a/src/main/java/net/canarymod/api/potion/PotionEffectType.java b/src/main/java/net/canarymod/api/potion/PotionEffectType.java
index 7f033814..e3eb3e75 100644
--- a/src/main/java/net/canarymod/api/potion/PotionEffectType.java
+++ b/src/main/java/net/canarymod/api/potion/PotionEffectType.java
@@ -53,6 +53,15 @@ public enum PotionEffectType {
//
SATURATION(23),
//
+ GLOWING(24),
+ //
+ LEVITATION(25),
+ //
+ LUCK(26),
+ //
+ BADLUCK(27),
+ //
+
;
private final int id;
diff --git a/src/main/java/net/canarymod/api/scoreboard/CriteriaType.java b/src/main/java/net/canarymod/api/scoreboard/CriteriaType.java
index cf0baecf..d7f7601b 100644
--- a/src/main/java/net/canarymod/api/scoreboard/CriteriaType.java
+++ b/src/main/java/net/canarymod/api/scoreboard/CriteriaType.java
@@ -12,7 +12,13 @@ public enum CriteriaType {
DEATH_COUNT("deathCount"),
PLAYER_KILL_COUNT("playerKillCount"),
TOTAL_KILL_COUNT("totalKillCount"),
- HEALTH("health");
+ HEALTH("health"),
+ FOOD("food"),
+ AIR("air"),
+ ARMOR("armor"),
+ XP("xp"),
+ LEVEL("level"),
+ ;
private String protocol;
diff --git a/src/main/java/net/canarymod/api/statistics/Statistics.java b/src/main/java/net/canarymod/api/statistics/Statistics.java
index d0309869..a5e387c9 100644
--- a/src/main/java/net/canarymod/api/statistics/Statistics.java
+++ b/src/main/java/net/canarymod/api/statistics/Statistics.java
@@ -38,12 +38,34 @@ public enum Statistics {
JUNKFISHED("junkFished"),
TREASUREFISHED("treasureFished"),
TALKEDTOVILLAGER("talkedToVillager"),
- TRADEDWITHVILLAGER("tradedWithVillager"),;
+ TRADEDWITHVILLAGER("tradedWithVillager"),
+ CAKESLICESEATEN("cakeSlicesEaten"),
+ CAULDRONFILLED("cauldronFilled"),
+ CAULDRONUSED("cauldronUsed"),
+ ARMORCLEANED("armorCleaned"),
+ BANNERCLEANED("bannerCleaned"),
+ BREWINGSTANDINTERACTION("brewingstandInteraction"),
+ BEACONINTERACTION("beaconInteraction"),
+ DROPPERINSPECTED("dropperInspected"),
+ HOPPERINSPECTED("hopperInspected"),
+ DISPENSERINSPECTED("dispenserInspected"),
+ NOTEBLOCKPLAYED("noteblockPlayed"),
+ NOTEBLOCKTUNED("noteblockTuned"),
+ FLOWERPOTTED("flowerPotted"),
+ TRAPPEDCHESTTRIGGERED("trappedChestTriggered"),
+ ENDERCHESTOPENED("enderchestOpened"),
+ ITEMENCHANTED("itemEnchanted"),
+ RECORDPLAYED("recordPlayed"),
+ FURNACEINTERACTION("furnaceInteraction"),
+ CRAFTINGTABLEINTERACTION("craftingTableInteraction"),
+ CHESTOPENED("chestOpened"),
+ SLEEPINBED("sleepInBed"),
+ ;
private final String nmsName;
private final static HashMap statisticsHashMap = Maps.newHashMap();
- private Statistics(String nmsName) {
+ Statistics(String nmsName) {
this.nmsName = "stat.".concat(nmsName);
}
diff --git a/src/main/java/net/canarymod/api/world/TreeType.java b/src/main/java/net/canarymod/api/world/TreeType.java
index dcc04066..3a6c2aab 100644
--- a/src/main/java/net/canarymod/api/world/TreeType.java
+++ b/src/main/java/net/canarymod/api/world/TreeType.java
@@ -20,6 +20,7 @@ public enum TreeType {
JUNGLEBUSH,
MEGAJUNGLE,
ACACIA,
+ CHORUSPLANT,
/* I know, these technically aren't trees, but the Bukkit API has them and people will complain if these are here... */
REDMUSHROOM,
diff --git a/src/main/java/net/canarymod/api/world/blocks/BlockType.java b/src/main/java/net/canarymod/api/world/blocks/BlockType.java
index eeac2862..4b9a06bd 100644
--- a/src/main/java/net/canarymod/api/world/blocks/BlockType.java
+++ b/src/main/java/net/canarymod/api/world/blocks/BlockType.java
@@ -684,6 +684,28 @@ public final class BlockType {
public static final BlockType JungleDoor = new BlockType(195, 0, "minecraft:jungle_door");
public static final BlockType AcaciaDoor = new BlockType(196, 0, "minecraft:acacia_door");
public static final BlockType DarkOakDoor = new BlockType(197, 0, "minecraft:dark_oak_door");
+ public static final BlockType EndRod = new BlockType(198, 0, "minecraft:end_rod");
+ public static final BlockType ChrousPlant = new BlockType(199, 0, "minecraft:chrous_plant");
+ public static final BlockType ChorusFlower = new BlockType(200, 0, "minecraft:chorus_flower");
+ public static final BlockType PurpurBlock = new BlockType(201, 0, "minecraft:purpur_block");
+ public static final BlockType PurpurPillar = new BlockType(202, 0, "minecraft:purpur_pillar");
+ public static final BlockType PurpurStairs = new BlockType(203, 0, "minecraft:purpur_stairs");
+ public static final BlockType PurpurDoubleSlab = new BlockType(204, 0, "minecraft:purpur_double_slab");
+ public static final BlockType PurpurSlab = new BlockType(205, 0, "minecraft:purpur_slab");
+ public static final BlockType EndStoneBricks = new BlockType(206, 0, "minecraft:end_bricks");
+ public static final BlockType BeetrootSeeds = new BlockType(207, 0, "minecraft:beetroot");
+ public static final BlockType GrassPath = new BlockType(208, 0, "minecraft:grass_path");
+ public static final BlockType EndGateway = new BlockType(209, 0, "minecraft:end_gateway");
+ public static final BlockType RepeatingCommandBlock = new BlockType(210, 0, "minecraft:repeating_command_block");
+ public static final BlockType ChainCommandBlock = new BlockType(211, 0, "minecraft:chain_command_block");
+ public static final BlockType FrostedIce = new BlockType(212, 0, "minecraft:frosted_ice");
+ public static final BlockType Magma = new BlockType(213, 0, "minecraft:magma");
+ public static final BlockType NetherWartBlock = new BlockType(214, 0, "minecraft:nether_wart_block");
+ public static final BlockType RedNetherBrick = new BlockType(215, 0, "minecraft:red_nether_brick");
+ public static final BlockType BoneBlock = new BlockType(216, 0, "minecraft:bone_block");
+ public static final BlockType StructureVoid = new BlockType(217, 0, "minecraft:structure_void");
+
+ public static final BlockType StructureBlock = new BlockType(255, 0, "minecraft:structure_block");
private static HashMap> blockTypes;
private static HashMap> blocksByIdAndData;
diff --git a/src/main/java/net/canarymod/api/world/effects/Particle.java b/src/main/java/net/canarymod/api/world/effects/Particle.java
index 69573f26..8141dc4c 100644
--- a/src/main/java/net/canarymod/api/world/effects/Particle.java
+++ b/src/main/java/net/canarymod/api/world/effects/Particle.java
@@ -49,7 +49,12 @@ public enum Type {
BLOCK_DUST("blockdust_"),
WATER_DROP("droplet"),
ITEM_TAKE("take"),
- MOB_APPEARANCE("mobappearance"),;
+ MOB_APPEARANCE("mobappearance"),
+ DRAGON_BREATH("dragonbreath"),
+ END_ROD("endRod"),
+ DAMAGE_INDICATOR("damageIndicator"),
+ SWEEP_ATTACK("sweepAttack"),
+ ;
private String mcName;
diff --git a/src/main/java/net/canarymod/api/world/effects/SoundEffect.java b/src/main/java/net/canarymod/api/world/effects/SoundEffect.java
index 9b8600f6..70d7b478 100644
--- a/src/main/java/net/canarymod/api/world/effects/SoundEffect.java
+++ b/src/main/java/net/canarymod/api/world/effects/SoundEffect.java
@@ -13,326 +13,468 @@ public class SoundEffect {
* @author Jason (darkdiplomat)
*/
public enum Type {
- AMBIENCE_CAVE("ambient.cave.cave"),
- //
- AMBIENCE_RAIN("ambient.weather.rain"),
- //
- AMBIENCE_THUNDER("ambient.weather.thunder"),
- //
- ANVIL_BREAK("random.anvil_break"),
- //
- ANVIL_LAND("random.anvil_land"),
- //
- ANVIL_USE("random.anvil_use"),
- //
- BOW("random.bow"),
- //
- BOW_HIT("random.bowhit"),
- //
- BREATH("random.breath"),
- //
- BURP("random.burp"),
- //
- CHEST_CLOSED("random.chestclosed"),
- //
- CHEST_OPEN("random.chestopen"),
- //
- CLICK("random.click"),
- //
- DOOR_CLOSE("random.door_close"),
- //
- DOOR_OPEN("random.door_open"),
- //
- DRINK("random.drink"),
- //
- EAT("random.eat"),
- //
- EXPLODE("random.explode"),
- //
- FALL_BIG("damage.fallbig"),
- //
- FALL_SMALL("damage.fallsmall"),
- //
- FIRE("fire.fire"),
- //
- FIRE_IGNITE("fire.ignite"),
- //
- FIZZ("random.fizz"),
- //
- FUSE("random.fuse"),
- //
- GLASS("random.glass"),
- //
- HURT("random.classic_hurt"),
- //
- HURT_FLESH("damage.hit"),
- //
- ITEM_BREAK("random.break"),
- //
- ITEM_PICKUP("random.pop"),
- //
- LAVA("liquid.lava"),
- //
- LAVA_POP("liquid.lavapop"),
- //
- LEVEL_UP("random.levelup"),
- //
- LIQUID_SPLASH("liquid.splash"),
- //
- MINECART_BASE("minecart.base"),
- //
- MINECART_INSIDE("minecart.inside"),
- //
- NOTE_BASS("note.bass"),
- //
- NOTE_PIANO("note.harp"),
- //
- NOTE_BASS_DRUM("note.bd"),
- //
- NOTE_HAT("note.hat"),
- //
- NOTE_BASS_ATTACK("note.bassattack"),
- //
- NOTE_SNARE("note.snare"),
- //
- NOTE_PLING("note.pling"),
- //
- ORB("random.orb"),
- //
- PISTON_OUT("tile.piston.out"),
- //
- PISTON_IN("tile.piston.in"),
- //
- PORTAL("portal.portal"),
- //
- PORTAL_TRAVEL("portal.travel"),
- //
- PORTAL_TRIGGER("portal.trigger"),
- //
- SPLASH("random.splash"),
- //
- STEP_GRASS("step.grass"),
- //
- STEP_GRAVEL("step.gravel"),
- //
- STEP_LADDER("step.ladder"),
- //
- STEP_SAND("step.sand"),
- //
- STEP_SNOW("step.snow"),
- //
- STEP_STONE("step.stone"),
- //
- STEP_WOOD("step.wood"),
- //
- STEP_WOOL("step.cloth"),
- //
- SWIM("liquid.swim"),
- //
- WATER("liquid.water"),
- //
- WOOD_CLICK("random.wood click"),
- //
- // Das Mob sounds
- BAT_DEATH("mob.bat.death"),
- //
- BAT_HURT("mob.bat.hurt"),
- //
- BAT_IDLE("mob.bat.idle"),
- //
- BAT_LOOP("mob.bat.loop"),
- //
- BAT_TAKEOFF("mob.bat.takeoff"),
- //
- BLAZE_BREATH("mob.blaze.breath"),
- //
- BLAZE_DEATH("mob.blaze.death"),
- //
- BLAZE_HIT("mob.blaze.hit"),
- //
- CAT_HISS("mob.cat.hiss"),
- //
- CAT_HIT("mob.cat.hitt"),
- //
- CAT_MEOW("mob.cat.meow"),
- //
- CAT_PURR("mob.cat.purr"),
- //
- CAT_PURREOW("mob.cat.purreow"),
- //
- CHICKEN_HURT("mob.chicken.hurt"),
- //
- CHICKEN_PLOP("mob.chicken.plop"),
- //
- CHICKEN_SAY("mob.chicken.say"),
- //
- CHICKEN_STEP("mob.chicken.step"),
- //
- COW_SAY("mob.cow.say"),
- //
- COW_HURT("mob.cow.hurt"),
- //
- COW_STEP("mob.cow.step"),
- //
- CREEPER_DEATH("mob.creeper.death"),
- //
- CREEPER_SAY("mob.creeper.say"),
- //
- ENDERDRAGON_END("mob.enderdragon.end"),
- //
- ENDERDRAGON_GROWL("mob.enderdragon.growl"),
- //
- ENDERDRAGON_HIT("mob.enderdragon.hit"),
- //
- ENDERDRAGON_WINGS("mob.enderdragon.wings"),
- //
- ENDERMAN_DEATH("mob.endermen.death"),
- //
- ENDERMAN_HIT("mob.endermen.hit"),
- //
- ENDERMAN_IDLE("mob.endermen.idle"),
- //
- ENDERMAN_PORTAL("mob.endermen.portal"),
- //
- ENDERMAN_SCREAM("mob.endermen.scream"),
- //
- ENDERMAN_STARE("mob.endermen.stare"),
- //
- GHAST_SCREAM("mob.ghast.scream"),
- //
- GHAST_AFFECTIONATE_SCREAM("mob.ghast.affectionate scream"),
- //
- GHAST_CHARGE("mob.ghast.charge"),
- //
- GHAST_DEATH("mob.ghast.death"),
- //
- GHAST_FIREBALL("mob.ghast.fireball"),
- //
- GHAST_MOAN("mob.ghast.moan"),
- //
- IRONGOLEM_DEATH("mob.irongolem.death"),
- //
- IRONGOLEM_HIT("mob.irongolem.hit"),
- //
- IRONGOLEM_THROW("mob.irongolem.throw"),
- //
- IRONGOLEM_WALK("mob.irongolem.walk"),
- //
- MAGMACUBE_BIG("mob.magmacube.big"),
- //
- MAGMACUBE_JUMP("mob.magmacube.jump"),
- //
- MAGMACUBE_SMALL("mob.magmacube.small"),
- //
- PIG_DEATH("mob.pig.death"),
- //
- PIG_SAY("mob.pig.say"),
- //
- PIG_STEP("mob.pig.step"),
- //
- SHEEP_SAY("mob.sheep.say"),
- //
- SHEEP_SHEAR("mob.sheep.shear"),
- //
- SHEEP_STEP("mob.sheep.step"),
- //
- SILVERFISH_HIT("mob.silverfish.hit"),
- //
- SILVERFISH_KIL("mob.silverfish.kill"),
- //
- SILVERFISH_SAY("mob.silverfish.say"),
- //
- SILVERFISH_STEP("mob.silverfish.step"),
- //
- SKELETON_DEATH("mob.skeleton.death"),
- //
- SKELETON_HURT("mob.skeleton.hurt"),
- //
- SKELETON_SAY("mob.skeleton.say"),
- //
- SKELETON_STEP("mob.skeleton.step"),
- //
- SLIME_ATTACK("mob.slime.attack"),
- //
- SLIME_BIG("mob.slime.big"),
- //
- SLIME_SMALL("mob.slime.small"),
- //
- SPIDER_DEATH("mob.spider.death"),
- //
- SPIDER_SAY("mob.spider.say"),
- //
- SPIDER_STEP("mob.spider.step"),
- //
- WITHER_DEATH("mob.wither.death"),
- //
- WITHER_HURT("mob.wither.hurt"),
- //
- WITHER_IDLE("mob.wither.idle"),
- //
- WITHER_SHOOT("mob.wither.shoot"),
- //
- WITHER_SPAWN("mob.wither.spawn"),
- //
- WOLF_BARK("mob.wolf.bark"),
- //
- WOLF_DEATH("mob.wolf.death"),
- //
- WOLF_GROWL("mob.wolf.growl"),
- //
- WOLF_HOWL("mob.wolf.howl"),
- //
- WOLF_HURT("mob.wolf.hurt"),
- //
- WOLF_PANT("mob.wolf.panting"),
- //
- WOLF_SHAKE("mob.wolf.shake"),
- //
- WOLF_STEP("mob.wolf.step"),
- //
- WOLF_WHINE("mob.wolf.whine"),
- //
- ZOMBIE_METAL("mob.zombie.metal"),
- //
- ZOMBIE_WOOD("mob.zombie.wood"),
- //
- ZOMBIE_WOODBREAK("mob.zombie.woodbreak"),
- //
- ZOMBIE_SAY("mob.zombie.say"),
- //
- ZOMBIE_DEATH("mob.zombie.death"),
- //
- ZOMBIE_HURT("mob.zombie.hurt"),
- //
- ZOMBIE_INFECT("mob.zombie.infect"),
- //
- ZOMBIE_UNFECT("mob.zombie.unfect"),
- //
- ZOMBIE_REMEDY("mob.zombie.remedy"),
- //
- ZOMBIE_PIG_IDLE("mob.zombiepig.zpig"),
- //
- ZOMBIE_PIG_ANGRY("mob.zombiepig.zpigangry"),
- //
- ZOMBIE_PIG_DEATH("mob.zombiepig.zpigdeath"),
- //
- ZOMBIE_PIG_HURT("mob.zombiepig.zpighurt"),
- //
- // Digging Sounds
- DIG_CLOTH("dig.cloth"),
- //
- DIG_GRASS("dig.grass"),
- //
- DIG_GRAVEL("dig.gravel"),
- //
- DIG_SAND("dig.sand"),
- //
- DIG_SNOW("dig.snow"),
- //
- DIG_STONE("dig.stone"),
- //
- DIG_WOOD("dig.wood"),
- //
+ AMBIENT_CAVE("ambient.cave"),
+ BLOCK_ANVIL_BREAK("block.anvil.break"),
+ BLOCK_ANVIL_DESTROY("block.anvil.destroy"),
+ BLOCK_ANVIL_FALL("block.anvil.fall"),
+ BLOCK_ANVIL_HIT("block.anvil.hit"),
+ BLOCK_ANVIL_LAND("block.anvil.land"),
+ BLOCK_ANVIL_PLACE("block.anvil.place"),
+ BLOCK_ANVIL_STEP("block.anvil.step"),
+ BLOCK_ANVIL_USE("block.anvil.use"),
+ ENTITY_ARMORSTAND_BREAK("entity.armorstand.break"),
+ ENTITY_ARMORSTAND_FALL("entity.armorstand.fall"),
+ ENTITY_ARMORSTAND_HIT("entity.armorstand.hit"),
+ ENTITY_ARMORSTAND_PLACE("entity.armorstand.place"),
+ ITEM_ARMOR_EQUIP_CHAIN("item.armor.equip_chain"),
+ ITEM_ARMOR_EQUIP_DIAMOND("item.armor.equip_diamond"),
+ ITEM_ARMOR_EQUIP_GENERIC("item.armor.equip_generic"),
+ ITEM_ARMOR_EQUIP_GOLD("item.armor.equip_gold"),
+ ITEM_ARMOR_EQUIP_IRON("item.armor.equip_iron"),
+ ITEM_ARMOR_EQUIP_LEATHER("item.armor.equip_leather"),
+ ENTITY_ARROW_HIT("entity.arrow.hit"),
+ ENTITY_ARROW_HIT_PLAYER("entity.arrow.hit_player"),
+ ENTITY_ARROW_SHOOT("entity.arrow.shoot"),
+ ENTITY_BAT_AMBIENT("entity.bat.ambient"),
+ ENTITY_BAT_DEATH("entity.bat.death"),
+ ENTITY_BAT_HURT("entity.bat.hurt"),
+ ENTITY_BAT_LOOP("entity.bat.loop"),
+ ENTITY_BAT_TAKEOFF("entity.bat.takeoff"),
+ ENTITY_BLAZE_AMBIENT("entity.blaze.ambient"),
+ ENTITY_BLAZE_BURN("entity.blaze.burn"),
+ ENTITY_BLAZE_DEATH("entity.blaze.death"),
+ ENTITY_BLAZE_HURT("entity.blaze.hurt"),
+ ENTITY_BLAZE_SHOOT("entity.blaze.shoot"),
+ ENTITY_BOBBER_SPLASH("entity.bobber.splash"),
+ ENTITY_BOBBER_THROW("entity.bobber.throw"),
+ ITEM_BOTTLE_FILL("item.bottle.fill"),
+ ITEM_BOTTLE_FILL_DRAGONBREATH("item.bottle.fill_dragonbreath"),
+ BLOCK_BREWING_STAND_BREW("block.brewing_stand.brew"),
+ ITEM_BUCKET_EMPTY("item.bucket.empty"),
+ ITEM_BUCKET_EMPTY_LAVA("item.bucket.empty_lava"),
+ ITEM_BUCKET_FILL("item.bucket.fill"),
+ ITEM_BUCKET_FILL_LAVA("item.bucket.fill_lava"),
+ ENTITY_CAT_AMBIENT("entity.cat.ambient"),
+ ENTITY_CAT_DEATH("entity.cat.death"),
+ ENTITY_CAT_HISS("entity.cat.hiss"),
+ ENTITY_CAT_HURT("entity.cat.hurt"),
+ ENTITY_CAT_PURR("entity.cat.purr"),
+ ENTITY_CAT_PURREOW("entity.cat.purreow"),
+ BLOCK_CHEST_CLOSE("block.chest.close"),
+ BLOCK_CHEST_LOCKED("block.chest.locked"),
+ BLOCK_CHEST_OPEN("block.chest.open"),
+ ENTITY_CHICKEN_AMBIENT("entity.chicken.ambient"),
+ ENTITY_CHICKEN_DEATH("entity.chicken.death"),
+ ENTITY_CHICKEN_EGG("entity.chicken.egg"),
+ ENTITY_CHICKEN_HURT("entity.chicken.hurt"),
+ ENTITY_CHICKEN_STEP("entity.chicken.step"),
+ BLOCK_CHORUS_FLOWER_DEATH("block.chorus_flower.death"),
+ BLOCK_CHORUS_FLOWER_GROW("block.chorus_flower.grow"),
+ ITEM_CHORUS_FRUIT_TELEPORT("item.chorus_fruit.teleport"),
+ BLOCK_CLOTH_BREAK("block.cloth.break"),
+ BLOCK_CLOTH_FALL("block.cloth.fall"),
+ BLOCK_CLOTH_HIT("block.cloth.hit"),
+ BLOCK_CLOTH_PLACE("block.cloth.place"),
+ BLOCK_CLOTH_STEP("block.cloth.step"),
+ BLOCK_COMPARATOR_CLICK("block.comparator.click"),
+ ENTITY_COW_AMBIENT("entity.cow.ambient"),
+ ENTITY_COW_DEATH("entity.cow.death"),
+ ENTITY_COW_HURT("entity.cow.hurt"),
+ ENTITY_COW_MILK("entity.cow.milk"),
+ ENTITY_COW_STEP("entity.cow.step"),
+ ENTITY_CREEPER_DEATH("entity.creeper.death"),
+ ENTITY_CREEPER_HURT("entity.creeper.hurt"),
+ ENTITY_CREEPER_PRIMED("entity.creeper.primed"),
+ BLOCK_DISPENSER_DISPENSE("block.dispenser.dispense"),
+ BLOCK_DISPENSER_FAIL("block.dispenser.fail"),
+ BLOCK_DISPENSER_LAUNCH("block.dispenser.launch"),
+ BLOCK_ENCHANTMENT_TABLE_USE("block.enchantment_table.use"),
+ ENTITY_DONKEY_AMBIENT("entity.donkey.ambient"),
+ ENTITY_DONKEY_ANGRY("entity.donkey.angry"),
+ ENTITY_DONKEY_CHEST("entity.donkey.chest"),
+ ENTITY_DONKEY_DEATH("entity.donkey.death"),
+ ENTITY_DONKEY_HURT("entity.donkey.hurt"),
+ ENTITY_EGG_THROW("entity.egg.throw"),
+ ENTITY_ELDER_GUARDIAN_AMBIENT("entity.elder_guardian.ambient"),
+ ENTITY_ELDERGUARDIAN_AMBIENTLAND("entity.elder_guardian.ambient_land"),
+ ENTITY_ELDER_GUARDIAN_CURSE("entity.elder_guardian.curse"),
+ ENTITY_ELDER_GUARDIAN_DEATH("entity.elder_guardian.death"),
+ ENTITY_ELDER_GUARDIAN_DEATH_LAND("entity.elder_guardian.death_land"),
+ ENTITY_ELDER_GUARDIAN_HURT("entity.elder_guardian.hurt"),
+ ENTITY_ELDER_GUARDIAN_HURT_LAND("entity.elder_guardian.hurt_land"),
+ BLOCK_ENDERCHEST_CLOSE("block.enderchest.close"),
+ BLOCK_ENDERCHEST_OPEN("block.enderchest.open"),
+ ENTITY_ENDERDRAGON_AMBIENT("entity.enderdragon.ambient"),
+ ENTITY_ENDERDRAGON_DEATH("entity.enderdragon.death"),
+ ENTITY_ENDERDRAGON_FIREBALL_EPLD("entity.enderdragon_fireball.explode"),
+ ENTITY_ENDERDRAGON_FLAP("entity.enderdragon.flap"),
+ ENTITY_ENDERDRAGON_GROWL("entity.enderdragon.growl"),
+ ENTITY_ENDERDRAGON_HURT("entity.enderdragon.hurt"),
+ ENTITY_ENDERDRAGON_SHOOT("entity.enderdragon.shoot"),
+ ENTITY_ENDEREYE_LAUNCH("entity.endereye.launch"),
+ ENTITY_ENDERMEN_AMBIENT("entity.endermen.ambient"),
+ ENTITY_ENDERMEN_DEATH("entity.endermen.death"),
+ ENTITY_ENDERMEN_HURT("entity.endermen.hurt"),
+ ENTITY_ENDERMEN_SCREAM("entity.endermen.scream"),
+ ENTITY_ENDERMEN_STARE("entity.endermen.stare"),
+ ENTITY_ENDERMEN_TELEPORT("entity.endermen.teleport"),
+ ENTITY_ENDERMITE_AMBIENT("entity.endermite.ambient"),
+ ENTITY_ENDERMITE_DEATH("entity.endermite.death"),
+ ENTITY_ENDERMITE_HURT("entity.endermite.hurt"),
+ ENTITY_ENDERMITE_STEP("entity.endermite.step"),
+ ENTITY_ENDERPEARL_THROW("entity.enderpearl.throw"),
+ BLOCK_END_GATEWAY_SPAWN("block.end_gateway.spawn"),
+ ENTITY_EXPERIENCE_BOTTLE_THROW("entity.experience_bottle.throw"),
+ ENTITY_EXPERIENCE_ORB_PICKUP("entity.experience_orb.pickup"),
+ ENTITY_EXPERIENCE_ORB_TOUCH("entity.experience_orb.touch"),
+ BLOCK_FENCE_GATE_CLOSE("block.fence_gate.close"),
+ BLOCK_FENCE_GATE_OPEN("block.fence_gate.open"),
+ ITEM_FIRECHARGE_USE("item.firecharge.use"),
+ ENTITY_FIREWORK_BLAST("entity.firework.blast"),
+ ENTITY_FIREWORK_BLAST_FAR("entity.firework.blast_far"),
+ ENTITY_FIREWORK_LARGE_BLAST("entity.firework.large_blast"),
+ ENTITY_FIREWORK_LARGE_BLAST_FAR("entity.firework.large_blast_far"),
+ ENTITY_FIREWORK_LAUNCH("entity.firework.launch"),
+ ENTITY_FIREWORK_SHOOT("entity.firework.shoot"),
+ ENTITY_FIREWORK_TWINKLE("entity.firework.twinkle"),
+ ENTITY_FIREWORK_TWINKLE_FAR("entity.firework.twinkle_far"),
+ BLOCK_FIRE_AMBIENT("block.fire.ambient"),
+ BLOCK_FIRE_EXTINGUISH("block.fire.extinguish"),
+ ITEM_FLINTANDSTEEL_USE("item.flintandsteel.use"),
+ BLOCK_FURNACE_FIRE_CRACKLE("block.furnace.fire_crackle"),
+ ENTITY_GENERIC_BIG_FALL("entity.generic.big_fall"),
+ ENTITY_GENERIC_BURN("entity.generic.burn"),
+ ENTITY_GENERIC_DEATH("entity.generic.death"),
+ ENTITY_GENERIC_DRINK("entity.generic.drink"),
+ ENTITY_GENERIC_EAT("entity.generic.eat"),
+ ENTITY_GENERIC_EXPLODE("entity.generic.explode"),
+ ENTITY_GENERIC_EXTINGUISH_FIRE("entity.generic.extinguish_fire"),
+ ENTITY_GENERIC_HURT("entity.generic.hurt"),
+ ENTITY_GENERIC_SMALL_FALL("entity.generic.small_fall"),
+ ENTITY_GENERIC_SPLASH("entity.generic.splash"),
+ ENTITY_GENERIC_SWIM("entity.generic.swim"),
+ ENTITY_GHAST_AMBIENT("entity.ghast.ambient"),
+ ENTITY_GHAST_DEATH("entity.ghast.death"),
+ ENTITY_GHAST_HURT("entity.ghast.hurt"),
+ ENTITY_GHAST_SCREAM("entity.ghast.scream"),
+ ENTITY_GHAST_SHOOT("entity.ghast.shoot"),
+ ENTITY_GHAST_WARN("entity.ghast.warn"),
+ BLOCK_GLASS_BREAK("block.glass.break"),
+ BLOCK_GLASS_FALL("block.glass.fall"),
+ BLOCK_GLASS_HIT("block.glass.hit"),
+ BLOCK_GLASS_PLACE("block.glass.place"),
+ BLOCK_GLASS_STEP("block.glass.step"),
+ BLOCK_GRASS_BREAK("block.grass.break"),
+ BLOCK_GRASS_FALL("block.grass.fall"),
+ BLOCK_GRASS_HIT("block.grass.hit"),
+ BLOCK_GRASS_PLACE("block.grass.place"),
+ BLOCK_GRASS_STEP("block.grass.step"),
+ BLOCK_GRAVEL_BREAK("block.gravel.break"),
+ BLOCK_GRAVEL_FALL("block.gravel.fall"),
+ BLOCK_GRAVEL_HIT("block.gravel.hit"),
+ BLOCK_GRAVEL_PLACE("block.gravel.place"),
+ BLOCK_GRAVEL_STEP("block.gravel.step"),
+ ENTITY_GUARDIAN_AMBIENT("entity.guardian.ambient"),
+ ENTITY_GUARDIAN_AMBIENT_LAND("entity.guardian.ambient_land"),
+ ENTITY_GUARDIAN_ATTACK("entity.guardian.attack"),
+ ENTITY_GUARDIAN_DEATH("entity.guardian.death"),
+ ENTITY_GUARDIAN_DEATH_LAND("entity.guardian.death_land"),
+ ENTITY_GUARDIAN_FLOP("entity.guardian.flop"),
+ ENTITY_GUARDIAN_HURT("entity.guardian.hurt"),
+ ENTITY_GUARDIAN_HURT_LAND("entity.guardian.hurt_land"),
+ ITEM_HOE_TILL("item.hoe.till"),
+ ENTITY_HORSE_AMBIENT("entity.horse.ambient"),
+ ENTITY_HORSE_ANGRY("entity.horse.angry"),
+ ENTITY_HORSE_ARMOR("entity.horse.armor"),
+ ENTITY_HORSE_BREATHE("entity.horse.breathe"),
+ ENTITY_HORSE_DEATH("entity.horse.death"),
+ ENTITY_HORSE_EAT("entity.horse.eat"),
+ ENTITY_HORSE_GALLOP("entity.horse.gallop"),
+ ENTITY_HORSE_HURT("entity.horse.hurt"),
+ ENTITY_HORSE_JUMP("entity.horse.jump"),
+ ENTITY_HORSE_LAND("entity.horse.land"),
+ ENTITY_HORSE_SADDLE("entity.horse.saddle"),
+ ENTITY_HORSE_STEP("entity.horse.step"),
+ ENTITY_HORSE_STEP_WOOD("entity.horse.step_wood"),
+ ENTITY_HOSTILE_BIG_FALL("entity.hostile.big_fall"),
+ ENTITY_HOSTILE_DEATH("entity.hostile.death"),
+ ENTITY_HOSTILE_HURT("entity.hostile.hurt"),
+ ENTITY_HOSTILE_SMALL_FALL("entity.hostile.small_fall"),
+ ENTITY_HOSTILE_SPLASH("entity.hostile.splash"),
+ ENTITY_HOSTILE_SWIM("entity.hostile.swim"),
+ ENTITY_HUSK_AMBIENT("entity.husk.ambient"),
+ ENTITY_HUSK_DEATH("entity.husk.death"),
+ ENTITY_HUSK_HURT("entity.husk.hurt"),
+ ENTITY_HUSK_STEP("entity.husk.step"),
+ ENTITY_IRONGOLEM_ATTACK("entity.irongolem.attack"),
+ ENTITY_IRONGOLEM_DEATH("entity.irongolem.death"),
+ ENTITY_IRONGOLEM_HURT("entity.irongolem.hurt"),
+ ENTITY_IRONGOLEM_STEP("entity.irongolem.step"),
+ BLOCK_IRON_DOOR_CLOSE("block.iron_door.close"),
+ BLOCK_IRON_DOOR_OPEN("block.iron_door.open"),
+ BLOCK_IRON_TRAPDOOR_CLOSE("block.iron_trapdoor.close"),
+ BLOCK_IRON_TRAPDOOR_OPEN("block.iron_trapdoor.open"),
+ ENTITY_ITEMFRAME_ADD_ITEM("entity.itemframe.add_item"),
+ ENTITY_ITEMFRAME_BREAK("entity.itemframe.break"),
+ ENTITY_ITEMFRAME_PLACE("entity.itemframe.place"),
+ ENTITY_ITEMFRAME_REMOVE_ITEM("entity.itemframe.remove_item"),
+ ENTITY_ITEMFRAME_ROTATE_ITEM("entity.itemframe.rotate_item"),
+ ENTITY_ITEM_BREAK("entity.item.break"),
+ ENTITY_ITEM_PICKUP("entity.item.pickup"),
+ BLOCK_LADDER_BREAK("block.ladder.break"),
+ BLOCK_LADDER_FALL("block.ladder.fall"),
+ BLOCK_LADDER_HIT("block.ladder.hit"),
+ BLOCK_LADDER_PLACE("block.ladder.place"),
+ BLOCK_LADDER_STEP("block.ladder.step"),
+ BLOCK_LAVA_AMBIENT("block.lava.ambient"),
+ BLOCK_LAVA_EXTINGUISH("block.lava.extinguish"),
+ BLOCK_LAVA_POP("block.lava.pop"),
+ ENTITY_LEASHKNOT_BREAK("entity.leashknot.break"),
+ ENTITY_LEASHKNOT_PLACE("entity.leashknot.place"),
+ BLOCK_LEVER_CLICK("block.lever.click"),
+ ENTITY_LIGHTNING_IMPACT("entity.lightning.impact"),
+ ENTITY_LIGHTNING_THUNDER("entity.lightning.thunder"),
+ ENTITY_LINGERINGPOTION_THROW("entity.lingeringpotion.throw"),
+ ENTITY_MAGMACUBE_DEATH("entity.magmacube.death"),
+ ENTITY_MAGMACUBE_HURT("entity.magmacube.hurt"),
+ ENTITY_MAGMACUBE_JUMP("entity.magmacube.jump"),
+ ENTITY_MAGMACUBE_SQUISH("entity.magmacube.squish"),
+ BLOCK_METAL_BREAK("block.metal.break"),
+ BLOCK_METAL_FALL("block.metal.fall"),
+ BLOCK_METAL_HIT("block.metal.hit"),
+ BLOCK_METAL_PLACE("block.metal.place"),
+ BLOCK_METAL_PRESSPLATE_CLICK_OFF("block.metal_pressureplate.click_off"),
+ BLOCK_METAL_PRESSPLATE_CLICK_ON("block.metal_pressureplate.click_on"),
+ BLOCK_METAL_STEP("block.metal.step"),
+ ENTITY_MINECART_INSIDE("entity.minecart.inside"),
+ ENTITY_MINECART_RIDING("entity.minecart.riding"),
+ ENTITY_MOOSHROOM_SHEAR("entity.mooshroom.shear"),
+ ENTITY_MULE_AMBIENT("entity.mule.ambient"),
+ ENTITY_MULE_DEATH("entity.mule.death"),
+ ENTITY_MULE_HURT("entity.mule.hurt"),
+ MUSIC_CREATIVE("music.creative"),
+ MUSIC_CREDITS("music.credits"),
+ MUSIC_DRAGON("music.dragon"),
+ MUSIC_END("music.end"),
+ MUSIC_GAME("music.game"),
+ MUSIC_MENU("music.menu"),
+ MUSIC_NETHER("music.nether"),
+ BLOCK_NOTE_BASEDRUM("block.note.basedrum"),
+ BLOCK_NOTE_BASS("block.note.bass"),
+ BLOCK_NOTE_HARP("block.note.harp"),
+ BLOCK_NOTE_HAT("block.note.hat"),
+ BLOCK_NOTE_PLING("block.note.pling"),
+ BLOCK_NOTE_SNARE("block.note.snare"),
+ ENTITY_PAINTING_BREAK("entity.painting.break"),
+ ENTITY_PAINTING_PLACE("entity.painting.place"),
+ ENTITY_PIG_AMBIENT("entity.pig.ambient"),
+ ENTITY_PIG_DEATH("entity.pig.death"),
+ ENTITY_PIG_HURT("entity.pig.hurt"),
+ ENTITY_PIG_SADDLE("entity.pig.saddle"),
+ ENTITY_PIG_STEP("entity.pig.step"),
+ BLOCK_PISTON_CONTRACT("block.piston.contract"),
+ BLOCK_PISTON_EXTEND("block.piston.extend"),
+ ENTITY_PLAYER_ATTACK_CRIT("entity.player.attack.crit"),
+ ENTITY_PLAYER_ATTACK_KNOCKBACK("entity.player.attack.knockback"),
+ ENTITY_PLAYER_ATTACK_NODAMAGE("entity.player.attack.nodamage"),
+ ENTITY_PLAYER_ATTACK_STRONG("entity.player.attack.strong"),
+ ENTITY_PLAYER_ATTACK_SWEEP("entity.player.attack.sweep"),
+ ENTITY_PLAYER_ATTACK_WEAK("entity.player.attack.weak"),
+ ENTITY_PLAYER_BIG_FALL("entity.player.big_fall"),
+ ENTITY_PLAYER_BREATH("entity.player.breath"),
+ ENTITY_PLAYER_BURP("entity.player.burp"),
+ ENTITY_PLAYER_DEATH("entity.player.death"),
+ ENTITY_PLAYER_HURT("entity.player.hurt"),
+ ENTITY_PLAYER_LEVELUP("entity.player.levelup"),
+ ENTITY_PLAYER_SMALL_FALL("entity.player.small_fall"),
+ ENTITY_PLAYER_SPLASH("entity.player.splash"),
+ ENTITY_PLAYER_SWIM("entity.player.swim"),
+ ENTITY_POLAR_BEAR_AMBIENT("entity.polar_bear.ambient"),
+ ENTITY_POLAR_BEAR_BABY_AMBIENT("entity.polar_bear.baby_ambient"),
+ ENTITY_POLAR_BEAR_DEATH("entity.polar_bear.death"),
+ ENTITY_POLAR_BEAR_HURT("entity.polar_bear.hurt"),
+ ENTITY_POLAR_BEAR_STEP("entity.polar_bear.step"),
+ ENTITY_POLAR_BEAR_WARNING("entity.polar_bear.warning"),
+ BLOCK_PORTAL_AMBIENT("block.portal.ambient"),
+ BLOCK_PORTAL_TRAVEL("block.portal.travel"),
+ BLOCK_PORTAL_TRIGGER("block.portal.trigger"),
+ ENTITY_RABBIT_AMBIENT("entity.rabbit.ambient"),
+ ENTITY_RABBIT_ATTACK("entity.rabbit.attack"),
+ ENTITY_RABBIT_DEATH("entity.rabbit.death"),
+ ENTITY_RABBIT_HURT("entity.rabbit.hurt"),
+ ENTITY_RABBIT_JUMP("entity.rabbit.jump"),
+ RECORD_11("record.11"),
+ RECORD_13("record.13"),
+ RECORD_BLOCKS("record.blocks"),
+ RECORD_CAT("record.cat"),
+ RECORD_CHIRP("record.chirp"),
+ RECORD_FAR("record.far"),
+ RECORD_MALL("record.mall"),
+ RECORD_MELLOHI("record.mellohi"),
+ RECORD_STAL("record.stal"),
+ RECORD_STRAD("record.strad"),
+ RECORD_WAIT("record.wait"),
+ RECORD_WARD("record.ward"),
+ BLOCK_REDSTONE_TORCH_BURNOUT("block.redstone_torch.burnout"),
+ BLOCK_SAND_BREAK("block.sand.break"),
+ BLOCK_SAND_FALL("block.sand.fall"),
+ BLOCK_SAND_HIT("block.sand.hit"),
+ BLOCK_SAND_PLACE("block.sand.place"),
+ BLOCK_SAND_STEP("block.sand.step"),
+ ENTITY_SHEEP_AMBIENT("entity.sheep.ambient"),
+ ENTITY_SHEEP_DEATH("entity.sheep.death"),
+ ENTITY_SHEEP_HURT("entity.sheep.hurt"),
+ ENTITY_SHEEP_SHEAR("entity.sheep.shear"),
+ ENTITY_SHEEP_STEP("entity.sheep.step"),
+ ITEM_SHIELD_BLOCK("item.shield.block"),
+ ITEM_SHIELD_BREAK("item.shield.break"),
+ ITEM_SHOVEL_FLATTEN("item.shovel.flatten"),
+ ENTITY_SHULKER_AMBIENT("entity.shulker.ambient"),
+ ENTITY_SHULKER_BULLET_HIT("entity.shulker_bullet.hit"),
+ ENTITY_SHULKER_BULLET_HURT("entity.shulker_bullet.hurt"),
+ ENTITY_SHULKER_CLOSE("entity.shulker.close"),
+ ENTITY_SHULKER_DEATH("entity.shulker.death"),
+ ENTITY_SHULKER_HURT("entity.shulker.hurt"),
+ ENTITY_SHULKER_HURT_CLOSED("entity.shulker.hurt_closed"),
+ ENTITY_SHULKER_OPEN("entity.shulker.open"),
+ ENTITY_SHULKER_SHOOT("entity.shulker.shoot"),
+ ENTITY_SHULKER_TELEPORT("entity.shulker.teleport"),
+ ENTITY_SILVERFISH_AMBIENT("entity.silverfish.ambient"),
+ ENTITY_SILVERFISH_DEATH("entity.silverfish.death"),
+ ENTITY_SILVERFISH_HURT("entity.silverfish.hurt"),
+ ENTITY_SILVERFISH_STEP("entity.silverfish.step"),
+ ENTITY_SKELETON_AMBIENT("entity.skeleton.ambient"),
+ ENTITY_SKELETON_DEATH("entity.skeleton.death"),
+ ENTITY_SKELETON_HORSE_AMBIENT("entity.skeleton_horse.ambient"),
+ ENTITY_SKELETON_HORSE_DEATH("entity.skeleton_horse.death"),
+ ENTITY_SKELETON_HORSE_HURT("entity.skeleton_horse.hurt"),
+ ENTITY_SKELETON_HURT("entity.skeleton.hurt"),
+ ENTITY_SKELETON_SHOOT("entity.skeleton.shoot"),
+ ENTITY_SKELETON_STEP("entity.skeleton.step"),
+ ENTITY_SLIME_ATTACK("entity.slime.attack"),
+ BLOCK_SLIME_BREAK("block.slime.break"),
+ ENTITY_SLIME_DEATH("entity.slime.death"),
+ BLOCK_SLIME_FALL("block.slime.fall"),
+ BLOCK_SLIME_HIT("block.slime.hit"),
+ ENTITY_SLIME_HURT("entity.slime.hurt"),
+ ENTITY_SLIME_JUMP("entity.slime.jump"),
+ BLOCK_SLIME_PLACE("block.slime.place"),
+ ENTITY_SLIME_SQUISH("entity.slime.squish"),
+ BLOCK_SLIME_STEP("block.slime.step"),
+ ENTITY_SMALL_MAGMACUBE_DEATH("entity.small_magmacube.death"),
+ ENTITY_SMALL_MAGMACUBE_HURT("entity.small_magmacube.hurt"),
+ ENTITY_SMALL_MAGMACUBE_SQUISH("entity.small_magmacube.squish"),
+ ENTITY_SMALL_SLIME_DEATH("entity.small_slime.death"),
+ ENTITY_SMALL_SLIME_HURT("entity.small_slime.hurt"),
+ ENTITY_SMALL_SLIME_JUMP("entity.small_slime.jump"),
+ ENTITY_SMALL_SLIME_SQUISH("entity.small_slime.squish"),
+ ENTITY_SNOWBALL_THROW("entity.snowball.throw"),
+ ENTITY_SNOWMAN_AMBIENT("entity.snowman.ambient"),
+ ENTITY_SNOWMAN_DEATH("entity.snowman.death"),
+ ENTITY_SNOWMAN_HURT("entity.snowman.hurt"),
+ ENTITY_SNOWMAN_SHOOT("entity.snowman.shoot"),
+ BLOCK_SNOW_BREAK("block.snow.break"),
+ BLOCK_SNOW_FALL("block.snow.fall"),
+ BLOCK_SNOW_HIT("block.snow.hit"),
+ BLOCK_SNOW_PLACE("block.snow.place"),
+ BLOCK_SNOW_STEP("block.snow.step"),
+ ENTITY_SPIDER_AMBIENT("entity.spider.ambient"),
+ ENTITY_SPIDER_DEATH("entity.spider.death"),
+ ENTITY_SPIDER_HURT("entity.spider.hurt"),
+ ENTITY_SPIDER_STEP("entity.spider.step"),
+ ENTITY_SPLASH_POTION_BREAK("entity.splash_potion.break"),
+ ENTITY_SPLASH_POTION_THROW("entity.splash_potion.throw"),
+ ENTITY_SQUID_AMBIENT("entity.squid.ambient"),
+ ENTITY_SQUID_DEATH("entity.squid.death"),
+ ENTITY_SQUID_HURT("entity.squid.hurt"),
+ ENTITY_STRAY_AMBIENT("entity.stray.ambient"),
+ ENTITY_STRAY_DEATH("entity.stray.death"),
+ ENTITY_STRAY_HURT("entity.stray.hurt"),
+ ENTITY_STRAY_STEP("entity.stray.step"),
+ BLOCK_STONE_BREAK("block.stone.break"),
+ BLOCK_STONE_BUTTON_CLICK_OFF("block.stone_button.click_off"),
+ BLOCK_STONE_BUTTON_CLICK_ON("block.stone_button.click_on"),
+ BLOCK_STONE_FALL("block.stone.fall"),
+ BLOCK_STONE_HIT("block.stone.hit"),
+ BLOCK_STONE_PLACE("block.stone.place"),
+ BLOCK_STONE_PRESSPLATE_CLICK_OFF("block.stone_pressureplate.click_off"),
+ BLOCK_STONE_PRESSPLATE_CLICK_ON("block.stone_pressureplate.click_on"),
+ BLOCK_STONE_STEP("block.stone.step"),
+ ENCHANT_THORNS_HIT("enchant.thorns.hit"),
+ ENTITY_TNT_PRIMED("entity.tnt.primed"),
+ BLOCK_TRIPWIRE_ATTACH("block.tripwire.attach"),
+ BLOCK_TRIPWIRE_CLICK_OFF("block.tripwire.click_off"),
+ BLOCK_TRIPWIRE_CLICK_ON("block.tripwire.click_on"),
+ BLOCK_TRIPWIRE_DETACH("block.tripwire.detach"),
+ UI_BUTTON_CLICK("ui.button.click"),
+ ENTITY_VILLAGER_AMBIENT("entity.villager.ambient"),
+ ENTITY_VILLAGER_DEATH("entity.villager.death"),
+ ENTITY_VILLAGER_HURT("entity.villager.hurt"),
+ ENTITY_VILLAGER_NO("entity.villager.no"),
+ ENTITY_VILLAGER_TRADING("entity.villager.trading"),
+ ENTITY_VILLAGER_YES("entity.villager.yes"),
+ BLOCK_WATERLILY_PLACE("block.waterlily.place"),
+ BLOCK_WATER_AMBIENT("block.water.ambient"),
+ WEATHER_RAIN("weather.rain"),
+ WEATHER_RAIN_ABOVE("weather.rain.above"),
+ ENTITY_WITCH_AMBIENT("entity.witch.ambient"),
+ ENTITY_WITCH_DEATH("entity.witch.death"),
+ ENTITY_WITCH_DRINK("entity.witch.drink"),
+ ENTITY_WITCH_HURT("entity.witch.hurt"),
+ ENTITY_WITCH_THROW("entity.witch.throw"),
+ ENTITY_WITHER_AMBIENT("entity.wither.ambient"),
+ ENTITY_WITHER_BREAK_BLOCK("entity.wither.break_block"),
+ ENTITY_WITHER_DEATH("entity.wither.death"),
+ ENTITY_WITHER_HURT("entity.wither.hurt"),
+ ENTITY_WITHER_SHOOT("entity.wither.shoot"),
+ ENTITY_WITHER_SPAWN("entity.wither.spawn"),
+ ENTITY_WITHER_SKELETON_AMBIENT("entity.wither_skeleton.ambient"),
+ ENTITY_WITHER_SKELETON_DEATH("entity.wither_skeleton.death"),
+ ENTITY_WITHER_SKELETON_HURT("entity.wither_skeleton.hurt"),
+ ENTITY_WITHER_SKELETON_STEP("entity.wither_skeleton.step"),
+ ENTITY_WOLF_AMBIENT("entity.wolf.ambient"),
+ ENTITY_WOLF_DEATH("entity.wolf.death"),
+ ENTITY_WOLF_GROWL("entity.wolf.growl"),
+ ENTITY_WOLF_HOWL("entity.wolf.howl"),
+ ENTITY_WOLF_HURT("entity.wolf.hurt"),
+ ENTITY_WOLF_PANT("entity.wolf.pant"),
+ ENTITY_WOLF_SHAKE("entity.wolf.shake"),
+ ENTITY_WOLF_STEP("entity.wolf.step"),
+ ENTITY_WOLF_WHINE("entity.wolf.whine"),
+ BLOCK_WOODEN_DOOR_CLOSE("block.wooden_door.close"),
+ BLOCK_WOODEN_DOOR_OPEN("block.wooden_door.open"),
+ BLOCK_WOODEN_TRAPDOOR_CLOSE("block.wooden_trapdoor.close"),
+ BLOCK_WOODEN_TRAPDOOR_OPEN("block.wooden_trapdoor.open"),
+ BLOCK_WOOD_BREAK("block.wood.break"),
+ BLOCK_WOOD_BUTTON_CLICK_OFF("block.wood_button.click_off"),
+ BLOCK_WOOD_BUTTON_CLICK_ON("block.wood_button.click_on"),
+ BLOCK_WOOD_FALL("block.wood.fall"),
+ BLOCK_WOOD_HIT("block.wood.hit"),
+ BLOCK_WOOD_PLACE("block.wood.place"),
+ BLOCK_WOOD_PRESSPLATE_CLICK_OFF("block.wood_pressureplate.click_off"),
+ BLOCK_WOOD_PRESSPLATE_CLICK_ON("block.wood_pressureplate.click_on"),
+ BLOCK_WOOD_STEP("block.wood.step"),
+ ENTITY_ZOMBIE_AMBIENT("entity.zombie.ambient"),
+ ENTITY_ZOMBIE_ATTACK_DOOR_WOOD("entity.zombie.attack_door_wood"),
+ ENTITY_ZOMBIE_ATTACK_IRON_DOOR("entity.zombie.attack_iron_door"),
+ ENTITY_ZOMBIE_BREAK_DOOR_WOOD("entity.zombie.break_door_wood"),
+ ENTITY_ZOMBIE_DEATH("entity.zombie.death"),
+ ENTITY_ZOMBIE_HORSE_AMBIENT("entity.zombie_horse.ambient"),
+ ENTITY_ZOMBIE_HORSE_DEATH("entity.zombie_horse.death"),
+ ENTITY_ZOMBIE_HORSE_HURT("entity.zombie_horse.hurt"),
+ ENTITY_ZOMBIE_HURT("entity.zombie.hurt"),
+ ENTITY_ZOMBIE_INFECT("entity.zombie.infect"),
+ ENTITY_ZOMBIE_PIG_AMBIENT("entity.zombie_pig.ambient"),
+ ENTITY_ZOMBIE_PIG_ANGRY("entity.zombie_pig.angry"),
+ ENTITY_ZOMBIE_PIG_DEATH("entity.zombie_pig.death"),
+ ENTITY_ZOMBIE_PIG_HURT("entity.zombie_pig.hurt"),
+ ENTITY_ZOMBIE_STEP("entity.zombie.step"),
+ ENTITY_ZOMBIE_VILLAGER_AMBIENT("entity.zombie_villager.ambient"),
+ ENTITY_ZOMBIE_VILLAGER_CONVERTED("entity.zombie_villager.converted"),
+ ENTITY_ZOMBIE_VILLAGER_CURE("entity.zombie_villager.cure"),
+ ENTITY_ZOMBIE_VILLAGER_DEATH("entity.zombie_villager.death"),
+ ENTITY_ZOMBIE_VILLAGER_HURT("entity.zombie_villager.hurt"),
+ ENTITY_ZOMBIE_VILLAGER_STEP("entity.zombie_villager.step"),
;
private String mcName;
diff --git a/src/main/java/net/canarymod/chat/ChatFormat.java b/src/main/java/net/canarymod/chat/ChatFormat.java
index 4677cf0c..df4e54bd 100644
--- a/src/main/java/net/canarymod/chat/ChatFormat.java
+++ b/src/main/java/net/canarymod/chat/ChatFormat.java
@@ -5,7 +5,6 @@
*
* @author Jason (darkdiplomat)
*/
-
public enum ChatFormat {
/**
@@ -218,4 +217,4 @@ public static String formatString(String str, String marker) {
public static final String consoleFormat(String text) {
return text.replaceAll("\u00A7([A-FK-NRa-fk-nr0-9])", "&$1");
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/net/canarymod/commandsys/commands/system/PluginCommand.java b/src/main/java/net/canarymod/commandsys/commands/system/PluginCommand.java
index e9d2eae9..1d37ca44 100644
--- a/src/main/java/net/canarymod/commandsys/commands/system/PluginCommand.java
+++ b/src/main/java/net/canarymod/commandsys/commands/system/PluginCommand.java
@@ -1,13 +1,12 @@
package net.canarymod.commandsys.commands.system;
+import static net.canarymod.Translator.sendTranslatedNotice;
+
import net.canarymod.Canary;
import net.canarymod.chat.MessageReceiver;
import net.canarymod.commandsys.NativeCommand;
import net.canarymod.exceptions.InvalidPluginException;
import net.canarymod.exceptions.PluginLoadFailedException;
-import net.canarymod.logger.Logman;
-
-import static net.canarymod.Translator.sendTranslatedNotice;
/**
* Command to enable, disable or reload plugins
@@ -49,13 +48,9 @@ private void reload(MessageReceiver caller, String plugin) {
sendTranslatedNotice(caller, "plugin reloaded fail", plugin);
}
}
- catch (PluginLoadFailedException e) {
- sendTranslatedNotice(caller, "plugin enabled fail", plugin);
- Logman.getLogman("pluginCommand").error("Failed to load plugin", e);
- }
- catch (InvalidPluginException e) {
+ catch (PluginLoadFailedException | InvalidPluginException e) {
sendTranslatedNotice(caller, "plugin enabled fail", plugin);
- Logman.getLogman("pluginCommand").error("Failed to load plugin", e);
+ Canary.log.error("Failed to load plugin", e);
}
}
@@ -70,7 +65,7 @@ private void enable(MessageReceiver caller, String plugin) {
}
catch (PluginLoadFailedException e) {
sendTranslatedNotice(caller, "plugin enabled fail", plugin);
- Logman.getLogman("pluginCommand").error("Failed to load plugin", e);
+ Canary.log.error("Failed to load plugin", e);
}
}
diff --git a/src/main/java/net/canarymod/database/JdbcConnectionManager.java b/src/main/java/net/canarymod/database/JdbcConnectionManager.java
index 6f779ff4..0ae913a0 100644
--- a/src/main/java/net/canarymod/database/JdbcConnectionManager.java
+++ b/src/main/java/net/canarymod/database/JdbcConnectionManager.java
@@ -1,17 +1,17 @@
package net.canarymod.database;
-import com.mchange.v2.c3p0.ComboPooledDataSource;
+import static net.canarymod.Canary.log;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
import net.canarymod.config.Configuration;
import net.canarymod.config.DatabaseConfiguration;
import net.canarymod.database.exceptions.DatabaseAccessException;
-import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
-import static net.canarymod.Canary.log;
-
/**
* Represents a connection (pool) manager for all sorts of JDBC connections.
* In our particular case that is mysql and sqlite.
@@ -21,10 +21,11 @@
*
* @author Chris Ksoll (damagefilter)
* @author Jason Jones (darkdiplomat)
+ * @author Jamie Mansfield (jamierocks)
*/
public class JdbcConnectionManager {
- private ComboPooledDataSource cpds; // The data source pool ;)
+ private HikariDataSource dataSource; // The data source pool ;)
private Connection nonManaged; // For those that bypass the manager/unable to use the manager
private SQLType type;
@@ -40,41 +41,43 @@ public class JdbcConnectionManager {
*/
private JdbcConnectionManager(SQLType type) throws SQLException {
DatabaseConfiguration cfg = Configuration.getDbConfig();
- cpds = new ComboPooledDataSource();
this.type = type;
if (type.usesJDBCManager()) {
- try {
- cpds.setDriverClass(type.getClassPath());
- cpds.setJdbcUrl(cfg.getDatabaseUrl(type.getIdentifier()));
- cpds.setUser(cfg.getDatabaseUser());
- cpds.setPassword(cfg.getDatabasePassword());
-
- // For settings explanations see
- // http://javatech.org/2007/11/c3p0-connectionpool-configuration-rules-of-thumb/
- // https://community.jboss.org/wiki/HowToConfigureTheC3P0ConnectionPool?_sscc=t
-
- //connection pooling
- cpds.setAcquireIncrement(cfg.getAcquireIncrement());
- cpds.setMaxIdleTime(cfg.getMaxConnectionIdleTime());
- cpds.setMaxIdleTimeExcessConnections(cfg.getMaxExcessConnectionsIdleTime());
- cpds.setMaxPoolSize(cfg.getMaxPoolSize());
- cpds.setMinPoolSize(cfg.getMinPoolSize());
- cpds.setNumHelperThreads(cfg.getNumHelperThreads());
- cpds.setUnreturnedConnectionTimeout(cfg.getReturnConnectionTimeout());
- cpds.setIdleConnectionTestPeriod(cfg.getConnectionTestFrequency());
-
- //Statement pooling
- cpds.setMaxStatements(cfg.getMaxCachedStatements());
- cpds.setMaxStatementsPerConnection(cfg.getMaxCachedStatementsPerConnection());
- cpds.setStatementCacheNumDeferredCloseThreads(cfg.getNumStatementCloseThreads());
+ final HikariConfig config = new HikariConfig();
+
+ // Configure HikariConfig
+ {
+ config.setDriverClassName(type.getClassPath());
+ config.setJdbcUrl(cfg.getDatabaseUrl(type.getIdentifier()));
+ config.setUsername(cfg.getDatabaseUser());
+ config.setPassword(cfg.getDatabasePassword());
+
+ // getAcquireIncrement
+ config.setIdleTimeout(cfg.getMaxConnectionIdleTime());
+ // getMaxExcessConnectionsIdleTime
+ config.setMaximumPoolSize(cfg.getMaxPoolSize());
+ // getMinPoolSize
+ // getNumHelperThreads
+ // getReturnConnectionTimeout
+ // getConnectionTestFrequency
+
+ // getMaxCachedStatements
+ // getMaxCachedStatementsPerConnection
+ // getNumStatementCloseThreads
}
- catch (PropertyVetoException e) {
- log.error("Failed to configure the connection pool!", e);
+
+ // Create the HikariDataSource
+ this.dataSource = new HikariDataSource(config);
+
+ // Test connection
+ {
+ try (final Connection c = this.dataSource.getConnection()) {
+ // noop
+ }
+ catch (final SQLException ex) {
+ throw new RuntimeException("Failed to test the connection!", ex);
+ }
}
- //Test connection...
- //If this fails it throws an SQLException so we're notified
- Connection c = cpds.getConnection();
- c.close();
}
else {
nonManaged = DriverManager.getConnection(cfg.getDatabaseUrl(type.getIdentifier()), cfg.getDatabaseUser(), cfg.getDatabasePassword());
@@ -132,13 +135,9 @@ public static Connection getConnection() {
cman.nonManaged = DriverManager.getConnection(cfg.getDatabaseUrl(cman.type.getIdentifier()), cfg.getDatabaseUser(), cfg.getDatabasePassword());
return cman.nonManaged;
}
- return cman.cpds.getConnection();
- }
- catch (SQLException e) {
- log.error("Couldn't get a Connection from pool!", e);
- return null;
+ return cman.dataSource.getConnection();
}
- catch (DatabaseAccessException e) {
+ catch (SQLException | DatabaseAccessException e) {
log.error("Couldn't get a Connection from pool!", e);
return null;
}
@@ -153,7 +152,7 @@ public static void shutdown() {
// already shut down or never instantiated (perhaps because we're running on a non-jdbc database)
return;
}
- instance.cpds.close();
+ instance.dataSource.close();
if (instance.nonManaged != null) {
try {
instance.nonManaged.close();
diff --git a/src/main/java/net/canarymod/database/sqlite/SQLiteDatabase.java b/src/main/java/net/canarymod/database/sqlite/SQLiteDatabase.java
index e96da30f..f0afbe2f 100644
--- a/src/main/java/net/canarymod/database/sqlite/SQLiteDatabase.java
+++ b/src/main/java/net/canarymod/database/sqlite/SQLiteDatabase.java
@@ -1,5 +1,7 @@
package net.canarymod.database.sqlite;
+import static net.canarymod.Canary.log;
+
import net.canarymod.Canary;
import net.canarymod.database.Column;
import net.canarymod.database.Column.DataType;
@@ -28,8 +30,6 @@
import java.util.List;
import java.util.Map;
-import static net.canarymod.Canary.log;
-
/**
* SQLite Database
*
@@ -90,12 +90,9 @@ public void insert(DataAccess data) throws DatabaseWriteException {
throw new DatabaseWriteException("Error inserting SQLite: no rows updated!");
}
}
- catch (SQLException ex) {
+ catch (SQLException | DatabaseTableInconsistencyException ex) {
log.error(ex.getMessage(), ex);
}
- catch (DatabaseTableInconsistencyException dtie) {
- log.error(dtie.getMessage(), dtie);
- }
finally {
close(null, ps, null);
}
@@ -468,7 +465,7 @@ public void retainColumns(DataAccess table, List toRetain) throws Databa
concatColumns.append(column);
}
- log.debug(concatColumns);
+ log.debug(concatColumns.toString());
String tableName = table.getName();
String tempTable = "" + tableName + "_temp";
diff --git a/src/main/java/net/canarymod/database/xml/XmlDatabase.java b/src/main/java/net/canarymod/database/xml/XmlDatabase.java
index 443a1dca..3b9ca6f3 100644
--- a/src/main/java/net/canarymod/database/xml/XmlDatabase.java
+++ b/src/main/java/net/canarymod/database/xml/XmlDatabase.java
@@ -2,7 +2,6 @@
import com.google.common.collect.Maps;
import com.google.common.io.Files;
-import com.mchange.v1.lang.BooleanUtils;
import net.canarymod.Canary;
import net.canarymod.database.Column;
import net.canarymod.database.Column.DataType;
@@ -1025,7 +1024,7 @@ private Comparable typeParse(String value, String field, DataType type, DataAcce
return defValTempl.getClass().getField(field).getDouble(defValTempl);
}
case BOOLEAN:
- return BooleanUtils.parseBoolean(value);
+ return Boolean.parseBoolean(value);
case STRING:
default:
return value;
diff --git a/src/main/java/net/canarymod/logger/Logman.java b/src/main/java/net/canarymod/logger/Logman.java
deleted file mode 100644
index 8506e4a1..00000000
--- a/src/main/java/net/canarymod/logger/Logman.java
+++ /dev/null
@@ -1,1063 +0,0 @@
-package net.canarymod.logger;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.Marker;
-import org.apache.logging.log4j.MarkerManager;
-import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.message.MessageFactory;
-
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * CanaryMod Log manager.
- *
- * You can get an appropriate logger for your plugin here.
- *
- * @author Chris (damagefilter)
- * @author Jos Kuijpers
- * @author Jason (darkdiplomat)
- * @author Larry1123
- * Updated to make use of log4j
- */
-public class Logman implements Logger {
- private final static ConcurrentHashMap loggers = new ConcurrentHashMap();
- private final Logger logger;
-
- public static final Marker NOTICE = MarkerManager.getMarker("NOTICE");
- public static final Marker MESSAGE = MarkerManager.getMarker("MESSAGE");
- public static final Marker DERP = MarkerManager.getMarker("DERP");
- public static final Marker PLUGINDEBUG = MarkerManager.getMarker("PLUGINDEBUG");
-
- protected Logman(String name) {
- this.logger = LogManager.getLogger(name);
- loggers.putIfAbsent(name, this);
- }
-
- /**
- * Get a Logman for the name given
- *
- * @param name
- * the name of the Logger to use
- *
- * @return the Logman instance
- */
- public static Logman getLogman(String name) {
- return loggers.containsKey(name) ? loggers.get(name) : new Logman(name);
- }
-
- /**
- * Convenience shortcut to System.out.println().
- * Prints to the output stream on a new line
- *
- * @param message
- * the message to be printed to the console
- */
- public static void println(String message) {
- System.out.println(message);
- }
-
- /**
- * Convenience shortcut to System.out.print().
- * Prints to the output stream on the same line
- *
- * @param message
- * the message to be printed to the console
- */
- public static void print(String message) {
- System.out.print(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void catching(Level level, Throwable t) {
- logger.catching(level, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void catching(Throwable t) {
- logger.catching(t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Marker marker, Message msg) {
- logger.debug(marker, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Marker marker, Message msg, Throwable t) {
- logger.debug(marker, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Marker marker, Object message) {
- logger.debug(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Marker marker, Object message, Throwable t) {
- logger.debug(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Marker marker, String message) {
- logger.debug(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Marker marker, String message, Object... params) {
- logger.debug(marker, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Marker marker, String message, Throwable t) {
- logger.debug(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Message msg) {
- logger.debug(msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Message msg, Throwable t) {
- logger.debug(msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Object message) {
- logger.debug(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(Object message, Throwable t) {
- logger.debug(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(String message) {
- logger.debug(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(String message, Object... params) {
- logger.debug(message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void debug(String message, Throwable t) {
- logger.debug(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void entry() {
- logger.entry();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void entry(Object... params) {
- logger.entry(params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Marker marker, Message msg) {
- logger.error(marker, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Marker marker, Message msg, Throwable t) {
- logger.error(marker, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Marker marker, Object message) {
- logger.error(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Marker marker, Object message, Throwable t) {
- logger.error(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Marker marker, String message) {
- logger.error(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Marker marker, String message, Object... params) {
- logger.error(marker, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Marker marker, String message, Throwable t) {
- logger.error(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Message msg) {
- logger.error(msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Message msg, Throwable t) {
- logger.error(msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Object message) {
- logger.error(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(Object message, Throwable t) {
- logger.error(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(String message) {
- logger.error(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(String message, Object... params) {
- logger.error(message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void error(String message, Throwable t) {
- logger.error(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void exit() {
- logger.exit();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public R exit(R result) {
- return logger.exit(result);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Marker marker, Message msg) {
- logger.fatal(marker, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Marker marker, Message msg, Throwable t) {
- logger.fatal(marker, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Marker marker, Object message) {
- logger.fatal(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Marker marker, Object message, Throwable t) {
- logger.fatal(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Marker marker, String message) {
- logger.fatal(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Marker marker, String message, Object... params) {
- logger.fatal(marker, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Marker marker, String message, Throwable t) {
- logger.fatal(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Message msg) {
- logger.fatal(msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Message msg, Throwable t) {
- logger.fatal(msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Object message) {
- logger.fatal(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(Object message, Throwable t) {
- logger.fatal(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(String message) {
- logger.fatal(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(String message, Object... params) {
- logger.fatal(message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void fatal(String message, Throwable t) {
- logger.fatal(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public MessageFactory getMessageFactory() {
- return logger.getMessageFactory();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getName() {
- return logger.getName();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Marker marker, Message msg) {
- logger.info(marker, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Marker marker, Message msg, Throwable t) {
- logger.info(marker, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Marker marker, Object message) {
- logger.info(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Marker marker, Object message, Throwable t) {
- logger.info(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Marker marker, String message) {
- logger.info(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Marker marker, String message, Object... params) {
- logger.info(marker, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Marker marker, String message, Throwable t) {
- logger.info(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Message msg) {
- logger.info(msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Message msg, Throwable t) {
- logger.info(msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Object message) {
- logger.info(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(Object message, Throwable t) {
- logger.info(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(String message) {
- logger.info(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(String message, Object... params) {
- logger.info(message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void info(String message, Throwable t) {
- logger.info(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isDebugEnabled() {
- return logger.isDebugEnabled();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isDebugEnabled(Marker marker) {
- return logger.isDebugEnabled(marker);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isEnabled(Level level) {
- return logger.isEnabled(level);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isEnabled(Level level, Marker marker) {
- return logger.isEnabled(level, marker);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isErrorEnabled() {
- return logger.isErrorEnabled();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isErrorEnabled(Marker marker) {
- return logger.isErrorEnabled(marker);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isFatalEnabled() {
- return logger.isFatalEnabled();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isFatalEnabled(Marker marker) {
- return logger.isFatalEnabled(marker);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isInfoEnabled() {
- return logger.isInfoEnabled();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isInfoEnabled(Marker marker) {
- return logger.isInfoEnabled(marker);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isTraceEnabled() {
- return logger.isTraceEnabled();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isTraceEnabled(Marker marker) {
- return logger.isTraceEnabled(marker);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isWarnEnabled() {
- return logger.isWarnEnabled();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isWarnEnabled(Marker marker) {
- return logger.isWarnEnabled(marker);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Marker marker, Message msg) {
- logger.log(level, marker, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Marker marker, Message msg, Throwable t) {
- logger.log(level, marker, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Marker marker, Object message) {
- logger.log(level, marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Marker marker, Object message, Throwable t) {
- logger.log(level, marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Marker marker, String message) {
- logger.log(level, marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Marker marker, String message, Object... params) {
- logger.log(level, marker, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Marker marker, String message, Throwable t) {
- logger.log(level, marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Message msg) {
- logger.log(level, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Message msg, Throwable t) {
- logger.log(level, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Object message) {
- logger.log(level, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, Object message, Throwable t) {
- logger.log(level, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, String message) {
- logger.log(level, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, String message, Object... params) {
- logger.log(level, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void log(Level level, String message, Throwable t) {
- logger.log(level, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void printf(Level level, Marker marker, String format, Object... params) {
- logger.printf(level, marker, format, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void printf(Level level, String format, Object... params) {
- logger.printf(level, format, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public T throwing(Level level, T t) {
- return logger.throwing(level, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public T throwing(T t) {
- return logger.throwing(t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Marker marker, Message msg) {
- logger.trace(marker, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Marker marker, Message msg, Throwable t) {
- logger.trace(marker, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Marker marker, Object message) {
- logger.trace(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Marker marker, Object message, Throwable t) {
- logger.trace(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Marker marker, String message) {
- logger.trace(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Marker marker, String message, Object... params) {
- logger.trace(marker, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Marker marker, String message, Throwable t) {
- logger.trace(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Message msg) {
- logger.trace(msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Message msg, Throwable t) {
- logger.trace(msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Object message) {
- logger.trace(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(Object message, Throwable t) {
- logger.trace(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(String message) {
- logger.trace(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(String message, Object... params) {
- logger.trace(message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void trace(String message, Throwable t) {
- logger.trace(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Marker marker, Message msg) {
- logger.warn(marker, msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Marker marker, Message msg, Throwable t) {
- logger.warn(marker, msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Marker marker, Object message) {
- logger.warn(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Marker marker, Object message, Throwable t) {
- logger.warn(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Marker marker, String message) {
- logger.warn(marker, message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Marker marker, String message, Object... params) {
- logger.warn(marker, message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Marker marker, String message, Throwable t) {
- logger.warn(marker, message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Message msg) {
- logger.warn(msg);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Message msg, Throwable t) {
- logger.warn(msg, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Object message) {
- logger.warn(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(Object message, Throwable t) {
- logger.warn(message, t);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(String message) {
- logger.warn(message);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(String message, Object... params) {
- logger.warn(message, params);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void warn(String message, Throwable t) {
- logger.warn(message, t);
- }
-}
diff --git a/src/main/java/net/canarymod/plugin/DefaultPluginManager.java b/src/main/java/net/canarymod/plugin/DefaultPluginManager.java
index 6a1511be..bdf60b24 100644
--- a/src/main/java/net/canarymod/plugin/DefaultPluginManager.java
+++ b/src/main/java/net/canarymod/plugin/DefaultPluginManager.java
@@ -1,5 +1,7 @@
package net.canarymod.plugin;
+import static net.canarymod.Canary.log;
+
import net.canarymod.Canary;
import net.canarymod.config.Configuration;
import net.canarymod.exceptions.InvalidPluginException;
@@ -8,7 +10,7 @@
import net.canarymod.hook.system.PluginEnableHook;
import net.canarymod.plugin.dependencies.DependencyGraph;
import net.visualillusionsent.utils.PropertiesFile;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.Logger;
import java.io.File;
import java.io.FileFilter;
@@ -20,8 +22,6 @@
import java.util.Map;
import java.util.Set;
-import static net.canarymod.Canary.log;
-
/**
* {@inheritDoc}
*
diff --git a/src/main/java/net/canarymod/plugin/Plugin.java b/src/main/java/net/canarymod/plugin/Plugin.java
index a1f4790e..196eea01 100644
--- a/src/main/java/net/canarymod/plugin/Plugin.java
+++ b/src/main/java/net/canarymod/plugin/Plugin.java
@@ -6,11 +6,12 @@
import net.canarymod.commandsys.CommandListener;
import net.canarymod.commandsys.CommandOwner;
import net.canarymod.config.Configuration;
-import net.canarymod.logger.Logman;
import net.canarymod.motd.MOTDOwner;
import net.canarymod.tasks.TaskOwner;
import net.visualillusionsent.utils.LocaleHelper;
import net.visualillusionsent.utils.PropertiesFile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.ArrayList;
@@ -151,12 +152,12 @@ public String getPath() {
}
/**
- * Gets the {@link Logman} for the Plugin
+ * Gets the {@link Logger} for the Plugin
*
- * @return the Plugin's {@link Logman}
+ * @return the Plugin's {@link Logger}
*/
- public Logman getLogman() {
- return Logman.getLogman(getName());
+ public Logger getLogger() {
+ return LoggerFactory.getLogger(getName());
}
/**
diff --git a/src/main/java/net/canarymod/plugin/PluginManager.java b/src/main/java/net/canarymod/plugin/PluginManager.java
index b56c0466..1f27b830 100644
--- a/src/main/java/net/canarymod/plugin/PluginManager.java
+++ b/src/main/java/net/canarymod/plugin/PluginManager.java
@@ -2,7 +2,7 @@
import net.canarymod.exceptions.InvalidPluginException;
import net.canarymod.exceptions.PluginLoadFailedException;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.Logger;
import java.util.Collection;
diff --git a/src/main/java/net/canarymod/util/NullPlayerInventory.java b/src/main/java/net/canarymod/util/NullPlayerInventory.java
index e55c78fe..c1657262 100644
--- a/src/main/java/net/canarymod/util/NullPlayerInventory.java
+++ b/src/main/java/net/canarymod/util/NullPlayerInventory.java
@@ -61,6 +61,11 @@ public Item getItemInHand() {
return null;
}
+ @Override
+ public Item getItemInOffhand() {
+ return null;
+ }
+
@Override
public Item getItemOnCursor() {
return null;