YAML API

# YAML API
YAML API is a specialized library that simplifies working with YAML configuration files in Bukkit/Spigot/Paper plugins. It provides a robust and consistent interface for loading, saving, updating, and managing YAML-based configurations, along with advanced mapping capabilities for configuration sections and configurable units.
—
## Overview
The **YAML API** package offers a set of tools designed to handle YAML configuration files efficiently. It abstracts the complexity of file I/O and reflection-based configuration parsing, allowing you to focus on using configuration data in your plugin.
Key components include:
– **YAMLFile**: A class to load, save, and update YAML configuration files.
– **ResourceUtils**: Utility methods for handling resources and file operations.
– **Configurable & ConfigurableFile**: Interfaces and classes that provide easy access to the underlying `FileConfiguration`.
– **ConfigurableUnit**: An interface representing a configuration unit, useful for handling permissions or groups in the configuration.
– **Mappable, SectionMappable, UnitMappable & HashMappable**: A set of interfaces and classes for mapping configuration sections and units into Java collections.
– **YAMLUpdater**: A class that updates YAML files by merging default values and preserving comments.
—
## Key Features
– **Unified Configuration Management**:
Provides a consistent API for reading, writing, and updating YAML configuration files.
– **Dynamic Mapping and Conversion**:
Supports mapping configuration sections to custom units and collections, making it easier to work with complex configuration structures.
– **Resource and File Utilities**:
Includes helper classes to simplify file loading, resource saving, and directory management.
– **Comment Preservation and Updates**:
YAMLUpdater handles merging of default configuration values while preserving existing comments.
– **Reflection-Based Parsing**:
Uses reflection to dynamically access configuration sections and values, ensuring compatibility across server versions.
—
## Usage Example
Below is an example demonstrating how to use the YAML API to load, update, and work with configuration files.
### Example: Using ConfigurableFile and YAMLFile
“`java
package com.example.myplugin;
import me.croabeast.file.ConfigurableFile;
import me.croabeast.file.YAMLFile;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.IOException;
public class MyPlugin extends JavaPlugin {
private ConfigurableFile config;
@Override
public void onEnable() {
try {
// Create a new configuration file located in the “config” folder
config = new ConfigurableFile(this, “config”, “settings”)
// Optionally, override methods to control updatability or other behaviors
{
@Override
public boolean isUpdatable() {
// Retrieve the “update” key from the configuration to decide if updates are allowed
return get(“update”, false);
}
};
// Save the default configuration if not present
config.saveDefaults();
// Update the configuration file (merges defaults and preserves comments)
config.update();
} catch (IOException e) {
e.printStackTrace();
}
// Access configuration values
String prefix = config.get(“lang-prefix”, “&e MyPlugin »&7”);
getLogger().info(“Language prefix: ” + prefix);
}
}
“`
### Example: Working with Mappable and SectionMappable
“`java
package com.example.myplugin;
import me.croabeast.file.SectionMappable;
import me.croabeast.file.ConfigurableFile;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.plugin.java.JavaPlugin;
public class MyPlugin extends JavaPlugin {
private ConfigurableFile config;
@Override
public void onEnable() {
try {
config = new ConfigurableFile(this, “config”, “settings”);
config.saveDefaults();
config.update();
} catch (Exception e) {
e.printStackTrace();
}
// Assume we have a configuration section “advancements”
ConfigurationSection section = config.getConfiguration().getConfigurationSection(“advancements”);
if (section != null) {
// Create a SectionMappable from the configuration section
SectionMappable.Set sectionMap = SectionMappable.asSet(section.getValues(false));
// Process the mapped configuration as needed
getLogger().info(“Loaded advancements: ” + sectionMap);
}
}
}
“`
—
## Maven / Gradle Installation
To include YAML API to the project, add the following repository and dependency to your build configuration. Replace `${version}` with the desired version tag.
### Maven
Add the repository and dependency to your `pom.xml`:
“`xml
croabeast-repo
https://croabeast.github.io/repo/
me.croabeast
YAML-API
${version}
compile
“`
### Gradle
Add the repository and dependency to your `build.gradle`:
“`groovy
repositories {
maven {
url “https://croabeast.github.io/repo/”
}
}
dependencies {
implementation “me.croabeast:YAML-API:${version}”
}
“`
Replace `${version}` with the appropriate module version.
—
## Conclusion
**YAML API** is a powerful library for managing YAML configurations in your Bukkit/Spigot/Paper plugins. It streamlines file operations, mapping, and updates while preserving comments and ensuring compatibility across server versions. Whether you are building simple configuration systems or working with complex, nested settings, YAML API provides the tools you need to efficiently manage your plugin’s configuration.
Happy coding!
— *CroaBeast*
YAML
Yet Another Math Library is a math library (wow so unexpected) specifically designed for speed.
Documentation can be found HERE.
Current Features
– Functions
– Trigonometry
– Cosine
– Sine
– Tangent
– Factorial
– Absolute Value (coming soon)
– Constants
– Pi
– Euler’s Number
– Tau
– Sqrt 2
– Phi
– Sequences
– Fibonacci sequence
YAMB – SmallAnt Lockout Port
This is a datapack that ports over 200 objectives from SmallAnt’s Lockout mod into Yet Another Bingo. Just drop the datapack into the server’s world folder and you’re good to go!
To use the objectives, type `/bingo filter +smallant` or look for “SmallAnt Default” under Difficulty>Customize>Filter on the lobby menu.
Recommended Bingo Settings:

There is a resource pack available as well, recommended for use by vanilla clients not using the mod. It simply adds the icons to the bingo board.
RESOURCE PACK IS FOR VANILLA ONLY, IT WILL HAVE NO EFFECT ON MODDED CLIENTS
# Resource Pack Examples
Without Resource Pack:

With Resource Pack:

Yamato Gun
Item to be added:
– Bullet
– YG-1 (Gun)
– YG-2
– YG-3
– Sakai Gun
This mod requires Fabric API (Fabric) and MCPitanLib
Adds a simple gun to kill enemies. You can kill mobs more easily.
This mod is in development and currently adds 2 guns and ammo.
Shoot on left-click.
Shooting on right-click will increase attack power.
It can be reloaded with R and cannot be refilled unless ammo is in inventory.
It supports from 1.18 to 1.20.1.
Check REI/JEI for the recipe.
We plan to add more guns in the future.
Yamashita Shimejize 🍄
## Installation
Place the ZIP file in the `shaderpacks` directory.
Do not extract the `shaders` folder from the archive.
## Description
Yamashita Shimejize is a stylized fork of Miniature Shader that pushes the miniature look far beyond pixelated shadows. The pack extends that chunky pixel-art language across lighting, fog, water, weather, reflections, and sky effects while keeping the scene readable and atmospheric.
Features:
– Pixelated shadows, posterized lighting, fog banding, and blocky reflections
– Enhanced two-layer clouds with custom cloud shadows
– Heat haze and emissive glow from lava, fire, torches, and lanterns
– Motion blur, godrays, bloom, chromatic aberration, pixel-art lens flare, pixel-art rain-on-lens droplets with adjustable opacity, and optional depth-aware Depth of Field with adjustable strength, from a subtle miniature softness to a macro-style photo look
– Inkblot-style post-rain puddles with water-like reflections on flat terrain
– Aurora, post-rain rainbow, shooting stars
– Pixel foliage wind with 16×16, 32×32, and 64×64 texture-pack matching modes
—

Yamakashi skateboards
## For correct work you need Optifine or CITResewn
Rename your sword “Огрызок”, “Алмаз”, “Кроссовок”, “Пивас” to make it a skateboard.
If you hold the object in your other hand, it will be behind your back.

Y’all It’s Winter!
A resource pack that makes the world appear snowy!
Sister pack to Y’all It’s Fall!!
Also available for Bedrock Edition.
**Features:**
* Grass Blocks become snowy regardless of whether or not they’re under a snow block.
* Ground cover and other foliage also becomes snowy.
* The backs of Sniffers and other mossy mobs become snowy.
**Known Issues:**
* The particles for certain leaf blocks are tinted green under certain circumstances. This is fixed with Polytone.
* Short Grass and other bits of foliage make snow sounds due to limitations in Java Edition.
* Actual snowfall is still exclusive to snowy biomes due to limitations in resource packs.
Special thanks to ShockMicro and/or Ancientkingg (and the Vanilla Tweaks team) for the fix to Java Edition cloud fog for the Trails and Tales panorama, which has been removed form the current version of the pack but is still present in older versions.
Y’all It’s Fall!!
A resource pack that makes the world Autumn! Finally, you can see all your favorite plants in all their orange, fall-y glory.
Sister pack to Y’all It’s Winter!
Also available for Bedrock Edition!
Features:
* Grass and foliage become various shades of orange and gold.
* Mossy mobs like Sniffers and Bogged also do the same.
Known Issues:
* The particles for certain leaves are tinted green. Fixed with Polytone
* Certain biomes do not have their colors from the Bedrock Edition release of the pack. Fixed with Polytone
yadoomi’s Purple Haze Font
# What does this resource pack add?
This resource pack takes the font from a PvP resource pack called “Purple Haze” and puts it in a seperate resource pack.
Here is a showcase video of the resource pack “Purple Haze” by OmnicronGaming
## Other details.
– This resource pack just takes the font from an already existing resource pack, if you are using this somewhere and want to credit someone, credit TerribleChoices, the creator of “Purple Haze”.
– You can use this resource pack in a modpack without my permission, thats alright.
– This resource pack works on ANY version below 1.8.9, even snapshots.
YAdminCore

# YAdminCore
Plugin with, in my opinion, essential commands for server admins. Using permissions for different command functionalities you should be able to precisely specify what admins can do what.
# Commands
– heal and feed
– item
– memory
– god
– gamemode
– fly
– tp – In vanilla style, with @ selectors
– tphere
– tpoffline
– back – Teleports back, based on the last teleport event
– entityinfo / playerinfo
– enchant
– workbench, enderchest, anvil, grindstone, stonecutter, smithingtable, cartographytable, loom
### Other features
– SQLite or MySQL database for saving player data
– Fully customizable messages with lang file, supporting PlaceholderAPI and MiniMessage
– Commands with tab completions
– API for developers
# Documentation
You can read about plugin’s permissions, placeholders etc. on the wiki page.
# Media – Example commands
`/entityinfo`

`/item` and `/enchant`

`/tp`

# Integrity with other plugins
I make these plugins for me, according to my needs, meaning, I don’t search for every possible plugin that I don’t care about, that could be somehow better integrated with mine. But, if you care about better integration between this plugin and some other, then just let me know through Discord or GitHub and I will see what I can do.
Same goes for any features that you think may be missing. If something isn’t outside the scope of the plugin, then I’ll probably do it.
# License
This project uses GNU GPLv3 license.