Add Title API.

This commit is contained in:
Minecrell
2014-09-05 18:58:55 +02:00
committed by Thinkofdeath
parent d6b7157c1c
commit 4e353e9277
9 changed files with 393 additions and 0 deletions

View File

@@ -283,4 +283,14 @@ public abstract class ProxyServer
*/
public abstract Collection<ProxiedPlayer> matchPlayer(String name);
/**
* Creates a new empty title configuration.
* In most cases you will want to {@link #reset()} the current title first so
* your title won't be affected by a previous one.
*
* @return A new empty title configuration.
* @see Title
*/
public abstract Title createTitle();
}

View File

@@ -0,0 +1,109 @@
package net.md_5.bungee.api;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
/**
* Represents a configuration of a title.
* A title in Minecraft consists of a main title and a sub title.
* It will {@link #fadeIn(int)}, {@link #stay(int)}, and {@link #fadeOut(int)}
* for a specified amount of time.
* In most cases you will want to {@link #reset()} the current title first so
* your title won't be affected by a previous one.
* <p>
* You can create a new configuration by calling {@link ProxyServer#createTitle()}.
*/
public interface Title
{
/**
* Set the title to send to the player.
*
* @param text The text to use as the title.
* @return This title configuration.
*/
public Title title(BaseComponent text);
/**
* Set the title to send to the player.
*
* @param text The text to use as the title.
* @return This title configuration.
*/
public Title title(BaseComponent... text);
/**
* Set the subtitle to send to the player.
*
* @param text The text to use as the subtitle.
* @return This title configuration.
*/
public Title subTitle(BaseComponent text);
/**
* Set the subtitle to send to the player.
*
* @param text The text to use as the subtitle.
* @return This title configuration.
*/
public Title subTitle(BaseComponent... text);
/**
* Set the duration in ticks of the fade in effect of the title.
* Once this period of time is over the title will stay for the amount
* of time specified in {@link #stay(int)}.
* The default value for the official Minecraft version is 20 (1 second).
*
* @param ticks The amount of ticks (1/20 second) for the fade in effect.
* @return This title configuration.
*/
public Title fadeIn(int ticks);
/**
* Set the duration in ticks how long the title should stay on the screen.
* Once this period of time is over the title will fade out using the duration
* specified in {@link #fadeOut(int)}.
* The default value for the official Minecraft version is 60 (3 seconds).
*
* @param ticks The amount of ticks (1/20 second) for the fade in effect.
* @return This title configuration.
*/
public Title stay(int ticks);
/**
* Set the duration in ticks of the fade out effect of the title.
* The default value for the official Minecraft version is 20 (1 second).
*
* @param ticks The amount of ticks (1/20 second) for the fade out effect.
* @return This title configuration.
*/
public Title fadeOut(int ticks);
/**
* Remove the currently displayed title from the player's screen.
* This will keep the currently used display times and will only remove the title.
*
* @return This title configuration.
*/
public Title clear();
/**
* Remove the currently displayed title from the player's screen
* and set the configuration back to the default values.
*
* @return This title configuration.
*/
public Title reset();
/**
* Send this title configuration to the specified player.
* This is the same as calling {@link ProxiedPlayer#sendTitle(Title)}.
*
* @param player The player to send the title to.
* @return This title configuration.
*/
public Title send(ProxiedPlayer player);
}

View File

@@ -3,6 +3,7 @@ package net.md_5.bungee.api.connection;
import java.util.Locale;
import net.md_5.bungee.api.Callback;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.Title;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.config.ServerInfo;
import java.util.UUID;
@@ -141,4 +142,13 @@ public interface ProxiedPlayer extends Connection, CommandSender
* Clears the header and footer displayed in the tab player list.
*/
void resetTabHeader();
/**
* Sends a {@link Title} to this player.
* This is the same as calling {@link Title#send(ProxiedPlayer)}.
*
* @param title The title to send to the player.
* @see Title
*/
void sendTitle(Title title);
}