From b20f022ba3d68b8e4898d9b42699da723acadff0 Mon Sep 17 00:00:00 2001 From: ms622 <ms622@hdm-stuttgart.de> Date: Thu, 18 Jan 2024 15:03:36 +0100 Subject: [PATCH] update: TileManager.java, RuntimeInfo.java, GameSceneController.java texture and world generation update #85 --- .../Controller/GameSceneController.java | 65 ++++++-------- .../DataStorage/Classes/RuntimeInfo.java | 11 +++ .../battlearena/Model/Map/Biom.java | 8 ++ .../battlearena/Model/Map/TileManager.java | 79 +++++++++++------- src/main/resources/textures/map/NoTexture.png | Bin 0 -> 1523 bytes .../textures/map/{ => bomberman}/box.png | Bin .../map/{ => bomberman}/solidstone.png | Bin .../building/StoneDarkLand00.png | Bin 0 -> 1855 bytes .../building/StoneEndLeftDarkLand01.png | Bin 0 -> 2016 bytes .../building/StoneEndRightDarkLand02.png | Bin 0 -> 1916 bytes .../building/StoneGateDarkLand04.png | Bin 0 -> 2005 bytes .../building/StoneWindowDarkLand03.png | Bin 0 -> 2005 bytes .../ground/GrassDarkLand00.png | Bin 0 -> 1835 bytes .../ground/GrassDarkLand01.png | Bin 0 -> 1974 bytes .../ground/GrassDarkLand03.png | Bin 0 -> 2008 bytes .../ground/GrassPathDarkLand02.png | Bin 0 -> 1981 bytes .../ground/GrassWoodLand00.png} | Bin 1802 -> 1818 bytes .../forrest_biom/ground/GrassWoodLand01.png | Bin 0 -> 1902 bytes .../building/StoneEndLeftGrassLand01.png} | Bin 1953 -> 1985 bytes .../building/StoneEndRightGrassLand02.png | Bin 0 -> 1977 bytes .../building/StoneGateGrassLand04.png | Bin 0 -> 2096 bytes .../building/StoneGrassLand00.png} | Bin 1859 -> 1877 bytes .../grass_biom/building/StoneGrassLand05.png | Bin 0 -> 2091 bytes .../building/StoneWindowGrassLand03.png | Bin 0 -> 2136 bytes .../ground/GrassGrassLand00.png} | Bin 1800 -> 1818 bytes .../ground/GrassGrassLand01.png} | Bin 1956 -> 1972 bytes .../grass_biom/ground/GrassGrassLand03.png | Bin 0 -> 1933 bytes .../grass_biom/ground/GrassGrassLand04.png | Bin 0 -> 1976 bytes .../ground/GrassPathGrassLand02.png | Bin 0 -> 1949 bytes .../{map => objects/big_bomb}/bigbomb.png | Bin .../textures/{map => objects/bomb}/bomb.png | Bin .../textures/{map => objects/heal}/heart.png | Bin .../{map => objects/vfx}/bigexplosion.png | Bin .../{map => objects/vfx}/middleexplosion.png | Bin .../{map => objects/vfx}/smallexplosion.png | Bin 35 files changed, 95 insertions(+), 68 deletions(-) create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Model/Map/Biom.java create mode 100644 src/main/resources/textures/map/NoTexture.png rename src/main/resources/textures/map/{ => bomberman}/box.png (100%) rename src/main/resources/textures/map/{ => bomberman}/solidstone.png (100%) create mode 100644 src/main/resources/textures/map/dark_lands_biom/building/StoneDarkLand00.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/building/StoneEndLeftDarkLand01.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/building/StoneEndRightDarkLand02.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/building/StoneGateDarkLand04.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/building/StoneWindowDarkLand03.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand00.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand01.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand03.png create mode 100644 src/main/resources/textures/map/dark_lands_biom/ground/GrassPathDarkLand02.png rename src/main/resources/textures/map/{Grass01.png => forrest_biom/ground/GrassWoodLand00.png} (84%) create mode 100644 src/main/resources/textures/map/forrest_biom/ground/GrassWoodLand01.png rename src/main/resources/textures/map/{Stone02.png => grass_biom/building/StoneEndLeftGrassLand01.png} (85%) create mode 100644 src/main/resources/textures/map/grass_biom/building/StoneEndRightGrassLand02.png create mode 100644 src/main/resources/textures/map/grass_biom/building/StoneGateGrassLand04.png rename src/main/resources/textures/map/{Stone01.png => grass_biom/building/StoneGrassLand00.png} (85%) create mode 100644 src/main/resources/textures/map/grass_biom/building/StoneGrassLand05.png create mode 100644 src/main/resources/textures/map/grass_biom/building/StoneWindowGrassLand03.png rename src/main/resources/textures/map/{Grass02.png => grass_biom/ground/GrassGrassLand00.png} (84%) rename src/main/resources/textures/map/{Grass04.png => grass_biom/ground/GrassGrassLand01.png} (63%) create mode 100644 src/main/resources/textures/map/grass_biom/ground/GrassGrassLand03.png create mode 100644 src/main/resources/textures/map/grass_biom/ground/GrassGrassLand04.png create mode 100644 src/main/resources/textures/map/grass_biom/ground/GrassPathGrassLand02.png rename src/main/resources/textures/{map => objects/big_bomb}/bigbomb.png (100%) rename src/main/resources/textures/{map => objects/bomb}/bomb.png (100%) rename src/main/resources/textures/{map => objects/heal}/heart.png (100%) rename src/main/resources/textures/{map => objects/vfx}/bigexplosion.png (100%) rename src/main/resources/textures/{map => objects/vfx}/middleexplosion.png (100%) rename src/main/resources/textures/{map => objects/vfx}/smallexplosion.png (100%) diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java index 0c6e24ee..9f8d05f8 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java @@ -9,6 +9,7 @@ import de.hdm_stuttgart.battlearena.Model.Entity.EntityFactory; import de.hdm_stuttgart.battlearena.Model.Entity.EntityType; import de.hdm_stuttgart.battlearena.Model.Entity.IEntity; import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler; +import de.hdm_stuttgart.battlearena.Model.Map.Biom; import de.hdm_stuttgart.battlearena.Model.Map.TileManager; import javafx.animation.AnimationTimer; @@ -47,47 +48,31 @@ public class GameSceneController implements Initializable { TileManager tileManager; //map data - /*String mapString = "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 " + - "4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " + - "4 2 1 1 1 1 1 2 2 2 1 1 1 1 2 1 1 3 " + - "4 1 1 1 2 2 4 3 3 1 4 3 3 3 3 2 2 3 " + - "4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 1 2 3 " + - "4 1 1 1 2 2 4 1 3 3 3 1 1 1 3 2 2 3 " + - "4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 2 1 3 " + - "4 1 5 1 2 2 4 3 3 1 4 3 3 3 3 2 1 3 " + - "4 6 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " + - "4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 1 3 " + - "4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 1 1 3 " + - "4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 2 2 3 " + - "4 1 1 1 1 1 4 3 3 1 3 3 3 3 3 1 2 3 " + - "4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " + - "4 1 1 2 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " + - "4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 " + - "4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 " + - "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ";*/ - String mapString = "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + - "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + - "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 "; + + String mapString = "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 3 " + + "4 9 10 9 10 9 10 9 10 9 10 9 10 9 10 9 10 3 " + + "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 "; + int horizontalTileCount = 18; int verticalTileCount = 18; - int diffTileCount = 12; + int diffTileCount = 30; int scaledTileSize = 48; - + private final Biom biom = runtimeInfo.getMapBiom(); @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -104,7 +89,8 @@ public class GameSceneController implements Initializable { playerTwoClass, this, PlayerMode.PLAYER_TWO); } - tileManager = new TileManager(graphicsContext2D, diffTileCount, horizontalTileCount, verticalTileCount, mapString); + tileManager = new TileManager(graphicsContext2D, diffTileCount, horizontalTileCount, + verticalTileCount, mapString, biom); runtimeInfo.setGameState(GameState.PLAYING); @@ -135,7 +121,6 @@ public class GameSceneController implements Initializable { tileManager.renderMap(); player.renderEntity(graphicsContext); enemy.renderEntity(graphicsContext); - } public IEntity getEnemy() { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java index c1d4f746..876b1330 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/RuntimeInfo.java @@ -6,6 +6,7 @@ import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.ParserE import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities.HashGenerator; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities.Parser; import de.hdm_stuttgart.battlearena.Model.Entity.EntityClass; +import de.hdm_stuttgart.battlearena.Model.Map.Biom; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -26,6 +27,8 @@ public class RuntimeInfo { private EntityClass playerOneClass = EntityClass.HUMAN; private EntityClass playerTwoClass = EntityClass.HUMAN; + private Biom mapBiom = Biom.GRASS; //Default value: GRASS + private RuntimeInfo(){}; @@ -90,6 +93,14 @@ public class RuntimeInfo { this.playerTwoClass = playerTwoClass; } + public Biom getMapBiom() { + return mapBiom; + } + + public void setMapBiom(Biom mapBiom) { + this.mapBiom = mapBiom; + } + public int gameTimeInHours(){ return persistenceInst.getStatistics().getGameTime() / 3600; } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/Biom.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/Biom.java new file mode 100644 index 00000000..ee6ca402 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/Biom.java @@ -0,0 +1,8 @@ +package de.hdm_stuttgart.battlearena.Model.Map; + +public enum Biom { + BOMBERMAN, + DARK_LANDS, + FORREST, + GRASS +} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java index 81bdb3cd..9b1347d9 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java @@ -20,7 +20,7 @@ public class TileManager { private final int verticalTileCount; public TileManager(GraphicsContext graphicsContext2D, int diffTileCount, - int horizontalTileCount, int verticalTileCount, String mapString) { + int horizontalTileCount, int verticalTileCount, String mapString, Biom biom) { this.graphicsContext2D = graphicsContext2D; this.horizontalTileCount = horizontalTileCount; this.verticalTileCount = verticalTileCount; @@ -28,36 +28,59 @@ public class TileManager { tileSet = new BackgroundTile[diffTileCount]; tileMap = new int[horizontalTileCount][verticalTileCount]; - createTiles(); + createTiles(biom); generateMap(mapString, horizontalTileCount, verticalTileCount); } - private void createTiles() { - try { - tileSet[0] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Grass01.png")))); - tileSet[1] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Grass02.png")))); - tileSet[2] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Grass04.png")))); - tileSet[3] = TileFactory.createTile(TileType.NON_WALKABLE, TileType.DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Stone01.png")))); - tileSet[4] = TileFactory.createTile(TileType.NON_WALKABLE, TileType.DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Stone02.png")))); - tileSet[5] = TileFactory.createTile(TileType.WALKABLE,TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/heart.png")))); - tileSet[6] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/bomb.png")))); - tileSet[7] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/bigbomb.png")))); - tileSet[8] = TileFactory.createTile(TileType.WALKABLE,TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/middleexplosion.png")))); - tileSet[9] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/box.png")))); - tileSet[10] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/solidstone.png")))); - } catch (Exception e) { - log.error(e); + //index 0-9: WALKABLE + NON_DESTRUCTIBLE, index 10-19: NON_WALKABLE + NON_DESTRUCTIBLE, index 20-29: DESTRUCTIBLE + private void createTiles(Biom biom) { + if (biom == Biom.GRASS) { + try { + //Textures of walkable tiles + tileSet[0] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/ground/GrassGrassLand00.png")))); + tileSet[1] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/ground/GrassGrassLand01.png")))); + tileSet[2] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/ground/GrassPathGrassLand02.png")))); + tileSet[3] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/ground/GrassGrassLand03.png")))); + tileSet[4] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + tileSet[5] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + tileSet[6] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + tileSet[7] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + tileSet[8] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + tileSet[9] = TileFactory.createTile(TileType.WALKABLE, TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + //Textures of solid tiles + tileSet[10] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/building/StoneGrassLand00.png")))); + tileSet[11] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/building/StoneEndLeftGrassLand01.png")))); + tileSet[12] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/building/StoneEndRightGrassLand02.png")))); + tileSet[13] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/building/StoneWindowGrassLand03.png")))); + tileSet[14] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/building/StoneGateGrassLand04.png")))); + tileSet[15] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/building/StoneGrassLand05.png")))); + tileSet[16] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/grass_biom/ground/GrassGrassLand04.png")))); + tileSet[17] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + tileSet[18] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + tileSet[19] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/NoTexture.png")))); + } catch (Exception e) { + log.error(e); + } } } diff --git a/src/main/resources/textures/map/NoTexture.png b/src/main/resources/textures/map/NoTexture.png new file mode 100644 index 0000000000000000000000000000000000000000..97d81e90559b742fa2098131248ce24bc7675069 GIT binary patch literal 1523 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xgawnq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDB1bthon}NloqAh=tGpDYKMrTnrfqu#Q`=TZ(BtMr55Msl!5}@&d}J%1{@eDqKGJf z=!n3o16dSZM?gk?Nj@-16=f!S=9Q!t6%+xJ7uZIaeYjPin}x7EG%vHn4rTzFFp@5$ z=&^DvDk;w|$_@cX1yVTTR0A~!5~fIL6p{hJ;SbCKc3d|4@Z4m_^)i_6Gcbdxc)B=- zSO_NnQU37Ro|(0wlWA|l+Qn=J20d*DGb9>}4j)*~%uvV3tdc!5?KLPzdb;|#taD0e F0szlD>+b*n literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/box.png b/src/main/resources/textures/map/bomberman/box.png similarity index 100% rename from src/main/resources/textures/map/box.png rename to src/main/resources/textures/map/bomberman/box.png diff --git a/src/main/resources/textures/map/solidstone.png b/src/main/resources/textures/map/bomberman/solidstone.png similarity index 100% rename from src/main/resources/textures/map/solidstone.png rename to src/main/resources/textures/map/bomberman/solidstone.png diff --git a/src/main/resources/textures/map/dark_lands_biom/building/StoneDarkLand00.png b/src/main/resources/textures/map/dark_lands_biom/building/StoneDarkLand00.png new file mode 100644 index 0000000000000000000000000000000000000000..7141744f6029a09af2e65b7af0f5f766042ca75b GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh69tq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA@&<<maWjBo<}+B<7_U7})4T6r&mf5k)oIMjwkaY(Sp3iVR9E&d(_Y1;3r4v5^fp zNKix(5dqN=fmH{xD7ub-jQo;(V8SZOO!mwxNi8ZU0wyxBjWGLgt3WpkVR>j?W{Dll z05oAFT}Y8+<ycfwo?nz50*(-j(8Q?{Y8oVDk<u$9Gk{|Om>cZ4Z1mwd%Z{tdYi}7a zC#QJ2IEGjVrcU<tJ8U4(dVFGFHKW*u6;WO)FAQ&NbV@ocY9Sq6Ces||wNRA%+=Ney zALO6$o?Eu)M)LXd)y9)s+IJs6H)+jwZ?o)s)5GFpcAxw7@n*#Ic@yTv{=R(s)y+e@ z)@{B~{ZD&w;TIK|i=2}tRB#CBG}Tz1?N~5X!}<9fH%|*eaZal#+uxpgc3FG(-ktU) zl`B<Gb1ZuGC#!z%v5;F6SGX@_Y}>d*CARvdPHfLdN2QDa(WVzuJ$FoA;eN&6XHEL= zi6=dG2Q0|SoHEVrr0hXOmiw#ICO`L|@M7WPBi#ZfQuBA5V=}tWAQY^$KVXAKQb^>B zj#H<X?`hk7xpTQvfYPfur;p4@y=?v{S%>#RU0r37$-DBm<x$0NrPh1BKHjldZz1p1 zGb_A1xX<WiS@60f1TUO&Fd$5xgH6?6@w>~xu8%AWK21CL`5?<T`-shzrg5H2eRf^g n=l6JOZc&`P?*a8GxBjyWt-kg6*r6BUpwi9L)z4*}Q$iB}^)HqJ literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/building/StoneEndLeftDarkLand01.png b/src/main/resources/textures/map/dark_lands_biom/building/StoneEndLeftDarkLand01.png new file mode 100644 index 0000000000000000000000000000000000000000..b71227d4148111cc979cfa08e68deac7236530b2 GIT binary patch literal 2016 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xhpdyq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA@&<<maWj=B4<grj@uP7G?V+=A{@I+UP^{pqd2{MYY04AB$^jKw)4N8I)R_pHm8o z1v^7yBO7qYpok*k1EM1Ws}5vQbR7X1`6c<l^i`CZ?3q`RT2xR3Olx2pVfNuxfo>MU z^3c4@5<8dyXu?RkkmAb9v8bdxzbHEd951*66{iNMp^yMZO1+S*0gen{-mv4c(TC?V zJFcleexC*A>+hZ}jv*F;xswihMLUYL{jYw0YlX(ri(Oo<0m4Db8QrbZc4;2fb6FTt zvV8V8#$Ozjvb#&4JMS>c@>#_ltHSH1wNzm8>#u*(Ev{dvQkXo``uYF#bLQ$dZvL3Z z!XWfB^!%w6S5EDERg(WPwN!ffr?XAfujg;eS@~bk^*`Iu+CaCX_b#MAS@wLx_Wj+B z2YKxD>e=}DHXWX9W7F%my?5syZ57X^TR%6>s|d2b^7qgi8;kYxWEa+d;0()n#QVb0 z-i>LuU3g*5^7|I)elHGf37NIy=%d@0GRk<~PqR}H=wBTstk)B;PUgg|#3wgbTtD?< z&gIJ2yH-}-_3P0vkM$AGxffj?dg{b^5y7tAjmsKrB>J7M$Vx_NEAu!@+G@>Of6_bR zV820wLB?z0RZ(qw|H_+%R_Gr~cU-_@K0#8;mf_2zpNFzn*7^urY+!jT{MGW#pUj2D zw^?uQJo`0YHBU%MxPD%E!2i<D={sAmG+f^+R3Ks^RVr}r{<nP7&K)zwC+uxlv88>h zpUDQc{u;ekrY_SG^c@TjTU}|{t1EMSqmhDiqlIF-<Yjg?wI`iyXYyQ`Uw8hGnz=mM z`uFS~%TumTv^&gWDc%t;x~TNA>)x*277mLmJD)2HSNuO#uJKUt&gF$`4lS7>SU6** rmPh~YEqQgXd7aWW=rnD9;QNm8QO*;_>=Z^3Q1R>O>gTe~DWM4fh{oRW literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/building/StoneEndRightDarkLand02.png b/src/main/resources/textures/map/dark_lands_biom/building/StoneEndRightDarkLand02.png new file mode 100644 index 0000000000000000000000000000000000000000..7dfab3fb95f3017893cc077b665dfc96a4736bda GIT binary patch literal 1916 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xhFFuq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA@&<<maWj=A{H>re~D6Bo<}+B<7_U7}@AUG@%*>5k<AbMjwlFY(Rlv6&aLToS#z) ziUvDFW1yKBqKF8A=!n3o16dSZM?gk?Nj@-v6=f!S=9Q!t6%+vz8`wseeYjPin}x7E zG%vHn4rTzFFp@5$$g*-QDk;w|$_@cX49-x+sRL>%B!rRDFC=q-V*{8w?6_?7;W^EY z>$U804q(on=;`7ZVj);M+1HENQJ^*3Xs&%Pw|P@{2cvL^z>%fw1+N+RG_~_`c%H~m z;@VX(bH&M&w!(dV`db*~&wTL@-Mg;ps%&ihT@kT_DK<C!Rwuf*$DZDFXHIvn!Mo_I zSNDYPjr^Ouy5yGaV{1M8f?Inxtp9l^?w+tbPv?Z^JNb`&`)2s@_QktzYXw~=iXOF^ zm}2#%F@;HiB~eVE(W39HZ~XB(M=?bajYZe)tvj1Oe|8WD+r@)*yDeVM$$ceyGI=KF z3iCM=XE!ZnOl5F4IM?IQxYbBti?`vyglpdy*GW$l^i+`$?O+bb%wX8!&vqvE`}dT5 z-TD*-Ay(xzCLU_cJEcCC&J)Wuo4KU>jPOe1H=fMT6lLC=QnHa<zWn*b@4n&Q>+P8G z4i{d|P&J*n>&V2#d5f-Ha>y2+*JZdS+D~fweeHUIx~$|@zJSkW8s1Cie%H&Ly7V5a z(2-;xaqaFeGfudaE2><!dn>0_n|)>W!kd4hFO*I*Rz9)m%zhuEKmH!~-Cnh|h<k2$ l=eYKb(bqP9&PM?!<RdQKHECLRT@6$;db;|#taD0e0svYup)mje literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/building/StoneGateDarkLand04.png b/src/main/resources/textures/map/dark_lands_biom/building/StoneGateDarkLand04.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9984315fc1f60ff9606ea8c2ca1fd89005887e GIT binary patch literal 2005 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xg|3sq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA@&<<maWjCzhnTBo<}+B<7_UnAqq;G@u#;5k)oMMjwk)Y(N2E6&aLToS#z)iUK=B zV<Q`Iu%L({A_Jl$0;>*WQFI*v8Tlpoz{FLQne3TYl3G+y1WagP8)5e0R)KC7!t&6( z%o0180cgTVx{xBu%CV@VJijPA1RN<?LlmcKsELr!MM}4jOaYDwV6L#^veAd<FgvcA zoLo?0@X6D~F~mZ!H`v=-#!+D1yyNR4-5<$?um~!xTg0Iz$NEu?gG=s<yadxuj;2NK zC-pzX&!~RK=-4lHW5J`YN4FJTo$6a`&42q}*0$qwD>g1zy=#A!&t5kk{$9^jizlBJ z3YBN(a+?3E+D`c1tUITeZ-%vT#r~C2;@*Dgp&!!&rsw+(DZG7?Z~V^0QuA-zN)OBB zjfNLzy`NC`U^!36qa``orz-@)UVmxYe4#-xn^hrp`O3hDL6RvyGZz0ce=}jBnlneB z_jmrCqUMEr^yXhYb3If_;;-NLd-mJh6=K7_HTzmH`Px|AN@ccRQB-xyvEKD`|4y@i zRz`1g^bK+v%IjY(KCa%+XwmPl`>8gird2HL+D|?o_G42VW=v@0e4*(Qc%-XQUs$KQ zy6WY-Z%VBT-Cr=)2y`6h;J$1k8ZO(Lyy5cCk7C{ivKow8;_n<K+_uz5giKI5um3-P za@BLA%6Vazm{&f_nB|t+($t&&{F>0pYKAl4AKzN&^4H?p%d3p7i7Q^Mj2H8gEH*i6 zBpF?}@|f&;lVceR1kX3Rd|i{WFe1n2OZo5VZTDEd-cc9QJuCZ0I{$ig)rB=o`_^r4 zH1V;%+noQ|{^x3M`)i!+CYF282%YPj{8+bT{nFi>Z#k!)*u8VH#-us#jy=miq}O1e g>AUXr$Mt>Rxl8nJiG53!Ed`aip00i_>zopr0NYs7x&QzG literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/building/StoneWindowDarkLand03.png b/src/main/resources/textures/map/dark_lands_biom/building/StoneWindowDarkLand03.png new file mode 100644 index 0000000000000000000000000000000000000000..ca334756581f2cc2a55fbacc90f76d9b264b3bec GIT binary patch literal 2005 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xg#?qq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA@&<<maV^XXd5km%AhuW&0%Nr5G67=tH!i8U+zWwZTRoi(_m+L0}ablv<phQwoX% zJ40h58*sp&h$5l`q9X#U4rEbu9RV5nCHcVQRg{_RnOBlpR8Ry=YG4~-_Tg56ZWhAw z(7enNJD34z!brN1qRPs#sH8l<C_4lkEjYpyr+TQFknlxHyO4|ljtgMUu;a4Phvzao zt}oSD-oRY_&eO#)#6mE1@?9_KK!M}w<^EZd^P=pd6oaZJ3T<rCXfm&D*w^-DmAR<= zk=ai37yPhr`l{8aqT#ZERd?@+ET7G@FMpnWcXL|1PWm(Z^nL%*g=+5nPf2xj+s|e+ z_e{#Pf0NIC>$`I&&TCd$l8?&CA8}dFW|rK#o!a6k9aHAb(E5OXZtP25J(2#|g-6f- zU0QWk)lW4dciWpgX;ZnC!ZzjTJw7SlxhP=P*R8De3t}r2dKP(neS6lnbGCkn`h@d4 z9vo1-ckHCC)tOCuGCZ`m+<qIsLsD4M{!XTlwbfbw;{jD)o0q8+dhY&Pd{p{lv8-~< z^;ajpzE2Fid$oA~&GYM%{?8L!Y<B$3okUg#$45V$=4cqaQH`+tu&S?taoXAEUHt2- zsy-zx`^B`bCF~^g4Ef1<6Ev30n|l1^k{Zj$Cm%4KVb?pwE+b#dc<oif4*`FhT{mC7 zDbVV)kre&Qaetrus`pQd*B;UMl=X9IU+?7`b0k#*D+?rR*i(}8gqoJ>-3U*w^F6?= zpxU|4SDvBy%-XlRRZ2M6>y}0`9=>Pa8G7wBUx7$*_y(nh8xPKYiavJj?WH$)ks=H( znnDRmKcno|ZeGZn;+b_TDyDvInOy9Osmc>9@=hH4RsHnv2A4RuNy5!%=e*e~?k`m_ h$)@AxiT}?38S6`*DT(cynguFzJzf1=);T3K0RV7h-EaT^ literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand00.png b/src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand00.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2c1ca9eaab73d2d221f59f1264e68f1ab354b7 GIT binary patch literal 1835 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh69tq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DREBo<}+B<7_U7})4T6r&mf5k)oIMjwkaY(Sp3iVR9E&d(_Y1;3r4v5^fp zNKix(5dqN=fmH{xD7ub-jQo;(V8SZOO!mwxNi8ZU0wyxBjWGLgt3WpkVR>j?W{Dll z05oAFT}Y8+<ycfwo?nz50*(-j(8Q?{Y8oVDk<u$9Gk{|Om>cZ4Z1mwd%Z{rog>MBg zCkJ@CIEGjV=1$(|ci2I|<$9QkK#`VI%5+ap?+4B+fAaieyy(QP+99&iK*PlF`>``G zi;`4-@7cY1b8+?aXYan%-Ky_voLiFq(YP-A==bu=TNs~}+&pR`>(QF5%g5Qn)br%` z>&1_1l8@b}udWR6iHs<}{hVh}LPY##m#mfVG(IqQe&#-1p0Lg`#Z>8M^~R&O(rPuc z${0#C4xVsdSadOC>n7HD?T2~F<oyM2tF>KyR^ff}et&#%;YTsXeY@wy$7u21XjTpo z`@N+jn|mH}<0TP)=OYTA9}72WXfyQusoNXK*kv-kKIQxB)jgSs9}j3Oo4~H@7yew- zNB_RK6vs;@p?#SRZzr2iJlT`Yt94V=cH?Z8`Ln~NQ)V@aUSZgE>sQ{r?N4_<dm$pR z=zFZ#>?6?+gDSa$90X4$Rwn1fO^labo}l_ug7wjH&AzkDt2twQ{)mh1J;-zZ(>-%g ON#^P5=d#Wzp$P!@NP$cM literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand01.png b/src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand01.png new file mode 100644 index 0000000000000000000000000000000000000000..2699381fb84e425ae3b20b119ed4b12a5cfc4d71 GIT binary patch literal 1974 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh69tq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DREBo<}+B<7_U7~1GV6r&mf5k)oIMjwkaY(Sp3iVR9E&d(_Y1;3r4v5^fp zNKix(5dqN=fmH{xD7ub-jQo;(V8SZOO!mwxNi8ZU0wyxBjWGLgt3WpkVR>j?W{Dll z05oAFT}Y8+<ycfwo?nz50*(-j(8Q?{Y8oVDk<u$9Gk{|Om>cZ4Z1mwd%Z@9*TInA! zC*SsTaSX8#ES<dDPsUNeb@lOYpYE_vP_S-b;rPJ*VS-LK3zN|Vj|dfEVS$gF-`E+> z9cbc-U}5yIC~QbQ!|%W#$aupefmd#x(7kVSq_U1UPuX(Sbo;A&w{N{Gn{TiC%g1-B z!146<po+ldrkSr_i@%hVnf&^N)1jgj6^a^5YP+T{dHljdsyIKWD0LfK#L1{5Cp)e= zPvP*G@Sfeb?r(m%C||9{ABE`twqiX&gMtO09oi*idS1W$8YOz*!NyLrSDQN-4j=h+ zUai!1!VHP}xpkYR3({hp{eJ)ZlCKod)u|SA_mY-#Ec+oV^ZLcwd!N2dQ@!i2tSl;2 z@m|zeP`o~L+m@3xK5iYNhR=LB(v5inB=y2pbnG<Z`KN#JnjDKy*U_FyGhJ;ih}@o~ z^!n+)c`>f)UMhjkZc{3ogcZI>Z0!<mUbivs-1j=kC9D7cRaZ@3U_E#DwYUZ$7Y}dk zNY>L&Tk@UOocUs!v%2wZ)9sbk4Kr%5uVW7Q{QkD;tvjBERp(u+xSsJ%Y)CP^uNDz? z_T}yab6@{`V1L8nZNfKCm;2?R7km`1-L<tcH{SVd|I}qmR)25Sy1lq^Q4#x}8#AW9 z+ZVX^(}z1>j<e?XAMr@H^Evm*EP29{_)zufs;-kB*`HkbvHwE+LrGAf>gnp|vd$@? F2>_Me#)|*| literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand03.png b/src/main/resources/textures/map/dark_lands_biom/ground/GrassDarkLand03.png new file mode 100644 index 0000000000000000000000000000000000000000..ff59e764b05b97b000573b245368329779b96823 GIT binary patch literal 2008 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh69tq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DREBo<}+B<7_U7~AMW6r&mf5k)oIMjwkaY(Sp3iVR9E&d(_Y1;3r4v5^fp zNKix(5dqN=fmH{xD7ub-jQo;(V8SZOO!mwxNi8ZU0wyxBjWGLgt3WpkVR>j?W{Dll z05oAFT}Y8+<ycfwo?nz50*(-j(8Q?{Y8oVDk<u$9Gk{|Om>cZ4Z1mwd%Z@A7wF+2d zGye5-aSX8#3=Q7zFXAZjFU`{NUD-}+!=21My(JP>O$!abTzG7ss8XU9rglLxxo7Fx zV?w>U8yhbOz0q)dC-i_XuP?q)_WpOX{3+XS&aM1>w)%5z{=Hr2<?Gu{&tuQk(0zPr z{%eo>&(5hnnD;xfOQ6VU!`2o)Mk(eDmgwcbcb&6bJG;Ep<bOhb^hcranWY<ybQ<;4 zBv;#BV_+<N`Fn+`Y3e~2zj>V}BaeD7F?&;gGHAka#+Svu6@O}%dMMm4`M36*=ElZN zMkWD2V?8c-d}g$`<fmh?U$Dxd{&BC7%CXCu{xeTLe0TZQ_JpH}yc(_3I=)$LyHHsC zYW9>vn){|K=DD?;-K$$<{crJKLFGKt{(d>TqyN~h48hf&S2tKMj*E?Q{QZVs>MG~a zzH8GjPCm4&p!?#{a#tp$srve%;cDg=qpRfC3#H$!V7_y_$?S6MmcJr*4%n(J`TXH{ zc9PH%=1uF@mt2yNbl?0-!z`?kN%y~qbL6t?tAze^^S?5=EL-wHCr-FKN`?Q#l3yuq zk9U=(boPlZeY%|0&RzZef_Ya;KVLkwD&XEh&l#!H?-(A_WESfbHQk(${Za3k%8noG z6$)pgqSjw*y2+fnUohS~L%DgzmmPn9&u3{`k|g<gqwAH!X>S;R2mhaL`Y%Q8pRv|K qzYTfTEZGl}b3111obzRSUeD;t_3Y|I*1G|qV%O8v&t;ucLK6T*H{GHD literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/dark_lands_biom/ground/GrassPathDarkLand02.png b/src/main/resources/textures/map/dark_lands_biom/ground/GrassPathDarkLand02.png new file mode 100644 index 0000000000000000000000000000000000000000..75b3a83c783fcb392b405d5c42879db3dfecc72c GIT binary patch literal 1981 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xg|3sq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DP4B$i~jBo<}+B<7_U7}@AUG@u#;5k)oMMjwk)Y(N2E6&aLToS#z)iUK=B zW1yKBqKL?V=!n3o16dSZM?gk?Nj@-f6=f!S=9Q!t6%+vz8rVjdeYjPin}x7EG%vHn z4rTzFFp@5$h_Z4lDk;w|$_@cX3f2(CsTyh`By^F|EhJNbV*;2f?6_?7;W^BXE82LH zG%!cs@^o<wu@H<6_V#896tOez@XFK|@0^ya)tr{NO|abc^tOxpSNy+Z^-GlPU6WX% zljgz}*989fmj0l_Omp9rA2ar?D~Nx7@AI#7J8!)_xzqB+H;#;J+*dvvTk$7Kd3)sI z02RMk%O+;d3aQ+;^n=$NF?P$SKDA5}BhD%-k-c^D)9P>ZyuF<sxQ#_h`?|IMn&WH* zg;VVoe~5CbJTW=?b@0b`llDI1o9E51D%Y{$TZ!+%ogC{t+$AJ-v%7~>o+;p}S*)h9 zZ)$!<ouZ0ToS@x;*HSwxma9Eve1755s<(eXSI^?wDU$25eI~a{hezZ3{&lGgG8TKS zi~ZEfR@_~6>r~@{L~CajD>d~As~x_5_hMVjq$s;`hr!=3ziZmv?f55dObu1o<@cuc z*yZ#{XIH1MHd8M}-m<oNmSw>1#N{EZkn@qt@*I<ZUV-n~UpIpqc((N!iGJ3cy7?=M zO55@EfxT|tvLRa?RFs~J9FgL1>R4hGkg%X-mGteiT^(;kCl<^52z81J*?n8|#)r9R z!pXTBG7cI7b{CkFe8MW5r}BCTm$rFaXqvKto$uI_Bv<9BpCT*2eV-|C?!(@!?VJ3k z@-0yfQD*deud%R(@wf3!wd2wir&IKH)J(2t)YbXH%CqDDJN@`A-$7-or>mdKI;Vst E0O#+#8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/Grass01.png b/src/main/resources/textures/map/forrest_biom/ground/GrassWoodLand00.png similarity index 84% rename from src/main/resources/textures/map/Grass01.png rename to src/main/resources/textures/map/forrest_biom/ground/GrassWoodLand00.png index e835d4676d2f80105626ece4d99b485a30b289fe..48584467f86445ad1f78925eb9f9cf219d1a46c4 100644 GIT binary patch delta 55 zcmeC;o5i=mj)}2mvpv%dMy~Mu{1l(Wyc7e2&5|rG$o$FitN|>khdnQC-pm@#2mt14 B5#;~? delta 39 tcmbQm*TuKNj)^g6vpv%dMkWKp&5A58AbN5>YXHk5d$whp53`0d0s!6h3rPR~ diff --git a/src/main/resources/textures/map/forrest_biom/ground/GrassWoodLand01.png b/src/main/resources/textures/map/forrest_biom/ground/GrassWoodLand01.png new file mode 100644 index 0000000000000000000000000000000000000000..5d13544cd45bf4968df0444b75d688e198ceb805 GIT binary patch literal 1902 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh69tq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DQl=jW&RB<7_U7~1GV6r&mf5k)oIMjwkaY(Sp3iVR9E&d(_Y1;3r4v5^fp zNKix(5dqN=fmH{xD7ub-jQo;(V8SZOO!mwxNi8ZU0wyxBjWGLgt3WpkVR>j?W{Dll z05oAFT}Y8+<ycfwo?nz50*(-j(8Q?{Y8oVDk<u$9Gk{|Om>cZ4Z1mwd%Z{t&PAV`f zGfwt&aSX8#ES<dDk10@~t)1DWCnm{Bahh1rjTs&}z1#1#f3U4#h(8wh;gXb3j?RV+ zN=c4R4XRS9vFFWaM~ZLycQWzWnWytDH#@)k^GQjl|5aApC%t~H#W$yW<wRy&Ib|eq z{>sx!jJ>yJwb(D5lsLbp<(1p5pWVyzRMzbb^cMQHIP=l*eP3&|L%f+6-TNKE`Eln# z3y-E(cVDY~+g+@B^s({%tOcwJF~_>qFR2Ugw5=6hS$^B|_2u8vdxJYA(wxFQ{Eo`2 zN^J8p6_|A1DYSXQ!FT)at(E?BU|wilRR^a*RB6d1ZFYCBt|xpi`qF3im2CJ>7NIM6 z{L8v#kA&C{Iwh|!EWNEFm7ZxQc=G9_lquKeIxEiXyA*MQS>{@v7002o_ZIIl{Vujj zc(X&on={JXHH=&iDc;Wl3?3|~?NmzC3ki+3uFDr&s5i-SO_gTP_K8m_#0pykjf~40 zI6vMmG}F2^+3_zsho{+^>ETQ4rMwewuh%%q=COi-sXk-#3iJB!*|{^?i$l5p+?u!f h`{@ep!@#aqofqvTfF^bk}Sdb;|#taD0e0swh?qYnT8 literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/Stone02.png b/src/main/resources/textures/map/grass_biom/building/StoneEndLeftGrassLand01.png similarity index 85% rename from src/main/resources/textures/map/Stone02.png rename to src/main/resources/textures/map/grass_biom/building/StoneEndLeftGrassLand01.png index 2ac41bee77062960aa2d8cfc921f66e45de629ba..afc98f647c69ff41538c540ad5f81dbddc9df2fd 100644 GIT binary patch delta 71 zcmZ3;e~^EJ9TQ{EW_zX^j6$w?DL$!bCGJIu#l=2}c_{{ln<ZIXu!&EOXANMPWqOEn J^Jdm}i~wCo7)JmA delta 39 tcmX@ezmR`}9TQ{DW_zX^j7$bbn>ATnK=kB#)&Q2fN36v*UuJ#B2mtJz3~vAc diff --git a/src/main/resources/textures/map/grass_biom/building/StoneEndRightGrassLand02.png b/src/main/resources/textures/map/grass_biom/building/StoneEndRightGrassLand02.png new file mode 100644 index 0000000000000000000000000000000000000000..41fdeb5b6fb3096837434f98e0b779ec548779d2 GIT binary patch literal 1977 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xi2#$q9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA@&<<maWj=A{H>re~D67bO-K`y}S27#P{;Lv*2<1`$QI#6};Bdu%|VU=<mZTAZI# z3W^6iLt~(s7@~+6f#`_9ssmXRT}MDhen~zsg%xEcd*+p-78Mi$QybVun0>fapqquT zJTxz}#13WvnlO?sq}Z}@EGj9_FUk%9#|-XZ#i<2qEF_4LQZOWYfTIJLKkT?{^x=8U zjw^rK&3<6sKI7@)7-Auq8+_XDP=LVPSy|=+a<j7-a-ARMKZ!pmU$B_7lvgdFLolS^ zXcO<1CFd-+Z@+R};MWZ6;<R%!SAPCbG2ip#q@O;kuCDqqJ-qdMp2;M)#fp*BJSEsJ zWtAT(l-W1mkW1i~yTg^&r|b4lfBUT2{gwa6gw+Z^bN5dA`fBR)bMN^Wn7+6gr8}6v z`e-M`ca!zpsc-BKw=Fc9(wiMPJ*RrPKKjwA@QtV3+%rwc_3xzfD!2I-u;<wHExnoJ zC2%Kz`9i}^4>yD8vrjfeoQaebO%w_Kd#jbb>e{Wj*><~jC|Rz5p=fw{{`=P=I<f9t zUIKz_f|k5p8I7il4h(?}`m6<O|J<7Cv+Vq(71u>?Xl^(w5qL7}vU^XU@D15j2h}EP zPFBp&4AGwRX2n%~o$?*UQAVz*u}chiuKd2t)6li$=Dx}MyV{Ogy3gqEzT{kL{NJZi z`eOmhV~MSrlX>n{8u@?j_7scMi+{m*;(3{J<}5Dpl>&Uf*WcAR=~UXaV#!C_D_N#x zNsNYJT{qr-)0lHeerC_gC-p1%cgymmY`^`ndZDwvh>84T$NRP{)61F)1w?}%iu@D2 wbjC9OrrLD%M&F*TwQCH`17B{5T7LegwEm8ZQ>HvlaR!yEp00i_>zopr01)HDdH?_b literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/grass_biom/building/StoneGateGrassLand04.png b/src/main/resources/textures/map/grass_biom/building/StoneGateGrassLand04.png new file mode 100644 index 0000000000000000000000000000000000000000..ee4e9538c461e7cd81843211bedfa1459863f098 GIT binary patch literal 2096 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 Z#=R4H+U9@gdkQMfJzf1=);T3K0RY?e0384T literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/Stone01.png b/src/main/resources/textures/map/grass_biom/building/StoneGrassLand00.png similarity index 85% rename from src/main/resources/textures/map/Stone01.png rename to src/main/resources/textures/map/grass_biom/building/StoneGrassLand00.png index b6cf13f66633060803264739b889f64c32877a0e..e31b2ac22af757240fd1a2d1fdf155161886866f 100644 GIT binary patch delta 57 zcmX@ica?909TQ{SW_zX^jNI-;iN(b}iFqjo2Ad^WTu=li$Fl~ocr+KB-@KW10wVw> C@)Iin delta 39 tcmcc0cbIR39TQ{DW_zX^j7$cGo0V8xK=kB7)&Lf_R}M!uA7!1u2mtZ^3}OHP diff --git a/src/main/resources/textures/map/grass_biom/building/StoneGrassLand05.png b/src/main/resources/textures/map/grass_biom/building/StoneGrassLand05.png new file mode 100644 index 0000000000000000000000000000000000000000..1c93eef9343e85ccaf5f27ee57acf8af255530cd GIT binary patch literal 2091 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 Zl>HX#xWwe`zMKG+<esj6F6*2UngG6Q1v~%% literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/grass_biom/building/StoneWindowGrassLand03.png b/src/main/resources/textures/map/grass_biom/building/StoneWindowGrassLand03.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7119eeb0a21560093f3dc8fcb52a33bdb40708 GIT binary patch literal 2136 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 N@9FC2vd$@?2>{^N6pjD@ literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/Grass02.png b/src/main/resources/textures/map/grass_biom/ground/GrassGrassLand00.png similarity index 84% rename from src/main/resources/textures/map/Grass02.png rename to src/main/resources/textures/map/grass_biom/ground/GrassGrassLand00.png index 144fad81f75b681454b58768081394cb40aaeead..42f20fb577ca233a64f9e570ca2c448a125ce2cd 100644 GIT binary patch delta 57 zcmeC+o5i=mj)}2uvpv%dMsD|_#NuL~#Jm&(gUymGE+_(%<5>e(HntVCZQjfp$_M}s CzY?7Q delta 39 scmbQm*TJ{Jj)^g6vpv%dMkWKJ%}OjTAbN5kYXD27U~S3fqpYEf0NVHp`Tzg` diff --git a/src/main/resources/textures/map/Grass04.png b/src/main/resources/textures/map/grass_biom/ground/GrassGrassLand01.png similarity index 63% rename from src/main/resources/textures/map/Grass04.png rename to src/main/resources/textures/map/grass_biom/ground/GrassGrassLand01.png index 4ce012b5eac6c41488efe96c5f66eb43c28c98ce..c0f799dfc6e5857b5cefa31c3b3732d4f1a84770 100644 GIT binary patch delta 550 zcmV+>0@?kf53~=kJ^}%Lvp)jZ0SiZRVRLg#VQyqFF|!#2L;(v&a$$3GOkr+hFfo%~ z1yFyNH@RH^00GxYL_t(I5p|PYFI-U+hSwR#43eTFHG{-QWN0!%Z%Jq(B<1(`8BO>n zTxk>B5PDlJMobtHf<zQY2{Ur+XC3QgO8O?V*XR4Lz0d6J%`eY}0^IsOm61P>=Nhtn z-@KNY=^@!VIh1rVqxs9KItkzNJW1DPr0su0oi>sj=;+2c>lRO4F{0HF1%4QY(%xFH zfh|@XsVU1%HYY8~td^>WSg()s`?#d>up<PH02<GVvhh?a1I~x2c-c)9L_19oFbVu{ z1c<hS$&Wp8toh?Z?X5nB3NXn;8ghLy>X!w(v|Cb3jh@$-a066;!bT+$VV8Beep!EZ zWQ4GY0TW_}HZXz8cz=(6ZJWx6CI1xt!T*rSL#7w;gf4EZDPr%6dvYIKD3Jx9BS5Af z@b`oG2m~~G*|gm5of5_f&n_c!q4Z$WmkI}3R{@BS)=vUWx)Uf&2usi4!BL6<whL~j z3P5}}mY2c(BPBL|&P%Ym9p|Y15Ak*pY&t{$$$VlHq>st`xZbe<O}~0OF>es8?Wmv) zfoN~TD;DO%uZx@VWvD4u<z@1SoGCkFH>l#W{<oi3GWDrh9~?YyVP!7Nw|B+Ym+|Rj o_5oW-L?0FZ=Ke3DDg0_Y1Du@jJrm;dEdT%j07*qoM6N<$f)LvK8~^|S delta 534 zcmV+x0_pv<52O#UJ^}%3vp)jZ0Rk{IvmyjU0Rk{IlW_%5f0R6okpKVz*-1n}R5%fJ zliNyLQ4oe_r)eTWV~rFemeL@pf;RTH1zV5`>htt5`Y!cK1-)ufZ#~3D5^I77v{Y>C z_E4M1?tBwwH!A*+%&eLD|CzP+TEX_#OcY5ZrM<dzr+ek+-|ym>U;8Z|rbnf8P?v0~ z*TN@l`H}wTe-c#7pQ6Jbf28k8hZRyqB1Rxm+ONk;&mjtuI4_^(ZQ*~OeDk0or@4ak zq;i&OZ{oE{oQ?gOtzRo4R07BxRb~15p^T^x(V)|`gJ}{3=mb`j0MRFy7|O?Mi|baX zZQq6o(8)zQ3om3W*%0i)R?RFqYHs7bHZTDa%gvSue^Yi824zvn2w@QeF2sc1FoDYW zpdO+!y=$Z&miTpKyc=ZVkf}vHVSh??MeIejBA4ND%*JO6kf{ejz^w9r3oIxMa#=a6 z9I}iN9i6nu<=T~ZUnuWb-p&9bq@{z<g1Q5P3t_1#?(C*%;8SorO#tGfx5HBWwrj-9 zyI~1GcyGora`(XmNP2gO0FwKxU649D^W$B_0u-$eJj2{U_~ok!dJ~BLsO&L)oL!U2 z(XLokAE$j*H4Qy$zd=onCg)av$<(XIb{pZD04@Fc;%8I2D{M2-I#m4A%X382_`t98 YKWbI_PKaQc<NyEw07*qoM6N<$f;UV6GXMYp diff --git a/src/main/resources/textures/map/grass_biom/ground/GrassGrassLand03.png b/src/main/resources/textures/map/grass_biom/ground/GrassGrassLand03.png new file mode 100644 index 0000000000000000000000000000000000000000..abdfbc8114e9e5a233757bf77a764fc1e753365b GIT binary patch literal 1933 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh^v#q9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DQh37^Eg6a!-$eTZsQQy`+KhTG_4afc1a_g0ZXsm1v@rJ(S)Gc-1`0fz~S zC?X~xIwG*@Ko&*U5s;Bzk`GK-MVZN-c_pbu1x3JA2DTAqA8r-sW+5yO&C4vYgBgG( zjHC-GmaH6$O3L$#vO~Zzf*G7Rl|qe!1T9jEg=7bCGywC19hZ$hJa5@?-3rlq4b00M zJY5_^ECgdG?e$^~6li^ZjKfPsFgHhuGc!rK)2?CZzOGs=)u{=h8$@e4vK`;#^hRVp z<lnflbHaj*h3mf0zPnk6FQxeXnK?6y)ADxgvGP=#FW(mWT+8h5uMhR_tlAUY{Brjt zc{&~O*(W5<B*D=0;Oyt!zb%tbU99~v<=9?^Q2F@DHk=OIcOIC3al*T!@~$HK-TyxQ zUEKRF*rBxAHvMtvCVrvy{A?4GUfp=}U1v_LOzJA7AMegORiB)Bz-!V1{-=J*o4OvH z{BShu?k->D%|=^I=49S}qv*x?E${2)WK$#SH<9XIObr)Z(&sl?C#Py`3u|irsJdTs z=f`^r><`rapYd!_vP}QIyUs-@#P}rFZke_YAAN@wr3>#D8B0x`=i<5O)wws1H=ii- zx*(`}fMIL)pEK@-q8AG?U-7U=%)S4tB)t4mD3jVc$Ng{lb$<TaSXg=NRN$)h6IBiz zyKurSM)Ss_FmK<#3p;<MSafZU{2Fo2;baxJ%S)}-CYOZ29KKbgclr8?>n8-V=k8+e zP7s|aGS61UFkNA;^w}$se^ymoY!~4*idW_o(OviU|Cdmggm?A!KaXCBySKOoR91Sr L`njxgN@xNADjT>{ literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/grass_biom/ground/GrassGrassLand04.png b/src/main/resources/textures/map/grass_biom/ground/GrassGrassLand04.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea95c178f078c9adceba8de2a8d1af544200ca5 GIT binary patch literal 1976 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh^v#q9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DQh37^Eg6ay0*eTZsQQy`+KhTG_4afc1a_g0ZXsm1v@rJ(S)Gc-1`0fz~S zC?X~xIwG*@Ko&*U5s;Bzk`GK-MVZN-c_pbu1x3JA2DTAqA8r-sW+5yO&C4vYgBgG( zjHC-GmaH6$O3L$#vO~Zzf*G7Rl|qe!1T9jEg=7bCGywC19hZ$hJa5@?X*-6$0_Nr0 zo-U3d7J|N$ZT*=X1=`yCofb2`$$5HV-i3_iYEc({>;GYm^3HaC>ObKSU(z2P6RE`q z<=&fYTo~NxB5m`0W~%x3xV-#wyZbY5o{qgIw=~{9nQ`e%OUb`|Z%^+my()OJ^G*I6 z4zs5>Ej@!xw8AVm*|3W+q&Iwe@G9cfZQjmB9^dCCH1mCl-|w5o*fEReazcyq+OWz0 zZcaW@_@*hQOh-AAGbn!6b_ZAg``kXOyjMm|^pHOg7Z=m1c0y<8<j;pQL;Y^;d+im{ zt+TnJH*HOrvgf3TZ(HO;8nc$<bnW>0>_YPt_pMj_o&|pD>})<&c<NA9L&L6H-(y$X zUflI~x`oAM_H!npZ9b<DOZ*V5R8(b{^MG4AA?M4VKi_hFTQU<07Q`;|JH1Sjv9U&z z<?+)ywXbK&T|25HD}6rfu#upK!*&*K+l9?s(l3vm4ZOAMoky&!yubXC3HmIj4j#O@ z`{WC`=yxaHWd(PY)O|AFxJLW5c3Rff&6jWbU+NSoVx7%5o%_eh1NYuBCNE(>U~Vwm zcK7##-_6U<*!d)uuhrZb_dM>6luC2v!Wq0@&SoDMvG^o!z*v>W)6;c%w&3aX|FQep z<b&d3Hsq(??G=*!_V2hc8waE1X7jVwvyC=aq`Ul2eDG5!>68el6lU;r^>bP0l+XkK D72?ZP literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/grass_biom/ground/GrassPathGrassLand02.png b/src/main/resources/textures/map/grass_biom/ground/GrassPathGrassLand02.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8050dfd2e9188c0c72d7000ae205c55864e6d8 GIT binary patch literal 1949 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3 z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+< zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1 zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x< z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q? z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn zW}I@WSD%4_xh*p!q9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9 znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@ zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt zDA~CeB^DP4B$i}=89s@5DF#M1`VbwcCP73|EwItY;uafF2v|i1r55Msl!D^G&d?ZW zCWa^?HXu48u<Ae-Mb{CKkzbMzOkG8p$)0&7sYL}vz?25I5oRB573gLmEDz1gEU|+b zfF_Kj3n`|o9E(cI^NX@Wz_EfoNO3BM8VLzrq?8NE7T~A=<_kM68+~{lv*W7UT7CkU zr+0X|IEGjV=1%hUKja|Lw!GKyf{=v*<5Q*?8H<v>y#JNFr_!wMNVDLFAm)$CjTf5a z*8DzGwnEKs)9%gk@84Lz_bI3>op?TcWy0pp69odR?dPgpdRcNcebe8w!CLLdH?lNx z?3i%c?P~LfVzu<Yw)>5wCFB*#Y$LV&n4j>O&U;o=AaeSz#nhays_!$s8*SP+(|aD) z>Gbojobx?9#*?G>=q>qz!k{GwR2}Npvv5XlZEDD^<$B}8F6VMJH}XvU*TB8|l+Ww` z>-l_p;`N4*gE=3$cz^u0XPmv&yi-YE?ZLSPe|XkpH6**uOM8}n^SK-UyH`_#N>UTP zoD}~oT2QxDd-eNuI%1t)%I2z7uF>pSytJ$1hm=ELp4RJm8W)(h&7G0GdVO{Iwa=mp zmME4;yxn(VuC}6C;UY;1LEoQQGfrd%y4}ll+45|I!ePgojSU7tjhklvRJ2Wy-koB~ z_G2b<^6Nc3XXKtmu_hl_IP;~W)n=!dCMiyX9{W&<on`ApC4-%$mfy>G>6OrQi92$N zb~cj+^NI^TTSGTws#$G(^eO+?KIQu5E}|Z_%8M?hg?8mV+TMR<vw`AU*@VsVB9m?< UOi7$@5ma`1y85}Sb4q9e0Cw)V;{X5v literal 0 HcmV?d00001 diff --git a/src/main/resources/textures/map/bigbomb.png b/src/main/resources/textures/objects/big_bomb/bigbomb.png similarity index 100% rename from src/main/resources/textures/map/bigbomb.png rename to src/main/resources/textures/objects/big_bomb/bigbomb.png diff --git a/src/main/resources/textures/map/bomb.png b/src/main/resources/textures/objects/bomb/bomb.png similarity index 100% rename from src/main/resources/textures/map/bomb.png rename to src/main/resources/textures/objects/bomb/bomb.png diff --git a/src/main/resources/textures/map/heart.png b/src/main/resources/textures/objects/heal/heart.png similarity index 100% rename from src/main/resources/textures/map/heart.png rename to src/main/resources/textures/objects/heal/heart.png diff --git a/src/main/resources/textures/map/bigexplosion.png b/src/main/resources/textures/objects/vfx/bigexplosion.png similarity index 100% rename from src/main/resources/textures/map/bigexplosion.png rename to src/main/resources/textures/objects/vfx/bigexplosion.png diff --git a/src/main/resources/textures/map/middleexplosion.png b/src/main/resources/textures/objects/vfx/middleexplosion.png similarity index 100% rename from src/main/resources/textures/map/middleexplosion.png rename to src/main/resources/textures/objects/vfx/middleexplosion.png diff --git a/src/main/resources/textures/map/smallexplosion.png b/src/main/resources/textures/objects/vfx/smallexplosion.png similarity index 100% rename from src/main/resources/textures/map/smallexplosion.png rename to src/main/resources/textures/objects/vfx/smallexplosion.png -- GitLab