From b5e378f40621e344038fc226e4f9ea7c0888dc2a Mon Sep 17 00:00:00 2001 From: Thomas Rudin Date: Wed, 19 Dec 2018 17:15:05 +0100 Subject: [PATCH] fix #40 allow supplying an external colors file with "colors.file" config --- readme.md | 4 +++ .../tileserver/config/TileServerConfig.java | 6 ++++ .../provider/ColorTableProvider.java | 30 +++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/readme.md b/readme.md index 498b88d..68e617d 100644 --- a/readme.md +++ b/readme.md @@ -99,6 +99,10 @@ Enable parsing of POI blocks, provided with the mod in this repository Enable parsing of Travelnet boxes * Default: **true** +### colors.file +Supply an external colors file supplementary to the builtin tables +Should be a valid filename or empty (no external colors) +* Default: **none*** # How it works diff --git a/src/main/java/io/rudin/minetest/tileserver/config/TileServerConfig.java b/src/main/java/io/rudin/minetest/tileserver/config/TileServerConfig.java index 8ed3b48..2bb78a3 100644 --- a/src/main/java/io/rudin/minetest/tileserver/config/TileServerConfig.java +++ b/src/main/java/io/rudin/minetest/tileserver/config/TileServerConfig.java @@ -13,6 +13,12 @@ public interface TileServerConfig extends Config { @DefaultValue("8080") int httPort(); + /* + colors from external source + */ + @Key("colors.file") + String externalColorsFile(); + /* Tile renderer stuff */ diff --git a/src/main/java/io/rudin/minetest/tileserver/provider/ColorTableProvider.java b/src/main/java/io/rudin/minetest/tileserver/provider/ColorTableProvider.java index 2f490ba..b400bae 100644 --- a/src/main/java/io/rudin/minetest/tileserver/provider/ColorTableProvider.java +++ b/src/main/java/io/rudin/minetest/tileserver/provider/ColorTableProvider.java @@ -1,19 +1,49 @@ package io.rudin.minetest.tileserver.provider; +import javax.inject.Inject; import javax.inject.Provider; import javax.inject.Singleton; import io.rudin.minetest.tileserver.ColorTable; +import io.rudin.minetest.tileserver.config.TileServerConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.FileInputStream; +import java.io.InputStream; @Singleton public class ColorTableProvider implements Provider { + @Inject + public ColorTableProvider(TileServerConfig cfg){ + this.cfg = cfg; + } + + private final TileServerConfig cfg; + + private static final Logger logger = LoggerFactory.getLogger(ColorTableProvider.class); + @Override @Singleton public ColorTable get() { ColorTable colorTable = new ColorTable(); colorTable.load(ColorTableProvider.class.getResourceAsStream("/colors.txt")); colorTable.load(ColorTableProvider.class.getResourceAsStream("/vanessa.txt")); + + String externalColorsFile = cfg.externalColorsFile(); + if (externalColorsFile != null){ + logger.info("Loading colors from external file: '{}'", externalColorsFile); + try (InputStream input = new FileInputStream(externalColorsFile)){ + colorTable.load(input); + + } catch (Exception e){ + logger.warn("external colors", e); + + } + + } + return colorTable; }