diff --git a/pom.xml b/pom.xml index fc494f7..e9111aa 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,18 @@ <artifactId>jline-reader</artifactId> <version>3.20.0</version> </dependency> + + <dependency> + <groupId>org.reflections</groupId> + <artifactId>reflections</artifactId> + <version>0.10.2</version> + </dependency> + + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>31.1-jre</version> + </dependency> </dependencies> </project> diff --git a/src/main/java/cz/jzitnik/game/Dependencies.java b/src/main/java/cz/jzitnik/game/Dependencies.java new file mode 100644 index 0000000..62e6837 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/Dependencies.java @@ -0,0 +1,7 @@ +package cz.jzitnik.game; + +import cz.jzitnik.game.handlers.place.PlaceHandler; + +public class Dependencies { + public PlaceHandler placeHandler = new PlaceHandler(); +} diff --git a/src/main/java/cz/jzitnik/game/Game.java b/src/main/java/cz/jzitnik/game/Game.java index 364c4c2..5b3675c 100644 --- a/src/main/java/cz/jzitnik/game/Game.java +++ b/src/main/java/cz/jzitnik/game/Game.java @@ -1,14 +1,16 @@ package cz.jzitnik.game; +import cz.jzitnik.game.generation.Generation; import cz.jzitnik.game.items.Item; import cz.jzitnik.game.items.ItemType; +import cz.jzitnik.game.handlers.place.CustomPlaceHandler; import cz.jzitnik.game.sprites.Breaking; import cz.jzitnik.game.sprites.Steve; import cz.jzitnik.game.ui.Chest; import cz.jzitnik.game.ui.Furnace; import cz.jzitnik.game.ui.Window; import cz.jzitnik.game.ui.Inventory; -import cz.jzitnik.tui.RightClickHandler; +import cz.jzitnik.game.handlers.rightclick.RightClickHandler; import cz.jzitnik.tui.ScreenMovingCalculationProvider; import cz.jzitnik.tui.ScreenRenderer; import lombok.Getter; @@ -20,11 +22,9 @@ import java.util.List; @Getter public class Game { - private List<Block>[][] world = new ArrayList[256][512]; - @Setter - private Block player; - @Setter - private Block player2; + @SuppressWarnings("unchecked") + private final List<Block>[][] world = (List<Block>[][]) new ArrayList[256][512]; + private final Player player = new Player(); private boolean mining = false; @Setter private Window window = Window.WORLD; @@ -61,10 +61,10 @@ public class Game { return; } - world[cords[1]][cords[0] + 1].add(player2); - world[cords[1]][cords[0]].remove(player2); - world[cords[1]-1][cords[0] + 1].add(player); - world[cords[1]-1][cords[0]].remove(player); + world[cords[1]][cords[0] + 1].add(player.getPlayerBlock2()); + world[cords[1]][cords[0]].remove(player.getPlayerBlock2()); + world[cords[1]-1][cords[0] + 1].add(player.getPlayerBlock1()); + world[cords[1]-1][cords[0]].remove(player.getPlayerBlock1()); screenRenderer.render(this); update(screenRenderer); @@ -80,10 +80,10 @@ public class Game { return; } - world[cords[1]][cords[0] - 1].add(player2); - world[cords[1]][cords[0]].remove(player2); - world[cords[1]-1][cords[0] - 1].add(player); - world[cords[1]-1][cords[0]].remove(player); + world[cords[1]][cords[0] - 1].add(player.getPlayerBlock2()); + world[cords[1]][cords[0]].remove(player.getPlayerBlock2()); + world[cords[1]-1][cords[0] - 1].add(player.getPlayerBlock1()); + world[cords[1]-1][cords[0]].remove(player.getPlayerBlock1()); screenRenderer.render(this); update(screenRenderer); @@ -95,14 +95,14 @@ public class Game { } int[] cords = getPlayerCords(); - if (world[cords[1] - 2][cords[0]].stream().anyMatch(block -> !block.isGhost()) || world[cords[1] + 1][cords[0]].stream().anyMatch(Block::isGhost)) { + if (world[cords[1] - 2][cords[0]].stream().anyMatch(block -> !block.isGhost()) || world[cords[1] + 1][cords[0]].stream().allMatch(Block::isGhost)) { return; } - world[cords[1] - 1][cords[0]].remove(player); - world[cords[1] - 1][cords[0]].add(player2); - world[cords[1] - 2][cords[0]].add(player); - world[cords[1]][cords[0]].remove(player2); + world[cords[1] - 1][cords[0]].remove(player.getPlayerBlock1()); + world[cords[1] - 1][cords[0]].add(player.getPlayerBlock2()); + world[cords[1] - 2][cords[0]].add(player.getPlayerBlock1()); + world[cords[1]][cords[0]].remove(player.getPlayerBlock2()); new Thread(() -> { try { @@ -113,10 +113,10 @@ public class Game { int[] cords2 = getPlayerCords(); if (world[cords2[1] + 1][cords2[0]].stream().allMatch(Block::isGhost)) { - world[cords2[1] - 1][cords2[0]].remove(player); - world[cords2[1]][cords2[0]].add(player); - world[cords2[1] + 1][cords2[0]].add(player2); - world[cords2[1]][cords2[0]].remove(player2); + world[cords2[1] - 1][cords2[0]].remove(player.getPlayerBlock1()); + world[cords2[1]][cords2[0]].add(player.getPlayerBlock1()); + world[cords2[1] + 1][cords2[0]].add(player.getPlayerBlock2()); + world[cords2[1]][cords2[0]].remove(player.getPlayerBlock2()); screenRenderer.render(this); } @@ -132,7 +132,7 @@ public class Game { world[y][x].add(breakingBlock); screenRenderer.render(this); - double hardness = world[y][x].stream().filter(block -> !block.isGhost()).toList().get(0).calculateHardness(inventory); + double hardness = world[y][x].stream().filter(block -> !block.isGhost()).toList().getFirst().calculateHardness(inventory); this.mining = true; @@ -187,9 +187,10 @@ public class Game { } } - blocks.clear(); - blocks.add(new Block("air", SpriteLoader.SPRITES.AIR, true, false)); + CustomPlaceHandler customPlaceHandler = gameStates.dependencies.placeHandler.get(blocks.stream().filter(Block::isMineable).toList().getFirst().getBlockId()); + customPlaceHandler.mine(this, x, y); inventory.getItemInHand().ifPresent(Item::use); + screenRenderer.render(this); update(screenRenderer); @@ -233,10 +234,10 @@ public class Game { int[] cords2 = getPlayerCords(); if (world[cords2[1] + 1][cords2[0]].stream().allMatch(Block::isGhost)) { - world[cords2[1] - 1][cords2[0]].remove(player); - world[cords2[1]][cords2[0]].add(player); - world[cords2[1] + 1][cords2[0]].add(player2); - world[cords2[1]][cords2[0]].remove(player2); + world[cords2[1] - 1][cords2[0]].remove(player.getPlayerBlock1()); + world[cords2[1]][cords2[0]].add(player.getPlayerBlock1()); + world[cords2[1] + 1][cords2[0]].add(player.getPlayerBlock2()); + world[cords2[1]][cords2[0]].remove(player.getPlayerBlock2()); screenRenderer.render(this); } else { @@ -264,7 +265,7 @@ public class Game { } if (!blocks.stream().allMatch(block -> block.getBlockId().equals("air"))) { - RightClickHandler.handle(x, y, this); + RightClickHandler.handle(x, y, this, screenRenderer); screenRenderer.render(this); return; } @@ -273,12 +274,13 @@ public class Game { return; } - blocks.removeAll(blocks.stream().filter(block -> block.getBlockId().equals("air")).toList()); - blocks.add(inventory.getItemInHand().get().getBlock().get()); + Item item = inventory.getItemInHand().get(); - inventory.decreaseItemInHand(); + CustomPlaceHandler placeHandler = gameStates.dependencies.placeHandler.get(item.getId()); - screenRenderer.render(this); + if (placeHandler.place(this, x, y)) { + screenRenderer.render(this); + } } public void changeSlot(int slot, ScreenRenderer screenRenderer) { diff --git a/src/main/java/cz/jzitnik/game/GameStates.java b/src/main/java/cz/jzitnik/game/GameStates.java index c4fa272..b10d2b1 100644 --- a/src/main/java/cz/jzitnik/game/GameStates.java +++ b/src/main/java/cz/jzitnik/game/GameStates.java @@ -4,10 +4,12 @@ import cz.jzitnik.game.ui.CraftingTable; public class GameStates { public CraftingTable craftingTable; + public Dependencies dependencies; public int clickX = -1; public int clickY = -1; public GameStates(Game game) { craftingTable = new CraftingTable(game); + dependencies = new Dependencies(); } } diff --git a/src/main/java/cz/jzitnik/game/Player.java b/src/main/java/cz/jzitnik/game/Player.java new file mode 100644 index 0000000..e496c28 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/Player.java @@ -0,0 +1,13 @@ +package cz.jzitnik.game; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Player { + private int health = 10; + private int hunger = 6; + private Block playerBlock1; + private Block playerBlock2; +} diff --git a/src/main/java/cz/jzitnik/game/SpriteLoader.java b/src/main/java/cz/jzitnik/game/SpriteLoader.java index 06d41ff..f653adb 100644 --- a/src/main/java/cz/jzitnik/game/SpriteLoader.java +++ b/src/main/java/cz/jzitnik/game/SpriteLoader.java @@ -21,10 +21,12 @@ public class SpriteLoader { CHEST, CRAFTING_TABLE, + COAL_ORE, OAK_LOG, OAK_LEAF, OAK_PLANKS, + OAK_DOOR, WOODEN_PICKAXE, STONE_PICKAXE, @@ -41,9 +43,13 @@ public class SpriteLoader { ITEM_COBBLESTONE, ITEM_STONE, ITEM_FURNACE, + ITEM_OAK_DOOR, ITEM_CRAFTING_TABLE, - ITEM_CHEST + ITEM_CHEST, + + HEART, + HUNGER } public static final HashMap<SPRITES, Sprite> SPRITES_MAP = new HashMap<>(); @@ -63,6 +69,8 @@ public class SpriteLoader { SPRITES_MAP.put(SPRITES.CHEST, new SimpleSprite("chest.ans")); SPRITES_MAP.put(SPRITES.COBBLESTONE, new SimpleSprite("cobblestone.ans")); 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.WOODEN_PICKAXE, new SimpleSprite("items/wooden_pickaxe.ans")); SPRITES_MAP.put(SPRITES.STONE_PICKAXE, new SimpleSprite("items/stone_pickaxe.ans")); @@ -79,6 +87,10 @@ public class SpriteLoader { SPRITES_MAP.put(SPRITES.ITEM_STONE, new SimpleSprite("items/stone.ans")); SPRITES_MAP.put(SPRITES.ITEM_CHEST, new SimpleSprite("items/chest.ans")); SPRITES_MAP.put(SPRITES.ITEM_FURNACE, new SimpleSprite("items/furnace.ans")); + SPRITES_MAP.put(SPRITES.ITEM_OAK_DOOR, new SimpleSprite("oak_door/items/oak_door.ans")); + + SPRITES_MAP.put(SPRITES.HEART, new Heart()); + SPRITES_MAP.put(SPRITES.HUNGER, new Hunger()); } public static SpriteList<SPRITES> load() { diff --git a/src/main/java/cz/jzitnik/game/annotations/RegisterPlaceHandler.java b/src/main/java/cz/jzitnik/game/annotations/RegisterPlaceHandler.java new file mode 100644 index 0000000..d9cc272 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/annotations/RegisterPlaceHandler.java @@ -0,0 +1,12 @@ +package cz.jzitnik.game.annotations; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.annotation.ElementType; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface RegisterPlaceHandler { + String value(); +} diff --git a/src/main/java/cz/jzitnik/game/crafting/CraftingRecipeList.java b/src/main/java/cz/jzitnik/game/crafting/CraftingRecipeList.java index 9b3c867..f03a109 100644 --- a/src/main/java/cz/jzitnik/game/crafting/CraftingRecipeList.java +++ b/src/main/java/cz/jzitnik/game/crafting/CraftingRecipeList.java @@ -94,6 +94,18 @@ public class CraftingRecipeList { {"cobblestone", null, "cobblestone"}, {"cobblestone", "cobblestone", "cobblestone"} }, () -> new InventoryItem(1, ItemBlockSupplier.Items.furnace()))); + + recipes.add(new CraftingRecipe(new String[][]{ + {"oak_planks", "oak_planks", null}, + {"oak_planks", "oak_planks", null}, + {"oak_planks", "oak_planks", null} + }, () -> new InventoryItem(1, ItemBlockSupplier.Items.oakDoor()))); + + recipes.add(new CraftingRecipe(new String[][]{ + {"dirt", null, null}, + {null, null, null}, + {null, null, null} + }, () -> new InventoryItem(1, ItemBlockSupplier.Items.oakDoor()))); } public static Optional<CraftingRecipe> getRecipe(String[] r) { diff --git a/src/main/java/cz/jzitnik/game/generation/CaveGenerator.java b/src/main/java/cz/jzitnik/game/generation/CaveGenerator.java new file mode 100644 index 0000000..a27c98f --- /dev/null +++ b/src/main/java/cz/jzitnik/game/generation/CaveGenerator.java @@ -0,0 +1,12 @@ +package cz.jzitnik.game.generation; + +import cz.jzitnik.game.Block; +import java.util.List; + +public class CaveGenerator { + private static final int WIDTH = 512; + private static final int HEIGHT = 256; + + public static void generateCaves(List<Block>[][] world, int[] terrainHeight) { + } +} diff --git a/src/main/java/cz/jzitnik/game/Generation.java b/src/main/java/cz/jzitnik/game/generation/Generation.java similarity index 91% rename from src/main/java/cz/jzitnik/game/Generation.java rename to src/main/java/cz/jzitnik/game/generation/Generation.java index 9e9b50c..7798e79 100644 --- a/src/main/java/cz/jzitnik/game/Generation.java +++ b/src/main/java/cz/jzitnik/game/generation/Generation.java @@ -1,5 +1,8 @@ -package cz.jzitnik.game; +package cz.jzitnik.game.generation; +import cz.jzitnik.game.Block; +import cz.jzitnik.game.Game; +import cz.jzitnik.game.SpriteLoader; import cz.jzitnik.game.items.ItemBlockSupplier; import cz.jzitnik.game.items.ItemType; import cz.jzitnik.game.sprites.Steve; @@ -18,8 +21,8 @@ public class Generation { Block steveBlock2 = new Block("steve", SpriteLoader.SPRITES.STEVE); steveBlock2.setSpriteState(Steve.SteveState.SECOND); - game.setPlayer(steveBlock); - game.setPlayer2(steveBlock2); + game.getPlayer().setPlayerBlock1(steveBlock); + game.getPlayer().setPlayerBlock2(steveBlock2); int[] terrainHeight = generateTerrain(); populateWorld(world, terrainHeight); @@ -77,9 +80,7 @@ public class Generation { for (List<Block>[] lists : world) { for (List<Block> list : lists) { - if (list.isEmpty()) { - list.add(new Block("air", SpriteLoader.SPRITES.AIR, true, false)); - } + list.addFirst(new Block("air", SpriteLoader.SPRITES.AIR, true, false)); } } } diff --git a/src/main/java/cz/jzitnik/game/handlers/place/CustomPlaceHandler.java b/src/main/java/cz/jzitnik/game/handlers/place/CustomPlaceHandler.java new file mode 100644 index 0000000..f0c1645 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/handlers/place/CustomPlaceHandler.java @@ -0,0 +1,8 @@ +package cz.jzitnik.game.handlers.place; + +import cz.jzitnik.game.Game; + +public interface CustomPlaceHandler { + boolean place(Game game, int x, int y); + void mine(Game game, int x, int y); +} diff --git a/src/main/java/cz/jzitnik/game/handlers/place/DefaultPlaceHandler.java b/src/main/java/cz/jzitnik/game/handlers/place/DefaultPlaceHandler.java new file mode 100644 index 0000000..2d8681a --- /dev/null +++ b/src/main/java/cz/jzitnik/game/handlers/place/DefaultPlaceHandler.java @@ -0,0 +1,24 @@ +package cz.jzitnik.game.handlers.place; + +import cz.jzitnik.game.Game; + +public class DefaultPlaceHandler implements CustomPlaceHandler { + @Override + public boolean place(Game game, int x, int y) { + var blocks = game.getWorld()[y][x]; + var inventory = game.getInventory(); + + blocks.add(inventory.getItemInHand().get().getBlock().get()); + + inventory.decreaseItemInHand(); + + return true; + } + + @Override + public void mine(Game game, int x, int y) { + var blocks = game.getWorld()[y][x]; + + blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air")).toList()); + } +} diff --git a/src/main/java/cz/jzitnik/game/handlers/place/PlaceHandler.java b/src/main/java/cz/jzitnik/game/handlers/place/PlaceHandler.java new file mode 100644 index 0000000..6c5d650 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/handlers/place/PlaceHandler.java @@ -0,0 +1,45 @@ +package cz.jzitnik.game.handlers.place; + +import java.util.HashMap; +import java.util.Set; + +import cz.jzitnik.game.annotations.RegisterPlaceHandler; +import org.reflections.Reflections; + +public class PlaceHandler { + private final HashMap<String, CustomPlaceHandler> placeHandlerList = new HashMap<>(); + private final CustomPlaceHandler defaultPlaceHandler = new DefaultPlaceHandler(); + + public boolean contains(String itemId) { + return placeHandlerList.containsKey(itemId); + } + + public CustomPlaceHandler get(String itemId) { + if (!contains(itemId)) { + return defaultPlaceHandler; + } + + return placeHandlerList.get(itemId); + } + + public PlaceHandler() { + registerHandlers(); + } + + private void registerHandlers() { + Reflections reflections = new Reflections("cz.jzitnik.game.handlers.place.handlers"); + Set<Class<?>> handlerClasses = reflections.getTypesAnnotatedWith(RegisterPlaceHandler.class); + + for (Class<?> clazz : handlerClasses) { + if (CustomPlaceHandler.class.isAssignableFrom(clazz)) { + try { + CustomPlaceHandler handlerInstance = (CustomPlaceHandler) clazz.getDeclaredConstructor().newInstance(); + RegisterPlaceHandler annotation = clazz.getAnnotation(RegisterPlaceHandler.class); + placeHandlerList.put(annotation.value(), handlerInstance); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/src/main/java/cz/jzitnik/game/handlers/place/handlers/DoorPlaceHandler.java b/src/main/java/cz/jzitnik/game/handlers/place/handlers/DoorPlaceHandler.java new file mode 100644 index 0000000..cd1672a --- /dev/null +++ b/src/main/java/cz/jzitnik/game/handlers/place/handlers/DoorPlaceHandler.java @@ -0,0 +1,93 @@ +package cz.jzitnik.game.handlers.place.handlers; + +import cz.jzitnik.game.Block; +import cz.jzitnik.game.Game; +import cz.jzitnik.game.annotations.RegisterPlaceHandler; +import cz.jzitnik.game.handlers.place.CustomPlaceHandler; +import cz.jzitnik.game.items.ItemBlockSupplier; +import cz.jzitnik.game.sprites.OakDoor; +import cz.jzitnik.tui.ScreenRenderer; + +@RegisterPlaceHandler("oak_door") +public class DoorPlaceHandler implements CustomPlaceHandler { + public static void rightClick(Game game, int x, int y, ScreenRenderer screenRenderer) { + var blocks = game.getWorld()[y][x]; + var door = blocks.stream().filter(block -> block.getBlockId().equals("oak_door")).toList().getFirst(); + + + switch (door.getSpriteState().get()) { + case OakDoor.OakDoorState.TOP, OakDoor.OakDoorState.TOPCLOSED -> { + var blocks2 = game.getWorld()[y+1][x]; + var door2 = blocks2.stream().filter(block -> block.getBlockId().equals("oak_door")).toList().getFirst(); + change(door2); + } + case OakDoor.OakDoorState.BOTTOM, OakDoor.OakDoorState.BOTTOMCLOSED -> { + var blocks2 = game.getWorld()[y-1][x]; + var door2 = blocks2.stream().filter(block -> block.getBlockId().equals("oak_door")).toList().getFirst(); + change(door2); + } + default -> throw new IllegalStateException("Unexpected value: " + door.getSpriteState().get()); + } + + change(door); + game.update(screenRenderer); + } + + private static void change(Block door) { + door.setSpriteState(switch (door.getSpriteState().get()) { + case OakDoor.OakDoorState.TOP -> OakDoor.OakDoorState.TOPCLOSED; + case OakDoor.OakDoorState.BOTTOM -> OakDoor.OakDoorState.BOTTOMCLOSED; + case OakDoor.OakDoorState.TOPCLOSED -> OakDoor.OakDoorState.TOP; + case OakDoor.OakDoorState.BOTTOMCLOSED -> OakDoor.OakDoorState.BOTTOM; + default -> throw new IllegalStateException("Unexpected value: " + door.getSpriteState().get()); + }); + + door.setGhost(switch (door.getSpriteState().get()) { + case OakDoor.OakDoorState.TOP, OakDoor.OakDoorState.BOTTOM -> true; + case OakDoor.OakDoorState.TOPCLOSED, OakDoor.OakDoorState.BOTTOMCLOSED -> false; + default -> throw new IllegalStateException("Unexpected value: " + door.getSpriteState().get()); + }); + } + + @Override + public boolean place(Game game, int x, int y) { + var blocks = game.getWorld()[y][x]; + var blocksTop = game.getWorld()[y-1][x]; + + if (!blocksTop.stream().allMatch(Block::isGhost)) { + return false; + } + + var inventory = game.getInventory(); + + Block block = inventory.getItemInHand().get().getBlock().get(); + block.setSpriteState(OakDoor.OakDoorState.BOTTOMCLOSED); + blocks.add(block); + + Block block2 = ItemBlockSupplier.Blocks.oakDoor(); + block2.setSpriteState(OakDoor.OakDoorState.TOPCLOSED); + blocksTop.add(block2); + + inventory.decreaseItemInHand(); + + return true; + } + + @Override + public void mine(Game game, int x, int y) { + var blocks = game.getWorld()[y][x]; + Block block = blocks.stream().filter(b -> b.getBlockId().equals("oak_door")).toList().getFirst(); + + if (block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOM || block.getSpriteState().get() == OakDoor.OakDoorState.BOTTOMCLOSED) { + var blocks2 = game.getWorld()[y-1][x]; + blocks2.removeAll(blocks2.stream().filter(i -> !i.getBlockId().equals("air")).toList()); + } + + if (block.getSpriteState().get() == OakDoor.OakDoorState.TOP || block.getSpriteState().get() == OakDoor.OakDoorState.TOPCLOSED) { + var blocks2 = game.getWorld()[y+1][x]; + blocks2.removeAll(blocks2.stream().filter(i -> !i.getBlockId().equals("air")).toList()); + } + + blocks.removeAll(blocks.stream().filter(i -> !i.getBlockId().equals("air")).toList()); + } +} diff --git a/src/main/java/cz/jzitnik/tui/RightClickHandler.java b/src/main/java/cz/jzitnik/game/handlers/rightclick/RightClickHandler.java similarity index 74% rename from src/main/java/cz/jzitnik/tui/RightClickHandler.java rename to src/main/java/cz/jzitnik/game/handlers/rightclick/RightClickHandler.java index 1e24353..557f722 100644 --- a/src/main/java/cz/jzitnik/tui/RightClickHandler.java +++ b/src/main/java/cz/jzitnik/game/handlers/rightclick/RightClickHandler.java @@ -1,8 +1,10 @@ -package cz.jzitnik.tui; +package cz.jzitnik.game.handlers.rightclick; import cz.jzitnik.game.Block; import cz.jzitnik.game.Game; +import cz.jzitnik.game.handlers.place.handlers.DoorPlaceHandler; import cz.jzitnik.game.ui.Window; +import cz.jzitnik.tui.ScreenRenderer; import java.util.HashMap; @@ -12,7 +14,7 @@ public class RightClickHandler { void apply(T t, U u); } - public static void handle(int x, int y, Game game) { + public static void handle(int x, int y, Game game, ScreenRenderer screenRenderer) { if (game.isMining()) { return; } @@ -21,6 +23,7 @@ public class RightClickHandler { functionMap.put("crafting_table", game.getGameStates().craftingTable::render); functionMap.put("chest", (Integer ignored, Integer ignored2) -> game.setWindow(Window.CHEST)); functionMap.put("furnace", (Integer ignored, Integer ignored2) -> game.setWindow(Window.FURNACE)); + functionMap.put("oak_door", (Integer xx, Integer xy) -> DoorPlaceHandler.rightClick(game, xx, xy, screenRenderer)); game.getGameStates().clickX = x; game.getGameStates().clickY = y; diff --git a/src/main/java/cz/jzitnik/game/items/ItemBlockSupplier.java b/src/main/java/cz/jzitnik/game/items/ItemBlockSupplier.java index bc6ef14..b03aa33 100644 --- a/src/main/java/cz/jzitnik/game/items/ItemBlockSupplier.java +++ b/src/main/java/cz/jzitnik/game/items/ItemBlockSupplier.java @@ -36,6 +36,9 @@ public class ItemBlockSupplier { public static Item furnace(Block ref) { return new Item("furnace", "Furnace", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_FURNACE, ref); } + public static Item oakDoor(Block ref) { + return new Item("oak_door", "Oak door", ItemType.BLOCK, SpriteLoader.SPRITES.ITEM_OAK_DOOR, ref); + } } public static class Blocks { @@ -85,6 +88,14 @@ public class ItemBlockSupplier { block.setDrops(List.of(Helper.furnace(block))); return block; } + public static Block coalOre() { + return new Block("coal_ore", SpriteLoader.SPRITES.COAL_ORE); + } + public static Block oakDoor() { + var block = new Block("oak_door", SpriteLoader.SPRITES.OAK_DOOR, 3, ItemType.AXE, new ArrayList<>()); + block.setDrops(List.of(Helper.oakDoor(block))); + return block; + } } // I hate this but whatever @@ -131,5 +142,8 @@ public class ItemBlockSupplier { public static Item furnace() { return Helper.furnace(Blocks.furnace()); } + public static Item oakDoor() { + return Helper.oakDoor(Blocks.oakDoor()); + } } } diff --git a/src/main/java/cz/jzitnik/game/sprites/Heart.java b/src/main/java/cz/jzitnik/game/sprites/Heart.java new file mode 100644 index 0000000..5b3ca49 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/sprites/Heart.java @@ -0,0 +1,25 @@ +package cz.jzitnik.game.sprites; + +import cz.jzitnik.tui.ResourceLoader; +import cz.jzitnik.tui.Sprite; + +public class Heart extends Sprite { + public enum HeartState { + OFF, + ON, + } + + public String getSprite() { + throw new RuntimeException("Idk"); + } + + public String getSprite(Enum e) { + return ResourceLoader.loadResource( + switch (e) { + case HeartState.OFF -> "gui/heartempty.ans"; + case HeartState.ON -> "gui/heartfull.ans"; + default -> throw new IllegalStateException("Unexpected value: " + e); + } + ); + } +} diff --git a/src/main/java/cz/jzitnik/game/sprites/Hunger.java b/src/main/java/cz/jzitnik/game/sprites/Hunger.java new file mode 100644 index 0000000..979e6c2 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/sprites/Hunger.java @@ -0,0 +1,25 @@ +package cz.jzitnik.game.sprites; + +import cz.jzitnik.tui.ResourceLoader; +import cz.jzitnik.tui.Sprite; + +public class Hunger extends Sprite { + public enum HungerState { + OFF, + ON, + } + + public String getSprite() { + throw new RuntimeException("Idk"); + } + + public String getSprite(Enum e) { + return ResourceLoader.loadResource( + switch (e) { + case HungerState.OFF -> "gui/hungerempty.ans"; + case HungerState.ON -> "gui/hungerfull.ans"; + default -> throw new IllegalStateException("Unexpected value: " + e); + } + ); + } +} diff --git a/src/main/java/cz/jzitnik/game/sprites/OakDoor.java b/src/main/java/cz/jzitnik/game/sprites/OakDoor.java new file mode 100644 index 0000000..aa948a5 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/sprites/OakDoor.java @@ -0,0 +1,29 @@ +package cz.jzitnik.game.sprites; + +import cz.jzitnik.tui.ResourceLoader; +import cz.jzitnik.tui.Sprite; + +public class OakDoor extends Sprite { + public enum OakDoorState { + TOP, + BOTTOM, + TOPCLOSED, + BOTTOMCLOSED + } + + public String getSprite() { + return ResourceLoader.loadResource("oak_door/bottomclosed.ans"); + } + + public String getSprite(Enum e) { + return ResourceLoader.loadResource( + switch (e) { + case OakDoorState.TOP -> "oak_door/top.ans"; + case OakDoorState.BOTTOM -> "oak_door/bottom.ans"; + case OakDoorState.TOPCLOSED -> "oak_door/topclosed.ans"; + case OakDoorState.BOTTOMCLOSED -> "oak_door/bottomclosed.ans"; + default -> throw new IllegalStateException("Unexpected value: " + e); + } + ); + } +} diff --git a/src/main/java/cz/jzitnik/game/ui/Healthbar.java b/src/main/java/cz/jzitnik/game/ui/Healthbar.java new file mode 100644 index 0000000..dcd8105 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/ui/Healthbar.java @@ -0,0 +1,49 @@ +package cz.jzitnik.game.ui; + +import cz.jzitnik.game.Game; +import cz.jzitnik.game.SpriteLoader; +import cz.jzitnik.game.sprites.Heart; +import cz.jzitnik.game.sprites.Hunger; +import cz.jzitnik.tui.SpriteList; +import org.jline.terminal.Terminal; + +import static cz.jzitnik.game.ui.Inventory.INVENTORY_SIZE_PX; + +public class Healthbar { + public static void render(StringBuilder buffer, SpriteList spriteList, Terminal terminal, Game game) { + int termWidth = terminal.getWidth(); + int startLeft = (termWidth / 2) - (INVENTORY_SIZE_PX / 2); + + int heartSize = 9 * 20; + int moveLeft = INVENTORY_SIZE_PX - (heartSize * 2); + + String[] spriteOn = spriteList.getSprite(SpriteLoader.SPRITES.HEART).getSprite(Heart.HeartState.ON).split("\n"); + String[] spriteOff = spriteList.getSprite(SpriteLoader.SPRITES.HEART).getSprite(Heart.HeartState.OFF).split("\n"); + + String[] hungerSpriteOn = spriteList.getSprite(SpriteLoader.SPRITES.HUNGER).getSprite(Hunger.HungerState.ON).split("\n"); + String[] hungerSpriteOff = spriteList.getSprite(SpriteLoader.SPRITES.HUNGER).getSprite(Hunger.HungerState.OFF).split("\n"); + + for (int i = 0; i < 9; i++) { + buffer.append(" ".repeat(startLeft)); + for (int j = 0; j < 10; j++) { + if (j < game.getPlayer().getHealth()) { + buffer.append(spriteOn[i]); + } else { + buffer.append(spriteOff[i]); + } + } + + buffer.append("\033[0m").append(" ".repeat(moveLeft)); + for (int j = 0; j < 10; j++) { + if ((10 - j) <= game.getPlayer().getHunger()) { + buffer.append(hungerSpriteOn[i]); + } else { + buffer.append(hungerSpriteOff[i]); + } + } + + buffer.append("\n"); + } + buffer.append("\n\n"); + } +} diff --git a/src/main/java/cz/jzitnik/tui/ScreenMovingCalculationProvider.java b/src/main/java/cz/jzitnik/tui/ScreenMovingCalculationProvider.java index 4e8f636..446976a 100644 --- a/src/main/java/cz/jzitnik/tui/ScreenMovingCalculationProvider.java +++ b/src/main/java/cz/jzitnik/tui/ScreenMovingCalculationProvider.java @@ -6,7 +6,7 @@ public class ScreenMovingCalculationProvider { int spriteHeight = 25; int viewXRadius = (terminalWidth / 2) / spriteWidth; - int viewYRadius = ((terminalHeight - 30) / 2) / spriteHeight; + int viewYRadius = ((terminalHeight - 30 - 9) / 2) / spriteHeight; // Ensure at least one sprite is visible viewXRadius = Math.max(viewXRadius, 1); diff --git a/src/main/java/cz/jzitnik/tui/ScreenRenderer.java b/src/main/java/cz/jzitnik/tui/ScreenRenderer.java index 6bdde91..7ed0015 100644 --- a/src/main/java/cz/jzitnik/tui/ScreenRenderer.java +++ b/src/main/java/cz/jzitnik/tui/ScreenRenderer.java @@ -5,6 +5,7 @@ import cz.jzitnik.game.Game; import cz.jzitnik.game.sprites.Steve; import cz.jzitnik.game.ui.Chest; import cz.jzitnik.game.ui.Furnace; +import cz.jzitnik.game.ui.Healthbar; import cz.jzitnik.tui.utils.SpriteCombiner; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -141,6 +142,8 @@ public class ScreenRenderer { // Empty space between world and hotbar main.append("\n\n\n"); + Healthbar.render(main, spriteList, terminal, game); + game.getInventory().renderHotbar(main, spriteList, terminal, false); } } diff --git a/src/main/java/cz/jzitnik/tui/SpriteList.java b/src/main/java/cz/jzitnik/tui/SpriteList.java index c482847..f788bdb 100644 --- a/src/main/java/cz/jzitnik/tui/SpriteList.java +++ b/src/main/java/cz/jzitnik/tui/SpriteList.java @@ -23,11 +23,4 @@ public class SpriteList<E extends Enum<E>> { public Sprite getSprite(E key) { return sprites.get(key); } - - public void setSprite(E key, Sprite value) { - if (!sprites.containsKey(key)) { - throw new IllegalArgumentException("Invalid key: " + key); - } - sprites.put(key, value); - } } diff --git a/src/main/resources/textures/coal_ore.ans b/src/main/resources/textures/coal_ore.ans new file mode 100644 index 0000000..a1e1db3 --- /dev/null +++ b/src/main/resources/textures/coal_ore.ans @@ -0,0 +1,25 @@ +[48;2;127;127;127m [48;2;116;116;116m [48;2;127;127;127m [48;2;143;143;143m [48;2;141;143;143m [48;2;104;104;104m [48;2;143;143;143m [48;2;127;127;127m [48;2;126;126;126m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;143;143;143m [48;2;116;116;116m [48;2;143;143;143m [48;2;104;104;104m [48;2;127;127;127m [48;2;116;116;116m [m +[48;2;127;127;127m [48;2;108;108;108m [48;2;121;121;121m [48;2;73;73;73m [48;2;75;75;75m [48;2;121;121;121m [48;2;123;121;121m [48;2;121;121;121m [48;2;137;137;137m [48;2;121;121;121m [48;2;130;130;130m [48;2;72;72;72m [48;2;70;70;70m [48;2;75;75;75m [48;2;127;127;127m [48;2;124;124;124m [m +[48;2;127;127;127m [48;2;104;104;104m [48;2;116;116;116m [48;2;55;55;55m [48;2;54;54;54m [48;2;116;116;116m [48;2;116;117;116m [48;2;116;116;116m [48;2;143;143;143m [48;2;116;116;116m [48;2;127;127;127m [48;2;63;63;63m [48;2;55;55;55m [48;2;60;60;60m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;143;143;143m [48;2;127;127;127m [48;2;126;126;126m [48;2;104;104;104m [48;2;127;127;127m [48;2;63;63;63m [48;2;52;52;52m [48;2;127;127;127m [48;2;116;116;116m [48;2;116;116;118m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;143;143;143m [48;2;127;127;127m [48;2;126;126;126m [48;2;104;104;104m [48;2;127;127;127m [48;2;63;63;63m [48;2;52;52;52m [48;2;127;127;127m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;143;143;143m [48;2;116;116;116m [48;2;116;116;118m [48;2;116;116;116m [48;2;143;143;143m [48;2;104;104;104m [m +[48;2;116;116;116m [48;2;127;127;127m [48;2;126;126;126m [48;2;69;69;69m [48;2;63;63;63m [48;2;116;116;116m [48;2;127;127;127m [48;2;104;104;104m [48;2;69;69;69m [48;2;63;63;63m [48;2;118;116;116m [48;2;116;116;116m [48;2;115;115;115m [48;2;104;105;104m [48;2;127;127;127m [m +[48;2;116;116;116m [48;2;127;127;127m [48;2;126;126;126m [48;2;69;69;69m [48;2;63;63;63m [48;2;116;116;116m [48;2;127;127;127m [48;2;104;104;104m [48;2;69;69;69m [48;2;63;63;63m [48;2;116;116;116m [48;2;115;115;115m [48;2;104;104;104m [48;2;127;127;127m [m +[48;2;143;143;143m [48;2;127;127;127m [48;2;69;69;69m [48;2;63;63;63m [48;2;55;55;55m [48;2;52;52;52m [48;2;127;127;127m [48;2;127;127;125m [48;2;127;127;127m [48;2;55;55;55m [48;2;52;52;52m [48;2;143;143;143m [48;2;104;104;104m [m +[48;2;143;143;143m [48;2;141;143;143m [48;2;143;143;143m [48;2;127;127;127m [48;2;69;69;69m [48;2;63;63;63m [48;2;55;55;55m [48;2;55;55;54m [48;2;55;55;55m [48;2;52;52;52m [48;2;127;127;127m [48;2;55;55;55m [48;2;52;52;52m [48;2;143;143;143m [48;2;104;104;104m [m +[48;2;127;127;127m [48;2;116;116;116m [48;2;104;104;104m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;125;127;127m [48;2;63;63;63m [48;2;55;55;55m [48;2;102;102;102m [48;2;104;104;104m [48;2;143;143;143m [48;2;141;141;141m [48;2;116;116;116m [48;2;127;127;127m [48;2;69;69;69m [48;2;62;62;62m [48;2;143;143;143m [48;2;142;142;142m [m +[48;2;127;126;127m [48;2;63;63;63m [48;2;55;55;55m [48;2;104;104;104m [48;2;143;143;143m [48;2;116;116;116m [48;2;127;127;127m [48;2;69;69;69m [48;2;63;63;63m [48;2;143;143;143m [m +[48;2;127;127;127m [48;2;116;116;116m [48;2;63;63;63m [48;2;63;62;63m [48;2;52;52;52m [48;2;116;116;116m [48;2;118;118;118m [48;2;143;143;143m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;115;115;115m [48;2;118;116;116m [48;2;116;116;116m [48;2;115;115;115m [48;2;116;116;116m [48;2;63;63;63m [48;2;51;51;51m [48;2;52;52;52m [48;2;116;116;116m [48;2;115;115;115m [48;2;117;117;117m [48;2;143;143;143m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;143;143;143m [48;2;116;116;116m [48;2;55;55;55m [48;2;143;143;143m [48;2;116;116;116m [48;2;104;104;104m [48;2;116;116;116m [48;2;143;143;143m [48;2;127;127;126m [48;2;127;127;127m [m +[48;2;104;104;104m [48;2;127;127;127m [48;2;115;115;115m [48;2;116;116;116m [48;2;127;127;127m [48;2;143;143;143m [48;2;127;127;127m [48;2;126;126;126m [48;2;63;63;63m [48;2;52;52;52m [48;2;143;143;143m [48;2;104;104;104m [m +[48;2;104;104;104m [48;2;127;127;127m [48;2;116;116;116m [48;2;127;127;127m [48;2;143;143;143m [48;2;127;127;127m [48;2;126;126;126m [48;2;63;63;63m [48;2;52;52;52m [48;2;143;143;143m [48;2;104;104;104m [m +[48;2;127;127;127m [48;2;116;116;116m [48;2;63;63;63m [48;2;69;69;69m [48;2;63;63;63m [48;2;62;62;62m [48;2;55;55;55m [48;2;55;55;54m [48;2;52;52;52m [48;2;56;56;56m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;116;116;116m [48;2;63;63;63m [48;2;69;69;69m [48;2;69;68;69m [48;2;63;63;63m [48;2;62;62;62m [48;2;55;55;55m [48;2;52;52;52m [48;2;56;56;56m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;143;143;143m [48;2;116;116;116m [48;2;63;63;63m [48;2;52;52;52m [48;2;127;127;127m [48;2;116;116;116m [48;2;52;52;52m [48;2;116;116;116m [48;2;127;127;127m [48;2;128;128;128m [48;2;143;143;143m [m +[48;2;127;127;127m [48;2;116;116;116m [48;2;116;116;117m [48;2;116;116;116m [48;2;127;127;127m [48;2;143;143;143m [48;2;127;127;127m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;127;127;127m [48;2;116;116;116m [48;2;127;127;127m [48;2;143;143;143m [48;2;127;127;127m [48;2;116;116;116m [48;2;127;127;127m [m +[48;2;116;116;116m [48;2;104;104;104m [48;2;143;143;143m [48;2;127;127;127m [48;2;126;126;126m [48;2;116;116;116m [48;2;127;127;127m [m diff --git a/src/main/resources/textures/gui/heartempty.ans b/src/main/resources/textures/gui/heartempty.ans new file mode 100644 index 0000000..5233123 --- /dev/null +++ b/src/main/resources/textures/gui/heartempty.ans @@ -0,0 +1,9 @@ +[49m [49m [49m [49m [48;2;0;0;0m [48;2;1;0;0m [49m [49m [48;2;2;3;1m [48;2;1;1;1m [49m [49m [49m [49m [m +[49m [49m [48;2;7;5;5m [48;2;41;43;41m [48;2;41;41;40m [48;2;3;2;3m [48;2;40;40;41m [48;2;40;40;40m [48;2;2;2;2m [49m [49m [m +[48;2;0;2;0m [48;2;43;40;43m [48;2;40;40;40m [48;2;40;42;42m [48;2;38;39;36m [48;2;40;41;41m [48;2;41;40;41m [48;2;38;38;39m [48;2;2;0;0m [m +[48;2;2;0;0m [48;2;41;41;40m [48;2;42;42;42m [48;2;40;40;40m [48;2;41;40;41m [48;2;42;40;40m [48;2;42;43;42m [48;2;40;43;41m [48;2;0;0;0m [m +[48;2;2;2;2m [48;2;42;42;40m [48;2;42;42;42m [48;2;38;38;38m [48;2;37;37;37m [48;2;42;41;40m [48;2;36;38;38m [48;2;42;42;42m [48;2;0;3;2m [m +[49m [49m [48;2;3;3;1m [48;2;40;40;41m [48;2;42;40;42m [48;2;40;40;43m [48;2;36;37;36m [48;2;42;40;42m [48;2;0;3;1m [49m [49m [m +[49m [49m [49m [49m [48;2;2;2;2m [48;2;40;43;40m [48;2;39;36;38m [48;2;40;42;40m [48;2;1;1;1m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;3;3;3m [48;2;42;42;42m [48;2;0;0;0m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;0;0m [49m [49m [49m [49m [49m [49m [49m [49m [m diff --git a/src/main/resources/textures/gui/heartfull.ans b/src/main/resources/textures/gui/heartfull.ans new file mode 100644 index 0000000..6f4b7bd --- /dev/null +++ b/src/main/resources/textures/gui/heartfull.ans @@ -0,0 +1,9 @@ +[49m [49m [49m [49m [48;2;51;0;0m [48;2;62;0;0m [49m [49m [48;2;37;2;1m [48;2;30;0;0m [49m [49m [49m [49m [m +[49m [49m [48;2;31;3;3m [48;2;161;62;70m [48;2;172;53;61m [48;2;74;0;0m [48;2;158;61;63m [48;2;155;63;61m [48;2;45;1;0m [49m [49m [m +[48;2;51;1;1m [48;2;160;61;62m [48;2;255;165;169m [48;2;220;36;44m [48;2;222;33;41m [48;2;225;32;36m [48;2;221;32;31m [48;2;187;49;43m [48;2;32;1;1m [m +[48;2;56;2;0m [48;2;169;56;53m [48;2;215;39;45m [48;2;239;23;32m [48;2;254;22;28m [48;2;252;20;23m [48;2;243;25;21m [48;2;202;45;40m [48;2;36;1;0m [m +[48;2;42;0;0m [48;2;134;40;43m [48;2;207;31;39m [48;2;241;21;28m [48;2;251;13;20m [48;2;247;24;24m [48;2;223;36;34m [48;2;155;32;30m [48;2;29;0;0m [m +[49m [49m [48;2;47;0;0m [48;2;162;26;32m [48;2;214;31;38m [48;2;233;31;29m [48;2;222;35;31m [48;2;163;29;27m [48;2;53;0;0m [49m [49m [m +[49m [49m [49m [49m [48;2;45;0;0m [48;2;146;37;36m [48;2;195;49;49m [48;2;163;29;28m [48;2;48;3;0m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;39;0;0m [48;2;129;43;42m [48;2;53;0;0m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [48;2;21;0;0m [49m [49m [49m [49m [49m [49m [49m [49m [m diff --git a/src/main/resources/textures/gui/hungerempty.ans b/src/main/resources/textures/gui/hungerempty.ans new file mode 100644 index 0000000..e1707ce --- /dev/null +++ b/src/main/resources/textures/gui/hungerempty.ans @@ -0,0 +1,9 @@ +[49m [49m [49m [49m [48;2;0;0;0m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [48;2;0;1;2m [48;2;40;40;42m [48;2;40;42;40m [48;2;0;0;0m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;1;3;0m [48;2;40;40;40m [48;2;42;41;40m [48;2;42;40;42m [48;2;40;41;42m [48;2;2;1;0m [49m [49m [49m [49m [49m [49m [m +[48;2;0;0;0m [48;2;40;41;42m [48;2;43;43;40m [48;2;40;40;40m [48;2;42;41;40m [48;2;40;40;41m [48;2;2;0;1m [49m [49m [49m [49m [m +[49m [49m [48;2;2;0;3m [48;2;43;41;42m [48;2;40;41;43m [48;2;40;40;42m [48;2;40;40;41m [48;2;0;0;0m [49m [49m [49m [49m [m +[49m [49m [49m [49m [48;2;2;0;0m [48;2;40;40;42m [48;2;40;40;40m [48;2;42;41;43m [48;2;2;1;0m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;0;0;0m [48;2;2;1;1m [48;2;0;1;2m [48;2;41;42;40m [48;2;3;0;0m [48;2;1;1;2m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;0;0m [48;2;40;40;40m [48;2;0;0;0m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;0;0m [49m [49m [m diff --git a/src/main/resources/textures/gui/hungerfull.ans b/src/main/resources/textures/gui/hungerfull.ans new file mode 100644 index 0000000..3d1e651 --- /dev/null +++ b/src/main/resources/textures/gui/hungerfull.ans @@ -0,0 +1,9 @@ +[49m [49m [49m [49m [48;2;0;2;3m [48;2;3;0;2m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [48;2;2;0;0m [48;2;212;40;42m [48;2;178;24;24m [48;2;2;2;0m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;1;3;1m [48;2;212;42;40m [48;2;223;177;142m [48;2;212;42;43m [48;2;184;135;88m [48;2;2;0;0m [49m [49m [49m [49m [49m [49m [m +[48;2;0;0;0m [48;2;177;26;24m [48;2;212;42;40m [48;2;185;132;88m [48;2;157;108;67m [48;2;186;132;88m [48;2;0;0;0m [49m [49m [49m [49m [m +[49m [49m [48;2;1;2;0m [48;2;99;60;27m [48;2;123;81;45m [48;2;159;109;66m [48;2;156;111;67m [48;2;1;1;2m [49m [49m [49m [49m [m +[49m [49m [49m [49m [48;2;2;0;0m [48;2;97;61;27m [48;2;123;81;44m [48;2;2;0;0m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;3;1;0m [48;2;1;1;2m [48;2;0;0;0m [48;2;227;213;170m [48;2;2;2;1m [48;2;2;0;0m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;0;0m [48;2;255;247;220m [48;2;0;0;0m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;0;0;0m [49m [49m [m diff --git a/src/main/resources/textures/items/wooden_axe.ans b/src/main/resources/textures/items/wooden_axe.ans index ba5932a..7a1cbf6 100644 --- a/src/main/resources/textures/items/wooden_axe.ans +++ b/src/main/resources/textures/items/wooden_axe.ans @@ -1,26 +1,25 @@ -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;232m▒[38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;190;48;5;233m░[38;5;222;48;5;234m [38;5;222;48;5;234m [38;5;222;48;5;234m [38;5;222;48;5;234m [38;5;222;48;5;234m [38;5;222;48;5;234m [38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;222;48;5;58m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;130;48;5;233m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;130;48;5;233m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;222;48;5;235m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;166;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;222;48;5;235m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;84;48;5;232m▒[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;52;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;70;48;5;233m▓[38;5;70;48;5;233m▓[38;5;70;48;5;233m▓[38;5;172;48;5;58m░[38;5;172;48;5;58m░[38;5;172;48;5;58m░[38;5;222;48;5;235m [38;5;222;48;5;235m [38;5;222;48;5;235m [38;5;184;48;5;233m [38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;52;48;5;16m░[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;166;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;52;48;5;16m░[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;166;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;222;48;5;58m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m░[38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;172;48;5;234m [38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;179;48;5;94m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;52;48;5;16m░[38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;202;48;5;232m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [38;5;1;48;5;16m [0m -[0m \ No newline at end of file +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;54;54;18m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;54;41;16m [48;2;55;41;16m [48;2;55;41;17m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;56;41;15m [48;2;52;41;18m [48;2;132;101;36m [48;2;134;101;37m [48;2;133;101;36m [48;2;58;41;17m [48;2;55;40;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;51;38;14m [48;2;53;38;17m [48;2;136;102;39m [48;2;134;102;35m [48;2;56;42;15m [48;2;55;41;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;55;41;16m [48;2;92;69;27m [48;2;134;101;39m [48;2;107;81;30m [48;2;107;80;30m [48;2;117;88;32m [48;2;56;41;19m [48;2;55;41;16m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;55;41;16m [48;2;55;41;14m [48;2;132;98;35m [48;2;122;91;34m [48;2;105;81;29m [48;2;107;81;30m [48;2;107;80;30m [48;2;72;54;20m [48;2;73;53;22m [48;2;104;78;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;53;41;16m [48;2;134;101;37m [48;2;123;90;35m [48;2;107;83;30m [48;2;107;81;30m [48;2;107;80;32m [48;2;74;53;22m [48;2;74;53;24m [48;2;103;77;29m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;31;24;10m [48;2;31;24;8m [48;2;134;101;36m [48;2;126;93;35m [48;2;118;88;32m [48;2;107;81;30m [48;2;106;82;33m [48;2;88;67;24m [48;2;106;82;31m [48;2;108;81;29m [48;2;40;29;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;26;16;2m [48;2;25;17;2m [48;2;27;17;1m [48;2;71;51;17m [48;2;71;48;13m [48;2;106;82;34m [48;2;89;65;21m [48;2;89;64;23m [48;2;111;86;40m [48;2;30;18;5m [48;2;31;24;10m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;30;24;10m [48;2;31;24;10m [48;2;73;54;22m [48;2;73;50;16m [48;2;107;81;30m [48;2;89;67;22m [48;2;88;67;23m [48;2;107;81;30m [48;2;29;21;10m [48;2;31;24;10m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;72;53;21m [48;2;73;54;22m [48;2;105;78;30m [48;2;107;82;37m [48;2;40;28;10m [48;2;106;78;27m [48;2;107;81;30m [48;2;29;21;6m [48;2;31;24;10m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;74;54;22m [48;2;89;68;26m [48;2;104;79;31m [48;2;73;53;21m [48;2;74;57;24m [48;2;38;32;10m [48;2;69;51;19m [48;2;69;53;18m [48;2;67;54;18m [48;2;27;19;8m [48;2;32;24;10m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;73;54;22m [48;2;101;77;30m [48;2;137;101;38m [48;2;40;29;10m [48;2;41;29;10m [49m [49m [48;2;30;24;8m [48;2;31;24;10m [48;2;29;24;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;73;54;22m [48;2;72;55;22m [48;2;105;78;30m [48;2;72;55;19m [48;2;40;29;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;73;50;16m [48;2;71;52;18m [48;2;109;83;36m [48;2;72;57;23m [48;2;40;29;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;72;54;22m [48;2;105;81;34m [48;2;103;77;29m [48;2;40;29;10m [48;2;37;30;9m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;72;54;19m [48;2;73;54;23m [48;2;137;100;37m [48;2;34;23;2m [48;2;41;30;11m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;72;52;21m [48;2;72;54;24m [48;2;136;101;36m [48;2;36;25;1m [48;2;40;29;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;73;54;22m [48;2;105;76;30m [48;2;103;77;29m [48;2;40;29;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;72;53;22m [48;2;70;50;17m [48;2;139;106;43m [48;2;36;25;5m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;72;53;22m [48;2;70;50;20m [48;2;136;103;39m [48;2;39;31;13m [48;2;37;28;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;40;29;8m [48;2;40;31;10m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [48;2;48;24;12m [48;2;46;23;11m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m diff --git a/src/main/resources/textures/oak_door/bottom.ans b/src/main/resources/textures/oak_door/bottom.ans new file mode 100644 index 0000000..e0f9573 --- /dev/null +++ b/src/main/resources/textures/oak_door/bottom.ans @@ -0,0 +1,25 @@ +[48;2;107;111;122m [48;2;120;112;104m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;126;98;55m [48;2;126;98;54m [48;2;181;140;80m [48;2;147;114;64m [48;2;102;80;44m [48;2;150;116;67m [48;2;150;116;64m [48;2;150;116;65m [48;2;81;61;37m [48;2;81;61;36m [48;2;174;136;77m [48;2;181;141;80m [48;2;148;116;65m [48;2;133;106;59m [48;2;126;98;53m [m +[48;2;125;116;107m [48;2;133;116;94m [48;2;151;116;65m [48;2;110;85;47m [48;2;155;120;68m [48;2;159;123;69m [48;2;159;122;69m [48;2;143;111;62m [48;2;142;111;62m [48;2;176;137;77m [48;2;147;114;65m [48;2;110;85;47m [48;2;155;120;68m [48;2;159;123;69m [48;2;114;86;49m [48;2;112;86;49m [48;2;172;134;77m [48;2;176;137;77m [48;2;150;116;65m [48;2;130;101;58m [48;2;118;92;51m [m +[48;2;167;130;77m [48;2;161;125;73m [48;2;150;116;64m [48;2;126;98;55m [48;2;166;130;77m [48;2;181;141;80m [48;2;183;141;80m [48;2;181;141;80m [48;2;166;130;77m [48;2;148;116;67m [48;2;126;98;55m [48;2;166;130;77m [48;2;167;131;77m [48;2;181;141;80m [48;2;166;130;77m [48;2;164;130;77m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;81;44m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;118;65m [48;2;166;130;77m [48;2;150;116;65m [48;2;130;101;56m [48;2;126;98;55m [48;2;136;105;59m [48;2;150;116;64m [48;2;150;116;65m [48;2;126;98;55m [48;2;127;98;55m [48;2;126;98;55m [48;2;148;115;64m [48;2;150;116;65m [48;2;150;116;67m [48;2;120;93;51m [48;2;102;80;44m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;166;130;77m [48;2;150;116;65m [48;2;150;116;64m [48;2;150;116;65m [48;2;128;101;56m [48;2;126;98;55m [48;2;136;105;59m [48;2;150;116;65m [48;2;126;98;55m [48;2;148;114;64m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;82;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;81;61;36m [48;2;103;80;44m [48;2;103;82;44m [48;2;103;80;44m [48;2;102;80;44m [48;2;103;80;44m [48;2;103;80;45m [48;2;150;116;66m [48;2;119;91;52m [48;2;81;61;36m [48;2;103;80;44m [48;2;103;81;44m [48;2;103;80;44m [48;2;102;80;44m [48;2;103;80;44m [48;2;162;126;74m [48;2;166;131;77m [48;2;150;116;65m [48;2;106;81;46m [48;2;81;61;36m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;117;65m [48;2;103;80;44m [48;2;101;80;44m [48;2;150;116;65m [48;2;148;116;65m [48;2;150;116;65m [48;2;166;128;77m [48;2;138;108;62m [48;2;103;82;44m [48;2;150;116;65m [48;2;150;116;64m [48;2;150;116;65m [48;2;165;129;76m [48;2;166;130;77m [48;2;150;116;65m [48;2;135;104;56m [48;2;126;98;55m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;150;116;64m [48;2;150;116;65m [48;2;165;130;77m [48;2;138;108;62m [48;2;103;80;44m [48;2;150;116;65m [48;2;165;129;76m [48;2;166;130;77m [48;2;150;116;65m [48;2;135;105;58m [48;2;126;98;55m [m +[48;2;184;148;95m [48;2;173;137;85m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;148;116;65m [48;2;150;116;65m [48;2;130;101;56m [48;2;126;98;55m [48;2;181;140;80m [48;2;146;114;64m [48;2;103;80;44m [48;2;150;116;65m [48;2;151;116;65m [48;2;150;116;65m [48;2;126;98;55m [48;2;177;138;78m [48;2;181;141;80m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;185;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;150;116;67m [48;2;150;116;65m [48;2;130;101;56m [48;2;126;98;55m [48;2;126;98;53m [48;2;181;141;80m [48;2;146;114;64m [48;2;103;80;44m [48;2;150;116;65m [48;2;131;101;56m [48;2;130;101;56m [48;2;126;98;55m [48;2;177;138;78m [48;2;181;141;80m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;148;116;65m [48;2;126;98;55m [48;2;181;141;80m [48;2;145;114;64m [48;2;103;80;44m [48;2;150;116;64m [48;2;150;116;65m [48;2;126;99;55m [48;2;126;98;55m [48;2;179;138;78m [48;2;181;141;80m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;82;44m [m +[48;2;184;150;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;126;98;55m [48;2;167;130;77m [48;2;181;141;80m [48;2;181;143;80m [48;2;181;141;80m [48;2;181;143;80m [48;2;166;131;77m [48;2;148;116;67m [48;2;126;98;55m [48;2;166;130;77m [48;2;167;131;77m [48;2;181;141;80m [48;2;181;141;82m [48;2;181;141;80m [48;2;166;130;77m [48;2;126;98;55m [48;2;97;74;42m [48;2;83;61;36m [m +[48;2;173;139;86m [48;2;167;131;79m [48;2;150;116;65m [48;2;146;114;66m [48;2;146;112;66m [48;2;166;130;77m [48;2;172;135;78m [48;2;173;133;78m [48;2;165;128;72m [48;2;155;121;68m [48;2;153;119;67m [48;2;146;114;66m [48;2;142;110;63m [48;2;138;107;62m [48;2;166;130;77m [48;2;173;135;78m [48;2;165;130;72m [48;2;165;128;72m [48;2;153;119;67m [48;2;146;114;66m [48;2;146;114;67m [48;2;126;98;55m [48;2;111;86;49m [48;2;103;79;45m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;166;130;77m [48;2;150;116;65m [48;2;130;101;56m [48;2;126;98;55m [48;2;136;105;59m [48;2;150;116;65m [48;2;166;130;77m [48;2;150;116;65m [48;2;150;116;64m [48;2;126;98;55m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;81;61;36m [48;2;103;80;44m [48;2;103;80;46m [48;2;150;116;65m [48;2;139;108;60m [48;2;126;98;55m [48;2;103;80;44m [48;2;103;81;44m [48;2;103;80;44m [48;2;162;126;74m [48;2;166;128;76m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;176;146;101m [48;2;168;139;90m [48;2;150;118;65m [48;2;83;63;37m [48;2;108;84;46m [48;2;110;84;46m [48;2;108;84;46m [48;2;108;85;44m [48;2;108;84;46m [48;2;152;117;66m [48;2;139;108;60m [48;2;123;95;53m [48;2;108;84;46m [48;2;108;86;46m [48;2;108;84;46m [48;2;162;127;75m [48;2;166;130;77m [48;2;150;118;65m [48;2;121;93;51m [48;2;103;80;44m [m +[48;2;128;139;149m [48;2;134;131;122m [48;2;150;116;65m [48;2;103;80;44m [48;2;148;116;65m [48;2;150;116;67m [48;2;150;116;65m [48;2;150;116;67m [48;2;150;116;65m [48;2;166;130;77m [48;2;138;108;62m [48;2;102;80;44m [48;2;150;116;65m [48;2;165;129;76m [48;2;166;130;77m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;107;111;122m [48;2;120;112;104m [48;2;148;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;130;101;56m [48;2;126;98;55m [48;2;181;141;80m [48;2;144;112;64m [48;2;103;80;44m [48;2;150;116;65m [48;2;126;98;55m [48;2;177;138;79m [48;2;181;141;80m [48;2;151;116;65m [48;2;106;81;46m [48;2;81;60;36m [m +[48;2;107;111;122m [48;2;120;112;104m [48;2;150;116;65m [48;2;103;80;44m [48;2;103;80;46m [48;2;150;116;65m [48;2;150;116;64m [48;2;150;116;65m [48;2;150;116;67m [48;2;130;101;56m [48;2;126;98;55m [48;2;181;143;80m [48;2;146;114;64m [48;2;103;80;44m [48;2;150;117;64m [48;2;150;116;65m [48;2;151;116;65m [48;2;126;98;55m [48;2;177;138;78m [48;2;181;141;80m [48;2;148;116;65m [48;2;106;81;46m [48;2;81;61;36m [m +[48;2;166;130;77m [48;2;161;124;73m [48;2;151;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;126;98;55m [48;2;181;141;80m [48;2;144;115;64m [48;2;103;82;44m [48;2;150;116;65m [48;2;126;98;55m [48;2;177;139;78m [48;2;181;141;80m [48;2;150;116;67m [48;2;135;104;58m [48;2;126;98;52m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;124;96;54m [48;2;165;129;76m [48;2;179;138;77m [48;2;179;139;79m [48;2;177;137;78m [48;2;176;136;78m [48;2;177;136;78m [48;2;166;128;77m [48;2;148;115;67m [48;2;124;96;54m [48;2;165;129;76m [48;2;166;130;76m [48;2;179;139;79m [48;2;177;138;78m [48;2;167;131;79m [48;2;166;130;77m [48;2;127;99;55m [48;2;112;87;48m [48;2;104;81;44m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;126;98;55m [48;2;166;130;77m [48;2;181;141;80m [48;2;183;143;80m [48;2;181;141;80m [48;2;166;130;77m [48;2;148;116;67m [48;2;126;98;55m [48;2;166;130;77m [48;2;167;131;77m [48;2;181;141;80m [48;2;166;130;79m [48;2;164;130;77m [48;2;126;97;55m [48;2;111;86;48m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;165;132;82m [48;2;126;98;55m [48;2;124;99;55m [48;2;126;98;55m [48;2;150;116;65m [48;2;166;130;77m [48;2;166;130;79m [48;2;153;118;67m [48;2;150;116;65m [48;2;126;98;55m [48;2;150;116;65m [48;2;152;117;66m [48;2;166;130;77m [48;2;150;116;65m [48;2;127;99;55m [48;2;126;98;55m [48;2;111;86;48m [48;2;103;80;44m [m +[48;2;133;105;63m [48;2;122;95;56m [48;2;97;74;43m [48;2;106;81;46m [48;2;112;86;51m [48;2;108;82;47m [48;2;106;81;46m [48;2;97;74;43m [48;2;106;81;46m [48;2;107;82;47m [48;2;112;86;51m [48;2;106;81;46m [48;2;98;75;43m [48;2;97;74;43m [48;2;92;70;40m [48;2;89;68;39m [m +[48;2;103;80;44m [48;2;96;74;41m [48;2;81;61;36m [m diff --git a/src/main/resources/textures/oak_door/bottomclosed.ans b/src/main/resources/textures/oak_door/bottomclosed.ans new file mode 100644 index 0000000..1de16c8 --- /dev/null +++ b/src/main/resources/textures/oak_door/bottomclosed.ans @@ -0,0 +1,25 @@ +[48;2;101;109;117m [48;2;111;99;79m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;85;89;96m [48;2;105;90;70m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;129;102;63m [48;2;123;96;56m [48;2;119;92;51m [48;2;99;76;42m [48;2;98;76;42m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;124;96;55m [48;2;119;92;51m [48;2;100;77;42m [48;2;100;76;42m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;124;96;55m [48;2;119;92;51m [48;2;131;103;60m [48;2;130;102;60m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;140;112;70m [48;2;128;100;59m [48;2;119;92;51m [48;2;88;68;40m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;49m [48;2;64;48;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;73m [48;2;130;102;61m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;38m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;89;69;38m [48;2;88;68;38m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;100;77;43m [48;2;100;76;42m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;124;96;55m [48;2;119;94;51m [48;2;131;103;61m [48;2;130;102;60m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;135;108;66m [48;2;126;98;57m [48;2;119;92;51m [48;2;114;87;51m [48;2;112;86;50m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;64;48;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;101;110;118m [48;2;111;99;82m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;32m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;95;102;110m [48;2;109;96;76m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;85;88;96m [48;2;105;90;70m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;124;96;55m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;124;96;55m [48;2;119;92;51m [48;2;89;69;38m [48;2;88;68;38m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;124;96;55m [48;2;119;92;51m [48;2;100;77;43m [48;2;100;76;42m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;119;94;56m [48;2;100;77;43m [48;2;100;76;42m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;118;94;58m [48;2;99;77;46m [48;2;84;64;36m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;81;63;35m [48;2;73;56;32m [48;2;64;48;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m diff --git a/src/main/resources/textures/oak_door/items/oak_door.ans b/src/main/resources/textures/oak_door/items/oak_door.ans new file mode 100644 index 0000000..46d42cd --- /dev/null +++ b/src/main/resources/textures/oak_door/items/oak_door.ans @@ -0,0 +1,25 @@ +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;158;130;75m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;107;111;122m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;158;130;75m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;111;122m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;158;130;75m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;159;134;77m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;157;130;75m [48;2;158;131;75m [48;2;159;132;77m [48;2;157;130;75m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;158;130;75m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;158;130;75m [48;2;159;132;77m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;106;97;86m [48;2;159;132;77m [48;2;158;132;76m [48;2;158;130;76m [48;2;159;132;77m [48;2;158;132;76m [48;2;154;132;86m [48;2;128;138;148m [48;2;106;110;122m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;107;111;122m [48;2;159;132;77m [48;2;155;132;86m [48;2;128;139;149m [48;2;107;111;122m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;159;132;76m [48;2;126;98;55m [48;2;140;112;64m [48;2;159;132;77m [48;2;126;98;55m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;126;98;55m [48;2;128;99;56m [48;2;129;100;56m [48;2;142;114;65m [48;2;159;132;77m [48;2;126;98;55m [48;2;129;100;56m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;126;98;55m [48;2;145;112;63m [48;2;150;116;65m [48;2;153;123;70m [48;2;159;132;77m [48;2;126;98;55m [48;2;129;102;56m [48;2;150;116;65m [48;2;159;132;77m [48;2;153;136;85m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;79m [48;2;159;132;77m [48;2;159;133;77m [48;2;159;132;77m [48;2;159;134;77m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;153;136;85m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;107;111;122m [48;2;159;132;77m [48;2;126;98;55m [48;2;140;112;64m [48;2;159;132;77m [48;2;126;98;55m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;85;55m [48;2;159;132;77m [48;2;126;98;55m [48;2;144;111;62m [48;2;148;114;64m [48;2;153;122;69m [48;2;159;132;77m [48;2;126;98;55m [48;2;128;100;56m [48;2;148;114;64m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;126;98;55m [48;2;145;112;63m [48;2;150;116;65m [48;2;153;123;68m [48;2;159;132;77m [48;2;126;98;55m [48;2;129;100;56m [48;2;150;116;65m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;159;132;77m [48;2;153;136;68m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;125;102;60m [48;2;119;102;51m [49m [49m [49m [49m [49m [49m [49m [49m [m +[49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;105;84;51m [48;2;102;85;51m [49m [49m [49m [49m [49m [49m [49m [49m [m diff --git a/src/main/resources/textures/oak_door/top.ans b/src/main/resources/textures/oak_door/top.ans new file mode 100644 index 0000000..b960535 --- /dev/null +++ b/src/main/resources/textures/oak_door/top.ans @@ -0,0 +1,25 @@ +[48;2;184;148;95m [48;2;178;142;89m [48;2;166;130;77m [48;2;184;148;95m [48;2;166;130;77m [48;2;173;137;84m [48;2;184;148;95m [48;2;166;130;77m [48;2;182;146;93m [48;2;184;148;95m [48;2;162;128;76m [48;2;150;116;65m [m +[48;2;178;142;89m [48;2;172;137;84m [48;2;160;125;73m [48;2;161;125;73m [48;2;173;138;85m [48;2;161;125;73m [48;2;166;131;78m [48;2;173;138;85m [48;2;172;138;85m [48;2;161;125;73m [48;2;172;137;84m [48;2;173;138;85m [48;2;149;117;68m [48;2;135;104;58m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;81;61;36m [48;2;103;80;44m [48;2;150;118;65m [48;2;119;91;52m [48;2;81;61;36m [48;2;103;80;44m [48;2;147;113;63m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;81;61;36m [48;2;103;80;44m [48;2;150;116;65m [48;2;119;91;52m [48;2;81;61;36m [48;2;103;80;44m [48;2;103;82;44m [48;2;103;80;44m [48;2;147;113;63m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;166;130;77m [48;2;139;108;62m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;165;129;76m [48;2;166;130;77m [48;2;150;116;65m [48;2;106;81;46m [48;2;81;61;36m [m +[48;2;128;139;149m [48;2;134;131;122m [48;2;150;116;65m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;181;141;80m [48;2;146;114;64m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;180;140;80m [48;2;181;141;80m [48;2;150;116;65m [48;2;135;104;58m [48;2;126;98;55m [m +[48;2;128;139;149m [48;2;134;131;122m [48;2;150;116;65m [48;2;103;80;44m [48;2;103;81;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;181;141;80m [48;2;146;114;64m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;180;140;80m [48;2;181;141;80m [48;2;150;116;65m [48;2;135;104;58m [48;2;126;98;55m [m +[48;2;111;111;111m [48;2;123;112;96m [48;2;150;116;65m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;166;130;77m [48;2;138;108;62m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;165;129;76m [48;2;166;130;77m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;155;126;81m [48;2;153;123;77m [48;2;150;116;65m [48;2;121;94;52m [48;2;165;129;76m [48;2;181;140;80m [48;2;168;131;77m [48;2;165;129;76m [48;2;166;130;77m [48;2;146;114;66m [48;2;121;94;52m [48;2;165;129;76m [48;2;167;130;76m [48;2;181;140;80m [48;2;165;129;76m [48;2;166;130;77m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;126;98;55m [48;2;166;130;77m [48;2;181;141;80m [48;2;168;132;77m [48;2;166;130;77m [48;2;148;116;67m [48;2;126;98;55m [48;2;166;130;77m [48;2;167;131;77m [48;2;181;141;80m [48;2;166;130;77m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;81;61;36m [48;2;103;80;44m [48;2;103;80;45m [48;2;150;116;65m [48;2;119;91;52m [48;2;81;61;36m [48;2;103;80;44m [48;2;147;113;63m [48;2;150;116;65m [48;2;106;81;46m [48;2;81;61;36m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;92;70;40m [48;2;102;80;44m [48;2;158;123;71m [48;2;129;100;57m [48;2;92;70;40m [48;2;102;80;44m [48;2;155;120;69m [48;2;158;123;71m [48;2;150;116;65m [48;2;120;93;52m [48;2;103;79;45m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;117;65m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;166;130;77m [48;2;138;108;62m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;165;129;76m [48;2;166;128;77m [48;2;150;116;65m [48;2;135;104;58m [48;2;126;98;55m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;102;80;44m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;181;141;80m [48;2;146;114;64m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;180;140;80m [48;2;181;141;80m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;168;132;79m [48;2;162;127;74m [48;2;150;116;65m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;179;139;79m [48;2;145;113;64m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;178;138;80m [48;2;179;139;79m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;166;130;77m [48;2;138;108;62m [48;2;103;80;44m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [48;2;165;129;76m [48;2;166;130;77m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;126;98;55m [48;2;166;130;77m [48;2;181;141;80m [48;2;168;132;77m [48;2;166;130;77m [48;2;148;116;67m [48;2;126;98;55m [48;2;166;130;77m [48;2;167;131;77m [48;2;181;141;80m [48;2;166;130;77m [48;2;150;116;65m [48;2;106;81;46m [48;2;81;61;36m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;126;98;55m [48;2;166;130;77m [48;2;181;141;80m [48;2;168;132;77m [48;2;166;130;77m [48;2;164;130;77m [48;2;148;116;67m [48;2;126;98;55m [48;2;166;130;77m [48;2;167;131;77m [48;2;181;141;80m [48;2;166;130;77m [48;2;150;116;65m [48;2;106;81;46m [48;2;81;61;36m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;166;130;77m [48;2;150;116;65m [48;2;130;101;56m [48;2;126;98;54m [48;2;126;98;55m [48;2;143;112;64m [48;2;166;130;77m [48;2;150;116;65m [48;2;126;98;55m [48;2;150;116;65m [48;2;135;104;58m [48;2;126;98;55m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;117;65m [48;2;86;65;38m [48;2;106;83;46m [48;2;105;82;45m [48;2;104;81;44m [48;2;148;114;64m [48;2;121;93;53m [48;2;86;65;38m [48;2;106;83;46m [48;2;105;82;45m [48;2;105;83;45m [48;2;104;81;44m [48;2;145;112;63m [48;2;148;114;64m [48;2;150;116;65m [48;2;121;94;52m [48;2;104;81;44m [m +[48;2;184;148;95m [48;2;173;138;85m [48;2;150;116;65m [48;2;81;61;36m [48;2;103;80;44m [48;2;150;116;65m [48;2;119;91;52m [48;2;81;61;36m [48;2;103;80;44m [48;2;147;113;63m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;166;130;77m [48;2;161;125;73m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;117;65m [48;2;150;116;65m [48;2;166;130;77m [48;2;138;108;62m [48;2;103;80;44m [48;2;150;116;65m [48;2;128;139;149m [48;2;108;112;123m [48;2;107;111;122m [48;2;150;116;65m [48;2;120;93;51m [48;2;103;80;44m [m +[48;2;142;135;122m [48;2;144;129;104m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;137;106;59m [48;2;135;104;58m [48;2;166;130;77m [48;2;138;108;62m [48;2;103;80;44m [48;2;150;116;65m [48;2;114;121;132m [48;2;98;90;78m [48;2;117;102;80m [48;2;118;102;80m [48;2;150;116;65m [48;2;112;86;48m [48;2;89;68;39m [m +[48;2;128;139;149m [48;2;134;131;122m [48;2;150;116;65m [48;2;103;80;44m [48;2;150;116;65m [48;2;130;101;56m [48;2;126;98;55m [48;2;166;130;77m [48;2;138;108;62m [48;2;103;80;44m [48;2;150;116;65m [48;2;107;111;122m [48;2;81;61;36m [48;2;123;95;53m [48;2;126;98;55m [48;2;150;116;65m [48;2;106;81;46m [48;2;81;61;36m [m diff --git a/src/main/resources/textures/oak_door/topclosed.ans b/src/main/resources/textures/oak_door/topclosed.ans new file mode 100644 index 0000000..02966ff --- /dev/null +++ b/src/main/resources/textures/oak_door/topclosed.ans @@ -0,0 +1,25 @@ +[48;2;145;117;75m [48;2;134;106;65m [48;2;131;103;61m [48;2;130;102;60m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;142;114;72m [48;2;130;102;61m [48;2;127;99;58m [48;2;126;98;58m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;122;95;53m [48;2;119;92;51m [48;2;118;92;50m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;144;116;74m [48;2;126;98;57m [48;2;119;92;51m [48;2;66;50;29m [48;2;66;50;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;126;99;58m [48;2;119;92;51m [48;2;64;48;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;126;99;58m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;128;114;93m [48;2;121;98;63m [48;2;119;92;51m [48;2;81;61;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;101;110;118m [48;2;114;97;72m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;88;88;88m [48;2;112;91;62m [48;2;119;92;51m [48;2;81;63;34m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;88;88;88m [48;2;112;91;62m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;122;95;53m [48;2;119;92;51m [48;2;100;77;43m [48;2;100;78;42m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;139;111;69m [48;2;124;97;56m [48;2;119;92;51m [48;2;79;60;34m [48;2;78;60;32m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;126;99;58m [48;2;119;92;51m [48;2;64;48;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;119;75m [48;2;127;99;58m [48;2;119;93;51m [48;2;81;63;35m [48;2;80;62;38m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;142;114;72m [48;2;125;98;57m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;122;95;53m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;144;116;74m [48;2;126;98;57m [48;2;119;92;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;126;99;58m [48;2;119;92;51m [48;2;81;63;34m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;126;99;58m [48;2;119;92;51m [48;2;100;77;43m [48;2;100;76;42m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;126;99;58m [48;2;119;92;51m [48;2;117;91;53m [48;2;116;90;52m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;145;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;131;103;61m [48;2;128;102;60m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;147;117;75m [48;2;130;102;61m [48;2;119;92;51m [48;2;64;48;28m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;141;113;71m [48;2;128;101;59m [48;2;119;92;51m [48;2;69;52;30m [48;2;68;52;30m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;131;103;61m [48;2;124;96;55m [48;2;119;92;51m [48;2;81;63;35m [48;2;84;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m +[48;2;101;110;118m [48;2;111;99;80m [48;2;119;93;51m [48;2;81;63;35m [48;2;80;62;34m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [49m [m