diff --git a/.gitignore b/.gitignore
index 30c2437..6bb5f66 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,9 @@
# Except
!/src/
+!/gradle/
+!gradlew
+!gradlew.bat
!build.gradle
!README.md
!version.json
\ No newline at end of file
diff --git a/README.md b/README.md
index 9021bf1..2c37671 100644
--- a/README.md
+++ b/README.md
@@ -8,42 +8,60 @@ Curseforge: https://minecraft.curseforge.com/projects/world-handler-command-gui
# Features #
* GUI for Commands
- * Client Commands
- * /advancement
- * /blockdata
- * /time
- * /difficulty
- * /weather
- * /kill
- * /give
- * /effect
- * /gamemode
- * /setworldspawn
- * /spawnpoint
- * /clear
- * /summon
- * /enchant
- * /xp
- * /scoreboard
- * /gamerule
- * /fill
- * /clone
-
- * Server Commands
- * /kick
- * /ban
- * /pardon
- * /op
- * /deop
- * /save-all
- * /save-on
- * /save-off
- * /whitelist
-
* Biome Indicator
* World and Player Information
* Simplified usage for /fill and /clone
+
+
+
+ Featured Client Commands
+ |
+
+ Featured Server Commands
+ |
+
+
+
+
+ - /advancement
+ - /blockdata
+ - /clear
+ - /clone
+ - /difficulty
+ - /effect
+ - /enchant
+ - /fill
+ - /gamemode
+ - /gamerule
+ - /give
+ - /kill
+ - /recipe
+ - /scoreboard
+ - /setworldspawn
+ - /spawnpoint
+ - /summon
+ - /time
+ - /weather
+ - /xp
+
+ |
+
+
+ - /ban
+ - /deop
+ - /kick
+ - /op
+ - /pardon
+ - /save-all
+ - /save-off
+ - /save-on
+ - /whitelist
+
+ |
+
+
+
# Download #
Compiled and signed versions: https://minecraft.curseforge.com/projects/world-handler-command-gui/files
Requires: Minecraft Forge (http://files.minecraftforge.net/)
diff --git a/build.gradle b/build.gradle
index 28ca043..38aac18 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,9 +10,15 @@ buildscript {
apply plugin: 'net.minecraftforge.gradle.forge'
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
+def mcversion = "1.12.2"
+def modversion = "2.1.4"
+def mccompatible = "1.12"
+def url = "https://minecraft.curseforge.com/projects/world-handler-command-gui"
+def update_url = "https://raw.githubusercontent.com/Exopandora/worldhandler/master/version.json"
+def certificate = "d6261bb645f41db84c74f98e512c2bb43f188af2"
-version = "1.12.2-2.0"
-group = "src.worldhandler.main.WorldHandler" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
+version = mcversion + "-" + modversion
+group = "exopandora.worldhandler.WorldHandler" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "WorldHandler"
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
@@ -22,12 +28,34 @@ compileJava {
jar {
manifest {
- attributes 'Main-Class': 'exopandora.worldhandler.main.Main'
+ attributes 'Main-Class': 'exopandora.worldhandler.Main'
}
}
+task processMetadata(dependsOn: minecraft) {
+ minecraft.replace '$version', modversion
+ minecraft.replace '$mcversion', mcversion
+ minecraft.replace '$compatible', mccompatible
+ minecraft.replace '$url', url
+ minecraft.replace '$update_url', update_url
+ minecraft.replace '$certificate', certificate
+}
+
+if(project.hasProperty('keyStore')) {
+ task signJar(type: SignJar, dependsOn: reobfJar) {
+ keyStore = project.keyStore
+ alias = project.keyStoreAlias
+ storePass = project.keyStorePass
+ keyPass = project.keyStoreKeyPass
+ inputFile = jar.archivePath
+ outputFile = jar.archivePath
+ }
+
+ build.dependsOn signJar
+}
+
minecraft {
- version = "1.12.2-14.23.2.2611"
+ version = "1.12.2-14.23.3.2676"
runDir = "run"
// the mappings can be changed at any time, and must be in the following format.
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..911de12
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,3 @@
+# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
+# This is required to provide enough memory for the Minecraft decompilation process.
+org.gradle.jvmargs=-Xmx3G
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..30d399d
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..e18cba7
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Sep 14 12:28:28 PDT 2015
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..91a7e26
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# 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
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# 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\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+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" ] ; 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"`
+
+ # 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
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..8a0b282
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@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
+
+@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=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@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 Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_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=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+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/src/main/java/exopandora/worldhandler/main/Main.java b/src/main/java/exopandora/worldhandler/Main.java
similarity index 67%
rename from src/main/java/exopandora/worldhandler/main/Main.java
rename to src/main/java/exopandora/worldhandler/Main.java
index 15f96af..ddb79d8 100644
--- a/src/main/java/exopandora/worldhandler/main/Main.java
+++ b/src/main/java/exopandora/worldhandler/Main.java
@@ -1,4 +1,4 @@
-package exopandora.worldhandler.main;
+package exopandora.worldhandler;
import java.awt.EventQueue;
import java.io.File;
@@ -15,13 +15,6 @@ public class Main
{
public static final String NAME = "World Handler";
public static final String MODID = "worldhandler";
- public static final String MC_VERSION = "1.12.2";
- public static final String MC_COMPATIBLE = "1.12";
- public static final String VERSION = "2.1";
- public static final String FULL_VERSION = MC_VERSION + "-" + VERSION;
- public static final String NAME_AND_VERSION = NAME + " " + FULL_VERSION;
- public static final String URL = "https://minecraft.curseforge.com/projects/world-handler-command-gui";
- public static final String UPDATE_URL = "https://raw.githubusercontent.com/Exopandora/worldhandler/master/version.json";
public static void main(String[] args)
{
diff --git a/src/main/java/exopandora/worldhandler/main/WorldHandler.java b/src/main/java/exopandora/worldhandler/WorldHandler.java
similarity index 69%
rename from src/main/java/exopandora/worldhandler/main/WorldHandler.java
rename to src/main/java/exopandora/worldhandler/WorldHandler.java
index fc9cf9a..703de49 100644
--- a/src/main/java/exopandora/worldhandler/main/WorldHandler.java
+++ b/src/main/java/exopandora/worldhandler/WorldHandler.java
@@ -1,158 +1,171 @@
-package exopandora.worldhandler.main;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.logging.log4j.Logger;
-import org.lwjgl.input.Keyboard;
-
-import exopandora.worldhandler.builder.ICommandBuilder;
-import exopandora.worldhandler.builder.ICommandBuilderSyntax;
-import exopandora.worldhandler.command.CommandWH;
-import exopandora.worldhandler.command.CommandWorldHandler;
-import exopandora.worldhandler.config.ConfigButcher;
-import exopandora.worldhandler.config.ConfigSettings;
-import exopandora.worldhandler.config.ConfigSkin;
-import exopandora.worldhandler.config.ConfigSliders;
-import exopandora.worldhandler.gui.category.Category;
-import exopandora.worldhandler.gui.content.Content;
-import exopandora.worldhandler.helper.BlockHelper;
-import exopandora.worldhandler.proxy.CommonProxy;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.settings.KeyBinding;
-import net.minecraft.command.ICommand;
-import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.common.config.Configuration;
-import net.minecraftforge.fml.client.registry.ClientRegistry;
-import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.common.Mod.EventHandler;
-import net.minecraftforge.fml.common.Mod.Instance;
-import net.minecraftforge.fml.common.SidedProxy;
-import net.minecraftforge.fml.common.event.FMLInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-@SideOnly(Side.CLIENT)
-@Mod(modid = Main.MODID, name = Main.NAME, acceptedMinecraftVersions = "[" + Main.MC_COMPATIBLE + ",)", version = Main.VERSION, canBeDeactivated = false, guiFactory = "exopandora.worldhandler.gui.config.GuiFactoryWorldHandler", updateJSON = Main.UPDATE_URL, clientSideOnly = true)
-public class WorldHandler
-{
- @Instance(Main.MODID)
- public WorldHandler INSTANCE;
-
- public static KeyBinding KEY_WORLD_HANDLER = new KeyBinding(Main.NAME, Keyboard.KEY_V, "key.categories.misc");
- public static KeyBinding KEY_WORLD_HANDLER_POS1 = new KeyBinding(Main.NAME + " Pos1", Keyboard.KEY_O, "key.categories.misc");
- public static KeyBinding KEY_WORLD_HANDLER_POS2 = new KeyBinding(Main.NAME + " Pos2", Keyboard.KEY_P, "key.categories.misc");
-
- public static Logger LOGGER;
-
- public static final ICommand COMMAND_WORLD_HANDLER = new CommandWorldHandler();
- public static final ICommand COMMAND_WH = new CommandWH();
-
- public static Configuration CONFIG;
-
- public static String USERNAME = null;
-
- @SidedProxy(clientSide = "exopandora.worldhandler.proxy.ClientProxy", serverSide = "exopandora.worldhandler.proxy.CommonProxy")
- public static CommonProxy PROXY;
-
- @EventHandler
- public void preInit(FMLPreInitializationEvent event)
- {
- LOGGER = event.getModLog();
- LOGGER.info("Pre-Initializing " + Main.NAME_AND_VERSION);
- LOGGER.info("First Release on March 28 2013 - 02:29 PM CET by Exopandora");
- LOGGER.info("Latest Version: " + Main.URL);
- CONFIG = new Configuration(event.getSuggestedConfigurationFile());
-
- ConfigSettings.load(CONFIG);
- ConfigSkin.load(CONFIG);
- ConfigSliders.load(CONFIG);
- }
-
- @EventHandler
- public void init(FMLInitializationEvent event)
- {
- LOGGER.info("Initializing " + Main.NAME_AND_VERSION);
- USERNAME = Minecraft.getMinecraft().getSession().getUsername();
-
- MinecraftForge.EVENT_BUS.register(new exopandora.worldhandler.event.EventHandler());
- ClientRegistry.registerKeyBinding(KEY_WORLD_HANDLER);
- updateKeyBindings();
- }
-
- @EventHandler
- public void postInit(FMLPostInitializationEvent event)
- {
- LOGGER.info("Post-Initializing " + Main.NAME_AND_VERSION);
- LOGGER.info("Every mod that has not been registered to this point may not be fully featured in this mod");
-
- ConfigButcher.load(CONFIG);
- Content.registerContents();
- Category.registerCategories();
- }
-
- @EventHandler
- public void serverLoad(FMLServerStartingEvent event)
- {
- event.registerServerCommand(COMMAND_WORLD_HANDLER);
- event.registerServerCommand(COMMAND_WH);
- }
-
- public static void updateConfig()
- {
- ConfigSettings.load(CONFIG);
- ConfigSkin.load(CONFIG);
- ConfigButcher.load(CONFIG);
- ConfigSliders.load(CONFIG);
- updateKeyBindings();
- }
-
- public static void updateKeyBindings()
- {
- boolean isRegistered = ArrayUtils.contains(Minecraft.getMinecraft().gameSettings.keyBindings, KEY_WORLD_HANDLER_POS1) || ArrayUtils.contains(Minecraft.getMinecraft().gameSettings.keyBindings, KEY_WORLD_HANDLER_POS2);
-
- if(ConfigSettings.arePosShortcutsEnabled() && !isRegistered)
- {
- ClientRegistry.registerKeyBinding(KEY_WORLD_HANDLER_POS1);
- ClientRegistry.registerKeyBinding(KEY_WORLD_HANDLER_POS2);
- }
- else if(!ConfigSettings.arePosShortcutsEnabled() && isRegistered)
- {
- Minecraft.getMinecraft().gameSettings.keyBindings = ArrayUtils.removeElements(Minecraft.getMinecraft().gameSettings.keyBindings, KEY_WORLD_HANDLER_POS1, KEY_WORLD_HANDLER_POS2);
- }
- }
-
- public static void sendCommand(ICommandBuilder builder)
- {
- sendCommand(builder, false);
- }
-
- public static void sendCommand(ICommandBuilder builder, boolean special)
- {
- if(builder != null)
- {
- String command;
-
- if(builder instanceof ICommandBuilderSyntax)
- {
- command = ((ICommandBuilderSyntax) builder).toActualCommand();
- }
- else
- {
- command = builder.toCommand();
- }
-
- LOGGER.info("Command: " + command);
-
- if(builder.needsCommandBlock() || special)
- {
- BlockHelper.setCommandBlockNearPlayer(command);
- }
- else
- {
- Minecraft.getMinecraft().player.sendChatMessage(command);
- }
- }
- }
+package exopandora.worldhandler;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.logging.log4j.Logger;
+import org.lwjgl.input.Keyboard;
+
+import exopandora.worldhandler.builder.ICommandBuilder;
+import exopandora.worldhandler.builder.ICommandBuilderSyntax;
+import exopandora.worldhandler.command.CommandWH;
+import exopandora.worldhandler.command.CommandWorldHandler;
+import exopandora.worldhandler.config.ConfigButcher;
+import exopandora.worldhandler.config.ConfigSettings;
+import exopandora.worldhandler.config.ConfigSkin;
+import exopandora.worldhandler.config.ConfigSliders;
+import exopandora.worldhandler.event.EventListener;
+import exopandora.worldhandler.gui.category.Category;
+import exopandora.worldhandler.gui.content.Content;
+import exopandora.worldhandler.helper.BlockHelper;
+import exopandora.worldhandler.proxy.CommonProxy;
+import exopandora.worldhandler.util.UtilKeyBinding;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.command.ICommand;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.fml.client.registry.ClientRegistry;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.common.Mod.EventHandler;
+import net.minecraftforge.fml.common.Mod.Instance;
+import net.minecraftforge.fml.common.ProgressManager;
+import net.minecraftforge.fml.common.ProgressManager.ProgressBar;
+import net.minecraftforge.fml.common.SidedProxy;
+import net.minecraftforge.fml.common.event.FMLInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLLoadCompleteEvent;
+import net.minecraftforge.fml.common.event.FMLModDisabledEvent;
+import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
+import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+@SideOnly(Side.CLIENT)
+@Mod(modid = Main.MODID, name = Main.NAME, acceptedMinecraftVersions = "[$compatible,)", version = "$version", canBeDeactivated = true, guiFactory = "exopandora.worldhandler.gui.config.GuiFactoryWorldHandler", updateJSON = "$update_url", clientSideOnly = true, certificateFingerprint = "$certificate")
+public class WorldHandler
+{
+ @Instance(Main.MODID)
+ private static WorldHandler INSTANCE;
+
+ public static KeyBinding KEY_WORLD_HANDLER = new KeyBinding(Main.NAME, Keyboard.KEY_V, "key.categories.misc");
+ public static KeyBinding KEY_WORLD_HANDLER_POS1 = new KeyBinding(Main.NAME + " Pos1", Keyboard.KEY_O, "key.categories.misc");
+ public static KeyBinding KEY_WORLD_HANDLER_POS2 = new KeyBinding(Main.NAME + " Pos2", Keyboard.KEY_P, "key.categories.misc");
+
+ public static final ICommand COMMAND_WORLD_HANDLER = new CommandWorldHandler();
+ public static final ICommand COMMAND_WH = new CommandWH();
+
+ public static Configuration CONFIG;
+ public static Logger LOGGER;
+ public static String USERNAME = null;
+
+ @SidedProxy(clientSide = "exopandora.worldhandler.proxy.ClientProxy", serverSide = "exopandora.worldhandler.proxy.CommonProxy")
+ private static CommonProxy PROXY;
+ private EventListener eventListener = new EventListener();
+
+ @EventHandler
+ public void preInit(FMLPreInitializationEvent event)
+ {
+ LOGGER = event.getModLog();
+ LOGGER.info("Pre-Initialization");
+ LOGGER.info("First Release on March 28 2013 - 02:29 PM CET by Exopandora");
+ LOGGER.info("Latest Version: $url");
+ CONFIG = new Configuration(event.getSuggestedConfigurationFile());
+ }
+
+ @EventHandler
+ public void init(FMLInitializationEvent event)
+ {
+ LOGGER.info("Initialization");
+ USERNAME = Minecraft.getMinecraft().getSession().getUsername();
+
+ MinecraftForge.EVENT_BUS.register(this.eventListener);
+ ClientRegistry.registerKeyBinding(KEY_WORLD_HANDLER);
+ UtilKeyBinding.updatePosKeys();
+ }
+
+ @EventHandler
+ public void postInit(FMLPostInitializationEvent event)
+ {
+ LOGGER.info("Post-Initialization");
+ }
+
+ @EventHandler
+ public void loadComplete(FMLLoadCompleteEvent event)
+ {
+ LOGGER.info("Load-Complete");
+ ProgressBar bar = ProgressManager.push(Main.NAME, 2);
+ bar.step("Loading Configuration Files");
+
+ ConfigSettings.load(CONFIG);
+ ConfigSkin.load(CONFIG);
+ ConfigSliders.load(CONFIG);
+ ConfigButcher.load(CONFIG);
+
+ bar.step("Initializing User Interface");
+
+ Content.registerContents();
+ Category.registerCategories();
+
+ ProgressManager.pop(bar);
+ }
+
+ @EventHandler
+ public void serverLoad(FMLServerStartingEvent event)
+ {
+ event.registerServerCommand(COMMAND_WORLD_HANDLER);
+ event.registerServerCommand(COMMAND_WH);
+ }
+
+ @EventHandler
+ public void disable(FMLModDisabledEvent event)
+ {
+ MinecraftForge.EVENT_BUS.register(this.eventListener);
+ Minecraft.getMinecraft().gameSettings.keyBindings = ArrayUtils.removeElement(Minecraft.getMinecraft().gameSettings.keyBindings, KEY_WORLD_HANDLER);
+
+ if(UtilKeyBinding.arePosKeysRegistered() && ConfigSettings.arePosShortcutsEnabled())
+ {
+ UtilKeyBinding.removePosKeys();
+ }
+ }
+
+ public static void updateConfig()
+ {
+ ConfigSettings.load(CONFIG);
+ ConfigSkin.load(CONFIG);
+ ConfigButcher.load(CONFIG);
+ ConfigSliders.load(CONFIG);
+ UtilKeyBinding.updatePosKeys();
+ }
+
+ public static void sendCommand(ICommandBuilder builder)
+ {
+ sendCommand(builder, false);
+ }
+
+ public static void sendCommand(ICommandBuilder builder, boolean special)
+ {
+ if(builder != null)
+ {
+ String command;
+
+ if(builder instanceof ICommandBuilderSyntax)
+ {
+ command = ((ICommandBuilderSyntax) builder).toActualCommand();
+ }
+ else
+ {
+ command = builder.toCommand();
+ }
+
+ LOGGER.info("Command: " + command);
+
+ if(builder.needsCommandBlock() || special)
+ {
+ BlockHelper.setCommandBlockNearPlayer(command);
+ }
+ else
+ {
+ Minecraft.getMinecraft().player.sendChatMessage(command);
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/exopandora/worldhandler/builder/CommandBuilder.java b/src/main/java/exopandora/worldhandler/builder/CommandBuilder.java
index cc52194..ed27226 100644
--- a/src/main/java/exopandora/worldhandler/builder/CommandBuilder.java
+++ b/src/main/java/exopandora/worldhandler/builder/CommandBuilder.java
@@ -1,19 +1,18 @@
package exopandora.worldhandler.builder;
-import java.util.AbstractMap;
-import java.util.ArrayList;
+import java.util.AbstractMap.SimpleEntry;
import java.util.List;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
+import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.Syntax.SyntaxEntry;
import exopandora.worldhandler.builder.types.Coordinate;
import exopandora.worldhandler.builder.types.Level;
import exopandora.worldhandler.builder.types.TargetSelector;
import exopandora.worldhandler.builder.types.Type;
-import exopandora.worldhandler.main.WorldHandler;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
@@ -232,20 +231,34 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
{
if(syntax != null)
{
- this.command = syntax.getSyntaxEntries().stream().map(entry -> new AbstractMap.SimpleEntry(entry, entry.toString())).collect(Collectors.toList());
+ this.command = syntax.getSyntaxEntries().stream().map(entry -> new SimpleEntry(entry, entry.toString())).collect(Collectors.toList());
}
}
@Override
public String toCommand()
{
- return "/" + this.getCommandName() + " " + String.join(" ", this.command.stream().map(entry -> this.isDefaultEntry(entry) ? entry.getKey().toString() : entry.getValue()).collect(Collectors.toList()));
+ CommandString command = new CommandString(this.getCommandName());
+
+ for(Entry entry : this.command)
+ {
+ if(this.isDefaultEntry(entry))
+ {
+ command.append(entry.getKey().toString());
+ }
+ else
+ {
+ command.append(entry.getValue());
+ }
+ }
+
+ return command.toString();
}
@Override
public String toActualCommand()
{
- List command = new ArrayList();
+ CommandString command = new CommandString(this.getCommandName());
for(Entry entry : this.command)
{
@@ -254,9 +267,9 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
break;
}
- command.add(entry.getValue());
+ command.append(entry.getValue());
}
- return "/" + this.getCommandName() + " " + String.join(" ", command);
+ return command.toString();
}
}
diff --git a/src/main/java/exopandora/worldhandler/builder/CommandString.java b/src/main/java/exopandora/worldhandler/builder/CommandString.java
new file mode 100644
index 0000000..c69a1ff
--- /dev/null
+++ b/src/main/java/exopandora/worldhandler/builder/CommandString.java
@@ -0,0 +1,52 @@
+package exopandora.worldhandler.builder;
+
+import com.mojang.realmsclient.gui.ChatFormatting;
+
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+@SideOnly(Side.CLIENT)
+public class CommandString
+{
+ private final StringBuilder command = new StringBuilder("/");
+
+ public CommandString(String name)
+ {
+ this.command.append(name);
+ }
+
+ public CommandString(String name, String... arguments)
+ {
+ this(name);
+ this.append(arguments);
+ }
+
+ public void append(String argument)
+ {
+ if(argument != null && !argument.isEmpty())
+ {
+ this.command.append(" " + argument);
+ }
+ else
+ {
+ this.command.append(" " + ChatFormatting.RED + "[error]" + ChatFormatting.RESET);
+ }
+ }
+
+ public void append(String... arguments)
+ {
+ if(arguments != null)
+ {
+ for(String argument : arguments)
+ {
+ this.append(argument);
+ }
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ return this.command.toString();
+ }
+}
diff --git a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java
index 057e79a..14180d5 100644
--- a/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java
+++ b/src/main/java/exopandora/worldhandler/builder/component/impl/ComponentTag.java
@@ -4,8 +4,8 @@ import java.util.function.Function;
import javax.annotation.Nullable;
+import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.component.IBuilderComponent;
-import exopandora.worldhandler.main.WorldHandler;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagByte;
import net.minecraft.nbt.NBTTagByteArray;
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderAdvancement.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderAdvancement.java
index 0f9868b..c6d9a20 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderAdvancement.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderAdvancement.java
@@ -1,5 +1,7 @@
package exopandora.worldhandler.builder.impl;
+import javax.annotation.Nullable;
+
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
@@ -28,7 +30,8 @@ public class BuilderAdvancement extends CommandBuilder
{
this.setNode(0, action != null ? action.toString() : null);
}
-
+
+ @Nullable
public EnumActionType getActionType()
{
return EnumHelper.valueOf(EnumActionType.class, this.getNodeAsString(1));
@@ -38,7 +41,8 @@ public class BuilderAdvancement extends CommandBuilder
{
this.setNode(1, player);
}
-
+
+ @Nullable
public String getPlayer()
{
return this.getNodeAsString(1);
@@ -48,7 +52,8 @@ public class BuilderAdvancement extends CommandBuilder
{
this.setNode(2, mode != null ? mode.toString() : null);
}
-
+
+ @Nullable
public EnumMode getMode()
{
return EnumHelper.valueOf(EnumMode.class, this.getNodeAsString(2));
@@ -58,7 +63,8 @@ public class BuilderAdvancement extends CommandBuilder
{
this.setNode(3, advancement);
}
-
+
+ @Nullable
public ResourceLocation getAdvancement()
{
return this.getNodeAsResourceLocation(3);
@@ -92,7 +98,8 @@ public class BuilderAdvancement extends CommandBuilder
return syntax;
}
-
+
+ @SideOnly(Side.CLIENT)
public static enum EnumActionType
{
GRANT,
@@ -105,6 +112,7 @@ public class BuilderAdvancement extends CommandBuilder
}
}
+ @SideOnly(Side.CLIENT)
public static enum EnumMode
{
ONLY,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderButcher.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderButcher.java
index fd4e1d3..75a59d4 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderButcher.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderButcher.java
@@ -1,5 +1,8 @@
package exopandora.worldhandler.builder.impl;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.TargetSelector;
@@ -30,7 +33,8 @@ public class BuilderButcher extends CommandBuilder
this.targetSelector.set("r", radius);
this.setNode(0, this.targetSelector);
}
-
+
+ @Nonnull
public int getRadius()
{
return this.targetSelector.get("r");
@@ -42,6 +46,7 @@ public class BuilderButcher extends CommandBuilder
this.setNode(0, this.targetSelector);
}
+ @Nonnull
public ResourceLocation getEntity()
{
return this.targetSelector.get("type");
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderClone.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderClone.java
index 44b6c17..e828fe2 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderClone.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderClone.java
@@ -129,6 +129,7 @@ public class BuilderClone extends BuilderDoubleBlockPos
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumMask
{
REPLACE,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderCustomItem.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderCustomItem.java
index a0611a2..1a610d5 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderCustomItem.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderCustomItem.java
@@ -25,12 +25,9 @@ public class BuilderCustomItem extends BuilderGive
this(null, null);
}
- public BuilderCustomItem(String username, ResourceLocation item)
+ public BuilderCustomItem(String player, ResourceLocation item)
{
- this.setPlayer(username);
- this.setItem(item);
- this.setAmount(1);
- this.setMetadata(0);
+ super(player, item);
this.attribute = this.registerNBTComponent(new ComponentAttributeItem(attribute -> attribute.getApplyable().equals(Applyable.BOTH) || attribute.getApplyable().equals(Applyable.PLAYER)));
this.display = this.registerNBTComponent(new ComponentDisplay());
this.enchantment = this.registerNBTComponent(new ComponentEnchantment());
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java
index 348a31a..e8fbacd 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderDifficulty.java
@@ -3,6 +3,8 @@ package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
public class BuilderDifficulty extends CommandBuilder
{
@@ -37,6 +39,7 @@ public class BuilderDifficulty extends CommandBuilder
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumDifficulty
{
PEACEFUL,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderFill.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderFill.java
index 1fca3af..a420e09 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderFill.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderFill.java
@@ -148,6 +148,7 @@ public class BuilderFill extends BuilderDoubleBlockPos
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumBlockHandling
{
REPLACE,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderGamemode.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderGamemode.java
index b2a57e6..6382650 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderGamemode.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderGamemode.java
@@ -3,6 +3,8 @@ package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
public class BuilderGamemode extends CommandBuilder
{
@@ -49,6 +51,7 @@ public class BuilderGamemode extends CommandBuilder
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumGamemode
{
SURVIVAL,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderGeneric.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderGeneric.java
index 739c145..b27e693 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderGeneric.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderGeneric.java
@@ -1,5 +1,6 @@
package exopandora.worldhandler.builder.impl;
+import exopandora.worldhandler.builder.CommandString;
import exopandora.worldhandler.builder.ICommandBuilder;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -19,7 +20,7 @@ public class BuilderGeneric implements ICommandBuilder
@Override
public String toCommand()
{
- return "/" + this.command + " " + String.join(" ", this.arguments);
+ return new CommandString(this.command, this.arguments).toString();
}
public String toActualCommand()
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderGive.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderGive.java
index 2c0aa17..ab2a6c2 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderGive.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderGive.java
@@ -16,6 +16,7 @@ public class BuilderGive extends CommandBuilderNBT
{
this.setPlayer(player);
this.setItem(item);
+ this.setAmount(1);
this.setMetadata(0);
}
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderPotionItem.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderPotionItem.java
index a1257b6..7587abc 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderPotionItem.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderPotionItem.java
@@ -21,9 +21,7 @@ public class BuilderPotionItem extends BuilderGive
public BuilderPotionItem(ResourceLocation item, String player, ComponentPotionItem potion)
{
- this.setItem(item);
- this.setPlayer(player);
- this.setAmount(1);
+ super(player, item);
this.potion = this.registerNBTComponent(potion);
}
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderRecipe.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderRecipe.java
new file mode 100644
index 0000000..a97899e
--- /dev/null
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderRecipe.java
@@ -0,0 +1,97 @@
+package exopandora.worldhandler.builder.impl;
+
+import javax.annotation.Nullable;
+
+import exopandora.worldhandler.builder.CommandBuilder;
+import exopandora.worldhandler.builder.Syntax;
+import exopandora.worldhandler.builder.impl.BuilderAdvancement.EnumActionType;
+import exopandora.worldhandler.builder.types.Type;
+import exopandora.worldhandler.helper.EnumHelper;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+@SideOnly(Side.CLIENT)
+public class BuilderRecipe extends CommandBuilder
+{
+ public BuilderRecipe()
+ {
+ this(null, null, null);
+ }
+
+ public BuilderRecipe(EnumMode mode, String player, ResourceLocation recipe)
+ {
+ this.setMode(mode);
+ this.setPlayer(player);
+ this.setRecipe(recipe);
+ }
+
+ public void setMode(EnumMode mode)
+ {
+ this.setNode(0, mode != null ? mode.toString() : null);
+ }
+
+ @Nullable
+ public EnumMode getMode()
+ {
+ return EnumHelper.valueOf(EnumMode.class, this.getNodeAsString(0));
+ }
+
+ public void setPlayer(String player)
+ {
+ this.setNode(1, player);
+ }
+
+ @Nullable
+ public String getPlayer()
+ {
+ return this.getNodeAsString(1);
+ }
+
+ public void setRecipe(ResourceLocation recipe)
+ {
+ this.setNode(2, recipe);
+ }
+
+ @Nullable
+ public ResourceLocation getRecipe()
+ {
+ return this.getNodeAsResourceLocation(2);
+ }
+
+ public BuilderRecipe getBuilderForMode(EnumMode mode)
+ {
+ return new BuilderRecipe(mode, this.getPlayer(), this.getRecipe());
+ }
+
+ @Override
+ public String getCommandName()
+ {
+ return "recipe";
+ }
+
+ @Override
+ public Syntax getSyntax()
+ {
+ Syntax syntax = new Syntax();
+
+ syntax.addRequired("give|take", Type.STRING);
+ syntax.addOptional("player", Type.STRING);
+ syntax.addOptional("recipe", Type.RESOURCE_LOCATION);
+
+ return syntax;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public static enum EnumMode
+ {
+ GIVE,
+ TAKE;
+
+ @Override
+ public String toString()
+ {
+ return this.name().toLowerCase();
+ }
+ }
+}
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardPlayers.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardPlayers.java
index 61d3877..d4182f5 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardPlayers.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardPlayers.java
@@ -204,6 +204,7 @@ public class BuilderScoreboardPlayers extends BuilderScoreboard
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumTag
{
ADD,
@@ -216,6 +217,7 @@ public class BuilderScoreboardPlayers extends BuilderScoreboard
}
}
+ @SideOnly(Side.CLIENT)
public static enum EnumPoints
{
ADD,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardTeams.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardTeams.java
index ba086d8..5de448a 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardTeams.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderScoreboardTeams.java
@@ -238,6 +238,7 @@ public class BuilderScoreboardTeams extends BuilderScoreboard
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumMode
{
JOIN,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderTime.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderTime.java
index 0eb9ad9..2bfd052 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderTime.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderTime.java
@@ -3,6 +3,8 @@ package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
public class BuilderTime extends CommandBuilder
{
@@ -49,6 +51,7 @@ public class BuilderTime extends CommandBuilder
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumMode
{
ADD,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderWeather.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderWeather.java
index 61d05d4..5818299 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderWeather.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderWeather.java
@@ -3,6 +3,8 @@ package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
public class BuilderWeather extends CommandBuilder
{
@@ -49,6 +51,7 @@ public class BuilderWeather extends CommandBuilder
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumWeather
{
CLEAR,
diff --git a/src/main/java/exopandora/worldhandler/builder/impl/BuilderWhitelist.java b/src/main/java/exopandora/worldhandler/builder/impl/BuilderWhitelist.java
index c03eab8..d0d9ed6 100644
--- a/src/main/java/exopandora/worldhandler/builder/impl/BuilderWhitelist.java
+++ b/src/main/java/exopandora/worldhandler/builder/impl/BuilderWhitelist.java
@@ -76,6 +76,7 @@ public class BuilderWhitelist extends CommandBuilder
return syntax;
}
+ @SideOnly(Side.CLIENT)
public static enum EnumMode
{
ADD,
diff --git a/src/main/java/exopandora/worldhandler/builder/types/Level.java b/src/main/java/exopandora/worldhandler/builder/types/Level.java
index c6c580a..17e1805 100644
--- a/src/main/java/exopandora/worldhandler/builder/types/Level.java
+++ b/src/main/java/exopandora/worldhandler/builder/types/Level.java
@@ -1,5 +1,7 @@
package exopandora.worldhandler.builder.types;
+import javax.annotation.Nullable;
+
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -28,6 +30,7 @@ public class Level
this.level = level;
}
+ @Nullable
public static Level valueOf(String value)
{
if(value != null)
diff --git a/src/main/java/exopandora/worldhandler/builder/types/TargetSelector.java b/src/main/java/exopandora/worldhandler/builder/types/TargetSelector.java
index d00afbf..c27e711 100644
--- a/src/main/java/exopandora/worldhandler/builder/types/TargetSelector.java
+++ b/src/main/java/exopandora/worldhandler/builder/types/TargetSelector.java
@@ -4,6 +4,9 @@ import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -17,7 +20,8 @@ public class TargetSelector
{
this.values.put(id.toLowerCase(), value);
}
-
+
+ @Nullable
public T get(String id)
{
return (T) this.values.get(id);
@@ -28,6 +32,7 @@ public class TargetSelector
return this.values.remove(id.toLowerCase());
}
+ @Nonnull
public static TargetSelector valueOf(String input)
{
if(input.matches(REGEX));
diff --git a/src/main/java/exopandora/worldhandler/command/CommandWH.java b/src/main/java/exopandora/worldhandler/command/CommandWH.java
index 4e10c29..aa4ec6e 100644
--- a/src/main/java/exopandora/worldhandler/command/CommandWH.java
+++ b/src/main/java/exopandora/worldhandler/command/CommandWH.java
@@ -5,6 +5,7 @@ import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
+import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.impl.BuilderClone;
import exopandora.worldhandler.builder.impl.BuilderClone.EnumMask;
import exopandora.worldhandler.builder.impl.BuilderFill;
@@ -12,7 +13,6 @@ import exopandora.worldhandler.builder.impl.BuilderWH;
import exopandora.worldhandler.helper.BlockHelper;
import exopandora.worldhandler.helper.EnumHelper;
import exopandora.worldhandler.helper.ResourceHelper;
-import exopandora.worldhandler.main.WorldHandler;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.command.CommandBase;
diff --git a/src/main/java/exopandora/worldhandler/command/CommandWorldHandler.java b/src/main/java/exopandora/worldhandler/command/CommandWorldHandler.java
index 5b3eb2b..404efc4 100644
--- a/src/main/java/exopandora/worldhandler/command/CommandWorldHandler.java
+++ b/src/main/java/exopandora/worldhandler/command/CommandWorldHandler.java
@@ -5,10 +5,10 @@ import java.util.List;
import com.mojang.realmsclient.gui.ChatFormatting;
+import exopandora.worldhandler.Main;
+import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.impl.BuilderWorldHandler;
-import exopandora.worldhandler.event.EventHandler;
-import exopandora.worldhandler.main.Main;
-import exopandora.worldhandler.main.WorldHandler;
+import exopandora.worldhandler.event.EventListener;
import net.minecraft.client.Minecraft;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
@@ -49,13 +49,13 @@ public class CommandWorldHandler extends CommandBase
}
else if(args[0].equalsIgnoreCase("display"))
{
- new Thread(() -> Minecraft.getMinecraft().addScheduledTask(EventHandler::displayGui)).start();
+ Minecraft.getMinecraft().addScheduledTask(EventListener::displayGui);
}
else if(args[0].equalsIgnoreCase("version"))
{
- sender.sendMessage(new TextComponentString("Installed: " + Main.MC_VERSION + "-" + Main.VERSION));
+ sender.sendMessage(new TextComponentString("Installed: $mcversion-$version"));
ComparableVersion target = ForgeVersion.getResult(Loader.instance().getIndexedModList().get(Main.MODID)).target;
- sender.sendMessage(new TextComponentString("Latest: " + Main.MC_VERSION + "-" + (target != null ? target : Main.VERSION)));
+ sender.sendMessage(new TextComponentString("Latest: $mcversion-" + (target != null ? target : "$version")));
}
else
{
diff --git a/src/main/java/exopandora/worldhandler/command/FakeCommandHandler.java b/src/main/java/exopandora/worldhandler/command/FakeCommandHandler.java
index 1b0c332..68580eb 100644
--- a/src/main/java/exopandora/worldhandler/command/FakeCommandHandler.java
+++ b/src/main/java/exopandora/worldhandler/command/FakeCommandHandler.java
@@ -37,7 +37,7 @@ public class FakeCommandHandler extends CommandHandler
public void tryCommand(ICommand command, ClientChatEvent event)
{
- if(event.getMessage().startsWith("/" + command.getName()) || event.getMessage().startsWith("/" + command.getName() + " "))
+ if(event.getMessage().equals("/" + command.getName()) || event.getMessage().startsWith("/" + command.getName() + " "))
{
this.fakeCommand(command, event);
}
diff --git a/src/main/java/exopandora/worldhandler/config/ConfigSettings.java b/src/main/java/exopandora/worldhandler/config/ConfigSettings.java
index f1b59df..06cc6ff 100644
--- a/src/main/java/exopandora/worldhandler/config/ConfigSettings.java
+++ b/src/main/java/exopandora/worldhandler/config/ConfigSettings.java
@@ -18,6 +18,7 @@ public class ConfigSettings
private static boolean PAUSE;
private static boolean CUSTOM_TIMES;
private static boolean PERMISSION_QEURY;
+ private static boolean HIGHLIGHT_BLOCKS;
private static int DAWN;
private static int NOON;
@@ -40,6 +41,7 @@ public class ConfigSettings
PAUSE = config.getBoolean("pause_game", CATEGORY, false, I18n.format("gui.worldhandler.config.comment.settings.pause_game"), "gui.worldhandler.config.key.settings.pause_game");
CUSTOM_TIMES = config.getBoolean("custom_times", CATEGORY, false, I18n.format("gui.worldhandler.config.comment.settings.custom_times"), "gui.worldhandler.config.key.settings.custom_times");
PERMISSION_QEURY = config.getBoolean("permission_query", CATEGORY, true, I18n.format("gui.worldhandler.config.comment.settings.permission_query"), "gui.worldhandler.config.key.settings.permission_query");
+ HIGHLIGHT_BLOCKS = config.getBoolean("highlight_blocks", CATEGORY, true, I18n.format("gui.worldhandler.config.comment.settings.highlight_blocks"), "gui.worldhandler.config.key.settings.highlight_blocks");
DAWN = config.getInt("custom_time_dawn", CATEGORY, 1000, 0, 24000, I18n.format("gui.worldhandler.config.comment.settings.custom_time_dawn"), "gui.worldhandler.config.key.settings.custom_time_dawn");
NOON = config.getInt("custom_time_noon", CATEGORY, 6000, 0, 24000, I18n.format("gui.worldhandler.config.comment.settings.custom_time_noon"), "gui.worldhandler.config.key.settings.custom_time_noon");
SUNSET = config.getInt("custom_time_sunset", CATEGORY, 12500, 0, 24000, I18n.format("gui.worldhandler.config.comment.settings.custom_time_sunset"), "gui.worldhandler.config.key.settings.custom_time_sunset");
@@ -101,7 +103,12 @@ public class ConfigSettings
{
return PERMISSION_QEURY;
}
-
+
+ public static boolean isHighlightBlocksEnabled()
+ {
+ return HIGHLIGHT_BLOCKS;
+ }
+
public static int getDawn()
{
return DAWN;
diff --git a/src/main/java/exopandora/worldhandler/event/EventHandler.java b/src/main/java/exopandora/worldhandler/event/EventListener.java
similarity index 50%
rename from src/main/java/exopandora/worldhandler/event/EventHandler.java
rename to src/main/java/exopandora/worldhandler/event/EventListener.java
index 81fcf47..02d464b 100644
--- a/src/main/java/exopandora/worldhandler/event/EventHandler.java
+++ b/src/main/java/exopandora/worldhandler/event/EventListener.java
@@ -2,41 +2,102 @@ package exopandora.worldhandler.event;
import com.mojang.realmsclient.gui.ChatFormatting;
+import exopandora.worldhandler.Main;
+import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.command.FakeCommandHandler;
import exopandora.worldhandler.config.ConfigSettings;
import exopandora.worldhandler.gui.container.impl.GuiWorldHandlerContainer;
import exopandora.worldhandler.gui.content.Contents;
import exopandora.worldhandler.helper.BlockHelper;
import exopandora.worldhandler.hud.BiomeIndicator;
-import exopandora.worldhandler.main.Main;
-import exopandora.worldhandler.main.WorldHandler;
import exopandora.worldhandler.util.UtilPlayer;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.resources.I18n;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.text.TextComponentString;
import net.minecraftforge.client.event.ClientChatEvent;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent.OnConfigChangedEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
-public class EventHandler
+public class EventListener
{
private final FakeCommandHandler commandHandler = new FakeCommandHandler();
+ private final BiomeIndicator biomeIndicator = new BiomeIndicator();
@SubscribeEvent
- public void clientTickEvent(TickEvent.ClientTickEvent event)
+ public void renderWorldLastEvent(RenderWorldLastEvent event)
+ {
+ if(ConfigSettings.isHighlightBlocksEnabled() && Minecraft.getMinecraft().world != null)
+ {
+ GlStateManager.pushMatrix();
+ GlStateManager.disableAlpha();
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
+ GlStateManager.glLineWidth(2.0F);
+ GlStateManager.disableTexture2D();
+ GlStateManager.depthMask(false);
+
+ final double constant = 0.0020000000949949026D;
+ EntityPlayer player = Minecraft.getMinecraft().player;
+
+ double playerX = player.lastTickPosX + (player.posX - player.lastTickPosX) * Minecraft.getMinecraft().getRenderPartialTicks();
+ double playerY = player.lastTickPosY + (player.posY - player.lastTickPosY) * Minecraft.getMinecraft().getRenderPartialTicks();
+ double playerZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * Minecraft.getMinecraft().getRenderPartialTicks();
+
+ double minX = Math.min(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()) - constant - playerX;
+ double minY = Math.min(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()) - constant - playerY;
+ double minZ = Math.min(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()) - constant - playerZ;
+
+ double maxX = Math.max(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()) + constant - playerX + 1;
+ double maxY = Math.max(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()) + constant - playerY + 1;
+ double maxZ = Math.max(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()) + constant - playerZ + 1;
+
+ final float opacity = 0.2F;
+
+ for(int x = 1; x < maxX - minX; x++)
+ {
+ RenderGlobal.drawBoundingBox(minX, minY, minZ, minX + x + 2 * constant, maxY, maxZ, 0.0F, 0.0F, 0.0F, opacity);
+ }
+
+ for(int y = 1; y < maxY - minY; y++)
+ {
+ RenderGlobal.drawBoundingBox(minX, minY, minZ, maxX, minY + y + 2 * constant, maxZ, 0.0F, 0.0F, 0.0F, opacity);
+ }
+
+ for(int z = 1; z < maxZ - minZ; z++)
+ {
+ RenderGlobal.drawBoundingBox(minX, minY, minZ, maxX, maxY, minZ + z + 2 * constant, 0.0F, 0.0F, 0.0F, opacity);
+ }
+
+ RenderGlobal.renderFilledBox(minX, minY, minZ, maxX, maxY, maxZ, 0.0F, 0.0F, 0.0F, opacity / 2);
+ RenderGlobal.renderFilledBox(maxX, maxY, maxZ, minX, minY, minZ, 0.0F, 0.0F, 0.0F, opacity / 2);
+
+ GlStateManager.depthMask(true);
+ GlStateManager.enableTexture2D();
+ GlStateManager.disableBlend();
+ GlStateManager.enableAlpha();
+ GlStateManager.popMatrix();
+ }
+ }
+
+ @SubscribeEvent
+ public void clientTickEvent(ClientTickEvent event)
{
if(Minecraft.getMinecraft().inGameHasFocus && event.phase.equals(Phase.START))
{
if(ConfigSettings.isBiomeIndicatorEnabled())
{
- BiomeIndicator.tick();
+ this.biomeIndicator.tick();
}
}
}
diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonKeyboard.java b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonKeyboard.java
index cd04ba4..6190686 100644
--- a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonKeyboard.java
+++ b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonKeyboard.java
@@ -2,10 +2,10 @@ package exopandora.worldhandler.gui.button;
import org.lwjgl.input.Mouse;
+import exopandora.worldhandler.Main;
import exopandora.worldhandler.config.ConfigSkin;
import exopandora.worldhandler.gui.container.Container;
import exopandora.worldhandler.gui.content.Content;
-import exopandora.worldhandler.main.Main;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.audio.SoundHandler;
diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonList.java b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonList.java
index e8dd642..7a02174 100644
--- a/src/main/java/exopandora/worldhandler/gui/button/GuiButtonList.java
+++ b/src/main/java/exopandora/worldhandler/gui/button/GuiButtonList.java
@@ -4,12 +4,13 @@ import com.mojang.realmsclient.gui.ChatFormatting;
import exopandora.worldhandler.format.TextFormatting;
import exopandora.worldhandler.gui.button.logic.IListButtonLogic;
-import exopandora.worldhandler.gui.button.storage.ButtonStorage;
+import exopandora.worldhandler.gui.button.persistence.ButtonValues;
import exopandora.worldhandler.gui.container.Container;
import exopandora.worldhandler.gui.content.Content;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -17,21 +18,21 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class GuiButtonList extends GuiButtonWorldHandler
{
private final IListButtonLogic logic;
- private final ButtonStorage storage;
+ private final ButtonValues persistence;
private int mouseX;
private int mouseY;
- public GuiButtonList(int id, int x, int y, int width, int height, Content container, IListButtonLogic logic)
+ public GuiButtonList(int id, int x, int y, int width, int height, Content content, IListButtonLogic logic)
{
- this(id, x, y, width, height, null, container, logic);
+ this(id, x, y, width, height, null, content, logic);
}
- public GuiButtonList(int id, int x, int y, int width, int height, EnumTooltip tooltipType, Content container, IListButtonLogic logic)
+ public GuiButtonList(int id, int x, int y, int width, int height, EnumTooltip tooltipType, Content content, IListButtonLogic logic)
{
super(id, x, y, width, height, null, null, tooltipType);
this.logic = logic;
- this.storage = container.getStorage(this.logic.getId());
- this.updateStorageObject();
+ this.persistence = content.getPersistence(this.logic.getId());
+ this.updatePersistenceObject();
}
@Override
@@ -46,7 +47,7 @@ public class GuiButtonList extends GuiButtonWorldHandler
this.mouseX = mouseX;
this.mouseY = mouseY;
- this.displayString = this.logic.getDisplayString(this.storage);
+ this.displayString = this.logic.getDisplayString(this.persistence);
if(this.displayString != null && !this.displayString.isEmpty())
{
@@ -77,7 +78,7 @@ public class GuiButtonList extends GuiButtonWorldHandler
{
if(this.tooltipType != null)
{
- this.displayTooltip = this.logic.getTooltipString(this.storage);
+ this.displayTooltip = this.logic.getTooltipString(this.persistence);
}
super.drawTooltip(mouseX, mouseY, width, height);
@@ -100,36 +101,67 @@ public class GuiButtonList extends GuiButtonWorldHandler
public void actionPerformed(Container container, GuiButton button)
{
+ int max = this.logic.getMax() - 1;
+ int index = this.persistence.getIndex();
+
if(this.isHoveringLeft(this.mouseX, this.mouseY))
{
- if(this.storage.getIndex() > 0)
+ if(GuiScreen.isShiftKeyDown())
{
- this.storage.decrementIndex();
+ if(index < 10)
+ {
+ this.persistence.setIndex(max - (9 - index));
+ }
+ else
+ {
+ this.persistence.decrementIndex(10);
+ }
}
else
{
- this.storage.setIndex(this.logic.getMax() - 1);
+ if(index > 0)
+ {
+ this.persistence.decrementIndex();
+ }
+ else
+ {
+ this.persistence.setIndex(max);
+ }
}
}
else if(this.isHoveringRight(this.mouseX, this.mouseY))
{
- if(this.storage.getIndex() < this.logic.getMax() - 1)
+ if(GuiScreen.isShiftKeyDown())
{
- this.storage.incrementIndex();
+ if(index > max - 10)
+ {
+ this.persistence.setIndex(9 - (max - index));
+ }
+ else
+ {
+ this.persistence.incrementIndex(10);
+ }
}
else
{
- this.storage.setIndex(0);
+ if(index < max)
+ {
+ this.persistence.incrementIndex();
+ }
+ else
+ {
+ this.persistence.setIndex(0);
+ }
}
}
- this.updateStorageObject();
- this.logic.actionPerformed(container, button, this.storage);
+ this.updatePersistenceObject();
+ this.logic.actionPerformed(container, button, this.persistence);
}
- private void updateStorageObject()
+ private void updatePersistenceObject()
{
- this.storage.setObject(this.logic.getObject(this.storage.getIndex()));
+ this.persistence.setObject(this.logic.getObject(this.persistence.getIndex()));
}
public IListButtonLogic getLogic()
diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java b/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java
index 42ca799..835da31 100644
--- a/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java
+++ b/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java
@@ -2,8 +2,8 @@ package exopandora.worldhandler.gui.button;
import exopandora.worldhandler.config.ConfigSkin;
import exopandora.worldhandler.gui.button.logic.ISliderResponder;
-import exopandora.worldhandler.gui.button.storage.ButtonStorage;
-import exopandora.worldhandler.gui.button.storage.SliderStorage;
+import exopandora.worldhandler.gui.button.persistence.ButtonValues;
+import exopandora.worldhandler.gui.button.persistence.SliderValues;
import exopandora.worldhandler.gui.container.Container;
import exopandora.worldhandler.gui.content.Content;
import exopandora.worldhandler.helper.ResourceHelper;
@@ -25,67 +25,64 @@ public class GuiSlider extends GuiButton
private final String name;
private final ISliderResponder responder;
private final Container frame;
- private final ButtonStorage storage;
+ private final ButtonValues persistence;
- public GuiSlider(Content container, Container frame, Object key, int x, int y, int width, int height, String name, double min, double max, double start, ISliderResponder responder)
+ public GuiSlider(Content content, Container frame, Object key, int x, int y, int width, int height, String name, double min, double max, double start, ISliderResponder responder)
{
super(Integer.MAX_VALUE, x, y, width, height, null);
this.frame = frame;
this.key = key;
this.name = name;
this.responder = responder;
- this.storage = container.getStorage(key);
- this.initStorage(Math.round(min), Math.round(max), Math.round(start));
+ this.persistence = content.getPersistence(key);
+ this.initValues(Math.round(min), Math.round(max), Math.round(start));
this.displayString = this.getDisplayString();
}
- private void initStorage(double min, double max, double start)
+ private void initValues(double min, double max, double start)
{
- if(this.storage.getObject() == null || this.storage.getObject().getMin() != min || this.storage.getObject().getMax() != max)
+ if(this.persistence.getObject() == null)
{
- if(this.storage.getObject() == null)
+ if(min == max)
{
- if(min == max)
- {
- this.storage.setObject(new SliderStorage(min, max, 0));
- }
- else
- {
- this.storage.setObject(new SliderStorage(min, max, (start - min) / (max - min)));
- }
+ this.persistence.setObject(new SliderValues(min, max, 0.0D));
}
else
{
- this.storage.setObject(new SliderStorage(min, max, (int) MathHelper.clamp(this.getValue(), min, max)));
+ this.persistence.setObject(new SliderValues(min, max, (start - min) / (max - min)));
}
}
+ else if(this.persistence.getObject().getMin() != min || this.persistence.getObject().getMax() != max)
+ {
+ this.persistence.setObject(new SliderValues(min, max, (int) MathHelper.clamp(this.getValue(), min, max)));
+ }
}
private void setPosition(double position)
{
- this.storage.getObject().setPosition(position);
+ this.persistence.getObject().setPosition(position);
}
private double getPosition()
{
- return this.storage.getObject().getPosition();
+ return this.persistence.getObject().getPosition();
}
private void setValue(int value)
{
- this.storage.getObject().setValue(value);
+ this.persistence.getObject().setValue(value);
}
private int getValue()
{
- return this.storage.getObject().getValue();
+ return this.persistence.getObject().getValue();
}
private String getDisplayString()
{
return this.responder.getText(this.key, I18n.format(this.name), this.getValue());
}
-
+
@Override
protected int getHoverState(boolean mouseOver)
{
@@ -191,7 +188,7 @@ public class GuiSlider extends GuiButton
return false;
}
-
+
@Override
public void mouseReleased(int mouseX, int mouseY)
{
diff --git a/src/main/java/exopandora/worldhandler/gui/button/logic/ColorListButtonLogic.java b/src/main/java/exopandora/worldhandler/gui/button/logic/ColorListButtonLogic.java
index 3711650..a2350b6 100644
--- a/src/main/java/exopandora/worldhandler/gui/button/logic/ColorListButtonLogic.java
+++ b/src/main/java/exopandora/worldhandler/gui/button/logic/ColorListButtonLogic.java
@@ -5,7 +5,7 @@ import java.util.Arrays;
import com.mojang.realmsclient.gui.ChatFormatting;
import exopandora.worldhandler.format.EnumColor;
-import exopandora.worldhandler.gui.button.storage.ButtonStorage;
+import exopandora.worldhandler.gui.button.persistence.ButtonValues;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -26,15 +26,15 @@ public abstract class ColorListButtonLogic implements IListButtonLogic
}
@Override
- public String getTooltipString(ButtonStorage storage)
+ public String getTooltipString(ButtonValues values)
{
return null;
}
@Override
- public String getDisplayString(ButtonStorage storage)
+ public String getDisplayString(ButtonValues values)
{
- EnumColor color = EnumColor.getColorFromId(storage.getIndex());
+ EnumColor color = EnumColor.getColorFromId(values.getIndex());
return color + I18n.format("gui.worldhandler.color") + ": " + I18n.format("gui.worldhandler.color." + color.getFormat());
}
diff --git a/src/main/java/exopandora/worldhandler/gui/button/logic/IListButtonLogic.java b/src/main/java/exopandora/worldhandler/gui/button/logic/IListButtonLogic.java
index a5e1db4..0f3ce55 100644
--- a/src/main/java/exopandora/worldhandler/gui/button/logic/IListButtonLogic.java
+++ b/src/main/java/exopandora/worldhandler/gui/button/logic/IListButtonLogic.java
@@ -1,6 +1,6 @@
package exopandora.worldhandler.gui.button.logic;
-import exopandora.worldhandler.gui.button.storage.ButtonStorage;
+import exopandora.worldhandler.gui.button.persistence.ButtonValues;
import exopandora.worldhandler.gui.container.Container;
import net.minecraft.client.gui.GuiButton;
import net.minecraftforge.fml.relauncher.Side;
@@ -9,19 +9,19 @@ import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public interface IListButtonLogic
{
- void actionPerformed(Container container, GuiButton button, ButtonStorage storage);
+ void actionPerformed(Container container, GuiButton button, ButtonValues values);
int getMax();
T getObject(int index);
- String getDisplayString(ButtonStorage storage);
+ String getDisplayString(ButtonValues values);
- default String getTooltipString(ButtonStorage storage)
+ default String getTooltipString(ButtonValues values)
{
- if(storage != null && storage.getObject() != null)
+ if(values != null && values.getObject() != null)
{
- return storage.getObject().toString() + " (" + (storage.getIndex() + 1) + "/" + this.getMax() + ")";
+ return values.getObject().toString() + " (" + (values.getIndex() + 1) + "/" + this.getMax() + ")";
}
return null;
diff --git a/src/main/java/exopandora/worldhandler/gui/button/storage/ButtonStorage.java b/src/main/java/exopandora/worldhandler/gui/button/persistence/ButtonValues.java
similarity index 68%
rename from src/main/java/exopandora/worldhandler/gui/button/storage/ButtonStorage.java
rename to src/main/java/exopandora/worldhandler/gui/button/persistence/ButtonValues.java
index b8a6dc6..8f9018e 100644
--- a/src/main/java/exopandora/worldhandler/gui/button/storage/ButtonStorage.java
+++ b/src/main/java/exopandora/worldhandler/gui/button/persistence/ButtonValues.java
@@ -1,10 +1,10 @@
-package exopandora.worldhandler.gui.button.storage;
+package exopandora.worldhandler.gui.button.persistence;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
-public class ButtonStorage
+public class ButtonValues
{
private int index;
private T object;
@@ -24,11 +24,21 @@ public class ButtonStorage
this.index++;
}
+ public void incrementIndex(int amount)
+ {
+ this.index += amount;
+ }
+
public void decrementIndex()
{
this.index--;
}
+ public void decrementIndex(int amount)
+ {
+ this.index -= amount;
+ }
+
public T getObject()
{
return this.object;
diff --git a/src/main/java/exopandora/worldhandler/gui/button/storage/SliderStorage.java b/src/main/java/exopandora/worldhandler/gui/button/persistence/SliderValues.java
similarity index 71%
rename from src/main/java/exopandora/worldhandler/gui/button/storage/SliderStorage.java
rename to src/main/java/exopandora/worldhandler/gui/button/persistence/SliderValues.java
index fd38fa8..01b54c3 100644
--- a/src/main/java/exopandora/worldhandler/gui/button/storage/SliderStorage.java
+++ b/src/main/java/exopandora/worldhandler/gui/button/persistence/SliderValues.java
@@ -1,26 +1,31 @@
-package exopandora.worldhandler.gui.button.storage;
+package exopandora.worldhandler.gui.button.persistence;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
+
@SideOnly(Side.CLIENT)
-public class SliderStorage
+public class SliderValues
{
private final double min;
private final double max;
private double position;
- public SliderStorage(double min, double max, double position)
+ private SliderValues(double min, double max)
{
this.min = min;
this.max = max;
+ }
+
+ public SliderValues(double min, double max, double position)
+ {
+ this(min, max);
this.position = position;
}
- public SliderStorage(double min, double max, int value)
+ public SliderValues(double min, double max, int value)
{
- this.min = min;
- this.max = max;
+ this(min, max);
this.position = this.valueToPosition(value);
}
@@ -56,6 +61,11 @@ public class SliderStorage
private double valueToPosition(int value)
{
+ if(this.min == this.max)
+ {
+ return 0;
+ }
+
return (value - this.min) / (this.max - this.min);
}
}
\ No newline at end of file
diff --git a/src/main/java/exopandora/worldhandler/gui/category/Categories.java b/src/main/java/exopandora/worldhandler/gui/category/Categories.java
index d209df7..ecef943 100644
--- a/src/main/java/exopandora/worldhandler/gui/category/Categories.java
+++ b/src/main/java/exopandora/worldhandler/gui/category/Categories.java
@@ -1,6 +1,6 @@
package exopandora.worldhandler.gui.category;
-import exopandora.worldhandler.main.Main;
+import exopandora.worldhandler.Main;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
diff --git a/src/main/java/exopandora/worldhandler/gui/category/Category.java b/src/main/java/exopandora/worldhandler/gui/category/Category.java
index 9c7338a..4ae1d3f 100644
--- a/src/main/java/exopandora/worldhandler/gui/category/Category.java
+++ b/src/main/java/exopandora/worldhandler/gui/category/Category.java
@@ -1,81 +1,81 @@
-package exopandora.worldhandler.gui.category;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import exopandora.worldhandler.gui.content.Content;
-import exopandora.worldhandler.gui.content.Contents;
-import exopandora.worldhandler.main.Main;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.RegistryNamespaced;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-@SideOnly(Side.CLIENT)
-public class Category
-{
- public static final RegistryNamespaced REGISTRY = new RegistryNamespaced();
-
- private final List contents;
-
- public Category()
- {
- this.contents = new ArrayList();
- }
-
- public Category(List contents)
- {
- this.contents = contents;
- }
-
- public Category(Content... contents)
- {
- this.contents = Arrays.asList(contents);
- }
-
- public Category add(Content content)
- {
- this.contents.add(content);
- return this;
- }
-
- public List getContents()
- {
- return this.contents;
- }
-
- public int getSize()
- {
- return this.contents.size();
- }
-
- @Nullable
- public Content getContent(int index)
- {
- return this.contents.get(index);
- }
-
- public static void registerCategories()
- {
- registerCategory(0, "main", new Category(Contents.MAIN, Contents.CONTAINERS, Contents.MULTIPLAYER));
- registerCategory(1, "entities", new Category(Contents.SUMMON));
- registerCategory(2, "items", new Category(Contents.CUSTOM_ITEM, Contents.ENCHANTMENT));
- registerCategory(3, "blocks", new Category(Contents.EDIT_BLOCKS, Contents.SIGN_EDITOR, Contents.NOTE_EDITOR));
- registerCategory(4, "world", new Category(Contents.WORLD_INFO, Contents.GAMERULES));
- registerCategory(5, "player", new Category(Contents.PLAYER, Contents.EXPERIENCE, Contents.ADVANCEMENTS));
- registerCategory(6, "scoreboard", new Category(Contents.SCOREBOARD_OBJECTIVES, Contents.SCOREBOARD_TEAMS, Contents.SCOREBOARD_PLAYERS));
- }
-
- private static void registerCategory(int id, String textualID, Category category)
- {
- registerCategory(id, new ResourceLocation(Main.MODID, textualID), category);
- }
-
- private static void registerCategory(int id, ResourceLocation textualID, Category category)
- {
- REGISTRY.register(id, textualID, category);
- }
-}
+package exopandora.worldhandler.gui.category;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Nullable;
+
+import exopandora.worldhandler.Main;
+import exopandora.worldhandler.gui.content.Content;
+import exopandora.worldhandler.gui.content.Contents;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.registry.RegistryNamespaced;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+@SideOnly(Side.CLIENT)
+public class Category
+{
+ public static final RegistryNamespaced REGISTRY = new RegistryNamespaced();
+
+ private final List contents;
+
+ public Category()
+ {
+ this.contents = new ArrayList();
+ }
+
+ public Category(List contents)
+ {
+ this.contents = contents;
+ }
+
+ public Category(Content... contents)
+ {
+ this.contents = Arrays.asList(contents);
+ }
+
+ public Category add(Content content)
+ {
+ this.contents.add(content);
+ return this;
+ }
+
+ public List getContents()
+ {
+ return this.contents;
+ }
+
+ public int getSize()
+ {
+ return this.contents.size();
+ }
+
+ @Nullable
+ public Content getContent(int index)
+ {
+ return this.contents.get(index);
+ }
+
+ public static void registerCategories()
+ {
+ registerCategory(0, "main", new Category(Contents.MAIN, Contents.CONTAINERS, Contents.MULTIPLAYER));
+ registerCategory(1, "entities", new Category(Contents.SUMMON));
+ registerCategory(2, "items", new Category(Contents.CUSTOM_ITEM, Contents.ENCHANTMENT));
+ registerCategory(3, "blocks", new Category(Contents.EDIT_BLOCKS, Contents.SIGN_EDITOR, Contents.NOTE_EDITOR));
+ registerCategory(4, "world", new Category(Contents.WORLD_INFO, Contents.GAMERULES, Contents.RECIPES));
+ registerCategory(5, "player", new Category(Contents.PLAYER, Contents.EXPERIENCE, Contents.ADVANCEMENTS));
+ registerCategory(6, "scoreboard", new Category(Contents.SCOREBOARD_OBJECTIVES, Contents.SCOREBOARD_TEAMS, Contents.SCOREBOARD_PLAYERS));
+ }
+
+ private static void registerCategory(int id, String textualID, Category category)
+ {
+ registerCategory(id, new ResourceLocation(Main.MODID, textualID), category);
+ }
+
+ private static void registerCategory(int id, ResourceLocation textualID, Category category)
+ {
+ REGISTRY.register(id, textualID, category);
+ }
+}
diff --git a/src/main/java/exopandora/worldhandler/gui/config/GuiConfigWorldHandler.java b/src/main/java/exopandora/worldhandler/gui/config/GuiConfigWorldHandler.java
index f558c71..15aa168 100644
--- a/src/main/java/exopandora/worldhandler/gui/config/GuiConfigWorldHandler.java
+++ b/src/main/java/exopandora/worldhandler/gui/config/GuiConfigWorldHandler.java
@@ -3,12 +3,12 @@ package exopandora.worldhandler.gui.config;
import java.util.ArrayList;
import java.util.List;
+import exopandora.worldhandler.Main;
+import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.config.ConfigButcher;
import exopandora.worldhandler.config.ConfigSettings;
import exopandora.worldhandler.config.ConfigSkin;
import exopandora.worldhandler.config.ConfigSliders;
-import exopandora.worldhandler.main.Main;
-import exopandora.worldhandler.main.WorldHandler;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.common.config.ConfigCategory;
diff --git a/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandlerContainer.java b/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandlerContainer.java
index 6e269ef..665799f 100644
--- a/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandlerContainer.java
+++ b/src/main/java/exopandora/worldhandler/gui/container/impl/GuiWorldHandlerContainer.java
@@ -12,6 +12,7 @@ import javax.annotation.Nullable;
import com.google.common.base.Predicates;
import com.mojang.realmsclient.gui.ChatFormatting;
+import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.impl.BuilderDifficulty;
import exopandora.worldhandler.builder.impl.BuilderDifficulty.EnumDifficulty;
import exopandora.worldhandler.builder.impl.BuilderGamemode;
@@ -34,8 +35,6 @@ import exopandora.worldhandler.gui.content.Content;
import exopandora.worldhandler.gui.content.IContent;
import exopandora.worldhandler.gui.content.element.IElement;
import exopandora.worldhandler.helper.ResourceHelper;
-import exopandora.worldhandler.main.Main;
-import exopandora.worldhandler.main.WorldHandler;
import exopandora.worldhandler.util.UtilRender;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
@@ -144,7 +143,7 @@ public class GuiWorldHandlerContainer extends Container
if(!this.content.getActiveContent().equals(tab))
{
- this.finalButtons.add(new GuiButtonTab(-16, (int)(backgroundX + xOffset), backgroundY - 20, (int)this.tabWidth + (int)Math.ceil(this.tabEpsilon / this.tabSize), 21, index));
+ this.finalButtons.add(new GuiButtonTab(-16, (int) (backgroundX + xOffset), backgroundY - 20, (int) this.tabWidth + (int) Math.ceil(this.tabEpsilon / this.tabSize), 21, index));
}
});
@@ -343,7 +342,6 @@ public class GuiWorldHandlerContainer extends Container
break elements;
}
}
-
this.content.actionPerformed(this, button);
break;
}
@@ -351,7 +349,7 @@ public class GuiWorldHandlerContainer extends Container
private void defaultColor()
{
- this.defaultColor(1);
+ this.defaultColor(1.0F);
}
private void defaultColor(float alpha)
@@ -445,8 +443,8 @@ public class GuiWorldHandlerContainer extends Container
}
this.bindBackground();
- this.drawTexturedModalRect((int)(backgroundX + xOffset), (int)(backgroundY + yOffset), 0, 0, (int) Math.ceil(this.tabHalf), fHeight);
- this.drawTexturedModalRect((int)(backgroundX + this.tabHalf + xOffset), (int)(backgroundY + yOffset), this.bgTextureWidth - (int) Math.ceil(this.tabHalf), 0, (int) Math.ceil(this.tabHalf), fHeight);
+ this.drawTexturedModalRect((int) (backgroundX + xOffset), (int) (backgroundY + yOffset), 0, 0, (int) Math.ceil(this.tabHalf), fHeight);
+ this.drawTexturedModalRect((int) (backgroundX + this.tabHalf + xOffset), (int) (backgroundY + yOffset), this.bgTextureWidth - (int) Math.ceil(this.tabHalf), 0, (int) Math.ceil(this.tabHalf), fHeight);
if(!ConfigSkin.areSharpEdgesEnabled())
{
@@ -460,7 +458,7 @@ public class GuiWorldHandlerContainer extends Container
for(int x = 0; x < factor; x++)
{
- this.drawTexturedModalRect((int)(backgroundX + this.tabWidth + xOffset - x - 1), (int)(backgroundY + x + 1), (int)(this.tabWidth - x - 1), x + 1, x + 1, 1);
+ this.drawTexturedModalRect((int) (backgroundX + this.tabWidth + xOffset - x - 1), (int) (backgroundY + x + 1), (int) (this.tabWidth - x - 1), x + 1, x + 1, 1);
}
}
@@ -472,7 +470,7 @@ public class GuiWorldHandlerContainer extends Container
for(int x = 0; x < factor; x++)
{
- this.drawTexturedModalRect((int)(backgroundX + xOffset), (int)(backgroundY + x + 1), xOffset.intValue(), x + 1, x + 1, 1);
+ this.drawTexturedModalRect((int) (backgroundX + xOffset), (int) (backgroundY + x + 1), xOffset.intValue(), x + 1, x + 1, 1);
}
}
@@ -486,7 +484,7 @@ public class GuiWorldHandlerContainer extends Container
for(int x = 0; x < width; x += interval)
{
this.defaultColor(1.0F - (x / (width + 5.0F * interval)));
- this.drawTexturedModalRect((int)(backgroundX + xOffset), (int)(backgroundY + yOffset + fHeight + x / interval), 0, fHeight, width - x, 1);
+ this.drawTexturedModalRect((int) (backgroundX + xOffset), (int) (backgroundY + yOffset + fHeight + x / interval), 0, fHeight, width - x, 1);
}
}
@@ -499,7 +497,7 @@ public class GuiWorldHandlerContainer extends Container
for(int x = 0; x < width; x += interval)
{
this.defaultColor(1.0F - (x / (width + 5.0F * interval)));
- this.drawTexturedModalRect((int)(backgroundX + Math.ceil(xOffset) + x + offset), (int)(backgroundY + yOffset + fHeight + x / interval), this.bgTextureWidth - width + x, fHeight, width - x, 1);
+ this.drawTexturedModalRect((int) (backgroundX + Math.ceil(xOffset) + x + offset), (int) (backgroundY + yOffset + fHeight + x / interval), this.bgTextureWidth - width + x, fHeight, width - x, 1);
}
}
}
@@ -531,17 +529,20 @@ public class GuiWorldHandlerContainer extends Container
}
}
- this.drawCenteredString(this.fontRenderer, ChatFormatting.UNDERLINE + tab.getTabTitle(), (int)(backgroundX + this.tabHalf + xOffset), (int)(backgroundY - 13), color);
+ this.drawCenteredString(this.fontRenderer, ChatFormatting.UNDERLINE + tab.getTabTitle(), (int) (backgroundX + this.tabHalf + xOffset), (int) (backgroundY - 13), color);
});
this.defaultColor();
//VERSION LABEL
+ final String label = "$mcversion-$version";
final int hexAlpha = (int) (0xFF * 0.2) << 24;
final int color = ConfigSkin.getLabelColor() + hexAlpha;
+ final int versionWidth = this.width - this.fontRenderer.getStringWidth(label) - 2;
+ final int versionHeight = this.height - 10;
- this.fontRenderer.drawString(Main.MC_VERSION + "-" + Main.VERSION, this.width - this.fontRenderer.getStringWidth(Main.MC_VERSION + "-" + Main.VERSION) - 2, this.height - 10, color);
+ this.fontRenderer.drawString(label, versionWidth, versionHeight, color);
//TITLE
@@ -648,6 +649,13 @@ public class GuiWorldHandlerContainer extends Container
}
}
}
+
+ //VERSION LABEL TOOLTIP
+
+ if(mouseX >= versionWidth && mouseY >= versionHeight)
+ {
+ GuiUtils.drawHoveringText(Arrays.asList(label), versionWidth - 12, versionHeight + 12, this.width + this.fontRenderer.getStringWidth(label), this.height + 10, this.width, this.fontRenderer);
+ }
}
@Override
diff --git a/src/main/java/exopandora/worldhandler/gui/content/Content.java b/src/main/java/exopandora/worldhandler/gui/content/Content.java
index cd66241..97fadf2 100644
--- a/src/main/java/exopandora/worldhandler/gui/content/Content.java
+++ b/src/main/java/exopandora/worldhandler/gui/content/Content.java
@@ -1,111 +1,114 @@
-package exopandora.worldhandler.gui.content;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import exopandora.worldhandler.gui.button.storage.ButtonStorage;
-import exopandora.worldhandler.gui.content.impl.ContentAdvancements;
-import exopandora.worldhandler.gui.content.impl.ContentButcher;
-import exopandora.worldhandler.gui.content.impl.ContentChangeWorld;
-import exopandora.worldhandler.gui.content.impl.ContentContainers;
-import exopandora.worldhandler.gui.content.impl.ContentContinue;
-import exopandora.worldhandler.gui.content.impl.ContentCustomItem;
-import exopandora.worldhandler.gui.content.impl.ContentEditBlocks;
-import exopandora.worldhandler.gui.content.impl.ContentEnchantment;
-import exopandora.worldhandler.gui.content.impl.ContentExperience;
-import exopandora.worldhandler.gui.content.impl.ContentGamerules;
-import exopandora.worldhandler.gui.content.impl.ContentMain;
-import exopandora.worldhandler.gui.content.impl.ContentMultiplayer;
-import exopandora.worldhandler.gui.content.impl.ContentNoteEditor;
-import exopandora.worldhandler.gui.content.impl.ContentPlayer;
-import exopandora.worldhandler.gui.content.impl.ContentPotions;
-import exopandora.worldhandler.gui.content.impl.ContentScoreboardObjectives;
-import exopandora.worldhandler.gui.content.impl.ContentScoreboardPlayers;
-import exopandora.worldhandler.gui.content.impl.ContentScoreboardTeams;
-import exopandora.worldhandler.gui.content.impl.ContentSignEditor;
-import exopandora.worldhandler.gui.content.impl.ContentSummon;
-import exopandora.worldhandler.gui.content.impl.ContentWorldInfo;
-import exopandora.worldhandler.main.Main;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.registry.RegistryNamespaced;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-@SideOnly(Side.CLIENT)
-public abstract class Content implements IContent
-{
- public static final RegistryNamespaced REGISTRY = new RegistryNamespaced();
-
- public static void registerContents()
- {
- //MAIN
- registerContent(0, "main", new ContentMain());
- registerContent(1, "containers", new ContentContainers());
- registerContent(2, "multiplayer", new ContentMultiplayer());
-
- //ENTITIES
- registerContent(3, "summon", new ContentSummon());
-
- //ITEMS
- registerContent(5, "custom_item", new ContentCustomItem());
- registerContent(4, "enchantment", new ContentEnchantment());
-
- //BLOCKS
- registerContent(6, "edit_blocks", new ContentEditBlocks());
- registerContent(7, "sign_editor", new ContentSignEditor());
- registerContent(8, "note_editor", new ContentNoteEditor());
-
- //WORLD
- registerContent(9, "world", new ContentWorldInfo());
- registerContent(10, "gamerules", new ContentGamerules());
-
- //PLAYER
- registerContent(11, "player", new ContentPlayer());
- registerContent(12, "experience", new ContentExperience());
- registerContent(13, "advancements", new ContentAdvancements());
-
- //SCOREBOARD
- registerContent(14, "scoreboard_objectives", new ContentScoreboardObjectives());
- registerContent(15, "scoreboard_teams", new ContentScoreboardTeams());
- registerContent(16, "scoreboard_players", new ContentScoreboardPlayers());
-
- //MISC
- registerContent(17, "change_world", new ContentChangeWorld());
- registerContent(18, "continue", new ContentContinue());
-
- //NO CATEGORY
- registerContent(19, "potions", new ContentPotions());
- registerContent(20, "butcher", new ContentButcher());
- }
-
- private static void registerContent(int id, String textualID, Content content)
- {
- registerContent(id, new ResourceLocation(Main.MODID, textualID), content);
- }
-
- private static void registerContent(int id, ResourceLocation textualID, Content content)
- {
- REGISTRY.register(id, textualID, content);
- }
-
- private Map