bukkit/src/main/java/org/bukkit/entity/Player.java

338 lines
10 KiB
Java
Raw Normal View History

package org.bukkit.entity;
2010-12-22 15:21:16 +00:00
2011-01-10 17:24:35 -05:00
import java.net.InetSocketAddress;
2011-04-21 20:56:19 +01:00
import org.bukkit.Achievement;
import org.bukkit.Effect;
import org.bukkit.Instrument;
2011-01-20 02:05:31 -08:00
import org.bukkit.Location;
2011-04-21 20:56:19 +01:00
import org.bukkit.Material;
import org.bukkit.Note;
import org.bukkit.OfflinePlayer;
2011-04-21 20:56:19 +01:00
import org.bukkit.Statistic;
import org.bukkit.command.CommandSender;
import org.bukkit.map.MapView;
2011-01-10 17:24:35 -05:00
2010-12-22 15:21:16 +00:00
/**
* Represents a player, connected or not
*
2010-12-22 15:21:16 +00:00
*/
public interface Player extends HumanEntity, CommandSender, OfflinePlayer {
/**
* Gets the "friendly" name to display of this player. This may include color.
*
* Note that this name will not be displayed in game, only in chat and places
* defined by plugins
2011-06-12 01:18:17 +02:00
*
2011-06-09 23:11:35 -07:00
* @return the friendly name
*/
public String getDisplayName();
/**
* Sets the "friendly" name to display of this player. This may include color.
*
* Note that this name will not be displayed in game, only in chat and places
* defined by plugins
2011-06-12 01:18:17 +02:00
*
* @param name
*/
2011-01-07 13:33:36 +00:00
public void setDisplayName(String name);
2011-01-20 02:05:31 -08:00
/**
* Set the target of the player's compass.
*
2011-01-20 02:05:31 -08:00
* @param loc
*/
public void setCompassTarget(Location loc);
2011-03-25 21:01:55 +01:00
/**
* Get the previously set compass target.
*
* @return location of the target
*/
public Location getCompassTarget();
2011-01-10 17:24:35 -05:00
/**
* Gets the socket address of this player
* @return the player's address
*/
public InetSocketAddress getAddress();
2011-05-14 23:22:54 +02:00
2011-03-12 01:05:09 -08:00
/**
* Sends this sender a message raw
*
* @param message Message to be displayed
*/
public void sendRawMessage(String message);
2011-01-15 09:20:29 +08:00
/**
* Kicks player with custom kick message.
2011-06-12 01:18:17 +02:00
*
2011-06-09 23:11:35 -07:00
* @param message kick message
2011-01-15 09:20:29 +08:00
*/
public void kickPlayer(String message);
2011-01-28 09:15:43 +00:00
2011-02-16 21:23:29 -08:00
/**
* Says a message (or runs a command).
*
* @param msg message to print
*/
public void chat(String msg);
2011-01-28 09:15:43 +00:00
/**
* Makes the player perform the given command
*
* @param command Command to perform
* @return true if the command was successful, otherwise false
*/
public boolean performCommand(String command);
2011-01-25 19:04:52 +01:00
/**
* Returns if the player is in sneak mode
* @return true if player is in sneak mode
*/
public boolean isSneaking();
/**
* Sets the sneak mode the player
* @param sneak true if player should appear sneaking
*/
public void setSneaking(boolean sneak);
/**
* Saves the players current location, health, inventory, motion, and other information into the username.dat file, in the world/player folder
*/
public void saveData();
/**
* Loads the players current location, health, inventory, motion, and other information from the username.dat file, in the world/player folder
*
* Note: This will overwrite the players current inventory, health, motion, etc, with the state from the saved dat file.
*/
public void loadData();
2011-05-14 23:22:54 +02:00
/**
* Sets whether the player is ignored as not sleeping. If everyone is
* either sleeping or has this flag set, then time will advance to the
* next day. If everyone has this flag set but no one is actually in bed,
* then nothing will happen.
2011-05-14 23:22:54 +02:00
*
* @param isSleeping
*/
public void setSleepingIgnored(boolean isSleeping);
2011-05-14 23:22:54 +02:00
/**
* Returns whether the player is sleeping ignored.
2011-05-14 23:22:54 +02:00
*
* @return
*/
public boolean isSleepingIgnored();
2011-05-14 23:22:54 +02:00
2011-05-02 01:29:38 -07:00
/**
* Play a note for a player at a location. This requires a note block
* at the particular location (as far as the client is concerned). This
* will not work without a note block. This will not work with cake.
2011-05-14 23:22:54 +02:00
*
2011-05-02 01:29:38 -07:00
* @param loc
* @param instrument
* @param note
*/
public void playNote(Location loc, byte instrument, byte note);
2011-06-12 01:18:17 +02:00
/**
* Play a note for a player at a location. This requires a note block
* at the particular location (as far as the client is concerned). This
* will not work without a note block. This will not work with cake.
*
* @param loc
* @param instrument
* @param note
*/
public void playNote(Location loc, Instrument instrument, Note note);
/**
* Plays an effect to just this player.
2011-06-12 01:18:17 +02:00
*
* @param loc the player to play the effect for
* @param effect the {@link Effect}
* @param data a data bit needed for the RECORD_PLAY, SMOKE, and STEP_SOUND sounds
*/
public void playEffect(Location loc, Effect effect, int data);
2011-05-14 23:22:54 +02:00
/**
* Send a block change. This fakes a block change packet for a user at
* a certain location. This will not actually change the world in any way.
2011-05-14 23:22:54 +02:00
*
* @param loc
* @param material
2011-05-14 23:22:54 +02:00
* @param data
*/
public void sendBlockChange(Location loc, Material material, byte data);
2011-05-14 23:22:54 +02:00
/**
* Send a chunk change. This fakes a chunk change packet for a user at
* a certain location. The updated cuboid must be entirely within a single
* chunk. This will not actually change the world in any way.
*
* At least one of the dimensions of the cuboid must be even. The size of the
* data buffer must be 2.5*sx*sy*sz and formatted in accordance with the Packet51
* format.
*
* @param loc The location of the cuboid
* @param sx The x size of the cuboid
* @param sy The y size of the cuboid
* @param sz The z size of the cuboid
* @param data The data to be sent
*
* @return true if the chunk change packet was sent
*/
public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data);
/**
* Send a block change. This fakes a block change packet for a user at
* a certain location. This will not actually change the world in any way.
2011-05-14 23:22:54 +02:00
*
* @param loc
* @param material
2011-05-14 23:22:54 +02:00
* @param data
*/
public void sendBlockChange(Location loc, int material, byte data);
/**
* Render a map and send it to the player in its entirety. This may be used
* when streaming the map in the normal manner is not desirbale.
*
* @pram map The map to be sent
*/
public void sendMap(MapView map);
/**
* Forces an update of the player's entire inventory.
*
* @deprecated This method should not be relied upon as it is a temporary work-around for a larger, more complicated issue.
*/
2011-06-09 23:11:35 -07:00
@Deprecated
public void updateInventory();
2011-04-21 20:56:19 +01:00
/**
* Awards this player the given achievement
*
* @param achievement Achievement to award
*/
public void awardAchievement(Achievement achievement);
/**
* Increments the given statistic for this player
*
* @param statistic Statistic to increment
*/
public void incrementStatistic(Statistic statistic);
/**
* Increments the given statistic for this player
*
* @param statistic Statistic to increment
* @param amount Amount to increment this statistic by
*/
public void incrementStatistic(Statistic statistic, int amount);
/**
* Increments the given statistic for this player for the given material
*
* @param statistic Statistic to increment
* @param material Material to offset the statistic with
*/
public void incrementStatistic(Statistic statistic, Material material);
/**
* Increments the given statistic for this player for the given material
*
* @param statistic Statistic to increment
* @param material Material to offset the statistic with
* @param amount Amount to increment this statistic by
*/
public void incrementStatistic(Statistic statistic, Material material, int amount);
/**
* Sets the current time on the player's client. When relative is true the player's time
* will be kept synchronized to its world time with the specified offset.
*
* When using non relative time the player's time will stay fixed at the specified time parameter. It's up to
* the caller to continue updating the player's time. To restore player time to normal use resetPlayerTime().
*
* @param time The current player's perceived time or the player's time offset from the server time.
* @param relative When true the player time is kept relative to its world time.
*/
public void setPlayerTime(long time, boolean relative);
/**
* Returns the player's current timestamp.
*
* @return
*/
public long getPlayerTime();
/**
* Returns the player's current time offset relative to server time, or the current player's fixed time
* if the player's time is absolute.
*
* @return
*/
public long getPlayerTimeOffset();
/**
* Returns true if the player's time is relative to the server time, otherwise the player's time is absolute and
* will not change its current time unless done so with setPlayerTime().
*
* @return true if the player's time is relative to the server time.
*/
public boolean isPlayerTimeRelative();
/**
* Restores the normal condition where the player's time is synchronized with the server time.
* Equivalent to calling setPlayerTime(0, true).
*/
public void resetPlayerTime();
/**
* Gets the players current experience points towards the next level
*
* @return Current experience points
*/
public int getExperience();
/**
* Sets the players current experience points
*
* @param exp New experience points
*/
public void setExperience(int exp);
/**
* Gets the players current experience level
*
* @return Current experience level
*/
public int getLevel();
/**
* Sets the players current experience level
*
* @param exp New experience level
*/
public void setLevel(int level);
/**
* Gets the players total experience points
*
* @return Current total experience points
*/
public int getTotalExperience();
/**
* Sets the players current experience level
*
* @param exp New experience level
*/
public void setTotalExperience(int exp);
2010-12-22 15:21:16 +00:00
}