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

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: