diff --git a/src/main/java/net/minecraft/client/render/RenderEngine.java b/src/main/java/net/minecraft/client/render/RenderEngine.java
index 631ef94c9..5deba908b 100644
--- a/src/main/java/net/minecraft/client/render/RenderEngine.java
+++ b/src/main/java/net/minecraft/client/render/RenderEngine.java
@@ -83,9 +83,9 @@ public class RenderEngine {
 
 		dynamicTextures.clear();
 
-		TexturePack tp;
+		if (mc.gameSettings.animations.value != 0) {
+			TexturePack tp;
 
-		if(mc.gameSettings.animations.value != 0) {
 			boolean useCustomAnimations = mc.gameSettings.animations.value == 2;
 
 			try {
@@ -134,11 +134,11 @@ public class RenderEngine {
 				String[] fireflycolors = new String[] {"blue", "orange", "green", "red"};
 				for(int i=0; i < 4; i++) {
 					String color = fireflycolors[i];
-					
+
 					String animationPath = "/anim/custom_firefly_jar_" + color + ".png";
 					String texturePath = "/assets/minecraft/textures/block/lantern_firefly_" + color + ".png";
 					String textureName = "minecraft:block/lantern_firefly_" + color;
-					
+
 					tp = mc.texturePackList.getHighestPriorityTexturePackWithFile(animationPath);
 					if(useCustomAnimations && tp != null) {
 						dynamicTextures.add(new DynamicTextureCustom(mc, tp, animationPath, textureName, false));
@@ -158,12 +158,9 @@ public class RenderEngine {
 
 			dynamicTextures.add(new DynamicTextureTrommel(mc, TextureRegistry.getTexture("minecraft:block/trommel_active_front"), true));
 			dynamicTextures.add(new DynamicTextureTrommel(mc, TextureRegistry.getTexture("minecraft:block/trommel_active_back"), false));
-		}else {
-			updateDynamicTexture(new DynamicTextureTrommel(mc, TextureRegistry.getTexture("minecraft:block/trommel_active_front"), true));
-			updateDynamicTexture(new DynamicTextureTrommel(mc, TextureRegistry.getTexture("minecraft:block/trommel_active_back"), false));
 		}
 
-		dynamicTextures.add(new DynamicTextureClock(mc));
+        dynamicTextures.add(new DynamicTextureClock(mc));
 		dynamicTextures.add(new DynamicTextureCalendar(mc));
 		dynamicTextures.add(new DynamicTextureCompass(mc));
 	}
@@ -557,7 +554,9 @@ public class RenderEngine {
 	public void updateDynamicTextures() {
 		try {
 			for(DynamicTexture dynamicTexture : dynamicTextures) {
-				updateDynamicTexture(dynamicTexture);
+				if (dynamicTexture.runUpdates()) {
+					updateDynamicTexture(dynamicTexture);
+				}
 			}
 		} catch (Exception e){
 			new RuntimeException("Exception while updating dynamic textures. Skipping!", e).printStackTrace();
@@ -673,9 +672,11 @@ public class RenderEngine {
 			stitcher.generateAtlas();
 		}
 
-		for(int i=0; i < dynamicTextures.size(); i++) {
+		for (int i=0; i < dynamicTextures.size(); i++) {
 			dynamicTextures.get(i).postInit();
 		}
+
+
 		
 		textureNameToImageMap.forEach((i, img) -> setupTexture(img, i));
 		textureMap.forEach((name, id) -> setupTexture(name));
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java
index 3c28efe3e..ed38f663a 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java
@@ -1,15 +1,21 @@
 package net.minecraft.client.render.dynamictexture;
 
+import net.minecraft.client.Minecraft;
 import net.minecraft.client.render.stitcher.IconCoordinate;
 
 public abstract class DynamicTexture {
 
+	public Minecraft mc = Minecraft.getMinecraft(this);
 	public IconCoordinate texture;
 	public byte[] imageData;
 	
 	public abstract void postInit();
 	
 	public abstract void update();
+
+	public boolean runUpdates() {
+		return mc.gameSettings.animations.value != 0;
+	}
 	
 	public void setTexture(IconCoordinate texture) {
 		this.texture = texture;
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureAbstractClock.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureAbstractClock.java
index 446aad987..c9f4618d1 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureAbstractClock.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureAbstractClock.java
@@ -28,4 +28,7 @@ public abstract class DynamicTextureAbstractClock extends DynamicTextureRotating
 			}
 		}
 	}
+	public boolean runUpdates() {
+		return true;
+	}
 }
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCompass.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCompass.java
index b79b8a49c..9603c1257 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCompass.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCompass.java
@@ -39,6 +39,10 @@ public class DynamicTextureCompass extends DynamicTexture {
 		
 		scaleFactor = texture.width / 16.0;
 	}
+	@Override
+	public boolean runUpdates() {
+		return true;
+	}
 
 	@Override
 	public void update() {
diff --git a/src/main/java/net/minecraft/client/render/stitcher/TextureRegistry.java b/src/main/java/net/minecraft/client/render/stitcher/TextureRegistry.java
index f8c99e0a9..9da6f97be 100644
--- a/src/main/java/net/minecraft/client/render/stitcher/TextureRegistry.java
+++ b/src/main/java/net/minecraft/client/render/stitcher/TextureRegistry.java
@@ -1,11 +1,12 @@
 package net.minecraft.client.render.stitcher;
 
-import net.minecraft.client.render.texturepack.TexturePack;
 import net.minecraft.core.util.collection.NamespaceID;
 import org.jetbrains.annotations.NotNull;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.nio.file.FileSystem;
 import java.nio.file.FileSystems;
 import java.nio.file.Files;
@@ -14,9 +15,12 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
 import java.util.stream.Stream;
 
 public class TextureRegistry {
@@ -68,7 +72,7 @@ public class TextureRegistry {
         // Initialize all textures in case they aren't normally done before the textures are first refreshed
         try {
             for (AtlasStitcher stitcher : stitcherMap.values()){
-                initializeAllFiles("minecraft", stitcher);
+                initializeAllFiles("minecraft", stitcher, stitcher != artAtlas);
             }
         } catch (Exception e) {
             new RuntimeException(e).printStackTrace();
@@ -76,64 +80,61 @@ public class TextureRegistry {
         }
     }
 
-    protected static void initializeAllFiles(String namespace, AtlasStitcher atlas) {
-        String path = String.format("%s/%s/%s/", AtlasStitcher.rootAssetPath, namespace, atlas.directoryPath);
-        String[] files = getFilesAndSubFiles(path);
-        for (String s : files){
-            String name = s.replaceFirst(path, "");
-            if (name.endsWith(".png")){
-                atlas.getTexture(new NamespaceID(namespace, name.replace(".png", "")));
-            }
+    public static void initializeAllFiles(String namespace, AtlasStitcher atlas, boolean subDirectories) throws URISyntaxException, IOException, NullPointerException {
+        String path = String.format("%s/%s/%s", AtlasStitcher.rootAssetPath, namespace, atlas.directoryPath);
+
+        String[] files = getFilesAndSubFiles(path, subDirectories);
+
+//        System.out.println("Printing " + path);
+        for (String s : files) {
+//            System.out.println(s);
+            atlas.getTexture(new NamespaceID(namespace, s.replace(".png", "")));
         }
     }
-    public static String[] getFilesAndSubFiles(String directory) {
+
+    public static String[] getFilesAndSubFiles(String directory, boolean searchSubDirectories) throws IOException, URISyntaxException {
         List<String> paths = new ArrayList<>();
 
         if (!directory.endsWith("/")) directory = directory + "/";
 
-        try
-        {
-            URI uri = TexturePack.class.getResource(directory).toURI();
-            Path myPath;
-            FileSystem fileSystem = null;
-            if (uri.getScheme().equals("jar"))
-            {
-                try
-                {
-                    fileSystem = FileSystems.getFileSystem(uri);
-                }
-                catch (Exception e)
-                {
-                    fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap());
+        String[] dirs = directory.split("/");
+        String currentDir = dirs[dirs.length - 1];
+
+        List<String> subDirectories = new ArrayList<>();
+
+        URI uri = TextureRegistry.class.getResource(directory).toURI();
+        Path myPath;
+        FileSystem fileSystem = null;
+        if (uri.getScheme().equals("jar")) {
+            fileSystem = FileSystems.newFileSystem(uri, Collections.emptyMap());
+            myPath = fileSystem.getPath(directory);
+        } else {
+            myPath = Paths.get(uri);
+        }
+        Stream<Path> walk = Files.walk(myPath, 1);
+        for (Iterator<Path> it = walk.iterator(); it.hasNext(); ) {
+            Path file = it.next();
+            String name = file.getFileName().toString();
+            if (name.contains(".")) {
+                if (name.endsWith(".png")) {
+                    paths.add(name);
                 }
-                myPath = fileSystem.getPath(directory);
-            }
-            else
-            {
-                myPath = Paths.get(uri);
+            } else if (searchSubDirectories && !name.equals(currentDir)) {
+                subDirectories.add(directory + name);
             }
-            try (Stream<Path> walk = Files.walk(myPath, 1))
-            {
-                Iterator<Path> it = walk.iterator();
-                it.next();
-                while(it.hasNext())
-                {
-                    File f = it.next().toFile();
-                    if (f.isDirectory()) {
-                        paths.addAll(Arrays.asList(getFilesAndSubFiles(directory + f.getName())));
-                    } else {
-                        paths.add(directory + f.getName());
-                    }
+        }
+        walk.close();
+        if (fileSystem != null) {
+            fileSystem.close();
+        }
+
+        if (searchSubDirectories) {
+            for (String dir : subDirectories) {
+                String[] files = getFilesAndSubFiles(dir, searchSubDirectories);
+                for (String f : files) {
+                    paths.add(dir.replaceFirst(directory, "") + "/" + f);
                 }
             }
-            if (fileSystem != null)
-            {
-                fileSystem.close();
-            }
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
         }
 
         return paths.toArray(new String[0]);
diff --git a/src/main/resources/assets/minecraft/textures/block/fire.png b/src/main/resources/assets/minecraft/textures/block/fire.png
index 65e9ff1fb..0036e5e11 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/fire.png and b/src/main/resources/assets/minecraft/textures/block/fire.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/portal_nether.png b/src/main/resources/assets/minecraft/textures/block/portal_nether.png
index 8c1cf16c1..def1b2be2 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/portal_nether.png and b/src/main/resources/assets/minecraft/textures/block/portal_nether.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/trommel_active_back.png b/src/main/resources/assets/minecraft/textures/block/trommel_active_back.png
index b3bb6d97c..13779e288 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/trommel_active_back.png and b/src/main/resources/assets/minecraft/textures/block/trommel_active_back.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/trommel_active_front.png b/src/main/resources/assets/minecraft/textures/block/trommel_active_front.png
index 3a48d8fab..5f7d288d0 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/trommel_active_front.png and b/src/main/resources/assets/minecraft/textures/block/trommel_active_front.png differ
