001/* 002 * Trident - A Multithreaded Server Alternative 003 * Copyright 2014 The TridentSDK Team 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018package net.tridentsdk.entity.living; 019 020import net.tridentsdk.Messagable; 021import net.tridentsdk.bar.BarReceiver; 022import net.tridentsdk.entity.LivingEntity; 023import net.tridentsdk.entity.traits.PlayerSpeed; 024import net.tridentsdk.entity.traits.WindowHolder; 025import net.tridentsdk.inventory.Item; 026import net.tridentsdk.meta.MessageBuilder; 027import net.tridentsdk.plugin.cmd.CommandIssuer; 028import net.tridentsdk.service.PermissionOwner; 029import net.tridentsdk.title.TitleReceiver; 030import net.tridentsdk.world.settings.GameMode; 031 032import java.util.Locale; 033 034/** 035 * Represents a player entity after joining the server 036 * 037 * @author The TridentSDK Team 038 * @since 0.3-alpha-DP 039 */ 040public interface Player extends LivingEntity, Messagable, CommandIssuer, WindowHolder, PermissionOwner, TitleReceiver, BarReceiver { 041 // TODO: Use word settings? 042 043 /** 044 * Current header on TAB, returns null if non-existent 045 * 046 * @return current header on TAB 047 */ 048 String header(); 049 050 default void setHeader(String message) { 051 setHeader(new MessageBuilder(message)); 052 } 053 054 void setHeader(MessageBuilder builder); 055 056 /** 057 * Current footer on TAB, returns null if non-existent 058 * 059 * @return current footer on TAB 060 */ 061 String footer(); 062 063 default void setFooter(String message) { 064 setFooter(new MessageBuilder(message)); 065 } 066 067 void setFooter(MessageBuilder builder); 068 069 /** 070 * The name of the player, matches that of Mojang servers 071 * 072 * @return the name of the player 073 */ 074 String name(); 075 076 /** 077 * Returns the Player's {@link Locale} settings 078 * 079 * @return Locale the Player's Locale settings 080 */ 081 Locale locale(); 082 083 /** 084 * Returns the GameMode the Player is in 085 * 086 * @return GameMode current GameMode of the Player 087 */ 088 GameMode gameMode(); 089 090 /** 091 * Sets the player's gamemode to the specified gamemode 092 */ 093 void setGameMode(GameMode mode); 094 095 /** 096 * Obtains the settings for the player's speed 097 * 098 * @return the player speed settings 099 */ 100 PlayerSpeed speedModifiers(); 101 102 /** 103 * Sends the player a message 104 * 105 * @param message the message to display to the player 106 */ 107 void sendMessage(String message); 108 109 /** 110 * Obtains whether this player is currently on the server or not 111 * 112 * @return {@true to indicate the player is connected to the server} 113 */ 114 boolean connected(); 115 116 Item pickedItem(); 117 118 void setPickedItem(Item item); 119}