Initial commit

This commit is contained in:
Dominic Zimmer 2020-04-16 14:40:46 +02:00
commit 85d23c8c95
6 changed files with 206 additions and 0 deletions

0
model.py Normal file
View File

49
src/main.py Normal file
View File

@ -0,0 +1,49 @@
import aiohttp.web
routes = aiohttp.web.RouteTableDef()
routes.static('/static', 'static')
admintoken = "ae33fd8cc4fdcb1ff50ba42ff48046a7"
meta_dict = {}
@routes.get(r'/{client:[a-z][a-z][a-z][a-z][a-z]}')
async def handler(request):
#session = request.match_info.get("session", "")
client = request.match_info.get("client", "")
print(f"{client=} accessed")
return aiohttp.web.FileResponse('static/ui.html')
async def handle_request(data, client):
return "foo" in data
@routes.post('/{client}/api')
async def handler(request):
client = request.match_info.get("client", "")
data = await request.post()
ok = await handle_request(data, client)
if ok:
#return aiohttp.web.json_response({"x" : x})
return aiohttp.web.Response(status=200)
else:
return aiohttp.web.Response(status=400)
@routes.get(f"/api/{admintoken}")
async def handler(request):
return aiohttp.web.json_response(meta_dict)
@routes.get('/')
async def handler(request):
del request # unused
return aiohttp.web.FileResponse('static/index.html')
if __name__ == '__main__':
app = aiohttp.web.Application()
app.add_routes(routes)
aiohttp.web.run_app(app, port=42042)
print("should save state")

BIN
static/empty.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

41
static/index.html Normal file
View File

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>leafblade Minecraft Server</title>
<meta charset="UTF-8" />
<style type="text/css">
html,
body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
#map {
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
}
@media (max-width:768px) {
#overlay { width: 100% }
}
</style>
<script type="text/javascript">
</script>
</head>
<body>
<div id="container"></div>
this is the base site
</div>
</body>
</html>

41
static/ui.html Normal file
View File

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>leafblade Minecraft Server</title>
<meta charset="UTF-8" />
<style type="text/css">
html,
body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
#map {
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
}
@media (max-width:768px) {
#overlay { width: 100% }
}
</style>
<script type="text/javascript">
</script>
</head>
<body>
<div id="container"></div>
this is the UI
</div>
</body>
</html>

View File

@ -0,0 +1,75 @@
function Unmined() {
this.map = function (mapId, options, regions) {
const minMapX = options.minRegionX * 512,
minMapY = options.minRegionZ * 512,
mapWidth = (options.maxRegionX + 1 - options.minRegionX) * 512,
mapHeight = (options.maxRegionZ + 1 - options.minRegionZ) * 512,
zoomOffset = 0 - options.minZoom,
unminedLayer = new L.TileLayer.Functional(
function (view) {
const zoom = view.zoom - zoomOffset,
zoomFactor = Math.pow(2, zoom),
tileSize = 256,
minTileX = Math.floor(minMapX * zoomFactor / tileSize),
minTileY = Math.floor(minMapY * zoomFactor / tileSize),
maxTileX = Math.ceil((minMapX + mapWidth) * zoomFactor / tileSize) - 1,
maxTileY = Math.ceil((minMapY + mapHeight) * zoomFactor / tileSize) - 1,
tileX = view.tile.column,
tileY = view.tile.row,
tileBlockSize = tileSize / zoomFactor,
tileBlockPoint = {
x: tileX * tileBlockSize,
z: tileY * tileBlockSize
};
const intersectsWithTile = function (region) {
return (tileBlockPoint.x < (region.x + 1) * 512)
&& (tileBlockPoint.x + tileBlockSize > region.x * 512)
&& (tileBlockPoint.z < (region.z + 1) * 512)
&& (tileBlockPoint.z + tileBlockSize > region.z * 512);
};
if (tileX >= minTileX
&& tileY >= minTileY
&& tileX <= maxTileX
&& tileY <= maxTileY
&& ((regions === undefined) || regions.some(intersectsWithTile))) {
return ('/static/unmined/tiles/zoom.{z}/{xd}/{yd}/tile.{x}.{y}.' + options.imageFormat)
.replace('{z}', zoom)
.replace('{yd}', '' + Math.floor(tileY / 10))
.replace('{xd}', '' + Math.floor(tileX / 10))
.replace('{y}', view.tile.row)
.replace('{x}', view.tile.column);
} else {
return "/static/empty.jpg";
}
},
{
detectRetina: false,
bounds: [[minMapX, minMapY], [minMapX + mapWidth, minMapY + mapHeight]]
});
let map = L.map(mapId, {
crs: L.CRS.Simple,
minZoom: options.minZoom + zoomOffset,
maxZoom: options.maxZoom + zoomOffset,
layers: [unminedLayer],
maxBoundsViscosity: 1.0
}).setView([0, 0], options.defaultZoom + zoomOffset);
let northWest = map.unproject([minMapX, minMapY], map.getMaxZoom());
let southEast = map.unproject([minMapX + mapWidth, minMapY + mapHeight], map.getMaxZoom());
map.setMaxBounds(new L.LatLngBounds(northWest, southEast));
return map;
}
}