package common.network;

import common.entity.Entity;
import common.model.ParticleType;
import common.packet.SPacketEntity;
import common.packet.SPacketEntityTeleport;
import common.packet.SPacketEntityHeadLook;
import common.packet.SPacketEntityStatus;
import common.packet.SPacketEntityAttach;
import common.packet.SPacketEntityMetadata;
import common.packet.SPacketEntityEffect;
import common.packet.SPacketRemoveEntityEffect;
import common.packet.SPacketExplosion;
import common.packet.SPacketEffect;
import common.packet.SPacketSoundEffect;
import common.packet.SPacketParticles;
import common.packet.SPacketChangeGameState;
import common.packet.SPacketSpawnGlobalEntity;
import common.packet.SPacketOpenWindow;
import common.packet.SPacketCloseWindow;
import common.packet.SPacketSetSlot;
import common.packet.SPacketWindowItems;
import common.packet.SPacketWindowProperty;
import common.packet.SPacketConfirmTransaction;
import common.packet.SPacketUpdateSign;
import common.packet.SPacketUpdateTileEntity;
import common.packet.SPacketSignEditorOpen;
import common.packet.SPacketPlayerListItem;
import common.packet.SPacketPlayerAbilities;
import common.packet.SPacketTabComplete;
import common.packet.SPacketUpdateEntityTags;
import common.packet.SPacketAnimation;
import common.packet.SPacketBiome;
import common.packet.SPacketBlockAction;
import common.packet.SPacketBlockBreakAnim;
import common.packet.SPacketBlockChange;
import common.packet.SPacketCamera;
import common.packet.SPacketCharacterList;
import common.packet.SPacketChunkData;
import common.packet.SPacketCollectItem;
import common.packet.SPacketDestroyEntities;
import common.packet.SPacketDimensionName;
import common.packet.SPacketDisconnect;
import common.packet.SPacketDisplayForm;
import common.packet.SPacketEntityEquipment;
import common.packet.SPacketEntityVelocity;
import common.packet.SPacketHeldItemChange;
import common.packet.SPacketJoinGame;
import common.packet.SPacketKeepAlive;
import common.packet.SPacketLoading;
import common.packet.SPacketMapChunkBulk;
import common.packet.SPacketMessage;
import common.packet.SPacketMultiBlockChange;
import common.packet.SPacketPlayerPosLook;
import common.packet.SPacketRespawn;
import common.packet.SPacketServerTick;
import common.packet.SPacketSetExperience;
import common.packet.SPacketSkin;
import common.packet.SPacketSpawnMob;
import common.packet.SPacketSpawnObject;
import common.packet.SPacketSpawnPlayer;
import common.packet.SPacketTimeUpdate;
import common.packet.SPacketTrades;
import common.packet.SPacketUpdateHealth;
import common.packet.SPacketWorld;
import common.sound.Sound;

public interface IClientPlayer extends NetHandler {
	void playSound(Sound sound);
	boolean isRenderViewEntity(Entity entity);
	void updatePlayerMoveState();
	void emitParticleAtEntity(Entity entity, ParticleType particleTypes);
	boolean isJumping();
	boolean isSprinting();
	boolean isSneaking();
	float getMoveForward();
	float getMoveStrafe();
	void setMoveForward(float value);
	void setMoveStrafe(float value);
    void addToSendQueue(Packet packet);
    
	void handleJoinGame(SPacketJoinGame packet);
	void handleSpawnObject(SPacketSpawnObject packet);
	void handleSpawnGlobalEntity(SPacketSpawnGlobalEntity packet);
	void handleEntityVelocity(SPacketEntityVelocity packet);
	void handleEntityMetadata(SPacketEntityMetadata packet);
	void handleSpawnPlayer(SPacketSpawnPlayer packet);
	void handleEntityTeleport(SPacketEntityTeleport packet);
	void handleHeldItemChange(SPacketHeldItemChange packet);
	void handleEntityMovement(SPacketEntity packet);
	void handleEntityHeadLook(SPacketEntityHeadLook packet);
	void handleDestroyEntities(SPacketDestroyEntities packet);
	void handlePlayerPosLook(SPacketPlayerPosLook packet);
	void handleMultiBlockChange(SPacketMultiBlockChange packet);
	void handleChunkData(SPacketChunkData packet);
	void handleBiomes(SPacketBiome packet);
	void handleBlockChange(SPacketBlockChange packet);
	void handleDisconnect(SPacketDisconnect packet);
	void handleCollectItem(SPacketCollectItem packet);
	void handleMessage(SPacketMessage packet);
	void handleLoading(SPacketLoading packet);
	void handleAnimation(SPacketAnimation packet);
	void handleSpawnMob(SPacketSpawnMob packet);
	void handleTimeUpdate(SPacketTimeUpdate packet);
	void handleServerTick(SPacketServerTick packet);
	void handleEntityAttach(SPacketEntityAttach packet);
	void handleEntityStatus(SPacketEntityStatus packet);
	void handleUpdateHealth(SPacketUpdateHealth packet);
	void handleSetExperience(SPacketSetExperience packet);
	void handleRespawn(SPacketRespawn packet);
	void handleExplosion(SPacketExplosion packet);
	void handleOpenWindow(SPacketOpenWindow packet);
	void handleSetSlot(SPacketSetSlot packet);
	void handleConfirmTransaction(SPacketConfirmTransaction packet);
	void handleWindowItems(SPacketWindowItems packet);
	void handleSignEditorOpen(SPacketSignEditorOpen packet);
	void handleUpdateSign(SPacketUpdateSign packet);
	void handleUpdateTileEntity(SPacketUpdateTileEntity packet);
	void handleWindowProperty(SPacketWindowProperty packet);
	void handleEntityEquipment(SPacketEntityEquipment packet);
	void handleCloseWindow(SPacketCloseWindow packet);
	void handleBlockAction(SPacketBlockAction packet);
	void handleBlockBreakAnim(SPacketBlockBreakAnim packet);
	void handleMapChunkBulk(SPacketMapChunkBulk packet);
	void handleChangeGameState(SPacketChangeGameState packet);
	void handleEffect(SPacketEffect packet);
	void handleEntityEffect(SPacketEntityEffect packet);
	void handleCamera(SPacketCamera packet);
	void handleRemoveEntityEffect(SPacketRemoveEntityEffect packet);
	void handlePlayerListItem(SPacketPlayerListItem packet);
	void handleCharacterList(SPacketCharacterList packet);
	void handleKeepAlive(SPacketKeepAlive packet);
	void handlePlayerAbilities(SPacketPlayerAbilities packet);
	void handleTabComplete(SPacketTabComplete packet);
	void handleSoundEffect(SPacketSoundEffect packet);
	void handleEntityTags(SPacketUpdateEntityTags packet);
	void handleParticles(SPacketParticles packet);
	void handleSkin(SPacketSkin packet);
	void handleTrades(SPacketTrades packet);
	void handleWorld(SPacketWorld packet);
	void handleDimName(SPacketDimensionName packet);
	void handleForm(SPacketDisplayForm packet);
}