Code Monkey home page Code Monkey logo

skyblock-core's Introduction

SkyBlock Core

License

What is SkyBlock Core?

SkyBlock Core is a centralized mod for SkyBlock settings, menus, localization, events, and more. It serves as a foundation for other SkyBlock mods by providing essential functionality and features. With SkyBlock-Core, you can easily build and extend your own SkyBlock experience.

Modules

Each mod built on top of SkyBlock Core is its own module, allowing for modular and customizable SkyBlock gameplay. The modularity enables developers to add specific features and functionality to their SkyBlock experience while benefiting from the centralized core.

Getting Started

To get started with SkyBlock-Core, you need Java 17 and Fabric 1.19x. Follow the steps below to set up the development environment:

  1. Have a working braincell (It is recommended to at least have 2 braincells.)
  2. Clone this repository: git clone https://github.com/SkyBlock-Central/SkyBlock-Core.git
  3. Open the project in your preferred Java IDE.
  4. Configure the project to use Java 17.
  5. Set up Fabric 1.19x as the modding framework.
  6. Explore the codebase and start building your own module on top of SkyBlock-Core.

Contributing

Contributions are welcome! If you'd like to contribute to SkyBlock-Core, please follow these guidelines:

  • Fork the repository.
  • Create a new branch for your feature or bug fix.
  • Commit your changes and push the branch to your fork.
  • Open a pull request explaining your changes.

For more information on how to contribute, please see the CONTRIBUTING file.
Please ensure that your code follows the existing coding style and does not violate the Hypixel Rules

Questions or Concerns?

Great! We love your enthusiasm!
In 3-5 business days we will have a discord open and ready for all of our aspiring developers!
until then, feel free to open an issue here!

License

SkyBlock-Core is licensed under the Apache License 2.0. See the LICENSE file for more information.


© 2023 SkyBlock-Central. Subject to the Apache License 2.0.

skyblock-core's People

Contributors

ascynx avatar axlecat284 avatar craftedfury avatar duckysolucky avatar godofprodev avatar harry282 avatar ilikeplayinggames avatar kr45732 avatar kylliangamer avatar tgwaffles avatar wiviw5 avatar zickles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

skyblock-core's Issues

Add /locraw support

The most reliable way to tell whether we're in Skyblock or not is via /locraw. We have been advised to use it by Hypixel admins, and no one has any qualms as long as it is implemented properly.

This issue details an implementation of /locraw handling, sending, parsing, and storing.

Tasks

  • Implement listener for /locraw responses (and hide from user chat if we sent /locraw in the last few seconds and haven't received a response).
  • Parse & set variables from locraw responses (whether we're in skyblock and possibly island type).
  • Create trigger that runs /locraw when switching lobbies (worlds).
  • Add channel listener that blocks sending /locraw if another mod (or this mod) sent it recently (open for consideration on how long this window should be, I'm thinking 500ms).

Considerations for discussion

  • Maximum threshold (ms) for hiding a locraw response from user chat? (balance possible lag vs accidentally showing locraw)
  • Maximum threshold (ms) for re-sending /locraw if another mod sent it?

Config Changes - File Structure

Config File

Currently the config is saved as SkyblockCoreConfig.json, which is already in conflict with our naming scheme and should be SkyBlockCoreConfig.json if we're keeping that style.

Some users have proposed we change the naming style to camelCase instead. We should have a quick discussion about which is preferred, or if we should have another change altogether.

Config Classes

The files ModConfig.java and ConfigManager.java are both stored in the events package - I don't feel like this is a good design, they should probably have their own package (config?) or be moved somewhere more fitting (even the util package is a better fit).

Also, personally - I'm unsure of the name ModConfig considering we've decided this shouldn't be treated as a standalone mod. New class names for that are also being accepted.

Checklist

  • Decide on a new naming convention for the config
  • Rename the config
  • Decide which package the config files belong in and/or if they should be renamed
  • Move the config files to the new package (and possibly rename them too)

Dungeon Flow Events

I suggest to add dungeon flow events. I've already made the code for a personal version of Skyblock-Core, but I am suggesting it be added to the main version. I am making an issue because that's what I was told to do, to make sure that this is actually something that would be wanted, before I go making a pull request.

Here is a list of events I already have:

  • Enter dungeon
  • Dungeon started
  • Dungeon ended
  • Left dungeon
  • Wither key obtained
  • Wither door opened
  • Blood key obtained
  • Blood door opened
  • Entered boss fight (edit)

Leave detection logic issue

I noticed that when I join for example the hub when not coming from Skyblock it still triggers the leave event. Please fix this logic.

Hypixel API Wrapper

Why?

I believe that an API wrapper is a vital function to a "core" mod. Mods can register with the wrapper using their production (or personal) key on client initialize. I am willing to put time into this, as I believe it will really entice mod developers. Currently, we don't really have much to offer. This could change that.

How?

I propose that we start off with a base HypixelResponse<T> interface that we implement for each endpoint. We could cover all SkyBlock endpoints, plus some generic ones like network level and account information.

Checklist

  • /player
  • /status
  • /resources/games
  • /resources/skyblock/collections
  • /resources/skyblock/skills
  • /resources/skyblock/items
  • /resources/skyblock/election
  • /resources/skyblock/bingo
  • /skyblock/news
  • /skyblock/auction
  • /skyblock/auctions
  • /skyblock/auctions_ended
  • /skyblock/bazaar
  • /skyblock/profile
  • /skyblock/profiles
  • /skyblock/museum
  • /skyblock/bingo
  • /skyblock/firesales

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.