diff --git a/src/main/resources/colors.txt b/colorschemes/default.txt
similarity index 97%
rename from src/main/resources/colors.txt
rename to colorschemes/default.txt
index bc39be7d..dce3a714 100644
--- a/src/main/resources/colors.txt
+++ b/colorschemes/default.txt
@@ -1,175 +1,175 @@
-Stone
-1 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
-Grass
-2 117 176 73 255 93 140 58 255 58 88 36 255 46 70 29 255
-Dirt
-3 134 96 67 255 107 76 53 255 67 48 33 255 53 38 26 255
-Cobblestone
-4 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
-Wooden Plank
-5 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
-Sappling
-6 120 120 120 0 96 96 96 0 60 60 60 0 48 48 48 0
-Bedrock
-7 84 84 84 255 67 67 67 255 42 42 42 255 33 33 33 255
-Water
-8 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
-Stationary Water
-9 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
-Lava
-10 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
-Stationary Lava
-11 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
-Sand
-12 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
-Gravel
-13 136 126 126 255 108 100 100 255 68 63 63 255 54 50 50 255
-Gold Ore
-14 143 140 125 255 114 112 100 255 71 70 62 255 57 56 50 255
-Iron Ore
-15 136 130 127 255 108 104 101 255 68 65 63 255 54 52 50 255
-Coal Ore
-16 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
-Wood
-17 102 81 51 255 81 64 40 255 51 40 25 255 40 32 20 255
-Leaves
-18 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
-Sponge
-19 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
-Glass
-20 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
-Lapis Lazuli Ore
-21 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
-Lapis Lazuli Block
-22 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
-Dispenser
-23 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
-Sandstone
-24 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
-Note Block
-25 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
-Aqua Green Cloth
-26 43 192 117 255 38 168 101 255 34 150 90 255 29 130 78 255
-Cyan Cloth
-27 43 192 192 255 36 185 185 255 29 130 130 255 22 99 99 255
-Blue Cloth
-28 0 0 255 255 0 0 204 255 0 0 127 255 0 0 102 255
-Purple Cloth
-29 101 101 188 255 95 95 175 255 86 86 160 255 78 78 145 255
-Indigo Cloth
-30 113 41 186 255 99 38 165 255 85 32 142 255 72 27 119 255
-Violet Cloth
-31 156 65 198 255 132 55 168 255 112 47 142 255 84 35 107 255
-Magenta Cloth
-32 187 42 187 255 160 36 160 255 135 31 135 255 112 25 112 255
-Pink Cloth
-33 192 43 117 255 168 38 103 255 142 32 87 255 127 29 78 255
-Black Cloth
-34 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
-Wool
-35 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
-Gray Cloth
-36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
-Yellow Flower
-37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
-Red Rose
-38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
-Brown Mushroom
-39 204 153 120 32 145 109 85 32 114 86 67 32 73 64 58 32
-Red Mushroom
-40 255 43 43 32 196 29 38 32 186 105 109 32 124 64 64 32
-Gold Block
-41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
-Iron Block
-42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
-Double Stone Slab
-43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
-Stone Slab
-44 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
-Brick
-45 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
-TNT
-46 160 83 65 255 128 66 52 255 80 41 32 255 64 33 26 255
-Bookshelf
-54 125 91 38 192 100 72 30 192 62 45 19 192 50 36 15 192
-Moss Stone
-48 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
-Obsidian
-49 26 11 43 255 20 8 34 255 13 5 21 255 10 4 17 255
-Torch
-50 159 127 80 255 98 88 20 0 245 220 50 255 196 176 40 0
-Fire
-51 255 170 30 200 204 136 24 200 127 85 15 200 102 68 12 200
-Monster Spawner
-52 0 150 110 196 0 150 130 196 0 150 110 196 0 150 130 196
-Wooden Stair
-53 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
-Chest
-54 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
-
-Diamond Ore
-56 129 140 143 255 103 112 114 255 64 70 71 255 51 56 57 255
-Diamond Block
-57 45 166 152 255 36 132 121 255 22 83 76 255 18 66 60 255
-Workbench
-58 114 88 56 255 91 70 44 255 57 44 28 255 45 35 22 255
-Crops
-59 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
-Farmland
-60 95 58 30 255 76 46 24 255 47 29 15 255 38 23 12 255
-Furnace
-61 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
-Burning Furnace
-62 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
-Sign Post
-63 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
-Wooden Door
-64 136 109 67 255 108 87 53 255 68 54 33 255 54 43 26 255
-Ladder
-65 181 140 64 32 144 112 51 32 90 70 32 32 72 56 25 32
-Minecart Tracks
-66 150 134 102 180 120 107 81 180 75 67 51 180 60 53 40 180
-Cobblestone Stairs
-67 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
-
-Iron Door
-71 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
-
-Redstone Ore
-73 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
-Glowing Redstone Ore
-74 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
-Redstone Torch off
-75 159 127 80 255 72 56 25 0 181 140 64 255 144 112 51 0
-Redstone Torch on
-76 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
-Snow
-78 255 255 255 255 204 204 204 255 127 127 127 255 102 102 102 255
-Ice
-79 83 113 163 51 66 90 130 51 41 56 81 51 33 45 65 51
-Snow Block
-80 250 250 250 255 200 200 200 255 125 125 125 255 100 100 100 255
-Cactus
-81 25 120 25 255 20 96 20 255 12 60 12 255 10 48 10 255
-Clay
-82 151 157 169 255 120 125 135 255 75 78 84 255 60 62 67 255
-Sugar Cane
-83 193 234 150 255 154 187 120 255 96 117 75 255 77 93 60 255
-Jukebox
-84 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
-Fence
-85 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
-Pumpkin
-86 255 115 0 200 204 92 0 200 126 57 0 200 102 46 0 200
-Netherrack
-87 166 89 89 255 141 80 62 255 135 15 15 255 96 6 6 255
-Soulsand
-88 133 109 94 255 121 97 82 255 90 70 57 255 79 59 46 255
-Glowstone
-89 249 212 156 255 255 188 94 255 192 143 70 255 122 91 44 255
-Portal
-90 140 0 196 128 120 0 196 128 140 0 196 128 120 0 196 128
-Jack-o-lantern
-91 255 115 0 255 204 92 0 255 126 57 0 255 102 46 0 255
-Cake Block
-92 234 234 234 255 210 210 210 255 203 203 203 255 190 190 190 255
+Stone
+1 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
+Grass
+2 117 176 73 255 93 140 58 255 58 88 36 255 46 70 29 255
+Dirt
+3 134 96 67 255 107 76 53 255 67 48 33 255 53 38 26 255
+Cobblestone
+4 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+Wooden Plank
+5 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
+Sappling
+6 120 120 120 0 96 96 96 0 60 60 60 0 48 48 48 0
+Bedrock
+7 84 84 84 255 67 67 67 255 42 42 42 255 33 33 33 255
+Water
+8 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
+Stationary Water
+9 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
+Lava
+10 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
+Stationary Lava
+11 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
+Sand
+12 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
+Gravel
+13 136 126 126 255 108 100 100 255 68 63 63 255 54 50 50 255
+Gold Ore
+14 143 140 125 255 114 112 100 255 71 70 62 255 57 56 50 255
+Iron Ore
+15 136 130 127 255 108 104 101 255 68 65 63 255 54 52 50 255
+Coal Ore
+16 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+Wood
+17 102 81 51 255 81 64 40 255 51 40 25 255 40 32 20 255
+Leaves
+18 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
+Sponge
+19 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
+Glass
+20 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
+Lapis Lazuli Ore
+21 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
+Lapis Lazuli Block
+22 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
+Dispenser
+23 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
+Sandstone
+24 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
+Note Block
+25 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
+Aqua Green Cloth
+26 43 192 117 255 38 168 101 255 34 150 90 255 29 130 78 255
+Cyan Cloth
+27 43 192 192 255 36 185 185 255 29 130 130 255 22 99 99 255
+Blue Cloth
+28 0 0 255 255 0 0 204 255 0 0 127 255 0 0 102 255
+Purple Cloth
+29 101 101 188 255 95 95 175 255 86 86 160 255 78 78 145 255
+Indigo Cloth
+30 113 41 186 255 99 38 165 255 85 32 142 255 72 27 119 255
+Violet Cloth
+31 156 65 198 255 132 55 168 255 112 47 142 255 84 35 107 255
+Magenta Cloth
+32 187 42 187 255 160 36 160 255 135 31 135 255 112 25 112 255
+Pink Cloth
+33 192 43 117 255 168 38 103 255 142 32 87 255 127 29 78 255
+Black Cloth
+34 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
+Wool
+35 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
+Gray Cloth
+36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
+Yellow Flower
+37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
+Red Rose
+38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
+Brown Mushroom
+39 204 153 120 32 145 109 85 32 114 86 67 32 73 64 58 32
+Red Mushroom
+40 255 43 43 32 196 29 38 32 186 105 109 32 124 64 64 32
+Gold Block
+41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
+Iron Block
+42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
+Double Stone Slab
+43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
+Stone Slab
+44 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
+Brick
+45 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
+TNT
+46 160 83 65 255 128 66 52 255 80 41 32 255 64 33 26 255
+Bookshelf
+54 125 91 38 192 100 72 30 192 62 45 19 192 50 36 15 192
+Moss Stone
+48 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+Obsidian
+49 26 11 43 255 20 8 34 255 13 5 21 255 10 4 17 255
+Torch
+50 159 127 80 255 98 88 20 0 245 220 50 255 196 176 40 0
+Fire
+51 255 170 30 200 204 136 24 200 127 85 15 200 102 68 12 200
+Monster Spawner
+52 0 150 110 196 0 150 130 196 0 150 110 196 0 150 130 196
+Wooden Stair
+53 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
+Chest
+54 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
+
+Diamond Ore
+56 129 140 143 255 103 112 114 255 64 70 71 255 51 56 57 255
+Diamond Block
+57 45 166 152 255 36 132 121 255 22 83 76 255 18 66 60 255
+Workbench
+58 114 88 56 255 91 70 44 255 57 44 28 255 45 35 22 255
+Crops
+59 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
+Farmland
+60 95 58 30 255 76 46 24 255 47 29 15 255 38 23 12 255
+Furnace
+61 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
+Burning Furnace
+62 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
+Sign Post
+63 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
+Wooden Door
+64 136 109 67 255 108 87 53 255 68 54 33 255 54 43 26 255
+Ladder
+65 181 140 64 32 144 112 51 32 90 70 32 32 72 56 25 32
+Minecart Tracks
+66 150 134 102 180 120 107 81 180 75 67 51 180 60 53 40 180
+Cobblestone Stairs
+67 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+
+Iron Door
+71 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
+
+Redstone Ore
+73 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
+Glowing Redstone Ore
+74 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
+Redstone Torch off
+75 159 127 80 255 72 56 25 0 181 140 64 255 144 112 51 0
+Redstone Torch on
+76 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
+Snow
+78 255 255 255 255 204 204 204 255 127 127 127 255 102 102 102 255
+Ice
+79 83 113 163 51 66 90 130 51 41 56 81 51 33 45 65 51
+Snow Block
+80 250 250 250 255 200 200 200 255 125 125 125 255 100 100 100 255
+Cactus
+81 25 120 25 255 20 96 20 255 12 60 12 255 10 48 10 255
+Clay
+82 151 157 169 255 120 125 135 255 75 78 84 255 60 62 67 255
+Sugar Cane
+83 193 234 150 255 154 187 120 255 96 117 75 255 77 93 60 255
+Jukebox
+84 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
+Fence
+85 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
+Pumpkin
+86 255 115 0 200 204 92 0 200 126 57 0 200 102 46 0 200
+Netherrack
+87 166 89 89 255 141 80 62 255 135 15 15 255 96 6 6 255
+Soulsand
+88 133 109 94 255 121 97 82 255 90 70 57 255 79 59 46 255
+Glowstone
+89 249 212 156 255 255 188 94 255 192 143 70 255 122 91 44 255
+Portal
+90 140 0 196 128 120 0 196 128 140 0 196 128 120 0 196 128
+Jack-o-lantern
+91 255 115 0 255 204 92 0 255 126 57 0 255 102 46 0 255
+Cake Block
+92 234 234 234 255 210 210 210 255 203 203 203 255 190 190 190 255
diff --git a/colorschemes/ovocean.txt b/colorschemes/ovocean.txt
new file mode 100644
index 00000000..dc32ee04
--- /dev/null
+++ b/colorschemes/ovocean.txt
@@ -0,0 +1,175 @@
+Stone
+1 119 104 84 255 104 95 80 255 96 87 72 255 77 68 53 255
+Grass
+2 75 156 43 255 56 117 32 255 35 104 10 255 32 82 0 255
+Dirt
+3 134 96 67 255 107 76 53 255 67 48 33 255 68 49 33 255
+Cobblestone
+4 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+Wooden Plank
+5 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
+Sappling
+6 120 120 120 0 96 96 96 0 60 60 60 0 48 48 48 0
+Bedrock
+7 84 84 84 255 67 67 67 255 42 42 42 255 33 33 33 255
+Water
+8 21 88 125 80 7 70 117 80 6 68 115 80 5 53 90 80
+Stationary Water
+9 21 88 125 80 7 70 117 80 6 68 115 80 5 53 90 80
+Lava
+10 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
+Stationary Lava
+11 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
+Sand
+12 214 182 111 255 203 171 100 255 186 154 83 255 173 141 70 255
+Gravel
+13 136 126 126 255 108 100 100 255 68 63 63 255 54 50 50 255
+Gold Ore
+14 143 140 125 255 114 112 100 255 71 70 62 255 57 56 50 255
+Iron Ore
+15 136 130 127 255 108 104 101 255 68 65 63 255 54 52 50 255
+Coal Ore
+16 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+Wood
+17 102 81 51 255 81 64 40 255 51 40 25 255 40 32 20 255
+Leaves
+18 23 68 6 100 12 56 0 100 6 52 0 100 0 42 0 100
+Sponge
+19 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
+Glass
+20 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
+Lapis Lazuli Ore
+21 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
+Lapis Lazuli Block
+22 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
+Dispenser
+23 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
+Sandstone
+24 214 182 111 255 203 171 100 255 186 154 83 255 173 141 70 255
+Note Block
+25 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
+Aqua Green Cloth
+26 43 192 117 255 38 168 101 255 34 150 90 255 29 130 78 255
+Cyan Cloth
+27 43 192 192 255 36 185 185 255 29 130 130 255 22 99 99 255
+Blue Cloth
+28 0 0 255 255 0 0 204 255 0 0 127 255 0 0 102 255
+Purple Cloth
+29 101 101 188 255 95 95 175 255 86 86 160 255 78 78 145 255
+Indigo Cloth
+30 113 41 186 255 99 38 165 255 85 32 142 255 72 27 119 255
+Violet Cloth
+31 156 65 198 255 132 55 168 255 112 47 142 255 84 35 107 255
+Magenta Cloth
+32 187 42 187 255 160 36 160 255 135 31 135 255 112 25 112 255
+Pink Cloth
+33 192 43 117 255 168 38 103 255 142 32 87 255 127 29 78 255
+Black Cloth
+34 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
+Wool
+35 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
+Gray Cloth
+36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
+Yellow Flower
+37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
+Red Rose
+38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
+Brown Mushroom
+39 204 153 120 32 145 109 85 32 114 86 67 32 73 64 58 32
+Red Mushroom
+40 255 43 43 32 196 29 38 32 186 105 109 32 124 64 64 32
+Gold Block
+41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
+Iron Block
+42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
+Double Stone Slab
+43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
+Stone Slab
+44 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
+Brick
+45 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
+TNT
+46 160 83 65 255 128 66 52 255 80 41 32 255 64 33 26 255
+Bookshelf
+54 125 91 38 192 100 72 30 192 62 45 19 192 50 36 15 192
+Moss Stone
+48 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+Obsidian
+49 26 11 43 255 20 8 34 255 13 5 21 255 10 4 17 255
+Torch
+50 159 127 80 255 98 88 20 0 245 220 50 255 196 176 40 0
+Fire
+51 255 170 30 200 204 136 24 200 127 85 15 200 102 68 12 200
+Monster Spawner
+52 0 150 110 196 0 150 130 196 0 150 110 196 0 150 130 196
+Wooden Stair
+53 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
+Chest
+54 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
+
+Diamond Ore
+56 129 140 143 255 103 112 114 255 64 70 71 255 51 56 57 255
+Diamond Block
+57 45 166 152 255 36 132 121 255 22 83 76 255 18 66 60 255
+Workbench
+58 114 88 56 255 91 70 44 255 57 44 28 255 45 35 22 255
+Crops
+59 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
+Farmland
+60 95 58 30 255 76 46 24 255 47 29 15 255 38 23 12 255
+Furnace
+61 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
+Burning Furnace
+62 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
+Sign Post
+63 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
+Wooden Door
+64 136 109 67 255 108 87 53 255 68 54 33 255 54 43 26 255
+Ladder
+65 181 140 64 32 144 112 51 32 90 70 32 32 72 56 25 32
+Minecart Tracks
+66 150 134 102 180 120 107 81 180 75 67 51 180 60 53 40 180
+Cobblestone Stairs
+67 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
+
+Iron Door
+71 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
+
+Redstone Ore
+73 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
+Glowing Redstone Ore
+74 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
+Redstone Torch off
+75 159 127 80 255 72 56 25 0 181 140 64 255 144 112 51 0
+Redstone Torch on
+76 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
+Snow
+78 255 255 255 255 204 204 204 255 127 127 127 255 102 102 102 255
+Ice
+79 83 113 163 51 66 90 130 51 41 56 81 51 33 45 65 51
+Snow Block
+80 250 250 250 255 200 200 200 255 125 125 125 255 100 100 100 255
+Cactus
+81 25 120 25 255 20 96 20 255 12 60 12 255 10 48 10 255
+Clay
+82 151 157 169 255 120 125 135 255 75 78 84 255 60 62 67 255
+Sugar Cane
+83 193 234 150 255 154 187 120 255 96 117 75 255 77 93 60 255
+Jukebox
+84 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
+Fence
+85 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
+Pumpkin
+86 255 115 0 200 204 92 0 200 126 57 0 200 102 46 0 200
+Netherrack
+87 166 89 89 255 141 80 62 255 135 15 15 255 96 6 6 255
+Soulsand
+88 133 109 94 255 121 97 82 255 90 70 57 255 79 59 46 255
+Glowstone
+89 249 212 156 255 255 188 94 255 192 143 70 255 122 91 44 255
+Portal
+90 140 0 196 128 120 0 196 128 140 0 196 128 120 0 196 128
+Jack-o-lantern
+91 255 115 0 255 204 92 0 255 126 57 0 255 102 46 0 255
+Cake Block
+92 234 234 234 255 210 210 210 255 203 203 203 255 190 190 190 255
diff --git a/configuration.txt b/configuration.txt
index d9421ebc..99891db5 100755
--- a/configuration.txt
+++ b/configuration.txt
@@ -43,6 +43,7 @@ worlds:
- class: org.dynmap.kzedmap.DefaultTileRenderer
prefix: t
maximumheight: 127
+ colorscheme: default
- class: org.dynmap.kzedmap.CaveTileRenderer
prefix: ct
maximumheight: 127
@@ -54,6 +55,7 @@ worlds:
- class: org.dynmap.kzedmap.DefaultTileRenderer
prefix: nt
maximumheight: 64
+ colorscheme: default
web:
# Handles the clientside updates differently only enable if using jsonfile
diff --git a/src/main/assembly/package.xml b/src/main/assembly/package.xml
index 6beca938..d27afbf9 100644
--- a/src/main/assembly/package.xml
+++ b/src/main/assembly/package.xml
@@ -20,6 +20,10 @@
${project.basedir}/web
/dynmap/web
+
+ ${project.basedir}/colorschemes
+ /dynmap/colorschemes
+
${project.basedir}
/dynmap/
diff --git a/src/main/java/org/dynmap/ColorScheme.java b/src/main/java/org/dynmap/ColorScheme.java
new file mode 100644
index 00000000..49ba68da
--- /dev/null
+++ b/src/main/java/org/dynmap/ColorScheme.java
@@ -0,0 +1,85 @@
+package org.dynmap;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Scanner;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.dynmap.debug.Debug;
+
+public class ColorScheme {
+ protected static final Logger log = Logger.getLogger("Minecraft");
+ private static final HashMap cache = new HashMap();
+
+ public String name;
+ public java.util.Map colors;
+
+ public ColorScheme(String name, java.util.Map colors) {
+ this.name = name;
+ this.colors = colors;
+ }
+
+ private static File getColorSchemeDirectory() {
+ return new File(DynmapPlugin.dataDirectory, "colorschemes");
+ }
+
+ public static ColorScheme getScheme(String name) {
+ if (name == null)
+ name = "default";
+ ColorScheme scheme = cache.get(name);
+ if (scheme == null) {
+ scheme = loadScheme(name);
+ cache.put(name, scheme);
+ }
+ return scheme;
+ }
+
+ public static ColorScheme loadScheme(String name) {
+ File colorSchemeFile = new File(getColorSchemeDirectory(), name + ".txt");
+ java.util.Map colors = new HashMap();
+ InputStream stream;
+ try {
+ Debug.debug("Loading colors from '" + colorSchemeFile + "'...");
+ stream = new FileInputStream(colorSchemeFile);
+
+ Scanner scanner = new Scanner(stream);
+ int nc = 0;
+ while (scanner.hasNextLine()) {
+ String line = scanner.nextLine();
+ if (line.startsWith("#") || line.equals("")) {
+ continue;
+ }
+
+ String[] split = line.split("\t");
+ if (split.length < 17) {
+ continue;
+ }
+
+ Integer id = new Integer(split[0]);
+
+ Color[] c = new Color[4];
+
+ /* store colors by raycast sequence number */
+ c[0] = new Color(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]));
+ c[3] = new Color(Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]));
+ c[1] = new Color(Integer.parseInt(split[9]), Integer.parseInt(split[10]), Integer.parseInt(split[11]), Integer.parseInt(split[12]));
+ c[2] = new Color(Integer.parseInt(split[13]), Integer.parseInt(split[14]), Integer.parseInt(split[15]), Integer.parseInt(split[16]));
+
+ colors.put(id, c);
+ nc += 1;
+ }
+ scanner.close();
+ } catch (RuntimeException e) {
+ log.log(Level.SEVERE, "Could not load colors '" + name + "' ('" + colorSchemeFile + "').", e);
+ return null;
+ } catch (FileNotFoundException e) {
+ log.log(Level.SEVERE, "Could not load colors '" + name + "' ('" + colorSchemeFile + "'): File not found.", e);
+ }
+ return new ColorScheme(name, colors);
+ }
+}
diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java
index f790dedd..7a7ae53c 100644
--- a/src/main/java/org/dynmap/DynmapPlugin.java
+++ b/src/main/java/org/dynmap/DynmapPlugin.java
@@ -58,6 +58,7 @@ public class DynmapPlugin extends JavaPlugin {
public Timer timer;
+ public static File dataDirectory;
public static File tilesDirectory;
public World getWorld() {
@@ -73,11 +74,13 @@ public class DynmapPlugin extends JavaPlugin {
}
public void onEnable() {
+ dataDirectory = this.getDataFolder();
+
configuration = new Configuration(new File(this.getDataFolder(), "configuration.txt"));
configuration.load();
loadDebuggers();
-
+
tilesDirectory = getFile(configuration.getString("tilespath", "web/tiles"));
if (!tilesDirectory.isDirectory() && !tilesDirectory.mkdirs()) {
log.warning("Could not create directory for tiles ('" + tilesDirectory + "').");
diff --git a/src/main/java/org/dynmap/flat/FlatMap.java b/src/main/java/org/dynmap/flat/FlatMap.java
index 40ae11dd..6ef57d90 100644
--- a/src/main/java/org/dynmap/flat/FlatMap.java
+++ b/src/main/java/org/dynmap/flat/FlatMap.java
@@ -11,15 +11,17 @@ import javax.imageio.ImageIO;
import org.bukkit.Location;
import org.bukkit.World;
+import org.dynmap.ColorScheme;
import org.dynmap.DynmapChunk;
import org.dynmap.MapTile;
import org.dynmap.MapType;
import org.dynmap.debug.Debug;
-import org.dynmap.kzedmap.KzedMap;
public class FlatMap extends MapType {
+ private ColorScheme colorScheme;
public FlatMap(Map configuration) {
+ colorScheme = ColorScheme.getScheme((String)configuration.get("colorscheme"));
}
@Override
@@ -73,7 +75,7 @@ public class FlatMap extends MapType {
int mz = y + t.y * t.size;
int my = w.getHighestBlockYAt(mx, mz) - 1;
int blockType = w.getBlockTypeIdAt(mx, my, mz);
- Color[] colors = KzedMap.colors.get(blockType);
+ Color[] colors = colorScheme.colors.get(blockType);
if (colors == null)
continue;
Color c = colors[0];
diff --git a/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java b/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java
index 18ac5ad9..f24dbbce 100644
--- a/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java
+++ b/src/main/java/org/dynmap/kzedmap/DefaultTileRenderer.java
@@ -10,12 +10,14 @@ import java.util.Map;
import javax.imageio.ImageIO;
import org.bukkit.World;
+import org.dynmap.ColorScheme;
import org.dynmap.debug.Debug;
public class DefaultTileRenderer implements MapTileRenderer {
protected static Color translucent = new Color(0, 0, 0, 0);
private String name;
protected int maximumHeight = 127;
+ private ColorScheme colorScheme;
@Override
public String getName() {
@@ -30,6 +32,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
if (maximumHeight > 127)
maximumHeight = 127;
}
+ colorScheme = ColorScheme.getScheme((String)configuration.get("colorscheme"));
}
public boolean render(KzedMapTile tile, File outputFile) {
@@ -132,7 +135,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
seq = (seq + 1) & 3;
if (id != 0) {
- Color[] colors = KzedMap.colors.get(id);
+ Color[] colors = colorScheme.colors.get(id);
if (colors != null) {
Color c = colors[seq];
if (c.getAlpha() > 0) {
diff --git a/src/main/java/org/dynmap/kzedmap/KzedMap.java b/src/main/java/org/dynmap/kzedmap/KzedMap.java
index 05a00430..a32e589f 100644
--- a/src/main/java/org/dynmap/kzedmap/KzedMap.java
+++ b/src/main/java/org/dynmap/kzedmap/KzedMap.java
@@ -1,17 +1,10 @@
package org.dynmap.kzedmap;
-import java.awt.Color;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Scanner;
-import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Location;
@@ -40,15 +33,10 @@ public class KzedMap extends MapType {
public static final int anchory = 127;
public static final int anchorz = 0;
- public static java.util.Map colors;
MapTileRenderer[] renderers;
ZoomedTileRenderer zoomrenderer;
public KzedMap(Map configuration) {
- if (colors == null) {
- colors = loadColorSet("colors.txt");
- }
-
renderers = loadRenderers(configuration);
zoomrenderer = new ZoomedTileRenderer(configuration);
}
@@ -225,56 +213,4 @@ public class KzedMap extends MapType {
else
return y - (y % zTileHeight);
}
-
- public java.util.Map loadColorSet(String colorsetpath) {
- java.util.Map colors = new HashMap();
-
- InputStream stream;
-
- try {
- /* load colorset */
- File cfile = new File(colorsetpath);
- if (cfile.isFile()) {
- Debug.debug("Loading colors from '" + colorsetpath + "'...");
- stream = new FileInputStream(cfile);
- } else {
- Debug.debug("Loading colors from jar...");
- stream = KzedMap.class.getResourceAsStream("/colors.txt");
- }
-
- Scanner scanner = new Scanner(stream);
- int nc = 0;
- while (scanner.hasNextLine()) {
- String line = scanner.nextLine();
- if (line.startsWith("#") || line.equals("")) {
- continue;
- }
-
- String[] split = line.split("\t");
- if (split.length < 17) {
- continue;
- }
-
- Integer id = new Integer(split[0]);
-
- Color[] c = new Color[4];
-
- /* store colors by raycast sequence number */
- c[0] = new Color(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]));
- c[3] = new Color(Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]));
- c[1] = new Color(Integer.parseInt(split[9]), Integer.parseInt(split[10]), Integer.parseInt(split[11]), Integer.parseInt(split[12]));
- c[2] = new Color(Integer.parseInt(split[13]), Integer.parseInt(split[14]), Integer.parseInt(split[15]), Integer.parseInt(split[16]));
-
- colors.put(id, c);
- nc += 1;
- }
- scanner.close();
- } catch (RuntimeException e) {
- log.log(Level.SEVERE, "Could not load colors", e);
- return null;
- } catch (FileNotFoundException e) {
- log.log(Level.SEVERE, "Could not load colors: file not found", e);
- }
- return colors;
- }
}