Seasons API
Seasons API was developed for creating your own seasons, weathers and challenges! This mod was developed by analogy with the Spigot plugin "Seasons" specifically for the private Minecraft server "Zixa City" by its administrator (kochkaev, aka kleverdi). The idea of this mod was taken from Harieo.
What is this?
- Season - a certain period of a conditional year that has a certain weather for the current conditional time.
- Weather - daytime conditions for the game that have their own Challenges.
- Challenge - a set of some sort of rules for the player, appropriate to the current season and weather.
Command Syntax:
/seasons get season- get current season./seasons get weather- get the current weather./seasons get lang- get the currently set language./seasons get challenges- get the list of active Challenges./seasons set season <season>- set season./seasons set weather <weather>- set weather./seasons set lang <language>- set language./seasons set challenge [forceAllow|forceDisable] <challenge>- force start or end a challenge./seasons reload- reload configs./seasons actionbar [on|off]- set the display of season information in the action bar for the player executing this command.
For developers
You can create your own set of seasons, weathers and challenges in your mod. More information about implementing the Seasons API in your mod can be found in wiki.
Additional info
Links
- Sources
- Issues
- Modrinth
Dependencies
- Fabric API (Required)
- Text Placeholder API (Optional)
- Mod Menu (Optional)
- Cloth Config API (Optional)
Idea by Harieo
- Harieo on GitHub: https://github.com/Harieo/
- Original plugin on GitHub: https://github.com/Harieo/Seasons/
- Original plugin on SpigotMC: https://www.spigotmc.org/resources/seasons.39298/
Created by kochkaev
- GitHub: https://github.com/kochkaev/
- VK: https://vk.com/kleverdi/
- YouTube: https://youtube.com/@kochkaev/
- Contact email: kleverdi@vk.com
How to Install Seasons API (Mod)
Seasons API by kochkaev is verified for Fabric across Minecraft versions 1.21, 1.21.1, 1.21.5 (latest release: 1.2-BETA-6, file size: 5.2 MB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.21, 1.21.1, 1.21.5) and platform (Fabric).
- Make sure you have the compatible loader or environment installed for Fabric.
- Move the downloaded Seasons API file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version- Messages now use the more flexible MiniMessage for formatting** instead of the outdated color codes. [Read more about MiniMessage](https://docs.advntr.dev/minimessage/format.html).
- Placeholder API is now a required dependency.**
getText and addTextValue methods have been added to ConfigFileObject and ConfigContentObject for this purpose.All **config files now have a version** _(default 1)_. Now you can easily and safely update values in configs to the new format without the user noticing, for this you need to override the
update method in your class that extends ConfigFileObject.- MiniMessage is included to the jar!**
- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.2-BETA-5...1.2-BETA-6
- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.2-BETA-4...1.2-BETA-5
- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.2-BETA-3...1.2-BETA-4
/seasons actionbar {on/off}- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.2-BETA-2...1.2-BETA-3
Added
addSeason(SeasonObject) and removeSeason(SeasonObject) in WeatherObject;- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.2-BETA-1...1.2-BETA-2
- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.2-BETA-0...1.2-BETA-1
- Fixed known issues**
- Now you can skip the thunder by sleeping in a bed;
- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.0...1.1
It was tested on Zixa City. If your found a bug, please, report it >> [Issues](https://github.com/kochkaev/seasons-api/issues)
## Seasons changes
All seasons are now stored in a
Tree structure consisting of a TreeBranch. Each branch can have many branches but only one parent, can store only one SeasonObject, but one season can be stored in several branches at once and have many parents. Seasons that have no parents (located at the root of the tree) are called highest (first) order seasons. The longer the “path” to a season - the lower its order.<details><summary><a>Seasons tree example</a></summary>
<img src="https://github.com/user-attachments/assets/27941ae6-50d9-488a-b26f-66c6b382333a" alt="Tree">
</details>
A season can store a list of seasons after which it will occur with a specified chance (if there are other seasons that occur after the same season). If at the end of a season it turns out that no season comes after it, a random season is set (given its chance of being set; a chance of 0 means that the season cannot be set automatically).
## Configs changes
The config system was completely rewritten and optimized. Now all config files are described in
ConfigFileObject and their contents are stored in ConfigContentObject. All values in configs are now automatically typed depending on the default value. Added methods to create a selection from some list. All values are now stored in ConfigValueObject (or ConfigSelectionObject if it is a list).### Methods
addHeader- add header.addValue- add parameter.addDynamicSelectionButton- add a selection from a list (as a button in the interface) obtained from the supplier.addStaticSelectionButton- add a selection from the list (as a button in the interface) passed in the method call.addDynamicSelectionDropdown- add a selection from the list (as a dropdown list in the interface) received from the suppler.addStaticSelectionDropdown- add a selection from the list (as a dropdown list in the interface) passed in the method call.addDynamicSelectionSuggestion- add a selection from the list (as a prompt when entering text in the interface), received from the suppler.addStaticSelectionSuggestion- add a selection from the list (in the form of prompts when entering text in the interface), passed when calling the method.
- _key_ - key, used to get the value.
- _value_ - default value, further typing of the changed value depends on the type of this value.
- _header_ - header (mostly decoration), specify “” if you want to inherit it from the previous added value or header.
- _description_ - description of the parameter.
- _consumer_ - lambda expression executed when the value is changed, receiving the old and new value as input.
- _list_ - list containing possible values for the parameter.
- _supplier_ - lambda expression that returns the list.
## Challenges Ticker
The
ChallengesTicker now ticks not every secondsPerTick seconds, but every ticksPerChallengeTick Minecraft ticks (1 second = 20 Minecraft ticks)- Full Changelog**: htt
- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.0-RC-4.2...1.0-RC-4.3
Optimized TXTConfigObject and ClothConfigClient
Added new config features.
Added Cloth Config and Mod Menu client integration.
current.json moved to world directory as seasons-current.jsonAdded auto creating GUI for all config files (except langs).
### Added new features to config generation:
addHeader(String header)- add header to file _("# * Header")_ and Cloth Config entries.addTypedValue(String key, Object value)- add auto parsing value _(required to correct entry creating in Cloth Config; in following format: 'key: "value" # | type: "Type"')_addTypedValueAndCommentDefault(String key, Object value)- add auto parsing value and comment with default value _(in Cloth Config works similarly toaddTypedValue(String key, Object value); in following format: 'key: "value" # | type: "Type" | default: "value"')_
- Full Changelog**: https://github.com/kochkaev/seasons-api/compare/1.0-RC-3.3...1.0-RC-4