All Classes and Interfaces

Class
Description
Abstract class providing version-specific implementations for high-performance block manipulation operations across different Minecraft versions.
A class that represents a configuration file
This is an extension of a YamlConfiguration, so all get, set, and put methods are available.
Abstract class providing version-specific implementations for retrieving namespaced identifiers of Minecraft enchantments.
Abstract class providing version-specific implementations for entity manipulation and spawner item handling across different Minecraft versions.
Abstract class providing version-specific implementations for editing ItemMeta properties that may vary across Minecraft versions.
Reads the two pieces of item NBT an Adventure show_item hover is built from.
Interface providing version-specific implementations for item text and tooltip generation for Minecraft versions prior to 1.17.
Abstract class providing version-specific implementations for main hand and off-hand item management across different Minecraft versions.
 
Do not implement this outside KamiCommon. This was a sealed hierarchy until spigot-utils dropped to Java 8 so that 1.8.x servers could load it; sealed is Java 17 and has no Java 8 spelling.
Do not implement this outside KamiCommon. This was a sealed hierarchy until spigot-utils dropped to Java 8 so that 1.8.x servers could load it; sealed is Java 17 and has no Java 8 spelling.
Abstract class providing version-specific implementations for processing and sending interactive messages with actions and events.
 
 
Abstract class providing version-specific implementations for player teleportation without triggering Bukkit events.
 
 
Wrapper class for basic expression of chat message actions.
 
 
 
 
 
This is the abstract adapter for all "KamiCommon structures".
 
 
 
Provider for version-specific block utility implementations.
Abstract base class for configuration caches that automatically reload when the underlying config changes.
Provider for version-specific chat color implementations.
 
A click behaviour that can be attached to a VersionedComponent.
 
 
 
KamiCommand implementation that lists all features in the provided KamiPlugin (see constructor).
Construct an instance of this class and register it under your own KamiCommand class.
 
 
 
KamiCommand implementation that lists all modules in the provided KamiPlugin (see constructor).
Construct an instance of this class and register it under your own KamiCommand class.
Resolves every NMS provider and reports which implementation this server got.
 
 
 
 
 
 
 
 
Asserts on what VersionedComponent emits, across the whole of its surface.
Utility for mapping String objects into VersionedComponent objects, handling both legacy color codes and modern MiniMessage format.

The format of a line is decided by ColoredStringParser.detectFormat(String), which tests, in order: legacy section, legacy ampersand, MiniMessage, then plain text.
Enumeration of Minecraft chat colors with their corresponding AWT Color representations.
 
Resolves whichever supported combat-tag plugin is installed to a single CombatIntegration, trying CombatTagPlus, then DeluxeCombat, then PvPManager.
 
The state of a single command invocation, handed to KamiCommand.perform(CommandContext).
NMS abstraction interface for modifying Bukkit's internal command map.
Provider for version-specific command map modifier implementations.
Splits already-rendered lines into pages with a titleized header and clickable page-flip arrows.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A simple logger service for a specific plugin, providing additional support for sending components to the console.
 
Provider for version-specific server component logging adapter.
 
This object contains the data for an AbstractConfig yaml comment.
This is a utility class for creating and saving configurations in a JavaPlugin
Interface for classes that want to be notified when a config is updated.

You should register this observer with a ObservableConfig class.
Represents a source of configuration data that can provide an InputStream for reading
and may optionally support writing/persistence.

Typical implementations:
- File-backed source (writable)
- Provider/remote/in-memory source (read-only)

Contract notes:
- Each call to ConfigSource.openStream() should return a fresh stream positioned at the start.
- If ConfigSource.isWritable() is false, ConfigSource.write(byte[], Charset) must throw UnsupportedOperationException.
- ConfigSource.ensureExistsIfWritable() should create any required backing structures for writable sources.
- ConfigSource.asFileIfPresent() returns a File only for file-backed sources; otherwise null.
Marks a class as a configuration holder that contains static configuration values, getters, and setters for its enclosing class.
 
 
 
 
 
 
The ContainerUtil provides an imaginary super class to Collection and Map.
A set of core methods that both KamiPlugin and Module must follow and implement to make their APIs interchangeable.
 
 
 
 
Encapsulates the default value configuration for a Parameter.
 
 
 
 
 
 
 
 
 
 
 
 
A simple class for sending discord webhooks, supports basic embeds and such
 
 
 
Provider for version-specific enchantment ID implementations.
 
 
 
Provider for version-specific entity manipulation implementations.
This class represents a single feature registered under your KamiPlugin plugin.
A feature is a subsystem that acts like its own plugin, providing its own functionality and configuration.
Features cannot be disabled or toggled, they are always enabled.
For a subsystem that can be toggled or disabled, see Module.
The configuration of one Feature, defaulted from that feature's resource in the plugin jar and written under the plugin's data folder.
 
A type-safe wrapper for reflective field access with automatic accessibility handling.
Factory and cache manager for FieldHandle instances.
A ConfigSource implementation that reads from and writes to a file on the filesystem.

Supports both read and write (save) operations.
Represents a layout for a PaginatedMenu where the available slots for page icons are defined as the grid between two positions (PositionIconSlot)
 
Basic hover action showing an ItemStack.

Use Action.setHoverItem(ItemStack) to add this hover action to an Action.
- This class is not intended to be instantiated directly.
 
Do not implement this outside KamiCommon. This was a sealed hierarchy until spigot-utils dropped to Java 8 so that 1.8.x servers could load it; sealed is Java 17 and has no Java 8 spelling.
NMS abstraction interface for converting Bukkit ChatColor instances to AWT Color objects.
 
 
 
 
Identification of a CommandSender can be done in 4 different ways.
 
 
A builder class for wrapping ItemStacks and applying patches to them.
Patches modify the base metadata and nbt of the item via easier to use methods exposed by this class.

NOTE: Using third party plugins like ItemsAdder which provide custom items IS SUPPORTED!
Just adjust your workflow to parse the ItemStack from their API, and then use that object as the prototype for this wrapper:
 
Loader to assist in automatically extracting ItemBuilders from configuration sections.

Supports the KamiConfig system, requiring a ConfigurationSection object to load from.
Provider for version-specific item editor implementations.
Provider for the item NBT an Adventure show_item hover is built from.
Provider for version-specific item text implementations (Pre-1.17 only).
 
 
Stand-ins for String methods added after Java 8.
One command in a tree of commands, with typed parameters, requirements and generated help.
Message and Color configuration for KamiCommand messages.
 
Basic configuration for the help command.
 
This class is just the plugin source when the spigot-jar is installed on a server.
All registration and enabling of the plugin is handled in PluginSource.

This architecture allows a third party plugin to completely shade the spigot-jar module and initialize PluginSource on its own.
 
 
 
 
A checked exception whose payload is a message for the sender rather than a stack trace.
A class that represents a configuration file (Meant for implementations WITH a JavaPlugin object available)
If you DO NOT have a JavaPlugin object, it is recommended to use StandaloneConfig instead
This is an extension of a YamlConfiguration, so all get, set, and put methods are available.
KamiConfig but with some extended features
This subclass adds better constructors.
This subclass adds better constructors.
The JavaPlugin base for a KamiCommon plugin, adding lifecycle logging, registration helpers that unregister themselves on disable, an automatically loaded config.yml, and the module and feature managers.
 
This subclass adds better constructors.
This subclass adds better constructors.
Abstract base class for interactive messages that can contain rich text, actions, and events for enhanced player communication.
Implementation of KMessage for multi-line interactive messages.
Implementation of KMessage for single-line interactive messages.
 
 
Legacy methods related to ChatColor and legacy color codes.
A legacy color-code translator for Minecraft-style formatting codes.
Translates the alternate code character & into the legacy section sign (§) and optionally expands 1.16+ hex color codes of the form &#RRGGBB into the §x§R§R§G§G§B§B sequence used by legacy clients.
Notes:
- This API is marked @Obsolete.
Simple colored logger that automatically parse legacy color codes using the section symbol (§) or ampersand (&).

This logger is designed for use in Bukkit/Spigot/Paper plugins, and will prepend the plugin name to each message.

It supports different log levels, and will colorize the output accordingly:
- DEBUG (Level.FINE): Gray
- INFO (Level.INFO): No colorization
- WARNING (Level.WARNING): Yellow
- SEVERE (Level.SEVERE): Red

Note: The logger does not currently support other log levels.
Lightweight logging utility for the KamiCommon NMS module.
A simple logger service that provides an abstraction for where to log messages.

Override LoggerService.logToConsole(String, Level) to change how log messages are processed.
Provider for version-specific main hand implementations.
A Utility class to provide some helper methods when dealing with the Material Flattening changes.
These methods make no guarantee to EXACTLY map your intentions, but they try their best.
 
 
A nested section of a StandaloneConfig, exposing the same read and write surface as the config itself over one branch of the document.
Represents the abstraction of a menu into the core parts that MenuManager needs to interact with.
This interface is not meant for public consumption or use, you will find none of the helpful methods you would expect.

Use specific menus classes like SimpleMenu or PaginatedMenu
 
Data class to hold information about a click event on a Menu.
 
 
A callback interface for handling InventoryDragEvents in a Menu.
This callback is invoked when a player drags items across slots in the menu inventory.
A container for all the events that can be added to a Menu.
The underlying Map can be accessed directly with getters for each callback type.
Additional helper methods are provided to add callbacks.
InventoryHolder with constructor parameters for making an Inventory with either a row count or an InventoryType.
Also contains a few utility methods for better utilization with the KamiCommon library.
Represents a menu icon that can contains the ItemStack data as ItemBuilder
This class also holds the click data for the icon, and the auto updating logic for the icon
Basic configuration for MenuIcon defaults.
 
 
Represents a modifier for a MenuIcon.
 
This manager is responsible for handling all Menu interactions.
Developers should not need to interact with this class directly, only through specific menu classes like SimpleMenu or PaginatedMenu.
 
A container for all the options that every Menu must allow to be configured.
Use Getters and Setters to access and modify these options.
 
Represents the size of a menu.
Can either be a MenuSizeRows, or MenuSizeType.
 
 
 
 
Deprecated.
 
A utility class for sending building messages built from a config.
Provider for version-specific message manager implementations.
 
 
A cross-version MiniMessage parser and messenger.
 
 
 
 
 
 
 
This class represents a single module registered under your KamiPlugin plugin.
A module is a toggleable subsystem that acts like its own plugin, providing its own functionality and configuration.
For a subsystem that cannot be toggled or disabled, see Feature.
The configuration of one Module, defaulted from that module's resource in the plugin jar and written under the plugin's data folder.
 
 
Deprecated.
NBT config parsing was removed in v5.
 
 
 
Central API facade for all NMS (Net Minecraft Server) functionality in KamiCommon.
The single entry point into one versions/* module.
Resolves one NmsBundle per versions/* module, by name, exactly once.
NMS wrapper interface for Minecraft chunk objects.
Default implementation interface for NMS chunk operations.
NMS wrapper interface for Minecraft chunk provider objects.
NMS wrapper interface for Minecraft chunk section objects.
Interface providing version-specific implementations for NMS item operations that require direct access to Minecraft's internal item system.
Provider for version-specific NMS item method implementations.
Base interface for all NMS (Net Minecraft Server) object wrappers.
NMS wrapper for outbound entity destroy packets.
NMS wrapper for outbound entity status packets.
Base interface for all NMS packet wrappers.
Handler interface for NMS packet operations and management.
Version detection and management utility for the KamiCommon NMS system.
 
NMS wrapper interface for Minecraft world objects.
Version-specific wrapper factory for creating NMS world instances.
Abstract base class for version-specific NMS wrapper factories.
Was a record.
Interface for classes that accept ConfigObserver registrations.

See ObservableConfig.registerConfigObserver(ConfigObserver).
This Menu class focuses on providing a simple menu that allows for only one single click per opening.
 
Utility class for loading a OneClickMenu.Builder from a ConfigurationSection.
A container for all the options that every OneClickMenu must allow to be configured.
Use Getters and Setters to access and modify these options.
 
Provider for version-specific packet handler implementations.
 
This Menu class focuses on providing an easy way of creating a menu with multiple pages.
 
Utility class for loading a PaginatedMenu.Builder from a ConfigurationSection.
 
A container for all the options that every PaginatedMenu must allow to be configured.
Use Getters and Setters to access and modify these options.
 
Utility class to paginate a list of objects.
Represents the layout of a PaginatedMenu
This is just a helpful class to store an object of two objects.
One declared argument of a KamiCommand, pairing a Type with a display name and an optional default value.
 
Do not implement this outside KamiCommon. This was a sealed hierarchy until spigot-utils dropped to Java 8 so that 1.8.x servers could load it; sealed is Java 17 and has no Java 8 spelling.
 
Represents the type of operation to be performed in a patch.

VALUES:
- ADD: Adds a new element or modifies an existing one.
- REMOVE: Removes an existing element.
 
 
Enumeration defining different approaches for block placement operations, each with varying performance characteristics and update behaviors.
Data class to hold information about a click event occurring inside a Player's Inventory.
 
 
 
Utility class for helping with players You can give items (which drop near them if they are full), and clean their inventory (with or without armor)
This class exists as a bootloader for the KamiCommon plugin and APIs.
As of v4 of the KamiCommon library, most of the APIs were moved to the spigot-utils module, and this class has less responsibility, mainly to initialize the SpigotUtilsSource from spigot-utils.
 
Some basic preconditions for when the Google preconditions are not available on the classpath
 
 
 
 
 
 
 
 
 
 
Provider for version-specific spawner event adapters across different server implementations.
Custom event fired before a spawner attempts to spawn an entity.
 
Represents a MenuIcon, but with an additional priority value
 
Abstract base class for lazy-loading version-specific implementations.
# Introduction PS stands for PhysicalState.
 
 
 
 
 
 
 
 
The source for all RabbitMQ interactions.
 
 
Represents a pair of client and server queues for RPC communication.
 
 
The handle for one Redis connection, exposing pub/sub channels alongside Lettuce's synchronous and asynchronous command interfaces.
 
 
Connection settings for a single Redis server.
The source for all Redis interactions.
 
 
 
 
 
 
 
 
 
A Requirement that passes when the sender holds a permission node, obtained with RequirementHasPerm.get(String) and attached with KamiCommand.addRequirements(Requirement...).
 
A Requirement that passes only for a Player sender, so a command carrying it can never run from console.
 
 
 
 
 
Loads the relocated Adventure copy from internal-libs/adventure.jar inside this jar, in a CHILD classloader.
This Menu class focuses on providing a simple single-frame menu.
 
Utility class for loading a SimpleMenu.Builder from a ConfigurationSection.
A container for all the options that every SimpleMenu must allow to be configured.
Use Getters and Setters to access and modify these options.
Represents the simplest layout for a PaginatedMenu.
This layout is defined by: A 1 block gap (border) at the top of the menu where no items are placed. A 1 block gap (border) at the left and right of the menu where no items are placed. The last row is reserved for the pagination controls. The second to last row is also a gap (border) row, such that the remaining rows in between are used for the page items. NOTE: This layout only supports menu sizes that have at least 4 rows.
 
Cross-version enumeration for slab placement types.
A utility class for soft PlaceholderAPI integration

This class will utilize PlaceholderAPI if it is present on the server, safely ignoring replacements if it is not.
 
 
 
A class that represents a configuration file (Meant for implementations WITHOUT a JavaPlugin object available)
If you have a JavaPlugin object, it is recommended to use @KamiConfig instead
This is an extension of a YamlConfiguration, so all get, set, and put methods are available.
StandaloneConfig but with some extended features
A stateful modifier for an icon's ItemBuilder it wants to place in a menu.
The StatefulIconModifier.modify(ItemBuilder, ItemStack, Player, int) method also provides the existing item in the menu (if it exists) and the Player viewing the menu.
A static modifier for an icon's ItemBuilder it wants to place in a menu.
 
A ConfigSource implementation that reads from a predefined yaml string in memory.

Supports ONLY read operations.
 
 
Provider for version-specific teleportation implementations.
Every text capability, for one server version, expressed without naming Adventure.
Resolves one TextBundle per shaded-tier module, out of the nested jar.
A style flag that can be turned on or off on a VersionedComponent.
A MiniMessage tag replacement, expressed as data rather than as a wrapped Adventure resolver.
Which of the three forms a placeholder carries.
Utility methods for working with text strings.
Static helpers for rendering a duration and for resolving a wall-clock time to a Date.
 
A boolean that can also be absent, for a setting that is explicitly true, explicitly false, or simply not configured.
This is just a helpful class to store an object of three objects.
Static text helpers used throughout the command framework: joining collections, splitting camel case, prefix filtering for tab completion, turning enum constants into display names, and building the centred "titleized" lines that head command output.
 
Converts one command argument into a T and supplies the tab completions offered for it.
The base for every Type, supplying a display name derived from the class name, identity and equality helpers, and prefix filtering of tab completions.
A Type base for values drawn from a known set, adding exact, case-insensitive and Levenshtein matching over that set along with the "no match" and "ambiguous" errors configured on TypeAbstractChoice.Config.
Message and Color configuration for TypeAbstractChoice chat responses.
A Type base for parsing that signals failure by throwing.
The base for the numeric types, each parsing through its own wrapper's parse method so that a non-numeric or out-of-range argument fails with the standard "is not a number" message.
A TypeAbstractException that replaces the thrown exception's message with a uniform one reading "x" is not a <type name>.
The base for the boolean types.
 
 
 
 
A Color parsed either from three space-separated components in the range 0 to 255, or from a six-digit hex string that may be prefixed with #.
A Date parsed strictly as yyyy-MM-dd, carrying no time of day and offering no tab completions.
 
An Enchantment matched against its common name as well as its Spigot key, so that both "Fire Protection" and "PROTECTION_FIRE" resolve to the same enchantment.
The base for types backed by a Java enum, matching an argument against the constant names case-insensitively and offering those names as completions.
 
 
 
 
A Material matched by constant name.
A namespaced key as a lowercased String rather than a Bukkit NamespacedKey, defaulting to the minecraft namespace when the argument contains no colon.
Represents a OfflinePlayer seen before by this server, accessible through the Bukkit API via UUID.
A Permission matched against those currently registered with the PluginManager, so a node that no plugin has declared never resolves.
Represents a Player currently logged into this server, accessible through the Bukkit API.
 
An Integer constrained to a range, built per range with TypeRange.get(int, int) rather than shared.
A CommandSender, resolved from the console's reserved id, or from a UUID or the exact name of an online player.
 
The raw argument, passed through unchanged.
The raw argument passed through unchanged, as TypeString does, but named "confirmation text" so that a usage template reads as a prompt to retype something.
A time zone identifier as a String rather than a TimeZone, matched against TimeZone.getAvailableIDs().
A UUID parsed from its standard string form, or a freshly generated random one when the argument is "random".
A World matched by name against the worlds currently loaded on the server, so a world that is not loaded never resolves.
An XMaterial matched by constant name, giving one identifier that resolves across server versions.
This command is used to log unmatched arguments.
 
 
 
 
 
 
A multi-version wrapper that supports Kyori Adventure Components and the MiniMessage format.

This wrapper facilitates sending this wrapped component despite server version differences.
 
 
 
Version-specific API interface for WorldEdit integration across different Minecraft versions.
Version detection and integration hook for WorldEdit plugin.
Version-specific API interface for WorldGuard integration across different Minecraft versions.
Version detection and integration hook for WorldGuard plugin.
Cross-version block data representation using XSeries for compatibility.
Cross-version material data wrapper using XSeries for compatibility.