/Hypixel-SkyBlock-Remake

🌍 Hypixel Skyblock (Plugin + Map Integration etc.) Remake

Primary LanguageKotlinGNU General Public License v3.0GPL-3.0

Banner

Index

End Of Project

It's been a long while since I started the Hypixel SkyBlock Remake project, but it's the end of this project.

Not going to say much, but the main reason is that Hypixel SkyBlock has changed too much, I don't enjoy it anymore, and my life has changed too much and I kinda can't handle it, I really need a rest.

Right now my life is just a mess, it's completely different from what it is when I started this project, I have no clue what's actually happening, so I have to deal with this first.

Ok let's just say my life goes fine, another problem is that I don't enjoy Hypixel SkyBlock anymore, it has changed too much, and all of those old SkyBlock memories cannot be found anymore. It's just impossible for me to get back on this project, at least in 2022.

Development

This project requires a lot of work, contributions are very welcome.

Gradle

We are using Gradle for this project (See About Kotlin and Gradle - Why we use them). It's recommend to use Gradle Wrapper. If you would like to use Gradle on your local machine.

It may take a while for the initial set up, not only because it's downloading Gradle Wrapper, but it's also downloading BuildTools, and building a Spigot server.jar, and using it as dependency and server.jar to launch the server.

ℹ If it freezes at :plugin, it's completely normal. As I said: it's building Spigot as dependency. If you want to see what it's doing right now, you can add --info argument to gradle, and it will print out more information about what it's doing right now.

Developing

Test Running

ℹ There's a ~0.5s input latency, but let's not worry about that. Don't worry! It doesn't affect the performance of the test server

Since we are using Gradle, we've set up a task that runs the server, and set everything up automatically.

To run the task, you can run test server with this command:

Unix-like operating system:

chmod +x gradlew # It's not executable by default. You only have to run it for the first time
./gradlew runServer --console=plain

Windows:

gradlew.bat runServer --console=plain

--console=pain removes that fancy but annoying progress bar. You don't need it for test running

If you want to reload the plugin, you can run this following task:

Unix-like operating system:

chmod +x gradlew # It's not executable by default. You only have to run it for the first time
./gradlew reloadPlugin

Windows:

gradlew.bat reloadPlugin

Building

You can build the plugin with this command:

Unix-like operating system:

chmod +x gradlew # It's not executable by default. You only have to run it for the first time
./gradlew build

Windows:

gradlew.bat build

File Structure

# File structure

.idea/ # Run configurations etc.
gradle/ # A directory for gradle wrapper
run/ # Where server runs. File structure inside run/ may change anytime
readme-assets/ # Assets for this file. For example: Banner
BuildTools/ # Where Spigot BuildTools runs. Publishing server.jar directly is against EULA 

buildSrc/ # See https://docs.gradle.org/current/userguide/organizing_gradle_projects.html#sec:build_sources

plugin/ # Main Plugin

build.gradle.kts # Gradle build script. Using Kotlin DSL
gradlew # Gradle wrapper file for Unix-like operating systems
gradlew.bat # Gradle wrapper file for Windows
LICENSE # License information
readme.raw.md # Original readme file
readme.md # The file you are reading right now. (Generated by `generateReadMe` task)

.gitignore # For git
.gitattributes # For git

About Kotlin and Gradle - Why we use them

If you are not fine with Gradle and Kotlin, then first, let's talk about them.

If you don't know Gradle already, it's a build script based build tool. Maven is also a build tool, but the difference is that Maven uses a definition file, but gradle uses a programming language for it. So unlike maven, you can basically do anything you want during build without having a plugin. It's also faster than Maven, and as fast as IntelliJ's artifact build.

Since this project is going to be really complicated, and spending time on the build tool is worth doing, I'll be using Gradle for this project. Now, let's talk about the language we use: Kotlin.

Still, using Kotlin to code large scaled project like this (especially Spigot plugins) is better than doing it in Java. There are some features like Delegation, Operator Overloading, Extension Function that we don't have in Java. Having them will make the code way cleaner, and makes your life easier. I mean, yes, of course you can do them in Java by doing some workaround, but it makes the code very messy.

Some example:

class SBPlayer(val originalPlayer: Player): Player by player {
    
    fun someMagicFunction() {
        this.sendMessage("Hello, World!") // SBPlayer is basically implementing Player class, but actually proxied
        // method calls to the `originalPlayer` variable
    }
    
}

Delegation allows you to have stuff like this. I mean this is probably not what it was made for, but using it makes your life way easier.

I hope you now get why we use Gradle and Kotlin now: It makes our life easier, and makes the code cleaner (if you understand Kotlin).

Vulnerabilities

If you have found any following kind of vulnerabilities, please contact us as soon as possible, so we can prevent people from getting attacked!

  • Server Crashing Exploit
  • Remote Code Execution
  • Database Write/Read Leak
  • In-Game Privilege Escalation (For example: Force OP)
  • Code Injection
  • In-Game Item Duplication

⚠️ Do not open a GitHub issue for it if you have found any vulnerability! Please contact us directly, and we'll publish a patch as soon as possible

Contact

If you need a support, you can contact us on Discord, and get a response fast.

Discord

⚠️ While it's in development state, you SHOULD NOT ask something like "How to use", "How to setup". You should only be opening tickets for bug report, contribution, etc. Please read the Discord #readme channel before opening a ticket

Direct Messaging us most likely won't work (I'm getting like 10 friend request every day, and now I'm just ignoring most of them). Please join our support Discord Server and open a ticket.

fan87#5283 - Head Developer
TropicalFan344#2076 - Head Developer

License

Please check LICENSE for more information.