コード例 #1
0
ファイル: HangingEntity.cpp プロジェクト: ChriPiv/MCServer
void cHangingEntity::SpawnOn(cClientHandle & a_ClientHandle)
{
	int Dir = 0;

	// The client uses different values for item frame directions and block faces. Our constants are for the block faces, so we convert them here to item frame faces
	switch (m_BlockFace)
	{
		case BLOCK_FACE_ZP: break;  // Initialised to zero
		case BLOCK_FACE_ZM: Dir = 2; break;
		case BLOCK_FACE_XM: Dir = 1; break;
		case BLOCK_FACE_XP: Dir = 3; break;
		default: ASSERT(!"Unhandled block face when trying to spawn item frame!"); return;
	}

	if ((Dir == 0) || (Dir == 2))  // Probably a client bug, but two directions are flipped and contrary to the norm, so we do -180
	{
		SetYaw((Dir * 90) - 180);
	}
	else
	{
		SetYaw(Dir * 90);
	}

	a_ClientHandle.SendSpawnObject(*this, 71, Dir, (Byte)GetYaw(), (Byte)GetPitch());
	a_ClientHandle.SendEntityMetadata(*this);
}
コード例 #2
0
ファイル: Scoreboard.cpp プロジェクト: ChriPiv/MCServer
void cObjective::SendTo(cClientHandle & a_Client)
{
	a_Client.SendScoreboardObjective(m_Name, m_DisplayName, 0);

	for (cScoreMap::const_iterator it = m_Scores.begin(); it != m_Scores.end(); ++it)
	{
		a_Client.SendScoreUpdate(m_Name, it->first, it->second, 0);
	}
}
コード例 #3
0
ファイル: TNTEntity.cpp プロジェクト: Didey/MCServer
void cTNTEntity::SpawnOn(cClientHandle & a_ClientHandle)
{
	a_ClientHandle.SendSpawnObject(*this, 50, 1, 0, 0);  // 50 means TNT
	m_bDirtyPosition = false;
	m_bDirtySpeed = false;
	m_bDirtyOrientation = false;
	m_bDirtyHead = false;
}
コード例 #4
0
ファイル: ExpOrb.cpp プロジェクト: Noraaron1/MCServer
void cExpOrb::SpawnOn(cClientHandle & a_Client)
{
	a_Client.SendExperienceOrb(*this);
	m_bDirtyPosition = false;
	m_bDirtySpeed = false;
	m_bDirtyOrientation = false;
	m_bDirtyHead = false;
}
コード例 #5
0
ファイル: Player.cpp プロジェクト: Kortak/MCServer
void cPlayer::SpawnOn(cClientHandle & a_Client)
{
	if (!m_bVisible || (m_ClientHandle == (&a_Client)))
	{
		return;
	}
	a_Client.SendPlayerSpawn(*this);
	a_Client.SendEntityHeadLook(*this);
	a_Client.SendEntityEquipment(*this, 0, m_Inventory.GetEquippedItem() );
	a_Client.SendEntityEquipment(*this, 1, m_Inventory.GetEquippedBoots() );
	a_Client.SendEntityEquipment(*this, 2, m_Inventory.GetEquippedLeggings() );
	a_Client.SendEntityEquipment(*this, 3, m_Inventory.GetEquippedChestplate() );
	a_Client.SendEntityEquipment(*this, 4, m_Inventory.GetEquippedHelmet() );
}
コード例 #6
0
ファイル: Minecart.cpp プロジェクト: Hillvith/MCServer
void cMinecart::SpawnOn(cClientHandle & a_ClientHandle)
{
	char SubType = 0;
	switch (m_Payload)
	{
		case mpNone:    SubType = 0; break;
		case mpChest:   SubType = 1; break;
		case mpFurnace: SubType = 2; break;
		case mpTNT:     SubType = 3; break;
		case mpHopper:  SubType = 5; break;
		default:
		{
			ASSERT(!"Unknown payload, cannot spawn on client");
			return;
		}
	}
	a_ClientHandle.SendSpawnVehicle(*this, 10, SubType); // 10 = Minecarts, SubType = What type of Minecart
}
コード例 #7
0
ファイル: Minecart.cpp プロジェクト: Xury/MCServer
void cMinecart::SpawnOn(cClientHandle & a_ClientHandle)
{
	char Type = 0;
	switch (m_Payload) //Wiki.vg is outdated on this!!
	{
		case mpNone:    Type =  9; break; //?
		case mpChest:   Type = 10; break;
		case mpFurnace: Type = 11; break; //?
		case mpTNT:     Type = 12; break; //?
		case mpHopper:  Type = 13; break; //?
		default:
		{
			ASSERT(!"Unknown payload, cannot spawn on client");
			return;
		}
	}
	a_ClientHandle.SendSpawnVehicle(*this, Type);
}
コード例 #8
0
ファイル: Scoreboard.cpp プロジェクト: ChriPiv/MCServer
void cScoreboard::SendTo(cClientHandle & a_Client)
{
	cCSLock Lock(m_CSObjectives);

	for (cObjectiveMap::iterator it = m_Objectives.begin(); it != m_Objectives.end(); ++it)
	{
		it->second.SendTo(a_Client);
	}

	for (int i = 0; i < (int) dsCount; ++i)
	{
		// Avoid race conditions
		cObjective * Objective = m_Display[i];

		if (Objective)
		{
			a_Client.SendDisplayObjective(Objective->GetName(), (eDisplaySlot) i);
		}
	}
}
コード例 #9
0
ファイル: Boat.cpp プロジェクト: Hillvith/MCServer
void cBoat::SpawnOn(cClientHandle & a_ClientHandle)
{
	a_ClientHandle.SendSpawnVehicle(*this, 1);
}
コード例 #10
0
ファイル: Floater.cpp プロジェクト: ChriPiv/MCServer
void cFloater::SpawnOn(cClientHandle & a_Client)
{
	a_Client.SendSpawnObject(*this, 90, m_PlayerID, 0, 0);
}
コード例 #11
0
ファイル: Server.cpp プロジェクト: JoeClacks/MCServer
bool cServer::Command(cClientHandle & a_Client, AString & a_Cmd)
{
	return cRoot::Get()->GetPluginManager()->CallHookChat(a_Client.GetPlayer(), a_Cmd);
}
コード例 #12
0
ファイル: Window.cpp プロジェクト: Solexid/MCServer
void cWindow::SendWholeWindow(cClientHandle & a_Client)
{
	a_Client.SendWholeInventory(*this);
}
コード例 #13
0
void cSplashPotionEntity::SpawnOn(cClientHandle & a_Client)
{
	a_Client.SendSpawnObject(*this, 73, m_PotionColor, ANGLE_TO_PROTO(GetYaw()), ANGLE_TO_PROTO(GetPitch()));
	a_Client.SendEntityMetadata(*this);
}
コード例 #14
0
ファイル: SignEntity.cpp プロジェクト: 36451/MCServer
void cSignEntity::SendTo(cClientHandle & a_Client)
{
	a_Client.SendUpdateSign(m_PosX, m_PosY, m_PosZ, m_Line[0], m_Line[1], m_Line[2], m_Line[3]);
}
コード例 #15
0
ファイル: Pickup.cpp プロジェクト: crexalbo/MCServer
void cPickup::SpawnOn(cClientHandle & a_Client)
{
	a_Client.SendPickupSpawn(*this);
}
コード例 #16
0
ファイル: ChestEntity.cpp プロジェクト: ThuGie/MCServer
void cChestEntity::SendTo(cClientHandle & a_Client)
{
	// Send a dummy "number of players with chest open" packet to make the chest visible:
	a_Client.SendBlockAction(m_PosX, m_PosY, m_PosZ, 1, 0, m_BlockType);
}
コード例 #17
0
ファイル: Skeleton.cpp プロジェクト: Haxi52/cuberite
void cSkeleton::SpawnOn(cClientHandle & a_ClientHandle)
{
	super::SpawnOn(a_ClientHandle);
	a_ClientHandle.SendEntityEquipment(*this, 0, cItem(E_ITEM_BOW));
}
コード例 #18
0
ファイル: Minecart.cpp プロジェクト: gjzskyland/cuberite
void cMinecart::SpawnOn(cClientHandle & a_ClientHandle)
{
	a_ClientHandle.SendSpawnVehicle(*this, 10, static_cast<char>(m_Payload));  // 10 = Minecarts
	a_ClientHandle.SendEntityMetadata(*this);
}
コード例 #19
0
ファイル: MobHeadEntity.cpp プロジェクト: Altenius/cuberite
void cMobHeadEntity::SendTo(cClientHandle & a_Client)
{
	cWorld * World = a_Client.GetPlayer()->GetWorld();
	a_Client.SendBlockChange(m_PosX, m_PosY, m_PosZ, m_BlockType, World->GetBlockMeta(m_PosX, m_PosY, m_PosZ));
	a_Client.SendUpdateBlockEntity(*this);
}
コード例 #20
0
ファイル: BeaconEntity.cpp プロジェクト: DjKiDD/MCServer
void cBeaconEntity::SendTo(cClientHandle & a_Client)
{
	a_Client.SendUpdateBlockEntity(*this);
}
コード例 #21
0
void cFlowerPotEntity::SendTo(cClientHandle & a_Client)
{
	a_Client.SendUpdateBlockEntity(*this);
}
コード例 #22
0
void cCommandBlockEntity::SendTo(cClientHandle & a_Client)
{
	a_Client.SendUpdateBlockEntity(*this);
}
コード例 #23
0
ファイル: Monster.cpp プロジェクト: 4264/cuberite
void cMonster::SpawnOn(cClientHandle & a_Client)
{
	a_Client.SendSpawnMob(*this);
}
コード例 #24
0
ファイル: Painting.cpp プロジェクト: 1285done/cuberite
void cPainting::SpawnOn(cClientHandle & a_Client)
{
	super::SpawnOn(a_Client);
	a_Client.SendPaintingSpawn(*this);
}
コード例 #25
0
void cProjectileEntity::SpawnOn(cClientHandle & a_Client)
{
    // Default spawning - use the projectile kind to spawn an object:
    a_Client.SendSpawnObject(*this, m_ProjectileKind, 12, ANGLE_TO_PROTO(GetYaw()), ANGLE_TO_PROTO(GetPitch()));
    a_Client.SendEntityMetadata(*this);
}
コード例 #26
0
ファイル: FallingBlock.cpp プロジェクト: DjKiDD/MCServer
void cFallingBlock::SpawnOn(cClientHandle & a_ClientHandle)
{
	a_ClientHandle.SendSpawnFallingBlock(*this);
}
コード例 #27
0
ファイル: Minecart.cpp プロジェクト: harryhare/MCServer
void cMinecart::SpawnOn(cClientHandle & a_ClientHandle)
{
    a_ClientHandle.SendSpawnVehicle(*this, 10, (char)m_Payload);  // 10 = Minecarts
    a_ClientHandle.SendEntityMetadata(*this);
}
コード例 #28
0
ファイル: EnderCrystal.cpp プロジェクト: DjKiDD/MCServer
void cEnderCrystal::SpawnOn(cClientHandle & a_ClientHandle)
{
	a_ClientHandle.SendSpawnObject(*this, 51, 0, (Byte)GetYaw(), (Byte)GetPitch());
}