81 lines
3.1 KiB
Java
81 lines
3.1 KiB
Java
package org.bukkit.map;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import java.awt.Color;
|
|
import java.util.concurrent.ExecutionException;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import net.minecraft.world.level.material.MaterialMapColor;
|
|
import org.bukkit.craftbukkit.map.CraftMapColorCache;
|
|
import org.junit.jupiter.api.Disabled;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
public class MapTest {
|
|
|
|
private static final Logger logger = Logger.getLogger("MapTest");
|
|
|
|
private static final int[] modifiers = {180, 220, 255, 135};
|
|
|
|
@Test
|
|
public void testColors() {
|
|
MaterialMapColor[] nmsColors = MaterialMapColor.MATERIAL_COLORS;
|
|
Color[] bukkitColors = MapPalette.colors;
|
|
|
|
boolean fail = false;
|
|
for (int i = 0; i < nmsColors.length; i++) {
|
|
if (nmsColors[i] == null) {
|
|
break;
|
|
}
|
|
int rgb = nmsColors[i].col;
|
|
|
|
int r = (rgb >> 16) & 0xFF;
|
|
int g = (rgb >> 8) & 0xFF;
|
|
int b = rgb & 0xFF;
|
|
|
|
if (i + 1 > bukkitColors.length / 4) {
|
|
for (int modi : modifiers) {
|
|
int mr = (r * modi) / 255;
|
|
int mg = (g * modi) / 255;
|
|
int mb = (b * modi) / 255;
|
|
logger.log(Level.WARNING, "Missing color (check CraftMapView#render and update md5 hash in CraftMapColorCache): c({0}, {1}, {2})", new Object[]{mr, mg, mb});
|
|
}
|
|
fail = true;
|
|
} else {
|
|
for (int j = 0; j < modifiers.length; j++) {
|
|
int modi = modifiers[j];
|
|
Color bukkit = bukkitColors[i * 4 + j];
|
|
int mr = (r * modi) / 255;
|
|
int mg = (g * modi) / 255;
|
|
int mb = (b * modi) / 255;
|
|
|
|
if (bukkit.getRed() != mr || bukkit.getGreen() != mg || bukkit.getBlue() != mb) {
|
|
logger.log(Level.WARNING, "Incorrect color: {6} {7} c({0}, {1}, {2}) != c({3}, {4}, {5})", new Object[]{
|
|
bukkit.getRed(), bukkit.getGreen(), bukkit.getBlue(),
|
|
mr, mg, mb,
|
|
i, j
|
|
});
|
|
fail = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
assertFalse(fail);
|
|
}
|
|
|
|
@Disabled("Test takes around 25 seconds, should be run by changes to the map color conversion")
|
|
@Test
|
|
public void testMapColorCacheBuilding() throws ExecutionException, InterruptedException {
|
|
CraftMapColorCache craftMapColorCache = new CraftMapColorCache(logger);
|
|
craftMapColorCache.initCache().get();
|
|
|
|
for (int r = 0; r < 256; r++) {
|
|
for (int g = 0; g < 256; g++) {
|
|
for (int b = 0; b < 256; b++) {
|
|
Color color = new Color(r, g, b);
|
|
assertEquals(MapPalette.matchColor(color), craftMapColorCache.matchColor(color), String.format("Incorrect matched color c(%s, %s, %s)", color.getRed(), color.getGreen(), color.getBlue()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|