Explorar o código

Update for Minecraft 1.12, fixes to have no need for SnuviScript in Client

Kajetan Johannes Hammerle %!s(int64=8) %!d(string=hai) anos
pai
achega
f221ec8d80
Modificáronse 44 ficheiros con 742 adicións e 612 borrados
  1. 5 6
      build.gradle
  2. 26 26
      gradlew
  3. 0 90
      gradlew.bat
  4. 10 17
      src/main/java/me/km/KajetansMod.java
  5. 38 0
      src/main/java/me/km/ObjectRegistry.java
  6. 1 1
      src/main/java/me/km/api/Location.java
  7. 3 3
      src/main/java/me/km/api/SimpleConfig.java
  8. 38 40
      src/main/java/me/km/api/Utils.java
  9. 3 2
      src/main/java/me/km/blocks/BlockBase.java
  10. 18 18
      src/main/java/me/km/blocks/BlockEvents.java
  11. 5 5
      src/main/java/me/km/blocks/BlockSpikeTrap.java
  12. 2 2
      src/main/java/me/km/blocks/BlockTrap.java
  13. 10 1
      src/main/java/me/km/blocks/EnumMetals.java
  14. 63 34
      src/main/java/me/km/blocks/ModBlocks.java
  15. 2 1
      src/main/java/me/km/commands/CommandBan.java
  16. 2 1
      src/main/java/me/km/commands/CommandKick.java
  17. 2 1
      src/main/java/me/km/commands/CommandTempBan.java
  18. 1 1
      src/main/java/me/km/commands/CommandTop.java
  19. 1 1
      src/main/java/me/km/commands/CommandTpPos.java
  20. 3 4
      src/main/java/me/km/dimensions/ModWorldGeneration.java
  21. 9 9
      src/main/java/me/km/effects/EffectUtils.java
  22. 2 2
      src/main/java/me/km/effects/active/Doomed.java
  23. 1 1
      src/main/java/me/km/effects/active/Flying.java
  24. 3 3
      src/main/java/me/km/effects/active/Jump.java
  25. 1 1
      src/main/java/me/km/effects/active/Kick.java
  26. 1 1
      src/main/java/me/km/effects/active/Pull.java
  27. 1 1
      src/main/java/me/km/effects/active/Push.java
  28. 1 1
      src/main/java/me/km/effects/passive/ArrowEffects.java
  29. 1 1
      src/main/java/me/km/effects/passive/EntityDamageEffects.java
  30. 2 2
      src/main/java/me/km/effects/passive/EntityDrop.java
  31. 1 1
      src/main/java/me/km/effects/passive/ThrowableEffects.java
  32. 1 1
      src/main/java/me/km/entities/EntityItemProjectile.java
  33. 80 75
      src/main/java/me/km/items/ModItems.java
  34. 0 216
      src/main/java/me/km/items/ModRecipes.java
  35. 5 4
      src/main/java/me/km/nms/NmsUtilities.java
  36. 12 12
      src/main/java/me/km/playerbank/ModDedicatedPlayerList.java
  37. 1 2
      src/main/java/me/km/playerbank/PvpEvent.java
  38. 1 2
      src/main/java/me/km/plots/ProtectionEntity.java
  39. 347 0
      src/main/java/me/km/recipes/ModRecipes.java
  40. 3 0
      src/main/java/me/km/scheduler/SnuviScheduler.java
  41. 28 15
      src/main/java/me/km/snuviscript/MinecraftFunctions.java
  42. 3 3
      src/main/java/me/km/snuviscript/ScriptEvents.java
  43. 1 1
      src/main/java/me/km/utils/ItemStackUtils.java
  44. 4 4
      src/main/java/me/km/utils/RecipeUtils.java

+ 5 - 6
build.gradle

@@ -4,7 +4,7 @@ buildscript {
         maven { url = "http://files.minecraftforge.net/maven" }
         maven { url = "http://files.minecraftforge.net/maven" }
     }
     }
     dependencies {
     dependencies {
-        classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
+        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
         classpath 'mysql:mysql-connector-java:5.1.42'
         classpath 'mysql:mysql-connector-java:5.1.42'
     }
     }
 }
 }
@@ -16,13 +16,13 @@ version = "1.0"
 group = "me.hammerle.km" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
 group = "me.hammerle.km" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
 archivesBaseName = "km"
 archivesBaseName = "km"
 
 
-sourceCompatibility = targetCompatibility = "1.8" // Need this here so eclipse task generates correctly.
+sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
 compileJava {
 compileJava {
-    sourceCompatibility = targetCompatibility = "1.8"
+    sourceCompatibility = targetCompatibility = '1.8'
 }
 }
 
 
 minecraft {
 minecraft {
-    version = "1.11.2-13.20.0.2303"
+    version = "1.12-14.21.1.2387"
     runDir = "run"
     runDir = "run"
     
     
     // the mappings can be changed at any time, and must be in the following format.
     // the mappings can be changed at any time, and must be in the following format.
@@ -30,7 +30,7 @@ minecraft {
     // stable_#            stables are built at the discretion of the MCP team.
     // stable_#            stables are built at the discretion of the MCP team.
     // Use non-default mappings at your own risk. they may not always work.
     // Use non-default mappings at your own risk. they may not always work.
     // simply re-run your setup task after changing the mappings to update your workspace.
     // simply re-run your setup task after changing the mappings to update your workspace.
-    mappings = "snapshot_20170525"
+    mappings = "snapshot_20170624"
     // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
     // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
 }
 }
 
 
@@ -55,7 +55,6 @@ dependencies {
     // for more info...
     // for more info...
     // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
     // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
     // http://www.gradle.org/docs/current/userguide/dependency_management.html
     // http://www.gradle.org/docs/current/userguide/dependency_management.html
-    
     compile 'mysql:mysql-connector-java:5.1.42'
     compile 'mysql:mysql-connector-java:5.1.42'
     compile files('./../../SnuviScript/dist/SnuviScript.jar')
     compile files('./../../SnuviScript/dist/SnuviScript.jar')
 }
 }

+ 26 - 26
gradlew

@@ -6,30 +6,12 @@
 ##
 ##
 ##############################################################################
 ##############################################################################
 
 
-# Attempt to set APP_HOME
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-# Resolve links: $0 may be a link
+DEFAULT_JVM_OPTS=""
-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_NAME="Gradle"
 APP_BASE_NAME=`basename "$0"`
 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.
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD="maximum"
 MAX_FD="maximum"
 
 
@@ -48,7 +30,6 @@ die ( ) {
 cygwin=false
 cygwin=false
 msys=false
 msys=false
 darwin=false
 darwin=false
-nonstop=false
 case "`uname`" in
 case "`uname`" in
   CYGWIN* )
   CYGWIN* )
     cygwin=true
     cygwin=true
@@ -59,11 +40,31 @@ case "`uname`" in
   MINGW* )
   MINGW* )
     msys=true
     msys=true
     ;;
     ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
 esac
 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
 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 
 
 # Determine the Java command to use to start the JVM.
 # Determine the Java command to use to start the JVM.
@@ -89,7 +90,7 @@ location of your Java installation."
 fi
 fi
 
 
 # Increase the maximum file descriptors if we can.
 # Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
     MAX_FD_LIMIT=`ulimit -H -n`
     MAX_FD_LIMIT=`ulimit -H -n`
     if [ $? -eq 0 ] ; then
     if [ $? -eq 0 ] ; then
         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@@ -113,7 +114,6 @@ fi
 if $cygwin ; then
 if $cygwin ; then
     APP_HOME=`cygpath --path --mixed "$APP_HOME"`
     APP_HOME=`cygpath --path --mixed "$APP_HOME"`
     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
 
 
     # We build the pattern for arguments to be converted via cygpath
     # We build the pattern for arguments to be converted via cygpath
     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`

+ 0 - 90
gradlew.bat

@@ -1,90 +0,0 @@
-@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
-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

+ 10 - 17
src/main/java/me/km/KajetansMod.java

@@ -5,7 +5,6 @@ import me.km.api.SimpleConfig;
 import me.km.api.CommandOverloader;
 import me.km.api.CommandOverloader;
 import me.km.blockprotections.BlockProtectionBank;
 import me.km.blockprotections.BlockProtectionBank;
 import me.km.blocks.BlockEvents;
 import me.km.blocks.BlockEvents;
-import me.km.blocks.ModBlocks;
 import me.km.chatmanager.ChatManager;
 import me.km.chatmanager.ChatManager;
 import me.km.databank.DataBank;
 import me.km.databank.DataBank;
 import me.km.dimensions.ModWorldGeneration;
 import me.km.dimensions.ModWorldGeneration;
@@ -13,8 +12,6 @@ import me.km.dimensions.WorldData;
 import me.km.effects.EffectUtils;
 import me.km.effects.EffectUtils;
 import me.km.events.CustomEventCaller;
 import me.km.events.CustomEventCaller;
 import me.km.fluids.ModFluids;
 import me.km.fluids.ModFluids;
-import me.km.items.ModItems;
-import me.km.items.ModRecipes;
 import me.km.jobsystem.JobAPI;
 import me.km.jobsystem.JobAPI;
 import me.km.permissions.PermissionManager;
 import me.km.permissions.PermissionManager;
 import me.km.playerbank.PlayerBank;
 import me.km.playerbank.PlayerBank;
@@ -38,6 +35,8 @@ import net.minecraftforge.fml.common.event.FMLServerAboutToStartEvent;
 import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
 import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
 import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
 import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
 import net.minecraftforge.fml.common.registry.GameRegistry;
 import net.minecraftforge.fml.common.registry.GameRegistry;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
 
 
 @Mod(modid = KajetansMod.MODID, version = KajetansMod.VERSION, name = KajetansMod.NAME)
 @Mod(modid = KajetansMod.MODID, version = KajetansMod.VERSION, name = KajetansMod.NAME)
 public class KajetansMod
 public class KajetansMod
@@ -46,6 +45,7 @@ public class KajetansMod
     
     
     public static Module error;
     public static Module error;
     public static DataBank databank;
     public static DataBank databank;
+    @SideOnly(Side.SERVER)
     public static SnuviScheduler scheduler;
     public static SnuviScheduler scheduler;
     public static PlayerManager playerbank;
     public static PlayerManager playerbank;
     public static Module generalCommands;
     public static Module generalCommands;
@@ -69,7 +69,7 @@ public class KajetansMod
 
 
     public static final String MODID = "km";
     public static final String MODID = "km";
     public static final String NAME = "Kajetans Mod";
     public static final String NAME = "Kajetans Mod";
-    public static final String VERSION = "0.0.6";
+    public static final String VERSION = "0.0.7";
 
 
     @Mod.Instance(MODID)
     @Mod.Instance(MODID)
     public static KajetansMod instance;
     public static KajetansMod instance;
@@ -85,13 +85,10 @@ public class KajetansMod
     }
     }
     
     
     @Mod.EventHandler
     @Mod.EventHandler
-    public void preInit(FMLPreInitializationEvent event) 
+    public void preInit(FMLPreInitializationEvent e) 
     {
     {
         System.out.println(NAME + " is loading!");
         System.out.println(NAME + " is loading!");
         ModFluids.init();
         ModFluids.init();
-        ModItems.init();
-        ModBlocks.init();
-        ModBlocks.lateInit();
         GameRegistry.registerWorldGenerator(new ModWorldGeneration(), 3);
         GameRegistry.registerWorldGenerator(new ModWorldGeneration(), 3);
     }
     }
     
     
@@ -102,7 +99,6 @@ public class KajetansMod
         MinecraftForge.EVENT_BUS.register(new ClientEvents());
         MinecraftForge.EVENT_BUS.register(new ClientEvents());
         MinecraftForge.EVENT_BUS.register(new BlockEvents());
         MinecraftForge.EVENT_BUS.register(new BlockEvents());
         MinecraftForge.EVENT_BUS.register(new CustomEventCaller());
         MinecraftForge.EVENT_BUS.register(new CustomEventCaller());
-        ModRecipes.init();
     }
     }
     
     
     @Mod.EventHandler
     @Mod.EventHandler
@@ -146,14 +142,11 @@ public class KajetansMod
             {
             {
                 return;
                 return;
             }
             }
-        }
+            
-        
+            // Scheduler
-        // Scheduler
+            scheduler = new SnuviScheduler("Scheduler", "Scheduler", TextFormatting.GREEN);
-        scheduler = new SnuviScheduler("Scheduler", "Scheduler", TextFormatting.GREEN);
+            scheduler.registerEvents("me.km.scheduler");
-        scheduler.registerEvents("me.km.scheduler");
+            
-
-        if(!singlePlayer)
-        {
             // Spielerdatenbank
             // Spielerdatenbank
             playerbank = new PlayerManager("PlayerBank", "PlayerBank", TextFormatting.RED);
             playerbank = new PlayerManager("PlayerBank", "PlayerBank", TextFormatting.RED);
             playerbank.setDataBank(new PlayerBank(playerbank, databank.getConnection()));
             playerbank.setDataBank(new PlayerBank(playerbank, databank.getConnection()));

+ 38 - 0
src/main/java/me/km/ObjectRegistry.java

@@ -0,0 +1,38 @@
+package me.km;
+
+import me.km.blocks.ModBlocks;
+import me.km.items.ModItems;
+import me.km.recipes.ModRecipes;
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.item.crafting.IRecipe;
+import net.minecraftforge.event.RegistryEvent;
+import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+@Mod.EventBusSubscriber
+public class ObjectRegistry 
+{
+    @SubscribeEvent
+    public static void onBlockRegistry(RegistryEvent.Register<Block> e) 
+    {
+        System.out.println(1);
+        ModBlocks.initBlocks(e.getRegistry());
+        ModBlocks.initReplacementBlocks(e.getRegistry());
+    }
+    
+    @SubscribeEvent
+    public static void onItemRegistry(RegistryEvent.Register<Item> e) 
+    {
+        System.out.println(2);
+        ModBlocks.initItemBlocks(e.getRegistry());
+        ModItems.init(e.getRegistry());
+    }
+    
+    @SubscribeEvent
+    public static void onRecipeRegistry(RegistryEvent.Register<IRecipe> e) 
+    {
+        System.out.println(3);
+        ModRecipes.init(e.getRegistry());
+    }
+}

+ 1 - 1
src/main/java/me/km/api/Location.java

@@ -33,7 +33,7 @@ public class Location
     
     
     public Location(World w, Vec3d pos, float yaw, float pitch)
     public Location(World w, Vec3d pos, float yaw, float pitch)
     {
     {
-        this(w, pos.xCoord, pos.yCoord, pos.zCoord, yaw, pitch);
+        this(w, pos.x, pos.y, pos.z, yaw, pitch);
     }
     }
     
     
     public Location(World w, Vec3d pos)
     public Location(World w, Vec3d pos)

+ 3 - 3
src/main/java/me/km/api/SimpleConfig.java

@@ -238,9 +238,9 @@ public class SimpleConfig
     public void setLocation(String key, Location l)
     public void setLocation(String key, Location l)
     {
     {
         setString(key + ".world", l.getWorld().getWorldInfo().getWorldName());
         setString(key + ".world", l.getWorld().getWorldInfo().getWorldName());
-        setDouble(key + ".x", l.getPos().xCoord);
+        setDouble(key + ".x", l.getX());
-        setDouble(key + ".y", l.getPos().yCoord);
+        setDouble(key + ".y", l.getY());
-        setDouble(key + ".z", l.getPos().zCoord);
+        setDouble(key + ".z", l.getZ());
         setDouble(key + ".yaw", l.getYaw());
         setDouble(key + ".yaw", l.getYaw());
         setDouble(key + ".pitch", l.getPitch());
         setDouble(key + ".pitch", l.getPitch());
     }
     }

+ 38 - 40
src/main/java/me/km/api/Utils.java

@@ -378,7 +378,7 @@ public class Utils
     
     
     public static EntityPlayer getDamager(DamageSource ds)
     public static EntityPlayer getDamager(DamageSource ds)
     {
     {
-        Entity ent = ds.getSourceOfDamage();
+        Entity ent = ds.getTrueSource();
         if(ent == null)
         if(ent == null)
         {
         {
             return null;
             return null;
@@ -387,7 +387,7 @@ public class Utils
         {
         {
             return (EntityPlayer) ent;
             return (EntityPlayer) ent;
         }
         }
-        return getPlayerFromProjectile(ent);
+        return null;//getPlayerFromProjectile(ent);
     }
     }
 
 
     // -------------------------------------------------------------------------
     // -------------------------------------------------------------------------
@@ -406,8 +406,6 @@ public class Utils
     
     
     public static void teleportEntity(Entity ent, Location l)
     public static void teleportEntity(Entity ent, Location l)
     {
     {
-        Vec3d pos = l.getPos();
-
         int dim = l.getWorld().provider.getDimension();
         int dim = l.getWorld().provider.getDimension();
         if(ent instanceof EntityPlayerMP)
         if(ent instanceof EntityPlayerMP)
         {
         {
@@ -415,31 +413,31 @@ public class Utils
             KajetansMod.playerbank.saveLocation(p);
             KajetansMod.playerbank.saveLocation(p);
             if(ent.dimension != dim)
             if(ent.dimension != dim)
             {
             {
-                KajetansMod.server.getPlayerList().transferPlayerToDimension(p, dim, new ModTeleporter(KajetansMod.server.worldServerForDimension(dim)));
+                KajetansMod.server.getPlayerList().transferPlayerToDimension(p, dim, new ModTeleporter(KajetansMod.server.getWorld(dim)));
             }
             }
             if(l.getYaw() != 0 || l.getPitch() != 0)
             if(l.getYaw() != 0 || l.getPitch() != 0)
             {
             {
-                p.connection.setPlayerLocation(pos.xCoord, pos.yCoord, pos.zCoord, l.getYaw(), l.getPitch());
+                p.connection.setPlayerLocation(l.getX(), l.getY(), l.getZ(), l.getYaw(), l.getPitch());
             }
             }
             else
             else
             {
             {
-                p.connection.setPlayerLocation(pos.xCoord, pos.yCoord, pos.zCoord, ent.rotationYaw, ent.rotationPitch);
+                p.connection.setPlayerLocation(l.getX(), l.getY(), l.getZ(), ent.rotationYaw, ent.rotationPitch);
             }
             }
         }
         }
         else
         else
         {
         {
             if(ent.dimension != dim)
             if(ent.dimension != dim)
             {
             {
-                WorldServer n = KajetansMod.server.worldServerForDimension(dim);
+                WorldServer n = KajetansMod.server.getWorld(dim);
-                KajetansMod.server.getPlayerList().transferEntityToWorld(ent, ent.dimension, KajetansMod.server.worldServerForDimension(ent.dimension), n, new ModTeleporter(n));
+                KajetansMod.server.getPlayerList().transferEntityToWorld(ent, ent.dimension, KajetansMod.server.getWorld(ent.dimension), n, new ModTeleporter(n));
             }
             }
             if(l.getYaw() != 0 && l.getPitch() != 0)
             if(l.getYaw() != 0 && l.getPitch() != 0)
             {
             {
-                ent.setLocationAndAngles(pos.xCoord, pos.yCoord, pos.zCoord, l.getYaw(), l.getPitch());
+                ent.setLocationAndAngles(l.getX(), l.getY(), l.getZ(), l.getYaw(), l.getPitch());
             }
             }
             else
             else
             {
             {
-                ent.setLocationAndAngles(pos.xCoord, pos.yCoord, pos.zCoord, ent.rotationYaw, ent.rotationPitch);
+                ent.setLocationAndAngles(l.getX(), l.getY(), l.getZ(), ent.rotationYaw, ent.rotationPitch);
             }
             }
         }
         }
     }
     }
@@ -456,7 +454,7 @@ public class Utils
     @SuppressWarnings("unchecked")
     @SuppressWarnings("unchecked")
     public static List<Entity> getEntitiesExcluding(Entity ent, World w, BlockPos pos, BlockPos pos2)
     public static List<Entity> getEntitiesExcluding(Entity ent, World w, BlockPos pos, BlockPos pos2)
     {       
     {       
-        return w.getEntitiesWithinAABBExcludingEntity(ent, new AxisAlignedBB(pos, pos2).expandXyz(1));
+        return w.getEntitiesWithinAABBExcludingEntity(ent, new AxisAlignedBB(pos, pos2).grow(1));
     }
     }
     
     
     @SuppressWarnings("unchecked")
     @SuppressWarnings("unchecked")
@@ -464,8 +462,8 @@ public class Utils
     {       
     {       
         double sqareRadius = radius * radius;
         double sqareRadius = radius * radius;
         return w.getEntitiesWithinAABB(type, new AxisAlignedBB(
         return w.getEntitiesWithinAABB(type, new AxisAlignedBB(
-                v.xCoord - radius, v.yCoord - radius, v.zCoord - radius, 
+                v.x - radius, v.y - radius, v.z - radius, 
-                v.xCoord + radius, v.yCoord + radius, v.zCoord + radius), ent -> ent.getDistanceSq(v.xCoord, v.yCoord, v.zCoord) <= sqareRadius);
+                v.x + radius, v.y + radius, v.z + radius), ent -> ent.getDistanceSq(v.x, v.y, v.z) <= sqareRadius);
     }
     }
     
     
     public static List<EntityPlayer> getNearbyPlayers(World w, double x, double y, double z, double radius)
     public static List<EntityPlayer> getNearbyPlayers(World w, double x, double y, double z, double radius)
@@ -476,14 +474,14 @@ public class Utils
     
     
     public static List<EntityPlayer> getNearbyPlayers(World w, Vec3d v, double radius)
     public static List<EntityPlayer> getNearbyPlayers(World w, Vec3d v, double radius)
     {       
     {       
-        return getNearbyPlayers(w, v.xCoord, v.yCoord, v.zCoord, radius);
+        return getNearbyPlayers(w, v.x, v.y, v.z, radius);
     }
     }
 
 
     public static <T extends Entity> T getNearestEntity(World w, Vec3d v, double radius, Class<T> type)
     public static <T extends Entity> T getNearestEntity(World w, Vec3d v, double radius, Class<T> type)
     {
     {
         return getNearbyEntities(w, v, radius, type).stream().min((e1, e2) -> Double.compare(
         return getNearbyEntities(w, v, radius, type).stream().min((e1, e2) -> Double.compare(
-                        e1.getDistanceSq(v.xCoord, v.yCoord, v.zCoord), 
+                        e1.getDistanceSq(v.x, v.y, v.z), 
-                        e2.getDistanceSq(v.xCoord, v.yCoord, v.zCoord)))
+                        e2.getDistanceSq(v.x, v.y, v.z)))
                 .orElse(null);
                 .orElse(null);
     }
     }
     
     
@@ -491,49 +489,49 @@ public class Utils
     {
     {
         double lowerX = Double.NEGATIVE_INFINITY;
         double lowerX = Double.NEGATIVE_INFINITY;
         double upperX = Double.POSITIVE_INFINITY;
         double upperX = Double.POSITIVE_INFINITY;
-        if(unit.xCoord != 0)
+        if(unit.x != 0)
         {
         {
-            if(unit.xCoord > 0)
+            if(unit.x > 0)
             {
             {
-                lowerX = (bound.minX - start.xCoord) / unit.xCoord;
+                lowerX = (bound.minX - start.x) / unit.x;
-                upperX = (bound.maxX - start.xCoord) / unit.xCoord;
+                upperX = (bound.maxX - start.x) / unit.x;
             }
             }
             else
             else
             {
             {
-                lowerX = (bound.maxX - start.xCoord) / unit.xCoord;
+                lowerX = (bound.maxX - start.x) / unit.x;
-                upperX = (bound.minX - start.xCoord) / unit.xCoord;
+                upperX = (bound.minX - start.x) / unit.x;
             }
             }
         }
         }
         
         
         double lowerY = Double.NEGATIVE_INFINITY;
         double lowerY = Double.NEGATIVE_INFINITY;
         double upperY = Double.POSITIVE_INFINITY;
         double upperY = Double.POSITIVE_INFINITY;
-        if(unit.yCoord != 0)
+        if(unit.y != 0)
         {
         {
-            if(unit.yCoord > 0)
+            if(unit.y > 0)
             {
             {
-                lowerY = (bound.minY - start.yCoord) / unit.yCoord;
+                lowerY = (bound.minY - start.y) / unit.y;
-                upperY = (bound.maxY - start.yCoord) / unit.yCoord;
+                upperY = (bound.maxY - start.y) / unit.y;
             }
             }
             else
             else
             {
             {
-                lowerY = (bound.maxY - start.yCoord) / unit.yCoord;
+                lowerY = (bound.maxY - start.y) / unit.y;
-                upperY = (bound.minY - start.yCoord) / unit.yCoord;
+                upperY = (bound.minY - start.y) / unit.y;
             }
             }
         }
         }
         
         
         double lowerZ = Double.NEGATIVE_INFINITY;
         double lowerZ = Double.NEGATIVE_INFINITY;
         double upperZ = Double.POSITIVE_INFINITY;
         double upperZ = Double.POSITIVE_INFINITY;
-        if(unit.zCoord != 0)
+        if(unit.z != 0)
         {
         {
-            if(unit.zCoord > 0)
+            if(unit.z > 0)
             {
             {
-                lowerZ = (bound.minZ - start.zCoord) / unit.zCoord;
+                lowerZ = (bound.minZ - start.z) / unit.z;
-                upperZ = (bound.maxZ - start.zCoord) / unit.zCoord;
+                upperZ = (bound.maxZ - start.z) / unit.z;
             }
             }
             else
             else
             {
             {
-                lowerZ = (bound.maxZ - start.zCoord) / unit.zCoord;
+                lowerZ = (bound.maxZ - start.z) / unit.z;
-                upperZ = (bound.minZ - start.zCoord) / unit.zCoord;
+                upperZ = (bound.minZ - start.z) / unit.z;
             }
             }
         }
         }
 
 
@@ -546,16 +544,16 @@ public class Utils
         World w = p.getEntityWorld();
         World w = p.getEntityWorld();
         BlockPos l = getPlayerTarget(p, radius);
         BlockPos l = getPlayerTarget(p, radius);
         Vec3d eye = getEyeLocation(p);
         Vec3d eye = getEyeLocation(p);
-        Vec3d unit = new Vec3d(l.getX() - eye.xCoord, l.getY() - eye.yCoord, l.getZ() - eye.zCoord);
+        Vec3d unit = new Vec3d(l.getX() - eye.x, l.getY() - eye.y, l.getZ() - eye.z);
         
         
         List<Entity> col = getEntitiesExcluding(p, w, new BlockPos(eye), l);
         List<Entity> col = getEntitiesExcluding(p, w, new BlockPos(eye), l);
         col.removeIf(ent -> !type.isAssignableFrom(ent.getClass()));
         col.removeIf(ent -> !type.isAssignableFrom(ent.getClass()));
         // Entfernt Entities, die sich nicht mit dem Blick-Vektor schneiden
         // Entfernt Entities, die sich nicht mit dem Blick-Vektor schneiden
-        col.removeIf(ent -> !doesIntersect(ent.getEntityBoundingBox().expandXyz(0.1), eye, unit));
+        col.removeIf(ent -> !doesIntersect(ent.getEntityBoundingBox().grow(0.1), eye, unit));
 
 
         return (T) col.stream().sorted((Entity e1, Entity e2) -> 
         return (T) col.stream().sorted((Entity e1, Entity e2) -> 
         {
         {
-            return Double.compare(e1.getDistanceSq(eye.xCoord, eye.yCoord, eye.zCoord), e2.getDistanceSq(eye.xCoord, eye.yCoord, eye.zCoord));
+            return Double.compare(e1.getDistanceSq(eye.x, eye.y, eye.z), e2.getDistanceSq(eye.x, eye.y, eye.z));
         }).findFirst().orElse(null);
         }).findFirst().orElse(null);
     }
     }
     
     
@@ -565,7 +563,7 @@ public class Utils
     
     
     public static EntityPlayer getNearestPlayer(World w, Vec3d v)
     public static EntityPlayer getNearestPlayer(World w, Vec3d v)
     {
     {
-        return w.getPlayers(EntityPlayer.class, p -> true).stream().min((p1, p2) -> Double.compare(p1.getDistanceSq(v.xCoord, v.yCoord, v.zCoord), p2.getDistanceSq(v.xCoord, v.yCoord, v.zCoord))).orElse(null);
+        return w.playerEntities.stream().min((p1, p2) -> Double.compare(p1.getDistanceSq(v.x, v.y, v.z), p2.getDistanceSq(v.x, v.y, v.z))).orElse(null);
     }
     }
     
     
     public static BlockPos getPlayerTarget(EntityPlayer p, double range, boolean boundingBox)
     public static BlockPos getPlayerTarget(EntityPlayer p, double range, boolean boundingBox)
@@ -625,7 +623,7 @@ public class Utils
         SimpleConfig conf = KajetansMod.conf;
         SimpleConfig conf = KajetansMod.conf;
         conf.setLocation("spawn", new Location(w, v, yaw, pitch));
         conf.setLocation("spawn", new Location(w, v, yaw, pitch));
         conf.save();
         conf.save();
-        w.setSpawnPoint(new BlockPos(v.xCoord, v.yCoord, v.zCoord));
+        w.setSpawnPoint(new BlockPos(v.x, v.y, v.z));
     }
     }
     
     
     // -------------------------------------------------------------------------
     // -------------------------------------------------------------------------

+ 3 - 2
src/main/java/me/km/blocks/BlockBase.java

@@ -9,6 +9,7 @@ import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.entity.Entity;
 import net.minecraft.entity.Entity;
 import net.minecraft.item.ItemBlock;
 import net.minecraft.item.ItemBlock;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.IBlockAccess;
 import net.minecraft.world.World;
 import net.minecraft.world.World;
 
 
 public class BlockBase extends Block implements IBlockBase
 public class BlockBase extends Block implements IBlockBase
@@ -33,9 +34,9 @@ public class BlockBase extends Block implements IBlockBase
         this.mapColor = mapColor;
         this.mapColor = mapColor;
         return this;
         return this;
     }
     }
-    
+
     @Override
     @Override
-    public MapColor getMapColor(IBlockState state)
+    public MapColor getMapColor(IBlockState state, IBlockAccess worldIn, BlockPos pos) 
     {
     {
         return this.mapColor;
         return this.mapColor;
     }
     }

+ 18 - 18
src/main/java/me/km/blocks/BlockEvents.java

@@ -68,9 +68,9 @@ public class BlockEvents
                         d1 = d1 / d3;
                         d1 = d1 / d3;
                         d2 = d2 / d3;
                         d2 = d2 / d3;
                         float f = explosionSize * (0.7f + w.rand.nextFloat() * 0.6f);
                         float f = explosionSize * (0.7f + w.rand.nextFloat() * 0.6f);
-                        double d4 = v.xCoord;
+                        double d4 = v.x;
-                        double d6 = v.yCoord;
+                        double d6 = v.y;
-                        double d8 = v.zCoord;
+                        double d8 = v.z;
 
 
                         for(float f1 = 0.3F; f > 0.0F; f -= 0.22500001F)
                         for(float f1 = 0.3F; f > 0.0F; f -= 0.22500001F)
                         {
                         {
@@ -89,7 +89,7 @@ public class BlockEvents
                                 f -= (f2 + 0.3F) * 0.3F;
                                 f -= (f2 + 0.3F) * 0.3F;
                             }
                             }
 
 
-                            if (f > 0.0F && (exploder == null || exploder.verifyExplosion(ex, w, blockpos, iblockstate, f)))
+                            if (f > 0.0F && (exploder == null || exploder.canExplosionDestroyBlock(ex, w, blockpos, iblockstate, f)))
                             {
                             {
                                 set.add(blockpos);
                                 set.add(blockpos);
                             }
                             }
@@ -105,15 +105,15 @@ public class BlockEvents
 
 
         ex.getAffectedBlockPositions().addAll(set);
         ex.getAffectedBlockPositions().addAll(set);
         float f3 = explosionSize * 2;
         float f3 = explosionSize * 2;
-        int k1 = MathHelper.floor(v.xCoord - f3 - 1);
+        int k1 = MathHelper.floor(v.x - f3 - 1);
-        int l1 = MathHelper.floor(v.xCoord + f3 + 1);
+        int l1 = MathHelper.floor(v.x + f3 + 1);
-        int i2 = MathHelper.floor(v.yCoord - f3 - 1);
+        int i2 = MathHelper.floor(v.y - f3 - 1);
-        int i1 = MathHelper.floor(v.yCoord + f3 + 1);
+        int i1 = MathHelper.floor(v.y + f3 + 1);
-        int j2 = MathHelper.floor(v.zCoord - f3 - 1);
+        int j2 = MathHelper.floor(v.z - f3 - 1);
-        int j1 = MathHelper.floor(v.zCoord + f3 + 1);
+        int j1 = MathHelper.floor(v.z + f3 + 1);
         List<Entity> list = w.getEntitiesWithinAABBExcludingEntity(exploder, new AxisAlignedBB(k1, i2, j2, l1, i1, j1));
         List<Entity> list = w.getEntitiesWithinAABBExcludingEntity(exploder, new AxisAlignedBB(k1, i2, j2, l1, i1, j1));
         net.minecraftforge.event.ForgeEventFactory.onExplosionDetonate(w, ex, list, f3);
         net.minecraftforge.event.ForgeEventFactory.onExplosionDetonate(w, ex, list, f3);
-        Vec3d vec3d = new Vec3d(v.xCoord, v.yCoord, v.zCoord);
+        Vec3d vec3d = new Vec3d(v.x, v.y, v.z);
 
 
         for(int k2 = 0; k2 < list.size(); k2++)
         for(int k2 = 0; k2 < list.size(); k2++)
         {
         {
@@ -121,13 +121,13 @@ public class BlockEvents
 
 
             if(!entity.isImmuneToExplosions())
             if(!entity.isImmuneToExplosions())
             {
             {
-                double d12 = entity.getDistance(v.xCoord, v.yCoord, v.zCoord) / f3;
+                double d12 = entity.getDistance(v.x, v.y, v.z) / f3;
 
 
                 if(d12 <= 1.0D)
                 if(d12 <= 1.0D)
                 {
                 {
-                    double d5 = entity.posX - v.xCoord;
+                    double d5 = entity.posX - v.x;
-                    double d7 = entity.posY + (double)entity.getEyeHeight() - v.yCoord;
+                    double d7 = entity.posY + (double)entity.getEyeHeight() - v.y;
-                    double d9 = entity.posZ - v.zCoord;
+                    double d9 = entity.posZ - v.z;
                     double d13 = MathHelper.sqrt(d5 * d5 + d7 * d7 + d9 * d9);
                     double d13 = MathHelper.sqrt(d5 * d5 + d7 * d7 + d9 * d9);
 
 
                     if(d13 != 0.0D)
                     if(d13 != 0.0D)
@@ -167,9 +167,9 @@ public class BlockEvents
     private void doExplosionB(Explosion ex, World w, boolean spawnParticles)
     private void doExplosionB(Explosion ex, World w, boolean spawnParticles)
     {
     {
         Vec3d v = ex.getPosition();
         Vec3d v = ex.getPosition();
-        double x = v.xCoord;
+        double x = v.x;
-        double y = v.yCoord;
+        double y = v.y;
-        double z = v.zCoord;
+        double z = v.z;
         w.playSound(null, x, y, z, SoundEvents.ENTITY_GENERIC_EXPLODE, SoundCategory.BLOCKS, 4, (1 + (w.rand.nextFloat() - w.rand.nextFloat()) * 0.2f) * 0.7f);
         w.playSound(null, x, y, z, SoundEvents.ENTITY_GENERIC_EXPLODE, SoundCategory.BLOCKS, 4, (1 + (w.rand.nextFloat() - w.rand.nextFloat()) * 0.2f) * 0.7f);
 
 
         if(ReflectionUtils.getSize(ex) >= 2 && ReflectionUtils.isSmoking(ex))
         if(ReflectionUtils.getSize(ex) >= 2 && ReflectionUtils.isSmoking(ex))

+ 5 - 5
src/main/java/me/km/blocks/BlockSpikeTrap.java

@@ -63,7 +63,7 @@ public class BlockSpikeTrap extends BlockTrap
     }
     }
     
     
     @Override
     @Override
-    public MapColor getMapColor(IBlockState state)
+    public MapColor getMapColor(IBlockState state, IBlockAccess worldIn, BlockPos pos)
     {
     {
         return state.getValue(VARIANT).getMapColor();
         return state.getValue(VARIANT).getMapColor();
     }
     }
@@ -78,15 +78,15 @@ public class BlockSpikeTrap extends BlockTrap
     public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
     public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
     {
     {
         return new ItemStack(ModBlocks.spikes, 1, state.getValue(VARIANT).getMetadata());
         return new ItemStack(ModBlocks.spikes, 1, state.getValue(VARIANT).getMetadata());
-    }
+    }   
-
+    
     @SideOnly(Side.CLIENT)
     @SideOnly(Side.CLIENT)
     @Override
     @Override
-    public void getSubBlocks(Item item, CreativeTabs tab, NonNullList<ItemStack> list)
+    public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> list)
     {
     {
         for(EnumMetals metal : EnumMetals.values())
         for(EnumMetals metal : EnumMetals.values())
         {
         {
-            list.add(new ItemStack(item, 1, metal.getMetadata()));
+            list.add(new ItemStack(this, 1, metal.getMetadata()));
         }
         }
     }
     }
 
 

+ 2 - 2
src/main/java/me/km/blocks/BlockTrap.java

@@ -75,8 +75,8 @@ public class BlockTrap extends BlockBase
     }
     }
     
     
     @Override
     @Override
-    public boolean blocksMovement(IBlockAccess worldIn, BlockPos pos)
+    public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
     {
     {
-        return false;
+        return true;
     }
     }
 }
 }

+ 10 - 1
src/main/java/me/km/blocks/EnumMetals.java

@@ -19,7 +19,7 @@ public enum EnumMetals implements IStringSerializable
     private final int meta;
     private final int meta;
     private final String name;
     private final String name;
     private final MapColor mapColor;
     private final MapColor mapColor;
-    private final Item item;
+    private Item item;
 
 
     private EnumMetals(int meta, String name, MapColor mapColor, Item item)
     private EnumMetals(int meta, String name, MapColor mapColor, Item item)
     {
     {
@@ -34,6 +34,15 @@ public enum EnumMetals implements IStringSerializable
         return item;
         return item;
     }
     }
     
     
+    // items become null somehow
+    public static void fixMetalIngots() 
+    {
+        COPPER.item = ModItems.copperIngot;
+        TIN.item = ModItems.tinIngot;
+        BRONZE.item = ModItems.bronzeIngot;
+        SILVER.item = ModItems.silverIngot;
+    }
+    
     public int getMetadata()
     public int getMetadata()
     {
     {
         return this.meta;
         return this.meta;

+ 63 - 34
src/main/java/me/km/blocks/ModBlocks.java

@@ -9,9 +9,9 @@ import net.minecraft.block.Block;
 import net.minecraft.block.material.MapColor;
 import net.minecraft.block.material.MapColor;
 import net.minecraft.block.material.Material;
 import net.minecraft.block.material.Material;
 import net.minecraft.init.Blocks;
 import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
 import net.minecraft.item.ItemBlock;
 import net.minecraft.item.ItemBlock;
-import net.minecraftforge.fml.common.registry.ExistingSubstitutionException;
+import net.minecraftforge.registries.IForgeRegistry;
-import net.minecraftforge.fml.common.registry.GameRegistry;
 
 
 public class ModBlocks 
 public class ModBlocks 
 {
 {
@@ -40,64 +40,94 @@ public class ModBlocks
     public static BlockFluidPoison poison;
     public static BlockFluidPoison poison;
     public static BlockFluidHoney honey;
     public static BlockFluidHoney honey;
     
     
-    public static void init() 
+    public static void initBlocks(IForgeRegistry<Block> r) 
     {
     {
         // ores + blocks
         // ores + blocks
-        copperOre = register(new BlockOre("copper_ore", "oreCopper"));      
+        copperOre = register(r, new BlockOre("copper_ore", "oreCopper"));      
-        copperBlock = register((BlockBase) new BlockBase(Material.IRON, "copper_block", "blockCopper")
+        copperBlock = register(r, (BlockBase) new BlockBase(Material.IRON, "copper_block", "blockCopper")
                 .setMapColor(MapColor.BROWN).setHardness(3).setResistance(10));
                 .setMapColor(MapColor.BROWN).setHardness(3).setResistance(10));
-        tinOre = register(new BlockOre("tin_ore", "oreTin"));      
+        tinOre = register(r, new BlockOre("tin_ore", "oreTin"));      
-        tinBlock = register((BlockBase) new BlockBase(Material.IRON, "tin_block", "blockTin")
+        tinBlock = register(r, (BlockBase) new BlockBase(Material.IRON, "tin_block", "blockTin")
                 .setMapColor(MapColor.IRON).setHardness(3).setResistance(5));
                 .setMapColor(MapColor.IRON).setHardness(3).setResistance(5));
-        bronzeBlock = register((BlockBase) new BlockBase(Material.IRON, "bronze_block", "blockBronze")
+        bronzeBlock = register(r, (BlockBase) new BlockBase(Material.IRON, "bronze_block", "blockBronze")
                 .setMapColor(MapColor.YELLOW).setHardness(5).setResistance(10));
                 .setMapColor(MapColor.YELLOW).setHardness(5).setResistance(10));
-        silverOre = register(new BlockOre("silver_ore", "oreSilver"));      
+        silverOre = register(r, new BlockOre("silver_ore", "oreSilver"));      
-        silverBlock = register((BlockBase) new BlockBase(Material.IRON, "silver_block", "blockSilver")
+        silverBlock = register(r, (BlockBase) new BlockBase(Material.IRON, "silver_block", "blockSilver")
                 .setMapColor(MapColor.IRON).setHardness(5).setResistance(10));
                 .setMapColor(MapColor.IRON).setHardness(5).setResistance(10));
         
         
         // misc
         // misc
-        guildblock = register((BlockBase) new BlockBase(Material.IRON, "guild_block", "blockGuild")
+        guildblock = register(r, (BlockBase) new BlockBase(Material.IRON, "guild_block", "blockGuild")
                 .setHardness(50.0F).setResistance(2000.0F));
                 .setHardness(50.0F).setResistance(2000.0F));
-        artefact = register((BlockBase) new BlockBase(Material.IRON, "artefact", "artefact")
+        artefact = register(r, (BlockBase) new BlockBase(Material.IRON, "artefact", "artefact")
                 .setHardness(50.0F).setResistance(2000.0F));
                 .setHardness(50.0F).setResistance(2000.0F));
-        realHayBlock = register(new BlockHay("real_hay_block", "realHayBlock"));
+        realHayBlock = register(r, new BlockHay("real_hay_block", "realHayBlock"));
-        realHayBed = registerBlock(new BlockHayBed("real_hay_bed", "realHayBlock"));
+        realHayBed = register(r, new BlockHayBed("real_hay_bed", "realHayBlock"));
         
         
         // traps
         // traps
-        spikes = registerMetal(new BlockSpikeTrap(Material.IRON, "spikes", "spikes"));
+        spikes = register(r, new BlockSpikeTrap(Material.IRON, "spikes", "spikes"));
     
     
         // fluids
         // fluids
-        poison = register(new BlockFluidPoison(ModFluids.poison, Material.WATER));
+        poison = register(r, new BlockFluidPoison(ModFluids.poison, Material.WATER));
-        honey = register(new BlockFluidHoney(ModFluids.honey, Material.WATER));
+        honey = register(r, new BlockFluidHoney(ModFluids.honey, Material.WATER));
+    }
+    
+    public static void initItemBlocks(IForgeRegistry<Item> r) 
+    {
+        // ores + blocks
+        register(r, copperOre, getItemBlock(copperOre));
+        register(r, copperBlock, getItemBlock(copperBlock));
+        
+        register(r, tinOre, getItemBlock(tinOre));
+        register(r, tinBlock, getItemBlock(tinBlock));
+        
+        register(r, bronzeBlock, getItemBlock(bronzeBlock));
+        
+        register(r, silverOre, getItemBlock(silverOre));
+        register(r, silverBlock, getItemBlock(silverBlock));
+
+        // misc
+        register(r, guildblock, getItemBlock(guildblock));
+        register(r, artefact, getItemBlock(artefact));
+        
+        register(r, realHayBlock, getItemBlock(realHayBlock));
+        
+        // traps
+        register(r, spikes, getItemMetal(spikes));
+        
+        // fluids
+        register(r, poison, getItemBlock(poison));
+        register(r, honey, getItemBlock(honey));
     }
     }
     
     
     // THIS IS ONLY FOR REPLACING VANILLA BLOCKS
     // THIS IS ONLY FOR REPLACING VANILLA BLOCKS
-    public static void lateInit() 
+    public static void initReplacementBlocks(IForgeRegistry<Block> r) 
     {
     {
         BlockTallGrass grass = new BlockTallGrass();
         BlockTallGrass grass = new BlockTallGrass();
-        overwriteBlock(Blocks.TALLGRASS, grass);
+        overwriteBlock(r, Blocks.TALLGRASS, grass);
     }
     }
     
     
     @SuppressWarnings("")
     @SuppressWarnings("")
-    private static void overwriteBlock(Block old, Block block)
+    private static void overwriteBlock(IForgeRegistry<Block> r, Block old, Block block)
     {
     {
-        try
+        /*try
-        {
+        {*/
-            GameRegistry.addSubstitutionAlias(old.getRegistryName().toString(), 
+            block.setRegistryName(old.getRegistryName().getResourcePath());
+            block.setUnlocalizedName(old.getUnlocalizedName().substring(5));
+            r.register(block);
+            /*GameRegistry.addSubstitutionAlias(old.getRegistryName().toString(), 
                     GameRegistry.Type.BLOCK, 
                     GameRegistry.Type.BLOCK, 
                     block.setRegistryName(old.getRegistryName().getResourcePath()).setUnlocalizedName(old.getUnlocalizedName().substring(5)));
                     block.setRegistryName(old.getRegistryName().getResourcePath()).setUnlocalizedName(old.getUnlocalizedName().substring(5)));
         }
         }
         catch(ExistingSubstitutionException | NullPointerException ex)
         catch(ExistingSubstitutionException | NullPointerException ex)
         {
         {
             System.out.println(ex);
             System.out.println(ex);
-        }
+        }*/
     }
     }
     //END OF REPLACING VANILLA BLOCKS
     //END OF REPLACING VANILLA BLOCKS
 
 
-    private static <T extends Block> T register(T block, ItemBlock itemBlock) 
+    private static void register(IForgeRegistry<Item> r, Block block, ItemBlock itemBlock) 
     {
     {
-        GameRegistry.register(block);
+        r.register(itemBlock);
-        GameRegistry.register(itemBlock);
         if(block instanceof IBlockBase) 
         if(block instanceof IBlockBase) 
         {
         {
             ((IBlockBase) block).registerItemModel(itemBlock);
             ((IBlockBase) block).registerItemModel(itemBlock);
@@ -106,26 +136,25 @@ public class ModBlocks
         {
         {
             ((BlockFluidBase) block).registerBlockModel();
             ((BlockFluidBase) block).registerBlockModel();
         }
         }
-        return block;
     }
     }
     
     
-    private static <T extends Block> T registerBlock(T block) 
+    private static <T extends Block> T register(IForgeRegistry<Block> r, T block) 
     {
     {
-        GameRegistry.register(block);
+        r.register(block);
         return block;
         return block;
     }
     }
 
 
-    private static <T extends Block> T register(T block) 
+    private static ItemBlock getItemBlock(Block block) 
     {
     {
         ItemBlock itemBlock = new ItemBlock(block);
         ItemBlock itemBlock = new ItemBlock(block);
         itemBlock.setRegistryName(block.getRegistryName());
         itemBlock.setRegistryName(block.getRegistryName());
-        return register(block, itemBlock);
+        return itemBlock;
     }
     }
     
     
-    private static <T extends Block> T registerMetal(T block) 
+    private static ItemMetal getItemMetal(Block block) 
     {
     {
         ItemMetal itemBlock = new ItemMetal(block);
         ItemMetal itemBlock = new ItemMetal(block);
         itemBlock.setRegistryName(block.getRegistryName());
         itemBlock.setRegistryName(block.getRegistryName());
-        return register(block, itemBlock);
+        return itemBlock;
     }
     }
 }
 }

+ 2 - 1
src/main/java/me/km/commands/CommandBan.java

@@ -10,6 +10,7 @@ import me.km.permissions.Permissions;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.server.management.UserListBansEntry;
 import net.minecraft.server.management.UserListBansEntry;
+import net.minecraft.util.text.TextComponentString;
 
 
 public class CommandBan extends ModuleCommand
 public class CommandBan extends ModuleCommand
 {
 {
@@ -42,7 +43,7 @@ public class CommandBan extends ModuleCommand
         EntityPlayerMP p = KajetansMod.server.getPlayerList().getPlayerByUUID(affectedPlayer.getId());
         EntityPlayerMP p = KajetansMod.server.getPlayerList().getPlayerByUUID(affectedPlayer.getId());
         if(p != null)
         if(p != null)
         {
         {
-            p.connection.disconnect("§4Du §cwurdest von §4" + cs.getName() + "§c gebannt, weil: §4" + message);
+            p.connection.disconnect(new TextComponentString("§4Du §cwurdest von §4" + cs.getName() + "§c gebannt, weil: §4" + message));
         }
         }
         return true;
         return true;
     }
     }

+ 2 - 1
src/main/java/me/km/commands/CommandKick.java

@@ -8,6 +8,7 @@ import me.km.exception.PlayerNotFoundException;
 import me.km.permissions.Permissions;
 import me.km.permissions.Permissions;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.util.text.TextComponentString;
 
 
 public class CommandKick extends ModuleCommand
 public class CommandKick extends ModuleCommand
 {
 {
@@ -38,7 +39,7 @@ public class CommandKick extends ModuleCommand
         }                      
         }                      
         String message = Utils.connectSpaces(arg, 1);
         String message = Utils.connectSpaces(arg, 1);
         this.getModule().sendBroadcast("§4" + affectedPlayer.getName() + " §cwurde von §4" + cs.getName() + "§c gekickt, weil: §4" + message);  
         this.getModule().sendBroadcast("§4" + affectedPlayer.getName() + " §cwurde von §4" + cs.getName() + "§c gekickt, weil: §4" + message);  
-        affectedPlayer.connection.disconnect("§4Du §cwurdest von §4" + cs.getName() + "§c gekickt, weil: §4" + message);
+        affectedPlayer.connection.disconnect(new TextComponentString("§4Du §cwurdest von §4" + cs.getName() + "§c gekickt, weil: §4" + message));
         return true;
         return true;
     }
     }
 }
 }

+ 2 - 1
src/main/java/me/km/commands/CommandTempBan.java

@@ -11,6 +11,7 @@ import me.km.permissions.Permissions;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.command.ICommandSender;
 import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.server.management.UserListBansEntry;
 import net.minecraft.server.management.UserListBansEntry;
+import net.minecraft.util.text.TextComponentString;
 
 
 public class CommandTempBan extends ModuleCommand
 public class CommandTempBan extends ModuleCommand
 {
 {
@@ -73,7 +74,7 @@ public class CommandTempBan extends ModuleCommand
         EntityPlayerMP p = KajetansMod.server.getPlayerList().getPlayerByUUID(affectedPlayer.getId());
         EntityPlayerMP p = KajetansMod.server.getPlayerList().getPlayerByUUID(affectedPlayer.getId());
         if(p != null)
         if(p != null)
         {
         {
-            p.connection.disconnect("§4Du §cwurdest von §4" + cs.getName() + "§c für " + time + " gebannt, weil: §4" + message);
+            p.connection.disconnect(new TextComponentString("§4Du §cwurdest von §4" + cs.getName() + "§c für " + time + " gebannt, weil: §4" + message));
         }
         }
         return true;
         return true;
     }
     }

+ 1 - 1
src/main/java/me/km/commands/CommandTop.java

@@ -46,7 +46,7 @@ public class CommandTop extends ModuleCommand
         }
         }
         World w = affectedPlayer.getEntityWorld();
         World w = affectedPlayer.getEntityWorld();
         Vec3d v = affectedPlayer.getPositionVector();
         Vec3d v = affectedPlayer.getPositionVector();
-        v = v.addVector(0, w.getHeight((int) v.xCoord, (int) v.zCoord) - v.yCoord, 0);
+        v = v.addVector(0, w.getHeight((int) v.x, (int) v.z) - v.y, 0);
         Utils.teleportEntity(affectedPlayer, new Location(w, v));
         Utils.teleportEntity(affectedPlayer, new Location(w, v));
         this.getModule().send(cs, "Du wurdest nach oben teleportiert.");
         this.getModule().send(cs, "Du wurdest nach oben teleportiert.");
         if(!cs.equals(affectedPlayer))
         if(!cs.equals(affectedPlayer))

+ 1 - 1
src/main/java/me/km/commands/CommandTpPos.java

@@ -67,7 +67,7 @@ public class CommandTpPos extends ModuleCommand
             }
             }
             Vec3d v = new Vec3d(Double.parseDouble(arg[0]), Double.parseDouble(arg[1]), Double.parseDouble(arg[2]));
             Vec3d v = new Vec3d(Double.parseDouble(arg[0]), Double.parseDouble(arg[1]), Double.parseDouble(arg[2]));
             Utils.teleportEntity(affectedPlayer, new Location(w, v));
             Utils.teleportEntity(affectedPlayer, new Location(w, v));
-            String s = " zu " + v.xCoord + ", " + v.yCoord + ", " + v.zCoord + " teleportiert.";
+            String s = " zu " + v.x + ", " + v.y + ", " + v.z + " teleportiert.";
             this.getModule().send(affectedPlayer, "Du wurdest" + s);
             this.getModule().send(affectedPlayer, "Du wurdest" + s);
             if(!cs.equals(affectedPlayer))
             if(!cs.equals(affectedPlayer))
             {
             {

+ 3 - 4
src/main/java/me/km/dimensions/ModWorldGeneration.java

@@ -7,21 +7,20 @@ import net.minecraft.init.Biomes;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.world.World;
 import net.minecraft.world.World;
 import net.minecraft.world.biome.Biome;
 import net.minecraft.world.biome.Biome;
-import net.minecraft.world.chunk.IChunkGenerator;
 import net.minecraft.world.chunk.IChunkProvider;
 import net.minecraft.world.chunk.IChunkProvider;
+import net.minecraft.world.gen.IChunkGenerator;
 import net.minecraft.world.gen.feature.WorldGenMinable;
 import net.minecraft.world.gen.feature.WorldGenMinable;
 import net.minecraftforge.fml.common.IWorldGenerator;
 import net.minecraftforge.fml.common.IWorldGenerator;
 
 
 public class ModWorldGeneration implements IWorldGenerator
 public class ModWorldGeneration implements IWorldGenerator
 {
 {
     @Override
     @Override
-    public void generate(Random random, int chunkX, int chunkZ, World w, 
+    public void generate(Random r, int cX, int cZ, World w, IChunkGenerator cGen, IChunkProvider cPro) 
-            IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) 
     {
     {
         Biome biome = w.getBiome(BlockPos.ORIGIN);
         Biome biome = w.getBiome(BlockPos.ORIGIN);
         if(biome != Biomes.HELL && biome != Biomes.SKY) 
         if(biome != Biomes.HELL && biome != Biomes.SKY) 
         {
         {
-            generateOverworld(random, chunkX, chunkZ, w, chunkGenerator, chunkProvider);
+            generateOverworld(r, cX, cZ, w, cGen, cPro);
 	}
 	}
     }
     }
 	
 	

+ 9 - 9
src/main/java/me/km/effects/EffectUtils.java

@@ -202,7 +202,7 @@ public class EffectUtils extends Module
     
     
     public static void spawnParticle(WorldServer w, EnumParticleTypes particle, Vec3d v, int count)
     public static void spawnParticle(WorldServer w, EnumParticleTypes particle, Vec3d v, int count)
     {
     {
-        spawnParticle(w, particle, (float) v.xCoord, (float) v.yCoord, (float) v.zCoord, 0, 0, 0, count);
+        spawnParticle(w, particle, (float) v.x, (float) v.y, (float) v.z, 0, 0, 0, count);
     }
     }
     
     
     public static void playSpell(EntityPlayerMP p, int level)
     public static void playSpell(EntityPlayerMP p, int level)
@@ -212,9 +212,9 @@ public class EffectUtils extends Module
     
     
     public static <T> void playEffectCircleWithData(WorldServer w, Vec3d v, EnumParticleTypes particle, double radius, int counter, int... data)
     public static <T> void playEffectCircleWithData(WorldServer w, Vec3d v, EnumParticleTypes particle, double radius, int counter, int... data)
     {
     {
-        double x = v.xCoord;
+        double x = v.x;
-        float y = (float) v.yCoord;
+        float y = (float) v.y;
-        double z = v.yCoord;
+        double z = v.z;
         double angle = 2 * Math.PI / counter;
         double angle = 2 * Math.PI / counter;
         for(int i = 0; i < counter; i++)
         for(int i = 0; i < counter; i++)
         {
         {
@@ -262,7 +262,7 @@ public class EffectUtils extends Module
     
     
     public static void spawnPotionCloud(Vec3d v, EntityPlayerMP p, Potion potion, int pduration, int amplifier, int duration, float radius)
     public static void spawnPotionCloud(Vec3d v, EntityPlayerMP p, Potion potion, int pduration, int amplifier, int duration, float radius)
     {
     {
-        EntityAreaEffectCloud cloud = new EntityAreaEffectCloud(p.getServerWorld(), v.xCoord, v.yCoord, v.zCoord);
+        EntityAreaEffectCloud cloud = new EntityAreaEffectCloud(p.getServerWorld(), v.x, v.y, v.z);
         cloud.setDuration(duration);
         cloud.setDuration(duration);
         cloud.setRadius(radius);
         cloud.setRadius(radius);
         cloud.setOwner(p);
         cloud.setOwner(p);
@@ -349,19 +349,19 @@ public class EffectUtils extends Module
             Vec3d v = p.getLookVec().scale(10);
             Vec3d v = p.getLookVec().scale(10);
             if (EntitySmallFireball.class == projectile) 
             if (EntitySmallFireball.class == projectile) 
             {
             {
-                launch = new EntitySmallFireball(w, p, v.xCoord, v.yCoord, v.zCoord);
+                launch = new EntitySmallFireball(w, p, v.x, v.y, v.z);
             } 
             } 
             else if (EntityWitherSkull.class == projectile) 
             else if (EntityWitherSkull.class == projectile) 
             {
             {
-                launch = new EntityWitherSkull(w, p, v.xCoord, v.yCoord, v.zCoord);
+                launch = new EntityWitherSkull(w, p, v.x, v.y, v.z);
             } 
             } 
             else if (EntityDragonFireball.class == projectile) 
             else if (EntityDragonFireball.class == projectile) 
             {
             {
-                launch = new EntityDragonFireball(w, p, v.xCoord, v.yCoord, v.zCoord);
+                launch = new EntityDragonFireball(w, p, v.x, v.y, v.z);
             } 
             } 
             else 
             else 
             {
             {
-                launch = new EntityLargeFireball(w, p, v.xCoord, v.yCoord, v.zCoord);
+                launch = new EntityLargeFireball(w, p, v.x, v.y, v.z);
             }
             }
         } 
         } 
 
 

+ 2 - 2
src/main/java/me/km/effects/active/Doomed.java

@@ -21,13 +21,13 @@ public class Doomed extends ActiveEffectBase
         Vec3d v1 = p2.getPositionVector();
         Vec3d v1 = p2.getPositionVector();
         Vec3d v2 = p.getPositionVector();
         Vec3d v2 = p.getPositionVector();
         
         
-        Utils.setVelocity(p, (v1.xCoord - v2.xCoord) * 0.2, (v1.yCoord - v2.yCoord) * 0.2 + 0.9, (v1.zCoord - v2.zCoord) * 0.2);
+        Utils.setVelocity(p, (v1.x - v2.x) * 0.2, (v1.y - v2.y) * 0.2 + 0.9, (v1.z - v2.z) * 0.2);
 
 
          KajetansMod.scheduler.scheduleTask(() -> 
          KajetansMod.scheduler.scheduleTask(() -> 
         {
         {
             Vec3d v3 = p2.getPositionVector();
             Vec3d v3 = p2.getPositionVector();
             Vec3d v4 = p.getPositionVector();
             Vec3d v4 = p.getPositionVector();
-            Utils.setVelocity(p, (v3.xCoord - v4.xCoord) * 0.2, (v3.yCoord - v4.yCoord) * 0.2, (v3.zCoord - v4.zCoord) * 0.2);
+            Utils.setVelocity(p, (v3.x - v4.x) * 0.2, (v3.y - v4.y) * 0.2, (v3.z - v4.z) * 0.2);
         }, 12);
         }, 12);
         int duration = 20 * power;
         int duration = 20 * power;
         KajetansMod.playerbank.getData(p2).addBadTimedData("doomed", p, duration, "Todgeweiht", 52);
         KajetansMod.playerbank.getData(p2).addBadTimedData("doomed", p, duration, "Todgeweiht", 52);

+ 1 - 1
src/main/java/me/km/effects/active/Flying.java

@@ -15,7 +15,7 @@ public class Flying extends ActiveEffectBase
         EffectUtils.playSound(p, SoundEvents.ENTITY_FIREWORK_LAUNCH);
         EffectUtils.playSound(p, SoundEvents.ENTITY_FIREWORK_LAUNCH);
         EffectUtils.playSpell(p, power);
         EffectUtils.playSpell(p, power);
         Vec3d v = p.getLookVec().scale(1 + (power / 20f));
         Vec3d v = p.getLookVec().scale(1 + (power / 20f));
-        Utils.setVelocity(p, v.xCoord, v.yCoord, v.zCoord);
+        Utils.setVelocity(p, v.x, v.y, v.z);
         return true;
         return true;
     }
     }
 
 

+ 3 - 3
src/main/java/me/km/effects/active/Jump.java

@@ -15,11 +15,11 @@ public class Jump extends ActiveEffectBase
             return false;
             return false;
         }
         }
         Vec3d v = p.getLookVec();
         Vec3d v = p.getLookVec();
-        double groundLength = Math.sqrt(v.xCoord * v.xCoord + v.zCoord * v.zCoord);
+        double groundLength = Math.sqrt(v.x * v.x + v.z * v.z);
-        Vec3d goal = new Vec3d(v.xCoord, groundLength * 1.732050807568877, v.zCoord); // 60° shot
+        Vec3d goal = new Vec3d(v.x, groundLength * 1.732050807568877, v.z); // 60° shot
         goal = goal.normalize();
         goal = goal.normalize();
         goal = goal.scale(Math.sqrt((power + 0.85d) / 0.26) / 4);
         goal = goal.scale(Math.sqrt((power + 0.85d) / 0.26) / 4);
-        Utils.setVelocity(p, goal.xCoord, goal.yCoord, goal.zCoord);
+        Utils.setVelocity(p, goal.x, goal.y, goal.z);
         return true;
         return true;
     }
     }
 
 

+ 1 - 1
src/main/java/me/km/effects/active/Kick.java

@@ -19,7 +19,7 @@ public class Kick extends ActiveEffectBase
             return false;
             return false;
         }
         }
         Vec3d v = liv.getPositionVector().subtract(p.getPositionVector()).normalize().scale(2).addVector(0, 0.4, 0);
         Vec3d v = liv.getPositionVector().subtract(p.getPositionVector()).normalize().scale(2).addVector(0, 0.4, 0);
-        Utils.setVelocity(liv, v.xCoord, v.yCoord, v.zCoord);
+        Utils.setVelocity(liv, v.x, v.y, v.z);
         liv.addPotionEffect(new PotionEffect(MobEffects.NAUSEA, 120, 10));
         liv.addPotionEffect(new PotionEffect(MobEffects.NAUSEA, 120, 10));
         return true;
         return true;
     }
     }

+ 1 - 1
src/main/java/me/km/effects/active/Pull.java

@@ -15,7 +15,7 @@ public class Pull extends ActiveEffectBase
         EffectUtils.getEntsOfNotGuild(p, power + 2).stream().forEach(ent -> 
         EffectUtils.getEntsOfNotGuild(p, power + 2).stream().forEach(ent -> 
         {
         {
             Vec3d v2 = v.subtract(ent.getPositionVector()).normalize();
             Vec3d v2 = v.subtract(ent.getPositionVector()).normalize();
-            Utils.setVelocity(ent, v2.xCoord, v2.yCoord, v2.zCoord);
+            Utils.setVelocity(ent, v2.x, v2.y, v2.z);
         });
         });
         return true;
         return true;
     }
     }

+ 1 - 1
src/main/java/me/km/effects/active/Push.java

@@ -15,7 +15,7 @@ public class Push extends ActiveEffectBase
         EffectUtils.getEntsOfNotGuild(p, power + 2).stream().forEach(ent -> 
         EffectUtils.getEntsOfNotGuild(p, power + 2).stream().forEach(ent -> 
         {
         {
             Vec3d v2 = ent.getPositionVector().subtract(v).normalize();
             Vec3d v2 = ent.getPositionVector().subtract(v).normalize();
-            Utils.setVelocity(ent, v2.xCoord, v2.yCoord, v2.zCoord);
+            Utils.setVelocity(ent, v2.x, v2.y, v2.z);
         });
         });
         return true;
         return true;
     }
     }

+ 1 - 1
src/main/java/me/km/effects/passive/ArrowEffects.java

@@ -134,7 +134,7 @@ public class ArrowEffects extends ModuleListener
     @SubscribeEvent
     @SubscribeEvent
     public void handleHitShots(LivingHurtEvent e)
     public void handleHitShots(LivingHurtEvent e)
     {       
     {       
-        Entity ent = e.getSource().getSourceOfDamage();
+        Entity ent = e.getSource().getImmediateSource();
         if(ent != null && ent instanceof EntityArrow && KajetansMod.worldManager.getWorldPreferences(ent.world).skills)
         if(ent != null && ent instanceof EntityArrow && KajetansMod.worldManager.getWorldPreferences(ent.world).skills)
         {
         {
             runArrowEffects((EntityArrow) ent);
             runArrowEffects((EntityArrow) ent);

+ 1 - 1
src/main/java/me/km/effects/passive/EntityDamageEffects.java

@@ -73,7 +73,7 @@ public class EntityDamageEffects extends ModuleListener
         {
         {
             return;
             return;
         }  
         }  
-        Entity ent = e.getSource().getEntity();
+        Entity ent = e.getSource().getImmediateSource();
         if(ent == null || !(ent instanceof EntityPlayerMP))
         if(ent == null || !(ent instanceof EntityPlayerMP))
         {
         {
             return;
             return;

+ 2 - 2
src/main/java/me/km/effects/passive/EntityDrop.java

@@ -29,7 +29,7 @@ public class EntityDrop extends ModuleListener
         {
         {
             return;
             return;
         }
         }
-        Entity killer = e.getSource().getSourceOfDamage();              
+        Entity killer = e.getSource().getImmediateSource();              
         if(killer == null || !(killer instanceof EntityPlayer))
         if(killer == null || !(killer instanceof EntityPlayer))
         {
         {
             return;
             return;
@@ -44,7 +44,7 @@ public class EntityDrop extends ModuleListener
                 random = Utils.randomInt(-2, drops);
                 random = Utils.randomInt(-2, drops);
                 if(random >= 1)
                 if(random >= 1)
                 {
                 {
-                    item.getEntityItem().grow(random);
+                    item.getItem().grow(random);
                 }
                 }
             }
             }
         }
         }

+ 1 - 1
src/main/java/me/km/effects/passive/ThrowableEffects.java

@@ -25,7 +25,7 @@ public class ThrowableEffects extends ModuleListener
     @SubscribeEvent(receiveCanceled = false)
     @SubscribeEvent(receiveCanceled = false)
     public void preventEnderPearlDamage(PlayerHurtEvent e)
     public void preventEnderPearlDamage(PlayerHurtEvent e)
     {        
     {        
-        Entity ent = e.getSource().getSourceOfDamage();
+        Entity ent = e.getSource().getImmediateSource();
         if(ent != null && ent.getClass() == EntityEnderPearl.class && 
         if(ent != null && ent.getClass() == EntityEnderPearl.class && 
             KajetansMod.worldManager.getWorldPreferences(ent.world).skills &&
             KajetansMod.worldManager.getWorldPreferences(ent.world).skills &&
             EffectUtils.getEffectLevel(e.getEntityPlayer(), Effect.NO_ENDERPEARL_DAMAGE) >= 1)
             EffectUtils.getEffectLevel(e.getEntityPlayer(), Effect.NO_ENDERPEARL_DAMAGE) >= 1)

+ 1 - 1
src/main/java/me/km/entities/EntityItemProjectile.java

@@ -164,7 +164,7 @@ public class EntityItemProjectile extends EntityItem implements IProjectile
         {
         {
             if(thrower instanceof EntityPlayer)
             if(thrower instanceof EntityPlayer)
             {
             {
-                KajetansMod.scripts.getEvent(ScriptEvents.class).onEntityItemProjectileHit((EntityPlayer) thrower, this.getEntityItem(), list);
+                KajetansMod.scripts.getEvent(ScriptEvents.class).onEntityItemProjectileHit((EntityPlayer) thrower, this.getItem(), list);
             }
             }
         }
         }
         else
         else

+ 80 - 75
src/main/java/me/km/items/ModItems.java

@@ -1,6 +1,7 @@
 package me.km.items;
 package me.km.items;
 
 
 import me.km.KajetansMod;
 import me.km.KajetansMod;
+import me.km.blocks.EnumMetals;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.creativetab.CreativeTabs;
 import net.minecraft.init.Items;
 import net.minecraft.init.Items;
 import net.minecraft.init.SoundEvents;
 import net.minecraft.init.SoundEvents;
@@ -10,7 +11,7 @@ import net.minecraft.item.Item;
 import net.minecraft.item.ItemArmor.ArmorMaterial;
 import net.minecraft.item.ItemArmor.ArmorMaterial;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.ItemStack;
 import net.minecraftforge.common.util.EnumHelper;
 import net.minecraftforge.common.util.EnumHelper;
-import net.minecraftforge.fml.common.registry.GameRegistry;
+import net.minecraftforge.registries.IForgeRegistry;
 
 
 public class ModItems 
 public class ModItems 
 {
 {
@@ -160,20 +161,20 @@ public class ModItems
     public static ItemBase batWing; 
     public static ItemBase batWing; 
     public static ItemBase wolfFur; 
     public static ItemBase wolfFur; 
     
     
-    public static void init() 
+    public static void init(IForgeRegistry<Item> r) 
     {
     {
         // nuggets and ingots
         // nuggets and ingots
-	copperIngot = register(new ItemBase("copper_ingot", "ingotCopper").setCreativeTab(CreativeTabs.MATERIALS));
+	copperIngot = register(r, new ItemBase("copper_ingot", "ingotCopper").setCreativeTab(CreativeTabs.MATERIALS));
-        copperNugget = register(new ItemBase("copper_nugget", "copperNugget").setCreativeTab(CreativeTabs.MATERIALS));
+        copperNugget = register(r, new ItemBase("copper_nugget", "copperNugget").setCreativeTab(CreativeTabs.MATERIALS));
         
         
-        tinIngot = register(new ItemBase("tin_ingot", "ingotTin").setCreativeTab(CreativeTabs.MATERIALS));
+        tinIngot = register(r, new ItemBase("tin_ingot", "ingotTin").setCreativeTab(CreativeTabs.MATERIALS));
-        tinNugget = register(new ItemBase("tin_nugget", "tinNugget").setCreativeTab(CreativeTabs.MATERIALS));
+        tinNugget = register(r, new ItemBase("tin_nugget", "tinNugget").setCreativeTab(CreativeTabs.MATERIALS));
         
         
-        bronzeIngot = register(new ItemBase("bronze_ingot", "ingotBronze").setCreativeTab(CreativeTabs.MATERIALS));
+        bronzeIngot = register(r, new ItemBase("bronze_ingot", "ingotBronze").setCreativeTab(CreativeTabs.MATERIALS));
-        bronzeNugget = register(new ItemBase("bronze_nugget", "bronzeNugget").setCreativeTab(CreativeTabs.MATERIALS));
+        bronzeNugget = register(r, new ItemBase("bronze_nugget", "bronzeNugget").setCreativeTab(CreativeTabs.MATERIALS));
         
         
-        silverIngot = register(new ItemBase("silver_ingot", "ingotSilver").setCreativeTab(CreativeTabs.MATERIALS));
+        silverIngot = register(r, new ItemBase("silver_ingot", "ingotSilver").setCreativeTab(CreativeTabs.MATERIALS));
-        silverNugget = register(new ItemBase("silver_nugget", "silverNugget").setCreativeTab(CreativeTabs.MATERIALS));
+        silverNugget = register(r, new ItemBase("silver_nugget", "silverNugget").setCreativeTab(CreativeTabs.MATERIALS));
         
         
         // repair items
         // repair items
         TOOL_COPPER.setRepairItem(new ItemStack(copperIngot));
         TOOL_COPPER.setRepairItem(new ItemStack(copperIngot));
@@ -186,92 +187,96 @@ public class ModItems
         TOOL_SILVER.setRepairItem(new ItemStack(silverIngot));
         TOOL_SILVER.setRepairItem(new ItemStack(silverIngot));
         
         
         // tools and swords
         // tools and swords
-        copperSword =  register(new ItemSword(TOOL_COPPER, "copper_sword", "swordCopper"));
+        copperSword =  register(r, new ItemSword(TOOL_COPPER, "copper_sword", "swordCopper"));
-        copperShovel = register(new ItemSpade(TOOL_COPPER, "copper_shovel", "shovelCopper"));
+        copperShovel = register(r, new ItemSpade(TOOL_COPPER, "copper_shovel", "shovelCopper"));
-        copperPickaxe = register(new ItemPickaxe(TOOL_COPPER, "copper_pickaxe", "pickaxeCopper"));
+        copperPickaxe = register(r, new ItemPickaxe(TOOL_COPPER, "copper_pickaxe", "pickaxeCopper"));
-        copperAxe = register(new ItemAxe(TOOL_COPPER, 7, -3.1f, "copper_axe", "hatchetCopper"));
+        copperAxe = register(r, new ItemAxe(TOOL_COPPER, 7, -3.1f, "copper_axe", "hatchetCopper"));
-        copperHoe = register(new ItemHoe(TOOL_COPPER, "copper_hoe", "hoeCopper"));
+        copperHoe = register(r, new ItemHoe(TOOL_COPPER, "copper_hoe", "hoeCopper"));
         
         
-        bronzeSword =  register(new ItemSword(TOOL_BRONZE, "bronze_sword", "swordBronze"));
+        bronzeSword =  register(r, new ItemSword(TOOL_BRONZE, "bronze_sword", "swordBronze"));
-        bronzeShovel = register(new ItemSpade(TOOL_BRONZE, "bronze_shovel", "shovelBronze"));
+        bronzeShovel = register(r, new ItemSpade(TOOL_BRONZE, "bronze_shovel", "shovelBronze"));
-        bronzePickaxe = register(new ItemPickaxe(TOOL_BRONZE, "bronze_pickaxe", "pickaxeBronze"));
+        bronzePickaxe = register(r, new ItemPickaxe(TOOL_BRONZE, "bronze_pickaxe", "pickaxeBronze"));
-        bronzeAxe = register(new ItemAxe(TOOL_BRONZE, 8, -3.0f, "bronze_axe", "hatchetBronze"));
+        bronzeAxe = register(r, new ItemAxe(TOOL_BRONZE, 8, -3.0f, "bronze_axe", "hatchetBronze"));
-        bronzeHoe = register(new ItemHoe(TOOL_BRONZE, "bronze_hoe", "hoeBronze"));
+        bronzeHoe = register(r, new ItemHoe(TOOL_BRONZE, "bronze_hoe", "hoeBronze"));
                
                
         // armor
         // armor
-        copperHelmet = register(new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.HEAD, "copper_helmet", "helmetCopper"));
+        copperHelmet = register(r, new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.HEAD, "copper_helmet", "helmetCopper"));
-        copperChestplate = register(new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.CHEST, "copper_chestplate", "chestplateCopper"));
+        copperChestplate = register(r, new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.CHEST, "copper_chestplate", "chestplateCopper"));
-        copperLeggings = register(new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.LEGS, "copper_leggings", "leggingsCopper"));
+        copperLeggings = register(r, new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.LEGS, "copper_leggings", "leggingsCopper"));
-        copperBoots = register(new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.FEET, "copper_boots", "bootsCopper"));
+        copperBoots = register(r, new ItemArmor(ARMOR_COPPER, EntityEquipmentSlot.FEET, "copper_boots", "bootsCopper"));
         
         
-        bronzeHelmet = register(new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.HEAD, "bronze_helmet", "helmetBronze"));
+        bronzeHelmet = register(r, new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.HEAD, "bronze_helmet", "helmetBronze"));
-        bronzeChestplate = register(new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.CHEST, "bronze_chestplate", "chestplateBronze"));
+        bronzeChestplate = register(r, new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.CHEST, "bronze_chestplate", "chestplateBronze"));
-        bronzeLeggings = register(new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.LEGS, "bronze_leggings", "leggingsBronze"));
+        bronzeLeggings = register(r, new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.LEGS, "bronze_leggings", "leggingsBronze"));
-        bronzeBoots = register(new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.FEET, "bronze_boots", "bootsBronze"));
+        bronzeBoots = register(r, new ItemArmor(ARMOR_BRONZE, EntityEquipmentSlot.FEET, "bronze_boots", "bootsBronze"));
         
         
-        cylinder = register(new ItemCylinder(ARMOR_CYLINDER, "cylinder", "cylinder"));
+        cylinder = register(r, new ItemCylinder(ARMOR_CYLINDER, "cylinder", "cylinder"));
-        suitChestplate = register(new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.CHEST, "suit_chestplate", "chestplateSuit"));
+        suitChestplate = register(r, new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.CHEST, "suit_chestplate", "chestplateSuit"));
-        suitLeggings = register(new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.LEGS, "suit_leggings", "leggingsSuit"));
+        suitLeggings = register(r, new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.LEGS, "suit_leggings", "leggingsSuit"));
-        suitBoots = register(new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.FEET, "suit_boots", "bootsSuit"));
+        suitBoots = register(r, new ItemArmor(ARMOR_SUIT, EntityEquipmentSlot.FEET, "suit_boots", "bootsSuit"));
         
         
-        strawHat = register(new ItemHat(ARMOR_STRAW, "straw_hat", "hatStraw"));
+        strawHat = register(r, new ItemHat(ARMOR_STRAW, "straw_hat", "hatStraw"));
         
         
         // wands
         // wands
-        woodenWand = register(new ItemWand("wood_wand", "wandWood", Item.ToolMaterial.WOOD, 1));
+        woodenWand = register(r, new ItemWand("wood_wand", "wandWood", Item.ToolMaterial.WOOD, 1));
-        stoneWand = register(new ItemWand("stone_wand", "wandStone", Item.ToolMaterial.STONE, 1));
+        stoneWand = register(r, new ItemWand("stone_wand", "wandStone", Item.ToolMaterial.STONE, 1));
-        copperWand = register(new ItemWand("copper_wand", "wandCopper", TOOL_COPPER, 2));
+        copperWand = register(r, new ItemWand("copper_wand", "wandCopper", TOOL_COPPER, 2));
-        bronzeWand = register(new ItemWand("bronze_wand", "wandBronze", TOOL_BRONZE, 2));
+        bronzeWand = register(r, new ItemWand("bronze_wand", "wandBronze", TOOL_BRONZE, 2));
-        ironWand = register(new ItemWand("iron_wand", "wandIron", Item.ToolMaterial.IRON, 2));
+        ironWand = register(r, new ItemWand("iron_wand", "wandIron", Item.ToolMaterial.IRON, 2));
-        goldWand = register(new ItemWand("gold_wand", "wandGold", Item.ToolMaterial.GOLD, 6));
+        goldWand = register(r, new ItemWand("gold_wand", "wandGold", Item.ToolMaterial.GOLD, 6));
-        emeraldWand = register(new ItemWand("emerald_wand", "wandEmerald", TOOL_EMERALD, 4));
+        emeraldWand = register(r, new ItemWand("emerald_wand", "wandEmerald", TOOL_EMERALD, 4));
-        redstoneWand = register(new ItemWand("redstone_wand", "wandRedstone", TOOL_REDSTONE, 5));
+        redstoneWand = register(r, new ItemWand("redstone_wand", "wandRedstone", TOOL_REDSTONE, 5));
-        lapisWand = register(new ItemWand("lapis_wand", "wandLapis", TOOL_LAPIS, 6));
+        lapisWand = register(r, new ItemWand("lapis_wand", "wandLapis", TOOL_LAPIS, 6));
-        diamondWand = register(new ItemWand("diamond_wand", "wandDiamond", Item.ToolMaterial.DIAMOND, 4));
+        diamondWand = register(r, new ItemWand("diamond_wand", "wandDiamond", Item.ToolMaterial.DIAMOND, 4));
-        silverWand = register(new ItemWand("silver_wand", "wandSilver", TOOL_SILVER, 6));
+        silverWand = register(r, new ItemWand("silver_wand", "wandSilver", TOOL_SILVER, 6));
         
         
         // sticks
         // sticks
-        woodenStick = register(new ItemStick("wood_stick", "stickWood", Item.ToolMaterial.WOOD));
+        woodenStick = register(r, new ItemStick("wood_stick", "stickWood", Item.ToolMaterial.WOOD));
-        stoneStick = register(new ItemStick("stone_stick", "stickStone", Item.ToolMaterial.STONE));
+        stoneStick = register(r, new ItemStick("stone_stick", "stickStone", Item.ToolMaterial.STONE));
-        copperStick = register(new ItemStick("copper_stick", "stickCopper", TOOL_COPPER));
+        copperStick = register(r, new ItemStick("copper_stick", "stickCopper", TOOL_COPPER));
-        bronzeStick = register(new ItemStick("bronze_stick", "stickBronze", TOOL_BRONZE));
+        bronzeStick = register(r, new ItemStick("bronze_stick", "stickBronze", TOOL_BRONZE));
-        ironStick = register(new ItemStick("iron_stick", "stickIron", Item.ToolMaterial.IRON));
+        ironStick = register(r, new ItemStick("iron_stick", "stickIron", Item.ToolMaterial.IRON));
-        goldStick = register(new ItemStick("gold_stick", "stickGold", Item.ToolMaterial.GOLD));
+        goldStick = register(r, new ItemStick("gold_stick", "stickGold", Item.ToolMaterial.GOLD));
-        diamondStick = register(new ItemStick("diamond_stick", "stickDiamond", Item.ToolMaterial.DIAMOND));
+        diamondStick = register(r, new ItemStick("diamond_stick", "stickDiamond", Item.ToolMaterial.DIAMOND));
         
         
         // dagger
         // dagger
-        woodenDagger = register(new ItemDagger("wood_dagger", "daggerWood", Item.ToolMaterial.WOOD));
+        woodenDagger = register(r, new ItemDagger("wood_dagger", "daggerWood", Item.ToolMaterial.WOOD));
-        stoneDagger = register(new ItemDagger("stone_dagger", "daggerStone", Item.ToolMaterial.STONE));
+        stoneDagger = register(r, new ItemDagger("stone_dagger", "daggerStone", Item.ToolMaterial.STONE));
-        copperDagger = register(new ItemDagger("copper_dagger", "daggerCopper", TOOL_COPPER));
+        copperDagger = register(r, new ItemDagger("copper_dagger", "daggerCopper", TOOL_COPPER));
-        bronzeDagger = register(new ItemDagger("bronze_dagger", "daggerBronze", TOOL_BRONZE));
+        bronzeDagger = register(r, new ItemDagger("bronze_dagger", "daggerBronze", TOOL_BRONZE));
-        ironDagger = register(new ItemDagger("iron_dagger", "daggerIron", Item.ToolMaterial.IRON));
+        ironDagger = register(r, new ItemDagger("iron_dagger", "daggerIron", Item.ToolMaterial.IRON));
-        goldDagger = register(new ItemDagger("gold_dagger", "daggerGold", Item.ToolMaterial.GOLD));
+        goldDagger = register(r, new ItemDagger("gold_dagger", "daggerGold", Item.ToolMaterial.GOLD));
-        diamondDagger = register(new ItemDagger("diamond_dagger", "daggerDiamond", Item.ToolMaterial.DIAMOND));
+        diamondDagger = register(r, new ItemDagger("diamond_dagger", "daggerDiamond", Item.ToolMaterial.DIAMOND));
         
         
         // hammer
         // hammer
-        woodenHammer = register(new ItemHammer("wood_hammer", "hammerWood", Item.ToolMaterial.WOOD));
+        woodenHammer = register(r, new ItemHammer("wood_hammer", "hammerWood", Item.ToolMaterial.WOOD));
-        stoneHammer = register(new ItemHammer("stone_hammer", "hammerStone", Item.ToolMaterial.STONE));
+        stoneHammer = register(r, new ItemHammer("stone_hammer", "hammerStone", Item.ToolMaterial.STONE));
-        copperHammer = register(new ItemHammer("copper_hammer", "hammerCopper", TOOL_COPPER));
+        copperHammer = register(r, new ItemHammer("copper_hammer", "hammerCopper", TOOL_COPPER));
-        bronzeHammer = register(new ItemHammer("bronze_hammer", "hammerBronze", TOOL_BRONZE));
+        bronzeHammer = register(r, new ItemHammer("bronze_hammer", "hammerBronze", TOOL_BRONZE));
-        ironHammer = register(new ItemHammer("iron_hammer", "hammerIron", Item.ToolMaterial.IRON));
+        ironHammer = register(r, new ItemHammer("iron_hammer", "hammerIron", Item.ToolMaterial.IRON));
-        goldHammer = register(new ItemHammer("gold_hammer", "hammerGold", Item.ToolMaterial.GOLD));
+        goldHammer = register(r, new ItemHammer("gold_hammer", "hammerGold", Item.ToolMaterial.GOLD));
-        diamondHammer = register(new ItemHammer("diamond_hammer", "hammerDiamond", Item.ToolMaterial.DIAMOND));
+        diamondHammer = register(r, new ItemHammer("diamond_hammer", "hammerDiamond", Item.ToolMaterial.DIAMOND));
         
         
         // coins
         // coins
-        copperCoin = register(new ItemBase("coin_copper", "coinCopper").setCreativeTab(CreativeTabs.MISC));
+        copperCoin = register(r, new ItemBase("coin_copper", "coinCopper").setCreativeTab(CreativeTabs.MISC));
-        silverCoin = register(new ItemBase("coin_silver", "coinSilver").setCreativeTab(CreativeTabs.MISC));
+        silverCoin = register(r, new ItemBase("coin_silver", "coinSilver").setCreativeTab(CreativeTabs.MISC));
-        goldCoin = register(new ItemBase("coin_gold", "coinGold").setCreativeTab(CreativeTabs.MISC));
+        goldCoin = register(r, new ItemBase("coin_gold", "coinGold").setCreativeTab(CreativeTabs.MISC));
         
         
         // misc
         // misc
-        scroll = register((ItemScroll) new ItemScroll("scroll", "scroll").setCreativeTab(CreativeTabs.MISC));
+        scroll = register(r, (ItemScroll) new ItemScroll("scroll", "scroll").setCreativeTab(CreativeTabs.MISC));
-        realHayBed = register(new ItemBed("real_hay_bed", "realHayBed"));
+        realHayBed = register(r, new ItemBed("real_hay_bed", "realHayBed"));
-        hayBundle = register(new ItemBase("hay_bundle", "bundleHay").setCreativeTab(CreativeTabs.MATERIALS));
+        hayBundle = register(r, new ItemBase("hay_bundle", "bundleHay").setCreativeTab(CreativeTabs.MATERIALS));
-        batWing = register(new ItemBase("bat_wing", "batWing").setCreativeTab(CreativeTabs.MATERIALS));
+        batWing = register(r, new ItemBase("bat_wing", "batWing").setCreativeTab(CreativeTabs.MATERIALS));
-        wolfFur = register(new ItemBase("wolf_fur", "wolfFur").setCreativeTab(CreativeTabs.MATERIALS));
+        wolfFur = register(r, new ItemBase("wolf_fur", "wolfFur").setCreativeTab(CreativeTabs.MATERIALS));
+    
+        
+        // workaround
+        EnumMetals.fixMetalIngots();
     }
     }
 	
 	
-    private static <T extends Item> T register(T item) 
+    private static <T extends Item> T register(IForgeRegistry<Item> r, T item) 
     {
     {
-        GameRegistry.register(item);
+        r.register(item);
         if(item instanceof ItemModelProvider) 
         if(item instanceof ItemModelProvider) 
         {
         {
             ((ItemModelProvider) item).registerItemModel(item);
             ((ItemModelProvider) item).registerItemModel(item);

+ 0 - 216
src/main/java/me/km/items/ModRecipes.java

@@ -1,216 +0,0 @@
-package me.km.items;
-
-import me.km.blocks.EnumMetals;
-import me.km.blocks.ModBlocks;
-import net.minecraft.block.Block;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.EnumDyeColor;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.crafting.CraftingManager;
-import net.minecraft.item.crafting.FurnaceRecipes;
-
-public class ModRecipes 
-{    
-    public static void init() 
-    {
-	CraftingManager cm = CraftingManager.getInstance();
-        FurnaceRecipes fr = FurnaceRecipes.instance();
-
-        // misc
-        cm.addShapelessRecipe(new ItemStack(ModItems.bronzeIngot, 9), new Object[] 
-        {
-            ModItems.copperIngot, ModItems.copperIngot, ModItems.copperIngot,
-            ModItems.copperIngot, ModItems.copperIngot, ModItems.copperIngot,
-            ModItems.copperIngot, ModItems.copperIngot, ModItems.tinIngot
-        });
-        cm.addRecipe(new ItemStack(ModItems.realHayBed, 3), new Object[] {"XXX", 'X', ModBlocks.realHayBlock});
-        cm.addRecipe(new ItemStack(ModItems.strawHat, 1), new Object[] {" X ", "XXX", 'X', Items.WHEAT});
-        
-        // traps
-        addMetalRecipes(cm, new String[] {" X ", "XXX"}, ModBlocks.spikes, 3);
-        
-        // furnace recipes
-        fr.addSmeltingRecipeForBlock(ModBlocks.copperOre, new ItemStack(ModItems.copperIngot), 0.5f);
-        fr.addSmeltingRecipeForBlock(ModBlocks.tinOre, new ItemStack(ModItems.tinIngot), 1);
-        fr.addSmeltingRecipeForBlock(ModBlocks.silverOre, new ItemStack(ModItems.silverIngot), 1);
-        
-        // armor recipes
-        Item[][] armorItems = new Item[][] 
-        {
-            {ModItems.copperIngot, ModItems.bronzeIngot}, 
-            {ModItems.copperHelmet, ModItems.bronzeHelmet}, 
-            {ModItems.copperChestplate, ModItems.bronzeChestplate}, 
-            {ModItems.copperLeggings, ModItems.bronzeLeggings}, 
-            {ModItems.copperBoots, ModItems.bronzeBoots}
-        };
-        addArmorRecipes(cm, armorItems);
-        
-        // additionel old tool recipes
-        String[][] toolPatterns = new String[][] {{"XXX", " # ", " # "}, {"X", "#", "#"}, {"XX", "X#", " #"}, {"XX", " #", " #"}};
-        Object[][] toolItems = new Object[][] 
-        {
-            {ModItems.copperIngot, ModItems.bronzeIngot}, 
-            {ModItems.copperPickaxe, ModItems.bronzePickaxe}, 
-            {ModItems.copperShovel, ModItems.bronzeShovel}, 
-            {ModItems.copperAxe, ModItems.bronzeAxe}, 
-            {ModItems.copperHoe, ModItems.bronzeHoe}
-        };
-        addToolRecipes(cm, toolPatterns, toolItems);
-        
-        // new tool / weapon recipes
-        toolPatterns = new String[][] {{"X  ", " # ", "  X"}, {" X", "# "}, {"XXX", "X#X", " # "}};
-        toolItems = new Object[][] 
-        {
-            {Blocks.PLANKS, Blocks.COBBLESTONE, Items.IRON_INGOT, Items.DIAMOND, 
-                Items.GOLD_INGOT, ModItems.copperIngot, ModItems.bronzeIngot}, 
-            {ModItems.woodenStick, ModItems.stoneStick, ModItems.ironStick, ModItems.diamondStick, 
-                ModItems.goldStick, ModItems.copperStick, ModItems.bronzeStick}, 
-            {ModItems.woodenDagger, ModItems.stoneDagger, ModItems.ironDagger, ModItems.diamondDagger, 
-                ModItems.goldDagger, ModItems.copperDagger, ModItems.bronzeDagger}, 
-            {ModItems.woodenHammer, ModItems.stoneHammer, ModItems.ironHammer, ModItems.diamondHammer, 
-                ModItems.goldHammer, ModItems.copperHammer, ModItems.bronzeHammer}, 
-        };
-        addToolRecipes(cm, toolPatterns, toolItems);
-        
-        // wands
-        toolPatterns = new String[][] {{" #X", " ##", "#  "}};
-        toolItems = new Object[][] 
-        {
-            {Blocks.PLANKS, Blocks.COBBLESTONE, Items.IRON_INGOT, Items.DIAMOND, Items.GOLD_INGOT, 
-                ModItems.copperIngot, ModItems.bronzeIngot, Items.EMERALD, Items.REDSTONE, 
-                new ItemStack(Items.DYE, 1, EnumDyeColor.BLUE.getDyeDamage()), ModItems.silverIngot}, 
-            {ModItems.woodenWand, ModItems.stoneWand, ModItems.ironWand, ModItems.diamondWand, ModItems.goldWand, 
-                ModItems.copperWand, ModItems.bronzeWand, ModItems.emeraldWand, ModItems.redstoneWand,
-                ModItems.lapisWand, ModItems.silverWand}, 
-        };
-        addToolRecipes(cm, toolPatterns, toolItems);
-        
-        // additionel old weapon recipes
-        Object[][] weaponItems = new Object[][] 
-        {
-            {ModItems.copperIngot, ModItems.bronzeIngot}, 
-            {ModItems.copperSword, ModItems.bronzeSword}
-        };
-        addWeaponRecipes(cm, weaponItems);
-        
-        // block <-> parts <-> smaller parts recipes
-        Object[][] ingotItems = new Object[][] 
-        {
-            {ModBlocks.copperBlock, new ItemStack(ModItems.copperIngot, 9)}, 
-            {ModItems.copperIngot, new ItemStack(ModItems.copperNugget, 9)}, 
-            {ModBlocks.tinBlock, new ItemStack(ModItems.tinIngot, 9)}, 
-            {ModItems.tinIngot, new ItemStack(ModItems.tinNugget, 9)}, 
-            {ModBlocks.bronzeBlock, new ItemStack(ModItems.bronzeIngot, 9)}, 
-            {ModItems.bronzeIngot, new ItemStack(ModItems.bronzeNugget, 9)}, 
-            {ModBlocks.silverBlock, new ItemStack(ModItems.silverIngot, 9)}, 
-            {ModItems.silverIngot, new ItemStack(ModItems.silverNugget, 9)}, 
-            {ModBlocks.realHayBlock, new ItemStack(ModItems.hayBundle, 9)}, 
-        };
-        addIngotRecipes(cm, ingotItems);
-
-        addNuggetRecipes(fr, toolItems, armorItems, weaponItems, ModItems.copperNugget, ModItems.bronzeNugget);
-    }
-
-    private static void addArmorRecipes(CraftingManager cm, Item[][] armorItems)
-    {
-        String[][] armorPatterns = new String[][] {{"XXX", "X X"}, {"X X", "XXX", "XXX"}, {"XXX", "X X", "X X"}, {"X X", "X X"}};
-        for (int i = 0; i < armorItems[0].length; ++i)
-        {
-            Item item = armorItems[0][i];
-
-            for (int j = 0; j < armorItems.length - 1; ++j)
-            {
-                Item item2 = armorItems[j + 1][i];
-                cm.addRecipe(new ItemStack(item2), new Object[] {armorPatterns[j], 'X', item});
-            }
-        }
-    }
-    
-    private static void addToolRecipes(CraftingManager cm, String[][] toolPatterns, Object[][] toolItems)
-    {       
-        for(int i = 0; i < toolItems[0].length; ++i)
-        {
-            Object object = toolItems[0][i];
-
-            for(int j = 0; j < toolItems.length - 1; ++j)
-            {
-                Item item = (Item) toolItems[j + 1][i];
-                cm.addRecipe(new ItemStack(item), new Object[] {toolPatterns[j], '#', Items.STICK, 'X', object});
-            }
-        }
-    }
-    
-    private static void addWeaponRecipes(CraftingManager cm, Object[][] weaponItems)
-    {
-        String[][] weaponPatterns = new String[][] {{"X", "X", "#"}};
-        for(int i = 0; i < weaponItems[0].length; ++i)
-        {
-            Object object = weaponItems[0][i];
-            for(int j = 0; j < weaponItems.length - 1; ++j)
-            {
-                Item item = (Item) weaponItems[j + 1][i];
-                cm.addRecipe(new ItemStack(item), new Object[] {weaponPatterns[j], '#', Items.STICK, 'X', object});
-            }
-        }
-    }
-
-    private static void addIngotRecipes(CraftingManager cm, Object[][] ingotItems)
-    {
-        for(Object[] aobject : ingotItems)
-        {
-            try
-            {
-                Item block = (Item) aobject[0];
-                ItemStack parts = (ItemStack) aobject[1];
-                ItemStack ingot = parts.copy();
-                ingot.setCount(1);
-                cm.addRecipe(new ItemStack(block), new Object[] {"###", "###", "###", '#', ingot});
-                cm.addRecipe(parts, new Object[] {"#", '#', block});
-            }
-            catch(ClassCastException ex)
-            {
-                Block block = (Block) aobject[0];
-                ItemStack parts = (ItemStack) aobject[1];
-                ItemStack ingot = parts.copy();
-                ingot.setCount(1);
-                cm.addRecipe(new ItemStack(block), new Object[] {"###", "###", "###", '#', ingot});
-                cm.addRecipe(parts, new Object[] {"#", '#', block});
-            }
-        }
-    }
-    
-    private static void addNuggetRecipes(FurnaceRecipes fr, Object[][] toolItems, Item[][] armorItems, Object[][] weaponItems, Item... nuggets)
-    {
-        for(int i = 0; i < nuggets.length; i++)
-        {
-            for(int j = 1; j < toolItems.length; j++)
-            {
-                fr.addSmelting((Item) toolItems[j][i], new ItemStack(nuggets[i]), 0.1f);
-            }
-            for(int j = 1; j < armorItems.length; j++)
-            {
-                fr.addSmelting((Item) armorItems[j][i], new ItemStack(nuggets[i]), 0.1f);
-            }
-            for(int j = 1; j < weaponItems.length; j++)
-            {
-                fr.addSmelting((Item) weaponItems[j][i], new ItemStack(nuggets[i]), 0.1f);
-            }
-        }
-    }
-    
-    private static void addMetalRecipes(CraftingManager cm, String[] patterns, Item output, int amount)
-    {
-        for(EnumMetals metal : EnumMetals.values())
-        {
-            cm.addRecipe(new ItemStack(output, amount, metal.getMetadata()), 
-                    new Object[] {patterns, 'X', metal.getMetalIngot()});
-        }
-    }
-    
-    private static void addMetalRecipes(CraftingManager cm, String[] patterns, Block output, int amount)
-    {
-        addMetalRecipes(cm, patterns, Item.getItemFromBlock(output), amount);
-    }
-}

+ 5 - 4
src/main/java/me/km/nms/NmsUtilities.java

@@ -19,6 +19,7 @@ import net.minecraft.network.play.server.SPacketChat;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.Vec3d;
 import net.minecraft.util.math.Vec3d;
+import net.minecraft.util.text.ChatType;
 import net.minecraft.util.text.Style;
 import net.minecraft.util.text.Style;
 import net.minecraft.util.text.TextComponentString;
 import net.minecraft.util.text.TextComponentString;
 import net.minecraft.util.text.TextFormatting;
 import net.minecraft.util.text.TextFormatting;
@@ -44,7 +45,7 @@ public class NmsUtilities
 
 
     public static void walkTo(EntityLiving liv, Vec3d v, double speed)
     public static void walkTo(EntityLiving liv, Vec3d v, double speed)
     {
     {
-        liv.getMoveHelper().setMoveTo(v.xCoord, v.yCoord, v.zCoord, speed);
+        liv.getMoveHelper().setMoveTo(v.x, v.y, v.z, speed);
     }
     }
     
     
     public static void canDestroyBlocks(EntityLiving liv)
     public static void canDestroyBlocks(EntityLiving liv)
@@ -65,14 +66,14 @@ public class NmsUtilities
         {
         {
             NBTTagCompound nbt = JsonToNBT.getTagFromJson(s);
             NBTTagCompound nbt = JsonToNBT.getTagFromJson(s);
             Vec3d v = l.getPos();
             Vec3d v = l.getPos();
-            Entity ent = AnvilChunkLoader.readWorldEntityPos(nbt, l.getWorld(), v.xCoord, v.yCoord, v.zCoord, true);
+            Entity ent = AnvilChunkLoader.readWorldEntityPos(nbt, l.getWorld(), v.x, v.y, v.z, true);
             if(ent == null)
             if(ent == null)
             {
             {
                 return null;
                 return null;
             }
             }
             else
             else
             {
             {
-                ent.setLocationAndAngles(v.xCoord, v.yCoord, v.zCoord, ent.rotationYaw, ent.rotationPitch);
+                ent.setLocationAndAngles(v.x, v.y, v.z, ent.rotationYaw, ent.rotationPitch);
                 if(ent instanceof EntityLiving)
                 if(ent instanceof EntityLiving)
                 {
                 {
                     ((EntityLiving) ent).onInitialSpawn(ent.getEntityWorld().getDifficultyForLocation(new BlockPos(ent)), null);
                     ((EntityLiving) ent).onInitialSpawn(ent.getEntityWorld().getDifficultyForLocation(new BlockPos(ent)), null);
@@ -259,6 +260,6 @@ public class NmsUtilities
     
     
     public static void sendActionBar(EntityPlayerMP p, String message) 
     public static void sendActionBar(EntityPlayerMP p, String message) 
     {
     {
-        p.connection.sendPacket(new SPacketChat(new TextComponentString(message), (byte) 2));
+        p.connection.sendPacket(new SPacketChat(new TextComponentString(message), ChatType.GAME_INFO));
     }
     }
 }
 }

+ 12 - 12
src/main/java/me/km/playerbank/ModDedicatedPlayerList.java

@@ -30,6 +30,7 @@ import net.minecraft.network.play.server.SPacketSpawnPosition;
 import net.minecraft.scoreboard.ServerScoreboard;
 import net.minecraft.scoreboard.ServerScoreboard;
 import net.minecraft.server.dedicated.DedicatedPlayerList;
 import net.minecraft.server.dedicated.DedicatedPlayerList;
 import net.minecraft.server.dedicated.DedicatedServer;
 import net.minecraft.server.dedicated.DedicatedServer;
+import net.minecraft.server.management.DemoPlayerInteractionManager;
 import net.minecraft.server.management.PlayerInteractionManager;
 import net.minecraft.server.management.PlayerInteractionManager;
 import net.minecraft.server.management.PlayerProfileCache;
 import net.minecraft.server.management.PlayerProfileCache;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.BlockPos;
@@ -39,7 +40,6 @@ import net.minecraft.world.GameRules;
 import net.minecraft.world.World;
 import net.minecraft.world.World;
 import net.minecraft.world.WorldServer;
 import net.minecraft.world.WorldServer;
 import net.minecraft.world.chunk.storage.AnvilChunkLoader;
 import net.minecraft.world.chunk.storage.AnvilChunkLoader;
-import net.minecraft.world.demo.DemoWorldManager;
 import net.minecraft.world.storage.WorldInfo;
 import net.minecraft.world.storage.WorldInfo;
 import net.minecraftforge.common.MinecraftForge;
 import net.minecraftforge.common.MinecraftForge;
 import net.minecraftforge.fml.relauncher.Side;
 import net.minecraftforge.fml.relauncher.Side;
@@ -91,11 +91,11 @@ public class ModDedicatedPlayerList extends DedicatedPlayerList
         // read data
         // read data
         NBTTagCompound nbttagcompound = this.readPlayerDataFromFile(p);
         NBTTagCompound nbttagcompound = this.readPlayerDataFromFile(p);
         
         
-        WorldServer playerWorld = this.mcServer.worldServerForDimension(p.dimension);
+        WorldServer playerWorld = this.mcServer.getWorld(p.dimension);
         if(playerWorld == null)
         if(playerWorld == null)
         {
         {
             p.dimension = 0;
             p.dimension = 0;
-            playerWorld = this.mcServer.worldServerForDimension(0);
+            playerWorld = this.mcServer.getWorld(0);
             BlockPos spawnPoint = playerWorld.provider.getRandomizedSpawnPoint();
             BlockPos spawnPoint = playerWorld.provider.getRandomizedSpawnPoint();
             p.setPosition(spawnPoint.getX(), spawnPoint.getY(), spawnPoint.getZ());
             p.setPosition(spawnPoint.getX(), spawnPoint.getY(), spawnPoint.getZ());
         }
         }
@@ -123,7 +123,7 @@ public class ModDedicatedPlayerList extends DedicatedPlayerList
         nethandlerplayserver.sendPacket(new SPacketHeldItemChange(p.inventory.currentItem));
         nethandlerplayserver.sendPacket(new SPacketHeldItemChange(p.inventory.currentItem));
         this.updatePermissionLevel(p);
         this.updatePermissionLevel(p);
         p.getStatFile().markAllDirty();
         p.getStatFile().markAllDirty();
-        p.getStatFile().sendAchievements(p);
+        p.getRecipeBook().init(p);
         this.sendScoreboard((ServerScoreboard) playerWorld.getScoreboard(), p);
         this.sendScoreboard((ServerScoreboard) playerWorld.getScoreboard(), p);
         this.mcServer.refreshStatusNextTick();
         this.mcServer.refreshStatusNextTick();
         // Custom Join Message - Start
         // Custom Join Message - Start
@@ -210,7 +210,7 @@ public class ModDedicatedPlayerList extends DedicatedPlayerList
     public EntityPlayerMP recreatePlayerEntity(EntityPlayerMP p, int dim, boolean conqueredEnd)
     public EntityPlayerMP recreatePlayerEntity(EntityPlayerMP p, int dim, boolean conqueredEnd)
     {
     {
         dim = p.dimension;
         dim = p.dimension;
-        WorldServer w = mcServer.worldServerForDimension(dim);
+        WorldServer w = mcServer.getWorld(dim);
         if(w == null)
         if(w == null)
         {
         {
             dim = p.getSpawnDimension();
             dim = p.getSpawnDimension();
@@ -219,7 +219,7 @@ public class ModDedicatedPlayerList extends DedicatedPlayerList
         {
         {
             dim = w.provider.getRespawnDimension(p);
             dim = w.provider.getRespawnDimension(p);
         }
         }
-        if(mcServer.worldServerForDimension(dim) == null)
+        if(mcServer.getWorld(dim) == null)
         {
         {
             dim = 0;
             dim = 0;
         }
         }
@@ -233,14 +233,14 @@ public class ModDedicatedPlayerList extends DedicatedPlayerList
         
         
         // start of event handling
         // start of event handling
         // determine would-be spawn
         // determine would-be spawn
-        w = mcServer.worldServerForDimension(dim);
+        w = mcServer.getWorld(dim);
         p.dimension = dim;
         p.dimension = dim;
 
 
         PlayerInteractionManager pManager;
         PlayerInteractionManager pManager;
         // keep this demo shit for fucks sake
         // keep this demo shit for fucks sake
         if(this.mcServer.isDemo())
         if(this.mcServer.isDemo())
         {
         {
-            pManager = new DemoWorldManager(w);
+            pManager = new DemoPlayerInteractionManager(w);
         }
         }
         else
         else
         {
         {
@@ -285,13 +285,13 @@ public class ModDedicatedPlayerList extends DedicatedPlayerList
             newP.world = w;
             newP.world = w;
             newP.dimension = w.provider.getDimension();
             newP.dimension = w.provider.getDimension();
             p.dimension = newP.dimension;
             p.dimension = newP.dimension;
-            newP.setPosition(v.xCoord, v.yCoord, v.zCoord);
+            newP.setPosition(v.x, v.y, v.z);
         }
         }
         else
         else
         {
         {
             if(spawnInBed)
             if(spawnInBed)
             {
             {
-                newP.setLocationAndAngles(v.xCoord, v.yCoord, v.zCoord, 0, 0);
+                newP.setLocationAndAngles(v.x, v.y, v.z, 0, 0);
                 newP.setSpawnPoint(bed, p.isSpawnForced(dim));
                 newP.setSpawnPoint(bed, p.isSpawnForced(dim));
             }
             }
             else if(errorIfNoForce)
             else if(errorIfNoForce)
@@ -305,12 +305,12 @@ public class ModDedicatedPlayerList extends DedicatedPlayerList
             GameRules rules = w.getGameRules();
             GameRules rules = w.getGameRules();
             boolean keep = rules.getBoolean("keepInventory");
             boolean keep = rules.getBoolean("keepInventory");
             rules.setOrCreateGameRule("keepInventory", "true");
             rules.setOrCreateGameRule("keepInventory", "true");
-            newP.clonePlayer(p, conqueredEnd);
+            newP.copyFrom(p, conqueredEnd);
             rules.setOrCreateGameRule("keepInventory", String.valueOf(keep));
             rules.setOrCreateGameRule("keepInventory", String.valueOf(keep));
         }
         }
         else
         else
         {
         {
-            newP.clonePlayer(p, conqueredEnd);
+            newP.copyFrom(p, conqueredEnd);
         }
         }
 
 
         // end of event handling
         // end of event handling

+ 1 - 2
src/main/java/me/km/playerbank/PvpEvent.java

@@ -5,7 +5,6 @@ import me.km.api.Module;
 import me.km.api.ModuleListener;
 import me.km.api.ModuleListener;
 import me.km.api.Utils;
 import me.km.api.Utils;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.util.DamageSource;
 import net.minecraftforge.event.entity.living.LivingAttackEvent;
 import net.minecraftforge.event.entity.living.LivingAttackEvent;
 import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
 import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
 
 
@@ -21,7 +20,7 @@ public class PvpEvent extends ModuleListener
     {      
     {      
         if(!(e.getEntityLiving() instanceof EntityPlayer) ||
         if(!(e.getEntityLiving() instanceof EntityPlayer) ||
             !KajetansMod.worldManager.getWorldPreferences(e.getEntity().world).pvpProtection || 
             !KajetansMod.worldManager.getWorldPreferences(e.getEntity().world).pvpProtection || 
-            !(e.getSource().getSourceOfDamage() instanceof EntityPlayer))
+            !(e.getSource().getImmediateSource()instanceof EntityPlayer))
         {
         {
             return;
             return;
         }
         }

+ 1 - 2
src/main/java/me/km/plots/ProtectionEntity.java

@@ -3,7 +3,6 @@ package me.km.plots;
 import me.km.KajetansMod;
 import me.km.KajetansMod;
 import me.km.api.Module;
 import me.km.api.Module;
 import me.km.api.Utils;
 import me.km.api.Utils;
-import me.km.permissions.PermissionManager;
 import me.km.permissions.Permissions;
 import me.km.permissions.Permissions;
 import net.minecraft.entity.EntityLivingBase;
 import net.minecraft.entity.EntityLivingBase;
 import net.minecraft.entity.passive.EntityAnimal;
 import net.minecraft.entity.passive.EntityAnimal;
@@ -40,7 +39,7 @@ public class ProtectionEntity extends Protection
             return;
             return;
         } 
         } 
         
         
-        if(e.getSource().getSourceOfDamage() != null)
+        if(e.getSource().getImmediateSource() != null)
         {
         {
             EntityPlayer p = Utils.getDamager(e.getSource());
             EntityPlayer p = Utils.getDamager(e.getSource());
             if(p != null)
             if(p != null)

+ 347 - 0
src/main/java/me/km/recipes/ModRecipes.java

@@ -0,0 +1,347 @@
+package me.km.recipes;
+
+import java.util.HashMap;
+import me.km.blocks.EnumMetals;
+import me.km.blocks.ModBlocks;
+import me.km.items.ModItems;
+import net.minecraft.block.Block;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.EnumDyeColor;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.FurnaceRecipes;
+import net.minecraft.item.crafting.IRecipe;
+import net.minecraft.item.crafting.Ingredient;
+import net.minecraft.item.crafting.ShapedRecipes;
+import net.minecraft.item.crafting.ShapelessRecipes;
+import net.minecraft.util.NonNullList;
+import net.minecraftforge.registries.IForgeRegistry;
+
+public class ModRecipes 
+{           
+    // -----------------------------------------------------------------------------------
+    // shaped recipe construction stuff
+    // -----------------------------------------------------------------------------------
+    
+    private static ShapedRecipes newShapedRecipe(String group, String[] pattern, ItemStack result, char[] chars, ItemStack[][] stacks)
+    {
+        HashMap<Character, Ingredient> map = getPatternMap(chars, stacks);
+        NonNullList<Ingredient> nonnulllist = getIngredientList(pattern, map);
+        return new ShapedRecipes(group, pattern[0].length(), pattern.length, nonnulllist, result);
+    }
+    
+    private static HashMap<Character, Ingredient> getPatternMap(char[] chars, ItemStack[][] stacks)
+    {
+        HashMap<Character, Ingredient> map = new HashMap<>();
+        for(int i = 0; i < chars.length; i++)
+        {
+            map.put(chars[i], Ingredient.fromStacks(copyItemStack(stacks[i])));
+        }
+        map.put(' ', Ingredient.EMPTY);
+        return map;
+    }
+    
+    private static NonNullList<Ingredient> getIngredientList(String[] pattern, HashMap<Character, Ingredient> map)
+    {
+        int w = pattern[0].length();
+        NonNullList<Ingredient> nonnulllist = NonNullList.<Ingredient>withSize(w * pattern.length, Ingredient.EMPTY);
+        for(int i = 0; i < pattern.length; i++)
+        {
+            for (int j = 0; j < pattern[i].length(); j++)
+            {
+                nonnulllist.set(j + w * i, map.get(pattern[i].charAt(j)));
+            }
+        }
+        return nonnulllist;
+    }
+    
+    private static void registerShaped(IForgeRegistry<IRecipe> r, String group, String[] pattern, ItemStack result, char[] chars, ItemStack[][] stacks)
+    {
+        ShapedRecipes recipe = newShapedRecipe(group, pattern, result, chars, stacks);
+        recipe.setRegistryName(buildRegistryName(result));
+        r.register(recipe);
+    }
+    
+    private static ShapelessRecipes newShapelessRecipe(String group, ItemStack result, ItemStack[][] stacks)
+    {
+        NonNullList<Ingredient> nonnulllist = NonNullList.<Ingredient>withSize(stacks.length, Ingredient.EMPTY);
+        for(int i = 0; i < stacks.length; i++)
+        {
+            nonnulllist.set(i, Ingredient.fromStacks(copyItemStack(stacks[i])));
+        }
+        return new ShapelessRecipes(group, result, nonnulllist);
+    }
+    
+    private static void registerShapeless(IForgeRegistry<IRecipe> r, String group, ItemStack result, ItemStack[][] stacks)
+    {
+        ShapelessRecipes recipe = newShapelessRecipe(group, result, stacks);
+        recipe.setRegistryName(buildRegistryName(result));
+        r.register(recipe);
+    }
+    
+    private static void registerShapeless(IForgeRegistry<IRecipe> r, String group, ItemStack result, Item[] items)
+    {
+        ItemStack[][] stacks = new ItemStack[items.length][1];
+        for(int i = 0; i < items.length; i++)
+        {
+            stacks[i][0] = new ItemStack(items[i]);
+        }
+        registerShapeless(r, group, result, stacks);
+    }
+    
+    private static ItemStack[] copyItemStack(ItemStack[] stacks)
+    {
+        ItemStack[] copyStacks = new ItemStack[stacks.length];
+        for(int i = 0; i < copyStacks.length; i++)
+        {
+            copyStacks[i] = stacks[i].copy();
+        }
+        return copyStacks;
+    }
+    
+    private static String buildRegistryName(ItemStack stack)
+    {
+        if(stack.getMetadata() != 0)
+        {
+            return stack.getItem().getRegistryName().getResourcePath() + "_" + stack.getMetadata();
+        }
+        return stack.getItem().getRegistryName().getResourcePath();
+    }
+    
+    // -----------------------------------------------------------------------------------
+    // init recipes
+    // -----------------------------------------------------------------------------------
+    
+    public static void init(IForgeRegistry<IRecipe> r) 
+    {
+        FurnaceRecipes fr = FurnaceRecipes.instance();        
+        
+        // misc
+        registerShapeless(r, "", new ItemStack(ModItems.bronzeIngot, 9), new Item[] 
+        {
+            ModItems.copperIngot, ModItems.copperIngot, ModItems.copperIngot,
+            ModItems.copperIngot, ModItems.copperIngot, ModItems.copperIngot,
+            ModItems.copperIngot, ModItems.copperIngot, ModItems.tinIngot
+        });
+        registerShaped(r, "", new String[] {"XXX"}, new ItemStack(ModItems.realHayBed, 3), 
+                new char[] {'X'}, new ItemStack[][] {{new ItemStack(ModBlocks.realHayBlock)}});
+        registerShaped(r, "", new String[] {" X ", "XXX"}, new ItemStack(ModItems.strawHat), 
+                new char[] {'X'}, new ItemStack[][] {{new ItemStack(Items.WHEAT)}});
+        
+        // traps
+        addMetalRecipes(r, "", new String[] {" X ", "XXX"}, ModBlocks.spikes, 3);
+        
+        // furnace recipes
+        fr.addSmeltingRecipeForBlock(ModBlocks.copperOre, new ItemStack(ModItems.copperIngot), 0.5f);
+        fr.addSmeltingRecipeForBlock(ModBlocks.tinOre, new ItemStack(ModItems.tinIngot), 1);
+        fr.addSmeltingRecipeForBlock(ModBlocks.silverOre, new ItemStack(ModItems.silverIngot), 1);
+        
+        // armor recipes
+        Item[][] armorItems = new Item[][] 
+        {
+            {ModItems.copperIngot, ModItems.bronzeIngot}, 
+            {ModItems.copperHelmet, ModItems.bronzeHelmet}, 
+            {ModItems.copperChestplate, ModItems.bronzeChestplate}, 
+            {ModItems.copperLeggings, ModItems.bronzeLeggings}, 
+            {ModItems.copperBoots, ModItems.bronzeBoots}
+        };
+        addArmorRecipes(r, armorItems);
+        
+        // additionel old tool recipes
+        String[][] toolPatterns = new String[][] 
+        {
+            {"XXX", " # ", " # "}, 
+            {"X", "#", "#"}, 
+            {"XX", "X#", " #"}, 
+            {"XX", " #", " #"},
+            {"X", "X", "#"}
+        };
+        Object[][] toolItems = new Object[][] 
+        {
+            {ModItems.copperIngot, ModItems.bronzeIngot}, 
+            {ModItems.copperPickaxe, ModItems.bronzePickaxe}, 
+            {ModItems.copperShovel, ModItems.bronzeShovel}, 
+            {ModItems.copperAxe, ModItems.bronzeAxe}, 
+            {ModItems.copperHoe, ModItems.bronzeHoe},
+            {ModItems.copperSword, ModItems.bronzeSword}
+        };
+        addToolRecipes(r, toolPatterns, toolItems);
+        
+        // new tool / weapon recipes
+        toolPatterns = new String[][] {{"X  ", " # ", "  X"}, {" X", "# "}, {"XXX", "X#X", " # "}};
+        toolItems = new Object[][]
+        {
+            {Blocks.PLANKS, Blocks.COBBLESTONE, Items.IRON_INGOT, Items.DIAMOND, 
+                Items.GOLD_INGOT, ModItems.copperIngot, ModItems.bronzeIngot}, 
+            {ModItems.woodenStick, ModItems.stoneStick, ModItems.ironStick, ModItems.diamondStick, 
+                ModItems.goldStick, ModItems.copperStick, ModItems.bronzeStick}, 
+            {ModItems.woodenDagger, ModItems.stoneDagger, ModItems.ironDagger, ModItems.diamondDagger, 
+                ModItems.goldDagger, ModItems.copperDagger, ModItems.bronzeDagger}, 
+            {ModItems.woodenHammer, ModItems.stoneHammer, ModItems.ironHammer, ModItems.diamondHammer, 
+                ModItems.goldHammer, ModItems.copperHammer, ModItems.bronzeHammer}, 
+        };
+        addToolRecipes(r, toolPatterns, toolItems);
+        
+        // wands
+        toolPatterns = new String[][] {{" #X", " ##", "#  "}};
+        toolItems = new Object[][] 
+        {
+            {Blocks.PLANKS, Blocks.COBBLESTONE, Items.IRON_INGOT, Items.DIAMOND, Items.GOLD_INGOT, 
+                ModItems.copperIngot, ModItems.bronzeIngot, Items.EMERALD, Items.REDSTONE, 
+                new ItemStack(Items.DYE, 1, EnumDyeColor.BLUE.getDyeDamage()), ModItems.silverIngot}, 
+            {ModItems.woodenWand, ModItems.stoneWand, ModItems.ironWand, ModItems.diamondWand, ModItems.goldWand, 
+                ModItems.copperWand, ModItems.bronzeWand, ModItems.emeraldWand, ModItems.redstoneWand,
+                ModItems.lapisWand, ModItems.silverWand}, 
+        };
+        addToolRecipes(r, toolPatterns, toolItems);
+
+        // block <-> parts <-> smaller parts recipes
+        Object[][] ingotItems = new Object[][] 
+        {
+            {ModBlocks.copperBlock, new ItemStack(ModItems.copperIngot, 9)}, 
+            {ModItems.copperIngot, new ItemStack(ModItems.copperNugget, 9)}, 
+            {ModBlocks.tinBlock, new ItemStack(ModItems.tinIngot, 9)}, 
+            {ModItems.tinIngot, new ItemStack(ModItems.tinNugget, 9)}, 
+            {ModBlocks.bronzeBlock, new ItemStack(ModItems.bronzeIngot, 9)}, 
+            {ModItems.bronzeIngot, new ItemStack(ModItems.bronzeNugget, 9)}, 
+            {ModBlocks.silverBlock, new ItemStack(ModItems.silverIngot, 9)}, 
+            {ModItems.silverIngot, new ItemStack(ModItems.silverNugget, 9)}, 
+            {ModBlocks.realHayBlock, new ItemStack(ModItems.hayBundle, 9)}, 
+        };
+        addIngotRecipes(r, ingotItems);
+
+        addNuggetRecipes(fr, toolItems, armorItems, ModItems.copperNugget, ModItems.bronzeNugget);
+    }
+
+    // -----------------------------------------------------------------------------------
+    // recipe helper
+    // -----------------------------------------------------------------------------------
+    
+    private static void addArmorRecipes(IForgeRegistry<IRecipe> r, Item[][] armorItems)
+    {
+        String[][] armorPatterns = new String[][] 
+        {
+            {"XXX", "X X"}, 
+            {"X X", "XXX", "XXX"}, 
+            {"XXX", "X X", "X X"}, 
+            {"X X", "X X"}
+        };
+        char[] chars = new char[] {'X'};
+        ItemStack[][] stacks = new ItemStack[][] {{ItemStack.EMPTY}};
+        
+        for (int i = 0; i < armorItems[0].length; ++i)
+        {
+            stacks[0][0] = new ItemStack(armorItems[0][i]);
+            for (int j = 0; j < armorItems.length - 1; ++j)
+            {
+                registerShaped(r, "", armorPatterns[j], new ItemStack(armorItems[j + 1][i]), chars, stacks);
+            }
+        }
+    }
+    
+    private static void addToolRecipes(IForgeRegistry<IRecipe> r, String[][] toolPatterns, Object[][] toolItems)
+    {       
+        char[] chars = new char[] {'#', 'X'};
+        ItemStack[][] stacks = new ItemStack[][] {{new ItemStack(Items.STICK)} , {ItemStack.EMPTY}};
+        
+        for(int i = 0; i < toolItems[0].length; ++i)
+        {
+            Object object = toolItems[0][i];
+            if(object instanceof Item)
+            {
+                stacks[1][0] = new ItemStack((Item) toolItems[0][i]);
+            }
+            else if(object instanceof Block)
+            {
+                Block b = (Block) toolItems[0][i];
+                NonNullList<ItemStack> list = NonNullList.<ItemStack>create();               
+                b.getSubBlocks(CreativeTabs.BUILDING_BLOCKS, list);
+                stacks[1] = new ItemStack[list.size()];
+                for(int k = 0; k < list.size(); k++)
+                {
+                    stacks[1][k] = list.get(k);
+                }
+            }
+            else if(object instanceof ItemStack)
+            {
+                stacks[1][0] = (ItemStack) toolItems[0][i];
+            }
+            else
+            {
+                throw new IllegalArgumentException("only blocks or items are allowed");
+            }
+            for(int j = 0; j < toolItems.length - 1; ++j)
+            {
+                registerShaped(r, "", toolPatterns[j], new ItemStack((Item) toolItems[j + 1][i]), chars, stacks);
+            }
+        }
+    }
+
+    private static void addIngotRecipes(IForgeRegistry<IRecipe> r, Object[][] ingotItems)
+    {
+        String[] blockPattern = new String[] {"###", "###", "###"};
+        String[] ingotPattern = new String[] {"#"};
+        char[] chars = new char[] {'#'};
+        ItemStack[][] stacks = new ItemStack[][] {{ItemStack.EMPTY}};
+        
+        for(Object[] aobject : ingotItems)
+        {
+            try
+            {
+                Item block = (Item) aobject[0];
+                ItemStack parts = (ItemStack) aobject[1];
+                ItemStack ingot = parts.copy();
+                ingot.setCount(1);
+                stacks[0][0] = ingot;
+                registerShaped(r, "", blockPattern, new ItemStack(block), chars, stacks);
+                stacks[0][0] = new ItemStack(block);
+                registerShaped(r, "", ingotPattern, parts, chars, stacks);
+            }
+            catch(ClassCastException ex)
+            {
+                Block block = (Block) aobject[0];
+                ItemStack parts = (ItemStack) aobject[1];
+                ItemStack ingot = parts.copy();
+                ingot.setCount(1);
+                stacks[0][0] = ingot;
+                registerShaped(r, "", blockPattern, new ItemStack(block), chars, stacks);
+                stacks[0][0] = new ItemStack(block);
+                registerShaped(r, "", ingotPattern, parts, chars, stacks);
+            }
+        }
+    }
+    
+    private static void addNuggetRecipes(FurnaceRecipes fr, Object[][] toolItems, Item[][] armorItems, Item... nuggets)
+    {
+        for(int i = 0; i < nuggets.length; i++)
+        {
+            for(int j = 1; j < toolItems.length; j++)
+            {
+                fr.addSmelting((Item) toolItems[j][i], new ItemStack(nuggets[i]), 0.1f);
+            }
+            for(int j = 1; j < armorItems.length; j++)
+            {
+                fr.addSmelting((Item) armorItems[j][i], new ItemStack(nuggets[i]), 0.1f);
+            }
+        }
+    }
+    
+    private static void addMetalRecipes(IForgeRegistry<IRecipe> r, String group, String[] pattern, Item output, int amount)
+    {
+        char[] chars = new char[] {'X'};
+        ItemStack[][] stacks = new ItemStack[][] {{ItemStack.EMPTY}};
+        
+        for(EnumMetals metal : EnumMetals.values())
+        {
+            stacks[0][0] = new ItemStack(metal.getMetalIngot());       
+            registerShaped(r, group, pattern, new ItemStack(output, amount, metal.getMetadata()), chars, stacks);
+        }
+    }
+    
+    private static void addMetalRecipes(IForgeRegistry<IRecipe> r, String group, String[] patterns, Block output, int amount)
+    {
+        addMetalRecipes(r, group, patterns, Item.getItemFromBlock(output), amount);
+    }
+}

+ 3 - 0
src/main/java/me/km/scheduler/SnuviScheduler.java

@@ -9,7 +9,10 @@ import java.util.concurrent.TimeUnit;
 import me.hammerle.code.ISnuviScheduler;
 import me.hammerle.code.ISnuviScheduler;
 import me.km.api.Module;
 import me.km.api.Module;
 import net.minecraft.util.text.TextFormatting;
 import net.minecraft.util.text.TextFormatting;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
 
 
+@SideOnly(Side.SERVER)
 public class SnuviScheduler extends Module implements ISnuviScheduler
 public class SnuviScheduler extends Module implements ISnuviScheduler
 {
 {
     private boolean checker;
     private boolean checker;

+ 28 - 15
src/main/java/me/km/snuviscript/MinecraftFunctions.java

@@ -230,14 +230,14 @@ public class MinecraftFunctions implements ISnuviLogger
         // -------------------------------------------------------------    
         // -------------------------------------------------------------    
         // Custom-Bibliothek
         // Custom-Bibliothek
         // -------------------------------------------------------------
         // -------------------------------------------------------------
-        parser.registerConsumer("custom.registershapelessrecipe", (args, qd) -> 
+        /*parser.registerConsumer("custom.registershapelessrecipe", (args, qd) -> 
                 registerShapelessRecipe(args));
                 registerShapelessRecipe(args));
         parser.registerConsumer("custom.registershapedrecipe", (args, qd) -> 
         parser.registerConsumer("custom.registershapedrecipe", (args, qd) -> 
                 registerShapedRecipe(args));
                 registerShapedRecipe(args));
         parser.registerConsumer("custom.registerfurnacerecipe", (args, qd) ->
         parser.registerConsumer("custom.registerfurnacerecipe", (args, qd) ->
                 RecipeUtils.registerFurnaceRecipe((ItemStack) args[0], (ItemStack) args[1]));
                 RecipeUtils.registerFurnaceRecipe((ItemStack) args[0], (ItemStack) args[1]));
         parser.registerConsumer("custom.clearrecipes", (args, qd) ->
         parser.registerConsumer("custom.clearrecipes", (args, qd) ->
-                RecipeUtils.clearRecipes());
+                RecipeUtils.clearRecipes());*/
         
         
         
         
         // -------------------------------------------------------------    
         // -------------------------------------------------------------    
@@ -664,9 +664,25 @@ public class MinecraftFunctions implements ISnuviLogger
     {
     {
         if(KajetansMod.debugMode || KajetansMod.scripts.getSnuviParser().printStack)
         if(KajetansMod.debugMode || KajetansMod.scripts.getSnuviParser().printStack)
         {
         {
-            printConsoleException(ex);
+            printConsoleException(ex, null);
         }
         }
         sendToDevsWithSuffix("§cError in '" + ex.getScriptName() + "'");
         sendToDevsWithSuffix("§cError in '" + ex.getScriptName() + "'");
+        printGeneralException(ex);
+    }
+    
+    @Override
+    public void printException(SnuviException ex, Script sc)
+    {
+        if(KajetansMod.debugMode || KajetansMod.scripts.getSnuviParser().printStack)
+        {
+            printConsoleException(ex, sc);
+        }
+        sendToDevsWithSuffix("§cError in '" + sc.getName()+ "'");
+        printGeneralException(ex);
+    }
+    
+    private void printGeneralException(SnuviException ex)
+    {
         if(ex.getCode() != null)
         if(ex.getCode() != null)
         {
         {
             ArrayList<String> list = ex.getWholeCode();
             ArrayList<String> list = ex.getWholeCode();
@@ -707,10 +723,10 @@ public class MinecraftFunctions implements ISnuviLogger
         }
         }
     }
     }
     
     
-    public void printConsoleException(SnuviException ex)
+    public void printConsoleException(SnuviException ex, Script sc)
     {
     {
         Module m = KajetansMod.scripts;
         Module m = KajetansMod.scripts;
-        m.sendWarningToConsole("Error in '" + ex.getScriptName() + "'");
+        m.sendWarningToConsole("Error in '" + (sc == null ? ex.getScriptName() : sc.getName()) + "'");
         if(ex.getCode() != null)
         if(ex.getCode() != null)
         {
         {
             ArrayList<String> list = ex.getWholeCode();
             ArrayList<String> list = ex.getWholeCode();
@@ -971,7 +987,7 @@ public class MinecraftFunctions implements ISnuviLogger
     {
     {
         Location l = ((Location) args[0]);
         Location l = ((Location) args[0]);
         Vec3d v = l.getPos();
         Vec3d v = l.getPos();
-        EffectUtils.playSound((WorldServer) l.getWorld(), SoundEvent.REGISTRY.getObject(new ResourceLocation(args[1].toString())), SoundCategory.MASTER, v.xCoord, v.yCoord, v.zCoord);
+        EffectUtils.playSound((WorldServer) l.getWorld(), SoundEvent.REGISTRY.getObject(new ResourceLocation(args[1].toString())), SoundCategory.MASTER, v.x, v.y, v.z);
     }
     }
     
     
     private static void playSoundPlayer(Object[] args) throws IllegalStringLocationException
     private static void playSoundPlayer(Object[] args) throws IllegalStringLocationException
@@ -1154,12 +1170,9 @@ public class MinecraftFunctions implements ISnuviLogger
         Vec3d l1 = ((Location) args[0]).getPos();
         Vec3d l1 = ((Location) args[0]).getPos();
         Vec3d l2 = ((Location) args[1]).getPos();
         Vec3d l2 = ((Location) args[1]).getPos();
         Vec3d l3 = ((Location) args[2]).getPos();
         Vec3d l3 = ((Location) args[2]).getPos();
-        return l1.xCoord >= Math.min(l2.xCoord, l3.xCoord) &&
+        return l1.x >= Math.min(l2.x, l3.x) && l1.x <= Math.max(l2.x, l3.x) &&
-                l1.xCoord <= Math.max(l2.xCoord, l3.xCoord) &&
+                l1.y >= Math.min(l2.y, l3.y) && l1.y <= Math.max(l2.y, l3.y) &&
-                l1.yCoord >= Math.min(l2.yCoord, l3.yCoord) &&
+                l1.z >= Math.min(l2.z, l3.z) && l1.z <= Math.max(l2.z, l3.z);
-                l1.yCoord <= Math.max(l2.yCoord, l3.yCoord) &&
-                l1.zCoord >= Math.min(l2.zCoord, l3.zCoord) &&
-                l1.zCoord <= Math.max(l2.zCoord, l3.zCoord);
     }
     }
 
 
     private static void addPlot(Object[] args)
     private static void addPlot(Object[] args)
@@ -1184,7 +1197,7 @@ public class MinecraftFunctions implements ISnuviLogger
         {
         {
             return null;
             return null;
         }
         }
-        return ds.getSourceOfDamage();
+        return ds.getImmediateSource();
     }
     }
     
     
     @SuppressWarnings("")
     @SuppressWarnings("")
@@ -1309,7 +1322,7 @@ public class MinecraftFunctions implements ISnuviLogger
     // Custom-Handler
     // Custom-Handler
     // ------------------------------------------------------------------------- 
     // ------------------------------------------------------------------------- 
     
     
-    private static void registerShapelessRecipe(Object[] args)
+    /*private static void registerShapelessRecipe(Object[] args)
     {
     {
         ItemStack[] stacks = new ItemStack[args.length - 1];
         ItemStack[] stacks = new ItemStack[args.length - 1];
         for(int i = 0; i < stacks.length; i++)
         for(int i = 0; i < stacks.length; i++)
@@ -1338,7 +1351,7 @@ public class MinecraftFunctions implements ISnuviLogger
             stacks[i] = (ItemStack) args[i + 1 + counter];
             stacks[i] = (ItemStack) args[i + 1 + counter];
         }
         }
         RecipeUtils.registerShapedRecipe((ItemStack) args[0], s, stacks);
         RecipeUtils.registerShapedRecipe((ItemStack) args[0], s, stacks);
-    }
+    }*/
     
     
     // -------------------------------------------------------------------------    
     // -------------------------------------------------------------------------    
     // Gruppen-Handler
     // Gruppen-Handler

+ 3 - 3
src/main/java/me/km/snuviscript/ScriptEvents.java

@@ -650,7 +650,7 @@ public class ScriptEvents extends ModuleListener
     {
     {
         handleEvent(e.getPlayer(), "player_toss", (qd) -> 
         handleEvent(e.getPlayer(), "player_toss", (qd) -> 
         {
         {
-            ScriptVars.setItemVars(qd, e.getEntityItem().getEntityItem());   
+            ScriptVars.setItemVars(qd, e.getEntityItem().getItem());   
             qd.setVar("cancel", e.isCanceled()); 
             qd.setVar("cancel", e.isCanceled()); 
         }, (qd) -> 
         }, (qd) -> 
         {
         {
@@ -663,7 +663,7 @@ public class ScriptEvents extends ModuleListener
     {
     {
         handleEvent(e.getEntityPlayer(), "player_pickup", (qd) -> 
         handleEvent(e.getEntityPlayer(), "player_pickup", (qd) -> 
         {
         {
-            ScriptVars.setItemVars(qd, e.getItem().getEntityItem());  
+            ScriptVars.setItemVars(qd, e.getItem().getItem());  
             qd.setVar("cancel", e.isCanceled()); 
             qd.setVar("cancel", e.isCanceled()); 
         }, (qd) -> 
         }, (qd) -> 
         {
         {
@@ -800,7 +800,7 @@ public class ScriptEvents extends ModuleListener
             }
             }
             data.setVar("event", "villager_give");
             data.setVar("event", "villager_give");
             ScriptVars.setPlayerVars(data, p); 
             ScriptVars.setPlayerVars(data, p); 
-            ScriptVars.setItemVars(data, itemEnt.getEntityItem());
+            ScriptVars.setItemVars(data, itemEnt.getItem());
             data.setVar("villager_loc", new Location(v));                    
             data.setVar("villager_loc", new Location(v));                    
             data.setVar("villager_prof", v.getProfessionForge().getRegistryName());
             data.setVar("villager_prof", v.getProfessionForge().getRegistryName());
             data.setVar("cancel", e.isCanceled()); 
             data.setVar("cancel", e.isCanceled()); 

+ 1 - 1
src/main/java/me/km/utils/ItemStackUtils.java

@@ -181,7 +181,7 @@ public class ItemStackUtils
         }
         }
         catch(NBTException ex)
         catch(NBTException ex)
         {
         {
-            throw new IllegalItemStackStringException(s);
+            throw new IllegalItemStackStringException(ex.getMessage());
         }
         }
     }
     }
     
     

+ 4 - 4
src/main/java/me/km/utils/RecipeUtils.java

@@ -1,15 +1,15 @@
 package me.km.utils;
 package me.km.utils;
 
 
-import java.util.ArrayList;
+/*import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.crafting.CraftingManager;
 import net.minecraft.item.crafting.CraftingManager;
 import net.minecraft.item.crafting.FurnaceRecipes;
 import net.minecraft.item.crafting.FurnaceRecipes;
-import net.minecraft.item.crafting.IRecipe;
+import net.minecraft.item.crafting.IRecipe;*/
 
 
 public class RecipeUtils 
 public class RecipeUtils 
 {
 {
-    private static final ArrayList<IRecipe> RECIPES = new ArrayList<>();
+    /*private static final ArrayList<IRecipe> RECIPES = new ArrayList<>();
     
     
     private static void pushLastRecipe()
     private static void pushLastRecipe()
     {
     {
@@ -46,5 +46,5 @@ public class RecipeUtils
     {
     {
         CraftingManager.getInstance().getRecipeList().removeAll(RECIPES);
         CraftingManager.getInstance().getRecipeList().removeAll(RECIPES);
         RECIPES.clear();
         RECIPES.clear();
-    }
+    }*/
 }
 }