Plugin Release [1.18-1.19] DarkWaterAPI - A library for PaperMC 1.18 and above that aims to improve plugin code

  • After careful consideration and due to limited usage, we’ve made the decision to discontinue the PaperMC forums. Moving forward, we recommend using Hangar for plugin uploads, and for all other community discussions and support, please join us on Discord.
Download Link
https://github.com/kiinse/DarkWaterAPI/releases
Source Code
https://github.com/kiinse/DarkWaterAPI
Documentation
https://github.com/kiinse/DarkWaterAPI/wiki
Support
https://discord.gg/ec7y5NY82b
Minecraft Versions
1.18, 1.19
Compatible Java Versions
17
logo.png

DarkWaterAPI

A library for SpigotMC 1.18 and above that aims to improve plugin code

Donations​



If you want to support the project, then
star this repository and tell your friends about DarkWaterAPI =3


Support​



Join the Discord if you have any questions.

Features​



  • Simple and convenient plugin localization system
  • Easily create interactive text in messages
  • Improved command work
  • Player stats tracking
  • The 'isWalking(player)' and 'isJumping(player)' methods. Really useful stuff =)
  • Easy management bukkit scheduler's
  • Easily manage files and data in them
  • Checking the config version
  • Enabling, disabling and reloading plugins that use this library
  • And much more

Download​



The latest version can be downloaded on the releases page.

Maven​


XML:
<repositories>
  <repository>
    <id>darkwaterapi</id>
    <url>https://repo.kiinse.me/releases</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>kiinse.plugins.darkwaterapi</groupId>
    <artifactId>darkwater-core</artifactId>
    <version>ENTER_VERSION_HERE</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

Gradle​


Code:
repositories {
    maven {
        url "https://repo.kiinse.me/releases"
    }
}

dependencies {
    compileOnly 'kiinse.plugins.darkwaterapi:darkwater-core:ENTER_VERSION_HERE'
}

Usage​



For all examples and more detailed explanation check out the WIKI.


Since all examples are on WIKI, I will give a small example of working with messages here.

In the resources folder, we create a "messages" folder, where we also create several localization files. For example en.json and ru.json. We get the following structure:

Code:
.

└── resources
        └── messages
                 ├── en.json
                 └── ru.json

After running the plugin containing the main class, which was inherited from "DarkWaterJavaPlugin" - These files will appear in the plugin folder on the server.

Sending text from these files takes just two lines:


Java:
public final class TestPlugin extends DarkWaterJavaPlugin { // Main class

    @Override
    public void onStart() throws Exception {
        // Code at startup
    }

    @Override
    public void onStop() throws Exception {
        // Shutdown code
    }

    private void sendMessageToPlayer(Player player) {
        MessagesUtils messagesUtils = new DarkMessagesUtils(this);
        messagesUtils.sendMessageWithPrefix(player, Message.MESSAGE_HELLO); // We send to player the message "message_hello" from the json file.
        // This text will correspond to the selected localization of the player.
    }
}

Contents of message files:

File "en.json":


JSON:
{
  "prefix": "message prefix",
  "message_hello": "Hello player!"
}

File "ru.json":

JSON:
{
  "prefix": "message prefix",
  "message_hello": "Привет, игрок!"
}

Commands​

Command
Permission
Description
/locale changelocale.changeOpens a GUI to change the selected language
/locale helplocale.helpHelp command
/locale set [locale]locale.changeSetting the language without opening the GUI
/locale listlocale.listList of languages available for selection
/locale get [player]locale.getView player's language
/darkwater reload [plugin]darkwater.reloadReloading a plugin using DarkWaterAPI
/darkwater disable [plugin]darkwater.disableDisabling a plugin using DarkWaterAPI
/darkwater enable [plugin]darkwater.enableEnabling a plugin using DarkWaterAPI
/statisticdarkwater.statisticView statistics on the number of killed mobs.

Placeholders​

Placeholder
Description​
%statistic_PUT-HERE-MOB% (Example: %statistic_CREEPER%)Display the number of killed mob
%locale_player%
Language display
%locale_list%Displaying a list of languages available for selection

Config​


YAML:
locale.default: en # The default language if the player's language is not available on the server, or it has not been defined

first.join.message: true # A message when the player enters, telling about the definition of the player's language and the possibility of changing this language.
actionbar.indicators: true # Indicators above the player's toolbar. This function is needed for some plugins that use DarkWaterAPI. Requires PlaceHolderAPI to work.

config.version: 3 # DO NOT TOUCH THIS PLEASE =)
debug: false # This line is not in the config by default, but you can enter it in the DarkWaterAPI config to display config logs in the server console.

 
Last edited: