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.
Comments
  • 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
  • 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
  • [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' .@gratimax pointed out that during chunk generation structures are generated first, then the 'layer' (terrain landforms), and then 'decorators'.

    status: input wanted 
    opened by k-a-mendoza 45
  • Add basic block events

    Add basic block events

    As the block API got merged recently, I made some basic block events. Even if this PR won't get merged, it would not hurt to discuss about block events.

    Edit: There is also issue http://issues.spongepowered.org/youtrack/issue/SPONGE-62

    Edit 2: This also contains rewritten cause and reason system at now... I had to include then as I really needed them for certain events.

    system: event 
    opened by bensku 43
  • Refactor recipes

    Refactor recipes

    API | Common Adds #1027 Resolves #1028


    This PR changes ShapedCraftingRecipe (previously ShapedRecipe) from using an x and y int-based system to an aisle-based system, with char being used to get/set ingredients.

    Example usage: sugar

    /*
     * 1 x 1
     *
     * ---------
     * | REEDS |
     * ---------
     */
    // Re-create the sugar recipe
    ShapedCraftingRecipe.builder()
        .aisle(
            "#"
        )
        .where('#', ItemStack.builder().itemType(ItemTypes.REEDS).build())
        .result(ItemStack.builder().itemType(ItemTypes.SUGAR).build())
        .build();
    

    lever

    /*
     * 2 x 1
     *
     * ---------------
     * |    STICK    |
     * ---------------
     * | COBBLESTONE |
     * ---------------
     */
    // Re-create the lever recipe
    ShapedCraftingRecipe.builder()
        .aisle(
            "X",
            "#"
        )
        .where('X', ItemStack.builder().itemType(ItemTypes.STICK).build())
        .where('#', ItemStack.builder().itemType(ItemTypes.COBBLESTONE).build())
        .result(ItemStack.builder().itemType(ItemTypes.LEVER).build())
        .build();
    

    ladders

    /*
     * 3 x 3
     *
     * -------------------------
     * | STICK |       | STICK |
     * -------------------------
     * | STICK | STICK | STICK |
     * -------------------------
     * | STICK |       | STICK |
     * -------------------------
     */
    // Re-create the ladder recipe
    ShapedCraftingRecipe.builder()
        .aisle(
            "# #",
            "###",
            "# #"
        )
        .where('#', ItemStack.builder().itemType(ItemTypes.STICK).build())
        .result(ItemStack.builder().itemType(ItemTypes.LADDER).quantity(3).build())
        .build();
    

    bedrock

    /*
     * 3 x 3
     *
     * ---------------------
     * | BED |  BED  | BED |
     * ---------------------
     * | BED | STONE | BED |
     * ---------------------
     * | BED |  BED  | BED |
     * ---------------------
     */
    ShapedCraftingRecipe.builder()
        .aisle(
            "BBB",
            "BRB",
            "BBB"
        )
        .where('B', ItemStack.builder().itemType(ItemTypes.BED).build())
        .where('R', ItemStack.builder().itemType(ItemTypes.STONE).build())
        .result(ItemStack.builder().itemType(ItemTypes.BEDROCK).build())
        .build();
    
    status: input wanted type: enhancement status: wip 
    opened by kashike 41
  • Allow plugin metadata to be provided in a file instead of in the annotation

    Allow plugin metadata to be provided in a file instead of in the annotation

    Currently, the only standardized way to provide plugin metadata (plugin name, version, dependencies, ...) is through the @Plugin annotation directly on the main class. We should consider adding a way for metadata to be specified in a file additionally.

    There are basically 3 ways we can consider:

    • (~~Provide no file metadata:~~ File metadata is quite important as explained in https://github.com/SpongePowered/SpongeAPI/issues/624#issuecomment-100658625)
    • mcmod.info: This is currently supported in Sponge, but not in SpongeVanilla (yet?). It provides most metadata we need, although we would probably need to extend it a bit to provide all the information needed for Ore. This format is mostly standardized in the Minecraft modding platform, so we should definitely consider using this because it's also supported for a lot of mods.
    • An improved mcmod.info format: This was proposed in MinecraftForge/FML#637. Especially semver or to be able to tell which version is "newer" is quite important for dependency resolution. Additionally, because this would be a new, improved format we could also standardize a few additional properties we need in Ore for an unified file format to provide mod metadata.
    • (~~A custom format only for Sponge:~~ This is not really a good option because it would be a format that can be only used for Sponge and would kinda defeat the points of a standardized mod metadata format. Would allow most control but has only downsides otherwise.)

    Note: This is waiting on FML/Forge 1.8.4 for a decision currently.

    status: accepted 
    opened by stephan-gh 41
  • API10 - MC 1.19.2 Overview

    API10 - MC 1.19.2 Overview

    SpongeAPI | Sponge

    see https://github.com/SpongePowered/SpongeAPI/pull/2433 for previous work

    Chat/Messages/Commands

    https://github.com/KyoriPowered/adventure/issues/765 / https://github.com/KyoriPowered/adventure/pull/777

    • [ ] Signed Text Messages (pending Adventure Library Update)
    • [ ] ChatType (pending Adventure Library Update)
    • [ ] interface for signed message
    • [ ] command parameter for signed message

    Datapacks

    missing API DataPackTypes:

    • [ ] game_event tag + registry
    • [ ] loot_tables
    • [ ] worldgen/world_preset (not needed?)
    • [ ] worldgen/flat_level_generator_preset (not needed?)

    Inventory

    • [ ] deprecate Inventory#get with child?
    • [ ] containsInventory might not work
    • [ ] ContainerTypes missing inventories?
    • [ ] Entity dependent Container Creation (horse/villager)

    Entity

    • [ ] missing entity categories

    Keys Refactor

    The Keys class is getting quite big. Should we separate them depending on what they apply to. These might contain duplicates as Keys like DISPLAY_NAME apply to many things. e.g.

    • Entity
    • Block
    • World
    • etc.

    Other

    -[ ] setting TradeOfferGenerators for Villagers

    api: 10 
    opened by Faithcaio 0
  • Fix contribution guidelines link

    Fix contribution guidelines link

    The previous link was liking to a dead page. This is now changed to always point to the newest version of the contribution guidelines.

    Even though this is currently merging into api-8 this problem exists in the other branches as well.

    opened by QuickWrite 1
  • a modular awakening begins?

    a modular awakening begins?

    one of many (so many) steps towards supporting ModLauncher 10 on the impl side

    • fix eig
    • decide what to do with maven-artifact
    • longer-term, get adventure and configurate proper module metadata files
    • can we avoid thinking about this?
    opened by zml2008 0
  • Expose adventure's new ComponentLogger to plugins

    Expose adventure's new ComponentLogger to plugins

    SpongeAPI | Sponge

    As a consequence, SLF4J is an API dependency again (it's always existed at some level in the implementations). We don't really want that, but how long can we avoid it if MC's switch to slf4j leads to developers expecting SLF4J to be present?

    Now, we currently expose component logging functionality on SpongeVanilla by injecting into log4j -- that allows passing components to a logger the exact same way from the plugin developer side. This takes a fair bit of mucking about with Log4J internals, though so it is vulnerable to being disrupted by changes on Mojang's side. This functionality also hasn't been implemented on SpongeForge, and I am unsure exactly how much work it would be to do so.

    Use of Adventure's ComponentLogger wrapper results in less work on our side, but adds more places for plugin developers to be confused about which logging interfaces should be used.

    Thoughts?

    status: input wanted type: enhancement system: text system: plugin api: 8 
    opened by zml2008 0
  • Add FluidState to LocatableBlock

    Add FluidState to LocatableBlock

    SpongeAPI | Sponge

    At some point I had this in my workspace, not sure why, but saw an opportunity to improve the quality of usage for fluid states during various ChangeBlockEvent.Pre

    opened by gabizou 0
  • generate BlockStateKeys

    generate BlockStateKeys

    SpongeAPI | Sponge

    generate Keys for all StateProperties

    For reference: https://github.com/SpongePowered/SpongeAPI/pull/2438 https://github.com/SpongePowered/SpongeAPI/pull/2437

    system: data api: 8 
    opened by Faithcaio 0
Releases(v9.0.0)
  • v9.0.0(May 19, 2022)

    What's Changed

    • Remove the restriction that listener methods must be public by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2376
    • Initial update of block states & block entities for 1.17 by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2357
    • [API9] World Generation by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2404
    • API9 BlockstateProperty by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2418
    • remove structure config api by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2420
    • 1.18.2 by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2415

    Full Changelog: https://github.com/SpongePowered/SpongeAPI/compare/v8.1.0...v9.0.0

    Source code(tar.gz)
    Source code(zip)
    spongeapi-9.0.0.jar(1.82 MB)
  • v8.1.0(May 19, 2022)

    What's Changed

    • New dependency: MiniMessage is now available as part of SpongeAPI for text templating. See the Kyori docs for more on how to use MiniMessage.
    • World management updates, including the ability to name worlds and grab worlds of a specific type easily
    • Added being able to get the entity type that a spawn egg will produce
    • Added the ability to grab inventory titles and the menu it was built off, if available
    • Make ItemStack also implement HoverEventSource by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2414
    • Expose BlockState string representation by @Yeregorix in https://github.com/SpongePowered/SpongeAPI/pull/2425

    New Contributors

    • @Yeregorix made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2425

    Full Changelog: https://github.com/SpongePowered/SpongeAPI/compare/v8.0.0...v8.1.0

    Source code(tar.gz)
    Source code(zip)
    spongeapi-8.1.0.jar(1.81 MB)
  • v8.0.0(Jan 8, 2022)

    SpongeAPI 8 is our new API version for Minecraft 1.16.5.

    See our status update here

    What's Changed

    • Invantory for API8 Inventory Builders by @Faithcaio
      • Builders https://github.com/SpongePowered/SpongeAPI/pull/1959
      • SlotIndexes https://github.com/SpongePowered/SpongeAPI/pull/1998
      • Queries by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2050
    • Migrate build scripts to Kotlin-DSL by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/1980
    • Remove the CommandSource in favor of Causes. by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2004
    • Fix missing in string -> catalog key migration by @liach in https://github.com/SpongePowered/SpongeAPI/pull/2071
    • Make TradeOfferGenerator extend a BiFunction instead to handle 1.14 implementation. by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2070
    • Make StateMatcher serializable by @Katrix in https://github.com/SpongePowered/SpongeAPI/pull/2053
    • Add compact methods to Text by @Katrix in https://github.com/SpongePowered/SpongeAPI/pull/2054
    • Add new 1.14 Merchant, Raid and Villager related features. #2068 #2069 by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2073
    • Add TropicalFishShape Catalog and Data values to Tropical Fish. by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2076
    • Add missing entity data values, Sittable and Spawner by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2077
    • Add missing data values to ItemFrame, Sheep and Vex. by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2080
    • Add DataValues to the BlockEntities where they belong. [API-8] by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2081
    • Fix javadoc and checkstyle warnings by @parlough in https://github.com/SpongePowered/SpongeAPI/pull/2087
    • Recipe API for API8 by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2082
    • Add supplier overloads to all builder methods and trait -> property by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2091
    • Fix missing supplier overload for persisted biome type in VirtualBiomeType by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2103
    • Update Chest API for new merging logic. by @TheGlitch76 in https://github.com/SpongePowered/SpongeAPI/pull/2106
    • Api8 Keys by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2108
    • Add new features to trade offers [API8]. by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2101
    • Clarify some stuff with Server players on a server by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2131
    • Yes, EMPTY is a fluid. by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2136
    • Add direction methods on Entity and Living by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2139
    • API8 - DataStore by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2134
    • Adjust NamedCatalogType and NamedCatalogBuilder interfaces for expectations by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2140
    • Improve Tristate by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2137
    • Remove non-existant feature configs by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2075
    • Add Entity Attribute API [Redux of #1428] by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2085
    • Remove HandInteractEvent and sub events by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2096
    • Updates to the Command API to support implementation by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2066
    • Remove EconomyService#getCurrencies by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2143
    • Add Location#getBlockType by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2145
    • Add ScheduledTask#isCancelled() by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2146
    • Add ExplosionEvent.Detonate#filterAffectedLocations by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2148
    • Replace Service Manager with Provider by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2133
    • Add a key which specifies if a player has viewed the credits by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2161
    • Add view-distance setter by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2155
    • Add marker for classes that should not be stored by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2154
    • Improve JoinData by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2153
    • Add Keys#TRANSIENT by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2162
    • Add a way to get all unique and virtual accounts from the economy service by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2152
    • Command API tweaks by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2159
    • Channel API Improvements + Client login phase by @Cybermaxke in https://github.com/SpongePowered/SpongeAPI/pull/2008
    • Add streamAll method to UserManager by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2166
    • Drop modifier templates. And remove attribute that was added in a later version of the game. Match registry names by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2168
    • Remove Cause parameters from Account methods by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2169
    • Make generic ExplosionEvent cancellable by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2167
    • Rename fields again to match registry names. by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2171
    • Return generic type E extends Engine in EngineLifecycleEvent instead of Engine by @i509VCB in https://github.com/SpongePowered/SpongeAPI/pull/2170
    • UserManager#match now returns a Stream by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2173
    • RegisterCommandEvent now acts on commands, not registrars (specifically) by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2177
    • Implement Adventure by @kashike in https://github.com/SpongePowered/SpongeAPI/pull/2180
    • Redo some of the Parameter.Key generics by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2181
    • Add command flags by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2184
    • Add exception handlers for the network channel. by @Cybermaxke in https://github.com/SpongePowered/SpongeAPI/pull/2183
    • Create a SubjectProxy and separate CommandCause from CommandContext by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2191
    • Use a double for damage related keys. by @Cybermaxke in https://github.com/SpongePowered/SpongeAPI/pull/2174
    • Nuke DummyObjectProvider by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2190
    • Remove the concept of read-only orders by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2189
    • Add ability to programmatically create selectors by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2194
    • Add support for non-Sponge/Brig client completions. by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2197
    • Add MovementTypes#CHORUS_FRUIT by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2204
    • Corrections for the World API. by @Zidane in https://github.com/SpongePowered/SpongeAPI/pull/2203
    • Define some common parameters by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2199
    • Remove unused dependencies by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2207
    • Move ban classes to ban package by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2210
    • Fix event-gen factory by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2185
    • Change GameProfileManager method signature to return a map by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2211
    • Add Keys#SLEEP_TIMER by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2212
    • Add missing Living value accessors by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2144
    • Remove EconomyService#deleteAccount default implementation by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2209
    • 1.15 by @kashike in https://github.com/SpongePowered/SpongeAPI/pull/2205
    • Add Audiences#withPermission by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2215
    • Add method to send updated command tree to a player by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2221
    • Add an API method to access the Minecraft DataVersion by @me4502 in https://github.com/SpongePowered/SpongeAPI/pull/2220
    • Update ParrotType IDs by @Grinch in https://github.com/SpongePowered/SpongeAPI/pull/2223
    • Update Key JavaDocs + Rename SlabPortions.FULL -> DOUBLE by @Grinch in https://github.com/SpongePowered/SpongeAPI/pull/2226
    • adventure: Update for api changes by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2229
    • Add ability to get Command.Parameterized from CommandContext (#2217) by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2227
    • build: fix guice exclusion for configurate by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2228
    • Make KickPlayerEvent cancellable by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2179
    • Another Round of Data (API Edition) by @Grinch in https://github.com/SpongePowered/SpongeAPI/pull/2231
    • API8 Recipes by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2236
    • Add getWorldUUID to SaveChunkEvent. Fixes #2233 by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2234
    • Update to licenser 0.5 by @jamierocks in https://github.com/SpongePowered/SpongeAPI/pull/2239
    • API8 Advancements by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2238
    • Player has an identity by @kashike in https://github.com/SpongePowered/SpongeAPI/pull/2248
    • API8 DataStores by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2250
    • Add MANY_GAME_PROFILES parameter, repurpose GAME_PROFILE to only return one. by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2240
    • Add missing triggers by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2242
    • Add missing locked field in Score class by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2243
    • Genericize Palettes by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2244
    • Add VolumeStream API by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2241
    • API additions + changes for Configurate 4 by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2193
    • States cannot be cataloged so a backup system. by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2219
    • Removing Guava usage by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2246
    • Add Keys#CUSTOM_MODEL_DATA by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2261
    • Refactor ChangeBlockEvent with All, Post, and Pre by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2267
    • Remove AABB implementation from the API by @kashike in https://github.com/SpongePowered/SpongeAPI/pull/2269
    • ResourceKey improvements by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2268
    • Add keys for data from client settings by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2265
    • 1.16.4 by @kashike in https://github.com/SpongePowered/SpongeAPI/pull/2263
    • enhance InteractEvents by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2278
    • Pushes default Parameter handling to the CommandContext Implementation by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2286
    • Feature/datapack/dimension by @Zidane in https://github.com/SpongePowered/SpongeAPI/pull/2285
    • Some minor tweaks to the Commands API by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2288
    • DataContentUpdaters by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2297
    • ChunkEvent by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2301
    • Change TextComponent in MapDecoration Builder -> Component by @tyhdefu in https://github.com/SpongePowered/SpongeAPI/pull/2306
    • Add support for ResourceKey in advancement background by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2309
    • Add CompletableFutures to Ban/Whitelist Service by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2307
    • Drop get prefixes from almost all things by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2310
    • Introduce NotificationTickets by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2304
    • Update and implement checkstyle by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2237
    • Remove Nameable interface from Trigger by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2308
    • Update Guice 4.1.0 -> 5.0.1 by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2311
    • Add missing throws to Favicon.Factory methods by @jpenilla in https://github.com/SpongePowered/SpongeAPI/pull/2323
    • More command tweaks by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2296
    • Reroute BlockSnapshot#empty into a factory, and add misc missing javadocs by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2150
    • Add operator parameter by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2327
    • Fix range client completions by @jpenilla in https://github.com/SpongePowered/SpongeAPI/pull/2329
    • Rename methods that don't do well without "get" to "findX/findXOrCreate" by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2332
    • Add ClientSuggestionProvider to add client-based suggestions for things like biomes by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2334
    • Improve isChunkLoaded and hasChunk javadocs by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2338
    • Add getter for effective plugin data collection state by @jamierocks in https://github.com/SpongePowered/SpongeAPI/pull/2317
    • Update for dropping get prefix in plugin-meta/-spi by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2345
    • Add CommandCompletion and associated builder by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2347
    • Rename ClientCompletionKey and ClientSuggestionProvider by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2348
    • Implement error-prone for basic analysis by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2344
    • Remove BanService#hasBan and BanService#isBanned by @ImMorpheus in https://github.com/SpongePowered/SpongeAPI/pull/2314
    • Move timings to it's own library by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2346
    • Update Chunk API elements by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2272
    • Rename SIDEBAR_TEAM_NO_COLOR to SIDEBAR, allow getting DisplaySlot by team colour by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2350
    • CollideBlockEvents by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2349
    • Purge the TypeTokens constant holder class by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2352 *Improve PlayerChatEvent by @Faithcaio in https://github.com/SpongePowered/SpongeAPI/pull/2340
    • Add ParticleOptions.SCALE back to the API by @Wolfizen in https://github.com/SpongePowered/SpongeAPI/pull/2330
    • World Borders by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2359 *Tweaks to permissions API by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2065
    • Make ServerLocation implement DataSerializable by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2341
    • Add TwoDimensionalPortal for teleport events by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2322
    • Start of a Chunk Manager by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2274
    • Allow the Registry Entry parameter to scan multiple registry holders. by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2368
    • Add DamageType.Builder by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2271
    • Add shorthand value fetchers to DataTransactionResult by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2375
    • Make UserManager load users async by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2378
    • Add an event to be fired when the game is performing its final shutdown by @zml2008 in https://github.com/SpongePowered/SpongeAPI/pull/2379
    • Support Schematic Specification v3 by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2355
    • Keys.INACCURACY by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2370
    • Adjustments to Chunk and World interfaces by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2381
    • Add UNKNOWN portal type, make generatePortal return a boolean by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2386
    • Bump to plugin-spi 0.3.0 by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2390
    • Add EntityCategory by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2394
    • Make the plugin optional for CommandMapping by @dualspiral in https://github.com/SpongePowered/SpongeAPI/pull/2396
    • Implement ComponentLike for ItemStack by @ItsDoot in https://github.com/SpongePowered/SpongeAPI/pull/2400
    • Improve PotionEffect(.Builder) javadocs by @qixils in https://github.com/SpongePowered/SpongeAPI/pull/2403
    • Add short-hand registry getters by @Zidane in https://github.com/SpongePowered/SpongeAPI/pull/2372
    • feature/resources by @Zidane in https://github.com/SpongePowered/SpongeAPI/pull/2393
    • Vanish API 2.0 by @gabizou in https://github.com/SpongePowered/SpongeAPI/pull/2405

    New Contributors

    • @liach made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2071
    • @Katrix made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2053
    • @TheGlitch76 made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2106
    • @tyhdefu made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2306
    • @jpenilla made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2323
    • @ejm made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2326
    • @Wolfizen made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2330
    • @qixils made their first contribution in https://github.com/SpongePowered/SpongeAPI/pull/2403

    Full Changelog: https://github.com/SpongePowered/SpongeAPI/compare/v7.3.0...v8.0.0

    Source code(tar.gz)
    Source code(zip)
    spongeapi-8.0.0.jar(1.79 MB)
  • v7.4.0(Nov 28, 2021)

  • 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 7, 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
COMMA Config API is an API allowing you to easily create complex and stylish config menu screens for Minecraft Fabric mods

COMMA Config API is an API allowing you to easily create complex and stylish config menu screens for Minecraft Fabric mods. COMMA stands for Configurable Options Menu Modding API

Dr. Rubisco 1 Jan 13, 2022
This plugin disables commands specified in the configuration and prevents granting the "OP" authority to people not authorized in the plugin configuration.

Ares This plugin disables commands specified in the configuration and prevents granting the "OP" authority to people not authorized in the plugin conf

ᴠᴀʟᴇɴᴛɪɴ ᴢʜᴇʟᴇᴠ 6 Aug 30, 2022
Paper-nms-maven-plugin - A maven plugin for using NMS on paper with Mojang mappings.

paper-nms-maven-plugin A maven plugin for using NMS on paper with Mojang mappings. This plugin will both create the mapped paper dependency and instal

null 56 Dec 28, 2022
Plugin-power - A plugin for the ja-netfilter, it is a dragon slayer for asymmetric encryption.

plugin-power A plugin for the ja-netfilter, it is a dragon slayer for asymmetric encryption. Use the mvn clean package command to compile and use powe

null 110 May 25, 2022
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 10 Jan 28, 2022
A minecraft server plugin which allows user to custom commands. 一个支持你在 MC 服务器自定义指令的插件。

CustomCommands:自定义指令 CustomCommands 插件也叫 CCS(CustomCommandS)或 Custom-Commands 等,允许自己设置一些指令的格式,以简化输入。 插件 QQ 群:1028582500 作者:椽子。 明城京联合太学,保留所有权利。 请遵循 GNU

CHUANWISE 13 Feb 10, 2022
Bukkit/Bungee plugin to send Minecraft data to JMX

Bukkit/Bungee plugin to send Minecraft data to JMX

Fabrizio La Rosa 4 Jan 30, 2022
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 Nov 15, 2021
A Minecraft Server Plugin(一个我的世界服务器插件

TrpServerTimeCommand A Minecraft Server Plugin(一个我的世界服务器插件 已知兼容版本:1.15.X ~ 1.17.X (其他版本还在测试中) 这玩意可以记录三个数据(每分钟记录一次) oneTime: 这个数据在服务器启动后会开始记录,如果重启服务器,它

null 4 Dec 24, 2021
A minecraft shop plugin for 1.17.1 paper.

shop-plugin Support server A minecraft shop plugin for 1.17.1 paper. Notes: NMS not required please dont copy the code, download the jar from releases

Empathy 4 Sep 7, 2022
Plugin para minecraft 1.16+ (Spiggot/Bukkit)

TIERRA O NADA! Plugin para Minecraft Quieres pasar Minecraft de otra forma? Prueba con este plugin para Spiggot/Bukkit Minecraft Versión: 1.16+ Plugin

JkDev 3 Nov 12, 2022
Practica para crear plugin en Minecraft 1.17

plugin-spigot-minecraft Plugin creado para dar la bienvenida en el servidor de Minecraft Spigot 1.17.1 Si no existe el archivo config.yml lo crea el p

JkDev 3 Nov 12, 2022
🏃 A lightweight, multiarena, complex Parkour Spigot/Bukkit plugin for Minecraft Server

?? A lightweight, multiarena, multilanguage, completely configurable and complex Parkour Spigot/Bukkit plugin for Minecraft Server

Victor Rodrigues 6 Oct 17, 2022
Spigot Plugin for creating light shows/concerts in Minecraft

Spigot Plugin for creating light shows/concerts in Minecraft. It works by simulating ingame effects like guardian and beacon beams.

null 38 Dec 16, 2022
PronounMC is a Minecraft plugin designed to make it easier to keep track of pronouns.

PronounMC PronounMC is a Minecraft plugin designed to make it easier to keep track of pronouns. Supported pronouns He She They It Any Other Ask Userna

Ace 10 Dec 10, 2022
A head plugin for minecraft java

HeadDrop A head plugin for minecraft java Features Player and all mob head drop on death Death Head drop chance system Fully customizable in config 1.

RRS 2 Jul 9, 2022
A market plugin to prevent mounting inflation in minecraft servers

A market plugin to prevent mounting inflation in minecraft servers. The optimized power index function and the inverse function are used to converge the selling price. It could solve the problem of server economic imbalance caused by the high production capacity of certain items in industrial type servers. In Summary, The richer the player is, the less profit the player receive.

null 14 Dec 25, 2022
A Minecraft Paper Plugin for 1.18.2

A Minecraft Paper Plugin for 1.18.2

null 3 Dec 23, 2022
This minecraft plugin adds @a, @p, and @r to EssentialsX Commands! Works with command block and console aswell!

EssentialsX-Target-Selectors This minecraft plugin adds @a, @p, and @r to EssentialsX Commands! Works with command block and console aswell! Usage: Ju

null 6 Dec 7, 2022