TaterLib - A cross API code library for various generalizations used in the Tater* plugins

This is a discussion topic for the Ore project, TaterLib. View the full project on Ore for downloads and more information.


TaterLib

License
Github
Github Issues
Discord
wakatime

A cross API code library that allows developers to write code that works across multiple modding platforms, and across a
wide range of Minecraft versions, all with one JAR file. If TaterLib runs on it, so can your plugin/mod.

Please note, some abstractions may not be fully implemented yet, and some may be missing.
If you’re looking for a specific abstraction/game event, please open an issue, and we’ll get to it as soon as possible,
or feel free to open a PR with an implementation.
Contributions are always welcome!

Let’s cut to the chase, why should you use and/or contribute to TaterLib? Well, let’s say you have a mod/plugin that you
want to port to a different modding API. You could go through the laborious task of implementing all the events,
commands, etc. on each platform and create all your own cool fancy abstractions for each game object, or you could use
TaterLib and save yourself a lot of time. (which is why I started this project in the first place)

There’s two ways to use TaterLib, you can depend on the general API, then implement any missing features yourself on
each platform, or if something’s missing, you can start a PR with either a basic or full implementation, and we can
improve TaterLib and save you a lot of time in the future. (a bit of a win-win)

Link to our support: Discord

Download

Github Releases

Spigot
Hangar
CurseForge

Modrinth
CurseForge
Sponge

Maven Snapshots RepoJenkins Dev Build

Maven RepoJenkins Builds

Adding to your project

repositories {
    maven {
        name = 'NeuralNexus'
        url = 'https://maven.neuralnexus.dev/releases'
    }
}

dependencies {
    compileOnly('dev.neuralnexus:taterlib-api:<version>')
}

There’s also a snapshot repository available at https://maven.neuralnexus.dev/repository/snapshots

Compatibility Cheatsheet

TaterLib supports: Bukkit, BungeeCord, Fabric, Forge, Sponge, and Velocity

General notes:

  • No Fabric on 1.13
  • No Fabric/Forge below 1.7.10
Server type Versions Jar Name
1.20.x 1.20-1.20.4 TaterLib-1.20.x-<version>.jar
1.19.4 1.19.4 TaterLib-1.19.4-<version>.jar
1.19.2 1.19.2 TaterLib-1.19.2-<version>.jar
1.19 1.19 TaterLib-1.19-<version>.jar
1.18.2 1.18.2 TaterLib-1.18.2-<version>.jar
1.18 1.18 TaterLib-1.18-<version>.jar
1.17 1.17-1.17.1 TaterLib-1.17-<version>.jar
1.16 1.16-1.16.5 TaterLib-1.16-<version>.jar
1.15 1.15-1.15.2 TaterLib-1.15-<version>.jar
1.14 1.14-1.14.3 TaterLib-1.14-<version>.jar
1.13 1.13-1.13.2 TaterLib-1.13-<version>.jar
1.12 1.12-1.12.2 TaterLib-1.12-<version>.jar
1.11 1.11-1.11.2 TaterLib-1.11-<version>.jar
1.10 1.10-1.10.2 TaterLib-1.10-<version>.jar
1.9 1.9-1.9.4 TaterLib-1.9-<version>.jar
1.8 1.8-1.8.8 TaterLib-1.8-<version>.jar
1.7 1.7-1.7.10 TaterLib-1.7.10-<version>.jar
1.6.4 1.6.4 TaterLib-1.6.4-<version>.jar
1.2.5 1.2.5 TaterLib-1.2.5-<version>.jar
b1.7.3 b1.7.3 TaterLib-b1.7.3-<version>.jar

Dependencies

Optional Dependencies

  • LuckPerms - For permissions/prefix/suffix support

Commands and Permissions

Command Permission Description
/taterlib version taterlib.command.version Get the TaterLib version
/taterlib reload taterlib.command.reload Reload TaterLib config
/taterlib dump taterlib.command.dump Dump TaterLib info
/taterlib fulldump taterlib.command.fulldump Dump TaterLib info

Projects that use TaterLib

Feel free to open a PR to add your plugin/mod to this list!

Metrics

Bukkit

image

BungeeCord

image

Sponge

image

Velocity

image

A new version has been released for TaterLib, it is available for download here.


A cross API code library for various generalizations used in the Tater* plugins
Initial release

A new version has been released for TaterLib, it is available for download here.


A cross API code library for various generalizations used in the Tater* plugins

A boatload of fixes and improvements:

  • Created a GenericLogger class for better cross compatibility
  • Added methods to AbstractEntity
    • getX/Y/Z, getDimension, getBiome
  • Fixed FabricEntity#getType
  • Added explicit Fabric 1.18 and 1.19 support to avoid some cross-version issues
  • Fixed registerCommands that weren’t declared static
  • Added proper version getters for TemplateFabricPlugin
  • Ported Sponge to 6, 7, 9, 10, and 11
  • Back ported Forge to 1.12.2
  • Fixed SpongeItemStack#getType to be unjankified
  • Added Position and *Conversions utility classes
  • Added getPosition and setSpawn to AbstractPlayer (Sponge still needs setSpawn implemented)
  • Updated Forge and Fabric to 1.20.2
    • Mainly updates to advancement events (yay optionals)
  • Added getPlayer to every AbstractPlayer implementation
  • Added alternate constructor to AbstractPlayer implementations that allows the specification of a player’s “Server Name” (used for cross server chat)
  • Implemented plugin messaging for Bukkit, Bungee, Fabric, Forge, Sponge, and Velocity
    • Forge 1.12.2 still needs to be implemented
  • Ported Bukkit to 1.15.2, 1.7.10, 1.6.4, 1.2.5, and b1.7.3
1 Like

A new version has been released for TaterLib, it is available for download here.


Fixes to Sponge8-11 component serialization

A new version has been released for TaterLib, it is available for download here.


  • Fixes to Sponge8-11 component serialization
  • Fixed SpongeEntity.getType returning a properly formatted entity resource
  • Reworked the entire event system
  • Added getEntity to AbstractEntity implementations
  • Removed redundant event abstraction
  • Reworked TaterLib PlayerListener and reload command
  • Implemented EntitySpawnEvent for 1.7.10-b1.7.3
  • Implemented rudimentary PlayerDeathEvent for b1.7.3
  • Added support for NeoForge 1.20.2
  • Removed the ...taterlib.{platform}.abstractions package name
  • Renamed ...taterlib.{platform}.abstractions.events to ...taterlib.{platform}.event.api
  • Moved ...taterlib.{platform}.abstractions.item.* to ...taterlib.{platform}.inventory
  • Moved ...taterlib.{platform}.player.PlayerInventory to ...taterlib.{platform}.inventory.PlayerInventory
  • Removed the Abstract prefix from all common interfaces
  • Added the ability to set a player’s prefix/suffix
  • Added numerical permission checks to Player for Forge/Fabric
  • Abstracted Brigadier commands
  • Abstracted simple commands
  • Simplified Plugin abstractions so depending on TaterLib is easier
  • Refactored TaterLib helper methods to be wrapped in the TaterAPI class
  • Added MinecraftVersion and ServerType enums.
  • Created TaterAPI#isBrigadierSupported()
  • Abstracted plugin/mod isLoaded checks
  • Player now inherits Entity
  • Added Entity#teleport(Location) and Entity#teleport(Entity)
  • Abstracted brigadier helper into a wrapper class
  • Implemented registering simple commands for Forge/Fabric
  • Updated database utils
  • Added Server abstraction and TaterAPI#getServer()
  • Ported to:
    • 1.20.4
    • Bukkit 1.8.8, 1.13.2
    • BungeeCord 1.4.7, 1.8, 1.12
    • Fabric 1.7.10, 1.8.9, 1.9.4, 1.10.2, 1.11.2, 1.12.2
    • Forge 1.7.10, 1.8.9, 1.9.4, 1.10.2, 1.11.2, 1.18.2, 1.19.2, 1.19.4
    • Sponge 4, 5
  • Abstracted ProxyPlayers, specifically adding a connect method
  • Added Block abstraction and BlockBreakEvent
  • Updated Server implementation and added ProxyServer for proxies
  • Added ServerEvent#getServer()
  • Fixes to BukkitPlayerAdvancementEvent
    • getPlayer was returning null
    • getAdvancement was returning the wrong string
  • Abstracted TaterAPI#registerChannels(Set<String>) into RegisterPluginMessagesEvent
  • Added PluginEnableEvent and PluginDisableEvent
  • Modified TaterAPIProvider to handle multiple API implementations simultaneously
  • Added basic hybrid API hooks: Arclight, Ketting, Magma, Mohist
  • Renamed isPluginLoaded to isPluginModLoaded and split it into isPluginLoaded and isModLoaded, while
    adding helper instantiations from hybrid hooks
  • Added Server#broadcastMessage(String)
  • Renamed path dev.neuralnexus.taterlib.common to dev.neuralnexus.taterlib to simplify imports
  • Improved the hook system to allow for multiple permission managers to be used simultaneously
  • Build system overhaul, no sketchy build.sh anymore
  • Added GameMode enum, Player#getPing(), Player#getGameMode() and Player#setGameMode()
  • Added Sender#isPlayer()
  • Fixed Entity#teleport(Location) and Entity#teleport(Entity) in cross-dimensional cases
  • Added Player#getIPAddress()
  • Created a custom loader implementation, to allow for better compatibility with hybrids, Sinytra Connector, and
    SpongeForge
  • Added SpongeForge server type
  • Added Brigadier support for Sponge and Bukkit
  • Renamed Sender to CommandSender
  • Split Server into SimpleServer and ProxyServer
  • Added some tests and more MinecraftVersion utilities
  • Renamed Event to EventManager and created a base Event interface
  • Added Event#getName()
  • Created generic event handler
  • Renamed PluginMessageEvents to NetworkEvents
  • Split out SimplePlayer and ProxyPlayer
  • Created Connection interface for kick/disconnect/ping/pluginMessage
  • Loader can now detect and register more plugin instances in multi-API environments
  • Added ServerType.NEOFORGE_HYBRID
  • Events should no longer register twice in multi-API environments
  • Pulled CommonPluginEnableEvent into the loader
  • Added Damageable and LivingEntity interfaces
  • Added dummy entity interfaces all set up for adding new Entity interfaces
  • Added Player.allowFlight/canFly/isFlying/setFlying
  • Added single-version support for MinecraftVersion.parseRange
  • Used configurate to create config system
  • Refactored TaterLib common logic into CommonModule, added TaterModuleLoader, and overall improved module support
  • Reformatted getters to be more idiomatic (e.g. getInventoryinventory)
  • Refactor Player.serverName into Player.server().name() and add Server#name()
  • Added Permissible to CommandSender, refactored permission hooks to use Permissible
  • Added ModInfo and PluginInfo abstractions
  • Added DumpInfo and FullDumpInfo, along with the /taterlib dump | fulldump commands
  • Added bStats support for Bukkit, Bungee, Sponge, and Velocity
  • Added Arclight Fabric server type
  • Merged ItemMeta into ItemStack
  • Created player metadata API
  • Added Server.currentTPS(), SimpleServer.getPlayer(String), and SimpleServer.getPlayer(UUID)
  • PlayerServerSwitchEvent.toServer/fromServer now return a Server rather than a String
  • Overhauled the Inventory/PlayerInventory interfaces
  • Created World and ServerWorld abstractions