diff --git a/src/main/java/cz/jzitnik/Main.java b/src/main/java/cz/jzitnik/Main.java
index 26c78c7..4e38ecd 100644
--- a/src/main/java/cz/jzitnik/Main.java
+++ b/src/main/java/cz/jzitnik/Main.java
@@ -42,7 +42,12 @@ public class Main {
             inputHandlerThread.start();
 
             while (isRunning[0]) {
-                entityLogicProvider.update(game);
+                try {
+                    entityLogicProvider.update(game);
+                } catch (Exception ignored) {
+                    // Yeah, yeah I know. Deal with it
+                }
+
                 if (game.getWindow() == Window.WORLD) {
                     screenRenderer.render(game);
                 }
diff --git a/src/main/java/cz/jzitnik/game/SpriteLoader.java b/src/main/java/cz/jzitnik/game/SpriteLoader.java
index 9ab9639..735b730 100644
--- a/src/main/java/cz/jzitnik/game/SpriteLoader.java
+++ b/src/main/java/cz/jzitnik/game/SpriteLoader.java
@@ -18,6 +18,7 @@ public class SpriteLoader {
         BREAKING,
         COBBLESTONE,
         FURNACE,
+        WOOL,
 
         CHEST,
         CRAFTING_TABLE,
@@ -44,6 +45,7 @@ public class SpriteLoader {
         ITEM_STONE,
         ITEM_FURNACE,
         ITEM_OAK_DOOR,
+        ITEM_WOOL,
 
         ITEM_CRAFTING_TABLE,
         ITEM_CHEST,
@@ -80,6 +82,7 @@ public class SpriteLoader {
         SPRITES_MAP.put(SPRITES.FURNACE, new Furnace());
         SPRITES_MAP.put(SPRITES.COAL_ORE, new SimpleSprite("coal_ore.ans"));
         SPRITES_MAP.put(SPRITES.OAK_DOOR, new OakDoor());
+        SPRITES_MAP.put(SPRITES.WOOL, new Wool());
 
         SPRITES_MAP.put(SPRITES.WOODEN_PICKAXE, new SimpleSprite("items/wooden_pickaxe.ans"));
         SPRITES_MAP.put(SPRITES.STONE_PICKAXE, new SimpleSprite("items/stone_pickaxe.ans"));
@@ -99,6 +102,7 @@ public class SpriteLoader {
         SPRITES_MAP.put(SPRITES.ITEM_OAK_DOOR, new SimpleSprite("oak_door/items/oak_door.ans"));
         SPRITES_MAP.put(SPRITES.ITEM_PORKCHOP, new SimpleSprite("items/porkchop.ans"));
         SPRITES_MAP.put(SPRITES.ITEM_COOKED_PORKCHOP, new SimpleSprite("items/cooked_porkchop.ans"));
+        SPRITES_MAP.put(SPRITES.ITEM_WOOL, new WoolItem());
 
         SPRITES_MAP.put(SPRITES.ITEM_MUTTON, new SimpleSprite("items/mutton.ans"));
         SPRITES_MAP.put(SPRITES.ITEM_COOKED_MUTTON, new SimpleSprite("items/cooked_mutton.ans"));
@@ -108,7 +112,6 @@ public class SpriteLoader {
 
         SPRITES_MAP.put(SPRITES.PIG, new Pig());
         SPRITES_MAP.put(SPRITES.SHEEP, new Sheep());
-
     }
 
     public static SpriteList<SPRITES> load() {
diff --git a/src/main/java/cz/jzitnik/game/blocks/Furnace.java b/src/main/java/cz/jzitnik/game/blocks/Furnace.java
index 8d941be..3739fd2 100644
--- a/src/main/java/cz/jzitnik/game/blocks/Furnace.java
+++ b/src/main/java/cz/jzitnik/game/blocks/Furnace.java
@@ -44,7 +44,9 @@ public class Furnace implements RightClickHandler {
         List<String> sprites = game.getInventory().getSprites(items, spriteList, inventory.getSelectedItemInv() - 50);
 
         String[] outputSprite = outputItem == null ? null : SpriteCombiner.combineTwoSprites(
-                spriteList.getSprite(outputItem.getItem().getFirst().getSprite()).getSprite(),
+                outputItem.getItem().getFirst().getSpriteState().isPresent() ?
+                        spriteList.getSprite(outputItem.getItem().getFirst().getSprite()).getSprite(outputItem.getItem().getFirst().getSpriteState().get()) :
+                        spriteList.getSprite(outputItem.getItem().getFirst().getSprite()).getSprite() ,
                 Numbers.getNumberSprite(outputItem.getAmount())
         ).split("\n");
 
diff --git a/src/main/java/cz/jzitnik/game/entities/Block.java b/src/main/java/cz/jzitnik/game/entities/Block.java
index b4cf1d3..b8a2f3b 100644
--- a/src/main/java/cz/jzitnik/game/entities/Block.java
+++ b/src/main/java/cz/jzitnik/game/entities/Block.java
@@ -40,6 +40,12 @@ public class Block {
         this.isMineable = isMineable;
     }
 
+    public Block(String blockId, SpriteLoader.SPRITES sprite, int hardness) {
+        this.blockId = blockId;
+        this.sprite = sprite;
+        this.hardness = hardness;
+    }
+
     public Block(String blockId, SpriteLoader.SPRITES sprite, int hardness, ItemType tool, List<ToolVariant> toolVariants) {
         this.blockId = blockId;
         this.sprite = sprite;
diff --git a/src/main/java/cz/jzitnik/game/entities/items/Item.java b/src/main/java/cz/jzitnik/game/entities/items/Item.java
index b74cc8f..2c6ad18 100644
--- a/src/main/java/cz/jzitnik/game/entities/items/Item.java
+++ b/src/main/java/cz/jzitnik/game/entities/items/Item.java
@@ -16,6 +16,7 @@ public class Item {
     private ItemType type;
     private Optional<ToolVariant> toolVariant = Optional.empty();
     private SpriteLoader.SPRITES sprite;
+    private Optional<Enum> spriteState = Optional.empty();
     private boolean stackable = true;
     private int durability;
     private double miningDecrease = 0;
@@ -71,4 +72,8 @@ public class Item {
 
         return name.equals(item.name);
     }
+
+    public void setSpriteState(Enum spriteState) {
+        this.spriteState = Optional.of(spriteState);
+    }
 }
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/BlackWoolBlock.java b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/BlackWoolBlock.java
new file mode 100644
index 0000000..65c8bef
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/BlackWoolBlock.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.game.entities.items.registry.blocks;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.BlockRegistry;
+import cz.jzitnik.game.entities.Block;
+import cz.jzitnik.game.sprites.Wool;
+
+@BlockRegistry("black_wool")
+public class BlackWoolBlock extends Block {
+    public BlackWoolBlock() {
+        super("black_wool", SpriteLoader.SPRITES.WOOL, 3);
+        setSpriteState(Wool.WoolState.BLACK);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/BrownWoolBlock.java b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/BrownWoolBlock.java
new file mode 100644
index 0000000..8fb7c1e
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/BrownWoolBlock.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.game.entities.items.registry.blocks;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.BlockRegistry;
+import cz.jzitnik.game.entities.Block;
+import cz.jzitnik.game.sprites.Wool;
+
+@BlockRegistry("brown_wool")
+public class BrownWoolBlock extends Block {
+    public BrownWoolBlock() {
+        super("brown_wool", SpriteLoader.SPRITES.WOOL, 3);
+        setSpriteState(Wool.WoolState.BROWN);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/GrayWoolBlock.java b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/GrayWoolBlock.java
new file mode 100644
index 0000000..d97991f
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/GrayWoolBlock.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.game.entities.items.registry.blocks;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.BlockRegistry;
+import cz.jzitnik.game.entities.Block;
+import cz.jzitnik.game.sprites.Wool;
+
+@BlockRegistry("gray_wool")
+public class GrayWoolBlock extends Block {
+    public GrayWoolBlock() {
+        super("gray_wool", SpriteLoader.SPRITES.WOOL, 3);
+        setSpriteState(Wool.WoolState.GRAY);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/LightGrayWoolBlock.java b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/LightGrayWoolBlock.java
new file mode 100644
index 0000000..2f51901
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/LightGrayWoolBlock.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.game.entities.items.registry.blocks;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.BlockRegistry;
+import cz.jzitnik.game.entities.Block;
+import cz.jzitnik.game.sprites.Wool;
+
+@BlockRegistry("light_gray_wool")
+public class LightGrayWoolBlock extends Block {
+    public LightGrayWoolBlock() {
+        super("light_gray_wool", SpriteLoader.SPRITES.WOOL, 3);
+        setSpriteState(Wool.WoolState.LIGHT_GRAY);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/PinkWoolBlock.java b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/PinkWoolBlock.java
new file mode 100644
index 0000000..a09c888
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/PinkWoolBlock.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.game.entities.items.registry.blocks;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.BlockRegistry;
+import cz.jzitnik.game.entities.Block;
+import cz.jzitnik.game.sprites.Wool;
+
+@BlockRegistry("pink_wool")
+public class PinkWoolBlock extends Block {
+    public PinkWoolBlock() {
+        super("pink_wool", SpriteLoader.SPRITES.WOOL, 3);
+        setSpriteState(Wool.WoolState.PINK);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/WhiteWoolBlock.java b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/WhiteWoolBlock.java
new file mode 100644
index 0000000..ecef3dd
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/blocks/WhiteWoolBlock.java
@@ -0,0 +1,14 @@
+package cz.jzitnik.game.entities.items.registry.blocks;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.BlockRegistry;
+import cz.jzitnik.game.entities.Block;
+import cz.jzitnik.game.sprites.Wool;
+
+@BlockRegistry("white_wool")
+public class WhiteWoolBlock extends Block {
+    public WhiteWoolBlock() {
+        super("white_wool", SpriteLoader.SPRITES.WOOL, 3);
+        setSpriteState(Wool.WoolState.WHITE);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/BlackWoolItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/BlackWoolItem.java
new file mode 100644
index 0000000..8f11e81
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/BlackWoolItem.java
@@ -0,0 +1,15 @@
+package cz.jzitnik.game.entities.items.registry.items;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.ItemRegistry;
+import cz.jzitnik.game.entities.items.Item;
+import cz.jzitnik.game.entities.items.ItemType;
+import cz.jzitnik.game.sprites.WoolItem;
+
+@ItemRegistry("black_wool")
+public class BlackWoolItem extends Item {
+    public BlackWoolItem() {
+        super("black_wool", "Black wool", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_WOOL);
+        setSpriteState(WoolItem.WoolItemState.BLACK);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/BrownWoolItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/BrownWoolItem.java
new file mode 100644
index 0000000..663237e
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/BrownWoolItem.java
@@ -0,0 +1,15 @@
+package cz.jzitnik.game.entities.items.registry.items;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.ItemRegistry;
+import cz.jzitnik.game.entities.items.Item;
+import cz.jzitnik.game.entities.items.ItemType;
+import cz.jzitnik.game.sprites.WoolItem;
+
+@ItemRegistry("brown_wool")
+public class BrownWoolItem extends Item {
+    public BrownWoolItem() {
+        super("brown_wool", "Brown wool", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_WOOL);
+        setSpriteState(WoolItem.WoolItemState.BROWN);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/GrayWoolItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/GrayWoolItem.java
new file mode 100644
index 0000000..bf0cdaa
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/GrayWoolItem.java
@@ -0,0 +1,15 @@
+package cz.jzitnik.game.entities.items.registry.items;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.ItemRegistry;
+import cz.jzitnik.game.entities.items.Item;
+import cz.jzitnik.game.entities.items.ItemType;
+import cz.jzitnik.game.sprites.WoolItem;
+
+@ItemRegistry("gray_wool")
+public class GrayWoolItem extends Item {
+    public GrayWoolItem() {
+        super("gray_wool", "Gray wool", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_WOOL);
+        setSpriteState(WoolItem.WoolItemState.GRAY);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/LightGrayWoolItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/LightGrayWoolItem.java
new file mode 100644
index 0000000..c5a12df
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/LightGrayWoolItem.java
@@ -0,0 +1,15 @@
+package cz.jzitnik.game.entities.items.registry.items;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.ItemRegistry;
+import cz.jzitnik.game.entities.items.Item;
+import cz.jzitnik.game.entities.items.ItemType;
+import cz.jzitnik.game.sprites.WoolItem;
+
+@ItemRegistry("light_gray_wool")
+public class LightGrayWoolItem extends Item {
+    public LightGrayWoolItem() {
+        super("light_gray_wool", "Light gray wool", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_WOOL);
+        setSpriteState(WoolItem.WoolItemState.LIGHT_GRAY);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/PinkWoolItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/PinkWoolItem.java
new file mode 100644
index 0000000..273e67f
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/PinkWoolItem.java
@@ -0,0 +1,15 @@
+package cz.jzitnik.game.entities.items.registry.items;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.ItemRegistry;
+import cz.jzitnik.game.entities.items.Item;
+import cz.jzitnik.game.entities.items.ItemType;
+import cz.jzitnik.game.sprites.WoolItem;
+
+@ItemRegistry("pink_wool")
+public class PinkWoolItem extends Item {
+    public PinkWoolItem() {
+        super("pink_wool", "Pink wool", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_WOOL);
+        setSpriteState(WoolItem.WoolItemState.PINK);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/items/WhiteWoolItem.java b/src/main/java/cz/jzitnik/game/entities/items/registry/items/WhiteWoolItem.java
new file mode 100644
index 0000000..ca0c150
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/items/WhiteWoolItem.java
@@ -0,0 +1,15 @@
+package cz.jzitnik.game.entities.items.registry.items;
+
+import cz.jzitnik.game.SpriteLoader;
+import cz.jzitnik.game.annotations.ItemRegistry;
+import cz.jzitnik.game.entities.items.Item;
+import cz.jzitnik.game.entities.items.ItemType;
+import cz.jzitnik.game.sprites.WoolItem;
+
+@ItemRegistry("white_wool")
+public class WhiteWoolItem extends Item {
+    public WhiteWoolItem() {
+        super("white_wool", "White wool", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_WOOL);
+        setSpriteState(WoolItem.WoolItemState.WHITE);
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/entities/items/registry/mobs/Sheep.java b/src/main/java/cz/jzitnik/game/entities/items/registry/mobs/Sheep.java
index c19b38b..72e6fc3 100644
--- a/src/main/java/cz/jzitnik/game/entities/items/registry/mobs/Sheep.java
+++ b/src/main/java/cz/jzitnik/game/entities/items/registry/mobs/Sheep.java
@@ -4,46 +4,56 @@ import cz.jzitnik.game.SpriteLoader;
 import cz.jzitnik.game.annotations.EntityRegistry;
 import cz.jzitnik.game.entities.Block;
 import cz.jzitnik.game.mobs.services.sheep.SheepData;
+import cz.jzitnik.game.mobs.services.sheep.SheepVariant;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
 
 import java.util.Random;
 
 import static cz.jzitnik.game.sprites.Sheep.SheepState.*;
 
-
 @EntityRegistry("sheep")
 public class Sheep extends Block {
-    private cz.jzitnik.game.sprites.Sheep.SheepState getSheep() {
+    @Getter
+    @AllArgsConstructor
+    private static class SheepDTO {
+        private cz.jzitnik.game.sprites.Sheep.SheepState state;
+        private SheepVariant variant;
+    }
+
+    private SheepDTO getSheep() {
         Random random = new Random();
         int num = random.nextInt(100);
 
         if (num < 1) {
-            return PINK_RIGHT;
+            return new SheepDTO(PINK_RIGHT, SheepVariant.PINK);
         }
 
         if (num < 4) {
-            return BROWN_RIGHT;
+            return new SheepDTO(BROWN_RIGHT, SheepVariant.BROWN);
         }
 
         if (num < 15) {
             int num1 = random.nextInt(3);
             return switch (num1) {
-                case 0 -> LIGHT_GRAY_RIGHT;
-                case 1 -> GRAY_RIGHT;
-                case 2 -> BLACK_RIGHT;
+                case 0 -> new SheepDTO(LIGHT_GRAY_RIGHT, SheepVariant.LIGHT_GRAY);
+                case 1 -> new SheepDTO(GRAY_RIGHT, SheepVariant.GRAY);
+                case 2 -> new SheepDTO(BLACK_RIGHT, SheepVariant.BLACK);
                 default -> throw new IllegalStateException("Unexpected value: " + num1);
             };
         }
 
-        return WHITE_RIGHT;
+        return new SheepDTO(WHITE_RIGHT, SheepVariant.WHITE);
     }
 
     public Sheep() {
         super("sheep", SpriteLoader.SPRITES.SHEEP);
+        var dto = getSheep();
         setMob(true);
         setGhost(true);
-        setSpriteState(getSheep());
+        setSpriteState(dto.getState());
         setMineable(false);
-        setData(new SheepData());
+        setData(new SheepData(dto.getVariant()));
         setHp(8);
     }
 }
diff --git a/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepData.java b/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepData.java
index 71e089e..ab3e4bf 100644
--- a/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepData.java
+++ b/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepData.java
@@ -9,4 +9,9 @@ public class SheepData {
     private int lastDirection = 1; // 1 = right, -1 = left
     private int movementCooldown = 0;
     private int jumpAttempts = 0;
+    private SheepVariant variant;
+
+    public SheepData(SheepVariant variant) {
+        this.variant = variant;
+    }
 }
diff --git a/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepLogic.java b/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepLogic.java
index e2466c0..ae13728 100644
--- a/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepLogic.java
+++ b/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepLogic.java
@@ -48,33 +48,7 @@ public class SheepLogic implements EntityLogicInterface, EntitySpawnInterface, E
         }
         sheepData.setLastDirection(direction);
 
-        boolean isHurt = sheep.getSpriteState().get().name().endsWith("_HURT");
-        Sheep.SheepState newState = switch (sheep.getSpriteState().get()) {
-            case WHITE_LEFT, WHITE_RIGHT, WHITE_LEFT_HURT, WHITE_RIGHT_HURT ->
-                    isHurt ? (direction == 1 ? WHITE_RIGHT_HURT : WHITE_LEFT_HURT)
-                            : (direction == 1 ? WHITE_RIGHT : WHITE_LEFT);
-
-            case LIGHT_GRAY_LEFT, LIGHT_GRAY_RIGHT, LIGHT_GRAY_LEFT_HURT, LIGHT_GRAY_RIGHT_HURT ->
-                    isHurt ? (direction == 1 ? LIGHT_GRAY_RIGHT_HURT : LIGHT_GRAY_LEFT_HURT)
-                            : (direction == 1 ? LIGHT_GRAY_RIGHT : LIGHT_GRAY_LEFT);
-
-            case GRAY_LEFT, GRAY_RIGHT, GRAY_LEFT_HURT, GRAY_RIGHT_HURT ->
-                    isHurt ? (direction == 1 ? GRAY_RIGHT_HURT : GRAY_LEFT_HURT)
-                            : (direction == 1 ? GRAY_RIGHT : GRAY_LEFT);
-
-            case BLACK_LEFT, BLACK_RIGHT, BLACK_LEFT_HURT, BLACK_RIGHT_HURT ->
-                    isHurt ? (direction == 1 ? BLACK_RIGHT_HURT : BLACK_LEFT_HURT)
-                            : (direction == 1 ? BLACK_RIGHT : BLACK_LEFT);
-
-            case BROWN_LEFT, BROWN_RIGHT, BROWN_LEFT_HURT, BROWN_RIGHT_HURT ->
-                    isHurt ? (direction == 1 ? BROWN_RIGHT_HURT : BROWN_LEFT_HURT)
-                            : (direction == 1 ? BROWN_RIGHT : BROWN_LEFT);
-
-            case PINK_LEFT, PINK_RIGHT, PINK_LEFT_HURT, PINK_RIGHT_HURT ->
-                    isHurt ? (direction == 1 ? PINK_RIGHT_HURT : PINK_LEFT_HURT)
-                            : (direction == 1 ? PINK_RIGHT : PINK_LEFT);
-            default -> throw new IllegalStateException("Unexpected value: " + sheep.getSpriteState().get());
-        };
+        Sheep.SheepState newState = getSheepState(sheep, sheepData, direction);
         sheep.setSpriteState(newState);
 
 
@@ -118,6 +92,36 @@ public class SheepLogic implements EntityLogicInterface, EntitySpawnInterface, E
         sheepData.setMovementCooldown(random.nextInt(3) + 1); // 1-3 iterations cooldown
     }
 
+    private static Sheep.SheepState getSheepState(Block sheep, SheepData sheepData, int direction) {
+        boolean isHurt = sheep.getSpriteState().get().name().endsWith("_HURT");
+        Sheep.SheepState newState = switch (sheepData.getVariant()) {
+            case WHITE ->
+                    isHurt ? (direction == 1 ? WHITE_RIGHT_HURT : WHITE_LEFT_HURT)
+                            : (direction == 1 ? WHITE_RIGHT : WHITE_LEFT);
+
+            case LIGHT_GRAY ->
+                    isHurt ? (direction == 1 ? LIGHT_GRAY_RIGHT_HURT : LIGHT_GRAY_LEFT_HURT)
+                            : (direction == 1 ? LIGHT_GRAY_RIGHT : LIGHT_GRAY_LEFT);
+
+            case GRAY ->
+                    isHurt ? (direction == 1 ? GRAY_RIGHT_HURT : GRAY_LEFT_HURT)
+                            : (direction == 1 ? GRAY_RIGHT : GRAY_LEFT);
+
+            case BLACK ->
+                    isHurt ? (direction == 1 ? BLACK_RIGHT_HURT : BLACK_LEFT_HURT)
+                            : (direction == 1 ? BLACK_RIGHT : BLACK_LEFT);
+
+            case BROWN ->
+                    isHurt ? (direction == 1 ? BROWN_RIGHT_HURT : BROWN_LEFT_HURT)
+                            : (direction == 1 ? BROWN_RIGHT : BROWN_LEFT);
+
+            case PINK ->
+                    isHurt ? (direction == 1 ? PINK_RIGHT_HURT : PINK_LEFT_HURT)
+                            : (direction == 1 ? PINK_RIGHT : PINK_LEFT);
+        };
+        return newState;
+    }
+
     @Override
     public void spawn(int playerX, int playerY, Game game, Terminal terminal) {
         // Cordinates where player can see
@@ -246,7 +250,19 @@ public class SheepLogic implements EntityLogicInterface, EntitySpawnInterface, E
     @Override
     public void killed(Game game, Block mob) {
         int amount = random.nextInt(3) + 1;
-        InventoryItem inventoryItem = new InventoryItem(amount, ItemBlockSupplier.getItem("mutton"));
-        game.getInventory().addItem(inventoryItem);
+        var sheepData = (SheepData) mob.getData();
+
+        InventoryItem mutton = new InventoryItem(amount, ItemBlockSupplier.getItem("mutton"));
+        InventoryItem wool = new InventoryItem(1, ItemBlockSupplier.getItem(switch (sheepData.getVariant()) {
+            case WHITE -> "white_wool";
+            case LIGHT_GRAY -> "light_gray_wool";
+            case GRAY -> "gray_wool";
+            case BLACK -> "black_wool";
+            case BROWN -> "brown_wool";
+            case PINK -> "pink_wool";
+        }));
+
+        game.getInventory().addItem(mutton);
+        game.getInventory().addItem(wool);
     }
 }
diff --git a/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepVariant.java b/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepVariant.java
new file mode 100644
index 0000000..eefeed0
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/mobs/services/sheep/SheepVariant.java
@@ -0,0 +1,10 @@
+package cz.jzitnik.game.mobs.services.sheep;
+
+public enum SheepVariant {
+    WHITE,
+    LIGHT_GRAY,
+    GRAY,
+    BLACK,
+    BROWN,
+    PINK
+}
diff --git a/src/main/java/cz/jzitnik/game/sprites/Wool.java b/src/main/java/cz/jzitnik/game/sprites/Wool.java
new file mode 100644
index 0000000..45bb8bf
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/sprites/Wool.java
@@ -0,0 +1,34 @@
+package cz.jzitnik.game.sprites;
+
+import cz.jzitnik.tui.ResourceLoader;
+import cz.jzitnik.tui.Sprite;
+
+public class Wool extends Sprite {
+    public enum WoolState {
+        WHITE,
+        LIGHT_GRAY,
+        GRAY,
+        BLACK,
+        BROWN,
+        PINK,
+    }
+
+    public String getSprite() {
+        return getSprite(WoolState.WHITE);
+    }
+
+    public String getSprite(Enum e) {
+        return ResourceLoader.loadResource(
+                switch (e) {
+                    case WoolState.WHITE -> "white_wool.ans";
+                    case WoolState.LIGHT_GRAY -> "light_gray_wool.ans";
+                    case WoolState.GRAY -> "gray_wool.ans";
+                    case WoolState.BLACK -> "black_wool.ans";
+                    case WoolState.BROWN -> "brown_wool.ans";
+                    case WoolState.PINK -> "pink_wool.ans";
+
+                    default -> throw new IllegalStateException("Unexpected value: " + e);
+                }
+        );
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/sprites/WoolItem.java b/src/main/java/cz/jzitnik/game/sprites/WoolItem.java
new file mode 100644
index 0000000..9e44895
--- /dev/null
+++ b/src/main/java/cz/jzitnik/game/sprites/WoolItem.java
@@ -0,0 +1,34 @@
+package cz.jzitnik.game.sprites;
+
+import cz.jzitnik.tui.ResourceLoader;
+import cz.jzitnik.tui.Sprite;
+
+public class WoolItem extends Sprite {
+    public enum WoolItemState {
+        WHITE,
+        LIGHT_GRAY,
+        GRAY,
+        BLACK,
+        BROWN,
+        PINK,
+    }
+
+    public String getSprite() {
+        return getSprite(WoolItemState.WHITE);
+    }
+
+    public String getSprite(Enum e) {
+        return ResourceLoader.loadResource(
+                switch (e) {
+                    case WoolItemState.WHITE -> "items/white_wool.ans";
+                    case WoolItemState.LIGHT_GRAY -> "items/light_gray_wool.ans";
+                    case WoolItemState.GRAY -> "items/gray_wool.ans";
+                    case WoolItemState.BLACK -> "items/black_wool.ans";
+                    case WoolItemState.BROWN -> "items/brown_wool.ans";
+                    case WoolItemState.PINK -> "items/pink_wool.ans";
+
+                    default -> throw new IllegalStateException("Unexpected value: " + e);
+                }
+        );
+    }
+}
diff --git a/src/main/java/cz/jzitnik/game/ui/CraftingTable.java b/src/main/java/cz/jzitnik/game/ui/CraftingTable.java
index ce9e6d6..9ab4577 100644
--- a/src/main/java/cz/jzitnik/game/ui/CraftingTable.java
+++ b/src/main/java/cz/jzitnik/game/ui/CraftingTable.java
@@ -65,7 +65,9 @@ public class CraftingTable {
         Optional<InventoryItem> craftedItem = recipe.map(craftingRecipe -> craftingRecipe.getItemSupplier().get());
 
         String[] craftedSprite = craftedItem.map(inventoryItem -> SpriteCombiner.combineTwoSprites(
-                spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite(),
+                inventoryItem.getItem().getFirst().getSpriteState().isPresent() ?
+                        spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite(inventoryItem.getItem().getFirst().getSpriteState().get()) :
+                        spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite() ,
                 Numbers.getNumberSprite(inventoryItem.getAmount())
         ).split("\n")).orElse(null);
 
diff --git a/src/main/java/cz/jzitnik/game/ui/Inventory.java b/src/main/java/cz/jzitnik/game/ui/Inventory.java
index d33cc45..89ae233 100644
--- a/src/main/java/cz/jzitnik/game/ui/Inventory.java
+++ b/src/main/java/cz/jzitnik/game/ui/Inventory.java
@@ -223,14 +223,18 @@ public class Inventory {
 
             if (i == selectedItem) {
                 sprites.add(SpriteCombiner.combineTwoSprites(getHotbarBackground(), SpriteCombiner.combineTwoSprites(
-                        spriteList.getSprite(item.getItem().getFirst().getSprite()).getSprite(),
+                        item.getItem().getFirst().getSpriteState().isPresent() ?
+                                spriteList.getSprite(item.getItem().getFirst().getSprite()).getSprite(item.getItem().getFirst().getSpriteState().get()) :
+                                spriteList.getSprite(item.getItem().getFirst().getSprite()).getSprite(),
                         Numbers.getNumberSprite(item.getAmount())
                 )));
                 continue;
             }
 
             sprites.add(SpriteCombiner.combineTwoSprites(
-                    spriteList.getSprite(item.getItem().getFirst().getSprite()).getSprite(),
+                    item.getItem().getFirst().getSpriteState().isPresent() ?
+                            spriteList.getSprite(item.getItem().getFirst().getSprite()).getSprite(item.getItem().getFirst().getSpriteState().get()) :
+                            spriteList.getSprite(item.getItem().getFirst().getSprite()).getSprite(),
                     Numbers.getNumberSprite(item.getAmount())
             ));
         }
diff --git a/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java b/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java
index da321c6..62597dc 100644
--- a/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java
+++ b/src/main/java/cz/jzitnik/game/ui/SmallCraftingTable.java
@@ -52,7 +52,9 @@ public class SmallCraftingTable {
         Optional<InventoryItem> craftedItem = recipe.map(craftingRecipe -> craftingRecipe.getItemSupplier().get());
 
         String[] craftedSprite = craftedItem.map(inventoryItem -> SpriteCombiner.combineTwoSprites(
-                spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite(),
+                inventoryItem.getItem().getFirst().getSpriteState().isPresent() ?
+                        spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite(inventoryItem.getItem().getFirst().getSpriteState().get()) :
+                        spriteList.getSprite(inventoryItem.getItem().getFirst().getSprite()).getSprite() ,
                 Numbers.getNumberSprite(inventoryItem.getAmount())
         ).split("\n")).orElse(null);
 
diff --git a/src/main/resources/textures/black_wool.ans b/src/main/resources/textures/black_wool.ans
new file mode 100644
index 0000000..6220de0
--- /dev/null
+++ b/src/main/resources/textures/black_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/brown_wool.ans b/src/main/resources/textures/brown_wool.ans
new file mode 100644
index 0000000..68d6229
--- /dev/null
+++ b/src/main/resources/textures/brown_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/gray_wool.ans b/src/main/resources/textures/gray_wool.ans
new file mode 100644
index 0000000..03e15eb
--- /dev/null
+++ b/src/main/resources/textures/gray_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/items/black_wool.ans b/src/main/resources/textures/items/black_wool.ans
new file mode 100644
index 0000000..d359796
--- /dev/null
+++ b/src/main/resources/textures/items/black_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/items/brown_wool.ans b/src/main/resources/textures/items/brown_wool.ans
new file mode 100644
index 0000000..d124e3c
--- /dev/null
+++ b/src/main/resources/textures/items/brown_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/items/gray_wool.ans b/src/main/resources/textures/items/gray_wool.ans
new file mode 100644
index 0000000..c684417
--- /dev/null
+++ b/src/main/resources/textures/items/gray_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/items/light_gray_wool.ans b/src/main/resources/textures/items/light_gray_wool.ans
new file mode 100644
index 0000000..6aae0a2
--- /dev/null
+++ b/src/main/resources/textures/items/light_gray_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/items/pink_wool.ans b/src/main/resources/textures/items/pink_wool.ans
new file mode 100644
index 0000000..561605e
--- /dev/null
+++ b/src/main/resources/textures/items/pink_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/items/white_wool.ans b/src/main/resources/textures/items/white_wool.ans
new file mode 100644
index 0000000..cc77bb6
--- /dev/null
+++ b/src/main/resources/textures/items/white_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/light_gray_wool.ans b/src/main/resources/textures/light_gray_wool.ans
new file mode 100644
index 0000000..7bf0331
--- /dev/null
+++ b/src/main/resources/textures/light_gray_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/pink_wool.ans b/src/main/resources/textures/pink_wool.ans
new file mode 100644
index 0000000..48df039
--- /dev/null
+++ b/src/main/resources/textures/pink_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
diff --git a/src/main/resources/textures/white_wool.ans b/src/main/resources/textures/white_wool.ans
new file mode 100644
index 0000000..9c18f68
--- /dev/null
+++ b/src/main/resources/textures/white_wool.ans
@@ -0,0 +1,25 @@
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+                                                  
+