Skip to content

Commit 8457e97

Browse files
committed
Merge remote-tracking branch 'origin/master' into feat/bw-quick-buy
# Conflicts: # type.generic/src/main/java/net/swofty/type/generic/data/handlers/BedWarsDataHandler.java
2 parents 9ab2c9c + 914ed30 commit 8457e97

101 files changed

Lines changed: 8877 additions & 245 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

DockerFiles/Dockerfile.proxy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RUN apt-get update && apt-get install -y jq expect netcat-traditional && apt-get
77

88

99
# Download Velocity proxy JAR
10-
ADD https://fill-data.papermc.io/v1/objects/303f9c60d5d75c52585c9e95efbc46d43ae8683efe7dee8763a16d6506681ee1/velocity-3.4.0-SNAPSHOT-528.jar velocity.jar
10+
ADD https://fill-data.papermc.io/v1/objects/ef1a852bfae7397e84907837925e7ad21c6312066290edaae401b77f6f423ac3/velocity-3.4.0-SNAPSHOT-558.jar velocity.jar
1111

1212
# Download SkyBlockProxy.jar
1313
ADD https://github.com/Swofty-Developments/HypixelSkyBlock/releases/download/latest/SkyBlockProxy.jar plugins/SkyBlockProxy.jar

README.md

Lines changed: 51 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -1,184 +1,70 @@
1-
> This is a Minestom-implementation of a Hypixel-SkyBlock recreation hosted on my server at discord.gg/paper. This implementation is nowhere near complete and is not ready for production. There are still portions of the codebase which are messy and aren't following proper Minestom standard practice.
21
# Hypixel SkyBlock
32

4-
[<img src="https://discordapp.com/assets/e4923594e694a21542a489471ecffa50.svg" alt="" height="55" />](https://discord.gg/paper)
5-
6-
A 1.21.11 recreation of Hypixel SkyBlock utilizing Minestom, with the intention of actually having a properly abstracted, scalable codebase. This project is sisters with the [HypixelForums](https://github.com/Swofty-Developments/HypixelForums) project and optionally, can be used together.
7-
8-
#### Releases
9-
10-
Releases are auto deployed on push onto the GitHub releases page which can be found [here](https://github.com/Swofty-Developments/HypixelSkyBlock/releases). Updates are also periodically sent within my discord server located at [discord.gg/paper](https://discord.gg/discord.gg/paper).
11-
12-
#### Javadocs
13-
14-
Javadocs can be found [here](https://swofty-developments.github.io/HypixelSkyBlock/).
15-
16-
## Recommended Device Specifications
17-
This project is not meant to be a small server, and as such, it requires a decent amount of resources to run. The following are the minimum specifications for running this server:
18-
- 16GB of RAM (4GB for MongoDB, 12GB across servers and services)
19-
- 6 Cores (For sufficient multi-threading)
20-
- 15GB of Storage
21-
22-
## Setup Guide
23-
A video of me going through the guide [can be found here](https://www.youtube.com/watch?v=pxzJbjjQL-M)
24-
1. Ensure that you meet the recommended device specifications above.
25-
2. Start a MongoDB service either locally or remotely, a guide for installation can be found [here](https://www.mongodb.com/try/download/community?tck=docs_server).
26-
3. Ensure you have the `Java 25` SDK installed.
27-
4. Start a Redis server, if you're on Windows you can run an installer [here](https://www.memurai.com/)
28-
5. Follow the 'Proxy Setup Guide' below. (Note, if you want to run a cracked server, you must set "require-authentication" to true in your config)
29-
6. Follow the 'Game Server Setup Guide' below. (Note, if you want to run a cracked server, you must set "require-authentication" to true in your config)
30-
7. Follow the 'Service Setup Guide' below.
31-
8. Follow the 'Resource Pack Setup Guide' below.
32-
9. To give yourself ADMIN, log in and out of the server, go into your MongoDB compass, click on Minestom -> profiles and set your rank to "ADMIN". If there is not a rank field, create one just like `rank: ""ADMIN""`, log back in and you'll have it.
33-
34-
### Proxy Setup Guide
35-
1. Download 'SkyBlockProxy.jar' from the releases page [here](https://github.com/Swofty-Developments/HypixelSkyBlock/releases/tag/latest)
36-
2. Download the Velocity proxy from [here](https://fill-data.papermc.io/v1/objects/303f9c60d5d75c52585c9e95efbc46d43ae8683efe7dee8763a16d6506681ee1/velocity-3.4.0-SNAPSHOT-528.jar)
37-
3. Download `velocity.toml` from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration) and move it to where you want your Proxy server to run.
38-
4. Move your Velocity proxy JAR into that folder as well, and run the proxy using `java -jar velocity-3.4.0-SNAPSHOT-528.jar` as a command in that directory.
39-
5. Close this proxy once it has generated the `plugins` folder, just by pressing `CTRL + C` or closing the CMD Prompt.
40-
6. Move the `SkyBlockProxy.jar` from earlier into the plugins' folder.
41-
7. Make a new folder where your `velocity.toml` is and call it `configuration`
42-
8. Download `resources.json` from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration)
43-
9. Move this file into the `configuration` folder you just made.
44-
10. Start the proxy again using `java -jar velocity-3.4.0-SNAPSHOT-528.jar`. This will need to be on for your game servers to work.
45-
46-
### Game Server Setup Guide
47-
1. Download 'HypixelCore.jar' from the releases page [here](https://github.com/Swofty-Developments/HypixelSkyBlock/releases/tag/latest)
48-
2. Make a folder called `configuration` in the same directory as the JAR file. (Note this should be placed differently to where your Proxy is)
49-
3. Download `resources.json` from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration)
50-
4. Move this file into the `configuration` folder you just made.
51-
5. Create a folder called `skyblock` in the existing configuration folder.
52-
6. Download the [world files for the SkyBlock Hub, Prototype Lobby, and Island worlds.](https://www.mediafire.com/file/xxnxgkqejlh17fn/HypixelRecreationWorlds.zip/file)
53-
7. Get the Hypixel SkyBlock hub from the above download and put it in the configuration/skyblock/islands/ folder you made under the name `hypixel_skyblock_hub`, and the Island Template under `hypixel_skyblock_island_template`.
54-
8. Get the Prototype lobby from the above download and put it in the configuration folder under the name `hypixel_prototype_lobby`..
55-
9. Get the item and collection folders from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration/skyblock) and put them into your configuration/skyblock/ folder.
56-
10. There should be a `forwarding.secret` file where your Velocity JAR is, take this and put it into your `resources.json` under `velocity-secret`.
57-
11. Run the jar using `java -jar {Insert the JAR file} SKYBLOCK_ISLAND`, this will create an Island server that will latch onto your running proxy.
58-
12. To make other game servers for the other islands merely run the command above again but with different island types, you can see all the possible types [here](https://github.com/Swofty-Developments/HypixelSkyBlock/blob/7df2db59ef0f14281f332d2cf43fdbf8ab09e574/commons/src/main/java/net/swofty/commons/ServerType.java#L4).
59-
13. Download `NanoLimbo.jar` from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration), and download its configuration file from the same place. Start it in the background using `java -jar NanoLimbo-1.9.8.jar`. After running, a `settings.yml` file will be generated. Open it and scroll down till you see `secret: ''`. Put your velocity forwarding secret in there. Make sure that the `type` is set to `MODERN`.
60-
14. Download `Minestom.regions.csv` from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration/skyblock) and upload them to the `regions` collection made in your Mongo after starting the server. Once you have done this restart your server.
61-
15. If you wish to have fairy souls, download `Minestom.fairysouls.csv` from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration/skyblock) and upload them to the `fairysouls` collection made in your Mongo after starting the server. Once you have done this restart your server.
62-
16. If you wish to have the Hub crystals (you can also just `/addcrystal`), download `Minestom.crystals.csv` from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration/skyblock) and upload them to the `crystals` collection made in your Mongo after starting the server. Once you have done this restart your server.
63-
17. (OPTIONAL) If you wish to have Songs on your server, copy the `songs` folder from [here](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration/skyblock), and put it inside your configuration folder.
64-
65-
### Service Setup Guide
66-
1. Due to the nature of SkyBlock, there may be a variety of services that need to be run. Go to the releases page [here](https://github.com/Swofty-Developments/HypixelSkyBlock/releases/tag/latest) and download any .JAR files that start with `Service`.
67-
2. Move these JAR files into the same directory as your Game Servers, they will share the configuration JSON with the services.
68-
3. Run them using `java -jar {Insert the JAR file}`.
69-
70-
### Forums Website Setup Guide
71-
1. Ensure that your API service is running.
72-
2. Follow the steps found at [the HypixelForums repository](https://github.com/Swofty-Developments/HypixelForums).
73-
74-
### Resource Pack Setup Guide
75-
1. In preparation for SkyBlock version 1, we already have a resource pack system setup. To start, download the `SkyBlockPacker.jar` from the releases page [here](https://github.com/Swofty-Developments/HypixelSkyBlock/releases/tag/latest).
76-
2. Download the [pack_textures](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration/skyblock) and [SkyBlockPack](https://github.com/Swofty-Developments/HypixelSkyBlock/tree/master/configuration/skyblock) folders and move them where the packer JAR is.
77-
3. Run the packer JAR using `java -jar SkyBlockPacker.jar -v (Location of SkyBlockPack) -o (Output Directory) -t (Location of Pack Textures)`.
78-
4. Once this has finished, you should have a resource pack in the output directory you specified. Merely apply this on Minecraft and you'll be good to go.
79-
80-
81-
## 🐋 Running with Docker
82-
- Install the git repository using `git clone https://github.com/Swofty-Developments/HypixelSkyBlock.git`
83-
84-
Most parts about downloading and setting up files will be automated for you, but you will need to add the following files to the `configuration` folder:
85-
86-
- Download the [world files for the Hub and Island worlds](https://www.mediafire.com/file/xxnxgkqejlh17fn/HypixelRecreationWorlds.zip/file). Make sure they are named as **world.zip**
87-
88-
- In your configuration file Remove the default `resources.json` and rename `resources.json.docker` to `resources.json`
89-
90-
## Running the containers!
91-
92-
- (Recommended) Install Docker Desktop from [here](https://www.docker.com/products/docker-desktop).
93-
- Open Docker Desktop/Docker and ensure that it is running.
94-
- Open a terminal and navigate to the directory where you cloned the repository.
95-
- Run the following command to build and run the containers (Your Server):
3+
[<img src="https://discordapp.com/assets/e4923594e694a21542a489471ecffa50.svg" alt="Discord" height="55" />](https://discord.gg/ZaGW5wzUJ3)
964

97-
```bash
98-
docker-compose up --build
99-
```
5+
A 1.21.11 Minestom-based recreation of Hypixel SkyBlock with a properly abstracted, scalable microservices architecture.
1006

101-
- If you want to run the server in detached mode, you can use the `-d` flag:
7+
> **Note**: This implementation is under active development and is not yet production-ready.
1028
103-
```bash
104-
docker-compose up --build -d
105-
```
106-
> Note: If you have already run the server before with `docker-compose up --build` you can just run `docker-compose up` to start the server without rebuilding the images making it faster.
9+
## Documentation
10710

108-
- To stop the containers, you can use:
11+
Full documentation is available at **[opensource.swofty.net](https://opensource.swofty.net)**
10912

110-
```bash
111-
docker-compose down
112-
```
13+
- [Getting Started](https://opensource.swofty.net/docs/introduction)
14+
- [Requirements](https://opensource.swofty.net/docs/requirements)
15+
- [Setup Guide](https://opensource.swofty.net/docs/setup/proxy)
16+
- [Docker Deployment](https://opensource.swofty.net/docs/docker/setup)
17+
- [Server Types Reference](https://opensource.swofty.net/docs/reference/server-types)
18+
- [Services Reference](https://opensource.swofty.net/docs/reference/services)
19+
- [Troubleshooting](https://opensource.swofty.net/docs/troubleshooting)
11320

114-
Or click the stop button in Docker Desktop.
115-
116-
### How to add new servers using Docker?
117-
To add new servers like the Hub, Islands or Farming Island follow these steps:
118-
1. Open the `docker-compose.yml` file.
119-
2. Modify the following template and add it to the `docker-compose.yml`. (Make sure to use proper indentation):
120-
121-
```yaml
122-
<server_name>:
123-
image: game_server_prepared
124-
container_name: <server_name>
125-
restart: "unless-stopped"
126-
environment:
127-
SERVICE_CMD: java -jar HypixelCore.jar <ServerType>
128-
depends_on:
129-
proxy:
130-
condition: service_healthy
131-
game_server_builder:
132-
condition: service_started
133-
volumes:
134-
- ./configuration:/app/configuration_files
135-
networks:
136-
- hypixel_network
137-
```
21+
## Quick Links
13822

139-
3. Replace `<server_name>` with a unique name for your server (e.g., `hub`, `island_1`, etc.).
140-
141-
4. Replace `<ServerType>` with the appropriate server type (e.g., `SKYBLOCK_HUB`, `SKYBLOCK_ISLAND`, etc.)
142-
143-
Example:
144-
145-
```yaml
146-
hypixelcore_hub2:
147-
image: game_server_prepared
148-
container_name: hypixelcore_hub2
149-
restart: "unless-stopped"
150-
environment:
151-
SERVICE_CMD: java -jar HypixelCore.jar SKYBLOCK_HUB
152-
depends_on:
153-
proxy:
154-
condition: service_healthy
155-
game_server_builder:
156-
condition: service_started
157-
volumes:
158-
- ./configuration:/app/configuration_files
159-
networks:
160-
- hypixel_network
161-
```
23+
- [Releases](https://github.com/Swofty-Developments/HypixelSkyBlock/releases)
24+
- [Javadocs](https://swofty-developments.github.io/HypixelSkyBlock/)
25+
- [Discord](https://discord.gg/ZaGW5wzUJ3)
26+
- [Video Guide](https://www.youtube.com/watch?v=pxzJbjjQL-M)
16227

163-
## Common Issues
164-
1. `redis.clients.jedis.exceptions.JedisConnectionException: Failed to connect to any host resolved for DNS name.`
28+
## Features
16529

166-
⇒ Your Memurai isn't running. If this can not be fixed, try out [this](https://github.com/tporadowski/redis/releases) instead.
167-
2. Having issues connecting to the server?
30+
- **Multi-Server Architecture** - 13 server types (SkyBlock + BedWars)
31+
- **Microservices** - 8 independent services (Auctions, Bazaar, Party, etc.)
32+
- **Redis Communication** - Real-time inter-service messaging
33+
- **MongoDB Storage** - Persistent data storage
34+
- **Velocity Proxy** - Load balancing and player routing
35+
- **Docker Support** - Full Docker Compose deployment
36+
- **Java 25** - Modern Java with virtual threads
16837

169-
⇒ Check if your velocity secret is the same everywhere including the limbo config.
38+
## Requirements
17039

171-
3. `You have strayed too far from the spawn! Teleporting you back...` when joining an island?
40+
- 16GB+ RAM
41+
- 6+ CPU Cores
42+
- Java 25
43+
- MongoDB
44+
- Redis
17245

173-
⇒ You didn't import your regions (correctly).
46+
See the [full requirements](https://opensource.swofty.net/docs/requirements) for details.
17447

175-
4. Still having issues?
48+
## Quick Start
17649

177-
⇒ Make sure that you followed everything correctly. If that didn't help, join our discord and ask for help in #code-help. Please provide screenshots of all your consoles!
178-
### Pinging staff members won't solve your issue faster!
50+
```bash
51+
# Clone the repository
52+
git clone https://github.com/Swofty-Developments/HypixelSkyBlock.git
53+
54+
# Docker deployment
55+
docker-compose up --build
56+
```
57+
58+
For manual setup, follow the [documentation](https://opensource.swofty.net/docs/setup/proxy).
59+
60+
## Related Projects
61+
62+
- [HypixelForums](https://github.com/Swofty-Developments/HypixelForums) - Web forum integration
17963

18064
## Credits
18165

182-
Thanks to:
183-
* All the lovely people in the Minestom discord for single-handedly carrying all of my knowledge about this API.
184-
* Myself and any other contributors, who can be viewed [HERE](https://github.com/Swofty-Developments/HypixelSkyBlock/graphs/contributors).
66+
Thanks to the Minestom community and all [contributors](https://github.com/Swofty-Developments/HypixelSkyBlock/graphs/contributors).
67+
68+
## License
69+
70+
See repository for license details.

commons/src/main/java/net/swofty/commons/CustomWorlds.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@
33
public enum CustomWorlds {
44
SKYBLOCK_ISLAND_TEMPLATE("hypixel_skyblock_island_template"),
55
SKYBLOCK_HUB("hypixel_skyblock_hub"),
6+
SKYBLOCK_SPIDERS_DEN("hypixel_skyblock_spiders_den"),
7+
SKYBLOCK_THE_END("hypixel_skyblock_the_end"),
8+
SKYBLOCK_CRIMSON_ISLE("hypixel_skyblock_crimson_isle"),
69
SKYBLOCK_GOLD_MINE("hypixel_skyblock_gold_mine"),
710
SKYBLOCK_DEEP_CAVERNS("hypixel_skyblock_deep_caverns"),
811
SKYBLOCK_DWARVEN_MINES("hypixel_skyblock_dwarven_mines"),
12+
SKYBLOCK_THE_PARK("hypixel_skyblock_the_park"),
13+
SKYBLOCK_GALATEA("hypixel_skyblock_galatea"),
14+
SKYBLOCK_BACKWATER_BAYOU("hypixel_skyblock_backwater_bayou"),
915
SKYBLOCK_DUNGEON_HUB("hypixel_skyblock_dungeon_hub"),
1016
PROTOTYPE_LOBBY("hypixel_prototype_lobby"),
1117
BEDWARS_LOBBY("hypixel_bedwars_lobby"),

commons/src/main/java/net/swofty/commons/ServerType.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@
66
public enum ServerType {
77
SKYBLOCK_ISLAND(true),
88
SKYBLOCK_HUB(true),
9+
SKYBLOCK_SPIDERS_DEN(true),
10+
SKYBLOCK_THE_END(true),
11+
SKYBLOCK_CRIMSON_ISLE(true),
912
SKYBLOCK_DUNGEON_HUB(true),
1013
SKYBLOCK_THE_FARMING_ISLANDS(true),
1114
SKYBLOCK_GOLD_MINE(true),
1215
SKYBLOCK_DEEP_CAVERNS(true),
1316
SKYBLOCK_DWARVEN_MINES(true),
17+
SKYBLOCK_THE_PARK(true),
18+
SKYBLOCK_GALATEA(true),
19+
SKYBLOCK_BACKWATER_BAYOU(true),
1420
PROTOTYPE_LOBBY(false),
1521
BEDWARS_LOBBY(false),
1622
BEDWARS_GAME(false),

0 commit comments

Comments
 (0)