diff --git a/src/main/java/io/rudin/minetest/tileserver/TileServer.java b/src/main/java/io/rudin/minetest/tileserver/TileServer.java index 2fd3860..fe61181 100644 --- a/src/main/java/io/rudin/minetest/tileserver/TileServer.java +++ b/src/main/java/io/rudin/minetest/tileserver/TileServer.java @@ -18,10 +18,7 @@ import io.rudin.minetest.tileserver.module.ServiceModule; import io.rudin.minetest.tileserver.listener.PoiMapBlockListener; import io.rudin.minetest.tileserver.listener.TravelNetBlockListener; -import io.rudin.minetest.tileserver.route.ConfigRoute; -import io.rudin.minetest.tileserver.route.PlayerRoute; -import io.rudin.minetest.tileserver.route.PoiRoute; -import io.rudin.minetest.tileserver.route.TileRoute; +import io.rudin.minetest.tileserver.route.*; import io.rudin.minetest.tileserver.transformer.JsonTransformer; import io.rudin.minetest.tileserver.ws.WebSocketHandler; import io.rudin.minetest.tileserver.ws.WebSocketUpdater; @@ -55,7 +52,9 @@ public static void main(String[] args) throws Exception { get("/tiles/:z/:x/:y", injector.getInstance(TileRoute.class)); get("/player", injector.getInstance(PlayerRoute.class), json); get("/config", injector.getInstance(ConfigRoute.class), json); - get("/listener", injector.getInstance(PoiRoute.class), json); + + get("/travelnet", injector.getInstance(TravelnetRoute.class), json); + get("/poi", injector.getInstance(PoiRoute.class), json); //Initialize web server init(); diff --git a/src/main/java/io/rudin/minetest/tileserver/blockdb/DefaultSchema.java b/src/main/java/io/rudin/minetest/tileserver/blockdb/DefaultSchema.java index 1930e83..081df2e 100644 --- a/src/main/java/io/rudin/minetest/tileserver/blockdb/DefaultSchema.java +++ b/src/main/java/io/rudin/minetest/tileserver/blockdb/DefaultSchema.java @@ -82,7 +82,7 @@ public class DefaultSchema extends SchemaImpl { public final PlayerMetadata PLAYER_METADATA = io.rudin.minetest.tileserver.blockdb.tables.PlayerMetadata.PLAYER_METADATA; /** - * The table listener. + * The table poi. */ public final Poi POI = io.rudin.minetest.tileserver.blockdb.tables.Poi.POI; diff --git a/src/main/java/io/rudin/minetest/tileserver/blockdb/Tables.java b/src/main/java/io/rudin/minetest/tileserver/blockdb/Tables.java index a0a9b30..9ad2747 100644 --- a/src/main/java/io/rudin/minetest/tileserver/blockdb/Tables.java +++ b/src/main/java/io/rudin/minetest/tileserver/blockdb/Tables.java @@ -66,7 +66,7 @@ public class Tables { public static final PlayerMetadata PLAYER_METADATA = io.rudin.minetest.tileserver.blockdb.tables.PlayerMetadata.PLAYER_METADATA; /** - * The table listener. + * The table poi. */ public static final Poi POI = io.rudin.minetest.tileserver.blockdb.tables.Poi.POI; diff --git a/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/Poi.java b/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/Poi.java index 629f5e7..5a72af6 100644 --- a/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/Poi.java +++ b/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/Poi.java @@ -41,7 +41,7 @@ public class Poi extends TableImpl { private static final long serialVersionUID = -1911319382; /** - * The reference instance of listener + * The reference instance of poi */ public static final Poi POI = new Poi(); @@ -54,81 +54,81 @@ public Class getRecordType() { } /** - * The column listener.id. + * The column poi.id. */ public final TableField ID = createField("id", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaultValue(org.jooq.impl.DSL.field("nextval('poi_id_seq'::regclass)", org.jooq.impl.SQLDataType.INTEGER)), this, ""); /** - * The column listener.name. + * The column poi.name. */ public final TableField NAME = createField("name", org.jooq.impl.SQLDataType.VARCHAR.nullable(false), this, ""); /** - * The column listener.category. + * The column poi.category. */ public final TableField CATEGORY = createField("category", org.jooq.impl.SQLDataType.VARCHAR.nullable(false), this, ""); /** - * The column listener.owner. + * The column poi.owner. */ public final TableField OWNER = createField("owner", org.jooq.impl.SQLDataType.VARCHAR.nullable(false), this, ""); /** - * The column listener.active. + * The column poi.active. */ public final TableField ACTIVE = createField("active", org.jooq.impl.SQLDataType.BOOLEAN.nullable(false), this, ""); /** - * The column listener.x. + * The column poi.x. */ public final TableField X = createField("x", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); /** - * The column listener.y. + * The column poi.y. */ public final TableField Y = createField("y", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); /** - * The column listener.z. + * The column poi.z. */ public final TableField Z = createField("z", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); /** - * The column listener.posx. + * The column poi.posx. */ public final TableField POSX = createField("posx", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); /** - * The column listener.posy. + * The column poi.posy. */ public final TableField POSY = createField("posy", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); /** - * The column listener.posz. + * The column poi.posz. */ public final TableField POSZ = createField("posz", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); /** - * The column listener.mtime. + * The column poi.mtime. */ public final TableField MTIME = createField("mtime", org.jooq.impl.SQLDataType.BIGINT.nullable(false), this, ""); /** - * Create a listener table reference + * Create a poi table reference */ public Poi() { - this(DSL.name("listener"), null); + this(DSL.name("poi"), null); } /** - * Create an aliased listener table reference + * Create an aliased poi table reference */ public Poi(String alias) { this(DSL.name(alias), POI); } /** - * Create an aliased listener table reference + * Create an aliased poi table reference */ public Poi(Name alias) { this(alias, POI); diff --git a/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/records/PoiRecord.java b/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/records/PoiRecord.java index 3a473b1..7fa2dbe 100644 --- a/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/records/PoiRecord.java +++ b/src/main/java/io/rudin/minetest/tileserver/blockdb/tables/records/PoiRecord.java @@ -30,168 +30,168 @@ public class PoiRecord extends TableRecordImpl implements Record12listener.id. + * Setter for poi.id. */ public void setId(Integer value) { set(0, value); } /** - * Getter for listener.id. + * Getter for poi.id. */ public Integer getId() { return (Integer) get(0); } /** - * Setter for listener.name. + * Setter for poi.name. */ public void setName(String value) { set(1, value); } /** - * Getter for listener.name. + * Getter for poi.name. */ public String getName() { return (String) get(1); } /** - * Setter for listener.category. + * Setter for poi.category. */ public void setCategory(String value) { set(2, value); } /** - * Getter for listener.category. + * Getter for poi.category. */ public String getCategory() { return (String) get(2); } /** - * Setter for listener.owner. + * Setter for poi.owner. */ public void setOwner(String value) { set(3, value); } /** - * Getter for listener.owner. + * Getter for poi.owner. */ public String getOwner() { return (String) get(3); } /** - * Setter for listener.active. + * Setter for poi.active. */ public void setActive(Boolean value) { set(4, value); } /** - * Getter for listener.active. + * Getter for poi.active. */ public Boolean getActive() { return (Boolean) get(4); } /** - * Setter for listener.x. + * Setter for poi.x. */ public void setX(Integer value) { set(5, value); } /** - * Getter for listener.x. + * Getter for poi.x. */ public Integer getX() { return (Integer) get(5); } /** - * Setter for listener.y. + * Setter for poi.y. */ public void setY(Integer value) { set(6, value); } /** - * Getter for listener.y. + * Getter for poi.y. */ public Integer getY() { return (Integer) get(6); } /** - * Setter for listener.z. + * Setter for poi.z. */ public void setZ(Integer value) { set(7, value); } /** - * Getter for listener.z. + * Getter for poi.z. */ public Integer getZ() { return (Integer) get(7); } /** - * Setter for listener.posx. + * Setter for poi.posx. */ public void setPosx(Integer value) { set(8, value); } /** - * Getter for listener.posx. + * Getter for poi.posx. */ public Integer getPosx() { return (Integer) get(8); } /** - * Setter for listener.posy. + * Setter for poi.posy. */ public void setPosy(Integer value) { set(9, value); } /** - * Getter for listener.posy. + * Getter for poi.posy. */ public Integer getPosy() { return (Integer) get(9); } /** - * Setter for listener.posz. + * Setter for poi.posz. */ public void setPosz(Integer value) { set(10, value); } /** - * Getter for listener.posz. + * Getter for poi.posz. */ public Integer getPosz() { return (Integer) get(10); } /** - * Setter for listener.mtime. + * Setter for poi.mtime. */ public void setMtime(Long value) { set(11, value); } /** - * Getter for listener.mtime. + * Getter for poi.mtime. */ public Long getMtime() { return (Long) get(11); 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 bd61e7b..19733cc 100644 --- a/src/main/java/io/rudin/minetest/tileserver/config/TileServerConfig.java +++ b/src/main/java/io/rudin/minetest/tileserver/config/TileServerConfig.java @@ -67,11 +67,11 @@ public interface TileServerConfig extends Config { */ @Key("block.parser.poi.enable") - @DefaultValue("false") + @DefaultValue("true") boolean parserPoiEnable(); @Key("block.parser.travelnet.enable") - @DefaultValue("false") + @DefaultValue("true") boolean parserTravelnetEnable(); @Key("block.parser.smartshop.enable") diff --git a/src/main/java/io/rudin/minetest/tileserver/listener/PoiMapBlockListener.java b/src/main/java/io/rudin/minetest/tileserver/listener/PoiMapBlockListener.java index fc6bda2..435087d 100644 --- a/src/main/java/io/rudin/minetest/tileserver/listener/PoiMapBlockListener.java +++ b/src/main/java/io/rudin/minetest/tileserver/listener/PoiMapBlockListener.java @@ -17,7 +17,7 @@ @Singleton public class PoiMapBlockListener { - private static final String POIBLOCK_NAME = "tileserver:listener"; + private static final String POIBLOCK_NAME = "tileserver:poi"; @Inject public PoiMapBlockListener(EventBus eventBus, DSLContext ctx){ diff --git a/src/main/java/io/rudin/minetest/tileserver/route/ConfigRoute.java b/src/main/java/io/rudin/minetest/tileserver/route/ConfigRoute.java index 8c03cbc..f91735b 100644 --- a/src/main/java/io/rudin/minetest/tileserver/route/ConfigRoute.java +++ b/src/main/java/io/rudin/minetest/tileserver/route/ConfigRoute.java @@ -27,6 +27,8 @@ public class ConfigRoute implements Route { public ConfigRoute(TileServerConfig cfg){ config.put("matomo.id", cfg.matomoTrackerId()); config.put("matomo.url", cfg.matomoTrackerUrl()); + config.put("parser.poi", cfg.parserPoiEnable()); + config.put("parser.travelnet", cfg.parserTravelnetEnable()); } private final Map config = new HashMap<>(); diff --git a/src/main/java/io/rudin/minetest/tileserver/route/TravelnetRoute.java b/src/main/java/io/rudin/minetest/tileserver/route/TravelnetRoute.java new file mode 100644 index 0000000..10e882f --- /dev/null +++ b/src/main/java/io/rudin/minetest/tileserver/route/TravelnetRoute.java @@ -0,0 +1,34 @@ +package io.rudin.minetest.tileserver.route; + +import io.rudin.minetest.tileserver.blockdb.tables.pojos.Travelnet; +import org.jooq.DSLContext; +import spark.Request; +import spark.Response; +import spark.Route; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import static io.rudin.minetest.tileserver.blockdb.tables.Travelnet.TRAVELNET; + +@Singleton +public class TravelnetRoute implements Route { + + @Inject + public TravelnetRoute(DSLContext ctx) { + this.ctx = ctx; + } + + private final DSLContext ctx; + + @Override + public Object handle(Request request, Response response) throws Exception { + response.header("Content-Type", "application/json"); + + return ctx + .selectFrom(TRAVELNET) + .fetch() + .into(Travelnet.class); + } + +} diff --git a/src/main/resources/public/index.html b/src/main/resources/public/index.html index ad23f1c..90172ba 100644 --- a/src/main/resources/public/index.html +++ b/src/main/resources/public/index.html @@ -23,7 +23,9 @@ - + + + diff --git a/src/main/resources/public/js/player.js b/src/main/resources/public/js/layer.player.js similarity index 85% rename from src/main/resources/public/js/player.js rename to src/main/resources/public/js/layer.player.js index ed8375d..9de13b0 100644 --- a/src/main/resources/public/js/player.js +++ b/src/main/resources/public/js/layer.player.js @@ -1,6 +1,13 @@ (function(tileserver){ + var PlayerIcon = L.icon({ + iconUrl: 'pics/sam.png', + + iconSize: [16, 32], + iconAnchor: [8, 16], + popupAnchor: [0, -16] + }); var playerMarkers = {}; // name -> L.Marker @@ -30,8 +37,8 @@ if (!marker){ //Create marker - marker = L.marker(latLng); - marker.bindPopup(popup).addTo(tileserver.map); + marker = L.marker(latLng, {icon: PlayerIcon}); + marker.bindPopup(popup).addTo(tileserver.playerLayer); playerMarkers[player.name] = marker; } else { diff --git a/src/main/resources/public/js/layer.poi.js b/src/main/resources/public/js/layer.poi.js new file mode 100644 index 0000000..42b3106 --- /dev/null +++ b/src/main/resources/public/js/layer.poi.js @@ -0,0 +1,34 @@ + +(function(tileserver){ + + + var playerMarkers = {}; // name -> L.Marker + + function updatePoi(poi) { + if (!poi.active) + return; + + var marker = L.marker([poi.z - 15, poi.x]); + + var popup = "

" + poi.name + "


" + + "X: " + poi.x + "
" + + "Y: " + poi.y + "
" + + "Z: " + poi.z + "
" + + "Category: " + poi.category + "
" + + "Owner: " + poi.owner + "
"; + + marker.bindPopup(popup).addTo(tileserver.poiLayer); + + } + + function update(){ + m.request({ url: "poi" }) + .then(function(list){ + list.forEach(updatePoi); + }); + } + + //initial update + update(); + +})(window.tileserver); \ No newline at end of file diff --git a/src/main/resources/public/js/layer.travelnet.js b/src/main/resources/public/js/layer.travelnet.js new file mode 100644 index 0000000..9253e2a --- /dev/null +++ b/src/main/resources/public/js/layer.travelnet.js @@ -0,0 +1,37 @@ + +(function(tileserver){ + + + var TravelnetIcon = L.icon({ + iconUrl: 'pics/travelnet_inv.png', + + iconSize: [64, 64], + iconAnchor: [32, 32], + popupAnchor: [0, -32] + }); + + function updateTravelnet(travelnet) { + var marker = L.marker([travelnet.z - 16, travelnet.x], {icon: TravelnetIcon}); + + var popup = "

" + travelnet.name + "


" + + "X: " + travelnet.x + "
" + + "Y: " + travelnet.y + "
" + + "Z: " + travelnet.z + "
" + + "Network: " + travelnet.network + "
" + + "Owner: " + travelnet.owner + "
"; + + marker.bindPopup(popup).addTo(tileserver.travelnetLayer); + + } + + function update(){ + m.request({ url: "travelnet" }) + .then(function(list){ + list.forEach(updateTravelnet); + }); + } + + //initial update + update(); + +})(window.tileserver); \ No newline at end of file diff --git a/src/main/resources/public/js/map.js b/src/main/resources/public/js/map.js index 03a1ecf..736659f 100644 --- a/src/main/resources/public/js/map.js +++ b/src/main/resources/public/js/map.js @@ -55,12 +55,6 @@ } }); - var tileLayer = new RealtimeTileLayer(); - tileLayer.addTo(map); - - //L.tileLayer('tiles/{z}/{x}/{y}').addTo(map); - //L.marker([-207, 7]).bindPopup("Spawn").addTo(map); - function updateTile(data){ var id = getImageId(data.x, data.y, data.zoom); @@ -72,8 +66,31 @@ } } + + var tileLayer = new RealtimeTileLayer(); + tileLayer.addTo(map); + + var playerLayer = L.layerGroup(); + var poiLayer = L.layerGroup(); + var travelnetLayer = L.layerGroup(); + + L.control.layers({ + "Base": tileLayer + }, { + "Player": playerLayer, + "POI": poiLayer, + "Travelnet": travelnetLayer + }).addTo(map); + + map.addLayer(poiLayer); + map.addLayer(travelnetLayer); + map.addLayer(playerLayer); + //Export tileserver.map = map; + tileserver.poiLayer = poiLayer; + tileserver.travelnetLayer = travelnetLayer; + tileserver.playerLayer = playerLayer; tileserver.updateTile = updateTile; })(window.tileserver); \ No newline at end of file diff --git a/src/main/resources/public/pics/sam.png b/src/main/resources/public/pics/sam.png new file mode 100644 index 0000000..44500cd Binary files /dev/null and b/src/main/resources/public/pics/sam.png differ diff --git a/src/main/resources/public/pics/travelnet_elevator_inv.png b/src/main/resources/public/pics/travelnet_elevator_inv.png new file mode 100644 index 0000000..a390d75 Binary files /dev/null and b/src/main/resources/public/pics/travelnet_elevator_inv.png differ diff --git a/src/main/resources/public/pics/travelnet_inv.png b/src/main/resources/public/pics/travelnet_inv.png new file mode 100644 index 0000000..6f7df22 Binary files /dev/null and b/src/main/resources/public/pics/travelnet_inv.png differ diff --git a/tileserver.properties b/tileserver.properties index 3e93f17..3a2f4a7 100644 --- a/tileserver.properties +++ b/tileserver.properties @@ -1,10 +1,5 @@ #tilerenderer.initialrendering.enable=true #log.tile.updatetimings=true -tilerenderer.updateinterval=1500 +tilerenderer.updateinterval=30 #log.query.performance=true -block.parser.poi.enable=true -block.parser.travelnet.enable=true -debug.mapblock.dumpinvalid=true -block.parser.smartshop.enable=true -block.parser.fancyvend.enable=true \ No newline at end of file