forked from Garde-Studios/new
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
18003e7813 | |||
101a598f6f | |||
f839fa454e | |||
349a7cff3d | |||
e16988435c | |||
c4daa73481 | |||
|
a3444bf9b4 | ||
d39a71fb8d | |||
cab4e7d8fe | |||
f5f96d86ad | |||
c96061dc4e |
4
.gitignore
vendored
4
.gitignore
vendored
@ -1 +1,5 @@
|
||||
/data
|
||||
/squaremap/data
|
||||
/squaremap/web
|
||||
/squaremap/locale
|
||||
.DS_Store
|
||||
|
70
README.md
70
README.md
@ -1,4 +1,72 @@
|
||||
# NEW MC Server - Powered by Garde Studios
|
||||
|
||||
Testing WebHook
|
||||
## Development
|
||||
|
||||
### (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)
|
||||
|
BIN
assets/Architecture-Overview.png
Normal file
BIN
assets/Architecture-Overview.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
162
assets/architecture-overview.drawio
Normal file
162
assets/architecture-overview.drawio
Normal file
@ -0,0 +1,162 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36" version="24.8.4">
|
||||
<diagram name="Page-1" id="ngFJ-PK3nhXtL8uodcvB">
|
||||
<mxGraphModel dx="656" dy="620" 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" vertex="1" connectable="0" parent="1">
|
||||
<mxGeometry x="30" y="150" width="660" height="225" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-8" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-43">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-8">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-8">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-10" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-43">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-10">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-10">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-4" target="rkxtWGMJMKr7dUVkmx0B-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-21" value="Main Connection" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-13">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-6" target="rkxtWGMJMKr7dUVkmx0B-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-18" value="Authenticates User" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-14">
|
||||
<mxGeometry x="-0.155" relative="1" as="geometry">
|
||||
<mxPoint x="17" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-16" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-43">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-16">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-16">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-22" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-43">
|
||||
<mxGeometry x="230" y="20" width="60" 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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-22">
|
||||
<mxGeometry x="8.5" y="30" width="43" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-24" value="web<span style="background-color: initial;">.cyperpunk.de</span>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-22">
|
||||
<mxGeometry width="60" 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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-23" target="rkxtWGMJMKr7dUVkmx0B-2">
|
||||
<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=[];" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-25">
|
||||
<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" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-43">
|
||||
<mxGeometry width="180" height="175" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-29" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-41">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-29">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-29">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-33" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-41">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-33">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-33">
|
||||
<mxGeometry width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-36" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-41">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-36">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-36">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-41" source="rkxtWGMJMKr7dUVkmx0B-37" target="rkxtWGMJMKr7dUVkmx0B-34">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-41" source="rkxtWGMJMKr7dUVkmx0B-37" target="rkxtWGMJMKr7dUVkmx0B-27">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-43" source="rkxtWGMJMKr7dUVkmx0B-6" target="rkxtWGMJMKr7dUVkmx0B-37">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-59" value="" style="group" vertex="1" connectable="0" parent="1">
|
||||
<mxGeometry x="180" y="448" width="220" height="204" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-48" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-59">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-48">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-48">
|
||||
<mxGeometry y="44" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-49" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-59">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-49">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-49">
|
||||
<mxGeometry y="44" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="rkxtWGMJMKr7dUVkmx0B-52" value="" style="group" vertex="1" connectable="0" parent="rkxtWGMJMKr7dUVkmx0B-59">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-52">
|
||||
<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;" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-52">
|
||||
<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" vertex="1" parent="rkxtWGMJMKr7dUVkmx0B-59">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-59" source="rkxtWGMJMKr7dUVkmx0B-50" target="rkxtWGMJMKr7dUVkmx0B-55">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-59" source="rkxtWGMJMKr7dUVkmx0B-44" target="rkxtWGMJMKr7dUVkmx0B-55">
|
||||
<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;" edge="1" parent="rkxtWGMJMKr7dUVkmx0B-59" source="rkxtWGMJMKr7dUVkmx0B-53" target="rkxtWGMJMKr7dUVkmx0B-55">
|
||||
<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;" edge="1" parent="1" source="rkxtWGMJMKr7dUVkmx0B-55" target="rkxtWGMJMKr7dUVkmx0B-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
@ -1,3 +0,0 @@
|
||||
server-port: 25585
|
||||
update-interval: 1000
|
||||
use-spark: true
|
4
deployment/garde-studios.de.compose.yml
Normal file
4
deployment/garde-studios.de.compose.yml
Normal file
@ -0,0 +1,4 @@
|
||||
include:
|
||||
- ../proxy/compose.yml
|
||||
- ../fallback/compose.yml
|
||||
- ../monitoring/compose.yml
|
1
fallback/.gitignore
vendored
Normal file
1
fallback/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/data
|
55
fallback/compose.yml
Normal file
55
fallback/compose.yml
Normal file
@ -0,0 +1,55 @@
|
||||
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,4 +1,4 @@
|
||||
hackOnlineMode = true
|
||||
hackEarlySend = false
|
||||
hackMessageChain = true
|
||||
secret = "CMhgx3vF17Nu"
|
||||
secret = "bGAJSlLeA4Wf"
|
14
fallback/config/unifiedmetrics/config.yml
Normal file
14
fallback/config/unifiedmetrics/config.yml
Normal file
@ -0,0 +1,14 @@
|
||||
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
|
16
fallback/config/unifiedmetrics/driver/prometheus.yml
Normal file
16
fallback/config/unifiedmetrics/driver/prometheus.yml
Normal file
@ -0,0 +1,16 @@
|
||||
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
|
18
fallback/mods.txt
Normal file
18
fallback/mods.txt
Normal file
@ -0,0 +1,18 @@
|
||||
# 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
|
1
main/.gitignore
vendored
Normal file
1
main/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/data
|
@ -32,7 +32,8 @@ services:
|
||||
USE_AIKAR_FLAGS: true
|
||||
|
||||
# World & Mod Data
|
||||
#WORLD: https://file.cyperpunk.de/filebrowser/api/public/dl/4FDwjgd8
|
||||
#WORLD:
|
||||
SEED: 795488740
|
||||
MODS_FILE: /extras/mods.txt
|
||||
# Whitelisting Players
|
||||
WHITELIST_FILE: https://git.cyperpunk.de/Garde-Studios/Uno-MC/raw/branch/main/whitelist.json
|
||||
@ -45,10 +46,11 @@ services:
|
||||
ports:
|
||||
- 30066:25565 # Connection Port
|
||||
- 31066:25575 # Rcon
|
||||
- 8080:8080 # Squaremap
|
||||
- 8090:8080 # Squaremap
|
||||
- 9001:25585 # Fabric Exporter
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./squaremap:/data/squaremap
|
||||
- ./mods.txt:/extras/mods.txt:ro
|
||||
- ./config:/config
|
||||
|
4
main/config/FabricProxy-Lite.toml
Normal file
4
main/config/FabricProxy-Lite.toml
Normal file
@ -0,0 +1,4 @@
|
||||
hackOnlineMode = true
|
||||
hackEarlySend = false
|
||||
hackMessageChain = true
|
||||
secret = "bGAJSlLeA4Wf"
|
71
main/config/biomesoplenty/biome_toggles.json
Normal file
71
main/config/biomesoplenty/biome_toggles.json
Normal file
@ -0,0 +1,71 @@
|
||||
{
|
||||
"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
|
||||
}
|
3
main/config/biomesoplenty/gameplay.toml
Normal file
3
main/config/biomesoplenty/gameplay.toml
Normal file
@ -0,0 +1,3 @@
|
||||
[general]
|
||||
#Add various BOP resources to the Wandering Trader trade pool.
|
||||
wandering_trader_trades = true
|
13
main/config/biomesoplenty/generation.toml
Normal file
13
main/config/biomesoplenty/generation.toml
Normal file
@ -0,0 +1,13 @@
|
||||
[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
|
48
main/config/fallingtree.json
Normal file
48
main/config/fallingtree.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"trees": {
|
||||
"allowedLogs": [],
|
||||
"deniedLogs": [],
|
||||
"allowedLeaves": [],
|
||||
"allowedNonDecayLeaves": [],
|
||||
"deniedLeaves": [],
|
||||
"breakMode": "INSTANTANEOUS",
|
||||
"detectionMode": "WHOLE_TREE",
|
||||
"maxScanSize": 500,
|
||||
"maxSize": 100,
|
||||
"maxLeafDistanceFromLog": 15,
|
||||
"maxSizeAction": "ABORT",
|
||||
"breakOrder": "FURTHEST_FIRST",
|
||||
"minimumLeavesAroundRequired": 1,
|
||||
"includePersistentLeavesInRequiredCount": true,
|
||||
"treeBreaking": true,
|
||||
"leavesBreaking": true,
|
||||
"leavesBreakingForceRadius": 0,
|
||||
"allowMixedLogs": false,
|
||||
"breakNetherTreeWarts": true,
|
||||
"breakMangroveRoots": true,
|
||||
"searchAreaRadius": -1,
|
||||
"allowedAdjacentBlocks": [],
|
||||
"adjacentStopMode": "STOP_ALL",
|
||||
"spawnItemsAtBreakPoint": false
|
||||
},
|
||||
"tools": {
|
||||
"allowed": [],
|
||||
"denied": [],
|
||||
"durabilityMode": "NORMAL",
|
||||
"ignoreTools": false,
|
||||
"damageMultiplicand": 1.0,
|
||||
"damageRounding": "ROUND_DOWN",
|
||||
"speedMultiplicand": 0.0,
|
||||
"forceToolUsage": false
|
||||
},
|
||||
"player": {
|
||||
"allowedTags": []
|
||||
},
|
||||
"enchantment": {
|
||||
"requireEnchantment": false
|
||||
},
|
||||
"sneakMode": "SNEAK_DISABLE",
|
||||
"breakInCreative": false,
|
||||
"lootInCreative": true,
|
||||
"notificationMode": "ACTION_BAR"
|
||||
}
|
55
main/config/friendsandfoes.json
Normal file
55
main/config/friendsandfoes.json
Normal file
@ -0,0 +1,55 @@
|
||||
{
|
||||
"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
|
||||
}
|
91
main/config/frostiful.json
Normal file
91
main/config/frostiful.json
Normal file
@ -0,0 +1,91 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
14
main/config/unifiedmetrics/config.yml
Normal file
14
main/config/unifiedmetrics/config.yml
Normal file
@ -0,0 +1,14 @@
|
||||
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
|
16
main/config/unifiedmetrics/driver/prometheus.yml
Normal file
16
main/config/unifiedmetrics/driver/prometheus.yml
Normal file
@ -0,0 +1,16 @@
|
||||
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
|
20
main/config/villagernames.json5
Normal file
20
main/config/villagernames.json5
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
// 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
|
||||
}
|
0
main/config/villagernames/customnames.txt
Normal file
0
main/config/villagernames/customnames.txt
Normal file
@ -1,5 +1,5 @@
|
||||
# Fabric API
|
||||
https://cdn.modrinth.com/data/P7dR8mSH/versions/bK6OgzFj/fabric-api-0.102.1%2B1.21.1.jar
|
||||
https://cdn.modrinth.com/data/P7dR8mSH/versions/thGkUOxt/fabric-api-0.107.0%2B1.21.1.jar
|
||||
|
||||
# Cloth Config API
|
||||
https://cdn.modrinth.com/data/9s6osm5g/versions/7jtvrmVP/cloth-config-15.0.130-fabric.jar
|
||||
@ -35,8 +35,8 @@ https://cdn.modrinth.com/data/LFJf0Klb/versions/7e8Rxgsk/ce-2.1.1.jar
|
||||
https://cdn.modrinth.com/data/8dI2tmqs/versions/AQhF7kvw/FabricProxy-Lite-2.9.0.jar
|
||||
|
||||
# Monitoring
|
||||
https://cdn.modrinth.com/data/dbVXHSlv/versions/YcE9H1C5/fabricexporter-1.0.11.jar
|
||||
https://cdn.modrinth.com/data/l6YH9Als/versions/qTSaozEL/spark-1.10.97-fabric.jar
|
||||
https://cdn.modrinth.com/data/Ha28R6CL/versions/B0fZidZi/fabric-language-kotlin-1.12.3%2Bkotlin.2.0.21.jar
|
||||
https://cdn.modrinth.com/data/p1ewR5kV/versions/xwRVtqbA/unifiedmetrics-platform-fabric-0.3.8.jar
|
||||
|
||||
# World Edit
|
||||
https://cdn.modrinth.com/data/1u6JkXh5/versions/vBzkrSYP/worldedit-mod-7.3.6.jar
|
32
main/ops.json
Normal file
32
main/ops.json
Normal file
@ -0,0 +1,32 @@
|
||||
[
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
59
main/squaremap/advanced.yml
Normal file
59
main/squaremap/advanced.yml
Normal file
@ -0,0 +1,59 @@
|
||||
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'
|
95
main/squaremap/config.yml
Normal file
95
main/squaremap/config.yml
Normal file
@ -0,0 +1,95 @@
|
||||
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: true
|
||||
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
|
22
main/whitelist.json
Normal file
22
main/whitelist.json
Normal file
@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"uuid": "61ec0d1b-0dc2-45bd-930e-ab45bcaa4386",
|
||||
"name": "Athro_Hiro"
|
||||
},
|
||||
{
|
||||
"uuid": "d3dd297f-0c08-45a0-8260-f1ac46af490a",
|
||||
"name": "Der_Grumpf"
|
||||
},
|
||||
{
|
||||
"uuid": "9b0fa43a-9c43-45bc-8e36-c282e87a3c69",
|
||||
"name": "Keanu2010Profi"
|
||||
},
|
||||
{
|
||||
"uuid": "2f1de2e1-9fe8-457c-9a99-26c611fc6b64",
|
||||
"name": "mlgChaostom44"
|
||||
},
|
||||
{
|
||||
"uuid": "c76e4802-7f01-47cb-bc1b-16cadd736078",
|
||||
"name": "Weizenkumpel"
|
||||
}
|
||||
]
|
3
monitoring/compose.yml
Normal file
3
monitoring/compose.yml
Normal file
@ -0,0 +1,3 @@
|
||||
include:
|
||||
- grafana/compose.yml
|
||||
- prometheus/compose.yml
|
13
monitoring/grafana/compose.yml
Normal file
13
monitoring/grafana/compose.yml
Normal file
@ -0,0 +1,13 @@
|
||||
services:
|
||||
grafana:
|
||||
image: grafana/grafana-oss
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
user: '1000'
|
||||
volumes:
|
||||
- grafana-storage:/var/lib/grafana
|
||||
ports:
|
||||
- 3000:3000
|
||||
|
||||
volumes:
|
||||
grafana-storage: {}
|
0
monitoring/prometheus/.gitignore
vendored
Normal file
0
monitoring/prometheus/.gitignore
vendored
Normal file
9
monitoring/prometheus/compose.yml
Normal file
9
monitoring/prometheus/compose.yml
Normal file
@ -0,0 +1,9 @@
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
ports:
|
||||
- 9090:9090
|
19
monitoring/prometheus/prometheus.yml
Normal file
19
monitoring/prometheus/prometheus.yml
Normal file
@ -0,0 +1,19 @@
|
||||
global:
|
||||
scrape_interval: 10s
|
||||
|
||||
scrape_configs:
|
||||
# This instance scraper
|
||||
- job_name: 'prometheus'
|
||||
static_configs:
|
||||
- targets:
|
||||
- prometheus:9090
|
||||
|
||||
# Server Scrapers
|
||||
- job_name: 'mc-server'
|
||||
static_configs:
|
||||
- targets: ['100.113.167.128:9100']
|
||||
labels:
|
||||
instance: 'Fallback'
|
||||
- targets: ['100.80.35.55:9100']
|
||||
labels:
|
||||
instance: 'Main'
|
22
proxy/compose.yml
Normal file
22
proxy/compose.yml
Normal file
@ -0,0 +1,22 @@
|
||||
services:
|
||||
proxy:
|
||||
container_name: proxy
|
||||
image: itzg/mc-proxy
|
||||
environment:
|
||||
TYPE: VELOCITY
|
||||
DEBUG: false
|
||||
OVERRIDE_ICON: true
|
||||
VELOCITY_VERSION: latest
|
||||
VELOCITY_BUILD_ID: 450
|
||||
PLUGINS: https://cdn.modrinth.com/data/p1ewR5kV/versions/Dubg3nLw/unifiedmetrics-platform-velocity-0.3.8.jar
|
||||
volumes:
|
||||
- ./server-icon.png:/server/server-icon.png
|
||||
- ./velocity.toml:/config/velocity.toml:ro
|
||||
- ./forwarding.secret:/config/forwarding.secret:ro
|
||||
- ./unifiedmetrics:/plugins/unifiedmetrics
|
||||
- proxy:/server
|
||||
ports:
|
||||
- 25565:25565
|
||||
|
||||
volumes:
|
||||
proxy: {}
|
1
proxy/forwarding.secret
Normal file
1
proxy/forwarding.secret
Normal file
@ -0,0 +1 @@
|
||||
bGAJSlLeA4Wf
|
BIN
proxy/server-icon.png
Normal file
BIN
proxy/server-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.7 KiB |
14
proxy/unifiedmetrics/config.yml
Normal file
14
proxy/unifiedmetrics/config.yml
Normal file
@ -0,0 +1,14 @@
|
||||
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
|
16
proxy/unifiedmetrics/driver/prometheus.yml
Normal file
16
proxy/unifiedmetrics/driver/prometheus.yml
Normal file
@ -0,0 +1,16 @@
|
||||
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
|
159
proxy/velocity.toml
Normal file
159
proxy/velocity.toml
Normal file
@ -0,0 +1,159 @@
|
||||
# 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 = "<yellow>There is no </yellow><b><dark_purple>Garde Studios</dark_purple></b> <color:#1cff27>Minecraft Server</color><yellow>!</yellow>"
|
||||
|
||||
# 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 = 20
|
||||
|
||||
# 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 = "100.80.35.55:30000"
|
||||
fallback = "localhost:30000"
|
||||
|
||||
|
||||
# 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
|
Loading…
Reference in New Issue
Block a user