GithubHelp home page GithubHelp logo

thegaming999 / actionutil Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gianscode/actionutil

0.0 0.0 0.0 85 KB

An API allowing third party plugins to perform a ton of Actions depending on the task needed

Home Page: https://avertix.io

Java 100.00%

actionutil's Introduction

ActionUtil Documentation

Documentation for the ActionUtil plugin created for Avertix Management.

Time parsing is done using the TimeAPI library.

Action Format

Actions are declared as strings in the following format:
[CHANCE=<chance>][DELAY=<delay>][ACTION] Arg1;Arg2;Arg3

All text within square brackets is case insensitive.

  • ACTION is the name of the action to execute

  • Arguments are separated using a semicolon (;)

    • All arguments are required unless explicitly stated in the later documentation
    • When omitting an optional argument, place the two semicolons surrounding the argument directly next to eachother. For example, for an action with three arguments where the second is optional, you could do [ACTION] FirstArg;;ThirdArg
  • The CHANCE and DELAY brackets are optional, with the default being that the action is executed 100% of the time with no delay.

  • <chance> is an integer less than 100, and represents the percentage chance of the action to be executed

    • Examples: 50, 20, 77
    • Setting this value to any number above or equal to 100 will cause the action to be executed every time, and is redundant
  • <delay> is a string representation of the time the server should wait before executing the action

    • Examples:
      • 3s = 3 seconds
      • 5m = 5 minutes
      • 2m8s = 2 minutes, eight seconds
    • Supported formats:
      • Seconds: s, sec, secs, second, seconds
      • Minutes: m, min, mins, minute, minutes
      • Hours: h, hr, hrs, hour, hours
      • A full list of supported time formats from the used library can be found here, although it is unlikely that any time above hours would need to be used in-game

Action List

Actions will be presented in the following format:

  • Friendly action name
    • Action name (to be used in action strings)
    • Description
    • Arguments:
      • argument name: explanation if needed
      • *optional argument: explanation if needed [default value]
    • Example(s)

All string arguments are automatically coloured using the & character, and put through the PlaceholderAPI plugin to set placeholders.

  • Message

    • MESSAGE
    • Sends a message to the player
    • Arguments:
      • message
    • Example: [MESSAGE] &cHello &2World
  • Broadcast

    • BROADCAST
    • Sends a message to every online player
    • Arguments:
      • message
    • Example: [BROADCAST] &aHello Players
  • Player Command

    • PLAYERCOMMAND
    • Makes the player execute a command
    • Arguments:
      • command
    • Example: [PLAYERCOMMAND] balance
  • Console Command

    • CONSOLECOMMAND
    • Executes a command as the console
    • Arguments:
      • command
    • Example: [CONSOLECOMMAND] eco give %player_name% 1000
  • Teleport

    • TELEPORT
    • Teleports a player to the given location
    • Arguments:
      • world: the world name
      • *x: [player's current X coorindate]
      • *y: [player's current Y coordinate]
      • *z: [player's current Z coordinate]
      • *yaw: [player's current yaw]
      • *pitch: [player's current pitch]
    • Example: [TELEPORT] hub;0;60;0;90;90
  • Bungee

    • BUNGEE
    • Sends the player to the specified BungeeCord server
    • Arguments:
      • server
    • Example: [BUNGEE] lobby
  • Sound

    • SOUND
    • Plays a sound to the player
    • Arguments:
      • sound: list found here (may be different between versions)
      • volume
      • pitch
    • Example: [SOUND] ENTITY_ARROW_HIT_PLAYER;2.0;2.0
  • Sound Broadcast

    • SOUNDBROADCAST
    • Plays a sound to every online player
    • Arguments:
      • sound: list found here (may be different between versions)
      • volume
      • pitch
    • Example: [SOUNDBROADCAST] ENTITY_ARROW_HIT_PLAYER;2.0;2.0
  • Title Message

    • TITLEMESSAGE
    • Sends a title message to the player
    • Arguments:
      • title
      • subtitle
      • fade-in ticks
      • display ticks
      • fade-out ticks
    • Example: [TITLEMESSAGE] Hello;%player_name%;20;60;20
  • Title Broadcast

    • TITLEBROADCAST
    • Sends a title message to every player
    • Arguments:
      • title
      • subtitle
      • fade-in ticks
      • display ticks
      • fade-out ticks
    • Example: [TITLEBROADCAST] Hello;Players;20;60;20
  • Actionbar Message

    • ACTIONBARMESSAGE
    • Sends a message to the player through the actionbar
    • Arguments:
      • message
    • Example: [ACTIONBARMESSAGE] &cThis shows in the actionbar
  • Actionbar Broadcast

    • ACTIONBARBROADCAST
    • Sends a message to every player in the server through the actionbar
    • Arguments:
      • message
    • Example: [ACTIONBARBROADCAST] &cEveryone sees this in the actionbar
  • Centre Message

    • CENTERMESSAGE
    • Sends a centered message to the player
      NB: This is not guaranteed to display perfectly
    • Arguments:
      • message
    • Example: [CENTERMESSAGE] &bThis is centered
  • Centre Broadcast

    • CENTERBROADCAST
    • Sends a centered message to every online player
      NB: This is not guaranteed to display perfectly
    • Arguments:
      • message
    • Example: [CENTERBROADCAST] &bThis is centered for everyone
  • Json Message

    • JSONMESSAGE
    • Sends a Json message to the player. Executes Minecraft's /tellraw command, so usage may change between versions
    • Arguments:
      • json
    • Example: [JSONMESSAGE] {"text":"Go to Google","color":"red","clickEvent":{"action":"open_url","value":"google.com"}}
  • Json Broadcast

    • JSONBROADCAST
    • Sends a Json message to every player on the server. Executes Minecraft's /tellraw command, so usage may change between versions
    • Arguments:
      • json
    • Example: [JSONMESSAGE] {"text":"Go to Google","color":"red","clickEvent":{"action":"open_url","value":"google.com"}

Developer Integration

Add the maven dependency

<repositories>
  <repository>
    <id>jitpack.io</id>
      <url>https://jitpack.io</url>
  </repository>
</repositories>
<dependency>
  <groupId>com.github.GiansCode</groupId>
  <artifactId>ActionUtil</artifactId>
  <version>Tag</version>
</dependency>

Register in the onEnable of the Plugin

private ActionUtil actionUtil;

@Override
public void onEnable() {
    actionUtil = ActionUtil.init(this);
}

Execute an action

// Player, Actions
ActionUtil#executeActions(Player, String...)

ActionUtil#executeActions(Player, List<String>)

Registering an Action

Declare a class that implements the io.samdev.actionutil.action.Action marker interface.

The class must declare a static method named execute, where the first argument is an org.bukkit.entity.Player. Any arguments for your action may be added after this and will be parsed using the action input automatically provided that they are of a valid type (see next section).

Once your class is created, call ActionUtil.registerActionClass() with the class, the action name, and the argument types. For example:

ActionUtil#registerActionClass(MyAction.class, "MYACTION", String.class, int.class);

The usage of the method in this way allows multiple actions to be registered to a single class.

Class Translators

By default, ActionUtil is able to translate certain class types from strings to their object be used in actions.

Currently supported types:

  • String
  • Integer
  • Decimal (using double)
  • Boolean (using "true" and "false")
  • org.bukkit.Sound
  • org.bukkit.World

If you wish to create your own translator for a custom type, make a call to ActionUtil.registerTranslator() with an instance of an io.samdev.actionutil.translator.Translator<T>.

The only method needed to be fulfilled by the Translator interface is T translate(Player, String) throws TranslationException. As hinted by the method declaration, an io.samdev.actionutil.translator.TranslationException should be thrown in the case of a user entering an invalid input.

Credits

  • Mas281 - Initial development, and project structure
  • QuickGlare - Transition to an API

actionutil's People

Contributors

gianscode avatar mas281 avatar quickglare avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.