A Minecraft plugin API

Overview

SpongeAPI Build Status

A mature Minecraft plugin API (not including an implementation), licensed under the MIT License.

Prerequisites

Clone

The following steps will ensure your project is cloned properly.

  1. git clone https://github.com/SpongePowered/SpongeAPI.git
  2. cd SpongeAPI
  3. cp scripts/pre-commit .git/hooks

Building

Note: If you do not have Gradle installed then use ./gradlew for Unix systems or Git Bash and gradlew.bat for Windows systems in place of any 'gradle' command.

In order to build SpongeAPI you simply need to run the gradle command. You can find the compiled JAR file in ./build/libs labeled similarly to 'spongeapi-x.x.x-SNAPSHOT.jar'.

Contributing

Are you a talented programmer looking to contribute some code? We'd love the help!

  • Open a pull request with your changes, following our guidelines.
  • Please follow the above guidelines and requirements for your pull request(s) to be accepted.
Issues
  • Ongoing Minor Issue List (OCD list)

    Ongoing Minor Issue List (OCD list)

    Track at https://github.com/SpongePowered/SpongeAPI/pull/860

    Minor Issues List

    • [ ] Discover Minor Issues
    • [x] SpongeAPI should use quaternions for rotations (provided by flow-math) as they are superior to euler angles and the standard in games. Both options should be provided: what the implementation doesn't support becomes a simple overload (conversions representations are provided by flow-math).
    • [ ] Have checkstyle warn on missing Override annotation
    • [x] Secondary ordinal or Secondary cardinal? Javadoc and field name conflict. Direction:30
    • [x] GameMode javadoc uses fully qualified link to Player
    • [x] ~~Some method declarations in DataHolder are generic although they don't have to. This leads to worse usability / more raw casts. See comment: https://github.com/SpongePowered/SpongeAPI/issues/221#issuecomment-107156044~~ appears to have been refactored so I won't touch
    • [x] GameMode would be better suited in the org.spongepowered.api.data.type package.
    • [x] AbstractInventoryProperty could extend AbstractProperty. See comment: https://github.com/SpongePowered/SpongeAPI/issues/221#issuecomment-119275472 for more
    • [ ] Make UseItemStackEvent.Finish not cancellable, don't allow modifying the duration in Stop and Finish (changes won't be reflected anyway)

    Checkstyle warnings

    | File | Problem | | --- | --- |

    status: accepted priority: low 
    opened by phroa 78
  • Add Attributes API

    Add Attributes API

    Solves #372. I wish I had a more detailed description, but I can't really think of anything to write. This page describes how attributes work. The only remaining issue right now is that i'm not sure of the best way to remove attributes from entities. Please discuss in the comments.

    status: needs review 
    opened by AlphaModder 76
  • Add new high-level command API

    Add new high-level command API

    SpongeAPI | SpongeCommon | SpongeForge

    This is a new API and implementation of a high-level command system to bring the design inline with Sponge's general design and to try to resolve some of the perceived weakness of the system. It was one of the things I said I'd look into when I joined the Sponge team... so here we go!

    Motivation & Goals

    The command system is out of place in the current ecosystem and parts of it can be difficult to use. It doesn't have much in the way of abstraction, and this is hindering potential development of it. I've also seen quite a few plugins eschew the argument system, preferring to just split the string and doing the parsing themselves. Consider the following points:

    • It was built early in Sponge's development (API 2, I believe), and hasn't really seen much daylight since (unlike Texts, which is effectively on version three).
    • The argument (parameter) building is just a load of wrapped elements, and can be difficult to follow (one example of this is Nucleus' TP command)
    • Many many objects can be created for each command, most of them duplicates of one another - we can try to reuse some simpler objects and potentially reduce Sponge's footprint a little bit.
    • It's all API implemented, and cannot take advantage of optimisations through Sponge implementation, nor is it easy to make some changes without causing a major breakage (though this may be by design, see the consideration below)
    • There are few interfaces, mostly final classes, and this makes it hard to make a slow transition to newer structures, effectively making it more difficult to make positive changes in a none breaking manner.

    So, as a result, I've been playing about with creating a new high level system to try to make it easier to resolve, if not resolve, some of the issues that currently plague the system.

    It's not finished, and it certainly doesn't work right now, but with community help, we can flesh out a system that is hopefully more flexible and more usable than before.

    It's also possible that this ends up being a very bad idea and/or more complex than before and thus doesn't get merged. A major goal is to make the command system, particularly parameters/arguments a little easier to work with, if we can't do that, this PR will become worthless.

    Another goal is to modularise the system enough so that we can build other systems around it with ease, for example, some annotation based system could make use of the value parameters independently, and modifiers can be specified independently, without worrying about how the wrapping might otherwise work. However, that's further down the road.

    Consideration: do we want some of this to be put into Common?

    • The purist point of view is that the Sponge API should not contain significant implementation detail. Little implementation should be in the API, except for things that would be of great use of plugin developers (see the PatternMatchingValueParameter, as an example).
    • Having implementation in Common allows us to use the full power of the Sponge system, having wider use of the backend to be able to shortcut some things we might otherwise have had to do in the API.
    • Third party implementations, on the other hand, may benefit from API implementation - this would make the command system consistent amongst different platforms, and as it doesn't need to rely on Minecraft, it doesn't matter where it goes. However, this means another library to consider.
    • A halfway house would be to make the implementation part of the command system an external library shaded in, and only otherwise depends on the API - third party implementations can then depend on our solution, whilst keeping the API clean for developers to work against.

    This is something that needs some careful consideration, but right now, I'm going to keep things split API/Common, because I still think that having the API interfaces and the implementation separate as much as possible is a plus, and this way, it forces me to think about how to keep things separate. It shouldn't be too difficult to move things around if necessary.

    Answer: yes. This is being split into API and Common. There will be a couple of minor useful classes for developers to use in the API, but the bulk of the implementation will be moved into Common.

    Heads up! This will break almost every plugin out there.

    It has been decided that we’re just going to break things. Plugins that use commands will break when this is pulled, no way around that. However, as discussion has shown: it’s the preferred chioce and it makes things much easier on us.

    This is where the developer community comes in!

    This PR is in very early stages, as such, I'm looking for feedback and suggestions on the direction of travel of the API. Things will change, ideas will come and go. It doesn't quite need a review yet, but feedback on the ideas are more than welcome. I will try to write up specifications of what I'm doing as I go in the comments, ready for (constructive) feedback and ideas.

    system: command branch: bleeding status: wip api: 8 
    opened by dualspiral 67
  • Create an additional shaded API jar

    Create an additional shaded API jar

    It would be nice to have an API JAR with dependencies shaded for developers who do not wish to use a build system.

    status: input wanted 
    opened by kashike 62
  • Inventory interface

    Inventory interface

    Adding core inventory interface with essential add/get/clear methods. Includes empty ItemStack interface - awaiting Material interface in pending PRs.


    Edit by handler:

    YouTrack

    opened by viveleroi 61
  • Added a system for creating chat messages with a style.

    Added a system for creating chat messages with a style.

    Supports colors, fancy stylings, and click/hover events.

    The sooner we don't need to use legacy chat the better.

    opened by killjoy1221 53
  • [WIP] Add EconomyService API

    [WIP] Add EconomyService API

    EconomyService work-in-progress posted for public viewing. This is a work in progress and not necessarily the final API. Please discuss accordingly.

    Unfinished: Documentation min/max account amount checking. cleanup Other things I probably missed.

    Before this PR is completed all commits will be squashed.

    status: input wanted priority: high 
    opened by Sleaker 50
  • Added ChatAPI

    Added ChatAPI

    Suggestion for a text/chat API supporting all features introduced in 1.7 and later: https://github.com/Bukkit/Bukkit/pull/1111

    Added integration to TitleAPI. This API is also meant to be used with other features introduced in 1.8 (signs, books...).

    All authors gave permission to relicence it under MIT.

    Due to a lack of matching classes i copy/pasted it just yet. Any suggestions for improvements?

    PR Breakdown:

    This PR adds a builder interface based on a Message to which you append MessageParts to build a rich chat message containing (or not):

    • a TextFormatting compatible text, a localized text, an Entity name, an ItemStack name or an Achievement name ;
    • an optional TextHover text (showing a multi-color multi-line text, an Achievement description, an Entity description or an ItemStack description) ;
    • an optional TextClickAction (executing commands / sending chat message, proposing commands / proposing chat message, or opening urls (actually opens the prompt), ...).

    These messages handle colors and formatting using TextFormatting just like standard messages.

    Many (many) shortcuts have been added to Message to make it easier to append specific elements, see Message static constructors, append methods and insert methods.

    Authors:

    • @bendem did a lot of things
    • @Ribesg did a lot of things
    • @ST-DDT did a lot of things
    opened by ST-DDT 47
  • Add access to GameProfile cache, a GameProfile resolver and Server.getUser(UUID)

    Add access to GameProfile cache, a GameProfile resolver and Server.getUser(UUID)

    This PR adds a service interface that can be used to lookup player UUIDs by name and player names by UUIDS. The service contacts the Mojang auth servers if no cached profile was found in the local cache. It also adds a UserStorage interface to get, create or delete a User object.

    This resolves https://github.com/SpongePowered/SpongeAPI/issues/528

    Access to cached offline user data is important to:

    • complete or validate names of offline players
    • lookup the name of an offline player by an UUID stored by a plugin
    • ban offline players

    Things to discuss:

    Access to the Name Changes API? Mojang provides an API which lists up all names and change dates of a player.

    status: needs review type: enhancement 
    opened by boformer 46
  • [Suggestion] List of all generated chunks

    [Suggestion] List of all generated chunks

    A plugin that I developed for bukkit requires me to create large structures across many chunks. These chunks have to have already been generated (whether they are loaded or not) and devoid of vanilla ores. I've also gotten requests that I make this plugin compatible with already generated worlds. To make doing this easier I request that the following methods be added to the world class:

    /*
    * Returns whether a particular chunk has already generated structures, 'the layer', and 'decorations' 
    * regardless of its load status.
    */
    public boolean isGenerated(int x, int z)
    
    /*
    * Returns a List of all the chunk coordinates that have already been 'decorated' regardless of load 
    * status. The list is a snapshot of the world as it was when the method was called. String can be 
    * replaced by other objects more suited to coordinate retrieval, but otherwise only contain the x & z 
    * coordinate data of the chunks within the world. 
    */
    public List<String> getWorldChunkList()
    

    Edit: clarified what I meant by 'generated' [email protected] pointed out that during chunk generation structures are generated first, then the 'layer' (terrain landforms), and then 'decorators'.

    status: input wanted 
    opened by El-minadero 45
  • feature/resources

    feature/resources

    For tracking purposes

    opened by Zidane 0
  • Account for Unsuccessful Transactions with DataHolderBuilder.add(Key, value)

    Account for Unsuccessful Transactions with DataHolderBuilder.add(Key, value)

    Following #2388, when using builders such as ItemStack.Builder the transaction result of add(Key, value) is silently ignored. This includes adding to readonly values as in that issue, but could also apply to custom data which fails to be applied.

    I don't really have any good proposed solutions; the ones I can think of are throwing an exception, adding a new method/argument which throws an exception, or adding a buildResult() method that returns a Tuple<ItemStack, DataTransactionResult> or similar (but I'm not sure how this accounts for multiple failures). I personally prefer throwing an exception for my use cases (as I'm often hardcoding this and expect it to work), but in general I would think buildResult() is likely better.

    status: needs triage 
    opened by WillBAnders 0
  • Add .entities in EntityVolume, lift from ServerWorld

    Add .entities in EntityVolume, lift from ServerWorld

    SpongeAPI | Sponge

    This PR adds the ability to get all entities from chunks as well as worlds. It is not breaking.

    opened by tyhdefu 0
  • Parameters for user selectors, user or target, and multiple users

    Parameters for user selectors, user or target, and multiple users

    The Parameter class contains helpers for player() (which supports selectors) and playerOrTarget(), but not similar methods for users. There is also a ResourceKeyedValueParameters.MANY_GAME_PROFILES parameter (as well as one for MANY_PLAYERS), but these do not have helpers in Parameter so I am unsure if they are intended to be used publicly.

    I believe what's happening here is that because users must be loaded, it is more performant to start with the player related methods and then fall back to users with some type of Parameter.firstOf(...) approach, though how exactly that's done I'm not sure. Still, it would be helpful to have some methods in Parameter for these situations if possible.

    status: needs triage 
    opened by WillBAnders 3
  • wip on automatically adding main classes to the plugins.json

    wip on automatically adding main classes to the plugins.json

    needs plugin-meta 0.8 to finish + test

    opened by zml2008 0
  • [API-8] Error

    [API-8] Error "types" for CommandResults

    Right now, CommandResults can either be successful or have a Component error message, but if another plugin would like to understand why a command resulted in an error, the Component would have to be parsed by the interested plugin.

    This parsing by hand is fine for the Sponge-specific error messages that take on a consistent format, but if other plugins deviate and write their own error messages, a plugin attempting to capture those errors would have a hard time doing so in a consistent way.

    My proposal are having different error "types" that can be attached to a CommandResult.error() that fall under common error categories. These categories are things like "not having permission" or "command couldn't be parsed," along with a more general "catch all" category for errors that can't otherwise be categorized. There likely wouldn't be too many of these categories.

    As an example use-case, let's take a plugin like WorldEdit which has navigation commands. Using /ascend as an example command, I might want to change the error message that the command gives off if a player does not have permission to be something like "If you'd like to use /ascend, you need to have the Squid rank!" without changing other error messages by mistake. Those messages would of course need to be modified by another plugin, but that second plugin wouldn't need to know anything about the error message it is modifying other than its "type."

    There may be better ways to do this, so I'd love to hear other thoughts, thanks!

    status: input wanted system: command type: feature request api: 8 
    opened by ejm 2
  • DamageEntityPostEvent

    DamageEntityPostEvent

    Hello!

    We currently don't have a DamageEntityPostEvent, making it very difficult to react to damage after it happens. For example, if you were to apply a piece of armor to someone using the DamageEntityEvent, the armor would be factored into the calculation and take damage, too. For this reason, we need a DamageEntityPostEvent. Here's a list of attributes it would need to have:

    • Damaged entity
    • Original damage before anything was changed
    • Base Damage
    • Final damage
    • Whether a modifier was applicable (basically isApplicable())
    • List of modifiers
    • Whether it caused death
    • Damage source

    If I forgot any attributes, feel free to add them!

    status: needs triage 
    opened by Lucavon 0
  • [WIP] Add short-hand registry getters

    [WIP] Add short-hand registry getters

    For Game/Server scope, a REGISTRY field

    For world scope, a static util method that is passed a ServerWorld

    https://github.com/SpongePowered/Sponge/commit/cb8be18c052acb545a1d2c6fc463e3af238898ae

    Signed-off-by: Chris Sanders [email protected]

    type: enhancement status: wip api: 8 system: registry 
    opened by Zidane 2
  • [API-8] Make TabListEntry serializable, untether from TabList

    [API-8] Make TabListEntry serializable, untether from TabList

    SpongeAPI | Sponge (TODO)

    The functionality previously in TabList now exists as a Key for entries and as methods in Audience.

    Essentially, the idea is that when you offer a player these entries, the implementation will compare to the current state of a player's tab list and determine what changes need to be sent to the client. Additionally, by making TAB_LIST_ENTRIES a key, we can take advantage of ChangeDataHolderEvent.ValueChange to regulate changes to the tab list by Vanilla or other plugins.

    api: 8 
    opened by ejm 6
Releases(v7.3.0)
  • v7.3.0(Aug 30, 2020)

    Some of the highlights of this build are:

    • Updated Configurate to 3.7.1.
    • Added totem particle effect to ParticleTypes.
    • Added SerializationBehaviors.METADATA_ONLY as a world serialisation type, meaning you can create worlds where chunks are not saved - good for game worlds that require resetting between rounds by just unloading and reloading them.
    • Added select and whilst to BlockRay to make how to use a block ray clearer.
    • Added a SaveChunkEvent.
    • Added an inbuilt Placeholder system for storing and using text tokens across plugins without the need for an external dependency.
    • Added ability to see which flags were used in a command via the CommandContext.
    • Added isAvailable to Location for checking if a Location's Extent is still valid.
    • Deprecated some methods on KickPlayerEvent and completely deprecated LaunchProjectileEvent.
    • Minor updates to some Javadocs.
    Source code(tar.gz)
    Source code(zip)
    spongeapi-7.3.0-javadoc.jar(8.04 MB)
    spongeapi-7.3.0-shaded.jar(8.73 MB)
    spongeapi-7.3.0.jar(2.16 MB)
  • v7.2.0(Mar 29, 2020)

    Some of the highlights are (this is not an exhasutive list):

    • New Data manipulators
      • PlainPagedData for unsigned books
      • ActiveItemData to access the item a Living entity is currently using
      • PotionTypeData and associated PotionType for getting the type of a potion
      • PotionColorData for getting the color of a potion
      • TargetedEntityData for use with ShulkerBullets
      • DisabledSlotsData for ArmorStands
      • AccelerationData for Fireballs
    • Various event additions and updates
      • Added UpdateAnvilEvent
      • Updated ChangeEntityEquipmentEvents
      • Added ClickInventoryEvent.Creative
      • Added PlayerSoundEvents
      • Added Position and Rotation subevents for MoveEntityEvent
      • Added many EventContextKeys
        • Many block event keys were added
        • USED_HAND has been added for interact events
    • Service updates
      • ContextualServices have been updated with better documentation
      • EconomyService now supports account deletions
    • Minor command updates
      • Added GenericArguments#requiringPermissionWeak
      • Added ability to filter commands based on source permission
      • Make the PatternMatchingElement not use regex by default for simpler matching, allowing elements containing [] to be matched with ease
    • Add Shulker and ShulkerBullet intefaces for representing these entities
    • Added Text replacement and removal methods
    • Updated Metrics collection states
    • Upgrade of the Sponge Schematic format to v2
    • Transactions now contain any intermediary transactions that took place to explain how a transaction came to be
    • Ability to get and set the phase of an active EnderDragon
    • Update Configurate to version 3.7
    Source code(tar.gz)
    Source code(zip)
    spongeapi-7.2.0-javadoc.jar(8.00 MB)
    spongeapi-7.2.0-shaded.jar(8.17 MB)
  • v7.1.0(Sep 6, 2018)

    With this release, SpongeAPI has a global MetricsConfigurationManager for specifying the configuration flags for plugins to determine whether metrics are enabled etc.

    Full Changelog

    Dependencies:

    • Configurate version bump from 3.3 to 3.6

    Additions:

    • Timings#generateReport
    • MetricsConfigurationManager
    • BlockTrait#parseValue
    • Add CommandArgs snapshots
    • Add CommandContext#requireOne
    • Add choicesInsensitive for command arguments
    • Add Keys.INVULNERABILITY_TICKS and related data.
    • Add ElytraFlying data
    • Add CollectionValue#copy overrides for better usability of the values themselves to allow copying the value itself and the underlying collection. No guarantees are being made about the elements contained within the collection being copied.
    • Add User#getPosition and other related position methods to allow offline user location manipulation.
    • Added missing EventContextKeys to signify liquid physics during block events
    • Added ClickInventoryEvent.Recipe and sub events
    • Added Crafting events
    • Added InventoryTransformations for allowing more expected transformation usage of inventories
    • Added ItemStack#of(ItemType) to create a single sized item stack of that type
    • Moved ItemStack comparators into the implementation
      • This isn't a breaking change since the fields are still the same declarations, just the initialization is different. The implemented classes previously available were package private and not intended to be used outside the comparators.
    • Add Chunk#getInhabitedTime()

    Fixes:

    Source code(tar.gz)
    Source code(zip)
    spongeapi-7.1.0-javadoc.jar(7.78 MB)
    spongeapi-7.1.0-shaded.jar(8.10 MB)
  • v6.0.0(May 2, 2017)

    Release API revision 6.0.0. This release has breaking changes in comparison to API 5.x:

    • Removing long deprecated methods in GameProfileManager
    • Default implement PluginContainer#getMinecraftVersion()
    • Add isMainThread check to the game
    • Refactor RespawnPlayerEvent to properly consider player cloning during respawns
    • Add methods to ChannelRegistrar for getting existing channels
    • Deprecate several entity meta related CatalogTypes due to Minecraft 1.11.x changes
    • Deprecate HorseVariant
    • Deprecate SkeletonType
    • Deprecate ElderGuardianData
    • Deprecate ZombieType
    • Deprecate ZombieData
    • Add Husk and ZombieVillager as new Entity interfaces
    • Add Action Bar Title options
    • Update MobSpawnerData to use EntityArchetypes
    • Update TradeOffer to provide a World context, primarily useful for locating structures in worlds
    • Expand Horse related data. Add Llama data.
    • Add doWeatherCycle and maxEntityCramming gamerules
    • Update SoundTypes for 1.11 additions
    • Update Enchantments for 1.11 additions
    • Rename Skeleton entity interface hierarchy, somewhat backwards compatible. Adds WitherSkeleton, WhiteSkeleton, and Stray.
    • Expose plugin dependencies with plugin-meta
    • Add Minecraft container to Platform
    • Add HitTarget for targeting events with blocks or entities
    • Add getTargetPos and isUsingBlock to TabCompleteEvent
    • Add helper methods to GameProfile for creating profiles
    • Add createEntity and spawnEntity methods to Location
    • Add missing catalog types in CatalogTypes
    • Add method to create an entity naturally in a world
    • Add EndGateway
    • Add Structure and Structure related data
    • Refactor Statistics API for full implementation
    • Add LocatableBlock for high use events, replaces BlockSnapshot in certain events as causes.
    • Add Extent#getHighestBlockAt
    • Add queryAny and containsAny for Inventory
    • Move some registrations of type serializers into the GameRegistry
    • Update ProjectileSources
    • Replace Passenger Entity lists with UUID lists
    • Add BlockState.StateMatcher for loose state matching specific properties and values
    • Refactor ChunkGeneration events
    • Add shield damage modiifiers
    • Update AgeableData with minor changes to handle implementation required changes for the API
    • Add methods to require data with the Data API -Add ChunkTicketManager$LoadingTicket#getWorld() for better use with plugins and mods
    • Add AreaEffectCloudData updates
    • Clean up code to fix a majority of codestyle issues
    • Refactor Event generation to use precompiled sources generated at project setup, Optimizes event creation
    • Make use of DismountTypes in events
    • Add Player chat simulation API
    • Add Absorption Data
    • Make all living entities ProjectileSources
    • Add methods to control spectator cameras
    • Add WorldArchetype#randomSeed
    • TextSerializer changes, making all serializers catalog types
    • Add fossil populator with 1.11 changes
    • Retrun Archetype#create types for better usage
    • Add ItemStack#isEmpty to signifiy that the itemstack is not usable wwith the game
    • Refactor the way custom data is registered with the DataManager to use DataRegistrations.Provides the first step towards dynamic custom data generation
    • Add JSONDataFormat
    • Add GameRule removal
    • Add annotations to channel bindings
    • Enhance injection support
    • Refactor DamageEntityEvent and other modifier related events to use ModifierFunctions.

    Signed-off-by: Gabriel Harris-Rouquette [email protected]

    Source code(tar.gz)
    Source code(zip)
  • v5.1.0(Feb 25, 2017)

    Summary of changes since API 5.0.0 release:

    • Minor changes to default implement PluginContainer#getMinecraftVersion
    • Add isMainThread check for server threadedness
    • Update RespawnPlayerEvent to handle player cloning during respawn
    • Add methods to ChannelRegistrar for getting existing channels
    • Add AreaEffectCloudData for manipulating AreaEffectClouds
    • Add Minecraft container to Platform
    • Add NamedCause 'HitTarget' for events targeting a block or an entity
    • Add #getTargetPos and #isUsingBlock to TabCompleteEvent
    • Add More NamedCauses for ChangeBlockEvent.Pre
    • Add LocatableBlock for location based events where a snapshot is unnecessary
    • Add NamedCause for block decay
    • Make EnderDragon a ProjectileSource to launch DragonFireballs
    • Add BlockState.StateMatcher for matching BlockStates specific values
    • Provide CatalogtypeAlreadyRegisteredException a useful message
    • Add methods to CompositeValueStore and ValueContainer to require a value returned
    • Add ChunkTicketManager#loadingTicket#getCompanionData() for mod compatibility
    • Improve event generation performance. All events are pre-compiled for the project.
    • Fix all checkstyle issues and codestyle issues
    • Enhance DataTransactionResult with some functional methods for consumers and throwing exceptions
    • Add spectator controlling methods to Player
    • Add API to simulate Player chatting

    All of this is a minor addition for API 5. API 5 is the last major release to target Minecraft 1.10.2 as API 6 requires deprecation changes and some minor breaking changes to target Minecraft 1.11.2 feature changes.

    Signed-off-by: Gabriel Harris-Rouquette [email protected]

    Source code(tar.gz)
    Source code(zip)
    spongeapi-5.1.0-javadoc.jar(7.09 MB)
    spongeapi-5.1.0-shaded.jar(7.15 MB)
    spongeapi-5.1.0-sources.jar(2.24 MB)
  • v3.0.0(Jan 1, 2016)

  • v2.0(Apr 21, 2015)

  • v1.0(Dec 1, 2014)

Owner
SpongePowered
Organization behind the Sponge Project
SpongePowered
A fast, customizable and compatible open source server for Minecraft: Java Edition

Glowstone A fast, customizable and compatible open source server for Minecraft: Java Edition. Introduction Glowstone is a lightweight, from scratch, o

Glowstone Project 1.5k Sep 5, 2021
Equivalent Exchange 3 Apache 2 Equivalent Exchange 3 pahimar Equivalent-Exchange-3. Mods for Minecraft. License: Apache 2 , .

Welcome to Equivalent Exchange 3! All versions are available here Minecraft Forums page Compiling EE3 - For those that want the latest unreleased feat

Rob Davis 722 Aug 24, 2021
🗺️ Minecraft map editor and mod

A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting! Use it in creative, survival in sing

EngineHub 2.1k Sep 14, 2021
MinerHat: Mining cryptocurrency with your Minecraft server (and player) ⛏

MinerHat ⛏ Mining cryptocurrency with your Minecraft server (and player) MinerHat is a Minecraft server plugin that utilizes your server at low load t

Alan_Richard 14 Aug 16, 2021
Primary repo for the Figura Project

Downloads Modrinth Curseforge Join the Discord! Figura REQUIRES the Fabric API to run. You can find the Fabric API here. Figura The Figura Project is

Zandra 152 Sep 7, 2021
An efficient map viewer for Minecraft seed in a nice GUI with utilities without ever needing to install Minecraft.

To download it head to the Releases section. To run it: either double click it on it if you have the Java Runtime (JRE) or use the command line (shift

Neil 63 Sep 13, 2021
Minecraft Spigot 1.16 - plugin for compass tracking other players. MVP contains tracking closest player available.

Compass Tracker Overview Minecraft Spigot 1.16 Plugin. Plugin sets compass target to closest player in the overworld. Created to use with my friends t

INNIX 3 Jun 1, 2021
Staff-Mode plugin for Minecraft servers.

DONUTSTAFF A Simple Staff Mode plugin for you Minecraft Server. This plugin goals to lightweight and fast. At the moment, is on a BETA phase, so pleas

null 11 Jul 21, 2021
A mod to compare a seed's terrain to the current terrain

SeedMapper In-game Minecraft mod that allows you to compare natural terrain to your current terrain. For questions please go to my Discord. Disclaimer

Fred 35 Sep 6, 2021
A Minecraft DM manager

Livemessage Check out the trailer video here! Livemessage is a client-sided DM manager for Minecraft 1.12.2. It is inspired by older chat applications

Jasper Rebane 48 Sep 2, 2021
A modern engine for modded Minecraft.

Flywheel A modern engine for modded Minecraft. About The goal of this project is to provide tools for mod developers so they no longer have to worry a

null 32 Sep 15, 2021
An elegant Minecraft mod template for the Fabric mod loader

Fabric Example Mod Lorem ipsum dolor sit amet Example is a Minecraft mod that lorem ipsum dolor sit amet. Ut mi lectus, egestas a justo nec, hendrerit

Axieum 19 Aug 6, 2021
Raven b+ : Raven b3 but better.

Raven B+ A minecraft hacked client made by Blowsy, code deobfuscated and partially remapped by JMRaichDev and improved by me. https://ravenclient.cf/

Kopamed 44 Sep 17, 2021
A Fabric mod designed to improve the chunk performance of Minecraft.

C^2M-Engine A Fabric mod designed to improve the chunk performance of Minecraft. So what is C2ME? C^2M-Engine, or C2ME for short, is a Fabric mod desi

null 196 Sep 14, 2021
A Java user-interface library with support for Minecraft.

interfaces Building interfaces since 2021. interfaces is a builder-style user interface library designed to make creation of flexible user interfaces

Incendo 20 Sep 16, 2021
A minecraft mod that allows additional windows to be opened alongside the game

Breakout API BreakoutAPI is a Minecraft mod which allows developers to create new windows that run alongside Minecraft. All the windows run on the sam

Raph Hennessy 9 May 31, 2021
Fabric mod for rainbow backgrounds in minecraft guis

rainbowify rainbowify is a Fabric mod for Minecraft 1.17 that adds a customizable rainbow background to many Minecraft HUDs. Discord: https://discord.

Lennox 11 Aug 27, 2021
Bridge Home Assistant with Minecraft

HomeAssistantMC is a Minecraft mod that integrates Home Assistant to Minecraft, allowing retrieval of entity states and calling of services. This allo

Muhd Hakim 19 Sep 7, 2021
A mod for 1.17 which fixes common bugs in Minecraft

Astatine Astatine is a mod for Minecraft which fixes common bugs in the game Astatine uses the Fabric Mod Loader, Forge will not be supported. About A

Conor Byrne 4 Jul 8, 2021