Compare commits
1 Commits
a460c49fc9
...
254256fc56
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
254256fc56 |
@ -1,60 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Linking your account"
|
|
||||||
folder: "Guides"
|
|
||||||
icon: "link"
|
|
||||||
---
|
|
||||||
|
|
||||||
MHSF uses a safe & secure system to link your account that **doesn't use your Microsoft account in any way**. MHSF uses a simple system of logging into a server, and then putting a code into the website.
|
|
||||||
|
|
||||||
<Separator />
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- An active account with MHSF (either linked through GitHub or Discord, or just a standard email account)
|
|
||||||
- A Minecraft Java Edition account (Bedrock accounts are not guaranteed to work, and could malfunction at some times)
|
|
||||||
|
|
||||||
## Linking
|
|
||||||
|
|
||||||
<Steps>
|
|
||||||
<Step title="Go to your account settings">
|
|
||||||
Hit your profile on the top, and go to the settings
|
|
||||||
</Step>
|
|
||||||
<Step title="Hit link account button">
|
|
||||||
If your account hasn't already been linked, you should be able to hit the
|
|
||||||
Link button.
|
|
||||||
</Step>
|
|
||||||
<Step title="Pick a server">
|
|
||||||
You can pick either one of these options: - **CoreBoxx**, a popular box
|
|
||||||
server, is also a MHSF partner who has partnered to add the plugin to allow
|
|
||||||
you to link through the server. The server should be online all day, and is
|
|
||||||
recommended to use. - **MHSFPV** was a server designed for only linking.
|
|
||||||
This option is not recommended because **the server is always offline** and
|
|
||||||
must be turned on manually.
|
|
||||||
</Step>
|
|
||||||
<Step title="Join your chosen server">
|
|
||||||
Join the server using either `CoreBoxx.minehut.gg` or `MHSFPV.minehut.gg`
|
|
||||||
<Info>
|
|
||||||
Like said above, MHSFPV will most likely need to be turned on via the
|
|
||||||
lobby.
|
|
||||||
</Info>
|
|
||||||
If using CoreBoxx, type the `/mhsf` command.
|
|
||||||
<Warning>
|
|
||||||
If either server denies you saying you were already linked, and you were
|
|
||||||
linked before, hit the "Force unlink" link in the "Unlink" section. This
|
|
||||||
is a known bug.
|
|
||||||
</Warning>
|
|
||||||
</Step>
|
|
||||||
<Step title="Input code from server into MHSF">
|
|
||||||
Use the code from this server and input it into MHSF, and then submit.
|
|
||||||
</Step>
|
|
||||||
<Step title="You're linked!">You should be linked.</Step>
|
|
||||||
</Steps>
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|
|
||||||
You can do many things with a linked account:
|
|
||||||
|
|
||||||
- [Own a server](/guides/owning-a-server)
|
|
||||||
- [Customize a server](/guides/customization)
|
|
||||||
|
|
||||||
More will be coming in future updates, however the only thing you can do with a linked account is server-based functions.
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2025 dvelo
|
Copyright (c) 2024 dvelo
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
33
apps/www/docs/advanced/achievements.mdx
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: "Achievement Collection"
|
||||||
|
folder: "Advanced"
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
# Achievements
|
||||||
|
Achievements are a page that every server gets which contains certain requirements which could be embedded in an servers history.
|
||||||
|
|
||||||
|
<Separator/>
|
||||||
|
|
||||||
|
These achievements are accessable using the "Achievements" tab on the left of any server page.
|
||||||
|
Achievements are *not* collected instantly, and are collected every 12 hours when the server is online (this is not timezone dependent).
|
||||||
|
There are currently 4 possible achievements to get, ranging from easiest to hardest.
|
||||||
|
|
||||||
|
## 1 thousand favorites achievement
|
||||||
|
After getting 1 thousand favorites on MHSF, and your server is online during the achievement collection, *you will get this achievement showing* when you got **1,000 users to favorite your server**.
|
||||||
|
<AchievementPreview title="has1kFavorites"/>
|
||||||
|
|
||||||
|
## 1 thousand total joins achievement
|
||||||
|
After getting 1 thousand total joins on Minehut, and your server is online during the achievement collection, *you will get this achievement showing* when you got **1,000 users to join your server**.
|
||||||
|
<br/> Here is a preview:
|
||||||
|
<AchievementPreview title="has1kTotalJoins"/>
|
||||||
|
|
||||||
|
## 100 thousand favorites achievement
|
||||||
|
After getting 100 thousand favorites on MHSF, and your server is online during the achievement collection, *you will get this achievement showing* when you got **100 thousand users to favorite your server**.
|
||||||
|
<br/> Here is a preview:
|
||||||
|
<AchievementPreview title="has100kFavorites"/>
|
||||||
|
|
||||||
|
## 100 thousand total joins achievement
|
||||||
|
After getting 100 thousand total joins on Minehut, and your server is online during the achievement collection, *you will get this achievement showing* when you got **100 thousand users to join your server**.
|
||||||
|
<br/> Here is a preview:
|
||||||
|
<AchievementPreview title="has100kTotalJoins"/>
|
||||||
35
apps/www/docs/advanced/command-bar.mdx
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
title: "Using the Command-bar"
|
||||||
|
folder: "Advanced"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Using the Command-bar
|
||||||
|
|
||||||
|
The command-bar has many mods and is a great tool for power-users to use as its built to be fast, while showing optimal information to the scenario
|
||||||
|
|
||||||
|
<Separator />
|
||||||
|
|
||||||
|
## Triggering the command-bar
|
||||||
|
|
||||||
|
There are two ways to trigger the command bar, using `Ctrl+K` and <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>K</kbd>. Both put you in a command-bar, however when using `Ctrl+K`, you go into a general page with other settings.
|
||||||
|
Using <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>K</kbd> opens a server viewer, and this may be faster then going through the general page.
|
||||||
|
|
||||||
|
## Functions using Ctrl+K
|
||||||
|
|
||||||
|
- **Servers** opens a server list, same as <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>K</kbd>
|
||||||
|
- **Sort Servers** allows you to go into a sorted server list quickly
|
||||||
|
- **Links** shows links useful for MHSF
|
||||||
|
- **Pick Random Server** picks a random server and shows the user what that server is, is similar to the one on [the server list](/)
|
||||||
|
<br /> <br />
|
||||||
|
**Profile (requires log-in):**
|
||||||
|
- **Favorites** shows the user their favorited servers
|
||||||
|
- **User Settings** shows the user the settings for Clerk
|
||||||
|
|
||||||
|
## Servers
|
||||||
|
|
||||||
|
This view shows the most popular 50 servers, and when searching, you can search for any server that exists (offline or online).
|
||||||
|
When clicking on a server, you see a simple view showing information about the server, along with a link to the server page.
|
||||||
|
|
||||||
|
## Trigger from information popover
|
||||||
|
|
||||||
|
Click the top-right info button, and click Open Commands. This will open the same `Ctrl+K` command-bar, if you would like to use it on mobile.
|
||||||
94
apps/www/docs/advanced/external.mdx
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
---
|
||||||
|
title: "Troubleshooting: Making external servers on Minehut"
|
||||||
|
folder: "Advanced"
|
||||||
|
---
|
||||||
|
|
||||||
|
# External Servers on Minehut
|
||||||
|
I think creating external servers on Minehut is an advanced subject, and it is not documented well enough for the circumstances that
|
||||||
|
might occur with server owners. This is a [extension/rephrasing of the offical wiki guide](Wiki:External). All points in **bold** are things you shouldn't miss, and are commonly misread.
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<Separator/>
|
||||||
|
_Note: This is an unoffical guide, but the offical way of connecting! This is safe!_
|
||||||
|
## Getting started
|
||||||
|
You must pick a host that allows the following when making external servers:
|
||||||
|
- **Editing server flags** Editing flags for the server to run is essential. There are many cases where you were not able to continue because your provider was resetting your flags back
|
||||||
|
- **A supported server software** For standalone servers, you must run on [Paper](https://papermc.io/software/paper). For proxy networks, you can use [Velocity](https://velocitypowered.com/), [Waterfall](https://papermc.io/software/waterfall) & [Lilypad](https://www.lilypadmc.org/). **BungeeCord is not supported by any means!**
|
||||||
|
|
||||||
|
Minehut offically recommends Velocity, which you can find instructions [here](https://docs.papermc.io/velocity/getting-started) to get going! If you do not wish to use a proxy, using Paper is recommended, which you can find a guide [here](https://docs.papermc.io/paper/getting-started).
|
||||||
|
Before doing below, **make sure your proxy _actually works!_**
|
||||||
|
|
||||||
|
## Changing flags
|
||||||
|
To ensure that Minehut can properly connect your players to your server, you need to add flags when booting up your server. These are commonly in `start.bat` or `start.sh` for Linux-based hosts. **Players cannot join your server from Minehut without adding these flags!**
|
||||||
|
|
||||||
|
|
||||||
|
### Velocity
|
||||||
|
Add the following `sessionserver` flag to your start script:
|
||||||
|
```
|
||||||
|
-Dmojang.sessionserver=https://api.minehut.com/mitm/proxy/session/minecraft/hasJoined
|
||||||
|
```
|
||||||
|
All flags put together should look like the following:
|
||||||
|
```
|
||||||
|
java -Dmojang.sessionserver=https://api.minehut.com/mitm/proxy/session/minecraft/hasJoined -jar velocity.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
### Paper - standalone
|
||||||
|
Like said above, if you run a proxy, add the flags for Velocity. **Adding both the Velocity (or any other proxy server) & Paper flags will cause your server to be unauthenticatable!** <br/>
|
||||||
|
Add the following `auth.host`, `account.host`, `services.host` & `session.host` flags:
|
||||||
|
```
|
||||||
|
-Dminecraft.api.auth.host=https://authserver.mojang.com/
|
||||||
|
-Dminecraft.api.account.host=https://api.mojang.com/
|
||||||
|
-Dminecraft.api.services.host=https://api.minecraftservices.com/
|
||||||
|
-Dminecraft.api.session.host=https://api.minehut.com/mitm/proxy
|
||||||
|
```
|
||||||
|
All the script together
|
||||||
|
```
|
||||||
|
java -Dminecraft.api.auth.host=https://authserver.mojang.com/ -Dminecraft.api.account.host=https://api.mojang.com/ -Dminecraft.api.services.host=https://api.minecraftservices.com/ -Dminecraft.api.session.host=https://api.minehut.com/mitm/proxy -jar paper.jar
|
||||||
|
```
|
||||||
|
**Along with this,** make sure to set the `enforce-secure-profile` flag in the `server.properties` file to `false`.
|
||||||
|
```
|
||||||
|
enable-status=true
|
||||||
|
# Set this to false!
|
||||||
|
enforce-secure-profile=false
|
||||||
|
enforce-whitelist=false
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Lilypad
|
||||||
|
Set the following environment variable `LILYPAD_MOJANG_SESSIONSERVER_URL` to `https://api.minehut.com/mitm/proxy/session/minecraft/hasJoined`. Environment variables are set as a seperate command in the start script:
|
||||||
|
```
|
||||||
|
LILYPAD_MOJANG_SESSIONSERVER_URL="https://api.minehut.com/mitm/proxy/session/minecraft/hasJoined"
|
||||||
|
```
|
||||||
|
If above doesn't work, try this:
|
||||||
|
```
|
||||||
|
export LILYPAD_MOJANG_SESSIONSERVER_URL="https://api.minehut.com/mitm/proxy/session/minecraft/hasJoined"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Enable Proxy Protocol
|
||||||
|
_Note: Skip this step if you're using [TCPShield](https://tcpshield.com/) for DDoS protection._
|
||||||
|
|
||||||
|
Enable proxy protocol in your proxy's configuration file:
|
||||||
|
### Velocity
|
||||||
|
|
||||||
|
In `velocity.toml` under advanced, set
|
||||||
|
```
|
||||||
|
haproxy-protocol = true
|
||||||
|
```
|
||||||
|
### Waterfall
|
||||||
|
|
||||||
|
In `config.yml` under listeners, set
|
||||||
|
```
|
||||||
|
proxy_protocol: true
|
||||||
|
```
|
||||||
|
### Paper
|
||||||
|
|
||||||
|
In `config/paper-global.yml` under proxies, set
|
||||||
|
```
|
||||||
|
proxy-protocol: true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Thats it!
|
||||||
|
After this, there are mostly no more common issues. Continue on [the wiki](Wiki:External#Connect_Your_External_Server_Plan_on_Minehut)!
|
||||||
|
|
||||||
|
## Have any issues?
|
||||||
|
Go to the offical <Discord/> Minehut Discord server and go into the [#ask-for-help](https://discord.com/channels/239599059415859200/1014801630295760897) channel and create a thread.
|
||||||
@ -1,13 +1,12 @@
|
|||||||
---
|
---
|
||||||
title: "Tech-stack"
|
title: "Tech-stack"
|
||||||
folder: "Advanced"
|
folder: "Advanced"
|
||||||
icon: "layer-group"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# Teck Stack of MHSF
|
||||||
The tech stack of MHSF is relatively modern to ensure MHSF keeps up with standards set for accessibility and usability.
|
The tech stack of MHSF is relatively modern to ensure MHSF keeps up with standards set for accessibility and usability.
|
||||||
|
|
||||||
## Front-end
|
## Front-end
|
||||||
|
|
||||||
- **React** is used as a way to replicate components already used, and use the eco-system of pre-existing components
|
- **React** is used as a way to replicate components already used, and use the eco-system of pre-existing components
|
||||||
- **shadcn/ui** is the UI framework used to keep the whole website consistent.
|
- **shadcn/ui** is the UI framework used to keep the whole website consistent.
|
||||||
- **Contentlayer** manages all the pages used for documentation
|
- **Contentlayer** manages all the pages used for documentation
|
||||||
@ -15,12 +14,11 @@ The tech stack of MHSF is relatively modern to ensure MHSF keeps up with standar
|
|||||||
- **Sonner** provides the Toast used for MHSF
|
- **Sonner** provides the Toast used for MHSF
|
||||||
|
|
||||||
## Back-end
|
## Back-end
|
||||||
|
|
||||||
- **Inngest** runs periodic tasks
|
- **Inngest** runs periodic tasks
|
||||||
- **MongoDB** is the database of choice for MHSF
|
- **MongoDB** is the database of choice for MHSF
|
||||||
|
|
||||||
## Both
|
## Both
|
||||||
|
|
||||||
- **Clerk** is used for authentication of users
|
- **Clerk** is used for authentication of users
|
||||||
- **Next.js** is used to make sure API endpoints and front-end endpoints are on the same domain, along with lots of convient features
|
- **Next.js** is used to make sure API endpoints and front-end endpoints are on the same domain, along with lots of convient features
|
||||||
- **Vercel** is hosting MHSF (along with non-tracking analytics)
|
- **Vercel** is hosting MHSF (along with non-tracking analytics)
|
||||||
|
|
||||||
@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: "Getting Started"
|
title: "Getting Started"
|
||||||
icon: "play"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<img src="/docs/content/main-banner.png" />
|
# Getting Started to MHSF
|
||||||
|
|
||||||
MHSF is an open-source wrapper for the traditional Minehut server list, either in the lobby or the one [built-in to the minehut.com website directly](https://app.minehut.com/servers).
|
MHSF is an open-source wrapper for the traditional Minehut server list, either in the lobby or the one [built-in to the minehut.com website directly](https://app.minehut.com/servers).
|
||||||
The way MHSF communicates with Minehut is using the closed Minehut API discovered by using DevTools on the original Minehut page.
|
The way MHSF communicates with Minehut is using the closed Minehut API discovered by using DevTools on the original Minehut page.
|
||||||
@ -29,4 +28,4 @@ No. Your Minehut account is not associated with your MHSF one, and consequently,
|
|||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
If you'd like to use MHSF, go to the server list [here](/) to try it out! You may also give MHSF a star on GitHub if you feel like this project deserves it.
|
If you'd like to use MHSF, go to the server list [here](Special:Root) to try it out! You may also give MHSF a star on GitHub if you feel like this project deserves it.
|
||||||
26
apps/www/docs/guides/customization.mdx
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
title: "Customization"
|
||||||
|
folder: "Guides"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Customize your server
|
||||||
|
Customizing your server is very easy after you have [linked your account](Docs:guides/linking). Make sure you have done that before then.
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
Make sure you've also [owned your server](Docs:guides/owning-a-server).
|
||||||
|
|
||||||
|
## Customization Types
|
||||||
|
### Discord Server
|
||||||
|
Enable the server widget in your Discord server settings, and copy and paste in the Discord server ID, and your Discord server will appear!
|
||||||
|
|
||||||
|
### Banner
|
||||||
|
Your server must have an image from [Imgur](https://imgur.com), and can be any image type that can be rendered on the web. Copy and paste the link (not the link after uploading the image, but by right clicking and hitting "Copy Image Address") into the input box!
|
||||||
|
|
||||||
|
### Color Scheme
|
||||||
|
You can pick any color in the box and choosing a color scheme to show on your server specificly.
|
||||||
|
|
||||||
|
### Description
|
||||||
|
You can use Markdown formatting to add a description to describe what your server is.
|
||||||
|
|
||||||
|
## Thats it!
|
||||||
|
If you have additional customization types or other things you'd like us to add, [feel free to hit us with an issue on GitHub!](Special:GitHub)
|
||||||
29
apps/www/docs/guides/linking.mdx
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
title: "Linking your account"
|
||||||
|
folder: "Guides"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Linking your Minecraft account
|
||||||
|
|
||||||
|
MHSF uses a safe & secure system to link your account that **doesn't use your Microsoft account in any way**. MHSF uses a simple system of logging into a server, and then putting a code into the website.
|
||||||
|
|
||||||
|
<Separator />
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- An active account with MHSF (either linked through GitHub or Discord, or just a standard email account)
|
||||||
|
- A Minecraft Java Edition account (Bedrock accounts are not guaranteed to work, and could malfunction at some times)
|
||||||
|
|
||||||
|
## Linking
|
||||||
|
|
||||||
|
To get started, go into your account settings (your profile picture in top-right, and Profile & Security) and click Link Account.
|
||||||
|
Login to the server `MHSFPV.minehut.gg`. (its on a free plan, you may have to start it in the lobby) Take the code shown in chat, and put it into the OTP box. Hit Submit, and if the code is correct, your account will be linked! Congratulations!
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
You can do many things with a linked account:
|
||||||
|
|
||||||
|
- [Own a server](Docs:guides/owning-a-server)
|
||||||
|
- [Customize a server](Docs:guides/customization)
|
||||||
|
|
||||||
|
More will be coming in future updates, however the only thing you can do with a linked account is server-based functions.
|
||||||
21
apps/www/docs/guides/owning-a-server.mdx
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: "Own a server"
|
||||||
|
folder: "Guides"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Owning a server
|
||||||
|
|
||||||
|
Owning a server is quite simple and allows you to [customize your server](/docs/guides/customization) and make it stand out from other servers. Before owning your server, make sure you agree to the [ECA](Docs:legal/external-content-agreement).
|
||||||
|
|
||||||
|
## Linking
|
||||||
|
|
||||||
|
Find the server you would like to own (either by looking for it, or using the keyboard shortcut <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>K</kbd> and searching for it), and make sure your account has [already been linked with your Minecraft account](Docs:guides/linking). Go to the server, and hit the Customization tab. If the owner of the server, and the user your linked to match, you will gain access to the server.
|
||||||
|
If they match, you should see a button named Click to own. Press that button, and you should automagically own the server. Congratulations!
|
||||||
|
|
||||||
|
## I can't link my server, because my server doesn't have a author
|
||||||
|
|
||||||
|
Your server must have an author in-order to be automagically linked, and if it doesn't have an author, that means you will have to manually link your server. To do that, make an issue on GitHub, showing that your server has no author, but needs to be linked. Show proof that you own the server, along with your account username, and your account will own the server you need.
|
||||||
|
|
||||||
|
## There is an error while linking my server!
|
||||||
|
This most likely is because the Minehut API is blocking the server-side request to verify your the owner of that server, or your server [has no author](#i-cant-link-my-server-because-my-server-doesnt-have-a-author).
|
||||||
|
Try again in 30 minute intervals, or just make an issue on GitHub to link your server.
|
||||||
13
apps/www/docs/guides/reporting-server.mdx
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
title: "Reporting a server"
|
||||||
|
folder: "Guides"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Reporting a server
|
||||||
|
|
||||||
|
If you believe a server that you've seen is under breach of the [ECA Agreement](Docs:legal/external-content-agreement), you may request the server in question to be taken down.
|
||||||
|
Make sure you are logged into a account, and go to the server page and hit the customization tab. Hit the Report button, and add a reason to your report.
|
||||||
|
Your report will be processed and the appropriate action will be taken.
|
||||||
|
|
||||||
|
## Issue inside the server
|
||||||
|
If an issue is inside of the server, because MHSF doesn't provide the server list source (Minehut API), you must [go to Minehut and make a ticket](https://support.minehut.com/hc/en-us/requests/new?tf_subject=Reporting%20Server&tf_27062997154195=reports_appeals&tf_27063229498259=report_server).
|
||||||
51
apps/www/docs/legal/external-content-agreement.mdx
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
title: "External Content Agreement"
|
||||||
|
folder: "Legal"
|
||||||
|
lastUpdated: "Sep. 10th 2024"
|
||||||
|
---
|
||||||
|
|
||||||
|
# External Content Agreement (ECA)
|
||||||
|
|
||||||
|
By making external content available for anyone to see, there needs to
|
||||||
|
be an agreement to keep MHSF ("Minehut Server List") a friendly place
|
||||||
|
for anyone to look at. _As such, this agreement outlines what you can't and can do, when making content on the platform._ The goal by making an agreement like this, is not to make you worried
|
||||||
|
what you can upload, its just showing what the limits of content
|
||||||
|
uploaded onto the platform are.
|
||||||
|
|
||||||
|
## Source Code
|
||||||
|
|
||||||
|
The source code for MHSF is defined by the [MIT License](Special:GitHub/blob/main/LICENSE). You are free to use MHSF for commercial use, and you may modify the software however you'd like. Taking copies of the software (aka _"forking"_) is also freely allowed.
|
||||||
|
|
||||||
|
## What your limits are
|
||||||
|
|
||||||
|
When creating content, if its a matter of making a profile picture,
|
||||||
|
or editing the description for a server, (and more), you must follow
|
||||||
|
the underlying agreements below.<br/>
|
||||||
|
For making banners & descriptions, you must follow [Minehuts Terms of Service](Wiki:Rules) _as all content made is associated to Minehut (as the server is mostly on a community for Minehut)._<br/>
|
||||||
|
For making Discord server embeds, you must follow [Discords Terms of Service](https://discord.com/terms/) _as all content made is associated to Discord._
|
||||||
|
|
||||||
|
### All other content
|
||||||
|
|
||||||
|
For all other content, they must follow the following:
|
||||||
|
|
||||||
|
- No inappropriate/adult images
|
||||||
|
- No swear words of any kind or slurs
|
||||||
|
- Endorsing unethical client modifications (aka cheating or hacking)
|
||||||
|
|
||||||
|
## When you agree to the ECA
|
||||||
|
|
||||||
|
When you add customization to your server, or add a profile picture (linking an account is included), you must follow the ECA.
|
||||||
|
|
||||||
|
## When linking an account
|
||||||
|
|
||||||
|
When linking an account, you must follow the privacy policy and terms of service to the associated service that you linked your MHSF account to. Additionally, if you link an external account{" "}
|
||||||
|
_after_ account creation, everything said before is still true.
|
||||||
|
|
||||||
|
## Violations
|
||||||
|
|
||||||
|
Violations from above have 1 warning. Your first interaction is a warning by removing the content from MHSF, and your 2nd is banning/deleting your account. (some violations are an instant delete)
|
||||||
|
|
||||||
|
## Reporting
|
||||||
|
|
||||||
|
If you personally see a violation of the ECA, you can report it by clicking the customization tab on a server, and hitting the Report
|
||||||
|
button (it doesn't appear when the server was never owned). If you misuse this feature, you may get your account deleted.
|
||||||
30
apps/www/docs/reading.mdx
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
title: "Reading the docs"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Reading the docs
|
||||||
|
The documentation in MHSF has some special symbols used in the docs that might be useful to know.
|
||||||
|
|
||||||
|
<Separator/>
|
||||||
|
|
||||||
|
## Icons
|
||||||
|
When looking at a link, there will be symbols used that indicate where the link is going: *(these apply to the whole site)*
|
||||||
|
- <Notebook className="inline-block mb-1" size={20}/> indicates the link will link to the [official Minehut wiki](Wiki:/)
|
||||||
|
- <Book className="inline-block mb-1" size={20} /> indicates the link will link to another page on the docs
|
||||||
|
- <ExternalLink className="inline-block mb-1" size={20}/> indicates the link will go to an external site
|
||||||
|
|
||||||
|
When contributing, these links are as follows:
|
||||||
|
```
|
||||||
|
Wiki:<wiki url after https://minehut.wiki.gg/wiki/>
|
||||||
|
Docs:<docs url after /docs/>
|
||||||
|
Special:Root (links back to /)
|
||||||
|
https://example.com
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
[Ranks](Wiki:Ranks)
|
||||||
|
[Getting Started](Docs:Getting-started)
|
||||||
|
https://google.com
|
||||||
|
```
|
||||||
|
|
||||||
|
The icons above will be automatically added when using the syntax above. <br/>
|
||||||
|
<small>The source code for above is stored [here](Special:GitHub/edit/main/src/components/misc/Link.tsx)</small>
|
||||||
64
apps/www/next.config.mjs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* MHSF, Minehut Server List
|
||||||
|
* All external content is rather licensed under the ECA Agreement
|
||||||
|
* located here: https://mhsf.app/docs/legal/external-content-agreement
|
||||||
|
*
|
||||||
|
* All code under MHSF is licensed under the MIT License
|
||||||
|
* by open source contributors
|
||||||
|
*
|
||||||
|
* Copyright (c) 2025 dvelo
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
* deal in the Software without restriction, including without limitation the
|
||||||
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
images: {
|
||||||
|
remotePatterns: [
|
||||||
|
{
|
||||||
|
protocol: "https",
|
||||||
|
hostname: "img.clerk.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
async redirects() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
source: "/docs",
|
||||||
|
destination: "/docs/getting-started",
|
||||||
|
permanent: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
|
eslint: {
|
||||||
|
ignoreDuringBuilds: true,
|
||||||
|
},
|
||||||
|
typescript: {
|
||||||
|
ignoreBuildErrors: true,
|
||||||
|
},
|
||||||
|
output: "standalone",
|
||||||
|
experimental: {
|
||||||
|
serverActions: {
|
||||||
|
allowedOrigins: ["localhost:3000", "mhsf.app"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
@ -46,7 +46,7 @@ export async function generateMetadata(
|
|||||||
const json = await (
|
const json = await (
|
||||||
await fetch("https://api.minehut.com/server/" + server + "?byName=true", {
|
await fetch("https://api.minehut.com/server/" + server + "?byName=true", {
|
||||||
headers: {
|
headers: {
|
||||||
"X-Website-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
"User-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
).json();
|
).json();
|
||||||
|
|||||||
@ -51,7 +51,7 @@ export async function generateMetadata(
|
|||||||
const json = await (
|
const json = await (
|
||||||
await fetch("https://api.minehut.com/server/" + server + "?byName=true", {
|
await fetch("https://api.minehut.com/server/" + server + "?byName=true", {
|
||||||
headers: {
|
headers: {
|
||||||
"X-Website-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
"User-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
).json();
|
).json();
|
||||||
|
|||||||
20
apps/www/src/app/global-error.tsx
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
export default function GlobalError({
|
||||||
|
error,
|
||||||
|
reset,
|
||||||
|
}: {
|
||||||
|
error: Error & { digest?: string };
|
||||||
|
reset: () => void;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<h1>Something went wrong!</h1>
|
||||||
|
<button onClick={() => reset()}>Try again</button>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
45
apps/www/src/app/layout.tsx
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* MHSF, Minehut Server List
|
||||||
|
* All external content is rather licensed under the ECA Agreement
|
||||||
|
* located here: https://mhsf.app/docs/legal/external-content-agreement
|
||||||
|
*
|
||||||
|
* All code under MHSF is licensed under the MIT License
|
||||||
|
* by open source contributors
|
||||||
|
*
|
||||||
|
* Copyright (c) 2025 dvelo
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
* deal in the Software without restriction, including without limitation the
|
||||||
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import "./globals.css";
|
||||||
|
|
||||||
|
export default function RootLayout({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body>
|
||||||
|
<main>{children}</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
49
apps/www/src/app/not-found.tsx
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* MHSF, Minehut Server List
|
||||||
|
* All external content is rather licensed under the ECA Agreement
|
||||||
|
* located here: https://mhsf.app/docs/legal/external-content-agreement
|
||||||
|
*
|
||||||
|
* All code under MHSF is licensed under the MIT License
|
||||||
|
* by open source contributors
|
||||||
|
*
|
||||||
|
* Copyright (c) 2025 dvelo
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
* deal in the Software without restriction, including without limitation the
|
||||||
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default async function NotFound() {
|
||||||
|
return (
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<div className="min-h-screen flex items-center justify-center flex-col">
|
||||||
|
<div className="text-center">
|
||||||
|
<h1 className="text-4xl font-bold mb-4">404 - Page Not Found</h1>
|
||||||
|
<p className="mb-4">
|
||||||
|
The page you are looking for could not be found.
|
||||||
|
</p>
|
||||||
|
<a href="/" className="text-blue-500 hover:underline">
|
||||||
|
Return to Home
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -92,7 +92,7 @@ export default function AfterServerView({ server }: { server: string }) {
|
|||||||
}
|
}
|
||||||
fetch("https://api.minehut.com/server/" + server + "?byName=true", {
|
fetch("https://api.minehut.com/server/" + server + "?byName=true", {
|
||||||
headers: {
|
headers: {
|
||||||
"X-Website-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
"User-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
||||||
},
|
},
|
||||||
}).then((c) => c.json().then((n) => setServerObject(n.server)));
|
}).then((c) => c.json().then((n) => setServerObject(n.server)));
|
||||||
getMinehutIcons().then((i) => {
|
getMinehutIcons().then((i) => {
|
||||||
|
|||||||
@ -64,9 +64,7 @@ export default function Banner({ server }: { server: string }) {
|
|||||||
src={
|
src={
|
||||||
bannerURL.startsWith("https://i.imgur.com")
|
bannerURL.startsWith("https://i.imgur.com")
|
||||||
? bannerURL
|
? bannerURL
|
||||||
: "https://wsrv.nl/?url=" +
|
: "wsrv.nl/?url=" + encodeURIComponent(bannerURL) + "?n=-1"
|
||||||
encodeURIComponent(bannerURL) +
|
|
||||||
"?n=-1"
|
|
||||||
}
|
}
|
||||||
className="rounded align-middle block ml-auto mr-auto absolute left-0 z-0 w-full object-fill"
|
className="rounded align-middle block ml-auto mr-auto absolute left-0 z-0 w-full object-fill"
|
||||||
alt="User-provided banner for this server."
|
alt="User-provided banner for this server."
|
||||||
|
|||||||
@ -178,7 +178,7 @@ export default function ServerCustomize({
|
|||||||
{serverOwned && !userOwned && (
|
{serverOwned && !userOwned && (
|
||||||
<div>
|
<div>
|
||||||
<div className="font-bold">
|
<div className="font-bold">
|
||||||
Is this server in violation of the Rules?
|
Is this server in violation of the ECA?
|
||||||
</div>
|
</div>
|
||||||
Is this server in violation of the{" "}
|
Is this server in violation of the{" "}
|
||||||
<Link href="/docs/legal/rules">MHSF Rules</Link>? You can report the
|
<Link href="/docs/legal/rules">MHSF Rules</Link>? You can report the
|
||||||
@ -193,10 +193,12 @@ export default function ServerCustomize({
|
|||||||
<DialogDescription>
|
<DialogDescription>
|
||||||
This will send a notification to MHSF maintainers. This
|
This will send a notification to MHSF maintainers. This
|
||||||
server must be in violation of the{" "}
|
server must be in violation of the{" "}
|
||||||
<Link href="/docs/legal/rules">Rules</Link> to be a valid
|
<Link href="/docs/legal/external-content-agreement">
|
||||||
report. Typical response times include 1 hour to 1 day, and
|
ECA
|
||||||
you will not be notified if your report is successful or
|
</Link>{" "}
|
||||||
not.{" "}
|
to be a valid report. Typical response times include 1 hour
|
||||||
|
to 1 day, and you will not be notified if your report is
|
||||||
|
successful or not.{" "}
|
||||||
<b>
|
<b>
|
||||||
Please do not spam this form with mindless reports. If you
|
Please do not spam this form with mindless reports. If you
|
||||||
do, your account will be banned. We are not Minehut
|
do, your account will be banned. We are not Minehut
|
||||||
|
|||||||
@ -107,7 +107,6 @@ export default function LayoutPart({
|
|||||||
style={(size: number) => ({
|
style={(size: number) => ({
|
||||||
paddingTop: `${2 * size}rem`,
|
paddingTop: `${2 * size}rem`,
|
||||||
})}
|
})}
|
||||||
className="min-h-screen"
|
|
||||||
>
|
>
|
||||||
<NextTopLoader />
|
<NextTopLoader />
|
||||||
<ClientFadeIn>{children}</ClientFadeIn>
|
<ClientFadeIn>{children}</ClientFadeIn>
|
||||||
|
|||||||
@ -31,7 +31,6 @@
|
|||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { OnlineServer } from "./types/mh-server";
|
import { OnlineServer } from "./types/mh-server";
|
||||||
import MiniMessage from "minimessage-js";
|
import MiniMessage from "minimessage-js";
|
||||||
import { version } from "@/config/version";
|
|
||||||
|
|
||||||
var numberOfItemsInView = 20;
|
var numberOfItemsInView = 20;
|
||||||
|
|
||||||
@ -56,7 +55,7 @@ export default class ServersList {
|
|||||||
return new Promise((g, bc) => {
|
return new Promise((g, bc) => {
|
||||||
fetch("https://api.minehut.com/servers", {
|
fetch("https://api.minehut.com/servers", {
|
||||||
headers: {
|
headers: {
|
||||||
"X-Website-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
"User-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then((b) => {
|
.then((b) => {
|
||||||
|
|||||||
@ -54,7 +54,7 @@ export default class ServerSingle {
|
|||||||
return new Promise<boolean>((g, bc) => {
|
return new Promise<boolean>((g, bc) => {
|
||||||
fetch("https://api.minehut.com/server/" + this.name + "?byName=true", {
|
fetch("https://api.minehut.com/server/" + this.name + "?byName=true", {
|
||||||
headers: {
|
headers: {
|
||||||
"X-Website-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
"User-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then((d) => {
|
.then((d) => {
|
||||||
@ -65,7 +65,7 @@ export default class ServerSingle {
|
|||||||
if (this.online === true && skipOnline !== true) {
|
if (this.online === true && skipOnline !== true) {
|
||||||
fetch("https://api.minehut.com/servers", {
|
fetch("https://api.minehut.com/servers", {
|
||||||
headers: {
|
headers: {
|
||||||
"X-Website-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
"User-Agent": `MHSF ${version} (github.com/DeveloLongScript/MHSF)`,
|
||||||
},
|
},
|
||||||
}).then((l) =>
|
}).then((l) =>
|
||||||
l.json().then((o) => {
|
l.json().then((o) => {
|
||||||
|
|||||||
@ -29,12 +29,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { NextApiRequest, NextApiResponse } from "next";
|
import { NextApiRequest, NextApiResponse } from "next";
|
||||||
import { getAuth } from "@clerk/nextjs/server";
|
import { clerkClient, getAuth } from "@clerk/nextjs/server";
|
||||||
import { MongoClient } from "mongodb";
|
import { MongoClient } from "mongodb";
|
||||||
|
|
||||||
export default async function handler(
|
export default async function handler(
|
||||||
req: NextApiRequest,
|
req: NextApiRequest,
|
||||||
res: NextApiResponse,
|
res: NextApiResponse
|
||||||
) {
|
) {
|
||||||
const { userId } = getAuth(req);
|
const { userId } = getAuth(req);
|
||||||
const { server } = req.body;
|
const { server } = req.body;
|
||||||
@ -47,6 +47,12 @@ export default async function handler(
|
|||||||
if (!userId) {
|
if (!userId) {
|
||||||
return res.status(401).json({ error: "Unauthorized" });
|
return res.status(401).json({ error: "Unauthorized" });
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
(await (await clerkClient()).users.getUser(userId)).publicMetadata.player ==
|
||||||
|
undefined
|
||||||
|
) {
|
||||||
|
return res.status(401).json({ error: "Account not linked" });
|
||||||
|
}
|
||||||
const client = new MongoClient(process.env.MONGO_DB as string);
|
const client = new MongoClient(process.env.MONGO_DB as string);
|
||||||
await client.connect();
|
await client.connect();
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"redirects": [
|
"rewrites": [
|
||||||
{
|
{
|
||||||
"source": "/docs/:match*",
|
"source": "/docs/:match*",
|
||||||
"destination": "https://mhsf.mintlify.app/:match*"
|
"destination": "https://mhsf.mintlify.app/docs/:match*"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,57 +7,48 @@
|
|||||||
"light": "#817abb",
|
"light": "#817abb",
|
||||||
"dark": "#c15281"
|
"dark": "#c15281"
|
||||||
},
|
},
|
||||||
"favicon": "/content/favicon.svg",
|
"favicon": "/docs/content/favicon.svg",
|
||||||
"navigation": {
|
"navigation": {
|
||||||
"global": {
|
|
||||||
"anchors": [
|
|
||||||
{
|
|
||||||
"anchor": "MHSF Update Discord",
|
|
||||||
"href": "https://discord.gg/QC2GfgWXVD",
|
|
||||||
"icon": "discord"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"tabs": [
|
"tabs": [
|
||||||
{
|
{
|
||||||
"tab": "Documentation",
|
"tab": "Documentation",
|
||||||
"groups": [
|
"groups": [
|
||||||
{
|
{
|
||||||
"group": "General",
|
"group": "General",
|
||||||
"pages": ["getting-started"]
|
"pages": ["docs/getting-started"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Guides",
|
"group": "Guides",
|
||||||
"pages": [
|
"pages": [
|
||||||
"guides/customization",
|
"docs/guides/customization",
|
||||||
"guides/linking",
|
"docs/guides/linking",
|
||||||
"guides/owning-a-server",
|
"docs/guides/owning-a-server",
|
||||||
"guides/reporting-server"
|
"docs/guides/reporting-server"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Advanced",
|
"group": "Advanced",
|
||||||
"pages": [
|
"pages": [
|
||||||
"advanced/achievements",
|
"docs/advanced/achievements",
|
||||||
"advanced/command-bar",
|
"docs/advanced/command-bar",
|
||||||
"advanced/tech-stack"
|
"docs/advanced/tech-stack"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"group": "Legal",
|
"group": "Legal",
|
||||||
"pages": ["legal/rules"]
|
"pages": ["docs/legal/rules"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tab": "Changelog",
|
"tab": "Changelog",
|
||||||
"pages": ["changelog"]
|
"pages": ["docs/changelog"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"logo": {
|
"logo": {
|
||||||
"light": "/content/icon-gl.svg",
|
"light": "/docs/content/icon-gl.svg",
|
||||||
"dark": "/content/icon-gd.svg"
|
"dark": "/docs/content/icon-gd.svg"
|
||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"links": [
|
"links": [
|
||||||
@ -1,27 +1,23 @@
|
|||||||
---
|
---
|
||||||
title: "Achievement Collection"
|
title: "Achievement Collection"
|
||||||
folder: "Advanced"
|
folder: "Advanced"
|
||||||
icon: "stars"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Achievements are a page that every server gets which contains certain requirements which could be embedded in an servers history.
|
Achievements are a page that every server gets which contains certain requirements which could be embedded in an servers history.
|
||||||
|
|
||||||
|
|
||||||
These achievements are accessable using the "Achievements" tab on the left of any server page.
|
These achievements are accessable using the "Achievements" tab on the left of any server page.
|
||||||
Achievements are _not_ collected instantly, and are collected every 12 hours when the server is online (this is not timezone dependent).
|
Achievements are *not* collected instantly, and are collected every 12 hours when the server is online (this is not timezone dependent).
|
||||||
There are currently 4 possible achievements to get, ranging from easiest to hardest.
|
There are currently 4 possible achievements to get, ranging from easiest to hardest.
|
||||||
|
|
||||||
## 1 thousand favorites achievement
|
## 1 thousand favorites achievement
|
||||||
|
After getting 1 thousand favorites on MHSF, and your server is online during the achievement collection, *you will get this achievement showing* when you got **1,000 users to favorite your server**.
|
||||||
After getting 1 thousand favorites on MHSF, and your server is online during the achievement collection, _you will get this achievement showing_ when you got **1,000 users to favorite your server**.
|
|
||||||
|
|
||||||
## 1 thousand total joins achievement
|
## 1 thousand total joins achievement
|
||||||
|
After getting 1 thousand total joins on Minehut, and your server is online during the achievement collection, *you will get this achievement showing* when you got **1,000 users to join your server**.
|
||||||
After getting 1 thousand total joins on Minehut, and your server is online during the achievement collection, _you will get this achievement showing_ when you got **1,000 users to join your server**.
|
|
||||||
|
|
||||||
## 100 thousand favorites achievement
|
## 100 thousand favorites achievement
|
||||||
|
After getting 100 thousand favorites on MHSF, and your server is online during the achievement collection, *you will get this achievement showing* when you got **100 thousand users to favorite your server**.
|
||||||
After getting 100 thousand favorites on MHSF, and your server is online during the achievement collection, _you will get this achievement showing_ when you got **100 thousand users to favorite your server**.
|
|
||||||
|
|
||||||
## 100 thousand total joins achievement
|
## 100 thousand total joins achievement
|
||||||
|
After getting 100 thousand total joins on Minehut, and your server is online during the achievement collection, *you will get this achievement showing* when you got **100 thousand users to join your server**.
|
||||||
After getting 100 thousand total joins on Minehut, and your server is online during the achievement collection, _you will get this achievement showing_ when you got **100 thousand users to join your server**.
|
|
||||||
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
title: "Using the Command-bar"
|
title: "Using the Command-bar"
|
||||||
folder: "Advanced"
|
folder: "Advanced"
|
||||||
icon: "terminal"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
The command-bar has many mods and is a great tool for power-users to use as its built to be fast, while showing optimal information to the scenario
|
The command-bar has many mods and is a great tool for power-users to use as its built to be fast, while showing optimal information to the scenario
|
||||||
|
|
||||||
<Separator />
|
<Separator />
|
||||||
23
docs/docs/advanced/tech-stack.mdx
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
title: "Tech-stack"
|
||||||
|
folder: "Advanced"
|
||||||
|
---
|
||||||
|
|
||||||
|
The tech stack of MHSF is relatively modern to ensure MHSF keeps up with standards set for accessibility and usability.
|
||||||
|
|
||||||
|
## Front-end
|
||||||
|
- **React** is used as a way to replicate components already used, and use the eco-system of pre-existing components
|
||||||
|
- **shadcn/ui** is the UI framework used to keep the whole website consistent.
|
||||||
|
- **Contentlayer** manages all the pages used for documentation
|
||||||
|
- **TailwindCSS** makes MHSF use (mostly) no CSS for better efficency
|
||||||
|
- **Sonner** provides the Toast used for MHSF
|
||||||
|
|
||||||
|
## Back-end
|
||||||
|
- **Inngest** runs periodic tasks
|
||||||
|
- **MongoDB** is the database of choice for MHSF
|
||||||
|
|
||||||
|
## Both
|
||||||
|
- **Clerk** is used for authentication of users
|
||||||
|
- **Next.js** is used to make sure API endpoints and front-end endpoints are on the same domain, along with lots of convient features
|
||||||
|
- **Vercel** is hosting MHSF (along with non-tracking analytics)
|
||||||
|
|
||||||
@ -1,6 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "Changelog"
|
title: "Changelog"
|
||||||
icon: "newspaper"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<Update label="v1.8.0" description="Feb 14, 2025">
|
<Update label="v1.8.0" description="Feb 14, 2025">
|
||||||
|
Before Width: | Height: | Size: 711 KiB After Width: | Height: | Size: 711 KiB |
|
Before Width: | Height: | Size: 623 KiB After Width: | Height: | Size: 623 KiB |
|
Before Width: | Height: | Size: 486 KiB After Width: | Height: | Size: 486 KiB |
|
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 342 KiB After Width: | Height: | Size: 342 KiB |
33
docs/docs/getting-started.mdx
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: "Getting Started"
|
||||||
|
---
|
||||||
|
|
||||||
|
<Frame>
|
||||||
|
<img src="/docs/content/main-banner.png" />
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
MHSF is an open-source wrapper for the traditional Minehut server list, either in the lobby or the one [built-in to the minehut.com website directly](https://app.minehut.com/servers).
|
||||||
|
The way MHSF communicates with Minehut is using the closed Minehut API discovered by using DevTools on the original Minehut page.
|
||||||
|
Along with this, there are entries that are completely third-party like for adding descriptions or banners.
|
||||||
|
|
||||||
|
## What is a wrapper?
|
||||||
|
|
||||||
|
Wrappers are usually free & open-source software that goes on-top of existing software that may be proprietary. There are many reasons for a wrapper to exist (privacy, automation, etc.), in MHSF's case, its because the Minehut server list provided by default just doesn't cut it.
|
||||||
|
Wrappers usually communicate using an API that was provided by the service its self, making software like MHSF completely legal.
|
||||||
|
|
||||||
|
## Why to use MHSF
|
||||||
|
|
||||||
|
- **Faster response times** MHSF is completely ad-free, and as a result of being open-source, constantly tries to cut down on unnecessary things slowing down the page.
|
||||||
|
- **Open-source & no tracking** As a result of being open-source, MHSF will never track or sell your data to advertisers. Anybody can look at the code, and can be verified to be completely secure.
|
||||||
|
- **Make your server stand out** Server owners can configure after appropriate verification banners, Discord widgets, descriptions & color schemes.
|
||||||
|
- **Customize your experience** Filters, sorts & different spacing settings can make your experience just how you like it while you are browsing servers.
|
||||||
|
- **Better & more intuitive UX/UI** UI is a big point for MHSF, using UI designed to be more user friendly, and to be more straight-forward then Minehut's
|
||||||
|
- **One focus** Because MHSF is only a server-list, it only has to be, _a server list!_ This means more updates and higher quality ones because all MHSF has to worry about, is the server list!
|
||||||
|
|
||||||
|
## Will you get banned for this?
|
||||||
|
|
||||||
|
No. Your Minehut account is not associated with your MHSF one, and consequently, you cannot be banned. There is no risk of getting banned by Minehut, as we are posing no threat to them. As long as you aren't spamming MHSF (or the API in general), you should be good.
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
If you'd like to use MHSF, go to the server list [here](Special:Root) to try it out! You may also give MHSF a star on GitHub if you feel like this project deserves it.
|
||||||
@ -1,39 +1,30 @@
|
|||||||
---
|
---
|
||||||
title: "Customization"
|
title: "Customization"
|
||||||
folder: "Guides"
|
folder: "Guides"
|
||||||
icon: "gear"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Customizing your server is very easy after you have [linked your account](/docs/guides/linking). Make sure you have done that before then.
|
Customizing your server is very easy after you have [linked your account](Docs:guides/linking). Make sure you have done that before then.
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
Make sure you've also [owned your server](Docs:guides/owning-a-server).
|
||||||
Make sure you've also [owned your server](/docs/guides/owning-a-server).
|
|
||||||
|
|
||||||
## Customization Types
|
## Customization Types
|
||||||
|
|
||||||
### Discord Server
|
### Discord Server
|
||||||
|
|
||||||
Enable the server widget in your Discord server settings, and copy and paste in the Discord server ID, and your Discord server will appear!
|
Enable the server widget in your Discord server settings, and copy and paste in the Discord server ID, and your Discord server will appear!
|
||||||
You can see the people inside of your server, and how many are online, along with a link to your server.
|
You can see the people inside of your server, and how many are online, along with a link to your server.
|
||||||
|
|
||||||
### Banner
|
### Banner
|
||||||
|
Your server can have an image from anywhere, and can be any *static* image type that can be rendered on the web. Copy and paste the link (not the link after uploading the image, but by right clicking and hitting "Copy Image Address") into the input box!
|
||||||
Your server can have an image from anywhere, and can be any _static_ image type that can be rendered on the web. Copy and paste the link (not the link after uploading the image, but by right clicking and hitting "Copy Image Address") into the input box!
|
|
||||||
|
|
||||||
<Warning>
|
<Warning>
|
||||||
Except for images hosted by Imgur, `wsrv.nl` is used to make sure users aren't
|
Except for images hosted by Imgur, `wsrv.nl` is used to make sure users aren't IP logged.
|
||||||
IP logged.
|
|
||||||
</Warning>
|
</Warning>
|
||||||
|
|
||||||
### Color Scheme
|
### Color Scheme
|
||||||
|
|
||||||
You can pick any color in the box and choosing a color scheme to show on your server specificly.
|
You can pick any color in the box and choosing a color scheme to show on your server specificly.
|
||||||
|
|
||||||
### Description
|
### Description
|
||||||
|
|
||||||
You can use Markdown formatting to add a description to describe what your server is.
|
You can use Markdown formatting to add a description to describe what your server is.
|
||||||
|
|
||||||
## Thats it!
|
## Thats it!
|
||||||
|
|
||||||
If you have additional customization types or other things you'd like us to add, [feel free to hit us with an issue on GitHub!](Special:GitHub)
|
If you have additional customization types or other things you'd like us to add, [feel free to hit us with an issue on GitHub!](Special:GitHub)
|
||||||
57
docs/docs/guides/linking.mdx
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
title: "Linking your account"
|
||||||
|
folder: "Guides"
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
MHSF uses a safe & secure system to link your account that **doesn't use your Microsoft account in any way**. MHSF uses a simple system of logging into a server, and then putting a code into the website.
|
||||||
|
|
||||||
|
<Separator />
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- An active account with MHSF (either linked through GitHub or Discord, or just a standard email account)
|
||||||
|
- A Minecraft Java Edition account (Bedrock accounts are not guaranteed to work, and could malfunction at some times)
|
||||||
|
|
||||||
|
## Linking
|
||||||
|
|
||||||
|
<Steps>
|
||||||
|
<Step title="Go to your account settings">
|
||||||
|
Hit your profile on the top, and go to the settings
|
||||||
|
</Step>
|
||||||
|
<Step title="Hit link account button">
|
||||||
|
If your account hasn't already been linked, you should be able to hit the Link button.
|
||||||
|
</Step>
|
||||||
|
<Step title="Pick a server">
|
||||||
|
You can pick either one of these options:
|
||||||
|
- **CoreBoxx**, a popular box server, is also a MHSF partner who has partnered to add the plugin to allow you to link through the server.
|
||||||
|
The server should be online all day, and is recommended to use.
|
||||||
|
- **MHSFPV** was a server designed for only linking. This option is not recommended because **the server is always offline** and must be turned on manually.
|
||||||
|
</Step>
|
||||||
|
<Step title="Join your chosen server">
|
||||||
|
Join the server using either `CoreBoxx.minehut.gg` or `MHSFPV.minehut.gg`
|
||||||
|
<Info>
|
||||||
|
Like said above, MHSFPV will most likely need to be turned on via the lobby.
|
||||||
|
</Info>
|
||||||
|
If using CoreBoxx, type the `/mhsf` command.
|
||||||
|
<Warning>
|
||||||
|
If either server denies you saying you were already linked, and you were linked before, hit the "Force unlink" link in the "Unlink" section.
|
||||||
|
This is a known bug.
|
||||||
|
</Warning>
|
||||||
|
</Step>
|
||||||
|
<Step title="Input code from server into MHSF">
|
||||||
|
Use the code from this server and input it into MHSF, and then submit.
|
||||||
|
</Step>
|
||||||
|
<Step title="You're linked!">
|
||||||
|
You should be linked.
|
||||||
|
</Step>
|
||||||
|
</Steps>
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
You can do many things with a linked account:
|
||||||
|
|
||||||
|
- [Own a server](/guides/owning-a-server)
|
||||||
|
- [Customize a server](/guides/customization)
|
||||||
|
|
||||||
|
More will be coming in future updates, however the only thing you can do with a linked account is server-based functions.
|
||||||
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
title: "Own a server"
|
title: "Own a server"
|
||||||
folder: "Guides"
|
folder: "Guides"
|
||||||
icon: "server"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
Owning a server is quite simple and allows you to [customize your server](/docs/guides/customization) and make it stand out from other servers. Before owning your server, make sure you agree to the [ECA](Docs:legal/external-content-agreement).
|
Owning a server is quite simple and allows you to [customize your server](/docs/guides/customization) and make it stand out from other servers. Before owning your server, make sure you agree to the [ECA](Docs:legal/external-content-agreement).
|
||||||
|
|
||||||
## Linking
|
## Linking
|
||||||
@ -11,14 +11,11 @@ Owning a server is quite simple and allows you to [customize your server](/docs/
|
|||||||
<Steps>
|
<Steps>
|
||||||
|
|
||||||
<Step title="Link your account">
|
<Step title="Link your account">
|
||||||
If you haven't already, make sure your account has [already been linked with
|
If you haven't already, make sure your account has [already been linked with your Minecraft account](/guides/linking)
|
||||||
your Minecraft account](/docs/guides/linking)
|
|
||||||
</Step>
|
</Step>
|
||||||
|
|
||||||
<Step title="Find your server">
|
<Step title="Find your server">
|
||||||
Find the server you would like to own (either by looking for it, or using the
|
Find the server you would like to own (either by looking for it, or using the keyboard shortcut <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>K</kbd> and searching for it)
|
||||||
keyboard shortcut <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>K</kbd> and searching
|
|
||||||
for it)
|
|
||||||
</Step>
|
</Step>
|
||||||
|
|
||||||
<Step title="Server customization tab">
|
<Step title="Server customization tab">
|
||||||
@ -26,20 +23,16 @@ Owning a server is quite simple and allows you to [customize your server](/docs/
|
|||||||
</Step>
|
</Step>
|
||||||
|
|
||||||
<Step title="Own the server">
|
<Step title="Own the server">
|
||||||
If the owner of the server, and the user your linked to match, you will be
|
If the owner of the server, and the user your linked to match, you will be able to own your server.
|
||||||
able to own your server. You should see a button named Click to own. Press
|
You should see a button named Click to own. Press that button, and you should automagically own the server
|
||||||
that button, and you should automagically own the server
|
|
||||||
</Step>
|
</Step>
|
||||||
|
|
||||||
</Steps>
|
</Steps>
|
||||||
|
|
||||||
## Troubleshooting
|
## I can't link my server, because my server doesn't have a author
|
||||||
|
|
||||||
### I can't link my server, because my server doesn't have a author
|
|
||||||
|
|
||||||
Your server must have an author in-order to be automagically linked, and if it doesn't have an author, that means you will have to manually link your server. To do that, make an issue on GitHub, showing that your server has no author, but needs to be linked. Show proof that you own the server, along with your account username, and your account will own the server you need.
|
Your server must have an author in-order to be automagically linked, and if it doesn't have an author, that means you will have to manually link your server. To do that, make an issue on GitHub, showing that your server has no author, but needs to be linked. Show proof that you own the server, along with your account username, and your account will own the server you need.
|
||||||
|
|
||||||
### There is an error while linking my server!
|
## There is an error while linking my server!
|
||||||
|
|
||||||
This most likely is because the Minehut API is blocking the server-side request to verify your the owner of that server, or your server [has no author](#i-cant-link-my-server-because-my-server-doesnt-have-a-author).
|
This most likely is because the Minehut API is blocking the server-side request to verify your the owner of that server, or your server [has no author](#i-cant-link-my-server-because-my-server-doesnt-have-a-author).
|
||||||
Try again in 30 minute intervals, or just make an issue on GitHub to link your server.
|
Try again in 30 minute intervals, or just make an issue on GitHub to link your server.
|
||||||
@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Reporting a server"
|
title: "Reporting a server"
|
||||||
folder: "Guides"
|
folder: "Guides"
|
||||||
icon: "flag"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
If you believe a server that you've seen is under breach of the [Rules](/docs/legal/rules), you may request the server in question to be taken down.
|
If you believe a server that you've seen is under breach of the [Rules](/docs/legal/rules), you may request the server in question to be taken down.
|
||||||
@ -1,6 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "MHSF Platform Rules"
|
title: "MHSF Platform Rules"
|
||||||
icon: "scale-balanced"
|
|
||||||
---
|
---
|
||||||
|
|
||||||
MHSF is a platform & wrapper for the popular server host, Minehut, designed to be a friendly and useful location to find information
|
MHSF is a platform & wrapper for the popular server host, Minehut, designed to be a friendly and useful location to find information
|
||||||
@ -14,13 +13,10 @@ Generally, if you use MHSF as intended—sharing useful information about your s
|
|||||||
|
|
||||||
<Note>
|
<Note>
|
||||||
Code under MHSF is licensed under the [MIT
|
Code under MHSF is licensed under the [MIT
|
||||||
License](https://github.com/DeveloLongScript/MHSF/blob/main/LICENSE). This document pertains to
|
License](https://github.com/DeveloLongScript/MHSF). This document pertains to
|
||||||
platform usage and content, not to open-source code or how you interact on
|
platform usage and content, not to open-source code or how you interact on
|
||||||
other platforms *operated* by MHSF (for example, GitHub issues, pull requests,
|
other platforms *operated* by MHSF (for example, GitHub issues, pull requests,
|
||||||
Discord threads, etc.)
|
Discord threads, etc.)
|
||||||
|
|
||||||
These rules could be easily overwritten if MHSF is self-hosted by another entity.
|
|
||||||
|
|
||||||
</Note>
|
</Note>
|
||||||
|
|
||||||
## Jurisdiction
|
## Jurisdiction
|
||||||
@ -118,7 +114,7 @@ Users must be at least 13 years old to use, interact with, or sign up for MHSF a
|
|||||||
|
|
||||||
When using the MHSF API:
|
When using the MHSF API:
|
||||||
|
|
||||||
- Include a proper `User-Agent` (or `X-Website-Agent` on the client) HTTP header with your project name and link
|
- Include a proper `User-Agent` HTTP header with your project name and link
|
||||||
- Do not spam or abuse the API
|
- Do not spam or abuse the API
|
||||||
- Do not use the API to violate Minehut, Discord, Minecraft, or legal regulations
|
- Do not use the API to violate Minehut, Discord, Minecraft, or legal regulations
|
||||||
|
|
||||||
@ -3,9 +3,6 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
|
||||||
"dev": "mintlify dev"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mintlify": "^4.0.417"
|
"mintlify": "^4.0.417"
|
||||||
}
|
}
|
||||||