mirror of
https://github.com/encounter/dynmap.git
synced 2026-03-30 11:08:39 -07:00
Compare commits
236 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 67b5b7509f | |||
| 886248e115 | |||
| bc17045196 | |||
| 7cf9f2f1e4 | |||
| 7d89fe094a | |||
| 8524eecad5 | |||
| bee5da8e9f | |||
| e15d3cd8cc | |||
| 33add48697 | |||
| 98d18260c4 | |||
| 910be17c42 | |||
| 6299deee82 | |||
| ff57c9e183 | |||
| ea5f9a8a96 | |||
| afc6f429f0 | |||
| 36ea3c20ca | |||
| aacdd77f3e | |||
| a369f02083 | |||
| 09637f293e | |||
| e81564c1ae | |||
| ebfe2a004b | |||
| 3076b28c24 | |||
| e2746b7cbc | |||
| 62bc4f2cd0 | |||
| fd14f9bc84 | |||
| f824a17704 | |||
| ba98145086 | |||
| 571c2acfc3 | |||
| cab056ef5c | |||
| 8c4315be40 | |||
| c808ddcc45 | |||
| d5153a6f4c | |||
| 352d1843e0 | |||
| 0f986b4c87 | |||
| b55989f696 | |||
| b0227d5ce7 | |||
| 32ccbf4792 | |||
| df3027dc8a | |||
| d53ef57ae1 | |||
| 00f16304a4 | |||
| 3f19c1ab3a | |||
| 9570f03ec6 | |||
| 03f62bd8f6 | |||
| 6d2193d597 | |||
| 3d868d4700 | |||
| 4c50bd502c | |||
| e54c1fa7d8 | |||
| d6b5524aca | |||
| 996343c5a3 | |||
| 8a4e1ebfc2 | |||
| 2f53b72779 | |||
| 009c3a9429 | |||
| cfa5f187e6 | |||
| 91bc59d7f8 | |||
| a77f002054 | |||
| 402d7f9542 | |||
| 6181aa8ba9 | |||
| 9322c5426d | |||
| 6de49f89d6 | |||
| 5adbe6bd5e | |||
| 9da159f842 | |||
| 89f63a9db2 | |||
| 771059bf5a | |||
| e7f30153b8 | |||
| 21c68fa1b2 | |||
| 37a9809f67 | |||
| 7bee1dcae5 | |||
| dcb3e8e2ff | |||
| 2f7890a40b | |||
| 36d983ba28 | |||
| 20e409b71f | |||
| 34ae7d21fd | |||
| 25f7dbb312 | |||
| 7d2d0b4d87 | |||
| e0fcca4b7f | |||
| b51da5d401 | |||
| 754bc6c51e | |||
| f99700d863 | |||
| 270f64c594 | |||
| e86aa352df | |||
| f950fb4d85 | |||
| f0db205eb9 | |||
| 9f8ab5da03 | |||
| c034a10951 | |||
| 6b301b2208 | |||
| 83642a6291 | |||
| cbe4ca0377 | |||
| eee6476d6a | |||
| 8bdce005c3 | |||
| 3f585c84b7 | |||
| dd8a84165b | |||
| c486c42de8 | |||
| cdffc5824f | |||
| f6a4f3e619 | |||
| dcdcdd88aa | |||
| a476b66c2f | |||
| fba69e3d19 | |||
| 0bd55b76d8 | |||
| 704fc7fb32 | |||
| d88763f179 | |||
| 56faab71e2 | |||
| 9da3180e38 | |||
| 85a564aa45 | |||
| b9170db1c1 | |||
| 0e1158c77b | |||
| 8ac000abec | |||
| f371cff011 | |||
| 5088adb7eb | |||
| d1ff472bda | |||
| 7e37817b86 | |||
| 611a935232 | |||
| 974cd33853 | |||
| fc1fec4af8 | |||
| 13bf8d7733 | |||
| f4de63e85e | |||
| af1f47df23 | |||
| 0755dd3377 | |||
| f20c4a25a9 | |||
| cfc758fe7d | |||
| b20b9e1436 | |||
| 0c292dde12 | |||
| ac650656b4 | |||
| a3573c7a64 | |||
| 069d4c0ce5 | |||
| f62d46cfbd | |||
| 3d385106e9 | |||
| bc357dd188 | |||
| c353d9aae6 | |||
| ace7fbf838 | |||
| aee7ea2d49 | |||
| c6cccf6899 | |||
| 106e470898 | |||
| 59b095628d | |||
| 1a128a6d74 | |||
| bfb12e4f81 | |||
| d9ad51edd6 | |||
| 316440a4e0 | |||
| 625b62fa36 | |||
| c65b17d80b | |||
| 04cc6aba43 | |||
| 627cef720c | |||
| ff4b036c6a | |||
| 586c41d23c | |||
| 76c8bc861d | |||
| da32c2f0bd | |||
| 9564bd8a89 | |||
| 074952265f | |||
| 669d52f01b | |||
| c37680b62c | |||
| fae27f4cea | |||
| 3b7fcc67ad | |||
| 75d7068fbf | |||
| 0ebabf5b61 | |||
| d349a76660 | |||
| 7e12574bd8 | |||
| 1284a8a6ed | |||
| 8e22e40c16 | |||
| 929ca8911e | |||
| 82b0f2c4cd | |||
| 6e5482466d | |||
| 45369006c3 | |||
| 58d359fc1d | |||
| c5c136a30d | |||
| c327b98b97 | |||
| 3f3ccf5344 | |||
| 9b191bb3ab | |||
| 43df59a88c | |||
| 972d9b2ab7 | |||
| 5ed6cf830b | |||
| e8e4aa67ce | |||
| e643292a7e | |||
| f0a8300632 | |||
| f24141587f | |||
| e2616c9159 | |||
| 83a9ff80d0 | |||
| fd2085b511 | |||
| ae9d1fde90 | |||
| 7fd2d5bf10 | |||
| e479d04c85 | |||
| 55dc6397e1 | |||
| d5d01cf5af | |||
| 98b3bdfde3 | |||
| 4be423cfb8 | |||
| 477a7d13de | |||
| 4616f6a5be | |||
| 829e1339a8 | |||
| c9494a312d | |||
| 5b7ad0f4c9 | |||
| 55720cfd4d | |||
| 4cb5b9a956 | |||
| 6860d8952f | |||
| 1aa3d07e6a | |||
| 0c9cfedb6e | |||
| 042544f22e | |||
| f5d5171f86 | |||
| fb366ce36b | |||
| 9f4df9a76e | |||
| 0bc760230f | |||
| c524c39901 | |||
| 3da03c978b | |||
| 4316e1f3e4 | |||
| b800984e3f | |||
| 17c2072b82 | |||
| d008548306 | |||
| 49b38c10b7 | |||
| 053bd0e561 | |||
| 4d3931709b | |||
| 166a5272fb | |||
| 7e8e0411d9 | |||
| 6616b3eae5 | |||
| 0c99a6e7f4 | |||
| a5e3f36d97 | |||
| f5f9c3bb31 | |||
| 91b9b456b5 | |||
| 0a60c35be0 | |||
| 641406a68e | |||
| 334f3d983a | |||
| 04c3a432e1 | |||
| fdbce8df36 | |||
| 81d68d5ac9 | |||
| 6383a7ef22 | |||
| 1fcef60768 | |||
| 3a38b44e79 | |||
| 82b7a87a7c | |||
| 48ba43aae5 | |||
| 89525c38d5 | |||
| d468abe5a1 | |||
| 9c44843884 | |||
| 2b26bdd5a4 | |||
| a76a734e16 | |||
| 4fd3382493 | |||
| 4209a2c54d | |||
| 154057adcc | |||
| a641d2d831 | |||
| cd7e04fec3 | |||
| 4381d5838c |
@@ -30,8 +30,13 @@ 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
|
||||
Wood - Normal
|
||||
17 102 81 51 255 125 102 63 255 78 64 39 255 40 32 20 255
|
||||
17:0 102 81 51 255 125 102 63 255 78 64 39 255 40 32 20 255
|
||||
Wood - Spruce (Red/dark wood)
|
||||
17:1 75 44 24 255 125 102 63 255 78 64 39 255 30 18 10 255
|
||||
Wood - Birch (light wood)
|
||||
17:2 191 191 191 255 125 102 63 255 78 64 39 255 76 76 76 255
|
||||
Leaves
|
||||
18 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
|
||||
Sponge
|
||||
@@ -120,6 +125,10 @@ Double Stone Slab - Wood
|
||||
43:2 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
|
||||
Double Stone Slab - Cobblestone
|
||||
43:3 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
|
||||
Double Stone Slab - Brick
|
||||
43:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Double Stone Slab - Stone Brick
|
||||
43:5 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
|
||||
44:0 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
|
||||
@@ -129,6 +138,10 @@ Stone Slab - Wood
|
||||
44:2 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
|
||||
Stone Slab - Cobblestone
|
||||
44:3 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
|
||||
Stone Slab - Brick
|
||||
44:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Stone Slab - Stone Brick
|
||||
44:5 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
|
||||
@@ -233,6 +246,32 @@ Locked Chest
|
||||
95 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
|
||||
Trap Door
|
||||
96 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
|
||||
Stone - Sliverfish
|
||||
97 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Stone Brick
|
||||
98 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Huge Brown Mushroom
|
||||
99 204 153 120 255 145 109 85 255 114 86 67 255 73 64 58 255
|
||||
Huge Red Mushroom
|
||||
100 255 43 43 255 196 29 38 255 186 105 109 255 124 64 64 255
|
||||
Iron Bars
|
||||
101 191 191 191 96 152 152 152 96 95 95 95 96 76 76 76 96
|
||||
Glass Pane
|
||||
102 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
|
||||
Melon
|
||||
103 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
|
||||
Pumpkin Stem
|
||||
104 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
Melon Stem
|
||||
105 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
Vines
|
||||
106 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
|
||||
Fence Gate
|
||||
107 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
|
||||
Brick Stairs
|
||||
108 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Stone Stairs
|
||||
109 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Biome Rainforest - Dark Green
|
||||
[RAINFOREST] 49 67 21 255 39 53 17 255 24 34 10 255 19 27 8 255
|
||||
Biome Swampland - Brown
|
||||
@@ -259,6 +298,12 @@ Biome Hell - Pink
|
||||
[HELL] 190 115 135 255 151 92 108 255 95 57 67 255 75 46 53 255
|
||||
Biome Sky - Blue
|
||||
[SKY] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome Ocean - Blue
|
||||
[OCEAN] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome River - Medium Blue
|
||||
[RIVER] 44 54 154 144 36 45 127 255 25 32 77 255 20 28 65 255
|
||||
Biome Extreme Hills - Dark Brown
|
||||
[EXTREME_HILLS] 38 22 12 255 30 18 10 255 19 11 6 255 15 9 5 255
|
||||
[RAINFALL-0.0] 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
[RAINFALL-1.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
[TEMPERATURE-0.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
|
||||
+47
-2
@@ -30,8 +30,13 @@ 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
|
||||
Wood - Normal
|
||||
17 102 81 51 255 125 102 63 255 78 64 39 255 40 32 20 255
|
||||
17:0 102 81 51 255 125 102 63 255 78 64 39 255 40 32 20 255
|
||||
Wood - Spruce (Red/dark wood)
|
||||
17:1 75 44 24 255 125 102 63 255 78 64 39 255 30 18 10 255
|
||||
Wood - Birch (light wood)
|
||||
17:2 191 191 191 255 125 102 63 255 78 64 39 255 76 76 76 255
|
||||
Leaves
|
||||
18 27 69 37 180 22 57 31 180 19 48 25 180 22 57 31 180
|
||||
Sponge
|
||||
@@ -120,6 +125,10 @@ Double Stone Slab - Wood
|
||||
43:2 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
|
||||
Double Stone Slab - Cobblestone
|
||||
43:3 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
|
||||
Double Stone Slab - Brick
|
||||
43:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Double Stone Slab - Stone Brick
|
||||
43:5 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
|
||||
44:0 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
|
||||
@@ -129,6 +138,10 @@ Stone Slab - Wood
|
||||
44:2 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
|
||||
Stone Slab - Cobblestone
|
||||
44:3 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
|
||||
Stone Slab - Brick
|
||||
44:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Stone Slab - Stone Brick
|
||||
44:5 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
|
||||
@@ -233,6 +246,32 @@ Locked Chest
|
||||
95 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
|
||||
Trap Door
|
||||
96 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
|
||||
Stone - Sliverfish
|
||||
97 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Stone Brick
|
||||
98 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Huge Brown Mushroom
|
||||
99 204 153 120 255 145 109 85 255 114 86 67 255 73 64 58 255
|
||||
Huge Red Mushroom
|
||||
100 255 43 43 255 196 29 38 255 186 105 109 255 124 64 64 255
|
||||
Iron Bars
|
||||
101 191 191 191 96 152 152 152 96 95 95 95 96 76 76 76 96
|
||||
Glass Pane
|
||||
102 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
|
||||
Melon
|
||||
103 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
|
||||
Pumpkin Stem
|
||||
104 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
Melon Stem
|
||||
105 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
Vines
|
||||
106 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
|
||||
Fence Gate
|
||||
107 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
|
||||
Brick Stairs
|
||||
108 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Stone Stairs
|
||||
109 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Biome Rainforest - Dark Green
|
||||
[RAINFOREST] 49 67 21 255 39 53 17 255 24 34 10 255 19 27 8 255
|
||||
Biome Swampland - Brown
|
||||
@@ -259,6 +298,12 @@ Biome Hell - Pink
|
||||
[HELL] 190 115 135 255 151 92 108 255 95 57 67 255 75 46 53 255
|
||||
Biome Sky - Blue
|
||||
[SKY] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome Ocean - Blue
|
||||
[OCEAN] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome River - Medium Blue
|
||||
[RIVER] 44 54 154 144 36 45 127 255 25 32 77 255 20 28 65 255
|
||||
Biome Extreme Hills - Dark Brown
|
||||
[EXTREME_HILLS] 38 22 12 255 30 18 10 255 19 11 6 255 15 9 5 255
|
||||
[RAINFALL-0.0] 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
[RAINFALL-1.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
[TEMPERATURE-0.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
|
||||
@@ -30,8 +30,13 @@ 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
|
||||
Wood - Normal
|
||||
17 102 81 51 255 125 102 63 255 78 64 39 255 40 32 20 255
|
||||
17:0 102 81 51 255 125 102 63 255 78 64 39 255 40 32 20 255
|
||||
Wood - Spruce (Red/dark wood)
|
||||
17:1 75 44 24 255 125 102 63 255 78 64 39 255 30 18 10 255
|
||||
Wood - Birch (light wood)
|
||||
17:2 191 191 191 255 125 102 63 255 78 64 39 255 76 76 76 255
|
||||
Leaves
|
||||
18 47 99 32 255 34 86 20 255 24 66 14 255 23 57 13 255
|
||||
Sponge
|
||||
@@ -120,6 +125,10 @@ Double Stone Slab - Wood
|
||||
43:2 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
|
||||
Double Stone Slab - Cobblestone
|
||||
43:3 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
|
||||
Double Stone Slab - Brick
|
||||
43:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Double Stone Slab - Stone Brick
|
||||
43:5 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
|
||||
44:0 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
|
||||
@@ -129,6 +138,10 @@ Stone Slab - Wood
|
||||
44:2 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
|
||||
Stone Slab - Cobblestone
|
||||
44:3 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
|
||||
Stone Slab - Brick
|
||||
44:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Stone Slab - Stone Brick
|
||||
44:5 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
|
||||
@@ -233,6 +246,32 @@ Locked Chest
|
||||
95 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
|
||||
Trap Door
|
||||
96 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
|
||||
Stone - Sliverfish
|
||||
97 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Stone Brick
|
||||
98 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Huge Brown Mushroom
|
||||
99 204 153 120 255 145 109 85 255 114 86 67 255 73 64 58 255
|
||||
Huge Red Mushroom
|
||||
100 255 43 43 255 196 29 38 255 186 105 109 255 124 64 64 255
|
||||
Iron Bars
|
||||
101 191 191 191 96 152 152 152 96 95 95 95 96 76 76 76 96
|
||||
Glass Pane
|
||||
102 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
|
||||
Melon
|
||||
103 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
|
||||
Pumpkin Stem
|
||||
104 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
Melon Stem
|
||||
105 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
Vines
|
||||
106 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
|
||||
Fence Gate
|
||||
107 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
|
||||
Brick Stairs
|
||||
108 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
Stone Stairs
|
||||
109 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Biome Rainforest - Dark Green
|
||||
[RAINFOREST] 49 67 21 255 39 53 17 255 24 34 10 255 19 27 8 255
|
||||
Biome Swampland - Brown
|
||||
@@ -259,6 +298,12 @@ Biome Hell - Pink
|
||||
[HELL] 190 115 135 255 151 92 108 255 95 57 67 255 75 46 53 255
|
||||
Biome Sky - Blue
|
||||
[SKY] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome Ocean - Blue
|
||||
[OCEAN] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome River - Medium Blue
|
||||
[RIVER] 44 54 154 144 36 45 127 255 25 32 77 255 20 28 65 255
|
||||
Biome Extreme Hills - Dark Brown
|
||||
[EXTREME_HILLS] 38 22 12 255 30 18 10 255 19 11 6 255 15 9 5 255
|
||||
[RAINFALL-0.0] 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
[RAINFALL-1.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
[TEMPERATURE-0.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
15 231 174 113 255 193 145 94 255 161 121 79 255 193 145 94 255
|
||||
16 56 60 70 255 46 50 58 255 39 42 49 255 46 50 58 255
|
||||
17 119 97 74 255 99 81 62 255 83 68 52 255 99 81 62 255
|
||||
17:0 119 97 74 255 99 81 62 255 83 68 52 255 99 81 62 255
|
||||
17:1 75 44 24 255 125 102 63 255 78 64 39 255 30 18 10 255
|
||||
17:2 191 191 191 255 125 102 63 255 78 64 39 255 76 76 76 255
|
||||
18 27 69 37 180 22 57 31 180 19 48 25 180 22 57 31 180
|
||||
19 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
|
||||
20 178 217 223 90 148 181 186 90 124 151 155 90 148 181 186 90
|
||||
@@ -59,11 +62,15 @@
|
||||
43:1 192 178 110 255 160 148 92 255 134 124 77 255 160 148 92 255
|
||||
43:2 109 80 60 255 91 67 50 255 76 56 41 255 91 67 50 255
|
||||
43:3 118 112 96 255 98 93 80 255 82 78 67 255 98 93 80 255
|
||||
43:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
43:5 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
|
||||
44 122 112 99 254 101 93 82 254 85 78 69 254 101 93 82 254
|
||||
44:0 122 112 99 254 101 93 82 254 85 78 69 254 101 93 82 254
|
||||
44:1 192 178 110 255 160 148 92 255 134 124 77 255 160 148 92 255
|
||||
44:2 109 80 60 255 91 67 50 255 76 56 41 255 91 67 50 255
|
||||
44:3 118 112 96 255 98 93 80 255 82 78 67 255 98 93 80 255
|
||||
44:4 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
44:5 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
|
||||
45 230 103 73 255 192 86 61 255 160 71 50 255 192 86 61 255
|
||||
46 255 79 30 255 231 72 27 255 193 60 22 255 231 72 27 255
|
||||
47 125 91 38 192 100 72 30 192 62 45 19 192 50 36 15 192
|
||||
@@ -116,6 +123,19 @@
|
||||
94 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
|
||||
95 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
|
||||
96 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
|
||||
97 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
98 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
99 204 153 120 255 145 109 85 255 114 86 67 255 73 64 58 255
|
||||
100 255 43 43 255 196 29 38 255 186 105 109 255 124 64 64 255
|
||||
101 191 191 191 96 152 152 152 96 95 95 95 96 76 76 76 96
|
||||
102 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
|
||||
103 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
|
||||
104 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
105 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
|
||||
106 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
|
||||
107 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
|
||||
108 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
|
||||
109 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
Biome Rainforest - Dark Green
|
||||
[RAINFOREST] 49 67 21 255 39 53 17 255 24 34 10 255 19 27 8 255
|
||||
Biome Swampland - Brown
|
||||
@@ -142,6 +162,12 @@ Biome Hell - Pink
|
||||
[HELL] 190 115 135 255 151 92 108 255 95 57 67 255 75 46 53 255
|
||||
Biome Sky - Blue
|
||||
[SKY] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome Ocean - Blue
|
||||
[OCEAN] 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
|
||||
Biome River - Medium Blue
|
||||
[RIVER] 44 54 154 144 36 45 127 255 25 32 77 255 20 28 65 255
|
||||
Biome Extreme Hills - Dark Brown
|
||||
[EXTREME_HILLS] 38 22 12 255 30 18 10 255 19 11 6 255 15 9 5 255
|
||||
[RAINFALL-0.0] 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
|
||||
[RAINFALL-1.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
[TEMPERATURE-0.0] 38 92 255 255 30 73 204 255 19 46 127 255 15 36 102 255
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.dynmap</groupId>
|
||||
<artifactId>dynmap</artifactId>
|
||||
<version>0.20</version>
|
||||
<version>0.22.1</version>
|
||||
<name>dynmap</name>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
@@ -13,6 +13,24 @@
|
||||
<url>https://github.com/FrozenCow/dynmap/issues</url>
|
||||
</issueManagement>
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
<includes>
|
||||
<include>*.yml</include>
|
||||
<include>*.txt</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>false</filtering>
|
||||
<excludes>
|
||||
<exclude>*.yml</exclude>
|
||||
<exclude>*.txt</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
@@ -29,6 +47,12 @@
|
||||
<descriptors>
|
||||
<descriptor>src/main/assembly/package.xml</descriptor>
|
||||
</descriptors>
|
||||
<!-- Hack for bug in maven-assembly: http://jira.codehaus.org/browse/MASSEMBLY-449 -->
|
||||
<archiverConfig>
|
||||
<fileMode>420</fileMode> <!-- 420(dec) = 644(oct) -->
|
||||
<directoryMode>493</directoryMode> <!-- 493(dec) = 755(oct) -->
|
||||
<defaultDirectoryMode>493</defaultDirectoryMode>
|
||||
</archiverConfig>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -15,9 +15,20 @@
|
||||
<include>CHANGELOG*</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${project.basedir}/web/</directory>
|
||||
<outputDirectory>/dynmap/web/</outputDirectory>
|
||||
<includes>
|
||||
<include>version.js</include>
|
||||
</includes>
|
||||
<filtered>true</filtered>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${project.basedir}/web</directory>
|
||||
<outputDirectory>/dynmap/web</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>version.js</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${project.basedir}/colorschemes</directory>
|
||||
@@ -32,7 +43,9 @@
|
||||
</fileSets>
|
||||
<files>
|
||||
<file>
|
||||
<source>${project.build.directory}/${artifactId}-${version}.jar</source>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<destName>dynmap.jar</destName></file></files>
|
||||
<source>${project.build.directory}/${artifactId}-${version}.jar</source>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<destName>dynmap.jar</destName>
|
||||
</file>
|
||||
</files>
|
||||
</assembly>
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.dynmap;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.bukkit.Material;
|
||||
|
||||
public class Armor {
|
||||
@@ -10,27 +11,34 @@ public class Armor {
|
||||
* We rely on getArmorContents() to return 4 armor pieces in the order
|
||||
* of: boots, pants, chest, helmet
|
||||
*/
|
||||
private static final double armorPoints[] = {1.5, 3.0, 4.0, 1.5};
|
||||
private static final int armorPoints[] = {3, 6, 8, 3};
|
||||
|
||||
public static final int getArmorPoints(Player player) {
|
||||
int currentDurability = 0;
|
||||
int baseDurability = 0;
|
||||
double baseArmorPoints = 0;
|
||||
ItemStack inventory[] = player.getInventory().getArmorContents();
|
||||
for(int i=0;i<inventory.length;i++) {
|
||||
if(inventory[i] == null)
|
||||
continue;
|
||||
Material m = inventory[i].getType();
|
||||
if(m == null)
|
||||
continue;
|
||||
final short maxDurability = m.getMaxDurability();
|
||||
if(maxDurability < 0)
|
||||
continue;
|
||||
final short durability = inventory[i].getDurability();
|
||||
baseDurability += maxDurability;
|
||||
currentDurability += maxDurability - durability;
|
||||
baseArmorPoints += armorPoints[i];
|
||||
int baseArmorPoints = 0;
|
||||
ItemStack[] itm = new ItemStack[4];
|
||||
PlayerInventory inv = player.getInventory();
|
||||
itm[0] = inv.getBoots();
|
||||
itm[1]= inv.getLeggings();
|
||||
itm[2] = inv.getChestplate();
|
||||
itm[3] = inv.getHelmet();
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(itm[i] == null) continue;
|
||||
int dur = itm[i].getDurability();
|
||||
int max = itm[i].getType().getMaxDurability();
|
||||
if(max <= 0) continue;
|
||||
if(i == 2)
|
||||
max = max + 1; /* Always 1 too low for chestplate */
|
||||
else
|
||||
max = max - 3; /* Always 3 too high, versus how client calculates it */
|
||||
baseDurability += max;
|
||||
currentDurability += max - dur;
|
||||
baseArmorPoints += armorPoints[i];
|
||||
}
|
||||
return (int)Math.round(2*baseArmorPoints*currentDurability/baseDurability);
|
||||
int ap = 0;
|
||||
if(baseDurability > 0)
|
||||
ap = ((baseArmorPoints - 1) * currentDurability) / baseDurability + 1;
|
||||
return ap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,14 @@ public class AsynchronousQueue<T> {
|
||||
private Set<T> set = new HashSet<T>();
|
||||
private Handler<T> handler;
|
||||
private int dequeueTime;
|
||||
|
||||
public AsynchronousQueue(Handler<T> handler, int dequeueTime) {
|
||||
private int accelDequeueTime;
|
||||
private int accelDequeueThresh;
|
||||
|
||||
public AsynchronousQueue(Handler<T> handler, int dequeueTime, int accelDequeueThresh, int accelDequeueTime) {
|
||||
this.handler = handler;
|
||||
this.dequeueTime = dequeueTime;
|
||||
this.accelDequeueTime = accelDequeueTime;
|
||||
this.accelDequeueThresh = accelDequeueThresh;
|
||||
}
|
||||
|
||||
public boolean push(T t) {
|
||||
@@ -30,15 +34,10 @@ public class AsynchronousQueue<T> {
|
||||
|
||||
private T pop() {
|
||||
synchronized (lock) {
|
||||
try {
|
||||
T t = queue.removeFirst();
|
||||
if (!set.remove(t)) {
|
||||
// This should never happen.
|
||||
}
|
||||
return t;
|
||||
} catch (NoSuchElementException e) {
|
||||
return null;
|
||||
}
|
||||
T t = queue.pollFirst();
|
||||
if(t != null)
|
||||
set.remove(t);
|
||||
return t;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +87,10 @@ public class AsynchronousQueue<T> {
|
||||
if (t != null) {
|
||||
handler.handle(t);
|
||||
}
|
||||
sleep(dequeueTime);
|
||||
if(set.size() >= accelDequeueThresh)
|
||||
sleep(accelDequeueTime);
|
||||
else
|
||||
sleep(dequeueTime);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
@@ -4,6 +4,8 @@ import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.dynmap.markers.Marker;
|
||||
import org.dynmap.markers.MarkerSet;
|
||||
import org.json.simple.JSONAware;
|
||||
import org.json.simple.JSONStreamAware;
|
||||
|
||||
@@ -77,4 +79,8 @@ public class Client {
|
||||
}
|
||||
}
|
||||
|
||||
public static class ComponentMessage extends Update {
|
||||
public String type = "component";
|
||||
/* Each subclass must provide 'ctype' string for component 'type' */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,8 @@ public class ClientConfigurationComponent extends Component {
|
||||
s(t, "spammessage", c.getString("spammessage", "You may only chat once every %interval% seconds."));
|
||||
s(t, "webprefix", unescapeString(c.getString("webprefix", "[WEB] ")));
|
||||
s(t, "defaultzoom", c.getInteger("defaultzoom", 0));
|
||||
s(t, "sidebaropened", c.getBoolean("sidebaropened", false));
|
||||
s(t, "sidebaropened", c.getString("sidebaropened", "false"));
|
||||
s(t, "dynmapversion", plugin.getDescription().getVersion());
|
||||
|
||||
DynmapWorld defaultWorld = null;
|
||||
String defmap = null;
|
||||
|
||||
@@ -42,7 +42,9 @@ public class ClientUpdateComponent extends Component {
|
||||
s(jp, "account", p.getName());
|
||||
/* Don't leak player location for world not visible on maps, or if sendposition disbaled */
|
||||
DynmapWorld pworld = MapManager.mapman.worldsLookup.get(p.getWorld().getName());
|
||||
if(configuration.getBoolean("sendpositon", true) && (pworld != null) && pworld.sendposition) {
|
||||
/* Fix typo on 'sendpositon' to 'sendposition', keep bad one in case someone used it */
|
||||
if(configuration.getBoolean("sendposition", true) && configuration.getBoolean("sendpositon", true) &&
|
||||
(pworld != null) && pworld.sendposition) {
|
||||
s(jp, "world", p.getWorld().getName());
|
||||
s(jp, "x", pl.getX());
|
||||
s(jp, "y", pl.getY());
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,13 @@
|
||||
package org.dynmap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.Location;
|
||||
import org.dynmap.MapType.ImageFormat;
|
||||
import org.dynmap.debug.Debug;
|
||||
import org.dynmap.kzedmap.KzedMap;
|
||||
import org.dynmap.utils.DynmapBufferedImage;
|
||||
import org.dynmap.utils.FileLockManager;
|
||||
import org.dynmap.utils.MapChunkCache;
|
||||
@@ -32,6 +33,7 @@ public class DynmapWorld {
|
||||
public ConfigurationNode configuration;
|
||||
public List<Location> seedloc;
|
||||
public List<MapChunkCache.VisibilityLimit> visibility_limits;
|
||||
public List<MapChunkCache.VisibilityLimit> hidden_limits;
|
||||
public AutoGenerateOption do_autogenerate;
|
||||
public MapChunkCache.HiddenChunkStyle hiddenchunkstyle;
|
||||
public int servertime;
|
||||
@@ -104,11 +106,21 @@ public class DynmapWorld {
|
||||
}
|
||||
}
|
||||
|
||||
private static final String COORDSTART = "-0123456789";
|
||||
private static class PNGFileFilter implements FilenameFilter {
|
||||
String prefix;
|
||||
public PNGFileFilter(String pre) { prefix = pre; }
|
||||
String suffix;
|
||||
public PNGFileFilter(String pre, MapType.ImageFormat fmt) {
|
||||
if((pre != null) && (pre.length() > 0))
|
||||
prefix = pre;
|
||||
suffix = "." + fmt.getFileExt();
|
||||
}
|
||||
public boolean accept(File f, String n) {
|
||||
if(n.endsWith(".png") && n.startsWith(prefix)) {
|
||||
if(n.endsWith(suffix)) {
|
||||
if((prefix != null) && (!n.startsWith(prefix)))
|
||||
return false;
|
||||
if((prefix == null) && (COORDSTART.indexOf(n.charAt(0)) < 0))
|
||||
return false;
|
||||
File fn = new File(f, n);
|
||||
return fn.isFile();
|
||||
}
|
||||
@@ -141,11 +153,13 @@ public class DynmapWorld {
|
||||
boolean neg_step_y;
|
||||
String baseprefix;
|
||||
int zoomlevel;
|
||||
int background;
|
||||
String zoomprefix;
|
||||
String fnprefix;
|
||||
String zfnprefix;
|
||||
int bigworldshift;
|
||||
boolean isbigmap;
|
||||
MapType.ImageFormat fmt;
|
||||
}
|
||||
|
||||
public boolean freshenZoomOutFilesByLevel(int zoomlevel) {
|
||||
@@ -222,7 +236,7 @@ public class DynmapWorld {
|
||||
/* If level is above top needed for this map, skip */
|
||||
if(zoomlevel > (this.extrazoomoutlevels + mt.getMapZoomOutLevels()))
|
||||
continue;
|
||||
List<String> pfx = mt.baseZoomFilePrefixes();
|
||||
List<MapType.ZoomInfo> pfx = mt.baseZoomFileInfo();
|
||||
int stepsize = mt.baseZoomFileStepSize();
|
||||
int bigworldshift = mt.getBigWorldShift();
|
||||
boolean neg_step_x = false;
|
||||
@@ -241,17 +255,19 @@ public class DynmapWorld {
|
||||
break;
|
||||
}
|
||||
int[] stepseq = mt.zoomFileStepSequence();
|
||||
for(String p : pfx) {
|
||||
for(MapType.ZoomInfo p : pfx) {
|
||||
PrefixData pd = new PrefixData();
|
||||
pd.stepsize = stepsize;
|
||||
pd.neg_step_x = neg_step_x;
|
||||
pd.neg_step_y = neg_step_y;
|
||||
pd.stepseq = stepseq;
|
||||
pd.baseprefix = p;
|
||||
pd.baseprefix = p.prefix;
|
||||
pd.background = p.background_argb;
|
||||
pd.zoomlevel = zoomlevel;
|
||||
pd.zoomprefix = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz".substring(0, zoomlevel);
|
||||
pd.bigworldshift = bigworldshift;
|
||||
pd.isbigmap = mt.isBigWorldMap(this);
|
||||
pd.fmt = mt.getImageFormat();
|
||||
if(pd.isbigmap) {
|
||||
if(zoomlevel > 0) {
|
||||
pd.zoomprefix += "_";
|
||||
@@ -267,7 +283,7 @@ public class DynmapWorld {
|
||||
pd.zfnprefix = "z" + pd.fnprefix;
|
||||
}
|
||||
|
||||
maptab.put(p, pd);
|
||||
maptab.put(p.prefix, pd);
|
||||
}
|
||||
}
|
||||
return maptab;
|
||||
@@ -282,15 +298,15 @@ public class DynmapWorld {
|
||||
|
||||
private String makeFilePath(PrefixData pd, int x, int y, boolean zoomed) {
|
||||
if(pd.isbigmap)
|
||||
return pd.baseprefix + "/" + (x >> pd.bigworldshift) + "_" + (y >> pd.bigworldshift) + "/" + (zoomed?pd.zfnprefix:pd.fnprefix) + x + "_" + y + ".png";
|
||||
return pd.baseprefix + "/" + (x >> pd.bigworldshift) + "_" + (y >> pd.bigworldshift) + "/" + (zoomed?pd.zfnprefix:pd.fnprefix) + x + "_" + y + "." + pd.fmt.getFileExt();
|
||||
else
|
||||
return (zoomed?pd.zfnprefix:pd.fnprefix) + "_" + x + "_" + y + ".png";
|
||||
return (zoomed?pd.zfnprefix:pd.fnprefix) + "_" + x + "_" + y + "." + pd.fmt.getFileExt();
|
||||
}
|
||||
|
||||
private int processZoomDirectory(File dir, PrefixData pd) {
|
||||
Debug.debug("processZoomDirectory(" + dir.getPath() + "," + pd.baseprefix + ")");
|
||||
HashMap<String, ProcessTileRec> toprocess = new HashMap<String, ProcessTileRec>();
|
||||
String[] files = dir.list(new PNGFileFilter(pd.fnprefix));
|
||||
String[] files = dir.list(new PNGFileFilter(pd.fnprefix, pd.fmt));
|
||||
if(files == null)
|
||||
return 0;
|
||||
for(String fn : files) {
|
||||
@@ -418,6 +434,16 @@ public class DynmapWorld {
|
||||
/* blit scaled rendered tile onto zoom-out tile */
|
||||
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
||||
}
|
||||
else if((pd.background != 0) && (pd.fmt != ImageFormat.FORMAT_PNG)) {
|
||||
Arrays.fill(argb, pd.background);
|
||||
/* blit scaled rendered tile onto zoom-out tile */
|
||||
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
||||
}
|
||||
}
|
||||
else if((pd.background != 0) && (pd.fmt != ImageFormat.FORMAT_PNG)) {
|
||||
Arrays.fill(argb, pd.background);
|
||||
/* blit scaled rendered tile onto zoom-out tile */
|
||||
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
||||
}
|
||||
}
|
||||
FileLockManager.getWriteLock(zf);
|
||||
@@ -434,7 +460,7 @@ public class DynmapWorld {
|
||||
try {
|
||||
if(!zf.getParentFile().exists())
|
||||
zf.getParentFile().mkdirs();
|
||||
FileLockManager.imageIOWrite(zIm, "png", zf);
|
||||
FileLockManager.imageIOWrite(zIm, pd.fmt, zf);
|
||||
Debug.debug("Saved zoom-out tile at " + zf.getPath());
|
||||
} catch (IOException e) {
|
||||
Debug.error("Failed to save zoom-out tile: " + zf.getName(), e);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,7 @@ import org.dynmap.utils.MapChunkCache;
|
||||
public abstract class MapTile {
|
||||
protected DynmapWorld world;
|
||||
|
||||
public abstract boolean render(MapChunkCache cache);
|
||||
public abstract boolean render(MapChunkCache cache, String mapname);
|
||||
public abstract List<DynmapChunk> getRequiredChunks();
|
||||
public abstract MapTile[] getAdjecentTiles();
|
||||
|
||||
@@ -51,4 +51,7 @@ public abstract class MapTile {
|
||||
public abstract boolean isRawBiomeDataNeeded();
|
||||
public abstract boolean isBlockTypeDataNeeded();
|
||||
|
||||
public abstract int tileOrdinalX();
|
||||
public abstract int tileOrdinalY();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,20 +1,47 @@
|
||||
package org.dynmap;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.dynmap.utils.MapChunkCache;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public abstract class MapType {
|
||||
public enum ImageFormat {
|
||||
FORMAT_PNG("png", "png", 0.0f),
|
||||
FORMAT_JPG75("jpg-q75", "jpg", 0.75f),
|
||||
FORMAT_JPG80("jpg-q80", "jpg", 0.80f),
|
||||
FORMAT_JPG85("jpg-q85", "jpg", 0.85f),
|
||||
FORMAT_JPG("jpg", "jpg", 0.85f),
|
||||
FORMAT_JPG90("jpg-q90", "jpg", 0.90f),
|
||||
FORMAT_JPG95("jpg-q95", "jpg", 0.95f),
|
||||
FORMAT_JPG100("jpg-q100", "jpg", 1.00f);
|
||||
String id;
|
||||
String ext;
|
||||
float qual;
|
||||
|
||||
ImageFormat(String id, String ext, float quality) {
|
||||
this.id = id;
|
||||
this.ext = ext;
|
||||
this.qual = quality;
|
||||
}
|
||||
public String getID() { return id; }
|
||||
public String getFileExt() { return ext; }
|
||||
public float getQuality() { return qual; }
|
||||
};
|
||||
|
||||
public static class ZoomInfo {
|
||||
public String prefix;
|
||||
public int background_argb;
|
||||
public ZoomInfo(String pre, int bg) { prefix = pre; background_argb = bg; }
|
||||
}
|
||||
|
||||
public abstract MapTile[] getTiles(Location l);
|
||||
|
||||
public abstract MapTile[] getTiles(Location l0, Location l1);
|
||||
|
||||
public abstract MapTile[] getAdjecentTiles(MapTile tile);
|
||||
|
||||
public abstract List<DynmapChunk> getRequiredChunks(MapTile tile);
|
||||
|
||||
public abstract boolean render(MapChunkCache cache, MapTile tile, File outputFile);
|
||||
|
||||
public void buildClientConfiguration(JSONObject worldObject, DynmapWorld w) {
|
||||
}
|
||||
@@ -33,7 +60,7 @@ public abstract class MapType {
|
||||
X_MINUS_Y_MINUS
|
||||
}
|
||||
public abstract MapStep zoomFileMapStep();
|
||||
public abstract List<String> baseZoomFilePrefixes();
|
||||
public abstract List<ZoomInfo> baseZoomFileInfo();
|
||||
public abstract int baseZoomFileStepSize();
|
||||
/* How many bits of coordinate are shifted off to make big world directory name */
|
||||
public abstract int getBigWorldShift();
|
||||
@@ -41,6 +68,13 @@ public abstract class MapType {
|
||||
public abstract boolean isBigWorldMap(DynmapWorld w);
|
||||
/* Return number of zoom levels needed by this map (before extra levels from extrazoomout) */
|
||||
public int getMapZoomOutLevels() { return 0; }
|
||||
|
||||
public ImageFormat getImageFormat() { return ImageFormat.FORMAT_PNG; }
|
||||
|
||||
public int getBackgroundARGBNight() { return 0; }
|
||||
|
||||
public int getBackgroundARGBDay() { return 0; }
|
||||
|
||||
/**
|
||||
* Step sequence for creating zoomed file: first index is top-left, second top-right, third bottom-left, forth bottom-right
|
||||
* Values correspond to tile X,Y (0), X+step,Y (1), X,Y+step (2), X+step,Y+step (3)
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
package org.dynmap;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.event.world.SpawnChangeEvent;
|
||||
import org.bukkit.event.world.WorldListener;
|
||||
import org.bukkit.event.world.WorldLoadEvent;
|
||||
import org.dynmap.markers.Marker;
|
||||
import org.dynmap.markers.MarkerIcon;
|
||||
import org.dynmap.markers.MarkerSet;
|
||||
import org.dynmap.markers.impl.MarkerAPIImpl;
|
||||
import org.dynmap.markers.impl.MarkerSignManager;
|
||||
|
||||
/**
|
||||
* Markers component - ties in the component system, both on the server and client
|
||||
*/
|
||||
public class MarkersComponent extends ClientComponent {
|
||||
private MarkerAPIImpl api;
|
||||
private MarkerSignManager signmgr;
|
||||
private MarkerIcon spawnicon;
|
||||
private String spawnlbl;
|
||||
|
||||
public MarkersComponent(DynmapPlugin plugin, ConfigurationNode configuration) {
|
||||
super(plugin, configuration);
|
||||
/* Register API with plugin, if needed */
|
||||
api = (MarkerAPIImpl)plugin.getMarkerAPI();
|
||||
if(plugin.markerAPIInitialized()) {
|
||||
api = (MarkerAPIImpl)plugin.getMarkerAPI();
|
||||
}
|
||||
else {
|
||||
api = MarkerAPIImpl.initializeMarkerAPI(plugin);
|
||||
plugin.registerMarkerAPI(api);
|
||||
}
|
||||
/* If configuration has enabled sign support, prime it too */
|
||||
if(configuration.getBoolean("enablesigns", false)) {
|
||||
signmgr = MarkerSignManager.initializeSignManager(plugin);
|
||||
}
|
||||
/* If we're posting spawn point markers, initialize and add world listener */
|
||||
if(configuration.getBoolean("showspawn", false)) {
|
||||
String ico = configuration.getString("spawnicon", MarkerIcon.WORLD);
|
||||
spawnlbl = configuration.getString("spawnlabel", "Spawn");
|
||||
spawnicon = api.getMarkerIcon(ico); /* Load it */
|
||||
if(spawnicon == null) {
|
||||
spawnicon = api.getMarkerIcon(MarkerIcon.WORLD);
|
||||
}
|
||||
WorldListener wl = new WorldListener() {
|
||||
public void onWorldLoad(WorldLoadEvent event) {
|
||||
World w = event.getWorld(); /* Get the world */
|
||||
Location loc = w.getSpawnLocation(); /* Get location of spawn */
|
||||
if(loc != null)
|
||||
addUpdateWorld(w, loc);
|
||||
}
|
||||
public void onSpawnChange(SpawnChangeEvent event) {
|
||||
World w = event.getWorld(); /* Get the world */
|
||||
Location loc = w.getSpawnLocation(); /* Get location of spawn */
|
||||
if(loc != null)
|
||||
addUpdateWorld(w, loc);
|
||||
}
|
||||
};
|
||||
plugin.registerEvent(org.bukkit.event.Event.Type.WORLD_LOAD, wl);
|
||||
plugin.registerEvent(org.bukkit.event.Event.Type.SPAWN_CHANGE, wl);
|
||||
/* Initialize already loaded worlds */
|
||||
for(DynmapWorld w : plugin.getMapManager().getWorlds()) {
|
||||
World world = w.world;
|
||||
Location loc = world.getSpawnLocation();
|
||||
if(loc != null)
|
||||
addUpdateWorld(world, loc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addUpdateWorld(World w, Location loc) {
|
||||
MarkerSet ms = api.getMarkerSet(MarkerSet.DEFAULT);
|
||||
if(ms != null) {
|
||||
String spawnid = "_spawn_" + w.getName();
|
||||
Marker m = ms.findMarker(spawnid); /* See if defined */
|
||||
if(m == null) { /* Not defined yet, add it */
|
||||
ms.createMarker(spawnid, spawnlbl, w.getName(), loc.getX(), loc.getY(), loc.getZ(),
|
||||
spawnicon, false);
|
||||
}
|
||||
else {
|
||||
m.setLocation(w.getName(), loc.getX(), loc.getY(), loc.getZ());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
if(signmgr != null) {
|
||||
MarkerSignManager.terminateSignManager(this.plugin);
|
||||
signmgr = null;
|
||||
}
|
||||
/* Don't unregister API - other plugins might be using it, and we want to keep non-persistent markers */
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package org.dynmap;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event.Type;
|
||||
import org.bukkit.event.player.PlayerListener;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.dynmap.MapType.ImageFormat;
|
||||
import org.dynmap.debug.Debug;
|
||||
import org.dynmap.utils.DynmapBufferedImage;
|
||||
import org.dynmap.utils.FileLockManager;
|
||||
|
||||
/**
|
||||
* Listen for player logins, and process player faces by fetching skins *
|
||||
*/
|
||||
public class PlayerFaces {
|
||||
private DynmapPlugin plugin;
|
||||
private File facesdir;
|
||||
private File faces8x8dir;
|
||||
private File faces16x16dir;
|
||||
private File faces32x32dir;
|
||||
|
||||
|
||||
private class LoadPlayerImages implements Runnable {
|
||||
public String playername;
|
||||
public LoadPlayerImages(String playername) {
|
||||
this.playername = playername;
|
||||
}
|
||||
public void run() {
|
||||
BufferedImage img = null;
|
||||
try {
|
||||
URL url = new URL("http://s3.amazonaws.com/MinecraftSkins/" + playername + ".png");
|
||||
img = ImageIO.read(url); /* Load skin for player */
|
||||
} catch (IOException iox) {
|
||||
Debug.debug("Error loading skin for '" + playername + "' - " + iox);
|
||||
}
|
||||
if(img == null) {
|
||||
try {
|
||||
InputStream in = getClass().getResourceAsStream("/char.png");
|
||||
img = ImageIO.read(in); /* Load generic skin for player */
|
||||
in.close();
|
||||
} catch (IOException iox) {
|
||||
Debug.debug("Error loading default skin for '" + playername + "' - " + iox);
|
||||
}
|
||||
}
|
||||
if(img == null) { /* No image to process? Quit */
|
||||
return;
|
||||
}
|
||||
int[] faceaccessory = new int[64]; /* 8x8 of face accessory */
|
||||
/* Get buffered image for face at 8x8 */
|
||||
DynmapBufferedImage face8x8 = DynmapBufferedImage.allocateBufferedImage(8, 8);
|
||||
img.getRGB(8, 8, 8, 8, face8x8.argb_buf, 0, 8); /* Read face from image */
|
||||
img.getRGB(40, 8, 8, 8, faceaccessory, 0, 8); /* Read face accessory from image */
|
||||
/* Apply accessory to face: see if anything is transparent (if so, apply accessory */
|
||||
boolean transp = false;
|
||||
for(int i = 0; i < 64; i++) {
|
||||
if((faceaccessory[i] & 0xFF000000) == 0) {
|
||||
transp = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(transp) {
|
||||
for(int i = 0; i < 64; i++) {
|
||||
if((faceaccessory[i] & 0xFF000000) != 0)
|
||||
face8x8.argb_buf[i] = faceaccessory[i];
|
||||
}
|
||||
}
|
||||
/* Write 8x8 file */
|
||||
File img_8x8 = new File(faces8x8dir, playername + ".png");
|
||||
FileLockManager.getWriteLock(img_8x8);
|
||||
try {
|
||||
FileLockManager.imageIOWrite(face8x8.buf_img, ImageFormat.FORMAT_PNG, img_8x8);
|
||||
} catch (IOException iox) {
|
||||
Log.severe("Cannot write player icon " + img_8x8.getPath());
|
||||
}
|
||||
FileLockManager.releaseWriteLock(img_8x8);
|
||||
/* Make 16x16 version */
|
||||
DynmapBufferedImage face16x16 = DynmapBufferedImage.allocateBufferedImage(16, 16);
|
||||
for(int i = 0; i < 16; i++) {
|
||||
for(int j = 0; j < 16; j++) {
|
||||
face16x16.argb_buf[i*16+j] = face8x8.argb_buf[(i/2)*8 + (j/2)];
|
||||
}
|
||||
}
|
||||
/* Write 16x16 file */
|
||||
File img_16x16 = new File(faces16x16dir, playername + ".png");
|
||||
FileLockManager.getWriteLock(img_16x16);
|
||||
try {
|
||||
FileLockManager.imageIOWrite(face16x16.buf_img, ImageFormat.FORMAT_PNG, img_16x16);
|
||||
} catch (IOException iox) {
|
||||
Log.severe("Cannot write player icon " + img_16x16.getPath());
|
||||
}
|
||||
FileLockManager.releaseWriteLock(img_16x16);
|
||||
DynmapBufferedImage.freeBufferedImage(face16x16);
|
||||
|
||||
/* Make 32x32 version */
|
||||
DynmapBufferedImage face32x32 = DynmapBufferedImage.allocateBufferedImage(32, 32);
|
||||
for(int i = 0; i < 32; i++) {
|
||||
for(int j = 0; j < 32; j++) {
|
||||
face32x32.argb_buf[i*32+j] = face8x8.argb_buf[(i/4)*8 + (j/4)];
|
||||
}
|
||||
}
|
||||
/* Write 32x32 file */
|
||||
File img_32x32 = new File(faces32x32dir, playername + ".png");
|
||||
FileLockManager.getWriteLock(img_32x32);
|
||||
try {
|
||||
FileLockManager.imageIOWrite(face32x32.buf_img, ImageFormat.FORMAT_PNG, img_32x32);
|
||||
} catch (IOException iox) {
|
||||
Log.severe("Cannot write player icon " + img_32x32.getPath());
|
||||
}
|
||||
FileLockManager.releaseWriteLock(img_32x32);
|
||||
DynmapBufferedImage.freeBufferedImage(face32x32);
|
||||
|
||||
DynmapBufferedImage.freeBufferedImage(face8x8);
|
||||
/* TODO: signal update for player icon to client */
|
||||
}
|
||||
}
|
||||
private class LoginListener extends PlayerListener {
|
||||
@Override
|
||||
public void onPlayerLogin(PlayerLoginEvent event) {
|
||||
MapManager.scheduleDelayedJob(new LoadPlayerImages(event.getPlayer().getName()), 0);
|
||||
}
|
||||
}
|
||||
public PlayerFaces(DynmapPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
plugin.registerEvent(Type.PLAYER_LOGIN, new LoginListener());
|
||||
facesdir = new File(plugin.tilesDirectory, "faces");
|
||||
facesdir.mkdirs(); /* Make sure directory exists */
|
||||
faces8x8dir = new File(facesdir, "8x8");
|
||||
faces8x8dir.mkdirs();
|
||||
faces16x16dir = new File(facesdir, "16x16");
|
||||
faces16x16dir.mkdirs();
|
||||
faces32x32dir = new File(facesdir, "32x32");
|
||||
faces32x32dir.mkdirs();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -32,11 +32,10 @@ public class SimpleWebChatComponent extends Component {
|
||||
|
||||
if (configuration.getBoolean("allowchat", false)) {
|
||||
PlayerChatListener playerListener = new PlayerChatListener();
|
||||
PluginManager pm = plugin.getServer().getPluginManager();
|
||||
pm.registerEvent(org.bukkit.event.Event.Type.PLAYER_CHAT, playerListener, org.bukkit.event.Event.Priority.Monitor, plugin);
|
||||
pm.registerEvent(org.bukkit.event.Event.Type.PLAYER_LOGIN, playerListener, org.bukkit.event.Event.Priority.Monitor, plugin);
|
||||
pm.registerEvent(org.bukkit.event.Event.Type.PLAYER_JOIN, playerListener, org.bukkit.event.Event.Priority.Monitor, plugin);
|
||||
pm.registerEvent(org.bukkit.event.Event.Type.PLAYER_QUIT, playerListener, org.bukkit.event.Event.Priority.Monitor, plugin);
|
||||
plugin.registerEvent(org.bukkit.event.Event.Type.PLAYER_CHAT, playerListener);
|
||||
plugin.registerEvent(org.bukkit.event.Event.Type.PLAYER_LOGIN, playerListener);
|
||||
plugin.registerEvent(org.bukkit.event.Event.Type.PLAYER_JOIN, playerListener);
|
||||
plugin.registerEvent(org.bukkit.event.Event.Type.PLAYER_QUIT, playerListener);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,8 +9,6 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.World.Environment;
|
||||
@@ -23,9 +21,7 @@ import org.dynmap.MapManager;
|
||||
import org.dynmap.TileHashManager;
|
||||
import org.dynmap.MapTile;
|
||||
import org.dynmap.MapType;
|
||||
import org.dynmap.MapType.MapStep;
|
||||
import org.dynmap.debug.Debug;
|
||||
import org.dynmap.kzedmap.KzedMap;
|
||||
import org.dynmap.utils.DynmapBufferedImage;
|
||||
import org.dynmap.utils.FileLockManager;
|
||||
import org.dynmap.utils.MapChunkCache;
|
||||
@@ -95,6 +91,35 @@ public class FlatMap extends MapType {
|
||||
return new MapTile[] { new FlatMapTile(w, this, (int) Math.floor(l.getBlockX() / 128.0), (int) Math.floor(l.getBlockZ() / 128.0), 128) };
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapTile[] getTiles(Location l0, Location l1) {
|
||||
DynmapWorld w = MapManager.mapman.getWorld(l0.getWorld().getName());
|
||||
int xmin, xmax, zmin, zmax;
|
||||
if(l0.getBlockX() < l1.getBlockX()) {
|
||||
xmin = l0.getBlockX() >> 7;
|
||||
xmax = l1.getBlockX() >> 7;
|
||||
}
|
||||
else {
|
||||
xmin = l1.getBlockX() >> 7;
|
||||
xmax = l0.getBlockX() >> 7;
|
||||
}
|
||||
if(l0.getBlockZ() < l1.getBlockZ()) {
|
||||
zmin = l0.getBlockZ() >> 7;
|
||||
zmax = l1.getBlockZ() >> 7;
|
||||
}
|
||||
else {
|
||||
zmin = l1.getBlockZ() >> 7;
|
||||
zmax = l0.getBlockZ() >> 7;
|
||||
}
|
||||
ArrayList<MapTile> rslt = new ArrayList<MapTile>();
|
||||
for(int i = xmin; i <= xmax; i++) {
|
||||
for(int j = zmin; j < zmax; j++) {
|
||||
rslt.add(new FlatMapTile(w, this, i, j, 128));
|
||||
}
|
||||
}
|
||||
return rslt.toArray(new MapTile[rslt.size()]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapTile[] getAdjecentTiles(MapTile tile) {
|
||||
FlatMapTile t = (FlatMapTile) tile;
|
||||
@@ -124,7 +149,6 @@ public class FlatMap extends MapType {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean render(MapChunkCache cache, MapTile tile, File outputFile) {
|
||||
FlatMapTile t = (FlatMapTile) tile;
|
||||
World w = t.getWorld();
|
||||
@@ -284,7 +308,7 @@ public class FlatMap extends MapType {
|
||||
if(!outputFile.getParentFile().exists())
|
||||
outputFile.getParentFile().mkdirs();
|
||||
try {
|
||||
FileLockManager.imageIOWrite(im.buf_img, "png", outputFile);
|
||||
FileLockManager.imageIOWrite(im.buf_img, ImageFormat.FORMAT_PNG, outputFile);
|
||||
} catch (IOException e) {
|
||||
Debug.error("Failed to save image: " + outputFile.getPath(), e);
|
||||
} catch (java.lang.NullPointerException e) {
|
||||
@@ -315,7 +339,7 @@ public class FlatMap extends MapType {
|
||||
if(!dayfile.getParentFile().exists())
|
||||
dayfile.getParentFile().mkdirs();
|
||||
try {
|
||||
FileLockManager.imageIOWrite(im_day.buf_img, "png", dayfile);
|
||||
FileLockManager.imageIOWrite(im_day.buf_img, ImageFormat.FORMAT_PNG, dayfile);
|
||||
} catch (IOException e) {
|
||||
Debug.error("Failed to save image: " + dayfile.getPath(), e);
|
||||
} catch (java.lang.NullPointerException e) {
|
||||
@@ -419,7 +443,7 @@ public class FlatMap extends MapType {
|
||||
public String getPrefix() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
|
||||
/* Get maps rendered concurrently with this map in this world */
|
||||
public List<MapType> getMapsSharingRender(DynmapWorld w) {
|
||||
return Collections.singletonList((MapType)this);
|
||||
@@ -430,11 +454,11 @@ public class FlatMap extends MapType {
|
||||
return Collections.singletonList(name);
|
||||
}
|
||||
|
||||
public List<String> baseZoomFilePrefixes() {
|
||||
ArrayList<String> s = new ArrayList<String>();
|
||||
s.add(getPrefix() + "_128");
|
||||
public List<ZoomInfo> baseZoomFileInfo() {
|
||||
ArrayList<ZoomInfo> s = new ArrayList<ZoomInfo>();
|
||||
s.add(new ZoomInfo(getPrefix() + "_128", 0));
|
||||
if(night_and_day)
|
||||
s.add(getPrefix()+"_day_128");
|
||||
s.add(new ZoomInfo(getPrefix()+"_day_128", 0));
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -496,7 +520,7 @@ public class FlatMap extends MapType {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean render(MapChunkCache cache) {
|
||||
public boolean render(MapChunkCache cache, String mapname) {
|
||||
return map.render(cache, this, MapManager.mapman.getTileFile(this));
|
||||
}
|
||||
|
||||
@@ -510,6 +534,22 @@ public class FlatMap extends MapType {
|
||||
return map.getAdjecentTiles(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return x ^ y ^ size ^ map.getName().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object x) {
|
||||
if(x instanceof FlatMapTile) {
|
||||
return equals((FlatMapTile)x);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public boolean equals(FlatMapTile o) {
|
||||
return (o.x == x) && (o.y == y) && (o.map == map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return world.world.getName() + "." + map.getPrefix();
|
||||
@@ -519,6 +559,9 @@ public class FlatMap extends MapType {
|
||||
public boolean isBiomeDataNeeded() { return false; }
|
||||
public boolean isRawBiomeDataNeeded() { return false; }
|
||||
public boolean isBlockTypeDataNeeded() { return true; }
|
||||
public int tileOrdinalX() { return x; }
|
||||
public int tileOrdinalY() { return y; }
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -538,6 +581,7 @@ public class FlatMap extends MapType {
|
||||
s(o, "mapzoomin", c.getInteger("mapzoomin", 3));
|
||||
s(o, "mapzoomout", world.getExtraZoomOutLevels());
|
||||
s(o, "compassview", "S"); /* Always from south */
|
||||
s(o, "image-format", ImageFormat.FORMAT_PNG.getFileExt());
|
||||
a(worldObject, "maps", o);
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user