Compare commits
No commits in common. "main" and "main" have entirely different histories.
4
.gitignore
vendored
@ -1,5 +1 @@
|
||||
/data
|
||||
/squaremap/data
|
||||
/squaremap/web
|
||||
/squaremap/locale
|
||||
.DS_Store
|
||||
|
70
README.md
@ -1,72 +1,4 @@
|
||||
# NEW MC Server - Powered by Garde Studios
|
||||
|
||||
## Development
|
||||
Testing WebHook
|
||||
|
||||
### (Prerequisite) Install Docker
|
||||
|
||||
Go to the Website [docker.com](https://www.docker.com/) and download the Docker Desktop Version for you're Operating System.
|
||||
|
||||
In case you're using Linux find a guide on the internet. For RHEL/Fedora/CentOS/Rocky Linux the setup process is as follows:
|
||||
|
||||
```bash
|
||||
sudo dnf check-update # Update System
|
||||
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # Add the docker repo to dnf
|
||||
sudo dnf install docker-ce docker-ce-cli containerd.io -y # Install docker engine
|
||||
sudo systemctl start docker # start docker deamon
|
||||
sudo systemctl enable docker # enable docker deamon on startup
|
||||
sudo usermod -aG docker $(whoami) # elevate user to use docker cmd
|
||||
```
|
||||
|
||||
### Starting the Server
|
||||
|
||||
> [!WARNING]
|
||||
> Make sure you first configure the `docker-compose.yml` under the `environment` section to use the appropiate ammount of RAM youre system can provide.
|
||||
> 16GB isn't sensible in most development/testing environments
|
||||
|
||||
Start a Terminal or use Docker Desktop
|
||||
|
||||
> [!NOTE]
|
||||
> The first Startup creates the whole infrastructure behind the project and can take up some time.
|
||||
> Make sure you grab some 0xCOFFE :)
|
||||
|
||||
#### Using Docker CLI
|
||||
|
||||
cd into the repo.
|
||||
|
||||
Start the Server:
|
||||
|
||||
```bash
|
||||
docker compose up
|
||||
```
|
||||
|
||||
To close it just use `ctrl+c`.
|
||||
|
||||
Deamon Mode:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
To hook into the servers logs use:
|
||||
|
||||
```bash
|
||||
docker logs <container-name>
|
||||
```
|
||||
|
||||
Killing the server is done in two ways.
|
||||
|
||||
Either by killing it directly:
|
||||
|
||||
```bash
|
||||
docker kill <container-name>
|
||||
```
|
||||
|
||||
Or by hooking against the compose file:
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
![](assets/Architecture-Overview.png)
|
||||
|
Before Width: | Height: | Size: 53 KiB |
@ -1,162 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:132.0) Gecko/20100101 Firefox/132.0" version="24.7.12">
|
||||
<diagram name="Page-1" id="ngFJ-PK3nhXtL8uodcvB">
|
||||
<mxGraphModel dx="1394" dy="739" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-43" value="" style="group" parent="1" vertex="1" connectable="0">
|
||||
<mxGeometry x="30" y="150" width="660" height="225" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-8" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-43" vertex="1" connectable="0">
|
||||
<mxGeometry x="490" y="20" width="60" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-4" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.application_server2" parent="rkxtWGMJMKr7dUVkmx0B-8" vertex="1">
|
||||
<mxGeometry x="8.5" y="30" width="43" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-7" value="cloud.cyperpunk.de" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-8" vertex="1">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-10" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-43" vertex="1" connectable="0">
|
||||
<mxGeometry x="230" y="145" width="60" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-6" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.application_server2" parent="rkxtWGMJMKr7dUVkmx0B-10" vertex="1">
|
||||
<mxGeometry x="8.5" y="30" width="43" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-9" value="garde-studios.de" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-10" vertex="1">
|
||||
<mxGeometry x="-20" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;shape=link;" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-4" target="rkxtWGMJMKr7dUVkmx0B-2" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-21" value="Main Connection" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="rkxtWGMJMKr7dUVkmx0B-13" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.0358" y="1" relative="1" as="geometry">
|
||||
<mxPoint x="-1" y="-30" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.57;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-6" target="rkxtWGMJMKr7dUVkmx0B-2" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-18" value="Authenticates User" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="rkxtWGMJMKr7dUVkmx0B-14" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.155" relative="1" as="geometry">
|
||||
<mxPoint x="17" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-16" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-43" vertex="1" connectable="0">
|
||||
<mxGeometry x="400" y="140" width="60" height="85" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-2" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.gateway" parent="rkxtWGMJMKr7dUVkmx0B-16" vertex="1">
|
||||
<mxGeometry x="5" y="35" width="50" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-15" value="Proxy" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-16" vertex="1">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-22" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-43" vertex="1" connectable="0">
|
||||
<mxGeometry x="230" y="20" width="100" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-23" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.application_server2" parent="rkxtWGMJMKr7dUVkmx0B-22" vertex="1">
|
||||
<mxGeometry x="8.5" y="30" width="43" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-24" value="garde-studios<span style="background-color: initial;">.de</span>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-22" vertex="1">
|
||||
<mxGeometry x="-20" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.57;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;shape=link;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-23" target="rkxtWGMJMKr7dUVkmx0B-2" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="430" y="120" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="430" y="75" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-26" value="Fallback to Limbo Server" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="rkxtWGMJMKr7dUVkmx0B-25" vertex="1" connectable="0">
|
||||
<mxGeometry x="-0.1838" y="-1" relative="1" as="geometry">
|
||||
<mxPoint x="-22" y="-1" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-41" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-43" vertex="1" connectable="0">
|
||||
<mxGeometry width="180" height="175" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-29" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-41" vertex="1" connectable="0">
|
||||
<mxGeometry width="60" height="64" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-27" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.application" parent="rkxtWGMJMKr7dUVkmx0B-29" vertex="1">
|
||||
<mxGeometry x="5" y="30" width="50" height="34" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-28" value="Grafana" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-29" vertex="1">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-33" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-41" vertex="1" connectable="0">
|
||||
<mxGeometry x="120" width="60" height="64" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-34" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.application" parent="rkxtWGMJMKr7dUVkmx0B-33" vertex="1">
|
||||
<mxGeometry x="5" y="30" width="50" height="34" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-35" value="Squaremap" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-33" vertex="1">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-36" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-41" vertex="1" connectable="0">
|
||||
<mxGeometry x="60" y="90" width="60" height="85" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-37" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.gateway" parent="rkxtWGMJMKr7dUVkmx0B-36" vertex="1">
|
||||
<mxGeometry x="5" y="35" width="50" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-38" value="NGINX" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-36" vertex="1">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-41" source="rkxtWGMJMKr7dUVkmx0B-37" target="rkxtWGMJMKr7dUVkmx0B-34" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-41" source="rkxtWGMJMKr7dUVkmx0B-37" target="rkxtWGMJMKr7dUVkmx0B-27" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-6" target="rkxtWGMJMKr7dUVkmx0B-37" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-59" value="" style="group" parent="1" vertex="1" connectable="0">
|
||||
<mxGeometry x="180" y="448" width="220" height="204" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-48" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-59" vertex="1" connectable="0">
|
||||
<mxGeometry y="130" width="60" height="74" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-44" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.direct_access_feature" parent="rkxtWGMJMKr7dUVkmx0B-48" vertex="1">
|
||||
<mxGeometry x="5" width="50" height="44" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-47" value="MC Client" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-48" vertex="1">
|
||||
<mxGeometry y="44" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-49" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-59" vertex="1" connectable="0">
|
||||
<mxGeometry x="80" y="130" width="60" height="74" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-50" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.direct_access_feature" parent="rkxtWGMJMKr7dUVkmx0B-49" vertex="1">
|
||||
<mxGeometry x="5" width="50" height="44" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-51" value="MC Client" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-49" vertex="1">
|
||||
<mxGeometry y="44" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-52" value="" style="group" parent="rkxtWGMJMKr7dUVkmx0B-59" vertex="1" connectable="0">
|
||||
<mxGeometry x="160" y="130" width="60" height="74" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-53" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.direct_access_feature" parent="rkxtWGMJMKr7dUVkmx0B-52" vertex="1">
|
||||
<mxGeometry x="5" width="50" height="44" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-54" value="MC Client" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="rkxtWGMJMKr7dUVkmx0B-52" vertex="1">
|
||||
<mxGeometry y="44" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-55" value="" style="sketch=0;aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;fillColor=#00188D;shape=mxgraph.mscae.enterprise.internet" parent="rkxtWGMJMKr7dUVkmx0B-59" vertex="1">
|
||||
<mxGeometry x="52.74000000000001" width="114.52" height="71" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.61;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-59" source="rkxtWGMJMKr7dUVkmx0B-50" target="rkxtWGMJMKr7dUVkmx0B-55" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.61;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.14;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-59" source="rkxtWGMJMKr7dUVkmx0B-44" target="rkxtWGMJMKr7dUVkmx0B-55" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.61;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.87;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="rkxtWGMJMKr7dUVkmx0B-59" source="rkxtWGMJMKr7dUVkmx0B-53" target="rkxtWGMJMKr7dUVkmx0B-55" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-60" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0.03;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;shape=link;" parent="1" source="rkxtWGMJMKr7dUVkmx0B-55" target="rkxtWGMJMKr7dUVkmx0B-6" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
@ -1,4 +1,4 @@
|
||||
hackOnlineMode = true
|
||||
hackEarlySend = false
|
||||
hackMessageChain = true
|
||||
secret = "bGAJSlLeA4Wf"
|
||||
secret = "CMhgx3vF17Nu"
|
3
config/exporter.properties
Normal file
@ -0,0 +1,3 @@
|
||||
server-port: 25585
|
||||
update-interval: 1000
|
||||
use-spark: true
|
@ -1,2 +0,0 @@
|
||||
include:
|
||||
- ../main/compose.yml
|
@ -1,4 +0,0 @@
|
||||
include:
|
||||
- ../proxy/velocity/compose.yml
|
||||
- ../fallback/compose.yml
|
||||
- ../monitoring/compose.yml
|
1
development/.gitignore
vendored
@ -1 +0,0 @@
|
||||
/dev-proxy/proxy-data
|
@ -1,39 +0,0 @@
|
||||
# Development Build
|
||||
|
||||
> [!NOTE]
|
||||
> This setup is only for testing purposes.
|
||||
> It is unsafe to use as a production build.
|
||||
|
||||
## Prerequisits
|
||||
|
||||
1. Check if `docker` & `docker compose` are installed correctly
|
||||
2. Open 3 Terminal Windows (Or 2 depends on)
|
||||
3. Change the ip in `velocity.toml` (Line 75 & 76) to your local ip (This gets reworked in the Future)
|
||||
|
||||
## To Do
|
||||
- [ ] Build system for the whole dev stack
|
||||
- [ ] Networking between Containers
|
||||
|
||||
## Handling the stack
|
||||
|
||||
1. Start Dev Proxy
|
||||
|
||||
```bash
|
||||
docker compose -f dev-proxy/proxy-compose.yml up
|
||||
```
|
||||
|
||||
2. Start Dev Fallback
|
||||
|
||||
```bash
|
||||
docker compose -f fallback-compose.yml up
|
||||
```
|
||||
|
||||
3. Start Dev Main
|
||||
|
||||
```bash
|
||||
docker compose -f main-compose.yml up
|
||||
```
|
||||
|
||||
4. Start Minecraft with Version 1.21.1 (Fabric highly preferred)
|
||||
5. Add Server -> Server Address -> `localhost`
|
||||
6. Connect
|
Before Width: | Height: | Size: 3.9 KiB |
@ -1,16 +0,0 @@
|
||||
services:
|
||||
proxy:
|
||||
container_name: dev_proxy
|
||||
image: itzg/mc-proxy
|
||||
environment:
|
||||
TYPE: VELOCITY
|
||||
DEBUG: true
|
||||
VELOCITY_VERSION: latest
|
||||
VELOCITY_BUILD_ID: 450
|
||||
volumes:
|
||||
- ./dev-server.png:/server/server-icon.png
|
||||
- ./velocity.toml:/config/velocity.toml
|
||||
- ../../proxy/velocity/forwarding.secret:/config/forwarding.secret:ro
|
||||
- ./proxy-data:/server
|
||||
ports:
|
||||
- 25565:25565
|
@ -1,159 +0,0 @@
|
||||
# Config version. Do not change this
|
||||
config-version = "2.7"
|
||||
|
||||
# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25565.
|
||||
bind = "0.0.0.0:25565"
|
||||
|
||||
# What should be the MOTD? This gets displayed when the player adds your server to
|
||||
# their server list. Only MiniMessage format is accepted.
|
||||
motd = "<dark_purple>Garde Studios</dark_purple> <red>DEVELOPMENT BUILD</red>"
|
||||
|
||||
# What should we display for the maximum number of players? (Velocity does not support a cap
|
||||
# on the number of players online.)
|
||||
show-max-players = 5
|
||||
|
||||
# Should we authenticate players with Mojang? By default, this is on.
|
||||
online-mode = true
|
||||
|
||||
# Should the proxy enforce the new public key security standard? By default, this is on.
|
||||
force-key-authentication = true
|
||||
|
||||
# If client's ISP/AS sent from this proxy is different from the one from Mojang's
|
||||
# authentication server, the player is kicked. This disallows some VPN and proxy
|
||||
# connections but is a weak form of protection.
|
||||
prevent-client-proxy-connections = false
|
||||
|
||||
# Should we forward IP addresses and other data to backend servers?
|
||||
# Available options:
|
||||
# - "none": No forwarding will be done. All players will appear to be connecting
|
||||
# from the proxy and will have offline-mode UUIDs.
|
||||
# - "legacy": Forward player IPs and UUIDs in a BungeeCord-compatible format. Use this
|
||||
# if you run servers using Minecraft 1.12 or lower.
|
||||
# - "bungeeguard": Forward player IPs and UUIDs in a format supported by the BungeeGuard
|
||||
# plugin. Use this if you run servers using Minecraft 1.12 or lower, and are
|
||||
# unable to implement network level firewalling (on a shared host).
|
||||
# - "modern": Forward player IPs and UUIDs as part of the login process using
|
||||
# Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher.
|
||||
player-info-forwarding-mode = "modern"
|
||||
|
||||
# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here.
|
||||
# The file is expected to be UTF-8 encoded and not empty.
|
||||
forwarding-secret-file = "forwarding.secret"
|
||||
|
||||
# Announce whether or not your server supports Forge. If you run a modded server, we
|
||||
# suggest turning this on.
|
||||
#
|
||||
# If your network runs one modpack consistently, consider using ping-passthrough = "mods"
|
||||
# instead for a nicer display in the server list.
|
||||
announce-forge = false
|
||||
|
||||
# If enabled (default is false) and the proxy is in online mode, Velocity will kick
|
||||
# any existing player who is online if a duplicate connection attempt is made.
|
||||
kick-existing-players = false
|
||||
|
||||
# Should Velocity pass server list ping requests to a backend server?
|
||||
# Available options:
|
||||
# - "disabled": No pass-through will be done. The velocity.toml and server-icon.png
|
||||
# will determine the initial server list ping response.
|
||||
# - "mods": Passes only the mod list from your backend server into the response.
|
||||
# The first server in your try list (or forced host) with a mod list will be
|
||||
# used. If no backend servers can be contacted, Velocity won't display any
|
||||
# mod information.
|
||||
# - "description": Uses the description and mod list from the backend server. The first
|
||||
# server in the try (or forced host) list that responds is used for the
|
||||
# description and mod list.
|
||||
# - "all": Uses the backend server's response as the proxy response. The Velocity
|
||||
# configuration is used if no servers could be contacted.
|
||||
ping-passthrough = "DISABLED"
|
||||
|
||||
# If not enabled (default is true) player IP addresses will be replaced by <ip address withheld> in logs
|
||||
enable-player-address-logging = true
|
||||
|
||||
[servers]
|
||||
# Configure your servers here. Each key represents the server's name, and the value
|
||||
# represents the IP address of the server to connect to.
|
||||
main = "192.168.2.40:30000"
|
||||
fallback = "192.168.2.40:30001"
|
||||
|
||||
|
||||
# In what order we should try servers when a player logs in or is kicked from a server.
|
||||
try = [
|
||||
"main",
|
||||
"fallback"
|
||||
]
|
||||
|
||||
[forced-hosts]
|
||||
# Configure your forced hosts here.
|
||||
"cloud.cyperpunk.de" = [
|
||||
"main"
|
||||
]
|
||||
|
||||
"garde-studios.de" = [
|
||||
"fallback"
|
||||
]
|
||||
|
||||
|
||||
[advanced]
|
||||
# How large a Minecraft packet has to be before we compress it. Setting this to zero will
|
||||
# compress all packets, and setting it to -1 will disable compression entirely.
|
||||
compression-threshold = 256
|
||||
|
||||
# How much compression should be done (from 0-9). The default is -1, which uses the
|
||||
# default level of 6.
|
||||
compression-level = -1
|
||||
|
||||
# How fast (in milliseconds) are clients allowed to connect after the last connection? By
|
||||
# default, this is three seconds. Disable this by setting this to 0.
|
||||
login-ratelimit = 3000
|
||||
|
||||
# Specify a custom timeout for connection timeouts here. The default is five seconds.
|
||||
connection-timeout = 5000
|
||||
|
||||
# Specify a read timeout for connections here. The default is 30 seconds.
|
||||
read-timeout = 30000
|
||||
|
||||
# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then
|
||||
# don't enable it.
|
||||
haproxy-protocol = false
|
||||
|
||||
# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux.
|
||||
tcp-fast-open = false
|
||||
|
||||
# Enables BungeeCord plugin messaging channel support on Velocity.
|
||||
bungee-plugin-message-channel = true
|
||||
|
||||
# Shows ping requests to the proxy from clients.
|
||||
show-ping-requests = false
|
||||
|
||||
# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly
|
||||
# loses connection to the server without an explicit disconnect message by attempting to fall the
|
||||
# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You
|
||||
# can disable this setting to use the BungeeCord behavior.
|
||||
failover-on-unexpected-server-disconnect = true
|
||||
|
||||
# Declares the proxy commands to 1.13+ clients.
|
||||
announce-proxy-commands = true
|
||||
|
||||
# Enables the logging of commands
|
||||
log-command-executions = true
|
||||
|
||||
# Enables logging of player connections when connecting to the proxy, switching servers
|
||||
# and disconnecting from the proxy.
|
||||
log-player-connections = true
|
||||
|
||||
# Allows players transferred from other hosts via the
|
||||
# Transfer packet (Minecraft 1.20.5) to be received.
|
||||
accepts-transfers = false
|
||||
|
||||
[query]
|
||||
# Whether to enable responding to GameSpy 4 query responses or not.
|
||||
enabled = true
|
||||
|
||||
# If query is enabled, on what port should the query protocol listen on?
|
||||
port = 25565
|
||||
|
||||
# This is the map name that is reported to the query services.
|
||||
map = "Mappie"
|
||||
|
||||
# Whether plugins should be shown in query response by default or not
|
||||
show-plugins = false
|
@ -1,54 +0,0 @@
|
||||
services:
|
||||
fallback:
|
||||
image: itzg/minecraft-server
|
||||
container_name: dev_fallback
|
||||
restart: always
|
||||
environment:
|
||||
# What Server
|
||||
EULA: "true"
|
||||
TYPE: FABRIC
|
||||
VERSION: 1.21.1
|
||||
SERVER_NAME: uno
|
||||
ONLINE_MODE: false
|
||||
TZ: Europe/Berlin
|
||||
|
||||
# Server Properties
|
||||
OVERRIDE_SERVER_PROPERTIES: true
|
||||
ENABLE_COMMAND_BLOCK: true
|
||||
GAMEMODE: creative
|
||||
FORCE_GAMEMODE: false
|
||||
|
||||
# RCON Setup
|
||||
RCON_PASSWORD: garde-studios
|
||||
BROADCAST_CONSOLE_TO_OPS: true
|
||||
BROADCAST_RCON_TO_OPS: true
|
||||
|
||||
# Setup
|
||||
FORCE_REDOWNLOAD: true
|
||||
#MEMORY: 2G
|
||||
INIT_MEMORY: 500M
|
||||
MAX_MEMORY: 1G
|
||||
USE_AIKAR_FLAGS: true
|
||||
|
||||
# World & Mod Data
|
||||
WORLD: https://file.cyperpunk.de/filebrowser/api/public/dl/4FDwjgd8/lobby.zip
|
||||
#SEED: 795488740
|
||||
MODS_FILE: /extras/mods.txt
|
||||
# Whitelisting Players
|
||||
WHITELIST_FILE: /extras/whitelist.json
|
||||
OVERRIDE_WHITELIST: true
|
||||
ENFORCE_WHITELIST: false
|
||||
|
||||
# Operator Setup
|
||||
OPS_FILE: /extras/ops.json
|
||||
SYNC_SKIP_NEWER_IN_DESTINATION: false
|
||||
ports:
|
||||
- 30001:25565 # Connection Port
|
||||
- 9101:9100 # unified Exporter
|
||||
volumes:
|
||||
- ../fallback/data:/data
|
||||
- ../fallback/mods.txt:/extras/mods.txt:ro
|
||||
- ../fallback/ops.json:/extras/ops.json:ro
|
||||
- ../fallback/whitelist.json:/extras/whitelist.json:ro
|
||||
- ../fallback/config:/config
|
||||
|
@ -1,54 +0,0 @@
|
||||
services:
|
||||
dev_server:
|
||||
image: itzg/minecraft-server
|
||||
container_name: dev_server
|
||||
restart: always
|
||||
environment:
|
||||
# What Server
|
||||
EULA: "true"
|
||||
TYPE: FABRIC
|
||||
VERSION: 1.21.1
|
||||
SERVER_NAME: dev
|
||||
ONLINE_MODE: false
|
||||
TZ: Europe/Berlin
|
||||
|
||||
# Server Properties
|
||||
OVERRIDE_SERVER_PROPERTIES: true
|
||||
ENABLE_COMMAND_BLOCK: true
|
||||
GAMEMODE: creative
|
||||
FORCE_GAMEMODE: false
|
||||
LEVEL_TYPE: minecraft:large_biomes
|
||||
|
||||
# RCON Setup
|
||||
RCON_PASSWORD: garde-studios
|
||||
BROADCAST_CONSOLE_TO_OPS: true
|
||||
BROADCAST_RCON_TO_OPS: true
|
||||
|
||||
# Setup
|
||||
FORCE_REDOWNLOAD: true
|
||||
INIT_MEMORY: 500M
|
||||
MAX_MEMORY: 1G
|
||||
USE_AIKAR_FLAGS: true
|
||||
|
||||
# World & Mod Data
|
||||
#WORLD:
|
||||
SEED: -2202949464251781243
|
||||
MODS_FILE: /extras/mods.txt
|
||||
# Whitelisting Players
|
||||
WHITELIST_FILE: https://git.cyperpunk.de/Garde-Studios/Uno-MC/raw/branch/main/whitelist.json
|
||||
OVERRIDE_WHITELIST: true
|
||||
ENFORCE_WHITELIST: false
|
||||
|
||||
# Operator Setup
|
||||
OPS_FILE: https://git.cyperpunk.de/Garde-Studios/Uno-MC/raw/branch/main/ops.json
|
||||
SYNC_SKIP_NEWER_IN_DESTINATION: false
|
||||
ports:
|
||||
- 30000:25565 # Connection Port
|
||||
- 31066:25575 # Rcon
|
||||
- 8090:8080 # Squaremap
|
||||
- 9100:9100 # unified Exporter
|
||||
volumes:
|
||||
- ../main/data:/data
|
||||
- ../main/squaremap:/data/squaremap
|
||||
- ../main/mods.txt:/extras/mods.txt:ro
|
||||
- ../main/config:/config
|
@ -1,14 +1,14 @@
|
||||
services:
|
||||
server:
|
||||
image: itzg/minecraft-server
|
||||
container_name: mc-server
|
||||
container_name: new
|
||||
restart: always
|
||||
environment:
|
||||
# What Server
|
||||
EULA: "true"
|
||||
TYPE: FABRIC
|
||||
VERSION: 1.21.1
|
||||
SERVER_NAME: utopia
|
||||
SERVER_NAME: uno
|
||||
ONLINE_MODE: false
|
||||
TZ: Europe/Berlin
|
||||
|
||||
@ -32,8 +32,7 @@ services:
|
||||
USE_AIKAR_FLAGS: true
|
||||
|
||||
# World & Mod Data
|
||||
#WORLD:
|
||||
SEED: -2202949464251781243
|
||||
#WORLD: https://file.cyperpunk.de/filebrowser/api/public/dl/4FDwjgd8
|
||||
MODS_FILE: /extras/mods.txt
|
||||
# Whitelisting Players
|
||||
WHITELIST_FILE: https://git.cyperpunk.de/Garde-Studios/Uno-MC/raw/branch/main/whitelist.json
|
||||
@ -44,13 +43,12 @@ services:
|
||||
OPS_FILE: https://git.cyperpunk.de/Garde-Studios/Uno-MC/raw/branch/main/ops.json
|
||||
SYNC_SKIP_NEWER_IN_DESTINATION: false
|
||||
ports:
|
||||
- 30000:25565 # Connection Port
|
||||
- 30066:25565 # Connection Port
|
||||
- 31066:25575 # Rcon
|
||||
- 8090:8080 # Squaremap
|
||||
- 9100:9100 # unified Exporter
|
||||
- 8080:8080 # Squaremap
|
||||
- 9001:25585 # Fabric Exporter
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./squaremap:/data/squaremap
|
||||
- ./mods.txt:/extras/mods.txt:ro
|
||||
- ./config:/config
|
||||
|
1
fallback/.gitignore
vendored
@ -1 +0,0 @@
|
||||
/data
|
@ -1,55 +0,0 @@
|
||||
services:
|
||||
server:
|
||||
image: itzg/minecraft-server
|
||||
container_name: fallback
|
||||
restart: always
|
||||
environment:
|
||||
# What Server
|
||||
EULA: "true"
|
||||
TYPE: FABRIC
|
||||
VERSION: 1.21.1
|
||||
SERVER_NAME: uno
|
||||
ONLINE_MODE: false
|
||||
TZ: Europe/Berlin
|
||||
|
||||
# Server Properties
|
||||
OVERRIDE_SERVER_PROPERTIES: true
|
||||
ENABLE_COMMAND_BLOCK: true
|
||||
GAMEMODE: adventure
|
||||
FORCE_GAMEMODE: true
|
||||
|
||||
# RCON Setup
|
||||
RCON_PASSWORD: garde-studios
|
||||
BROADCAST_CONSOLE_TO_OPS: false
|
||||
BROADCAST_RCON_TO_OPS: true
|
||||
|
||||
# Setup
|
||||
FORCE_REDOWNLOAD: true
|
||||
#MEMORY: 2G
|
||||
INIT_MEMORY: 2G
|
||||
MAX_MEMORY: 4G
|
||||
USE_AIKAR_FLAGS: true
|
||||
|
||||
# World & Mod Data
|
||||
WORLD: https://file.cyperpunk.de/filebrowser/api/public/dl/4FDwjgd8/lobby.zip
|
||||
#SEED: 795488740
|
||||
MODS_FILE: /extras/mods.txt
|
||||
# Whitelisting Players
|
||||
WHITELIST_FILE: /extras/whitelist.json
|
||||
OVERRIDE_WHITELIST: true
|
||||
ENFORCE_WHITELIST: false
|
||||
|
||||
# Operator Setup
|
||||
OPS_FILE: /extras/ops.json
|
||||
SYNC_SKIP_NEWER_IN_DESTINATION: false
|
||||
ports:
|
||||
- 30000:25565 # Connection Port
|
||||
- 9100:9100 # unified Exporter
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./mods.txt:/extras/mods.txt:ro
|
||||
- ./ops.json:/extras/ops.json:ro
|
||||
- ./whitelist.json:/extras/whitelist.json:ro
|
||||
- ./config:/config
|
||||
|
||||
networks: {}
|
@ -1,14 +0,0 @@
|
||||
server:
|
||||
name: "global"
|
||||
metrics:
|
||||
enabled: true
|
||||
driver: "prometheus"
|
||||
collectors:
|
||||
systemGc: true
|
||||
systemMemory: true
|
||||
systemProcess: true
|
||||
systemThread: true
|
||||
server: true
|
||||
world: true
|
||||
tick: true
|
||||
events: true
|
@ -1,16 +0,0 @@
|
||||
mode: "HTTP"
|
||||
http:
|
||||
host: "0.0.0.0"
|
||||
port: 9100
|
||||
authentication:
|
||||
scheme: "NONE"
|
||||
username: "username"
|
||||
password: "password"
|
||||
pushGateway:
|
||||
job: "unifiedmetrics"
|
||||
url: "http://pushgateway:9091"
|
||||
authentication:
|
||||
scheme: "NONE"
|
||||
username: "username"
|
||||
password: "password"
|
||||
interval: 10
|
@ -1,18 +0,0 @@
|
||||
# Fabric API
|
||||
https://cdn.modrinth.com/data/P7dR8mSH/versions/thGkUOxt/fabric-api-0.107.0%2B1.21.1.jar
|
||||
|
||||
# Performance
|
||||
https://cdn.modrinth.com/data/gvQqBUqZ/versions/5szYtenV/lithium-fabric-mc1.21.1-0.13.0.jar
|
||||
https://cdn.modrinth.com/data/fALzjamp/versions/dPliWter/Chunky-1.4.16.jar
|
||||
https://cdn.modrinth.com/data/s86X568j/versions/uT1cdd3k/ChunkyBorder-1.2.18.jar
|
||||
https://cdn.modrinth.com/data/LFJf0Klb/versions/7e8Rxgsk/ce-2.1.1.jar
|
||||
|
||||
# Proxy
|
||||
https://cdn.modrinth.com/data/8dI2tmqs/versions/AQhF7kvw/FabricProxy-Lite-2.9.0.jar
|
||||
|
||||
# Monitoring
|
||||
https://cdn.modrinth.com/data/p1ewR5kV/versions/xwRVtqbA/unifiedmetrics-platform-fabric-0.3.8.jar
|
||||
https://cdn.modrinth.com/data/Ha28R6CL/versions/B0fZidZi/fabric-language-kotlin-1.12.3%2Bkotlin.2.0.21.jar
|
||||
|
||||
# World Edit
|
||||
https://cdn.modrinth.com/data/1u6JkXh5/versions/vBzkrSYP/worldedit-mod-7.3.6.jar
|
5
main/.gitignore
vendored
@ -1,5 +0,0 @@
|
||||
/data
|
||||
/squaremap/data/
|
||||
/squaremap/locale/
|
||||
/squaremap/web/tiles/
|
||||
/squaremap/web/images/
|
@ -1,4 +0,0 @@
|
||||
hackOnlineMode = true
|
||||
hackEarlySend = false
|
||||
hackMessageChain = true
|
||||
secret = "bGAJSlLeA4Wf"
|
@ -1,71 +0,0 @@
|
||||
{
|
||||
"aspen_glade_enabled": true,
|
||||
"auroral_garden_enabled": true,
|
||||
"bayou_enabled": true,
|
||||
"bog_enabled": true,
|
||||
"cold_desert_enabled": true,
|
||||
"coniferous_forest_enabled": true,
|
||||
"crag_enabled": true,
|
||||
"crystalline_chasm_enabled": true,
|
||||
"dead_forest_enabled": true,
|
||||
"dryland_enabled": true,
|
||||
"dune_beach_enabled": true,
|
||||
"end_corruption_enabled": true,
|
||||
"end_reef_enabled": true,
|
||||
"end_wilds_enabled": true,
|
||||
"erupting_inferno_enabled": true,
|
||||
"field_enabled": true,
|
||||
"fir_clearing_enabled": true,
|
||||
"floodplain_enabled": true,
|
||||
"forested_field_enabled": true,
|
||||
"fungal_jungle_enabled": true,
|
||||
"glowing_grotto_enabled": true,
|
||||
"grassland_enabled": true,
|
||||
"gravel_beach_enabled": true,
|
||||
"highland_enabled": true,
|
||||
"hot_springs_enabled": true,
|
||||
"jacaranda_glade_enabled": true,
|
||||
"jade_cliffs_enabled": true,
|
||||
"lavender_field_enabled": true,
|
||||
"lush_desert_enabled": true,
|
||||
"lush_savanna_enabled": true,
|
||||
"maple_woods_enabled": true,
|
||||
"marsh_enabled": true,
|
||||
"mediterranean_forest_enabled": true,
|
||||
"moor_enabled": true,
|
||||
"muskeg_enabled": true,
|
||||
"mystic_grove_enabled": true,
|
||||
"old_growth_dead_forest_enabled": true,
|
||||
"old_growth_woodland_enabled": true,
|
||||
"ominous_woods_enabled": true,
|
||||
"orchard_enabled": true,
|
||||
"origin_valley_enabled": true,
|
||||
"overgrown_greens_enabled": true,
|
||||
"pasture_enabled": true,
|
||||
"prairie_enabled": true,
|
||||
"pumpkin_patch_enabled": true,
|
||||
"rainforest_enabled": true,
|
||||
"redwood_forest_enabled": true,
|
||||
"rocky_rainforest_enabled": true,
|
||||
"rocky_shrubland_enabled": true,
|
||||
"scrubland_enabled": true,
|
||||
"seasonal_forest_enabled": true,
|
||||
"shrubland_enabled": true,
|
||||
"snowblossom_grove_enabled": true,
|
||||
"snowy_coniferous_forest_enabled": true,
|
||||
"snowy_fir_clearing_enabled": true,
|
||||
"snowy_maple_woods_enabled": true,
|
||||
"spider_nest_enabled": true,
|
||||
"tropics_enabled": true,
|
||||
"tundra_enabled": true,
|
||||
"undergrowth_enabled": true,
|
||||
"visceral_heap_enabled": true,
|
||||
"volcanic_plains_enabled": true,
|
||||
"volcano_enabled": true,
|
||||
"wasteland_enabled": true,
|
||||
"wasteland_steppe_enabled": true,
|
||||
"wetland_enabled": true,
|
||||
"wintry_origin_valley_enabled": true,
|
||||
"withered_abyss_enabled": true,
|
||||
"woodland_enabled": true
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
[general]
|
||||
#Add various BOP resources to the Wandering Trader trade pool.
|
||||
wandering_trader_trades = true
|
@ -1,13 +0,0 @@
|
||||
[nether]
|
||||
#The weighting of bop biome regions in the nether.
|
||||
bop_nether_region_weight = 13
|
||||
#The weighting of rare bop biome regions in the nether.
|
||||
bop_nether_rare_region_weight = 2
|
||||
|
||||
[overworld]
|
||||
#The weighting of primary bop biome regions in the overworld.
|
||||
bop_primary_overworld_region_weight = 10
|
||||
#The weighting of rare bop biome regions in the overworld.
|
||||
bop_overworld_rare_region_weight = 2
|
||||
#The weighting of secondary bop biome regions in the overworld.
|
||||
bop_secondary_overworld_region_weight = 8
|
@ -1,48 +0,0 @@
|
||||
{
|
||||
"trees": {
|
||||
"allowedLogs": [],
|
||||
"deniedLogs": [],
|
||||
"allowedLeaves": [],
|
||||
"allowedNonDecayLeaves": [],
|
||||
"deniedLeaves": [],
|
||||
"breakMode": "FALL_ITEM",
|
||||
"detectionMode": "ABOVE_CUT",
|
||||
"maxScanSize": 300,
|
||||
"maxSize": 100,
|
||||
"maxLeafDistanceFromLog": 12,
|
||||
"maxSizeAction": "ABORT",
|
||||
"breakOrder": "LOWEST_FIRST",
|
||||
"minimumLeavesAroundRequired": 2,
|
||||
"includePersistentLeavesInRequiredCount": false,
|
||||
"treeBreaking": true,
|
||||
"leavesBreaking": true,
|
||||
"leavesBreakingForceRadius": 0,
|
||||
"allowMixedLogs": false,
|
||||
"breakNetherTreeWarts": true,
|
||||
"breakMangroveRoots": false,
|
||||
"searchAreaRadius": -1,
|
||||
"allowedAdjacentBlocks": [],
|
||||
"adjacentStopMode": "STOP_ALL",
|
||||
"spawnItemsAtBreakPoint": true
|
||||
},
|
||||
"tools": {
|
||||
"allowed": [],
|
||||
"denied": [],
|
||||
"durabilityMode": "NORMAL",
|
||||
"ignoreTools": false,
|
||||
"damageMultiplicand": 1.0,
|
||||
"damageRounding": "ROUND_DOWN",
|
||||
"speedMultiplicand": 0.5,
|
||||
"forceToolUsage": false
|
||||
},
|
||||
"player": {
|
||||
"allowedTags": []
|
||||
},
|
||||
"enchantment": {
|
||||
"requireEnchantment": false
|
||||
},
|
||||
"sneakMode": "SNEAK_DISABLE",
|
||||
"breakInCreative": false,
|
||||
"lootInCreative": false,
|
||||
"notificationMode": "ACTION_BAR"
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
{
|
||||
"checkForNewUpdates": false,
|
||||
"enableCopperGolem": true,
|
||||
"generateCopperGolemAreaStructure": true,
|
||||
"copperGolemAreaStructureWeight": 1,
|
||||
"generateCopperGolemInAncientCity": true,
|
||||
"copperGolemAncientCityCenterWeight": 10,
|
||||
"enableCrab": true,
|
||||
"enableCrabSpawn": true,
|
||||
"crabSpawnWeight": 14,
|
||||
"crabSpawnMinGroupSize": 2,
|
||||
"crabSpawnMaxGroupSize": 4,
|
||||
"reachingStatusEffectModifier": 1,
|
||||
"enableGlare": true,
|
||||
"enableGlareSpawn": true,
|
||||
"enableGlareGriefing": true,
|
||||
"glareSpawnWeight": 4,
|
||||
"glareSpawnMinGroupSize": 1,
|
||||
"glareSpawnMaxGroupSize": 1,
|
||||
"enableMauler": true,
|
||||
"enableMaulerSpawn": true,
|
||||
"maulerDesertSpawnWeight": 8,
|
||||
"maulerDesertSpawnMinGroupSize": 1,
|
||||
"maulerDesertSpawnMaxGroupSize": 1,
|
||||
"maulerBadlandsSpawnWeight": 16,
|
||||
"maulerBadlandsSpawnMinGroupSize": 1,
|
||||
"maulerBadlandsSpawnMaxGroupSize": 1,
|
||||
"maulerSavannaSpawnWeight": 32,
|
||||
"maulerSavannaSpawnMinGroupSize": 1,
|
||||
"maulerSavannaSpawnMaxGroupSize": 1,
|
||||
"enableMoobloom": true,
|
||||
"enableMoobloomSpawn": true,
|
||||
"moobloomSpawnWeight": 4,
|
||||
"moobloomSpawnMinGroupSize": 2,
|
||||
"moobloomSpawnMaxGroupSize": 4,
|
||||
"enableIceologer": true,
|
||||
"enableIceologerSpawn": true,
|
||||
"enableIceologerInRaids": true,
|
||||
"generateIceologerCabinStructure": true,
|
||||
"enableIllusioner": true,
|
||||
"enableIllusionerSpawn": true,
|
||||
"enableIllusionerInRaids": true,
|
||||
"generateIllusionerShackStructure": true,
|
||||
"generateIllusionerTrainingGroundsStructure": true,
|
||||
"enableZombieHorseTrap": true,
|
||||
"enableRascal": true,
|
||||
"enableRascalSpawn": true,
|
||||
"enableTuffGolem": true,
|
||||
"generateTuffGolemInStronghold": true,
|
||||
"enableWildfire": true,
|
||||
"generateCitadelStructure": true,
|
||||
"enableBeekeeperVillagerProfession": true,
|
||||
"generateBeekeeperAreaStructure": true,
|
||||
"beekeeperAreaStructureWeight": 2
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
{
|
||||
"clientConfig": {
|
||||
"frostOverlayStart": 0.5,
|
||||
"doColdHeartOverlay": true,
|
||||
"renderDripParticles": true,
|
||||
"disableFrostOverlayWhenWearingFrostologyCloak": true,
|
||||
"shakeHandWhenShivering": true,
|
||||
"handShakeIntensity": 1.0
|
||||
},
|
||||
"updateConfig": {
|
||||
"currentConfigVersion": 2,
|
||||
"enableConfigUpdates": true
|
||||
},
|
||||
"environmentConfig": {
|
||||
"doDryBiomeNightFreezing": true,
|
||||
"nightTemperatureShift": -1,
|
||||
"coldBiomeTemperatureChange": -1,
|
||||
"freezingBiomeTemperatureChange": -3,
|
||||
"rainWetnessIncrease": 1,
|
||||
"touchingWaterWetnessIncrease": 5,
|
||||
"dryRate": 1,
|
||||
"onFireDryDate": 50,
|
||||
"onFireWarmRate": 50,
|
||||
"powderSnowFreezeRate": 30,
|
||||
"warmthPerLightLevel": 2,
|
||||
"minLightForWarmth": 5,
|
||||
"ultrawarmWarmRate": 15,
|
||||
"enableSeasonsIntegration": true
|
||||
},
|
||||
"combatConfig": {
|
||||
"doChillagerPatrols": true,
|
||||
"straysCarryFrostArrows": true,
|
||||
"maxFrostSpellDistance": 25.0,
|
||||
"frostWandCooldown": 120,
|
||||
"frostWandRootTime": 100,
|
||||
"frostologerHeatDrainPerTick": 30,
|
||||
"packedSnowballFreezeAmount": 500,
|
||||
"packedSnowballDamage": 2.0,
|
||||
"packedSnowballVulnerableTypesDamage": 5.0,
|
||||
"frostologerPassiveFreezingPerTick": 2,
|
||||
"frostologerMaxPassiveFreezing": 0.5,
|
||||
"biterFrostBiteMaxAmplifier": 2,
|
||||
"chillagerFireDamageMultiplier": 1.5,
|
||||
"frostologerIntolerableHeat": 9,
|
||||
"furUpgradeTemplateGenerateChance": 0.5,
|
||||
"skateUpgradeTemplateGenerateChance": 0.33,
|
||||
"veryProtectiveFrostResistanceMultiplier": 1.0,
|
||||
"protectiveFrostResistanceMultiplier": 0.5
|
||||
},
|
||||
"freezingConfig": {
|
||||
"doPassiveFreezing": true,
|
||||
"doWindSpawning": true,
|
||||
"windSpawnStrategy": "POINT",
|
||||
"spawnWindInAir": true,
|
||||
"windDestroysTorches": true,
|
||||
"doSnowPacking": true,
|
||||
"passiveFreezingTickInterval": 1,
|
||||
"windSpawnCapPerSecond": 15,
|
||||
"windSpawnRarity": 750,
|
||||
"windSpawnRarityThunder": 500,
|
||||
"maxPassiveFreezingPercent": 1.0,
|
||||
"passiveFreezingWetnessScaleMultiplier": 2.1,
|
||||
"soakPercentFromWaterPotion": 0.5,
|
||||
"sunLichenHeatPerLevel": 500,
|
||||
"sunLichenBurnTime": 60,
|
||||
"campfireWarmthSearchRadius": 10.0,
|
||||
"campfireWarmthTime": 1200,
|
||||
"freezingWindFrost": 160,
|
||||
"conduitPowerWarmthPerTick": 12,
|
||||
"heatFromHotFloor": 12,
|
||||
"shiverBelow": -0.51,
|
||||
"shiverWarmth": 1,
|
||||
"stopShiverWarmingBelowFoodLevel": 10,
|
||||
"warmFoodWarmthTime": 1200
|
||||
},
|
||||
"icicleConfig": {
|
||||
"iciclesFormInWeather": true,
|
||||
"becomeUnstableChance": 0.05,
|
||||
"growChance": 0.02,
|
||||
"growChanceDuringRain": 0.09,
|
||||
"growChanceDuringThunder": 0.15,
|
||||
"frostArrowFreezeAmount": 1000,
|
||||
"thrownIcicleFreezeAmount": 1500,
|
||||
"icicleCollisionFreezeAmount": 3000,
|
||||
"maxLightLevelToForm": 8,
|
||||
"minSkylightLevelToForm": 11,
|
||||
"thrownIcicleDamage": 1.0,
|
||||
"thrownIcicleExtraDamage": 3.0,
|
||||
"thrownIcicleCooldown": 10
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
server:
|
||||
name: "global"
|
||||
metrics:
|
||||
enabled: true
|
||||
driver: "prometheus"
|
||||
collectors:
|
||||
systemGc: true
|
||||
systemMemory: true
|
||||
systemProcess: true
|
||||
systemThread: true
|
||||
server: true
|
||||
world: true
|
||||
tick: true
|
||||
events: true
|
@ -1,16 +0,0 @@
|
||||
mode: "HTTP"
|
||||
http:
|
||||
host: "0.0.0.0"
|
||||
port: 9100
|
||||
authentication:
|
||||
scheme: "NONE"
|
||||
username: "username"
|
||||
password: "password"
|
||||
pushGateway:
|
||||
job: "unifiedmetrics"
|
||||
url: "http://pushgateway:9091"
|
||||
authentication:
|
||||
scheme: "NONE"
|
||||
username: "username"
|
||||
password: "password"
|
||||
interval: 10
|
@ -1,20 +0,0 @@
|
||||
{
|
||||
// Use the custom name list, editable in ./mods/villagernames/customnames.txt, seperated by a comma. If custom names are found, the default name list is ignored.
|
||||
"useCustomNames": true,
|
||||
// Use the list of pre-defined female names when naming villagers.
|
||||
"useDefaultFemaleNames": true,
|
||||
// Use the list of pre-defined male names when naming villagers.
|
||||
"useDefaultMaleNames": true,
|
||||
// Disabled by default. Whether both custom and default names should be used to name villagers. Custom names will probably not be chosen often due to the amount of default names.
|
||||
"useBothCustomAndDefaultNames": true,
|
||||
// If enabled, also gives modded villagers a name. If you've found a 'villager'-entity that isn't named let me know by opening an issue so I can add it in.
|
||||
"nameModdedVillagers": true,
|
||||
// Whether the profession should be added to the villager's trade screen next to their name.
|
||||
"showProfessionOnTradeScreen": true,
|
||||
// If enabled, switches the name and profession on the villager trading screen. Result: <profession> - <name>.
|
||||
"switchNameAndProfessionTradeScreen": true,
|
||||
// Whether the merchant level (novice, apprentice etc.) should be hidden on the trade screen.
|
||||
"hideMerchantLevelTradeScreen": false,
|
||||
// If enabled, the mod capitalizes each word in the custom name list.
|
||||
"shouldCapitalizeNames": true
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
[
|
||||
{
|
||||
"uuid": "61ec0d1b-0dc2-45bd-930e-ab45bcaa4386",
|
||||
"name": "Athro_Hiro",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": false
|
||||
},
|
||||
{
|
||||
"uuid": "d3dd297f-0c08-45a0-8260-f1ac46af490a",
|
||||
"name": "Der_Grumpf",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": false
|
||||
},
|
||||
{
|
||||
"uuid": "2f1de2e1-9fe8-457c-9a99-26c611fc6b64",
|
||||
"name": "mlgChaostom44",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": false
|
||||
},
|
||||
{
|
||||
"uuid": "f42bbaa6-b2e7-4573-8092-13fbddf2544d",
|
||||
"name": "Deltayquaza",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": false
|
||||
},
|
||||
{
|
||||
"uuid": "c76e4802-7f01-47cb-bc1b-16cadd736078",
|
||||
"name": "Weizenkumpel",
|
||||
"level": 4,
|
||||
"bypassesPlayerLimit": false
|
||||
}
|
||||
]
|
@ -1,59 +0,0 @@
|
||||
config-version: 3
|
||||
world-settings:
|
||||
default:
|
||||
invisible-blocks:
|
||||
- minecraft:tall_grass
|
||||
- minecraft:fern
|
||||
- minecraft:short_grass
|
||||
- minecraft:large_fern
|
||||
iterate-up-base-blocks:
|
||||
- minecraft:netherrack
|
||||
- minecraft:glowstone
|
||||
- minecraft:soul_sand
|
||||
- minecraft:soul_soil
|
||||
- minecraft:gravel
|
||||
- minecraft:warped_nylium
|
||||
- minecraft:crimson_nylium
|
||||
- minecraft:nether_gold_ore
|
||||
- minecraft:ancient_debris
|
||||
- minecraft:nether_quartz_ore
|
||||
- minecraft:magma_block
|
||||
- minecraft:basalt
|
||||
color-overrides:
|
||||
biomes:
|
||||
foliage:
|
||||
minecraft:jungle: '#1f8907'
|
||||
minecraft:mangrove_swamp: '#6f9623'
|
||||
minecraft:sparse_jungle: '#1f8907'
|
||||
minecraft:bamboo_jungle: '#1f8907'
|
||||
minecraft:dark_forest: '#1c7b07'
|
||||
grass: {}
|
||||
water: {}
|
||||
blocks:
|
||||
minecraft:azure_bluet: '#F7F7F7'
|
||||
minecraft:oxeye_daisy: '#D6E8E8'
|
||||
minecraft:glass: '#FFFFFF'
|
||||
minecraft:white_tulip: '#D6E8E8'
|
||||
minecraft:mycelium: '#6F6265'
|
||||
minecraft:spruce_leaves: '#619961'
|
||||
minecraft:pink_tulip: '#EBC5FD'
|
||||
minecraft:rose_bush: '#9B221A'
|
||||
minecraft:blue_orchid: '#2ABFFD'
|
||||
minecraft:orange_tulip: '#BD6A22'
|
||||
minecraft:peony: '#EBC5FD'
|
||||
minecraft:sunflower: '#FFEC4F'
|
||||
minecraft:allium: '#B878ED'
|
||||
minecraft:wither_rose: '#211A16'
|
||||
minecraft:birch_leaves: '#80A755'
|
||||
minecraft:lava: '#EA5C0F'
|
||||
minecraft:lily_of_the_valley: '#FFFFFF'
|
||||
minecraft:poppy: '#ED302C'
|
||||
minecraft:attached_melon_stem: '#E0C71C'
|
||||
minecraft:red_tulip: '#9B221A'
|
||||
minecraft:dandelion: '#FFEC4F'
|
||||
minecraft:pink_petals: '#FFB4DB'
|
||||
minecraft:attached_pumpkin_stem: '#E0C71C'
|
||||
minecraft:lilac: '#B66BB2'
|
||||
minecraft:cornflower: '#466AEB'
|
||||
minecraft:terracotta: '#9E6246'
|
||||
minecraft:lily_pad: '#208030'
|
@ -1,95 +0,0 @@
|
||||
config-version: 2
|
||||
settings:
|
||||
commands:
|
||||
main-command-label: squaremap
|
||||
main-command-aliases:
|
||||
- map
|
||||
render-progress-logging:
|
||||
enabled: true
|
||||
interval-seconds: 1
|
||||
language-file: lang-en.yml
|
||||
debug-mode: false
|
||||
update-checker: false
|
||||
web-address: http://localhost:8080
|
||||
web-directory:
|
||||
path: web
|
||||
auto-update: false
|
||||
image-quality:
|
||||
compress-images:
|
||||
enabled: true
|
||||
value: 0.5
|
||||
internal-webserver:
|
||||
enabled: true
|
||||
bind: 0.0.0.0
|
||||
port: 8080
|
||||
flush-json-immediately: false
|
||||
ui:
|
||||
coordinates:
|
||||
enabled: true
|
||||
link:
|
||||
enabled: true
|
||||
sidebar:
|
||||
pinned: pinned
|
||||
world-settings:
|
||||
default:
|
||||
map:
|
||||
enabled: true
|
||||
display-name: '{world} @ Garde Studios'
|
||||
order: 0
|
||||
icon: ''
|
||||
max-render-threads: -1
|
||||
iterate-up: false
|
||||
max-height: -1
|
||||
biomes:
|
||||
enabled: true
|
||||
blend-biomes: 3
|
||||
glass:
|
||||
clear: true
|
||||
lava:
|
||||
checkerboard: true
|
||||
water:
|
||||
clear-depth: true
|
||||
checkerboard: false
|
||||
zoom:
|
||||
maximum: 3
|
||||
default: 3
|
||||
extra: 2
|
||||
background-render:
|
||||
enabled: true
|
||||
max-chunks-per-interval: 1024
|
||||
interval-seconds: 15
|
||||
max-render-threads: -1
|
||||
markers:
|
||||
update-interval-seconds: 5
|
||||
spawn-icon:
|
||||
enabled: true
|
||||
show-controls: true
|
||||
default-hidden: false
|
||||
layer-priority: 0
|
||||
z-index: 0
|
||||
world-border:
|
||||
enabled: true
|
||||
show-controls: true
|
||||
default-hidden: false
|
||||
layer-priority: 1
|
||||
z-index: 1
|
||||
visibility-limits:
|
||||
- type: world-border
|
||||
enabled: 'false'
|
||||
player-tracker:
|
||||
enabled: true
|
||||
update-interval-seconds: 1
|
||||
show-controls: true
|
||||
default-hidden: false
|
||||
layer-priority: 2
|
||||
z-index: 2
|
||||
nameplate:
|
||||
enabled: true
|
||||
show-head: true
|
||||
heads-url: https://mc-heads.net/avatar/{uuid}/16
|
||||
show-armor: true
|
||||
show-health: true
|
||||
hide:
|
||||
invisible: true
|
||||
spectators: true
|
||||
use-display-names: false
|
Before Width: | Height: | Size: 167 B |
@ -1,172 +0,0 @@
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #000000;
|
||||
overflow: hidden;
|
||||
}
|
||||
ul, li {
|
||||
list-style-type: none;
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
#map {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: black;
|
||||
}
|
||||
img.leaflet-tile {
|
||||
image-rendering: pixelated;
|
||||
image-rendering: -moz-crisp-edges
|
||||
}
|
||||
div.leaflet-nameplate-pane div {
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
color: #ffffff;
|
||||
font-weight: 700;
|
||||
padding: 2px 5px 1px;
|
||||
margin: 0;
|
||||
border-color: rgba(0, 0, 0, 0.75);
|
||||
}
|
||||
div.leaflet-nameplate-pane div:before {
|
||||
border-color: transparent;
|
||||
}
|
||||
div.leaflet-nameplate-pane div img.head {
|
||||
vertical-align: middle;
|
||||
margin-right: 6px;
|
||||
}
|
||||
div.leaflet-nameplate-pane div img.armor,
|
||||
div.leaflet-nameplate-pane div img.health {
|
||||
display: block;
|
||||
}
|
||||
div.leaflet-nameplate-pane div,
|
||||
div.leaflet-marker-pane img {
|
||||
transition: all 0.25s;
|
||||
}
|
||||
.leaflet-bottom.leaflet-left .link,
|
||||
.leaflet-bottom.leaflet-left .coordinates {
|
||||
display: inline-block;
|
||||
float: none;
|
||||
}
|
||||
div.leaflet-control-layers.link img {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
vertical-align: bottom;
|
||||
bottom: 0;
|
||||
background-image: url("../images/link.png");
|
||||
background-size: 20px 20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50% 50%;
|
||||
}
|
||||
div.leaflet-control-layers.coordinates {
|
||||
vertical-align: bottom;
|
||||
padding: 2px 5px;
|
||||
line-height: 14px;
|
||||
height: 30px;
|
||||
}
|
||||
#sidebar {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
height: 100vh;
|
||||
padding-left: 10px;
|
||||
z-index: 10000;
|
||||
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
border-left: 1px solid #000000;
|
||||
background-color: rgba(0, 0, 0, 0.6);
|
||||
color: #ffffff;
|
||||
text-align: right;
|
||||
transition: all 0.25s;
|
||||
}
|
||||
#sidebar.show {
|
||||
width: 200px;
|
||||
padding-left: 0;
|
||||
}
|
||||
#sidebar fieldset {
|
||||
clear: right;
|
||||
margin: 30px 0;
|
||||
border: none;
|
||||
border-top: 1px solid rgba(196, 196, 196, 0.4);
|
||||
text-align: left;
|
||||
transition: all 0.25s;
|
||||
white-space: nowrap;
|
||||
}
|
||||
#sidebar fieldset#worlds {
|
||||
margin: -15px 0 0;
|
||||
}
|
||||
#sidebar fieldset#players {
|
||||
margin: 10px 0 0;
|
||||
overflow-y: auto;
|
||||
}
|
||||
#sidebar fieldset#players::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
#sidebar fieldset#players::-webkit-scrollbar-track {
|
||||
-webkit-box-shadow: inset 0 0 0;
|
||||
}
|
||||
#sidebar fieldset#players::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
border-right: 2px solid rgba(112, 128, 144, 0.75);
|
||||
border-radius: 1px;
|
||||
}
|
||||
#sidebar fieldset#players::-webkit-scrollbar-thumb:hover {
|
||||
border-radius: 3px;
|
||||
border: 0;
|
||||
background-color: rgba(112, 128, 144, 0.75);
|
||||
}
|
||||
#sidebar legend {
|
||||
display: block;
|
||||
margin: 10px 5px;
|
||||
}
|
||||
#sidebar fieldset a,
|
||||
#sidebar fieldset a:visited {
|
||||
display: block;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
padding: 5px 10px;
|
||||
transition: all 0.25s;
|
||||
}
|
||||
#sidebar fieldset a.following {
|
||||
background-color: rgba(128, 128, 255, 0.25);
|
||||
}
|
||||
#sidebar fieldset a:hover,
|
||||
#sidebar fieldset a.following:hover {
|
||||
background-color: rgba(255, 255, 255, 0.15);
|
||||
cursor: pointer;
|
||||
}
|
||||
#sidebar fieldset a .other-world {
|
||||
filter: brightness(50%) !important;
|
||||
font-style: italic;
|
||||
}
|
||||
#sidebar fieldset a img {
|
||||
vertical-align: middle;
|
||||
padding-right: 10px;
|
||||
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.5));
|
||||
-webkit-filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.5));
|
||||
}
|
||||
#sidebar fieldset#players a {
|
||||
padding: 10px;
|
||||
}
|
||||
#sidebar #pin {
|
||||
position: relative;
|
||||
right: -160px;
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
margin: 5px 5px 10px;
|
||||
padding: 2px;
|
||||
border: 1px solid rgba(255, 255, 255, 0);
|
||||
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.5));
|
||||
-webkit-filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.5));
|
||||
cursor: pointer;
|
||||
}
|
||||
#sidebar #pin.pinned:hover {
|
||||
background: rgba(0, 128, 0, 0.5);
|
||||
border: 1px solid rgba(0, 128, 0, 0.75);
|
||||
}
|
||||
#sidebar #pin.unpinned:hover {
|
||||
background: rgba(128, 0, 0, 0.5);
|
||||
border: 1px solid rgba(128, 0, 0, 0.75);
|
||||
}
|
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 603 B |
Before Width: | Height: | Size: 667 B |
Before Width: | Height: | Size: 662 B |
Before Width: | Height: | Size: 675 B |
Before Width: | Height: | Size: 664 B |
Before Width: | Height: | Size: 684 B |
Before Width: | Height: | Size: 670 B |
Before Width: | Height: | Size: 685 B |
Before Width: | Height: | Size: 669 B |
Before Width: | Height: | Size: 681 B |
Before Width: | Height: | Size: 663 B |
Before Width: | Height: | Size: 663 B |
Before Width: | Height: | Size: 665 B |
Before Width: | Height: | Size: 636 B |
Before Width: | Height: | Size: 690 B |
Before Width: | Height: | Size: 675 B |
Before Width: | Height: | Size: 676 B |
Before Width: | Height: | Size: 663 B |
Before Width: | Height: | Size: 676 B |
Before Width: | Height: | Size: 664 B |
Before Width: | Height: | Size: 676 B |
Before Width: | Height: | Size: 167 B |
Before Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 617 B |
Before Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 684 B |
Before Width: | Height: | Size: 681 B |
Before Width: | Height: | Size: 685 B |
Before Width: | Height: | Size: 683 B |
Before Width: | Height: | Size: 683 B |
Before Width: | Height: | Size: 685 B |
Before Width: | Height: | Size: 686 B |
Before Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 671 B |
Before Width: | Height: | Size: 670 B |
Before Width: | Height: | Size: 634 B |
Before Width: | Height: | Size: 675 B |
Before Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 683 B |
Before Width: | Height: | Size: 680 B |
Before Width: | Height: | Size: 684 B |
Before Width: | Height: | Size: 680 B |
Before Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 160 B |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 309 KiB |
Before Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 11 KiB |
@ -1,404 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="preload" href="https://fonts.gstatic.com/s/raleway/v22/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrE.woff2" as="font" crossorigin="anonymous">
|
||||
<link rel="preload" href="https://fonts.gstatic.com/s/raleway/v22/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVsEpbCIPrE.woff2" as="font" crossorigin="anonymous">
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
|
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
|
||||
<meta name="theme-color" content="#222222">
|
||||
<link rel="manifest" href="./live-atlas/favicons/site.webmanifest">
|
||||
<link rel="icon" href="./live-atlas/favicons/favicon.svg">
|
||||
<link rel=”mask-icon” href="./live-atlas/favicons/mask.svg" color="#cccccc">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./live-atlas/favicons/apple-touch-icon.png">
|
||||
|
||||
<meta name="keywords" content="minecraft, map, dynamic, liveatlas" />
|
||||
<meta name="description" content="Minecraft Dynamic Map" />
|
||||
|
||||
<title>LiveAtlas</title>
|
||||
|
||||
<script>
|
||||
window.liveAtlasConfig = {
|
||||
// By default LiveAtlas looks for a dynmap standalone/config.js file
|
||||
// This configuration can be used instead to support Pl3xmap and Squaremap installations as well as multiple servers (external webserver required)
|
||||
// To configure multiple servers, see https://github.com/JLyne/LiveAtlas/wiki/Configuring-Multiple-Servers.
|
||||
|
||||
// Example Squaremap internal webserver configuration
|
||||
servers: {
|
||||
squaremap: {
|
||||
squaremap: window.location.pathname
|
||||
},
|
||||
},
|
||||
|
||||
// Example Pl3xmap internal webserver configuration
|
||||
// servers: {
|
||||
// pl3xmap: {
|
||||
// pl3xmap: window.location.pathname
|
||||
// },
|
||||
// },
|
||||
|
||||
// Example Overviewer configuration
|
||||
// servers: {
|
||||
// overviewer: {
|
||||
// overviewer: window.location.pathname
|
||||
// },
|
||||
// },
|
||||
|
||||
// Example Dynmap internal webserver configuration without using standalone/config.js
|
||||
// servers: {
|
||||
// dynmap: {
|
||||
// dynmap: {
|
||||
// configuration: 'standalone/dynmap_config.json?_={timestamp}',
|
||||
// update: 'standalone/dynmap_{world}.json?_={timestamp}',
|
||||
// sendmessage: 'standalone/sendmessage.php',
|
||||
// login: 'standalone/login.php',
|
||||
// register: 'standalone/register.php',
|
||||
// tiles: 'tiles/',
|
||||
// markers: 'tiles/'
|
||||
// }
|
||||
// },
|
||||
// },
|
||||
|
||||
// Example multiple Dynmap servers on external webserver configuration
|
||||
// servers: {
|
||||
// creative: {
|
||||
// label: 'Creative',
|
||||
// dynmap: {
|
||||
// configuration: 'http://dynmap.local/standalone/creative/MySQL_configuration.php',
|
||||
// update: 'http://dynmap.local/standalone/creative/MySQL_update.php?world={world}&ts={timestamp}',
|
||||
// sendmessage: 'http://dynmap.local/standalone/creative/MySQL_sendmessage.php',
|
||||
// login: 'http://dynmap.local/standalone/creative/MySQL_login.php',
|
||||
// register: 'http://dynmap.local/standalone/creative/MySQL_register.php',
|
||||
// tiles: 'http://dynmap.local/standalone/creative/MySQL_tiles.php?tile=',
|
||||
// markers: 'http://dynmap.local/standalone/creative/MySQL_markers.php?marker='
|
||||
// }
|
||||
// },
|
||||
// survival: {
|
||||
// label: 'Survival',
|
||||
// dynmap: {
|
||||
// configuration: 'http://dynmap.local/standalone/survival/MySQL_configuration.php',
|
||||
// update: 'http://dynmap.local/standalone/survival/MySQL_update.php?world={world}&ts={timestamp}',
|
||||
// sendmessage: 'http://dynmap.local/standalone/survival/MySQL_sendmessage.php',
|
||||
// login: 'http://dynmap.local/standalone/survival/MySQL_login.php',
|
||||
// register: 'http://dynmap.local/standalone/survival/MySQL_register.php',
|
||||
// tiles: 'http://dynmap.local/standalone/survival/MySQL_tiles.php?tile=',
|
||||
// markers: 'http://dynmap.local/standalone/survival/MySQL_markers.php?marker='
|
||||
// }
|
||||
// },
|
||||
// },
|
||||
|
||||
// These messages are used throughout LiveAtlas and can be translated here
|
||||
// If a message you want to translate isn't here, it is likely controlled by dynmap itself
|
||||
// see https://github.com/webbukkit/dynmap/wiki/Configuration.txt
|
||||
messages: {
|
||||
chatNoMessages: 'No chat messages yet...',
|
||||
chatTitle: 'Chat',
|
||||
chatLogin: 'Please login to send chat messages',
|
||||
chatSend: 'Send',
|
||||
chatPlaceholder: 'Type your chat message here...',
|
||||
chatErrorUnknown: 'Unexpected error while sending chat message',
|
||||
chatErrorDisabled: 'Chat is not enabled',
|
||||
serversHeading: 'Servers',
|
||||
markersHeading: 'Markers',
|
||||
markersSearchPlaceholder: 'Search markers...',
|
||||
markersSkeleton: 'No markers exist for the current world',
|
||||
markersSetSkeleton: 'This marker set is empty',
|
||||
markersSearchSkeleton: 'No matching markers found',
|
||||
markersUnnamed: '(Unnamed marker)',
|
||||
worldsSkeleton: 'No maps have been configured',
|
||||
playersSkeleton: 'No players are currently online',
|
||||
playersTitle: 'Click to center on player\nDouble-click to follow player',
|
||||
playersTitleHidden: 'This player is currently hidden from the map\nDouble-click to follow player when they become visible',
|
||||
playersTitleOtherWorld: 'This player is in another world.\nClick to center on player\nDouble-click to follow player',
|
||||
playersSearchPlaceholder: 'Search players...',
|
||||
playersSearchSkeleton: 'No matching players found',
|
||||
followingHeading: 'Following',
|
||||
followingUnfollow: 'Unfollow',
|
||||
followingTitleUnfollow: 'Stop following this player',
|
||||
followingHidden: 'Currently hidden',
|
||||
linkTitle: 'Copy link to current location',
|
||||
loadingTitle: 'Loading...',
|
||||
locationRegion: 'Region',
|
||||
locationChunk: 'Chunk',
|
||||
contextMenuCopyLink: 'Copy link to here',
|
||||
contextMenuCenterHere: 'Center here',
|
||||
toggleTitle: 'Click to toggle this section',
|
||||
mapTitle: 'Map - Use the arrow keys to pan the map',
|
||||
layersTitle: 'Layers',
|
||||
copyToClipboardSuccess: 'Copied to clipboard',
|
||||
copyToClipboardError: 'Unable to copy to clipboard',
|
||||
|
||||
loginTitle: 'Login/Register',
|
||||
loginHeading: 'Existing User',
|
||||
loginUsernameLabel: 'Username',
|
||||
loginPasswordLabel: 'Password',
|
||||
loginSubmit: 'Login',
|
||||
loginErrorUnknown: 'Unexpected error while logging in',
|
||||
loginErrorDisabled: 'Logging in is disabled on this server',
|
||||
loginErrorIncorrect: 'Incorrect username or password',
|
||||
loginSuccess: 'Logged in successfully',
|
||||
|
||||
registerHeading: 'New User',
|
||||
registerDescription: `Enter your username and password, along with your registration code.
|
||||
|
||||
You can get a registration code by running /dynmap webregister in-game.`,
|
||||
registerConfirmPasswordLabel: 'Confirm Password',
|
||||
registerCodeLabel: 'Registration Code',
|
||||
registerSubmit: 'Register',
|
||||
registerErrorUnknown: 'Unexpected error during registration',
|
||||
registerErrorDisabled: 'Registration is disabled on this server',
|
||||
registerErrorVerifyFailed: 'The entered passwords do not match',
|
||||
registerErrorIncorrect: 'Registration failed, please check the entered details are correct',
|
||||
|
||||
logoutTitle: 'Logout',
|
||||
logoutErrorUnknown: 'Unexpected error while logging out',
|
||||
logoutSuccess: 'Logged out successfully',
|
||||
|
||||
closeTitle: 'Close',
|
||||
showMore: 'Show more'
|
||||
},
|
||||
|
||||
ui: {
|
||||
// If true, player markers will always be displayed in front of other marker types
|
||||
playersAboveMarkers: true,
|
||||
|
||||
// Whether to enable the player list search box
|
||||
playersSearch: true,
|
||||
|
||||
// Use more compact pre-2.0 player marker style
|
||||
compactPlayerMarkers: false,
|
||||
|
||||
// Disable the map right click menu
|
||||
disableContextMenu: false,
|
||||
|
||||
// Disable the markers button and list
|
||||
disableMarkerUI: false,
|
||||
|
||||
// Custom URL to redirect to when logging in is required
|
||||
// This URL will need to handle the login process and redirect users back to LiveAtlas
|
||||
customLoginUrl: null
|
||||
},
|
||||
|
||||
// Config version. Do not modify.
|
||||
version: 1
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/* Theme colours */
|
||||
:root {
|
||||
--background-base: #222222; /* Foreground UI elements */
|
||||
--background-dark: #121212; /* Body/Splash screen/Shadows */
|
||||
--background-light: #363636; /* Scrollbars/inputs */
|
||||
--background-error: #771616; /* Errors */
|
||||
--background-marker: var(--background-dark); /* Map markers */
|
||||
|
||||
--background-disabled: #555555; /* Disabled controls */
|
||||
--background-hover: #363636; /* :hovered buttons/menu items */
|
||||
--background-active: #6d6d6d; /* Button :active */
|
||||
--background-selected: #BDBDBD; /* Selected buttons/menu items */
|
||||
|
||||
--outline-focus: #eeeeee; /* :focus outline */
|
||||
|
||||
--border-radius: 0.5rem;
|
||||
--border-color: #333333; /* Control borders */
|
||||
--border-error: #cc0e0e;
|
||||
--box-shadow: 2px 2px 0px #111111;
|
||||
|
||||
--text-base: rgba(255, 255, 255, 0.7); /* Normal text */
|
||||
--text-emphasis: rgba(255, 255, 255, 0.87); /* Chat messages/:focus inputs */
|
||||
--text-subtle: rgba(255, 255, 255, 0.5); /* Skeletons/secondary text */
|
||||
--text-disabled: var(--text-subtle); /* Disabled controls */
|
||||
--text-marker: var(--text-base); /* Map markers */
|
||||
|
||||
--text-hover: var(--text-base); /* Text in :hover buttons */
|
||||
--text-active: var(--text-base); /* Text in :active buttons */
|
||||
--text-selected: var(--background-base); /* Text in selected buttons */
|
||||
--text-shadow: 0.1rem 0.1rem #000000; /* Text in selected buttons */
|
||||
|
||||
--text-night: #ddffff; /* Clock time at night */
|
||||
--text-day: #ffdd33; /* Clock time in day */
|
||||
}
|
||||
|
||||
@keyframes fade {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--background-light) transparent;
|
||||
}
|
||||
|
||||
*:hover, *:focus-within {
|
||||
scrollbar-color: var(--background-hover) transparent;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar {
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-thumb {
|
||||
background-color: var(--background-light);
|
||||
border: 2px solid #000000;
|
||||
border-radius: 2rem;
|
||||
transition: background 1s ease-in;
|
||||
padding-right: 0.2rem;
|
||||
}
|
||||
|
||||
*:hover::-webkit-scrollbar-thumb, *:focus-within::-webkit-scrollbar-thumb {
|
||||
background-color: var(--background-hover);
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html, body {
|
||||
background-color: var(--background-dark);
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overscroll-behavior: none;
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 62.5%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Raleway,
|
||||
system-ui,
|
||||
-apple-system,
|
||||
'Segoe UI',
|
||||
Roboto,
|
||||
Helvetica,
|
||||
Arial,
|
||||
sans-serif,
|
||||
'Apple Color Emoji',
|
||||
'Segoe UI Emoji';
|
||||
color: var(--text-base);
|
||||
text-shadow: var(--text-shadow);
|
||||
letter-spacing: 0.02rem;
|
||||
}
|
||||
|
||||
noscript {
|
||||
color: var(--text-base);
|
||||
font-size: 1rem;
|
||||
font-family: sans-serif;
|
||||
text-align: center;
|
||||
line-height: 1.25;
|
||||
}
|
||||
|
||||
#splash, noscript {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
transition: 0.3s opacity linear;
|
||||
z-index: 100;
|
||||
background-color: var(--background-dark);
|
||||
cursor: wait;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.6rem;
|
||||
padding: 4rem;
|
||||
}
|
||||
|
||||
#splash[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#splash__spinner {
|
||||
margin-top: 4rem;
|
||||
animation: fade 0.5s linear 1s;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
#splash__error {
|
||||
margin-top: 2rem;
|
||||
transition: opacity 0.5s ease-in;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
max-width: 60rem;
|
||||
}
|
||||
|
||||
#splash__error-message {
|
||||
font-family: monospace;
|
||||
background-color: var(--background-error);
|
||||
padding: 1rem 1.5rem;
|
||||
border-radius: var(--border-radius);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
#splash__error[aria-hidden=true] {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#app {
|
||||
font-size: 1.6rem;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<script type="module" crossorigin src="./live-atlas/assets/index.a82d2095.js"></script>
|
||||
<link rel="modulepreload" href="./live-atlas/assets/vendor.d0ab50b1.js">
|
||||
<link rel="stylesheet" href="./live-atlas/assets/index.1de34b3a.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="splash">
|
||||
<svg id="splash__logo" width="200" height="200" viewBox="0 0 268.83 266.53" aria-hidden="true" fill="rgba(255, 255, 255, 0.7)">
|
||||
<path d="M5.235.662C2.153.606 0 2.945 0 6.912v216.577c0 5.288 3.828 11.41 8.582 13.725l57.835 28.165c4.755 2.316 8.582-.078 8.582-5.367V43.434c0-5.288-3.827-11.41-8.582-13.727L8.582 1.544C7.394.965 6.262.681 5.235.662zm32.283 135.96c14.394 0 26.062 11.669 26.062 26.063 0 14.394-24.167 59.55-26.062 57.654-1.854 1.854-26.063-43.26-26.063-57.654 0-14.394 11.669-26.063 26.063-26.063zM202.388 1.013l57.833 28.165c4.755 2.315 8.583 8.437 8.583 13.726v216.58c0 5.29-3.828 7.683-8.583 5.367l-57.833-28.164c-4.755-2.316-8.583-8.438-8.583-13.727V6.38c0-5.289 3.828-7.682 8.583-5.367zM172.012.39c-1.051-.035-2.209.191-3.426.709l-68.342 29.053c-4.867 2.07-8.786 7.993-8.786 13.282V260.01c0 5.29 3.919 7.88 8.786 5.811l68.342-29.053c4.867-2.07 8.786-7.991 8.786-13.28V6.91c0-3.967-2.204-6.417-5.36-6.521zm-36.949 41.216c14.394 0 26.063 11.668 26.063 26.062 0 14.394-24.168 59.55-26.063 57.655C133.209 127.177 109 82.063 109 67.668c0-14.394 11.669-26.062 26.063-26.062z"/>
|
||||
<path d="M48.573 162.689a11.056 11.056 0 0 1-11.056 11.056 11.056 11.056 0 0 1-11.056-11.056 11.056 11.056 0 0 1 11.056-11.056 11.056 11.056 0 0 1 11.056 11.056zM146.12 67.669a11.056 11.056 0 0 1-11.057 11.056 11.056 11.056 0 0 1-11.056-11.056 11.056 11.056 0 0 1 11.056-11.056 11.056 11.056 0 0 1 11.056 11.056z"/>
|
||||
</svg>
|
||||
|
||||
<svg id="splash__spinner" width="38" height="38" viewBox="0 0 38 38" stroke="#fff" aria-label="LiveAtlas is loading">
|
||||
<g transform="translate(1 1)" stroke-width="2" fill="none">
|
||||
<circle stroke-opacity=".5" cx="18" cy="18" r="18"/>
|
||||
<path d="M36 18c0-9.94-8.06-18-18-18">
|
||||
<animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"/>
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<div id="splash__error" aria-hidden="true">
|
||||
<span id="splash__error-message" role="alert"></span>
|
||||
<span id="splash__error-retry" aria-live="polite"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<noscript>
|
||||
<strong>LiveAtlas requires JavaScript to work.<br />Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
|
||||
<main id="app" aria-hidden="true"></main>
|
||||
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', () => {
|
||||
if(!window.liveAtlasLoaded) {
|
||||
document.getElementById('splash__error').setAttribute('aria-hidden', 'false');
|
||||
document.getElementById('splash__error-message').innerText = 'Required LiveAtlas files are missing or failed to load.\nPlease reinstall LiveAtlas.';
|
||||
document.getElementById('splash__spinner').style.visibility = 'hidden';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|