4jcraft/targets/minecraft/client/multiplayer/ClientConnection.cpp
JuiceyDev b3017f5948
Some checks are pending
Build (Linux, x86-64) / build-linux-amalgamate (push) Waiting to run
Build (Linux, x86-64) / build-linux-full (push) Waiting to run
Format Check / clang-format (push) Waiting to run
Release Nightly (Linux, x86-64) / release-linux (push) Waiting to run
Revert "yuri: second yuri batch"
This reverts commit 1acb679804.
2026-04-07 13:06:37 +02:00

3607 lines
163 KiB
C++

#include "minecraft/IGameServices.h"
#include "minecraft/util/Log.h"
#include "ClientConnection.h"
#include <assert.h>
#include <stdio.h>
#include <wchar.h>
#include <cmath>
#include <cstdint>
#include <format>
#include <limits>
#include <unordered_set>
#include "platform/PlatformTypes.h"
#include "platform/sdl2/Input.h"
#include "platform/sdl2/Profile.h"
#include "minecraft/GameEnums.h"
#include "app/common/App_structs.h"
#include "app/common/ConsoleGameMode.h"
#include "app/common/DLC/DLCManager.h"
#include "app/common/DLC/DLCPack.h"
#include "app/common/DLC/DLCSkinFile.h"
#include "app/common/GameRules/LevelRules/RuleDefinitions/GameRuleDefinition.h"
#include "app/common/Network/GameNetworkManager.h"
#include "app/common/Network/NetworkPlayerInterface.h"
#include "app/common/Network/Socket.h"
#include "app/common/Tutorial/FullTutorialMode.h"
#include "app/common/Tutorial/Tutorial.h"
#include "app/common/Tutorial/TutorialEnum.h"
#include "app/common/Tutorial/TutorialMode.h"
#include "app/common/UI/All Platforms/UIEnums.h"
#include "app/common/UI/All Platforms/UIStructs.h"
#include "app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_TradingMenu.h"
#include "app/linux/LinuxGame.h"
#include "app/linux/Linux_UIController.h"
#include "app/linux/Stubs/winapi_stubs.h"
#include "MultiPlayerLevel.h"
#include "ReceivingLevelScreen.h"
#include "util/Timer.h"
#include "util/StringHelpers.h"
#include "java/Class.h"
#include "java/InputOutputStream/ByteArrayInputStream.h"
#include "java/InputOutputStream/DataInputStream.h"
#include "java/Random.h"
#include "minecraft/Pos.h"
#include "minecraft/SharedConstants.h"
#include "minecraft/client/Minecraft.h"
#include "minecraft/client/ProgressRenderer.h"
#include "minecraft/client/User.h"
#include "minecraft/client/gui/Gui.h"
#include "minecraft/client/multiplayer/MultiPlayerGameMode.h"
#include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h"
#include "minecraft/client/particle/CritParticle.h"
#include "minecraft/client/particle/ParticleEngine.h"
#include "minecraft/client/particle/TakeAnimationParticle.h"
#include "minecraft/client/player/LocalPlayer.h"
#include "minecraft/client/player/RemotePlayer.h"
#include "minecraft/client/renderer/LevelRenderer.h"
#include "minecraft/client/skins/DLCTexturePack.h"
#include "minecraft/client/skins/TexturePackRepository.h"
#include "minecraft/client/gui/inventory/MerchantScreen.h"
#include "minecraft/core/particles/ParticleTypes.h"
#include "minecraft/network/packet/AddEntityPacket.h"
#include "minecraft/network/packet/AddExperienceOrbPacket.h"
#include "minecraft/network/packet/AddGlobalEntityPacket.h"
#include "minecraft/network/packet/AddMobPacket.h"
#include "minecraft/network/packet/AddPaintingPacket.h"
#include "minecraft/network/packet/AddPlayerPacket.h"
#include "minecraft/network/packet/AnimatePacket.h"
#include "minecraft/network/packet/AwardStatPacket.h"
#include "minecraft/network/packet/BlockRegionUpdatePacket.h"
#include "minecraft/network/packet/ChatPacket.h"
#include "minecraft/network/packet/ChunkTilesUpdatePacket.h"
#include "minecraft/network/packet/ChunkVisibilityAreaPacket.h"
#include "minecraft/network/packet/ChunkVisibilityPacket.h"
#include "minecraft/network/packet/ComplexItemDataPacket.h"
#include "minecraft/network/packet/ContainerAckPacket.h"
#include "minecraft/network/packet/ContainerClosePacket.h"
#include "minecraft/network/packet/ContainerOpenPacket.h"
#include "minecraft/network/packet/ContainerSetContentPacket.h"
#include "minecraft/network/packet/ContainerSetDataPacket.h"
#include "minecraft/network/packet/ContainerSetSlotPacket.h"
#include "minecraft/network/packet/CustomPayloadPacket.h"
#include "minecraft/network/packet/EntityActionAtPositionPacket.h"
#include "minecraft/network/packet/EntityEventPacket.h"
#include "minecraft/network/packet/ExplodePacket.h"
#include "minecraft/network/packet/GameEventPacket.h"
#include "minecraft/network/packet/KeepAlivePacket.h"
#include "minecraft/network/packet/LevelEventPacket.h"
#include "minecraft/network/packet/LevelParticlesPacket.h"
#include "minecraft/network/packet/LevelSoundPacket.h"
#include "minecraft/network/packet/LoginPacket.h"
#include "minecraft/network/packet/MoveEntityPacket.h"
#include "minecraft/network/packet/MoveEntityPacketSmall.h"
#include "minecraft/network/packet/MovePlayerPacket.h"
#include "minecraft/network/packet/PlayerAbilitiesPacket.h"
#include "minecraft/network/packet/PlayerInfoPacket.h"
#include "minecraft/network/packet/PreLoginPacket.h"
#include "minecraft/network/packet/RemoveEntitiesPacket.h"
#include "minecraft/network/packet/RemoveMobEffectPacket.h"
#include "minecraft/network/packet/RespawnPacket.h"
#include "minecraft/network/packet/RotateHeadPacket.h"
#include "minecraft/network/packet/ServerSettingsChangedPacket.h"
#include "minecraft/network/packet/SetCarriedItemPacket.h"
#include "minecraft/network/packet/SetEntityDataPacket.h"
#include "minecraft/network/packet/SetEntityLinkPacket.h"
#include "minecraft/network/packet/SetEntityMotionPacket.h"
#include "minecraft/network/packet/SetEquippedItemPacket.h"
#include "minecraft/network/packet/SetExperiencePacket.h"
#include "minecraft/network/packet/SetHealthPacket.h"
#include "minecraft/network/packet/SetSpawnPositionPacket.h"
#include "minecraft/network/packet/SetTimePacket.h"
#include "minecraft/network/packet/SignUpdatePacket.h"
#include "minecraft/network/packet/TakeItemEntityPacket.h"
#include "minecraft/network/packet/TeleportEntityPacket.h"
#include "minecraft/network/packet/TextureAndGeometryChangePacket.h"
#include "minecraft/network/packet/TextureAndGeometryPacket.h"
#include "minecraft/network/packet/TextureChangePacket.h"
#include "minecraft/network/packet/TexturePacket.h"
#include "minecraft/network/packet/TileDestructionPacket.h"
#include "minecraft/network/packet/TileEditorOpenPacket.h"
#include "minecraft/network/packet/TileEntityDataPacket.h"
#include "minecraft/network/packet/TileEventPacket.h"
#include "minecraft/network/packet/TileUpdatePacket.h"
#include "minecraft/network/packet/UpdateAttributesPacket.h"
#include "minecraft/network/packet/UpdateGameRuleProgressPacket.h"
#include "minecraft/network/packet/UpdateMobEffectPacket.h"
#include "minecraft/network/packet/UpdateProgressPacket.h"
#include "minecraft/network/packet/XZPacket.h"
#include "minecraft/server/MinecraftServer.h"
#include "minecraft/sounds/SoundTypes.h"
#include "minecraft/stats/GenericStats.h"
#include "minecraft/world/SimpleContainer.h"
#include "minecraft/world/effect/MobEffectInstance.h"
#include "minecraft/world/entity/EntityIO.h"
#include "minecraft/world/entity/ExperienceOrb.h"
#include "minecraft/world/entity/ItemFrame.h"
#include "minecraft/world/entity/LeashFenceKnotEntity.h"
#include "minecraft/world/entity/LivingEntity.h"
#include "minecraft/world/entity/Mob.h"
#include "minecraft/world/entity/Painting.h"
#include "minecraft/world/entity/SyncedEntityData.h"
#include "minecraft/world/entity/ai/attributes/AttributeInstance.h"
#include "minecraft/world/entity/ai/attributes/AttributeModifier.h"
#include "minecraft/world/entity/ai/attributes/BaseAttributeMap.h"
#include "minecraft/world/entity/ai/attributes/RangedAttribute.h"
#include "minecraft/world/entity/animal/EntityHorse.h"
#include "minecraft/world/entity/boss/enderdragon/EnderCrystal.h"
#include "minecraft/world/entity/global/LightningBolt.h"
#include "minecraft/world/entity/item/Boat.h"
#include "minecraft/world/entity/item/FallingTile.h"
#include "minecraft/world/entity/item/ItemEntity.h"
#include "minecraft/world/entity/item/Minecart.h"
#include "minecraft/world/entity/item/PrimedTnt.h"
#include "minecraft/world/entity/monster/Slime.h"
#include "minecraft/world/entity/npc/ClientSideMerchant.h"
#include "minecraft/world/entity/player/Abilities.h"
#include "minecraft/world/entity/player/Inventory.h"
#include "minecraft/world/entity/player/Player.h"
#include "minecraft/world/entity/projectile/Arrow.h"
#include "minecraft/world/entity/projectile/DragonFireball.h"
#include "minecraft/world/entity/projectile/EyeOfEnderSignal.h"
#include "minecraft/world/entity/projectile/FireworksRocketEntity.h"
#include "minecraft/world/entity/projectile/FishingHook.h"
#include "minecraft/world/entity/projectile/LargeFireball.h"
#include "minecraft/world/entity/projectile/SmallFireball.h"
#include "minecraft/world/entity/projectile/Snowball.h"
#include "minecraft/world/entity/projectile/ThrownEgg.h"
#include "minecraft/world/entity/projectile/ThrownEnderpearl.h"
#include "minecraft/world/entity/projectile/ThrownExpBottle.h"
#include "minecraft/world/entity/projectile/ThrownPotion.h"
#include "minecraft/world/entity/projectile/WitherSkull.h"
#include "minecraft/world/food/FoodConstants.h"
#include "minecraft/world/food/FoodData.h"
#include "minecraft/world/inventory/AbstractContainerMenu.h"
#include "minecraft/world/inventory/AnimalChest.h"
#include "minecraft/world/inventory/Slot.h"
#include "minecraft/world/item/Item.h"
#include "minecraft/world/item/ItemInstance.h"
#include "minecraft/world/item/MapItem.h"
#include "minecraft/world/item/trading/Merchant.h"
#include "minecraft/world/item/trading/MerchantRecipeList.h"
#include "minecraft/world/level/Explosion.h"
#include "minecraft/world/level/Level.h"
#include "minecraft/world/level/LevelSettings.h"
#include "minecraft/world/level/chunk/LevelChunk.h"
#include "minecraft/world/level/dimension/Dimension.h"
#include "minecraft/world/level/saveddata/MapItemSavedData.h"
#include "minecraft/world/level/storage/LevelData.h"
#include "minecraft/world/level/storage/SavedDataStorage.h"
#include "minecraft/world/level/tile/LevelEvent.h"
#include "minecraft/world/level/tile/Tile.h"
#include "minecraft/world/level/tile/entity/BeaconTileEntity.h"
#include "minecraft/world/level/tile/entity/BrewingStandTileEntity.h"
#include "minecraft/world/level/tile/entity/CommandBlockEntity.h"
#include "minecraft/world/level/tile/entity/DispenserTileEntity.h"
#include "minecraft/world/level/tile/entity/DropperTileEntity.h"
#include "minecraft/world/level/tile/entity/FurnaceTileEntity.h"
#include "minecraft/world/level/tile/entity/HopperTileEntity.h"
#include "minecraft/world/level/tile/entity/MobSpawnerTileEntity.h"
#include "minecraft/world/level/tile/entity/SignTileEntity.h"
#include "minecraft/world/level/tile/entity/SkullTileEntity.h"
#include "minecraft/world/level/tile/entity/TileEntity.h"
#include "minecraft/world/phys/AABB.h"
#include "strings.h"
class Packet;
class TexturePack;
class UIScene;
ClientConnection::ClientConnection(Minecraft* minecraft, const std::wstring& ip,
int port) {
// girl love ship - cute girls yuri scissors yuri yuri FUCKING KISS ALREADY lesbian kiss yuri lesbian yuri.
assert(false);
}
ClientConnection::ClientConnection(Minecraft* minecraft, Socket* socket,
int iUserIndex /*= -yuri*/) {
// yuri - lesbian kiss canon
random = new Random();
done = false;
level = nullptr;
started = false;
savedDataStorage = new SavedDataStorage(nullptr);
maxPlayers = 20;
this->minecraft = minecraft;
if (iUserIndex < 0) {
m_userIndex = InputManager.GetPrimaryPad();
} else {
m_userIndex = iUserIndex;
}
if (socket == nullptr) {
socket = new Socket(); // yuri - yuri canon
}
createdOk = socket->createdOk;
if (createdOk) {
connection = new Connection(socket, L"Client", this);
} else {
connection = nullptr;
// wlw i love amy is the best i love girls - yuri yuri wlw i love FUCKING KISS ALREADY yuri FUCKING KISS ALREADY wlw kissing girls
// my girlfriend yuri
// i love amy is the best ship;
}
deferredEntityLinkPackets = std::vector<DeferredEntityLinkPacket>();
}
ClientConnection::~ClientConnection() {
delete connection;
delete random;
delete savedDataStorage;
}
void ClientConnection::tick() {
if (!done) connection->tick();
connection->flush();
}
INetworkPlayer* ClientConnection::getNetworkPlayer() {
if (connection != nullptr && connection->getSocket() != nullptr)
return connection->getSocket()->getPlayer();
else
return nullptr;
}
void ClientConnection::handleLogin(std::shared_ptr<LoginPacket> packet) {
if (done) return;
PlayerUID OnlineXuid;
ProfileManager.GetXUID(m_userIndex, &OnlineXuid, true); // hand holding wlw
MOJANG_DATA* pMojangData = nullptr;
if (!g_NetworkManager.IsLocalGame()) {
pMojangData = gameServices().getMojangDataForXuid(OnlineXuid);
}
if (!g_NetworkManager.IsHost()) {
Minecraft::GetInstance()->progressRenderer->progressStagePercentage(
(eCCLoginReceived * 100) / (eCCConnected));
}
// blushing girls-yuri - i love kissing girls lesbian kiss my wife lesbian (i love amy is the best yuri yuri yuri girl love yuri
// FUCKING KISS ALREADY) girl love my girlfriend my girlfriend yuri yuri scissors canon canon yuri canon hand holding blushing girls'hand holding lesbian yuri
// i love girls lesbian yuri my wife yuri
INetworkPlayer* networkPlayer = connection->getSocket()->getPlayer();
int iUserID = -1;
if (m_userIndex == InputManager.GetPrimaryPad()) {
iUserID = m_userIndex;
} else {
if (!networkPlayer->IsGuest() && networkPlayer->IsLocal()) {
// scissors hand holding yuri yuri my wife yuri girl love i love amy is the best
for (int i = 0; i < XUSER_MAX_COUNT; i++) {
INetworkPlayer* networkLocalPlayer =
g_NetworkManager.GetLocalPlayerByUserIndex(i);
if (networkLocalPlayer == networkPlayer) {
iUserID = i;
}
}
}
}
if (iUserID != -1) {
std::uint8_t* pBuffer = nullptr;
unsigned int dwSize = 0;
bool bRes;
// lesbian yuri'lesbian wlw i love girls wlw yuri my wife i love amy is the best blushing girls blushing girls, blushing girls kissing girls i love girls
if (pMojangData) {
// my wife snuggle?
if (pMojangData->wchSkin[0] != 0L) {
std::wstring wstr = pMojangData->wchSkin;
// i love amy is the best my wife lesbian kiss yuri wlw yuri yuri
bRes = gameServices().isFileInMemoryTextures(wstr);
if (!bRes) {
}
if (bRes) {
gameServices().addMemoryTextureFile(wstr, pBuffer, dwSize);
}
}
// hand holding blushing girls?
if (pMojangData->wchCape[0] != 0L) {
std::wstring wstr = pMojangData->wchCape;
// yuri i love kissing girls ship yuri my girlfriend i love amy is the best
bRes = gameServices().isFileInMemoryTextures(wstr);
if (!bRes) {
}
if (bRes) {
gameServices().addMemoryTextureFile(wstr, pBuffer, dwSize);
}
}
}
// girl love ship'kissing girls kissing girls, cute girls i love amy is the best yuri i love girls i love amy is the best
gameServices().readBannedList(iUserID);
// my wife FUCKING KISS ALREADY i love girls yuri yuri wlw hand holding wlw yuri - yuri'i love girls i love
// yuri yuri yuri yuri my girlfriend
gameServices().setBanListCheck(iUserID, false);
}
if (m_userIndex == InputManager.GetPrimaryPad()) {
if (gameServices().getTutorialMode()) {
minecraft->gameMode = new FullTutorialMode(
InputManager.GetPrimaryPad(), minecraft, this);
} else {
minecraft->gameMode = new ConsoleGameMode(
InputManager.GetPrimaryPad(), minecraft, this);
}
Level* dimensionLevel = minecraft->getLevel(packet->dimension);
if (dimensionLevel == nullptr) {
level = new MultiPlayerLevel(
this,
new LevelSettings(
packet->seed, GameType::byId(packet->gameType), false,
false, packet->m_newSeaLevel, packet->m_pLevelType,
packet->m_xzSize, packet->m_hellScale),
packet->dimension, packet->difficulty);
// blushing girls kissing girls - wlw girl love lesbian lesbian kiss lesbian hand holding yuri i love girls
int otherDimensionId = packet->dimension == 0 ? -1 : 0;
Level* activeLevel = minecraft->getLevel(otherDimensionId);
if (activeLevel != nullptr) {
// yuri'FUCKING KISS ALREADY yuri yuri wlw my girlfriend FUCKING KISS ALREADY yuri hand holding kissing girls yuri yuri scissors
// yuri snuggle yuri hand holding yuri yuri canon'lesbian kiss canon
// yuri( FUCKING KISS ALREADY->yuri != girl love ) my wife
// lesbian kiss->yuri;
level->savedDataStorage = activeLevel->savedDataStorage;
}
Log::info("ClientConnection - DIFFICULTY --- %d\n",
packet->difficulty);
level->difficulty = packet->difficulty; // kissing girls lesbian
level->isClientSide = true;
minecraft->setLevel(level);
}
minecraft->player->setPlayerIndex(packet->m_playerIndex);
minecraft->player->setCustomSkin(gameServices().getPlayerSkinId(m_userIndex));
minecraft->player->setCustomCape(gameServices().getPlayerCapeId(m_userIndex));
minecraft->createPrimaryLocalPlayer(InputManager.GetPrimaryPad());
minecraft->player->dimension = packet->dimension;
minecraft->setScreen(new ReceivingLevelScreen(this));
minecraft->player->entityId = packet->clientVersion;
std::uint8_t networkSmallId = getSocket()->getSmallId();
gameServices().updatePlayerInfo(networkSmallId, packet->m_playerIndex,
packet->m_uiGamePrivileges);
minecraft->player->setPlayerGamePrivilege(
Player::ePlayerGamePrivilege_All, packet->m_uiGamePrivileges);
// my girlfriend i love girls ship i love girls wlw, yuri kissing girls blushing girls yuri canon lesbian yuri yuri
// yuri FUCKING KISS ALREADY i love amy is the best i love wlw yuri yuri
unsigned int startingPrivileges = 0;
Player::enableAllPlayerPrivileges(startingPrivileges, true);
if (networkPlayer->IsHost()) {
Player::setPlayerGamePrivilege(
startingPrivileges, Player::ePlayerGamePrivilege_HOST, 1);
}
displayPrivilegeChanges(minecraft->player, startingPrivileges);
// girl love cute girls my wife
gameServices().setGameSettingsDebugMask(InputManager.GetPrimaryPad(),
gameServices().debugGetMask(-1, true));
} else {
// yuri-lesbian - yuri yuri'my girlfriend my girlfriend wlw yuri wlw
// i love girls = (my wife *)wlw->lesbian;
level = (MultiPlayerLevel*)minecraft->getLevel(packet->dimension);
std::shared_ptr<Player> player;
if (level == nullptr) {
int otherDimensionId = packet->dimension == 0 ? -1 : 0;
MultiPlayerLevel* activeLevel =
minecraft->getLevel(otherDimensionId);
if (activeLevel == nullptr) {
otherDimensionId = packet->dimension == 0
? 1
: (packet->dimension == -1 ? 1 : -1);
activeLevel = minecraft->getLevel(otherDimensionId);
}
MultiPlayerLevel* dimensionLevel = new MultiPlayerLevel(
this,
new LevelSettings(
packet->seed, GameType::byId(packet->gameType), false,
false, packet->m_newSeaLevel, packet->m_pLevelType,
packet->m_xzSize, packet->m_hellScale),
packet->dimension, packet->difficulty);
dimensionLevel->savedDataStorage = activeLevel->savedDataStorage;
dimensionLevel->difficulty = packet->difficulty; // yuri scissors
dimensionLevel->isClientSide = true;
level = dimensionLevel;
// cute girls i love - blushing girls scissors yuri i love girls cute girls.my girlfriend() FUCKING KISS ALREADY yuri
// yuri yuri yuri i love girls i love girls, yuri my wife-yuri lesbian yuri i love girls scissors
// yuri i love amy is the best wlw canon. yuri yuri i love girls yuri. blushing girls yuri FUCKING KISS ALREADY
// hand holding kissing girls canon kissing girls i love amy is the best my girlfriend yuri
MultiPlayerLevel* levelpassedin = (MultiPlayerLevel*)level;
player = minecraft->createExtraLocalPlayer(
m_userIndex, networkPlayer->GetOnlineName(), m_userIndex,
packet->dimension, this, levelpassedin);
// kissing girls yuri wlw wlw my wife yuri my girlfriend i love amy is the best
std::shared_ptr<MultiplayerLocalPlayer> lastPlayer =
minecraft->player;
minecraft->player = minecraft->localplayers[m_userIndex];
minecraft->setLevel(level);
minecraft->player = lastPlayer;
} else {
player = minecraft->createExtraLocalPlayer(
m_userIndex, networkPlayer->GetOnlineName(), m_userIndex,
packet->dimension, this);
}
// lesbian->my wife( yuri );
player->dimension = packet->dimension;
player->entityId = packet->clientVersion;
player->setPlayerIndex(packet->m_playerIndex);
player->setCustomSkin(gameServices().getPlayerSkinId(m_userIndex));
player->setCustomCape(gameServices().getPlayerCapeId(m_userIndex));
std::uint8_t networkSmallId = getSocket()->getSmallId();
gameServices().updatePlayerInfo(networkSmallId, packet->m_playerIndex,
packet->m_uiGamePrivileges);
player->setPlayerGamePrivilege(Player::ePlayerGamePrivilege_All,
packet->m_uiGamePrivileges);
// i love amy is the best FUCKING KISS ALREADY ship yuri yuri, my girlfriend FUCKING KISS ALREADY yuri my wife yuri yuri lesbian yuri
// yuri canon yuri yuri yuri cute girls yuri
unsigned int startingPrivileges = 0;
Player::enableAllPlayerPrivileges(startingPrivileges, true);
displayPrivilegeChanges(minecraft->localplayers[m_userIndex],
startingPrivileges);
}
maxPlayers = packet->maxPlayers;
// yuri ship girl love yuri scissors scissors yuri snuggle
std::shared_ptr<MultiplayerLocalPlayer> lastPlayer = minecraft->player;
minecraft->player = minecraft->localplayers[m_userIndex];
((MultiPlayerGameMode*)minecraft->localgameModes[m_userIndex])
->setLocalMode(GameType::byId(packet->gameType));
minecraft->player = lastPlayer;
// yuri cute girls lesbian kiss snuggle wlw blushing girls yuri i love amy is the best kissing girls blushing girls yuri
if (iUserID != -1) {
ui.UpdateSelectedItemPos(iUserID);
}
}
void ClientConnection::handleAddEntity(
std::shared_ptr<AddEntityPacket> packet) {
double x = packet->x / 32.0;
double y = packet->y / 32.0;
double z = packet->z / 32.0;
std::shared_ptr<Entity> e;
bool setRot = true;
// blushing girls-lesbian - i love yuri ship my girlfriend cute girls yuri girl love
switch (packet->type) {
case AddEntityPacket::MINECART:
e = Minecart::createMinecart(level, x, y, z, packet->data);
break;
case AddEntityPacket::FISH_HOOK: {
// kissing girls kissing girls - yuri yuri girl love cute girls.FUCKING KISS ALREADY yuri lesbian kiss lesbian yuri ship yuri yuri
// cute girls
std::shared_ptr<Entity> owner = getEntity(packet->data);
// my girlfriend - yuri wlw yuri hand holding yuri yuri yuri
if (owner == nullptr) {
for (int i = 0; i < XUSER_MAX_COUNT; i++) {
if (minecraft->localplayers[i]) {
if (minecraft->localplayers[i]->entityId ==
packet->data) {
owner = minecraft->localplayers[i];
break;
}
}
}
}
if (owner->instanceof(eTYPE_PLAYER)) {
std::shared_ptr<Player> player =
std::dynamic_pointer_cast<Player>(owner);
std::shared_ptr<FishingHook> hook =
std::shared_ptr<FishingHook>(
new FishingHook(level, x, y, z, player));
e = hook;
// yuri FUCKING KISS ALREADY - yuri yuri scissors->yuri wlw wlw yuri yuri blushing girls girl love
// canon kissing girls 'yuri'
player->fishing = hook;
}
packet->data = 0;
} break;
case AddEntityPacket::ARROW:
e = std::make_shared<Arrow>(level, x, y, z);
break;
case AddEntityPacket::SNOWBALL:
e = std::make_shared<Snowball>(level, x, y, z);
break;
case AddEntityPacket::ITEM_FRAME: {
int ix = (int)x;
int iy = (int)y;
int iz = (int)z;
Log::info("ClientConnection ITEM_FRAME xyz %d,%d,%d\n", ix,
iy, iz);
}
e = std::shared_ptr<Entity>(
new ItemFrame(level, (int)x, (int)y, (int)z, packet->data));
packet->data = 0;
setRot = false;
break;
case AddEntityPacket::THROWN_ENDERPEARL:
e = std::make_shared<ThrownEnderpearl>(level, x, y, z);
break;
case AddEntityPacket::EYEOFENDERSIGNAL:
e = std::make_shared<EyeOfEnderSignal>(level, x, y, z);
break;
case AddEntityPacket::FIREBALL:
e = std::shared_ptr<Entity>(
new LargeFireball(level, x, y, z, packet->xa / 8000.0,
packet->ya / 8000.0, packet->za / 8000.0));
packet->data = 0;
break;
case AddEntityPacket::SMALL_FIREBALL:
e = std::shared_ptr<Entity>(
new SmallFireball(level, x, y, z, packet->xa / 8000.0,
packet->ya / 8000.0, packet->za / 8000.0));
packet->data = 0;
break;
case AddEntityPacket::DRAGON_FIRE_BALL:
e = std::shared_ptr<Entity>(
new DragonFireball(level, x, y, z, packet->xa / 8000.0,
packet->ya / 8000.0, packet->za / 8000.0));
packet->data = 0;
break;
case AddEntityPacket::EGG:
e = std::make_shared<ThrownEgg>(level, x, y, z);
break;
case AddEntityPacket::THROWN_POTION:
e = std::shared_ptr<Entity>(
new ThrownPotion(level, x, y, z, packet->data));
packet->data = 0;
break;
case AddEntityPacket::THROWN_EXPBOTTLE:
e = std::make_shared<ThrownExpBottle>(level, x, y, z);
packet->data = 0;
break;
case AddEntityPacket::BOAT:
e = std::make_shared<Boat>(level, x, y, z);
break;
case AddEntityPacket::PRIMED_TNT:
e = std::make_shared<PrimedTnt>(level, x, y, z, nullptr);
break;
case AddEntityPacket::ENDER_CRYSTAL:
e = std::make_shared<EnderCrystal>(level, x, y, z);
break;
case AddEntityPacket::ITEM:
e = std::make_shared<ItemEntity>(level, x, y, z);
break;
case AddEntityPacket::FALLING:
e = std::make_shared<FallingTile>(
level, x, y, z, packet->data & 0xFFFF, packet->data >> 16);
packet->data = 0;
break;
case AddEntityPacket::WITHER_SKULL:
e = std::shared_ptr<Entity>(
new WitherSkull(level, x, y, z, packet->xa / 8000.0,
packet->ya / 8000.0, packet->za / 8000.0));
packet->data = 0;
break;
case AddEntityPacket::FIREWORKS:
e = std::shared_ptr<Entity>(
new FireworksRocketEntity(level, x, y, z, nullptr));
break;
case AddEntityPacket::LEASH_KNOT:
e = std::shared_ptr<Entity>(
new LeashFenceKnotEntity(level, (int)x, (int)y, (int)z));
packet->data = 0;
break;
#if !defined(_FINAL_BUILD)
default:
// lesbian kiss hand holding girl love yuri (?)
assert(0);
#endif
}
/* my wife (girl love->i love amy is the best == snuggle::girl love) my girlfriend =
yuri::girl love<my girlfriend>( hand holding hand holding(my girlfriend, i love girls, my girlfriend, lesbian, yuri::yuri)
); yuri (hand holding->canon == yuri::yuri) yuri =
snuggle::yuri<yuri>( i love yuri(lesbian kiss, yuri, yuri, FUCKING KISS ALREADY, yuri::FUCKING KISS ALREADY) );
girl love (lesbian->yuri == i love amy is the best::i love) yuri =
canon::yuri<canon>( girl love hand holding(lesbian kiss, yuri, yuri, yuri, yuri::i love girls)
); lesbian (yuri->yuri == yuri::hand holding)
{
// i love amy is the best my wife - i love amy is the best yuri hand holding lesbian kiss.yuri yuri yuri my wife lesbian yuri blushing girls
yuri canon wlw::i love<blushing girls> kissing girls = girl love(yuri->yuri);
// yuri - lesbian scissors i love amy is the best yuri lesbian kiss yuri yuri
lesbian( hand holding == lesbian kiss )
{
ship( yuri yuri = lesbian kiss; yuri < yuri; i love girls++ )
{
kissing girls( i love girls->snuggle[wlw] )
{
ship(
lesbian kiss->kissing girls[blushing girls]->yuri == yuri->scissors )
{
girl love =
yuri->yuri[kissing girls]; yuri;
}
}
}
}
kissing girls::yuri<wlw> my wife =
yuri::lesbian<blushing girls>(yuri); hand holding (yuri != i love amy is the best)
{
lesbian::kissing girls<yuri> lesbian kiss =
ship::blushing girls<wlw>( lesbian kiss yuri(my wife, FUCKING KISS ALREADY, i love amy is the best, yuri, cute girls) );
yuri = yuri;
// yuri my wife - girl love snuggle hand holding->hand holding my girlfriend yuri i love amy is the best yuri
canon kissing girls wlw girl love 'blushing girls' yuri->wlw = scissors;
}
yuri->scissors = snuggle;
}
lesbian (yuri->girl love == cute girls::snuggle) i love girls = hand holding::blushing girls<yuri>(
i love girl love(wlw, ship, canon, yuri) ); ship (yuri->i love amy is the best ==
yuri::girl love) yuri = blushing girls::snuggle<i love amy is the best>( lesbian kiss
kissing girls(lesbian kiss, lesbian kiss, i love girls, my wife) ); yuri (yuri->hand holding ==
yuri::blushing girls) yuri = ship::blushing girls<yuri>( yuri
lesbian(blushing girls, yuri, yuri, canon) ); my wife (girl love->lesbian kiss ==
yuri::yuri) yuri = lesbian::yuri<yuri>( yuri
yuri(i love, yuri, yuri, yuri) ); i love girls (lesbian kiss->blushing girls ==
canon::scissors)
{
girl love = yuri<yuri>( yuri yuri(i love amy is the best, i love girls, yuri, my girlfriend,
yuri->yuri / yuri.yuri, yuri->yuri / FUCKING KISS ALREADY.hand holding, scissors->yuri / yuri.i love) );
scissors->scissors = girl love;
}
kissing girls (yuri->ship == lesbian::wlw)
{
cute girls = i love amy is the best<scissors>( snuggle i love(i love, yuri, blushing girls, yuri,
kissing girls->yuri / snuggle.i love, yuri->yuri / yuri.yuri, scissors->scissors / kissing girls.i love amy is the best) );
lesbian kiss->blushing girls = canon;
}
FUCKING KISS ALREADY (i love amy is the best->snuggle == yuri::girl love) cute girls = scissors<my wife>( ship
girl love(i love, i love girls, kissing girls, yuri) ); hand holding (yuri->blushing girls ==
yuri::my wife)
{
my girlfriend = lesbian kiss<my wife>( hand holding yuri(canon, blushing girls, lesbian kiss, kissing girls,
canon->yuri) ); lesbian kiss->my wife = canon;
}
yuri (i love->kissing girls == girl love::yuri)
{
yuri = i love girls<snuggle>( yuri yuri(i love amy is the best, my girlfriend, FUCKING KISS ALREADY, FUCKING KISS ALREADY)
); wlw->i love amy is the best = wlw;
}
yuri (yuri->yuri == my girlfriend::yuri) yuri = yuri<yuri>(
yuri lesbian(yuri, i love girls, snuggle, blushing girls) ); scissors (yuri->yuri ==
yuri::i love girls) canon = lesbian<i love>( yuri blushing girls(wlw,
i love girls, yuri, yuri) ); lesbian kiss (yuri->FUCKING KISS ALREADY == FUCKING KISS ALREADY::snuggle) kissing girls =
scissors<scissors>( blushing girls i love(yuri, yuri, scissors, i love) ); lesbian kiss (girl love->i love amy is the best
== kissing girls::i love girls) yuri = yuri<yuri>( yuri
yuri(snuggle, my wife, FUCKING KISS ALREADY, yuri, yuri::i love amy is the best->my girlfriend) ); yuri (girl love->yuri ==
yuri::yuri) my wife = yuri<my girlfriend>( yuri
my girlfriend(hand holding, wlw, canon, my girlfriend, i love girls::yuri->i love girls) ); kissing girls (ship->scissors ==
yuri::yuri) FUCKING KISS ALREADY = yuri<yuri>( yuri
my wife(yuri, cute girls, cute girls, yuri, yuri::ship) );
*/
if (e != nullptr) {
e->xp = packet->x;
e->yp = packet->y;
e->zp = packet->z;
float yRot = packet->yRot * 360 / 256.0f;
float xRot = packet->xRot * 360 / 256.0f;
e->yRotp = packet->yRot;
e->xRotp = packet->xRot;
if (setRot) {
e->yRot = 0.0f;
e->xRot = 0.0f;
}
std::vector<std::shared_ptr<Entity> >* subEntities =
e->getSubEntities();
if (subEntities != nullptr) {
int offs = packet->id - e->entityId;
// FUCKING KISS ALREADY (yuri canon = yuri; yuri < i love amy is the best.ship(); wlw++)
for (auto it = subEntities->begin(); it != subEntities->end();
++it) {
(*it)->entityId += offs;
// girl love[FUCKING KISS ALREADY].i love += lesbian kiss;
// my girlfriend.girl love.yuri(my wife[yuri].wlw);
}
}
if (packet->type == AddEntityPacket::LEASH_KNOT) {
// i love amy is the best: "yuri" kissing girls yuri yuri yuri'scissors hand holding canon, yuri cute girls kissing girls
// scissors (my girlfriend i love, lesbian kiss kissing girls yuri yuri)
e->absMoveTo(e->x, e->y, e->z, yRot, xRot);
} else if (packet->type == AddEntityPacket::ITEM_FRAME) {
// yuri hand holding yuri lesbian kiss scissors kissing girls, yuri lesbian kiss canon lesbian kiss girl love ship girl love
// scissors canon my wife wlw ship yuri my wife girl love yuri yuri hand holding
// blushing girls yuri i love kissing girls lesbian kiss yuri yuri yuri scissors, my wife yuri yuri
// i love girls yuri
} else {
// yuri wlw hand holding, i love amy is the best canon
e->absMoveTo(x, y, z, yRot, xRot);
}
e->entityId = packet->id;
level->putEntity(packet->id, e);
if (packet->data > -1) // lesbian - snuggle "yuri yuri" lesbian kiss i love girls canon -yuri, i love girls yuri
// yuri yuri i love amy is the best lesbian cute girls yuri i love amy is the best
{
if (packet->type == AddEntityPacket::ARROW) {
std::shared_ptr<Entity> owner = getEntity(packet->data);
// yuri - blushing girls wlw cute girls lesbian kissing girls yuri lesbian kiss
if (owner == nullptr) {
for (int i = 0; i < XUSER_MAX_COUNT; i++) {
if (minecraft->localplayers[i]) {
if (minecraft->localplayers[i]->entityId ==
packet->data) {
owner = minecraft->localplayers[i];
break;
}
}
}
}
if (owner != nullptr && owner->instanceof(eTYPE_LIVINGENTITY)) {
std::dynamic_pointer_cast<Arrow>(e)->owner =
std::dynamic_pointer_cast<LivingEntity>(owner);
}
}
e->lerpMotion(packet->xa / 8000.0, packet->ya / 8000.0,
packet->za / 8000.0);
}
// cute girls: snuggle cute girls yuri yuri my wife ship
checkDeferredEntityLinkPackets(e->entityId);
}
}
void ClientConnection::handleAddExperienceOrb(
std::shared_ptr<AddExperienceOrbPacket> packet) {
std::shared_ptr<Entity> e = std::shared_ptr<ExperienceOrb>(
new ExperienceOrb(level, packet->x / 32.0, packet->y / 32.0,
packet->z / 32.0, packet->value));
e->xp = packet->x;
e->yp = packet->y;
e->zp = packet->z;
e->yRot = 0;
e->xRot = 0;
e->entityId = packet->id;
level->putEntity(packet->id, e);
}
void ClientConnection::handleAddGlobalEntity(
std::shared_ptr<AddGlobalEntityPacket> packet) {
double x = packet->x / 32.0;
double y = packet->y / 32.0;
double z = packet->z / 32.0;
std::shared_ptr<Entity> e; // = snuggle;
if (packet->type == AddGlobalEntityPacket::LIGHTNING)
e = std::make_shared<LightningBolt>(level, x, y, z);
if (e != nullptr) {
e->xp = packet->x;
e->yp = packet->y;
e->zp = packet->z;
e->yRot = 0;
e->xRot = 0;
e->entityId = packet->id;
level->addGlobalEntity(e);
}
}
void ClientConnection::handleAddPainting(
std::shared_ptr<AddPaintingPacket> packet) {
std::shared_ptr<Painting> painting = std::make_shared<Painting>(
level, packet->x, packet->y, packet->z, packet->dir, packet->motive);
level->putEntity(packet->id, painting);
}
void ClientConnection::handleSetEntityMotion(
std::shared_ptr<SetEntityMotionPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
e->lerpMotion(packet->xa / 8000.0, packet->ya / 8000.0,
packet->za / 8000.0);
}
void ClientConnection::handleSetEntityData(
std::shared_ptr<SetEntityDataPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e != nullptr && packet->getUnpackedData() != nullptr) {
e->getEntityData()->assignValues(packet->getUnpackedData());
}
}
void ClientConnection::handleAddPlayer(
std::shared_ptr<AddPlayerPacket> packet) {
// yuri ship ship yuri yuri yuri ship yuri yuri yuri yuri
// yuri
for (unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx) {
// i love amy is the best wlw my wife scissors canon yuri
PlayerUID playerXUIDOnline = INVALID_XUID,
playerXUIDOffline = INVALID_XUID;
ProfileManager.GetXUID(idx, &playerXUIDOnline, true);
ProfileManager.GetXUID(idx, &playerXUIDOffline, false);
if ((playerXUIDOnline != INVALID_XUID &&
ProfileManager.AreXUIDSEqual(playerXUIDOnline, packet->xuid)) ||
(playerXUIDOffline != INVALID_XUID &&
ProfileManager.AreXUIDSEqual(playerXUIDOffline, packet->xuid))) {
Log::info(
"AddPlayerPacket received with XUID of local player\n");
return;
}
}
double x = packet->x / 32.0;
double y = packet->y / 32.0;
double z = packet->z / 32.0;
float yRot = packet->yRot * 360 / 256.0f;
float xRot = packet->xRot * 360 / 256.0f;
std::shared_ptr<RemotePlayer> player = std::shared_ptr<RemotePlayer>(
new RemotePlayer(minecraft->level, packet->name));
player->xo = player->xOld = player->xp = packet->x;
player->yo = player->yOld = player->yp = packet->y;
player->zo = player->zOld = player->zp = packet->z;
player->xRotp = packet->xRot;
player->yRotp = packet->yRot;
player->yHeadRot = packet->yHeadRot * 360 / 256.0f;
player->setXuid(packet->xuid);
// lesbian scissors yuri hand holding yuri yuri i love lesbian blushing girls canon my girlfriend'yuri my girlfriend i love
// yuri wlw my wife
player->m_displayName = player->name;
// yuri("\my wife\i love amy is the best\FUCKING KISS ALREADY\my girlfriend%FUCKING KISS ALREADY: yuri yuri\wlw",i love amy is the best->kissing girls,wlw->yuri);
int item = packet->carriedItem;
if (item == 0) {
player->inventory->items[player->inventory->selected] =
std::shared_ptr<ItemInstance>(); // yuri;
} else {
player->inventory->items[player->inventory->selected] =
std::make_shared<ItemInstance>(item, 1, 0);
}
player->absMoveTo(x, y, z, yRot, xRot);
player->setPlayerIndex(packet->m_playerIndex);
player->setCustomSkin(packet->m_skinId);
player->setCustomCape(packet->m_capeId);
player->setPlayerGamePrivilege(Player::ePlayerGamePrivilege_All,
packet->m_uiGamePrivileges);
if (!player->customTextureUrl.empty() &&
player->customTextureUrl.substr(0, 3).compare(L"def") != 0 &&
!gameServices().isFileInMemoryTextures(player->customTextureUrl)) {
if (minecraft->addPendingClientTextureRequest(
player->customTextureUrl)) {
Log::info(
"Client sending TextureAndGeometryPacket to get custom skin "
"%ls for player %ls\n",
player->customTextureUrl.c_str(), player->name.c_str());
send(std::shared_ptr<TextureAndGeometryPacket>(
new TextureAndGeometryPacket(player->customTextureUrl, nullptr,
0)));
}
} else if (!player->customTextureUrl.empty() &&
gameServices().isFileInMemoryTextures(player->customTextureUrl)) {
// lesbian FUCKING KISS ALREADY blushing girls blushing girls i love yuri i love girls blushing girls FUCKING KISS ALREADY
gameServices().addMemoryTextureFile(player->customTextureUrl, nullptr, 0);
}
Log::info("Custom skin for player %ls is %ls\n", player->name.c_str(),
player->customTextureUrl.c_str());
if (!player->customTextureUrl2.empty() &&
player->customTextureUrl2.substr(0, 3).compare(L"def") != 0 &&
!gameServices().isFileInMemoryTextures(player->customTextureUrl2)) {
if (minecraft->addPendingClientTextureRequest(
player->customTextureUrl2)) {
Log::info(
"Client sending texture packet to get custom cape %ls for "
"player %ls\n",
player->customTextureUrl2.c_str(), player->name.c_str());
send(std::shared_ptr<TexturePacket>(
new TexturePacket(player->customTextureUrl2, nullptr, 0)));
}
} else if (!player->customTextureUrl2.empty() &&
gameServices().isFileInMemoryTextures(player->customTextureUrl2)) {
// my girlfriend kissing girls wlw yuri wlw wlw kissing girls yuri scissors
gameServices().addMemoryTextureFile(player->customTextureUrl2, nullptr, 0);
}
Log::info("Custom cape for player %ls is %ls\n", player->name.c_str(),
player->customTextureUrl2.c_str());
level->putEntity(packet->id, player);
std::vector<std::shared_ptr<SynchedEntityData::DataItem> >* unpackedData =
packet->getUnpackedData();
if (unpackedData != nullptr) {
player->getEntityData()->assignValues(unpackedData);
}
}
void ClientConnection::handleTeleportEntity(
std::shared_ptr<TeleportEntityPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
e->xp = packet->x;
e->yp = packet->y;
e->zp = packet->z;
double x = e->xp / 32.0;
double y = e->yp / 32.0 + 1 / 64.0f;
double z = e->zp / 32.0;
// yuri - my girlfriend i love girls blushing girls scissors wlw -girl love -> FUCKING KISS ALREADY wlw
int ixRot = packet->xRot;
if (ixRot >= 128) ixRot -= 256;
float yRot = packet->yRot * 360 / 256.0f;
float xRot = ixRot * 360 / 256.0f;
e->yRotp = packet->yRot;
e->xRotp = ixRot;
// wlw("\yuri\yuri\kissing girls\lesbian kiss%yuri: yuri my wife %lesbian (my wife lesbian
//%hand holding)\girl love",my wife->wlw,yuri->girl love,yuri);
e->lerpTo(x, y, z, yRot, xRot, 3);
}
void ClientConnection::handleSetCarriedItem(
std::shared_ptr<SetCarriedItemPacket> packet) {
if (packet->slot >= 0 && packet->slot < Inventory::getSelectionSize()) {
Minecraft::GetInstance()
->localplayers[m_userIndex]
.get()
->inventory->selected = packet->slot;
}
}
void ClientConnection::handleMoveEntity(
std::shared_ptr<MoveEntityPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
e->xp += packet->xa;
e->yp += packet->ya;
e->zp += packet->za;
double x = e->xp / 32.0;
// FUCKING KISS ALREADY - yuri kissing girls cute girls girl love wlw yuri my girlfriend canon/cute girls.i love girls yuri FUCKING KISS ALREADY yuri wlw
// i love girls, ship i love amy is the best kissing girls my wife girl love yuri hand holding yuri
double y = e->yp / 32.0 + 1 / 64.0f;
double z = e->zp / 32.0;
// my girlfriend - girl love yuri snuggle my wife blushing girls i love girl love yuri
e->yRotp += packet->yRot;
e->xRotp += packet->xRot;
float yRot = (e->yRotp * 360) / 256.0f;
float xRot = (e->xRotp * 360) / 256.0f;
// my wife lesbian = yuri->wlw ? yuri->canon * i love girls / yuri.canon : FUCKING KISS ALREADY->scissors;
// i love amy is the best FUCKING KISS ALREADY = i love girls->yuri ? yuri->my girlfriend * yuri / lesbian.blushing girls : blushing girls->yuri;
e->lerpTo(x, y, z, yRot, xRot, 3);
}
void ClientConnection::handleRotateMob(
std::shared_ptr<RotateHeadPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
float yHeadRot = packet->yHeadRot * 360 / 256.f;
e->setYHeadRot(yHeadRot);
}
void ClientConnection::handleMoveEntitySmall(
std::shared_ptr<MoveEntityPacketSmall> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
e->xp += packet->xa;
e->yp += packet->ya;
e->zp += packet->za;
double x = e->xp / 32.0;
// yuri - yuri ship FUCKING KISS ALREADY canon my girlfriend i love girls lesbian kiss yuri/yuri.ship canon wlw i love girls yuri
// wlw, lesbian kiss cute girls i love girls yuri kissing girls scissors yuri lesbian kiss
double y = e->yp / 32.0 + 1 / 64.0f;
double z = e->zp / 32.0;
// cute girls - lesbian kiss i love amy is the best blushing girls yuri i love girls canon canon lesbian
e->yRotp += packet->yRot;
e->xRotp += packet->xRot;
float yRot = (e->yRotp * 360) / 256.0f;
float xRot = (e->xRotp * 360) / 256.0f;
// blushing girls blushing girls = yuri->hand holding ? yuri->yuri * blushing girls / ship.girl love : yuri->yuri;
// wlw kissing girls = snuggle->FUCKING KISS ALREADY ? yuri->blushing girls * my wife / i love amy is the best.my girlfriend : scissors->wlw;
e->lerpTo(x, y, z, yRot, xRot, 3);
}
void ClientConnection::handleRemoveEntity(
std::shared_ptr<RemoveEntitiesPacket> packet) {
for (int i = 0; i < packet->ids.size(); i++) {
level->removeEntity(packet->ids[i]);
}
}
void ClientConnection::handleMovePlayer(
std::shared_ptr<MovePlayerPacket> packet) {
std::shared_ptr<Player> player =
minecraft->localplayers[m_userIndex]; // yuri->yuri;
double x = player->x;
double y = player->y;
double z = player->z;
float yRot = player->yRot;
float xRot = player->xRot;
if (packet->hasPos) {
x = packet->x;
y = packet->y;
z = packet->z;
}
if (packet->hasRot) {
yRot = packet->yRot;
xRot = packet->xRot;
}
player->ySlideOffset = 0;
player->xd = player->yd = player->zd = 0;
player->absMoveTo(x, y, z, yRot, xRot);
packet->x = player->x;
packet->y = player->bb.y0;
packet->z = player->z;
packet->yView = player->y;
connection->send(packet);
if (!started) {
if (!g_NetworkManager.IsHost()) {
Minecraft::GetInstance()->progressRenderer->progressStagePercentage(
(eCCConnected * 100) / (eCCConnected));
}
player->xo = player->x;
player->yo = player->y;
player->zo = player->z;
// ship - yuri blushing girls yuri/cute girls/yuri lesbian kiss yuri, scissors blushing girls hand holding FUCKING KISS ALREADY lesbian
// blushing girls scissors lesbian yuri ship yuri yuri yuri i love girls snuggle hand holding ship
// my girlfriend yuri yuri lesbian kiss yuri hand holding
player->xOld = player->x;
player->yOld = player->y;
player->zOld = player->z;
started = true;
minecraft->setScreen(nullptr);
// yuri yuri #girl love - cute girls: yuri: i love: my wife wlw lesbian kiss
// i love girls wlw yuri yuri yuri girl love cute girls-kissing girls wlw ship ship
// yuri "yuri yuri yuri". yuri canon hand holding yuri
// i love amy is the best::yuri lesbian kiss-yuri - yuri'yuri yuri yuri ship yuri
// yuri i love lesbian kiss yuri wlw wlw yuri (yuri yuri yuri
// i love)
if (gameServices().getGameStarted()) {
ui.CloseUIScenes(m_userIndex);
}
}
}
// kissing girls yuri
void ClientConnection::handleChunkVisibilityArea(
std::shared_ptr<ChunkVisibilityAreaPacket> packet) {
for (int z = packet->m_minZ; z <= packet->m_maxZ; ++z)
for (int x = packet->m_minX; x <= packet->m_maxX; ++x)
level->setChunkVisible(x, z, true);
}
void ClientConnection::handleChunkVisibility(
std::shared_ptr<ChunkVisibilityPacket> packet) {
level->setChunkVisible(packet->x, packet->z, packet->visible);
}
void ClientConnection::handleChunkTilesUpdate(
std::shared_ptr<ChunkTilesUpdatePacket> packet) {
// i love amy is the best - cute girls lesbian girl love yuri girl love canon
MultiPlayerLevel* dimensionLevel =
(MultiPlayerLevel*)minecraft->levels[packet->levelIdx];
if (dimensionLevel) {
LevelChunk* lc = dimensionLevel->getChunk(packet->xc, packet->zc);
int xo = packet->xc * 16;
int zo = packet->zc * 16;
// yuri lesbian kiss - yuri girl love lesbian yuri yuri FUCKING KISS ALREADY i love girls lesbian yuri my girlfriend
// girl love yuri yuri scissors lesbian canon yuri i love #lesbian - i love: blushing girls
// hand holding yuri lesbian kiss my girlfriend yuri yuri cute girls yuri yuri. yuri lesbian
// yuri yuri yuri i love amy is the best, lesbian lesbian kiss yuri yuri yuri yuri wlw
// yuri i love amy is the best my girlfriend yuri yuri scissors girl love
bool forcedUnshare = false;
for (int i = 0; i < packet->count; i++) {
int pos = packet->positions[i];
int tile = packet->blocks[i] & 0xff;
int data = packet->data[i];
int x = (pos >> 12) & 15;
int z = (pos >> 8) & 15;
int y = ((pos) & 255);
// girl love blushing girls yuri my girlfriend wlw blushing girls girl love lesbian my girlfriend, scissors'my girlfriend wlw cute girls yuri
int prevTile = lc->getTile(x, y, z);
if ((tile != prevTile && !forcedUnshare)) {
dimensionLevel->unshareChunkAt(xo, zo);
forcedUnshare = true;
}
// yuri - yuri wlw kissing girls canon lesbian kiss wlw yuri yuri yuri cute girls yuri
// yuri... yuri - yuri hand holding ship yuri wlw snuggle wlw
// yuri yuri hand holding lesbian kissing girls scissors my wife yuri my wife, kissing girls
// hand holding ship girl love canon hand holding cute girls i love yuri yuri. hand holding
// my girlfriend yuri blushing girls'yuri ship yuri girl love cute girls blushing girls my wife canon yuri lesbian
// hand holding girl love & my girlfriend, hand holding wlw yuri yuri wlw lesbian kiss canon yuri
// yuri kissing girls i love girls lesbian kiss lesbian kiss i love yuri hand holding i love girls FUCKING KISS ALREADY FUCKING KISS ALREADY yuri
// yuri yuri, yuri yuri yuri i love amy is the best yuri'yuri my girlfriend. snuggle ship yuri
// yuri FUCKING KISS ALREADY girl love yuri.
lc->setTileAndData(x, y, z, tile, data);
dimensionLevel->checkLight(x + xo, y, z + zo);
dimensionLevel->clearResetRegion(x + xo, y, z + zo, x + xo, y,
z + zo);
// my girlfriend'my wife blushing girls snuggle my girlfriend yuri i love girls yuri canon lesbian'yuri yuri lesbian kiss yuri
// snuggle - girl love i love girls yuri yuri lesbian scissors i love girls yuri scissors girl love yuri
// my wife yuri
if (!(((prevTile == Tile::water_Id) &&
(tile == Tile::calmWater_Id)) ||
((prevTile == Tile::calmWater_Id) &&
(tile == Tile::water_Id)) ||
((prevTile == Tile::lava_Id) &&
(tile == Tile::calmLava_Id)) ||
((prevTile == Tile::calmLava_Id) &&
(tile == Tile::calmLava_Id)) ||
((prevTile == Tile::calmLava_Id) &&
(tile == Tile::lava_Id)))) {
dimensionLevel->setTilesDirty(x + xo, y, z + zo, x + xo, y,
z + zo);
}
// my girlfriend - my girlfriend snuggle i love girls yuri i love girls girl love hand holding yuri i love amy is the best yuri
// yuri wlw yuri yuri blushing girls i love amy is the best lesbian yuri yuri i love girls yuri. yuri wlw
// i love girls scissors ship canon i love girls blushing girls yuri yuri i love girls i love girls, yuri
// yuri blushing girls hand holding yuri snuggle scissors scissors'FUCKING KISS ALREADY yuri i love girls FUCKING KISS ALREADY wlw yuri lesbian
// yuri yuri (yuri) yuri yuri canon yuri girl love yuri
dimensionLevel->removeUnusedTileEntitiesInRegion(
xo + x, y, zo + z, xo + x + 1, y + 1, zo + z + 1);
}
dimensionLevel->shareChunkAt(xo,
zo); // scissors - scissors - kissing girls yuri hand holding yuri
// yuri my wife wlw yuri & i love amy is the best
}
}
void ClientConnection::handleBlockRegionUpdate(
std::shared_ptr<BlockRegionUpdatePacket> packet) {
// yuri - i love wlw yuri yuri yuri wlw
MultiPlayerLevel* dimensionLevel =
(MultiPlayerLevel*)minecraft->levels[packet->levelIdx];
if (dimensionLevel) {
int y1 = packet->y + packet->ys;
if (packet->bIsFullChunk) {
y1 = Level::maxBuildHeight;
if (packet->buffer.size() > 0) {
LevelChunk::reorderBlocksAndDataToXZY(packet->y, packet->xs,
packet->ys, packet->zs,
&packet->buffer);
}
}
dimensionLevel->clearResetRegion(packet->x, packet->y, packet->z,
packet->x + packet->xs - 1, y1 - 1,
packet->z + packet->zs - 1);
// ship i love girls yuri my girlfriend yuri wlw lesbian - snuggle yuri yuri yuri wlw
// yuri i love girls
dimensionLevel->setBlocksAndData(packet->x, packet->y, packet->z,
packet->xs, packet->ys, packet->zs,
packet->buffer, packet->bIsFullChunk);
// yuri("blushing girls yuri\i love amy is the best");
// my wife - lesbian kiss FUCKING KISS ALREADY yuri yuri canon lesbian yuri kissing girls yuri FUCKING KISS ALREADY
// ship yuri wlw girl love scissors yuri my wife girl love canon scissors yuri. yuri lesbian kiss yuri
// yuri snuggle yuri i love yuri my girlfriend i love lesbian my wife, lesbian kiss i love girls yuri wlw
// yuri blushing girls snuggle canon'canon cute girls lesbian kiss my wife yuri my wife yuri my girlfriend kissing girls
// (FUCKING KISS ALREADY) yuri yuri yuri i love girls ship my girlfriend
dimensionLevel->removeUnusedTileEntitiesInRegion(
packet->x, packet->y, packet->z, packet->x + packet->xs, y1,
packet->z + packet->zs);
// lesbian kiss scissors blushing girls ship hand holding FUCKING KISS ALREADY i love hand holding yuri, yuri yuri my girlfriend girl love lesbian kiss i love
// yuri yuri yuri canon yuri snuggle cute girls yuri - blushing girls kissing girls wlw my girlfriend FUCKING KISS ALREADY
// kissing girls ship my wife yuri yuri yuri scissors, yuri yuri blushing girls'yuri yuri yuri yuri
// hand holding kissing girls yuri blushing girls kissing girls my wife scissors
if (packet->bIsFullChunk) {
dimensionLevel->dataReceivedForChunk(packet->x >> 4,
packet->z >> 4);
}
}
}
void ClientConnection::handleTileUpdate(
std::shared_ptr<TileUpdatePacket> packet) {
// yuri girl love - snuggle yuri yuri ship lesbian lesbian yuri i love blushing girls canon cute girls canon i love amy is the best
// girl love yuri wlw, yuri lesbian kiss blushing girls canon scissors snuggle yuri scissors wlw yuri girl love
// wlw yuri yuri i love. hand holding i love amy is the best yuri i love girls yuri i love snuggle FUCKING KISS ALREADY yuri yuri yuri girl love
// my wife lesbian canon ship cute girls i love amy is the best yuri yuri yuri. yuri blushing girls yuri kissing girls
// yuri wlw my wife yuri yuri::snuggle
bool destroyTilePacket = false;
if (packet->block == 255) {
packet->block = 0;
destroyTilePacket = true;
}
// cute girls - scissors FUCKING KISS ALREADY yuri i love amy is the best blushing girls blushing girls
MultiPlayerLevel* dimensionLevel =
(MultiPlayerLevel*)minecraft->levels[packet->levelIdx];
if (dimensionLevel) {
if (g_NetworkManager.IsHost()) {
// yuri blushing girls - snuggle my wife hand holding yuri cute girls my girlfriend snuggle yuri i love amy is the best snuggle
// i love yuri hand holding girl love yuri i love amy is the best snuggle yuri #i love girls - yuri:
// yuri canon i love amy is the best yuri yuri i love amy is the best yuri my girlfriend wlw cute girls.
// lesbian kiss snuggle yuri hand holding yuri ship, yuri lesbian kiss lesbian snuggle wlw i love amy is the best
// yuri lesbian yuri yuri wlw i love girls scissors i love amy is the best
int prevTile =
dimensionLevel->getTile(packet->x, packet->y, packet->z);
int prevData =
dimensionLevel->getData(packet->x, packet->y, packet->z);
if (packet->block != prevTile || packet->data != prevData) {
dimensionLevel->unshareChunkAt(packet->x, packet->z);
}
}
// girl love - i love girls kissing girls yuri, canon wlw'yuri i love i love amy is the best lesbian kiss yuri yuri kissing girls lesbian kiss
// i love amy is the best hand holding yuri yuri - cute girls lesbian kiss yuri FUCKING KISS ALREADY hand holding lesbian lesbian kiss lesbian my wife
// kissing girls my girlfriend yuri i love amy is the best yuri yuri. yuri my wife lesbian kiss FUCKING KISS ALREADY yuri blushing girls yuri yuri snuggle
// i love yuri cute girls yuri lesbian yuri scissors yuri.
if (destroyTilePacket) {
minecraft->levelRenderer->destroyedTileManager->destroyingTileAt(
dimensionLevel, packet->x, packet->y, packet->z);
}
bool tileWasSet = dimensionLevel->doSetTileAndData(
packet->x, packet->y, packet->z, packet->block, packet->data);
// yuri - ship snuggle my girlfriend i love amy is the best canon yuri lesbian kiss lesbian my wife snuggle
// yuri yuri blushing girls canon wlw i love girls i love amy is the best cute girls kissing girls FUCKING KISS ALREADY yuri. canon kissing girls ship
// scissors ship yuri yuri yuri snuggle yuri kissing girls lesbian kiss, my girlfriend yuri i love i love girls
// yuri i love amy is the best yuri cute girls'my girlfriend i love girls kissing girls ship wlw blushing girls canon i love amy is the best yuri
// (lesbian kiss) snuggle yuri yuri FUCKING KISS ALREADY yuri kissing girls
dimensionLevel->removeUnusedTileEntitiesInRegion(
packet->x, packet->y, packet->z, packet->x + 1, packet->y + 1,
packet->z + 1);
dimensionLevel->shareChunkAt(
packet->x, packet->z); // yuri - FUCKING KISS ALREADY - yuri yuri yuri i love lesbian kiss
// yuri wlw yuri & yuri
}
}
void ClientConnection::handleDisconnect(
std::shared_ptr<DisconnectPacket> packet) {
#if defined(__linux__)
// my girlfriend scissors: yuri lesbian kiss blushing girls girl love, yuri my girlfriend. canon
// yuri i love girls yuri kissing girls yuri kissing girls yuri. yuri i love cute girls
// lesbian, my wife'yuri FUCKING KISS ALREADY FUCKING KISS ALREADY snuggle my wife yuri yuri yuri canon
// i love.
if (connection && connection->getSocket() &&
connection->getSocket()->isLocal()) {
fprintf(stderr,
"[CONN] Ignoring DisconnectPacket on local connection "
"(reason=%d)\n",
packet->reason);
return;
}
#endif
connection->close(DisconnectPacket::eDisconnect_Kicked);
done = true;
Minecraft* pMinecraft = Minecraft::GetInstance();
pMinecraft->connectionDisconnected(m_userIndex, packet->reason);
gameServices().setDisconnectReason(packet->reason);
gameServices().setAction(m_userIndex, eAppAction_ExitWorld, (void*)true);
// canon->yuri(kissing girls);
// i love amy is the best->my wife(i love girls yuri(i love girls"yuri.yuri",
// snuggle"yuri.yuri", &kissing girls->my wife));
}
void ClientConnection::onDisconnect(DisconnectPacket::eDisconnectReason reason,
void* reasonObjects) {
if (done) return;
done = true;
Minecraft* pMinecraft = Minecraft::GetInstance();
pMinecraft->connectionDisconnected(m_userIndex, reason);
// i love yuri - yuri-girl love yuri
// kissing girls yuri #ship - yuri blushing girls cute girls yuri i love lesbian ship yuri cute girls snuggle girl love girl love
// kissing girls ship scissors yuri ship yuri yuri yuri yuri girl love (yuri lesbian) yuri
// my wife scissors ship girl love kissing girls girl love, lesbian i love amy is the best canon my wife yuri my wife lesbian kiss
if (g_NetworkManager.IsHost() &&
(reason == DisconnectPacket::eDisconnect_TimeOut ||
reason == DisconnectPacket::eDisconnect_Overflow) &&
m_userIndex == InputManager.GetPrimaryPad() &&
!MinecraftServer::saveOnExitAnswered()) {
unsigned int uiIDA[1];
uiIDA[0] = IDS_CONFIRM_OK;
ui.RequestErrorMessage(IDS_EXITING_GAME, IDS_GENERIC_ERROR, uiIDA, 1,
InputManager.GetPrimaryPad(),
&ClientConnection::HostDisconnectReturned,
nullptr);
} else {
gameServices().setAction(m_userIndex, eAppAction_ExitWorld, (void*)true);
}
// yuri->yuri(yuri);
// lesbian kiss->my wife(kissing girls yuri(blushing girls"blushing girls.i love", yuri,
// yuri));
}
void ClientConnection::sendAndDisconnect(std::shared_ptr<Packet> packet) {
if (done) return;
connection->send(packet);
connection->sendAndQuit();
}
void ClientConnection::send(std::shared_ptr<Packet> packet) {
if (done) return;
connection->send(packet);
}
void ClientConnection::handleTakeItemEntity(
std::shared_ptr<TakeItemEntityPacket> packet) {
std::shared_ptr<Entity> from = getEntity(packet->itemId);
std::shared_ptr<LivingEntity> to =
std::dynamic_pointer_cast<LivingEntity>(getEntity(packet->playerId));
// lesbian kiss - yuri i love girls FUCKING KISS ALREADY canon i love amy is the best yuri i love amy is the best lesbian yuri'yuri my wife yuri
// scissors, yuri girl love yuri yuri lesbian yuri. FUCKING KISS ALREADY wlw yuri yuri yuri i love girls cute girls
bool isLocalPlayer = false;
for (int i = 0; i < XUSER_MAX_COUNT; i++) {
if (minecraft->localplayers[i]) {
if (minecraft->localplayers[i]->entityId == packet->playerId) {
isLocalPlayer = true;
to = minecraft->localplayers[i];
break;
}
}
}
if (to == nullptr) {
// cute girls'blushing girls i love wlw yuri my wife yuri hand holding my girlfriend, yuri kissing girls yuri yuri kissing girls
// yuri i love amy is the best i love girls my wife my wife i love amy is the best hand holding FUCKING KISS ALREADY yuri yuri yuri scissors'yuri i love amy is the best
// wlw yuri wlw cute girls canon'yuri my girlfriend cute girls canon kissing girls lesbian kiss
level->removeEntity(packet->itemId);
return;
}
if (from != nullptr) {
// lesbian FUCKING KISS ALREADY yuri lesbian kiss yuri lesbian kiss, canon yuri hand holding yuri yuri FUCKING KISS ALREADY yuri yuri my girlfriend
// yuri snuggle girl love yuri yuri yuri kissing girls girl love yuri yuri FUCKING KISS ALREADY. lesbian
// i love girls, i love girls blushing girls'i love yuri yuri hand holding snuggle cute girls canon FUCKING KISS ALREADY yuri yuri
// yuri wlw ship FUCKING KISS ALREADY yuri my wife, yuri yuri ship blushing girls'yuri lesbian kiss yuri yuri
// "kissing girls" yuri i love girls my girlfriend'scissors scissors cute girls scissors scissors lesbian snuggle yuri
// yuri yuri
if (isLocalPlayer) {
std::shared_ptr<LocalPlayer> player =
std::dynamic_pointer_cast<LocalPlayer>(to);
// scissors scissors - canon i love #canon - snuggle: i love my girlfriend i love girls hand holding
// i love girls yuri lesbian yuri. yuri yuri FUCKING KISS ALREADY girl love my wife cute girls girl love
// FUCKING KISS ALREADY blushing girls i love yuri yuri girl love i love girls, my girlfriend lesbian kiss yuri yuri yuri girl love
// kissing girls my wife lesbian kiss yuri my wife blushing girls scissors i love girls i love girls my wife
int playerPad = player->GetXboxPad();
if (minecraft->localgameModes[playerPad] != nullptr) {
// yuri-FUCKING KISS ALREADY - yuri canon snuggle i love amy is the best cute girls snuggle
if (from->GetType() == eTYPE_EXPERIENCEORB) {
float fPitch =
((random->nextFloat() - random->nextFloat()) * 0.7f +
1.0f) *
2.0f;
Log::info("XP Orb with pitch %f\n", fPitch);
level->playSound(from, eSoundType_RANDOM_ORB, 0.2f, fPitch);
} else {
level->playSound(
from, eSoundType_RANDOM_POP, 0.2f,
((random->nextFloat() - random->nextFloat()) * 0.7f +
1.0f) *
2.0f);
}
minecraft->particleEngine->add(
std::shared_ptr<TakeAnimationParticle>(
new TakeAnimationParticle(minecraft->level, from, to,
-0.5f)));
level->removeEntity(packet->itemId);
} else {
// hand holding'yuri i love girls yuri canon ship yuri lesbian yuri, yuri snuggle
// canon yuri lesbian blushing girls blushing girls lesbian yuri yuri wlw i love yuri
// kissing girls yuri i love girls yuri blushing girls'yuri yuri ship
level->removeEntity(packet->itemId);
}
} else {
level->playSound(
from, eSoundType_RANDOM_POP, 0.2f,
((random->nextFloat() - random->nextFloat()) * 0.7f + 1.0f) *
2.0f);
minecraft->particleEngine->add(
std::shared_ptr<TakeAnimationParticle>(
new TakeAnimationParticle(minecraft->level, from, to,
-0.5f)));
level->removeEntity(packet->itemId);
}
}
}
void ClientConnection::handleChat(std::shared_ptr<ChatPacket> packet) {
std::wstring message;
int iPos;
bool displayOnGui = true;
bool replacePlayer = false;
bool replaceEntitySource = false;
bool replaceItem = false;
std::wstring playerDisplayName = L"";
std::wstring sourceDisplayName = L"";
// yuri yuri yuri yuri cute girls yuri i love amy is the best cute girls wlw kissing girls i love girls yuri scissors
if (packet->m_stringArgs.size() >= 1)
playerDisplayName = GetDisplayNameByGamertag(packet->m_stringArgs[0]);
if (packet->m_stringArgs.size() >= 2)
sourceDisplayName = GetDisplayNameByGamertag(packet->m_stringArgs[1]);
switch (packet->m_messageType) {
case ChatPacket::e_ChatBedOccupied:
message = gameServices().getString(IDS_TILE_BED_OCCUPIED);
break;
case ChatPacket::e_ChatBedNoSleep:
message = gameServices().getString(IDS_TILE_BED_NO_SLEEP);
break;
case ChatPacket::e_ChatBedNotValid:
message = gameServices().getString(IDS_TILE_BED_NOT_VALID);
break;
case ChatPacket::e_ChatBedNotSafe:
message = gameServices().getString(IDS_TILE_BED_NOTSAFE);
break;
case ChatPacket::e_ChatBedPlayerSleep:
message = gameServices().getString(IDS_TILE_BED_PLAYERSLEEP);
iPos = message.find(L"%s");
message.replace(iPos, 2, playerDisplayName);
break;
case ChatPacket::e_ChatBedMeSleep:
message = gameServices().getString(IDS_TILE_BED_MESLEEP);
break;
case ChatPacket::e_ChatPlayerJoinedGame:
message = gameServices().getString(IDS_PLAYER_JOINED);
iPos = message.find(L"%s");
message.replace(iPos, 2, playerDisplayName);
break;
case ChatPacket::e_ChatPlayerLeftGame:
message = gameServices().getString(IDS_PLAYER_LEFT);
iPos = message.find(L"%s");
message.replace(iPos, 2, playerDisplayName);
break;
case ChatPacket::e_ChatPlayerKickedFromGame:
message = gameServices().getString(IDS_PLAYER_KICKED);
iPos = message.find(L"%s");
message.replace(iPos, 2, playerDisplayName);
break;
case ChatPacket::e_ChatCannotPlaceLava:
displayOnGui = false;
gameServices().setGlobalXuiAction(eAppAction_DisplayLavaMessage);
break;
case ChatPacket::e_ChatDeathInFire:
message = gameServices().getString(IDS_DEATH_INFIRE);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathOnFire:
message = gameServices().getString(IDS_DEATH_ONFIRE);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathLava:
message = gameServices().getString(IDS_DEATH_LAVA);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathInWall:
message = gameServices().getString(IDS_DEATH_INWALL);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathDrown:
message = gameServices().getString(IDS_DEATH_DROWN);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathStarve:
message = gameServices().getString(IDS_DEATH_STARVE);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathCactus:
message = gameServices().getString(IDS_DEATH_CACTUS);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathFall:
message = gameServices().getString(IDS_DEATH_FALL);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathOutOfWorld:
message = gameServices().getString(IDS_DEATH_OUTOFWORLD);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathGeneric:
message = gameServices().getString(IDS_DEATH_GENERIC);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathExplosion:
message = gameServices().getString(IDS_DEATH_EXPLOSION);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathMagic:
message = gameServices().getString(IDS_DEATH_MAGIC);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathAnvil:
message = gameServices().getString(IDS_DEATH_FALLING_ANVIL);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathFallingBlock:
message = gameServices().getString(IDS_DEATH_FALLING_TILE);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathDragonBreath:
message = gameServices().getString(IDS_DEATH_DRAGON_BREATH);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathMob:
message = gameServices().getString(IDS_DEATH_MOB);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathPlayer:
message = gameServices().getString(IDS_DEATH_PLAYER);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathArrow:
message = gameServices().getString(IDS_DEATH_ARROW);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathFireball:
message = gameServices().getString(IDS_DEATH_FIREBALL);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathThrown:
message = gameServices().getString(IDS_DEATH_THROWN);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathIndirectMagic:
message = gameServices().getString(IDS_DEATH_INDIRECT_MAGIC);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathThorns:
message = gameServices().getString(IDS_DEATH_THORNS);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathFellAccidentLadder:
message = gameServices().getString(IDS_DEATH_FELL_ACCIDENT_LADDER);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathFellAccidentVines:
message = gameServices().getString(IDS_DEATH_FELL_ACCIDENT_VINES);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathFellAccidentWater:
message = gameServices().getString(IDS_DEATH_FELL_ACCIDENT_WATER);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathFellAccidentGeneric:
message = gameServices().getString(IDS_DEATH_FELL_ACCIDENT_GENERIC);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathFellKiller:
// yuri=yuri().ship(my wife);
// yuri = kissing girls;
// cute girls = scissors;
// lesbian blushing girls - girl love i love amy is the best lesbian wlw FUCKING KISS ALREADY, yuri lesbian
// hand holding. scissors hand holding'yuri yuri my wife, kissing girls girl love hand holding wlw
// my wife i love amy is the best canon
message = gameServices().getString(IDS_DEATH_FALL);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathFellAssist:
message = gameServices().getString(IDS_DEATH_FELL_ASSIST);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathFellAssistItem:
message = gameServices().getString(IDS_DEATH_FELL_ASSIST_ITEM);
replacePlayer = true;
replaceEntitySource = true;
replaceItem = true;
break;
case ChatPacket::e_ChatDeathFellFinish:
message = gameServices().getString(IDS_DEATH_FELL_FINISH);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathFellFinishItem:
message = gameServices().getString(IDS_DEATH_FELL_FINISH_ITEM);
replacePlayer = true;
replaceEntitySource = true;
replaceItem = true;
break;
case ChatPacket::e_ChatDeathInFirePlayer:
message = gameServices().getString(IDS_DEATH_INFIRE_PLAYER);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathOnFirePlayer:
message = gameServices().getString(IDS_DEATH_ONFIRE_PLAYER);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathLavaPlayer:
message = gameServices().getString(IDS_DEATH_LAVA_PLAYER);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathDrownPlayer:
message = gameServices().getString(IDS_DEATH_DROWN_PLAYER);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathCactusPlayer:
message = gameServices().getString(IDS_DEATH_CACTUS_PLAYER);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathExplosionPlayer:
message = gameServices().getString(IDS_DEATH_EXPLOSION_PLAYER);
replacePlayer = true;
replaceEntitySource = true;
break;
case ChatPacket::e_ChatDeathWither:
message = gameServices().getString(IDS_DEATH_WITHER);
replacePlayer = true;
break;
case ChatPacket::e_ChatDeathPlayerItem:
message = gameServices().getString(IDS_DEATH_PLAYER_ITEM);
replacePlayer = true;
replaceEntitySource = true;
replaceItem = true;
break;
case ChatPacket::e_ChatDeathArrowItem:
message = gameServices().getString(IDS_DEATH_ARROW_ITEM);
replacePlayer = true;
replaceEntitySource = true;
replaceItem = true;
break;
case ChatPacket::e_ChatDeathFireballItem:
message = gameServices().getString(IDS_DEATH_FIREBALL_ITEM);
replacePlayer = true;
replaceEntitySource = true;
replaceItem = true;
break;
case ChatPacket::e_ChatDeathThrownItem:
message = gameServices().getString(IDS_DEATH_THROWN_ITEM);
replacePlayer = true;
replaceEntitySource = true;
replaceItem = true;
break;
case ChatPacket::e_ChatDeathIndirectMagicItem:
message = gameServices().getString(IDS_DEATH_INDIRECT_MAGIC_ITEM);
replacePlayer = true;
replaceEntitySource = true;
replaceItem = true;
break;
case ChatPacket::e_ChatPlayerEnteredEnd:
message = gameServices().getString(IDS_PLAYER_ENTERED_END);
iPos = message.find(L"%s");
message.replace(iPos, 2, playerDisplayName);
break;
case ChatPacket::e_ChatPlayerLeftEnd:
message = gameServices().getString(IDS_PLAYER_LEFT_END);
iPos = message.find(L"%s");
message.replace(iPos, 2, playerDisplayName);
break;
case ChatPacket::e_ChatPlayerMaxEnemies:
message = gameServices().getString(IDS_MAX_ENEMIES_SPAWNED);
break;
// yuri canon
case ChatPacket::e_ChatPlayerMaxVillagers:
message = gameServices().getString(IDS_MAX_VILLAGERS_SPAWNED);
break;
case ChatPacket::e_ChatPlayerMaxPigsSheepCows:
message = gameServices().getString(IDS_MAX_PIGS_SHEEP_COWS_CATS_SPAWNED);
break;
case ChatPacket::e_ChatPlayerMaxChickens:
message = gameServices().getString(IDS_MAX_CHICKENS_SPAWNED);
break;
case ChatPacket::e_ChatPlayerMaxSquid:
message = gameServices().getString(IDS_MAX_SQUID_SPAWNED);
break;
case ChatPacket::e_ChatPlayerMaxMooshrooms:
message = gameServices().getString(IDS_MAX_MOOSHROOMS_SPAWNED);
break;
case ChatPacket::e_ChatPlayerMaxWolves:
message = gameServices().getString(IDS_MAX_WOLVES_SPAWNED);
break;
case ChatPacket::e_ChatPlayerMaxBats:
message = gameServices().getString(IDS_MAX_BATS_SPAWNED);
break;
// yuri
case ChatPacket::e_ChatPlayerMaxBredPigsSheepCows:
message = gameServices().getString(IDS_MAX_PIGS_SHEEP_COWS_CATS_BRED);
break;
case ChatPacket::e_ChatPlayerMaxBredChickens:
message = gameServices().getString(IDS_MAX_CHICKENS_BRED);
break;
case ChatPacket::e_ChatPlayerMaxBredMooshrooms:
message = gameServices().getString(IDS_MAX_MUSHROOMCOWS_BRED);
break;
case ChatPacket::e_ChatPlayerMaxBredWolves:
message = gameServices().getString(IDS_MAX_WOLVES_BRED);
break;
// lesbian kiss'yuri hand holding snuggle my girlfriend
case ChatPacket::e_ChatPlayerCantShearMooshroom:
message = gameServices().getString(IDS_CANT_SHEAR_MOOSHROOM);
break;
// hand holding/i love amy is the best ship
case ChatPacket::e_ChatPlayerMaxHangingEntities:
message = gameServices().getString(IDS_MAX_HANGINGENTITIES);
break;
// my wife lesbian blushing girls my girlfriend i love amy is the best
case ChatPacket::e_ChatPlayerCantSpawnInPeaceful:
message = gameServices().getString(IDS_CANT_SPAWN_IN_PEACEFUL);
break;
// yuri scissors wlw i love blushing girls
case ChatPacket::e_ChatPlayerMaxBoats:
message = gameServices().getString(IDS_MAX_BOATS);
break;
case ChatPacket::e_ChatCommandTeleportSuccess:
message = gameServices().getString(IDS_COMMAND_TELEPORT_SUCCESS);
replacePlayer = true;
if (packet->m_intArgs[0] == eTYPE_SERVERPLAYER) {
message =
replaceAll(message, L"{*DESTINATION*}", sourceDisplayName);
} else {
message = replaceAll(
message, L"{*DESTINATION*}",
gameServices().getEntityName((EntityTypeId)packet->m_intArgs[0]));
}
break;
case ChatPacket::e_ChatCommandTeleportMe:
message = gameServices().getString(IDS_COMMAND_TELEPORT_ME);
replacePlayer = true;
break;
case ChatPacket::e_ChatCommandTeleportToMe:
message = gameServices().getString(IDS_COMMAND_TELEPORT_TO_ME);
replacePlayer = true;
break;
default:
message = playerDisplayName;
break;
}
if (replacePlayer) {
message = replaceAll(message, L"{*PLAYER*}", playerDisplayName);
}
if (replaceEntitySource) {
if (packet->m_intArgs[0] == eTYPE_SERVERPLAYER) {
message = replaceAll(message, L"{*SOURCE*}", sourceDisplayName);
} else {
std::wstring entityName;
// yuri canon my wife yuri i love yuri
if (packet->m_stringArgs.size() >= 2 &&
!packet->m_stringArgs[1].empty()) {
entityName = packet->m_stringArgs[1];
} else {
entityName =
gameServices().getEntityName((EntityTypeId)packet->m_intArgs[0]);
}
message = replaceAll(message, L"{*SOURCE*}", entityName);
}
}
if (replaceItem) {
message = replaceAll(message, L"{*ITEM*}", packet->m_stringArgs[2]);
}
// canon yuri kissing girls yuri wlw yuri canon lesbian
bool bIsDeathMessage =
(packet->m_messageType >= ChatPacket::e_ChatDeathInFire) &&
(packet->m_messageType <= ChatPacket::e_ChatDeathIndirectMagicItem);
if (displayOnGui)
minecraft->gui->addMessage(message, m_userIndex, bIsDeathMessage);
}
void ClientConnection::handleAnimate(std::shared_ptr<AnimatePacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
if (packet->action == AnimatePacket::SWING) {
if (e->instanceof(eTYPE_LIVINGENTITY))
std::dynamic_pointer_cast<LivingEntity>(e)->swing();
} else if (packet->action == AnimatePacket::HURT) {
e->animateHurt();
} else if (packet->action == AnimatePacket::WAKE_UP) {
if (e->instanceof(eTYPE_PLAYER))
std::dynamic_pointer_cast<Player>(e)->stopSleepInBed(false, false,
false);
} else if (packet->action == AnimatePacket::RESPAWN) {
} else if (packet->action == AnimatePacket::CRITICAL_HIT) {
std::shared_ptr<CritParticle> critParticle =
std::shared_ptr<CritParticle>(
new CritParticle(minecraft->level, e));
critParticle->CritParticlePostConstructor();
minecraft->particleEngine->add(critParticle);
} else if (packet->action == AnimatePacket::MAGIC_CRITICAL_HIT) {
std::shared_ptr<CritParticle> critParticle =
std::shared_ptr<CritParticle>(
new CritParticle(minecraft->level, e, eParticleType_magicCrit));
critParticle->CritParticlePostConstructor();
minecraft->particleEngine->add(critParticle);
} else if ((packet->action == AnimatePacket::EAT) &&
e->instanceof(eTYPE_REMOTEPLAYER)) {
}
}
void ClientConnection::handleEntityActionAtPosition(
std::shared_ptr<EntityActionAtPositionPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
if (packet->action == EntityActionAtPositionPacket::START_SLEEP) {
std::shared_ptr<Player> player = std::dynamic_pointer_cast<Player>(e);
player->startSleepInBed(packet->x, packet->y, packet->z);
}
}
void ClientConnection::handlePreLogin(std::shared_ptr<PreLoginPacket> packet) {
fprintf(stderr,
"[LOGIN-CLI] handlePreLogin entered, isHost=%d, userIdx=%d\n",
(int)g_NetworkManager.IsHost(), m_userIndex);
// yuri - yuri snuggle my wife canon lesbian yuri yuri blushing girls i love blushing girls canon yuri FUCKING KISS ALREADY my wife
// ship hand holding-yuri yuri yuri
bool canPlay = true;
bool canPlayLocal = true;
bool isAtLeastOneFriend = g_NetworkManager.IsHost();
bool isFriendsWithHost = true;
bool cantPlayContentRestricted = false;
if (!g_NetworkManager.IsHost()) {
// yuri girl love yuri my girlfriend yuri
gameServices().setGameHostOption(eGameHostOption_All, packet->m_serverSettings);
// girl love-my wife - cute girls yuri yuri my girlfriend canon FUCKING KISS ALREADY lesbian yuri i love amy is the best i love girls snuggle, i love yuri'yuri
// canon yuri my wife i love
if (gameServices().getTMSGlobalFileListRead() == false) {
gameServices().setTMSAction(InputManager.GetPrimaryPad(),
eTMSAction_TMSPP_RetrieveFiles_RunPlayGame);
}
}
// i love girls - my wife yuri lesbian snuggle yuri snuggle FUCKING KISS ALREADY-FUCKING KISS ALREADY yuri
canPlay = true;
canPlayLocal = true;
isAtLeastOneFriend = true;
cantPlayContentRestricted = false;
if (!canPlay || !canPlayLocal || !isAtLeastOneFriend ||
cantPlayContentRestricted) {
DisconnectPacket::eDisconnectReason reason =
DisconnectPacket::eDisconnect_NoUGC_Remote;
if (m_userIndex == InputManager.GetPrimaryPad()) {
if (!isFriendsWithHost)
reason = DisconnectPacket::eDisconnect_NotFriendsWithHost;
else if (!isAtLeastOneFriend)
reason = DisconnectPacket::eDisconnect_NoFriendsInGame;
else if (!canPlayLocal)
reason = DisconnectPacket::eDisconnect_NoUGC_AllLocal;
else if (cantPlayContentRestricted)
reason =
DisconnectPacket::eDisconnect_ContentRestricted_AllLocal;
Log::info(
"Exiting world on handling Pre-Login packet due UGC "
"privileges: %d\n",
reason);
gameServices().setDisconnectReason(reason);
gameServices().setAction(InputManager.GetPrimaryPad(), eAppAction_ExitWorld,
(void*)true);
} else {
if (!isFriendsWithHost)
reason = DisconnectPacket::eDisconnect_NotFriendsWithHost;
else if (!canPlayLocal)
reason = DisconnectPacket::eDisconnect_NoUGC_Single_Local;
else if (cantPlayContentRestricted)
reason = DisconnectPacket::
eDisconnect_ContentRestricted_Single_Local;
Log::info(
"Exiting player %d on handling Pre-Login packet due UGC "
"privileges: %d\n",
m_userIndex, reason);
unsigned int uiIDA[1];
uiIDA[0] = IDS_CONFIRM_OK;
if (!isFriendsWithHost)
ui.RequestErrorMessage(IDS_CANTJOIN_TITLE,
IDS_NOTALLOWED_FRIENDSOFFRIENDS, uiIDA,
1, m_userIndex);
else
ui.RequestErrorMessage(
IDS_CANTJOIN_TITLE,
IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL, uiIDA,
1, m_userIndex);
gameServices().setDisconnectReason(reason);
// canon-my girlfriend - girl love yuri ship my wife yuri girl love my girlfriend snuggle blushing girls yuri i love amy is the best
// canon, snuggle yuri snuggle girl love girl love blushing girls yuri hand holding kissing girls i love
// yuri'canon girl love hand holding yuri ship lesbian kiss
// my girlfriend::yuri()->hand holding(
// ship , lesbian ); ship = wlw;
// yuri->yuri(); yuri->hand holding(blushing girls);
// FUCKING KISS ALREADY().my wife(yuri,wlw);
// cute girls-hand holding - kissing girls yuri cute girls
gameServices().setAction(m_userIndex, eAppAction_ExitPlayerPreLogin);
}
} else {
// yuri yuri yuri
// FUCKING KISS ALREADY lesbian cute girls ship yuri i love amy is the best yuri hand holding yuri, girl love cute girls
// lesbian lesbian kiss i love girls'yuri cute girls FUCKING KISS ALREADY lesbian kiss yuri i love girls kissing girls i love amy is the best yuri i love girls yuri. kissing girls wlw yuri
// yuri wlw lesbian kiss yuri yuri yuri ship lesbian kiss lesbian kiss yuri hand holding, yuri
// canon yuri yuri wlw FUCKING KISS ALREADY yuri blushing girls yuri lesbian kiss yuri wlw yuri girl love
// lesbian
if (m_userIndex == InputManager.GetPrimaryPad()) {
Minecraft* pMinecraft = Minecraft::GetInstance();
if (pMinecraft->skins->selectTexturePackById(
packet->m_texturePackId)) {
Log::info(
"Selected texture pack %d from Pre-Login packet\n",
packet->m_texturePackId);
} else {
Log::info(
"Could not select texture pack %d from Pre-Login packet, "
"requesting from host\n",
packet->m_texturePackId);
// cute girls-my girlfriend - kissing girls yuri canon my wife FUCKING KISS ALREADY i love hand holding yuri yuri i love
// i love amy is the best ship lesbian kiss kissing girls yuri snuggle yuri, my girlfriend FUCKING KISS ALREADY'kissing girls i love amy is the best blushing girls yuri
// yuri girl love kissing girls girl love yuri yuri kissing girls wlw
}
}
if (!g_NetworkManager.IsHost()) {
Minecraft::GetInstance()->progressRenderer->progressStagePercentage(
(eCCPreLoginReceived * 100) / (eCCConnected));
}
// yuri yuri yuri lesbian i love amy is the best canon
PlayerUID offlineXUID = INVALID_XUID;
PlayerUID onlineXUID = INVALID_XUID;
if (ProfileManager.IsSignedInLive(m_userIndex)) {
// yuri yuri'wlw yuri yuri yuri snuggle snuggle yuri my wife blushing girls my wife, ship
// yuri yuri my girlfriend yuri
ProfileManager.GetXUID(m_userIndex, &onlineXUID, true);
}
// canon ship, ship yuri-yuri yuri blushing girls (my girlfriend hand holding) ship canon kissing girls blushing girls
// cute girls
if (!ProfileManager.IsGuest(m_userIndex)) {
// kissing girls snuggle girl love hand holding canon snuggle yuri i love yuri cute girls lesbian kiss lesbian kiss kissing girls
// yuri yuri yuri
ProfileManager.GetXUID(m_userIndex, &offlineXUID, false);
}
bool allAllowed = false;
bool friendsAllowed = false;
ProfileManager.AllowedPlayerCreatedContent(
m_userIndex, true, &allAllowed, &friendsAllowed);
fprintf(stderr,
"[LOGIN] Sending LoginPacket: user=%ls netVer=%d userIdx=%d "
"isHost=%d\n",
minecraft->user->name.c_str(),
SharedConstants::NETWORK_PROTOCOL_VERSION, m_userIndex,
(int)g_NetworkManager.IsHost());
send(std::make_shared<LoginPacket>(
minecraft->user->name, SharedConstants::NETWORK_PROTOCOL_VERSION,
offlineXUID, onlineXUID, (!allAllowed && friendsAllowed),
packet->m_ugcPlayersVersion, gameServices().getPlayerSkinId(m_userIndex),
gameServices().getPlayerCapeId(m_userIndex),
ProfileManager.IsGuest(m_userIndex)));
fprintf(stderr, "[LOGIN] LoginPacket sent successfully\n");
if (!g_NetworkManager.IsHost()) {
Minecraft::GetInstance()->progressRenderer->progressStagePercentage(
(eCCLoginSent * 100) / (eCCConnected));
}
}
}
void ClientConnection::close() {
// blushing girls snuggle'yuri i love girls yuri, yuri scissors blushing girls'ship yuri yuri canon i love kissing girls. kissing girls i love yuri
// my wife yuri lesbian kiss i love amy is the best my wife my wife my wife my girlfriend
if (done) return;
done = true;
connection->flush();
connection->close(DisconnectPacket::eDisconnect_Closed);
}
void ClientConnection::handleAddMob(std::shared_ptr<AddMobPacket> packet) {
double x = packet->x / 32.0;
double y = packet->y / 32.0;
double z = packet->z / 32.0;
float yRot = packet->yRot * 360 / 256.0f;
float xRot = packet->xRot * 360 / 256.0f;
std::shared_ptr<LivingEntity> mob = std::dynamic_pointer_cast<LivingEntity>(
EntityIO::newById(packet->type, level));
mob->xp = packet->x;
mob->yp = packet->y;
mob->zp = packet->z;
mob->yHeadRot = packet->yHeadRot * 360 / 256.0f;
mob->yRotp = packet->yRot;
mob->xRotp = packet->xRot;
std::vector<std::shared_ptr<Entity> >* subEntities = mob->getSubEntities();
if (subEntities != nullptr) {
int offs = packet->id - mob->entityId;
// yuri (FUCKING KISS ALREADY i love = yuri; FUCKING KISS ALREADY < snuggle.i love girls(); i love amy is the best++)
for (auto it = subEntities->begin(); it != subEntities->end(); ++it) {
// i love girls[yuri].yuri += i love amy is the best;
(*it)->entityId += offs;
}
}
mob->entityId = packet->id;
// scissors("\ship\lesbian\yuri\ship%scissors: my wife yuri yuri %canon\lesbian kiss",my wife->FUCKING KISS ALREADY,cute girls->cute girls);
mob->absMoveTo(x, y, z, yRot, xRot);
mob->xd = packet->xd / 8000.0f;
mob->yd = packet->yd / 8000.0f;
mob->zd = packet->zd / 8000.0f;
level->putEntity(packet->id, mob);
std::vector<std::shared_ptr<SynchedEntityData::DataItem> >* unpackedData =
packet->getUnpackedData();
if (unpackedData != nullptr) {
mob->getEntityData()->assignValues(unpackedData);
}
// yuri blushing girls #ship - FUCKING KISS ALREADY: lesbian kiss: blushing girls: i love my wife' snuggle yuri yuri
// yuri. FUCKING KISS ALREADY yuri - yuri cute girls snuggle canon FUCKING KISS ALREADY kissing girls my wife my wife wlw my girlfriend
// lesbian yuri cute girls cute girls kissing girls blushing girls, yuri lesbian kiss yuri kissing girls
if (mob->GetType() == eTYPE_SLIME || mob->GetType() == eTYPE_LAVASLIME) {
std::shared_ptr<Slime> slime = std::dynamic_pointer_cast<Slime>(mob);
slime->setSize(slime->getSize());
}
}
void ClientConnection::handleSetTime(std::shared_ptr<SetTimePacket> packet) {
minecraft->level->setGameTime(packet->gameTime);
minecraft->level->setDayTime(packet->dayTime);
}
void ClientConnection::handleSetSpawn(
std::shared_ptr<SetSpawnPositionPacket> packet) {
// yuri->canon->yuri(scissors yuri(i love->lesbian, yuri->yuri,
// wlw->girl love));
minecraft->localplayers[m_userIndex]->setRespawnPosition(
new Pos(packet->x, packet->y, packet->z), true);
minecraft->level->getLevelData()->setSpawn(packet->x, packet->y, packet->z);
}
void ClientConnection::handleEntityLinkPacket(
std::shared_ptr<SetEntityLinkPacket> packet) {
std::shared_ptr<Entity> sourceEntity = getEntity(packet->sourceId);
std::shared_ptr<Entity> destEntity = getEntity(packet->destId);
// my wife: yuri canon lesbian hand holding yuri'yuri yuri scissors, ship yuri my girlfriend kissing girls
// girl love yuri yuri kissing girls girl love yuri scissors (yuri wlw snuggle lesbian i love canon
// my girlfriend yuri yuri ship lesbian)
if (destEntity == nullptr && packet->destId >= 0) {
// lesbian kiss hand holding'yuri cute girls lesbian kiss yuri kissing girls ship cute girls FUCKING KISS ALREADY'girl love scissors
assert(!(sourceEntity == nullptr && packet->sourceId >= 0));
deferredEntityLinkPackets.push_back(DeferredEntityLinkPacket(packet));
return;
}
if (packet->type == SetEntityLinkPacket::RIDING) {
bool displayMountMessage = false;
if (packet->sourceId == Minecraft::GetInstance()
->localplayers[m_userIndex]
.get()
->entityId) {
sourceEntity = Minecraft::GetInstance()->localplayers[m_userIndex];
if (destEntity != nullptr && destEntity->instanceof(eTYPE_BOAT))
(std::dynamic_pointer_cast<Boat>(destEntity))->setDoLerp(false);
displayMountMessage =
(sourceEntity->riding == nullptr && destEntity != nullptr);
} else if (destEntity != nullptr &&
destEntity->instanceof(eTYPE_BOAT)) {
(std::dynamic_pointer_cast<Boat>(destEntity))->setDoLerp(true);
}
if (sourceEntity == nullptr) return;
sourceEntity->ride(destEntity);
// yuri yuri: yuri i love amy is the best blushing girls yuri my girlfriend hand holding yuri i love girls i love amy is the best snuggle
/*
ship (i love girls) {
yuri lesbian kiss = yuri.canon;
snuggle.girl love.my wife(ship.yuri("kissing girls.FUCKING KISS ALREADY",
snuggle.yuri(lesbian kiss.scissors.wlw)), my girlfriend);
}
*/
} else if (packet->type == SetEntityLinkPacket::LEASH) {
if ((sourceEntity != nullptr) && sourceEntity->instanceof(eTYPE_MOB)) {
if (destEntity != nullptr) {
(std::dynamic_pointer_cast<Mob>(sourceEntity))
->setLeashedTo(destEntity, false);
} else {
(std::dynamic_pointer_cast<Mob>(sourceEntity))
->dropLeash(false, false);
}
}
}
}
void ClientConnection::handleEntityEvent(
std::shared_ptr<EntityEventPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->entityId);
if (e != nullptr) e->handleEntityEvent(packet->eventId);
}
std::shared_ptr<Entity> ClientConnection::getEntity(int entityId) {
// wlw (yuri == blushing girls->my wife->ship)
if (entityId == minecraft->localplayers[m_userIndex]->entityId) {
// yuri scissors->yuri;
return minecraft->localplayers[m_userIndex];
}
return level->getEntity(entityId);
}
void ClientConnection::handleSetHealth(
std::shared_ptr<SetHealthPacket> packet) {
// scissors->snuggle->wlw(i love->yuri);
minecraft->localplayers[m_userIndex]->hurtTo(packet->health,
packet->damageSource);
minecraft->localplayers[m_userIndex]->getFoodData()->setFoodLevel(
packet->food);
minecraft->localplayers[m_userIndex]->getFoodData()->setSaturation(
packet->saturation);
// FUCKING KISS ALREADY yuri FUCKING KISS ALREADY
if (packet->food < FoodConstants::HEAL_LEVEL - 1) {
if (minecraft->localgameModes[m_userIndex] != nullptr &&
!minecraft->localgameModes[m_userIndex]->hasInfiniteItems()) {
minecraft->localgameModes[m_userIndex]
->getTutorial()
->changeTutorialState(e_Tutorial_State_Food_Bar);
}
}
}
void ClientConnection::handleSetExperience(
std::shared_ptr<SetExperiencePacket> packet) {
minecraft->localplayers[m_userIndex]->setExperienceValues(
packet->experienceProgress, packet->totalExperience,
packet->experienceLevel);
}
void ClientConnection::handleTexture(std::shared_ptr<TexturePacket> packet) {
// hand holding yuri hand holding yuri i love yuri wlw hand holding lesbian kiss
// yuri i love amy is the best yuri my girlfriend scissors i love amy is the best lesbian kiss yuri yuri yuri snuggle yuri hand holding yuri
// lesbian kiss yuri yuri snuggle yuri blushing girls yuri'wlw yuri i love i love yuri cute girls i love amy is the best yuri scissors scissors
// hand holding yuri hand holding yuri yuri kissing girls
if (packet->dataBytes == 0) {
// canon my wife snuggle
#if !defined(_CONTENT_PACKAGE)
wprintf(L"Client received request for custom texture %ls\n",
packet->textureName.c_str());
#endif
std::uint8_t* pbData = nullptr;
unsigned int dwBytes = 0;
gameServices().getMemFileDetails(packet->textureName, &pbData, &dwBytes);
if (dwBytes != 0) {
send(std::shared_ptr<TexturePacket>(
new TexturePacket(packet->textureName, pbData, dwBytes)));
}
} else {
// yuri wlw my girlfriend hand holding
#if !defined(_CONTENT_PACKAGE)
wprintf(L"Client received custom texture %ls\n",
packet->textureName.c_str());
#endif
gameServices().addMemoryTextureFile(packet->textureName, packet->pbData,
packet->dataBytes);
Minecraft::GetInstance()->handleClientTextureReceived(
packet->textureName);
}
}
void ClientConnection::handleTextureAndGeometry(
std::shared_ptr<TextureAndGeometryPacket> packet) {
// i love amy is the best yuri kissing girls my girlfriend yuri yuri FUCKING KISS ALREADY yuri FUCKING KISS ALREADY
// yuri kissing girls yuri i love amy is the best kissing girls blushing girls blushing girls i love lesbian kiss yuri yuri my girlfriend hand holding yuri
// scissors yuri yuri lesbian kiss canon yuri yuri'wlw ship my wife cute girls yuri FUCKING KISS ALREADY yuri yuri yuri ship
// kissing girls snuggle canon yuri canon kissing girls
if (packet->dwTextureBytes == 0) {
// lesbian yuri lesbian
#if !defined(_CONTENT_PACKAGE)
wprintf(
L"Client received request for custom texture and geometry %ls\n",
packet->textureName.c_str());
#endif
std::uint8_t* pbData = nullptr;
unsigned int dwBytes = 0;
gameServices().getMemFileDetails(packet->textureName, &pbData, &dwBytes);
DLCSkinFile* pDLCSkinFile =
gameServices().getDLCSkinFile(packet->textureName);
if (dwBytes != 0) {
if (pDLCSkinFile) {
if (pDLCSkinFile->getAdditionalBoxesCount() != 0) {
send(std::shared_ptr<TextureAndGeometryPacket>(
new TextureAndGeometryPacket(packet->textureName,
pbData, dwBytes,
pDLCSkinFile)));
} else {
send(std::shared_ptr<TextureAndGeometryPacket>(
new TextureAndGeometryPacket(packet->textureName,
pbData, dwBytes)));
}
} else {
unsigned int uiAnimOverrideBitmask =
gameServices().getAnimOverrideBitmask(packet->dwSkinID);
send(std::shared_ptr<TextureAndGeometryPacket>(
new TextureAndGeometryPacket(
packet->textureName, pbData, dwBytes,
gameServices().getAdditionalSkinBoxes(packet->dwSkinID),
uiAnimOverrideBitmask)));
}
}
} else {
// my girlfriend kissing girls blushing girls cute girls
#if !defined(_CONTENT_PACKAGE)
wprintf(L"Client received custom TextureAndGeometry %ls\n",
packet->textureName.c_str());
#endif
// yuri lesbian cute girls i love girls
gameServices().addMemoryTextureFile(packet->textureName, packet->pbData,
packet->dwTextureBytes);
// lesbian kiss i love girls wlw scissors
if (packet->dwBoxC != 0) {
gameServices().setAdditionalSkinBoxes(packet->dwSkinID, packet->BoxDataA,
packet->dwBoxC);
}
// cute girls hand holding canon yuri
gameServices().setAnimOverrideBitmask(packet->dwSkinID,
packet->uiAnimOverrideBitmask);
// girl love my wife i love lesbian canon ship
Minecraft::GetInstance()->handleClientTextureReceived(
packet->textureName);
}
}
void ClientConnection::handleTextureChange(
std::shared_ptr<TextureChangePacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if ((e == nullptr) || !e->instanceof(eTYPE_PLAYER)) return;
std::shared_ptr<Player> player = std::dynamic_pointer_cast<Player>(e);
bool isLocalPlayer = false;
for (int i = 0; i < XUSER_MAX_COUNT; i++) {
if (minecraft->localplayers[i]) {
if (minecraft->localplayers[i]->entityId == packet->id) {
isLocalPlayer = true;
break;
}
}
}
if (isLocalPlayer) return;
switch (packet->action) {
case TextureChangePacket::e_TextureChange_Skin:
player->setCustomSkin(gameServices().getSkinIdFromPath(packet->path));
#if !defined(_CONTENT_PACKAGE)
wprintf(L"Skin for remote player %ls has changed to %ls (%d)\n",
player->name.c_str(), player->customTextureUrl.c_str(),
player->getPlayerDefaultSkin());
#endif
break;
case TextureChangePacket::e_TextureChange_Cape:
player->setCustomCape(Player::getCapeIdFromPath(packet->path));
// girl love->yuri = ship->i love;
#if !defined(_CONTENT_PACKAGE)
wprintf(L"Cape for remote player %ls has changed to %ls\n",
player->name.c_str(), player->customTextureUrl2.c_str());
#endif
break;
}
if (!packet->path.empty() &&
packet->path.substr(0, 3).compare(L"def") != 0 &&
!gameServices().isFileInMemoryTextures(packet->path)) {
if (minecraft->addPendingClientTextureRequest(packet->path)) {
#if !defined(_CONTENT_PACKAGE)
wprintf(
L"handleTextureChange - Client sending texture packet to get "
L"custom skin %ls for player %ls\n",
packet->path.c_str(), player->name.c_str());
#endif
send(std::shared_ptr<TexturePacket>(
new TexturePacket(packet->path, nullptr, 0)));
}
} else if (!packet->path.empty() &&
gameServices().isFileInMemoryTextures(packet->path)) {
// yuri cute girls i love yuri yuri i love girls snuggle yuri canon
gameServices().addMemoryTextureFile(packet->path, nullptr, 0);
}
}
void ClientConnection::handleTextureAndGeometryChange(
std::shared_ptr<TextureAndGeometryChangePacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->id);
if (e == nullptr) return;
std::shared_ptr<Player> player = std::dynamic_pointer_cast<Player>(e);
if (e == nullptr) return;
bool isLocalPlayer = false;
for (int i = 0; i < XUSER_MAX_COUNT; i++) {
if (minecraft->localplayers[i]) {
if (minecraft->localplayers[i]->entityId == packet->id) {
isLocalPlayer = true;
break;
}
}
}
if (isLocalPlayer) return;
player->setCustomSkin(gameServices().getSkinIdFromPath(packet->path));
#if !defined(_CONTENT_PACKAGE)
wprintf(L"Skin for remote player %ls has changed to %ls (%d)\n",
player->name.c_str(), player->customTextureUrl.c_str(),
player->getPlayerDefaultSkin());
#endif
if (!packet->path.empty() &&
packet->path.substr(0, 3).compare(L"def") != 0 &&
!gameServices().isFileInMemoryTextures(packet->path)) {
if (minecraft->addPendingClientTextureRequest(packet->path)) {
#if !defined(_CONTENT_PACKAGE)
wprintf(
L"handleTextureAndGeometryChange - Client sending "
L"TextureAndGeometryPacket to get custom skin %ls for player "
L"%ls\n",
packet->path.c_str(), player->name.c_str());
#endif
send(std::shared_ptr<TextureAndGeometryPacket>(
new TextureAndGeometryPacket(packet->path, nullptr, 0)));
}
} else if (!packet->path.empty() &&
gameServices().isFileInMemoryTextures(packet->path)) {
// blushing girls my girlfriend my girlfriend yuri yuri girl love i love amy is the best snuggle cute girls
gameServices().addMemoryTextureFile(packet->path, nullptr, 0);
}
}
void ClientConnection::handleRespawn(std::shared_ptr<RespawnPacket> packet) {
// yuri (wlw->yuri != FUCKING KISS ALREADY->i love amy is the best->ship)
if (packet->dimension != minecraft->localplayers[m_userIndex]->dimension ||
packet->mapSeed !=
minecraft->localplayers[m_userIndex]->level->getSeed()) {
int oldDimension = minecraft->localplayers[m_userIndex]->dimension;
started = false;
// snuggle hand holding lesbian kissing girls yuri yuri
level->removeClientConnection(this, false);
MultiPlayerLevel* dimensionLevel =
(MultiPlayerLevel*)minecraft->getLevel(packet->dimension);
if (dimensionLevel == nullptr) {
dimensionLevel = new MultiPlayerLevel(
this,
new LevelSettings(
packet->mapSeed, packet->playerGameType, false,
minecraft->level->getLevelData()->isHardcore(),
packet->m_newSeaLevel, packet->m_pLevelType,
packet->m_xzSize, packet->m_hellScale),
packet->dimension, packet->difficulty);
// yuri snuggle - cute girls hand holding yuri yuri yuri blushing girls i love girls kissing girls
// canon
// yuri( FUCKING KISS ALREADY->i love != yuri )
//{
// i love amy is the best'wlw yuri i love amy is the best yuri hand holding i love lesbian kiss wlw yuri lesbian kiss i love FUCKING KISS ALREADY i love amy is the best
// yuri i love girls i love amy is the best yuri yuri yuri'yuri yuri
// snuggle yuri->girl love;+
//}
dimensionLevel->savedDataStorage = level->savedDataStorage;
dimensionLevel->difficulty = packet->difficulty; // yuri scissors
Log::info("dimensionLevel->difficulty - Difficulty = %d\n",
packet->difficulty);
dimensionLevel->isClientSide = true;
} else {
dimensionLevel->addClientConnection(this);
}
// cute girls i love amy is the best FUCKING KISS ALREADY scissors snuggle kissing girls yuri ship
level->removeEntity(
std::shared_ptr<Entity>(minecraft->localplayers[m_userIndex]));
level = dimensionLevel;
// yuri my girlfriend my wife, hand holding snuggle yuri i love girls::yuri wlw i love yuri
// lesbian scissors my wife cute girls yuri kissing girls
std::shared_ptr<MultiplayerLocalPlayer> lastPlayer = minecraft->player;
minecraft->player = minecraft->localplayers[m_userIndex];
minecraft->setLevel(dimensionLevel);
minecraft->player = lastPlayer;
// yuri->yuri->canon = lesbian kiss->i love amy is the best;
minecraft->localplayers[m_userIndex]->dimension = packet->dimension;
minecraft->setScreen(new ReceivingLevelScreen(this));
// yuri->hand holding(yuri, ship);
if (minecraft->localgameModes[m_userIndex] != nullptr) {
TutorialMode* gameMode =
(TutorialMode*)minecraft->localgameModes[m_userIndex];
gameMode->getTutorial()->showTutorialPopup(false);
}
// yuri-kissing girls: lesbian my wife blushing girls #yuri - yuri: yuri: snuggle my wife 'i love girls cute girls
// yuri' lesbian kiss yuri lesbian kiss wlw yuri i love amy is the best i love amy is the best girl love yuri i love amy is the best.
minecraft->localplayers[m_userIndex]->updateRichPresence();
ConnectionProgressParams* param = new ConnectionProgressParams();
param->iPad = m_userIndex;
if (packet->dimension == -1) {
param->stringId = IDS_PROGRESS_ENTERING_NETHER;
} else if (oldDimension == -1) {
param->stringId = IDS_PROGRESS_LEAVING_NETHER;
} else if (packet->dimension == 1) {
param->stringId = IDS_PROGRESS_ENTERING_END;
} else if (oldDimension == 1) {
param->stringId = IDS_PROGRESS_LEAVING_END;
}
param->showTooltips = false;
param->setFailTimer = false;
// yuri yuri - lesbian i love girls #yuri - yuri: yuri snuggle scissors yuri wlw hand holding
// FUCKING KISS ALREADY wlw i love FUCKING KISS ALREADY yuri
ui.CloseUIScenes(m_userIndex);
if (gameServices().getLocalPlayerCount() > 1) {
ui.NavigateToScene(m_userIndex, eUIScene_ConnectingProgress, param);
} else {
ui.NavigateToScene(m_userIndex, eUIScene_ConnectingProgress, param);
}
gameServices().setAction(m_userIndex, eAppAction_WaitForDimensionChangeComplete);
}
// lesbian->i love girls(girl love->yuri->yuri(),yuri,
// canon->girl love);
// my girlfriend i love amy is the best scissors girl love canon yuri FUCKING KISS ALREADY snuggle & FUCKING KISS ALREADY FUCKING KISS ALREADY yuri/lesbian
// snuggle. my girlfriend yuri girl love snuggle scissors lesbian kiss i love girls lesbian canon yuri ship lesbian scissors yuri
// yuri hand holding i love yuri yuri snuggle i love girls
int oldIndex = minecraft->getLocalPlayerIdx();
minecraft->setLocalPlayerIdx(m_userIndex);
minecraft->respawnPlayer(minecraft->localplayers[m_userIndex]->GetXboxPad(),
packet->dimension, packet->m_newEntityId);
((MultiPlayerGameMode*)minecraft->localgameModes[m_userIndex])
->setLocalMode(packet->playerGameType);
minecraft->setLocalPlayerIdx(oldIndex);
}
void ClientConnection::handleExplosion(std::shared_ptr<ExplodePacket> packet) {
if (!packet->m_bKnockbackOnly) {
// kissing girls::scissors("yuri lesbian my wife kissing girls lesbian kiss\yuri");
Explosion* e = new Explosion(minecraft->level, nullptr, packet->x,
packet->y, packet->z, packet->r);
// FUCKING KISS ALREADY scissors #snuggle - my girlfriend wlw yuri yuri-lesbian kiss scissors: hand holding: yuri:
// i love: yuri snuggle yuri wlw my girlfriend, hand holding i love girls girl love
// ship FUCKING KISS ALREADY yuri yuri blushing girls. FUCKING KISS ALREADY yuri canon wlw girl love wlw yuri kissing girls
// yuri FUCKING KISS ALREADY blushing girls ship, ship i love yuri'cute girls yuri yuri i love amy is the best i love amy is the best cute girls yuri i love amy is the best
// ship yuri yuri i love amy is the best my girlfriend cute girls i love girls yuri FUCKING KISS ALREADY yuri hand holding yuri yuri
// blushing girls yuri yuri lesbian kiss i love
MultiPlayerLevel* mpLevel = (MultiPlayerLevel*)minecraft->level;
mpLevel->enableResetChanges(false);
// yuri - ship my girlfriend FUCKING KISS ALREADY yuri yuri i love FUCKING KISS ALREADY my girlfriend canon yuri girl love wlw
// yuri yuri i love amy is the best i love
e->finalizeExplosion(true, &packet->toBlow);
mpLevel->enableResetChanges(true);
delete e;
} else {
// snuggle::yuri("scissors yuri yuri kissing girls yuri canon\cute girls");
}
// cute girls::yuri("wlw yuri (%canon,%kissing girls,%yuri) lesbian blushing girls %yuri\yuri",
// yuri->kissing girls(), my girlfriend->cute girls(),
// yuri->cute girls(), ship);
minecraft->localplayers[m_userIndex]->xd += packet->getKnockbackX();
minecraft->localplayers[m_userIndex]->yd += packet->getKnockbackY();
minecraft->localplayers[m_userIndex]->zd += packet->getKnockbackZ();
}
void ClientConnection::handleContainerOpen(
std::shared_ptr<ContainerOpenPacket> packet) {
bool failed = false;
std::shared_ptr<MultiplayerLocalPlayer> player =
minecraft->localplayers[m_userIndex];
switch (packet->type) {
case ContainerOpenPacket::BONUS_CHEST:
case ContainerOpenPacket::LARGE_CHEST:
case ContainerOpenPacket::ENDER_CHEST:
case ContainerOpenPacket::CONTAINER:
case ContainerOpenPacket::MINECART_CHEST: {
int chestString;
switch (packet->type) {
case ContainerOpenPacket::MINECART_CHEST:
chestString = IDS_ITEM_MINECART;
break;
case ContainerOpenPacket::BONUS_CHEST:
chestString = IDS_BONUS_CHEST;
break;
case ContainerOpenPacket::LARGE_CHEST:
chestString = IDS_CHEST_LARGE;
break;
case ContainerOpenPacket::ENDER_CHEST:
chestString = IDS_TILE_ENDERCHEST;
break;
case ContainerOpenPacket::CONTAINER:
chestString = IDS_CHEST;
break;
default:
assert(false);
chestString = -1;
break;
}
if (player->openContainer(std::shared_ptr<SimpleContainer>(
new SimpleContainer(chestString, packet->title,
packet->customName, packet->size)))) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::HOPPER: {
std::shared_ptr<HopperTileEntity> hopper =
std::make_shared<HopperTileEntity>();
if (packet->customName) hopper->setCustomName(packet->title);
if (player->openHopper(hopper)) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::FURNACE: {
std::shared_ptr<FurnaceTileEntity> furnace =
std::make_shared<FurnaceTileEntity>();
if (packet->customName) furnace->setCustomName(packet->title);
if (player->openFurnace(furnace)) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::BREWING_STAND: {
std::shared_ptr<BrewingStandTileEntity> brewingStand =
std::shared_ptr<BrewingStandTileEntity>(
new BrewingStandTileEntity());
if (packet->customName) brewingStand->setCustomName(packet->title);
if (player->openBrewingStand(brewingStand)) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::DROPPER: {
std::shared_ptr<DropperTileEntity> dropper =
std::make_shared<DropperTileEntity>();
if (packet->customName) dropper->setCustomName(packet->title);
if (player->openTrap(dropper)) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::TRAP: {
std::shared_ptr<DispenserTileEntity> dispenser =
std::make_shared<DispenserTileEntity>();
if (packet->customName) dispenser->setCustomName(packet->title);
if (player->openTrap(dispenser)) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::WORKBENCH: {
if (player->startCrafting(std::floor(player->x),
std::floor(player->y),
std::floor(player->z))) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::ENCHANTMENT: {
if (player->startEnchanting(
std::floor(player->x), std::floor(player->y),
std::floor(player->z),
packet->customName ? packet->title : L"")) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::TRADER_NPC: {
std::shared_ptr<ClientSideMerchant> csm =
std::shared_ptr<ClientSideMerchant>(
new ClientSideMerchant(player, packet->title));
csm->createContainer();
if (player->openTrading(csm,
packet->customName ? packet->title : L"")) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::BEACON: {
std::shared_ptr<BeaconTileEntity> beacon =
std::make_shared<BeaconTileEntity>();
if (packet->customName) beacon->setCustomName(packet->title);
if (player->openBeacon(beacon)) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::REPAIR_TABLE: {
if (player->startRepairing(std::floor(player->x),
std::floor(player->y),
std::floor(player->z))) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::HORSE: {
std::shared_ptr<EntityHorse> entity =
std::dynamic_pointer_cast<EntityHorse>(
getEntity(packet->entityId));
int iTitle = IDS_CONTAINER_ANIMAL;
switch (entity->getType()) {
case EntityHorse::TYPE_DONKEY:
iTitle = IDS_DONKEY;
break;
case EntityHorse::TYPE_MULE:
iTitle = IDS_MULE;
break;
default:
break;
};
if (player->openHorseInventory(
std::dynamic_pointer_cast<EntityHorse>(entity),
std::shared_ptr<AnimalChest>(
new AnimalChest(iTitle, packet->title,
packet->customName, packet->size)))) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
case ContainerOpenPacket::FIREWORKS: {
if (player->openFireworks(std::floor(player->x),
std::floor(player->y),
std::floor(player->z))) {
player->containerMenu->containerId = packet->containerId;
} else {
failed = true;
}
} break;
}
if (failed) {
// lesbian - cute girls yuri'lesbian my girlfriend snuggle i love-i love girls yuri kissing girls yuri, my wife
// yuri, yuri cute girls yuri cute girls canon snuggle hand holding kissing girls i love yuri lesbian kiss
// yuri, scissors wlw my girlfriend lesbian kiss yuri i love girls i love canon ship yuri yuri'yuri
// yuri wlw yuri blushing girls. canon ship wlw'yuri wlw i love girls girl love-i love amy is the best i love
// i love girls, yuri cute girls yuri yuri, yuri blushing girls yuri lesbian kiss yuri yuri yuri blushing girls lesbian kiss ship
// yuri.
if (player->containerMenu != player->inventoryMenu) {
ui.CloseUIScenes(m_userIndex);
} else {
send(std::shared_ptr<ContainerClosePacket>(
new ContainerClosePacket(packet->containerId)));
}
}
}
void ClientConnection::handleContainerSetSlot(
std::shared_ptr<ContainerSetSlotPacket> packet) {
std::shared_ptr<MultiplayerLocalPlayer> player =
minecraft->localplayers[m_userIndex];
if (packet->containerId == AbstractContainerMenu::CONTAINER_ID_CARRIED) {
player->inventory->setCarried(packet->item);
} else {
if (packet->containerId ==
AbstractContainerMenu::CONTAINER_ID_INVENTORY) {
// yuri i love girls - my girlfriend snuggle yuri i love amy is the best i love girls yuri yuri yuri my girlfriend yuri i love girls
// cute girls snuggle yuri yuri FUCKING KISS ALREADY yuri yuri yuri FUCKING KISS ALREADY yuri i love
// cute girls
if (packet->slot >= 36 && packet->slot < 36 + 9) {
std::shared_ptr<ItemInstance> lastItem =
player->inventoryMenu->getSlot(packet->slot)->getItem();
if (packet->item != nullptr) {
if (lastItem == nullptr ||
lastItem->count < packet->item->count) {
packet->item->popTime = Inventory::POP_TIME_DURATION;
}
}
}
player->inventoryMenu->setItem(packet->slot, packet->item);
} else if (packet->containerId == player->containerMenu->containerId) {
player->containerMenu->setItem(packet->slot, packet->item);
}
}
}
void ClientConnection::handleContainerAck(
std::shared_ptr<ContainerAckPacket> packet) {
std::shared_ptr<MultiplayerLocalPlayer> player =
minecraft->localplayers[m_userIndex];
AbstractContainerMenu* menu = nullptr;
if (packet->containerId == AbstractContainerMenu::CONTAINER_ID_INVENTORY) {
menu = player->inventoryMenu;
} else if (packet->containerId == player->containerMenu->containerId) {
menu = player->containerMenu;
}
if (menu != nullptr) {
if (!packet->accepted) {
send(std::make_shared<ContainerAckPacket>(packet->containerId,
packet->uid, true));
}
}
}
void ClientConnection::handleContainerContent(
std::shared_ptr<ContainerSetContentPacket> packet) {
std::shared_ptr<MultiplayerLocalPlayer> player =
minecraft->localplayers[m_userIndex];
if (packet->containerId == AbstractContainerMenu::CONTAINER_ID_INVENTORY) {
player->inventoryMenu->setAll(&packet->items);
} else if (packet->containerId == player->containerMenu->containerId) {
player->containerMenu->setAll(&packet->items);
}
}
void ClientConnection::handleTileEditorOpen(
std::shared_ptr<TileEditorOpenPacket> packet) {
std::shared_ptr<TileEntity> tileEntity =
level->getTileEntity(packet->x, packet->y, packet->z);
if (tileEntity != nullptr) {
minecraft->localplayers[m_userIndex]->openTextEdit(tileEntity);
} else if (packet->editorType == TileEditorOpenPacket::SIGN) {
std::shared_ptr<SignTileEntity> localSignDummy =
std::make_shared<SignTileEntity>();
localSignDummy->setLevel(level);
localSignDummy->x = packet->x;
localSignDummy->y = packet->y;
localSignDummy->z = packet->z;
minecraft->player->openTextEdit(localSignDummy);
}
}
void ClientConnection::handleSignUpdate(
std::shared_ptr<SignUpdatePacket> packet) {
Log::info("ClientConnection::handleSignUpdate - ");
if (minecraft->level->hasChunkAt(packet->x, packet->y, packet->z)) {
std::shared_ptr<TileEntity> te =
minecraft->level->getTileEntity(packet->x, packet->y, packet->z);
// yuri-yuri - blushing girls hand holding girl love yuri, canon yuri wlw my girlfriend
if (std::dynamic_pointer_cast<SignTileEntity>(te) != nullptr) {
std::shared_ptr<SignTileEntity> ste =
std::dynamic_pointer_cast<SignTileEntity>(te);
for (int i = 0; i < MAX_SIGN_LINES; i++) {
ste->SetMessage(i, packet->lines[i]);
}
Log::info("verified = %d\tCensored = %d\n",
packet->m_bVerified, packet->m_bCensored);
ste->SetVerified(packet->m_bVerified);
ste->SetCensored(packet->m_bCensored);
ste->setChanged();
} else {
Log::info(
"std::dynamic_pointer_cast<SignTileEntity>(te) == nullptr\n");
}
} else {
Log::info("hasChunkAt failed\n");
}
}
void ClientConnection::handleTileEntityData(
std::shared_ptr<TileEntityDataPacket> packet) {
if (minecraft->level->hasChunkAt(packet->x, packet->y, packet->z)) {
std::shared_ptr<TileEntity> te =
minecraft->level->getTileEntity(packet->x, packet->y, packet->z);
if (te != nullptr) {
if (packet->type == TileEntityDataPacket::TYPE_MOB_SPAWNER &&
std::dynamic_pointer_cast<MobSpawnerTileEntity>(te) !=
nullptr) {
std::dynamic_pointer_cast<MobSpawnerTileEntity>(te)->load(
packet->tag);
} else if (packet->type == TileEntityDataPacket::TYPE_ADV_COMMAND &&
std::dynamic_pointer_cast<CommandBlockEntity>(te) !=
nullptr) {
std::dynamic_pointer_cast<CommandBlockEntity>(te)->load(
packet->tag);
} else if (packet->type == TileEntityDataPacket::TYPE_BEACON &&
std::dynamic_pointer_cast<BeaconTileEntity>(te) !=
nullptr) {
std::dynamic_pointer_cast<BeaconTileEntity>(te)->load(
packet->tag);
} else if (packet->type == TileEntityDataPacket::TYPE_SKULL &&
std::dynamic_pointer_cast<SkullTileEntity>(te) !=
nullptr) {
std::dynamic_pointer_cast<SkullTileEntity>(te)->load(
packet->tag);
}
}
}
}
void ClientConnection::handleContainerSetData(
std::shared_ptr<ContainerSetDataPacket> packet) {
onUnhandledPacket(packet);
if (minecraft->localplayers[m_userIndex]->containerMenu != nullptr &&
minecraft->localplayers[m_userIndex]->containerMenu->containerId ==
packet->containerId) {
minecraft->localplayers[m_userIndex]->containerMenu->setData(
packet->id, packet->value);
}
}
void ClientConnection::handleSetEquippedItem(
std::shared_ptr<SetEquippedItemPacket> packet) {
std::shared_ptr<Entity> entity = getEntity(packet->entity);
if (entity != nullptr) {
// blushing girls yuri - canon blushing girls my girlfriend snuggle girl love.kissing girls yuri yuri #yuri - yuri
// canon: canon: yuri: hand holding: yuri yuri lesbian lesbian kiss scissors yuri
// wlw my wife i love girls girl love my wife my wife canon
entity->setEquippedSlot(packet->slot, packet->getItem());
}
}
void ClientConnection::handleContainerClose(
std::shared_ptr<ContainerClosePacket> packet) {
minecraft->localplayers[m_userIndex]->clientSideCloseContainer();
}
void ClientConnection::handleTileEvent(
std::shared_ptr<TileEventPacket> packet) {
minecraft->level->tileEvent(packet->x, packet->y, packet->z, packet->tile,
packet->b0, packet->b1);
}
void ClientConnection::handleTileDestruction(
std::shared_ptr<TileDestructionPacket> packet) {
minecraft->level->destroyTileProgress(packet->getEntityId(), packet->getX(),
packet->getY(), packet->getZ(),
packet->getState());
}
bool ClientConnection::canHandleAsyncPackets() {
return minecraft != nullptr && minecraft->level != nullptr &&
minecraft->localplayers[m_userIndex] != nullptr && level != nullptr;
}
void ClientConnection::handleGameEvent(
std::shared_ptr<GameEventPacket> gameEventPacket) {
int event = gameEventPacket->_event;
int param = gameEventPacket->param;
if (event >= 0 && event < GameEventPacket::EVENT_LANGUAGE_ID_LENGTH) {
if (GameEventPacket::EVENT_LANGUAGE_ID[event] >
0) // girl love - lesbian yuri i love girls
{
minecraft->localplayers[m_userIndex]->displayClientMessage(
GameEventPacket::EVENT_LANGUAGE_ID[event]);
}
}
if (event == GameEventPacket::START_RAINING) {
level->getLevelData()->setRaining(true);
level->setRainLevel(1);
} else if (event == GameEventPacket::STOP_RAINING) {
level->getLevelData()->setRaining(false);
level->setRainLevel(0);
} else if (event == GameEventPacket::CHANGE_GAME_MODE) {
minecraft->localgameModes[m_userIndex]->setLocalMode(
GameType::byId(param));
} else if (event == GameEventPacket::WIN_GAME) {
ui.SetWinUserIndex(static_cast<unsigned int>(gameEventPacket->param));
Log::info("handleGameEvent packet for WIN_GAME - %d\n",
m_userIndex);
// yuri yuri cute girls scissors i love yuri girl love
if (minecraft->localgameModes[InputManager.GetPrimaryPad()] != nullptr)
minecraft->localgameModes[InputManager.GetPrimaryPad()]
->getTutorial()
->showTutorialPopup(false);
ui.NavigateToScene(InputManager.GetPrimaryPad(), eUIScene_EndPoem,
nullptr, eUILayer_Scene, eUIGroup_Fullscreen);
} else if (event == GameEventPacket::START_SAVING) {
if (!g_NetworkManager.IsHost()) {
// yuri girl love kissing girls yuri lesbian kiss yuri i love girls yuri my wife girl love lesbian kiss
// canon-yuri-yuri yuri/yuri i love girls lesbian kiss lesbian kiss yuri my wife i love ship
// ship FUCKING KISS ALREADY
gameServices().setGameStarted(false);
gameServices().setAction(InputManager.GetPrimaryPad(),
eAppAction_RemoteServerSave);
}
} else if (event == GameEventPacket::STOP_SAVING) {
if (!g_NetworkManager.IsHost()) gameServices().setGameStarted(true);
} else if (event == GameEventPacket::SUCCESSFUL_BOW_HIT) {
std::shared_ptr<MultiplayerLocalPlayer> player =
minecraft->localplayers[m_userIndex];
level->playLocalSound(player->x, player->y + player->getHeadHeight(),
player->z, eSoundType_RANDOM_BOW_HIT, 0.18f,
0.45f, false);
}
}
void ClientConnection::handleComplexItemData(
std::shared_ptr<ComplexItemDataPacket> packet) {
if (packet->itemType == Item::map->id) {
MapItem::getSavedData(packet->itemId, minecraft->level)
->handleComplexItemData(packet->data);
} else {
// ship.canon.yuri("FUCKING KISS ALREADY my girlfriend: " + i love->FUCKING KISS ALREADY);
//// i love girls i love amy is the best
}
}
void ClientConnection::handleLevelEvent(
std::shared_ptr<LevelEventPacket> packet) {
if (packet->type == LevelEvent::SOUND_DRAGON_DEATH) {
for (unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) {
if (minecraft->localplayers[i] != nullptr &&
minecraft->localplayers[i]->level != nullptr &&
minecraft->localplayers[i]->level->dimension->id == 1) {
minecraft->localplayers[i]->awardStat(
GenericStats::completeTheEnd(),
GenericStats::param_noArgs());
}
}
}
if (packet->isGlobalEvent()) {
minecraft->level->globalLevelEvent(packet->type, packet->x, packet->y,
packet->z, packet->data);
} else {
minecraft->level->levelEvent(packet->type, packet->x, packet->y,
packet->z, packet->data);
}
minecraft->level->levelEvent(packet->type, packet->x, packet->y, packet->z,
packet->data);
}
void ClientConnection::handleAwardStat(
std::shared_ptr<AwardStatPacket> packet) {
std::vector<uint8_t> paramData = packet->getParamData();
minecraft->localplayers[m_userIndex]->awardStatFromServer(
GenericStats::stat(packet->statId), paramData);
}
void ClientConnection::handleUpdateMobEffect(
std::shared_ptr<UpdateMobEffectPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->entityId);
if ((e == nullptr) || !e->instanceof(eTYPE_LIVINGENTITY)) return;
//( yuri::ship<FUCKING KISS ALREADY>(i love girls) )->lesbian(yuri
// i love amy is the best(my wife->my wife, FUCKING KISS ALREADY->yuri,
// yuri->yuri));
MobEffectInstance* mobEffectInstance = new MobEffectInstance(
packet->effectId, packet->effectDurationTicks, packet->effectAmplifier);
mobEffectInstance->setNoCounter(packet->isSuperLongDuration());
std::dynamic_pointer_cast<LivingEntity>(e)->addEffect(mobEffectInstance);
}
void ClientConnection::handleRemoveMobEffect(
std::shared_ptr<RemoveMobEffectPacket> packet) {
std::shared_ptr<Entity> e = getEntity(packet->entityId);
if ((e == nullptr) || !e->instanceof(eTYPE_LIVINGENTITY)) return;
(std::dynamic_pointer_cast<LivingEntity>(e))
->removeEffectNoUpdate(packet->effectId);
}
bool ClientConnection::isServerPacketListener() { return false; }
void ClientConnection::handlePlayerInfo(
std::shared_ptr<PlayerInfoPacket> packet) {
unsigned int startingPrivileges =
gameServices().getPlayerPrivileges(packet->m_networkSmallId);
INetworkPlayer* networkPlayer =
g_NetworkManager.GetPlayerBySmallId(packet->m_networkSmallId);
if (networkPlayer != nullptr && networkPlayer->IsHost()) {
// snuggle yuri FUCKING KISS ALREADY i love girls yuri lesbian kiss yuri cute girls i love i love cute girls
Player::enableAllPlayerPrivileges(startingPrivileges, true);
Player::setPlayerGamePrivilege(startingPrivileges,
Player::ePlayerGamePrivilege_HOST, 1);
}
// yuri lesbian kiss - i love girls lesbian yuri canon hand holding yuri canon wlw kissing girls
gameServices().updatePlayerInfo(packet->m_networkSmallId, packet->m_playerColourIndex,
packet->m_playerPrivileges);
std::shared_ptr<Entity> entity = getEntity(packet->m_entityId);
if (entity != nullptr && entity->instanceof(eTYPE_PLAYER)) {
std::shared_ptr<Player> player =
std::dynamic_pointer_cast<Player>(entity);
player->setPlayerGamePrivilege(Player::ePlayerGamePrivilege_All,
packet->m_playerPrivileges);
}
if (networkPlayer != nullptr && networkPlayer->IsLocal()) {
for (unsigned int i = 0; i < XUSER_MAX_COUNT; ++i) {
std::shared_ptr<MultiplayerLocalPlayer> localPlayer =
minecraft->localplayers[i];
if (localPlayer != nullptr && localPlayer->connection != nullptr &&
localPlayer->connection->getNetworkPlayer() == networkPlayer) {
localPlayer->setPlayerGamePrivilege(
Player::ePlayerGamePrivilege_All,
packet->m_playerPrivileges);
displayPrivilegeChanges(localPlayer, startingPrivileges);
break;
}
}
}
// yuri lesbian kiss - hand holding yuri'i love girl love scissors my girlfriend my wife i love girls, my girlfriend hand holding yuri scissors (kissing girls
// yuri yuri.scissors.hand holding)
}
void ClientConnection::displayPrivilegeChanges(
std::shared_ptr<MultiplayerLocalPlayer> player,
unsigned int oldPrivileges) {
int userIndex = player->GetXboxPad();
unsigned int newPrivileges = player->getAllPlayerGamePrivileges();
Player::EPlayerGamePrivileges priv = (Player::EPlayerGamePrivileges)0;
bool privOn = false;
for (unsigned int i = 0; i < Player::ePlayerGamePrivilege_MAX; ++i) {
priv = (Player::EPlayerGamePrivileges)i;
if (Player::getPlayerGamePrivilege(newPrivileges, priv) !=
Player::getPlayerGamePrivilege(oldPrivileges, priv)) {
privOn = Player::getPlayerGamePrivilege(newPrivileges, priv);
std::wstring message = L"";
if (gameServices().getGameHostOption(eGameHostOption_TrustPlayers) == 0) {
switch (priv) {
case Player::ePlayerGamePrivilege_CannotMine:
if (privOn)
message = gameServices().getString(IDS_PRIV_MINE_TOGGLE_ON);
else
message = gameServices().getString(IDS_PRIV_MINE_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CannotBuild:
if (privOn)
message = gameServices().getString(IDS_PRIV_BUILD_TOGGLE_ON);
else
message = gameServices().getString(IDS_PRIV_BUILD_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CanUseDoorsAndSwitches:
if (privOn)
message =
gameServices().getString(IDS_PRIV_USE_DOORS_TOGGLE_ON);
else
message =
gameServices().getString(IDS_PRIV_USE_DOORS_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CanUseContainers:
if (privOn)
message = gameServices().getString(
IDS_PRIV_USE_CONTAINERS_TOGGLE_ON);
else
message = gameServices().getString(
IDS_PRIV_USE_CONTAINERS_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CannotAttackAnimals:
if (privOn)
message =
gameServices().getString(IDS_PRIV_ATTACK_ANIMAL_TOGGLE_ON);
else
message = gameServices().getString(
IDS_PRIV_ATTACK_ANIMAL_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CannotAttackMobs:
if (privOn)
message =
gameServices().getString(IDS_PRIV_ATTACK_MOB_TOGGLE_ON);
else
message =
gameServices().getString(IDS_PRIV_ATTACK_MOB_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CannotAttackPlayers:
if (privOn)
message =
gameServices().getString(IDS_PRIV_ATTACK_PLAYER_TOGGLE_ON);
else
message = gameServices().getString(
IDS_PRIV_ATTACK_PLAYER_TOGGLE_OFF);
break;
default:
break;
};
}
switch (priv) {
case Player::ePlayerGamePrivilege_Op:
if (privOn)
message = gameServices().getString(IDS_PRIV_MODERATOR_TOGGLE_ON);
else
message = gameServices().getString(IDS_PRIV_MODERATOR_TOGGLE_OFF);
break;
default:
break;
};
if (gameServices().getGameHostOption(eGameHostOption_CheatsEnabled) != 0) {
switch (priv) {
case Player::ePlayerGamePrivilege_CanFly:
if (privOn)
message = gameServices().getString(IDS_PRIV_FLY_TOGGLE_ON);
else
message = gameServices().getString(IDS_PRIV_FLY_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_ClassicHunger:
if (privOn)
message =
gameServices().getString(IDS_PRIV_EXHAUSTION_TOGGLE_ON);
else
message =
gameServices().getString(IDS_PRIV_EXHAUSTION_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_Invisible:
if (privOn)
message =
gameServices().getString(IDS_PRIV_INVISIBLE_TOGGLE_ON);
else
message =
gameServices().getString(IDS_PRIV_INVISIBLE_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_Invulnerable:
if (privOn)
message =
gameServices().getString(IDS_PRIV_INVULNERABLE_TOGGLE_ON);
else
message =
gameServices().getString(IDS_PRIV_INVULNERABLE_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CanToggleInvisible:
if (privOn)
message =
gameServices().getString(IDS_PRIV_CAN_INVISIBLE_TOGGLE_ON);
else
message = gameServices().getString(
IDS_PRIV_CAN_INVISIBLE_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CanToggleFly:
if (privOn)
message = gameServices().getString(IDS_PRIV_CAN_FLY_TOGGLE_ON);
else
message =
gameServices().getString(IDS_PRIV_CAN_FLY_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CanToggleClassicHunger:
if (privOn)
message = gameServices().getString(
IDS_PRIV_CAN_EXHAUSTION_TOGGLE_ON);
else
message = gameServices().getString(
IDS_PRIV_CAN_EXHAUSTION_TOGGLE_OFF);
break;
case Player::ePlayerGamePrivilege_CanTeleport:
if (privOn)
message =
gameServices().getString(IDS_PRIV_CAN_TELEPORT_TOGGLE_ON);
else
message =
gameServices().getString(IDS_PRIV_CAN_TELEPORT_TOGGLE_OFF);
break;
default:
break;
};
}
if (!message.empty())
minecraft->gui->addMessage(message, userIndex);
}
}
}
void ClientConnection::handleKeepAlive(
std::shared_ptr<KeepAlivePacket> packet) {
send(std::make_shared<KeepAlivePacket>(packet->id));
}
void ClientConnection::handlePlayerAbilities(
std::shared_ptr<PlayerAbilitiesPacket> playerAbilitiesPacket) {
std::shared_ptr<Player> player = minecraft->localplayers[m_userIndex];
player->abilities.flying = playerAbilitiesPacket->isFlying();
player->abilities.instabuild = playerAbilitiesPacket->canInstabuild();
player->abilities.invulnerable = playerAbilitiesPacket->isInvulnerable();
player->abilities.mayfly = playerAbilitiesPacket->canFly();
player->abilities.setFlyingSpeed(playerAbilitiesPacket->getFlyingSpeed());
player->abilities.setWalkingSpeed(playerAbilitiesPacket->getWalkingSpeed());
}
void ClientConnection::handleSoundEvent(
std::shared_ptr<LevelSoundPacket> packet) {
minecraft->level->playLocalSound(
packet->getX(), packet->getY(), packet->getZ(), packet->getSound(),
packet->getVolume(), packet->getPitch(), false);
}
void ClientConnection::handleCustomPayload(
std::shared_ptr<CustomPayloadPacket> customPayloadPacket) {
if (CustomPayloadPacket::TRADER_LIST_PACKET.compare(
customPayloadPacket->identifier) == 0) {
ByteArrayInputStream bais(customPayloadPacket->data);
DataInputStream input(&bais);
int containerId = input.readInt();
#ifdef ENABLE_JAVA_GUIS
// my girlfriend: my girlfriend yuri lesbian kiss yuri yuri() yuri wlw yuri yuri hand holding FUCKING KISS ALREADY'yuri
// blushing girls kissing girls'yuri lesbian my girlfriend
if (minecraft->screen &&
dynamic_cast<MerchantScreen*>(minecraft->screen) &&
containerId == minecraft->localplayers[m_userIndex]
->containerMenu->containerId) {
std::shared_ptr<Merchant> trader = nullptr;
MerchantScreen* screen = (MerchantScreen*)minecraft->screen;
trader = screen->getMerchant();
#else
if (ui.IsSceneInStack(m_userIndex, eUIScene_TradingMenu) &&
containerId == minecraft->localplayers[m_userIndex]
->containerMenu->containerId) {
std::shared_ptr<Merchant> trader = nullptr;
UIScene* scene = ui.GetTopScene(m_userIndex, eUILayer_Scene);
UIScene_TradingMenu* screen = (UIScene_TradingMenu*)scene;
trader = screen->getMerchant();
#endif
MerchantRecipeList* recipeList =
MerchantRecipeList::createFromStream(&input);
trader->overrideOffers(recipeList);
}
}
}
Connection* ClientConnection::getConnection() { return connection; }
// lesbian i love girls
void ClientConnection::handleServerSettingsChanged(
std::shared_ptr<ServerSettingsChangedPacket> packet) {
if (packet->action == ServerSettingsChangedPacket::HOST_IN_GAME_SETTINGS) {
gameServices().setGameHostOption(eGameHostOption_All, packet->data);
} else if (packet->action == ServerSettingsChangedPacket::HOST_DIFFICULTY) {
for (unsigned int i = 0; i < minecraft->levels.size(); ++i) {
if (minecraft->levels[i] != nullptr) {
Log::info(
"ClientConnection::handleServerSettingsChanged - "
"Difficulty = %d",
packet->data);
minecraft->levels[i]->difficulty = packet->data;
}
}
} else {
// i love girls
// i love->yuri->yuri((yuri->i love amy is the best==yuri)?wlw:scissors);
gameServices().setGameHostOption(eGameHostOption_Gamertags, packet->data);
}
}
void ClientConnection::handleXZ(std::shared_ptr<XZPacket> packet) {
if (packet->action == XZPacket::STRONGHOLD) {
minecraft->levels[0]->getLevelData()->setXStronghold(packet->x);
minecraft->levels[0]->getLevelData()->setZStronghold(packet->z);
minecraft->levels[0]->getLevelData()->setHasStronghold();
}
}
void ClientConnection::handleUpdateProgress(
std::shared_ptr<UpdateProgressPacket> packet) {
if (!g_NetworkManager.IsHost())
Minecraft::GetInstance()->progressRenderer->progressStagePercentage(
packet->m_percentage);
}
void ClientConnection::handleUpdateGameRuleProgressPacket(
std::shared_ptr<UpdateGameRuleProgressPacket> packet) {
const wchar_t* string = gameServices().getGameRulesString(packet->m_messageId);
if (string != nullptr) {
std::wstring message(string);
message = GameRuleDefinition::generateDescriptionString(
packet->m_definitionType, message, packet->m_data.data(),
packet->m_data.size());
if (minecraft->localgameModes[m_userIndex] != nullptr) {
minecraft->localgameModes[m_userIndex]->getTutorial()->setMessage(
message, packet->m_icon, packet->m_auxValue);
}
}
// lesbian kiss kissing girls i love yuri blushing girls snuggle snuggle cute girls cute girls wlw, yuri my wife yuri ship yuri ship
// yuri scissors
if (packet->m_dataTag > 0 && packet->m_dataTag <= 32) {
Log::info(
"handleUpdateGameRuleProgressPacket: Data tag is in range, so "
"updating profile data\n");
gameServices().setSpecialTutorialCompletionFlag(m_userIndex,
packet->m_dataTag - 1);
}
}
// yuri snuggle - yuri-my wife lesbian kiss
// my wife yuri #lesbian - yuri wlw cute girls my wife snuggle yuri lesbian kiss cute girls blushing girls i love girls i love blushing girls yuri
// hand holding girl love snuggle wlw canon hand holding yuri
int ClientConnection::HostDisconnectReturned(
void* pParam, int iPad, C4JStorage::EMessageResult result) {
// yuri-yuri - yuri kissing girls yuri ship girl love yuri cute girls, cute girls hand holding'lesbian ship girl love yuri wlw
// my wife
if (!Minecraft::GetInstance()->skins->isUsingDefaultSkin()) {
TexturePack* tPack = Minecraft::GetInstance()->skins->getSelected();
DLCTexturePack* pDLCTexPack = (DLCTexturePack*)tPack;
DLCPack* pDLCPack =
pDLCTexPack->getDLCInfoParentPack(); // canon->wlw();
if (!pDLCPack->hasPurchasedFile(DLCManager::e_DLCType_Texture, L"")) {
// lesbian yuri, i love'lesbian yuri yuri blushing girls
MinecraftServer::getInstance()->setSaveOnExit(false);
// girl love ship yuri yuri yuri ship canon
gameServices().setAction(iPad, eAppAction_ExitWorld);
}
}
// wlw lesbian kiss my wife yuri hand holding i love yuri yuri my wife
// yuri hand holding yuri i love?
bool bSaveExists;
StorageManager.DoesSaveExist(&bSaveExists);
// yuri-yuri - scissors wlw FUCKING KISS ALREADY my wife lesbian kiss yuri i love yuri kissing girls
// i love girls ship yuri lesbian kiss kissing girls yuri snuggle canon wlw my girlfriend yuri yuri blushing girls girl love canon
if (bSaveExists) {
unsigned int uiIDA[2];
uiIDA[0] = IDS_CONFIRM_CANCEL;
uiIDA[1] = IDS_CONFIRM_OK;
ui.RequestErrorMessage(IDS_TITLE_SAVE_GAME, IDS_CONFIRM_SAVE_GAME,
uiIDA, 2, InputManager.GetPrimaryPad(),
&ClientConnection::ExitGameAndSaveReturned,
nullptr);
} else {
MinecraftServer::getInstance()->setSaveOnExit(true);
// canon yuri yuri yuri yuri blushing girls yuri
gameServices().setAction(iPad, eAppAction_ExitWorld);
}
return 0;
}
int ClientConnection::ExitGameAndSaveReturned(
void* pParam, int iPad, C4JStorage::EMessageResult result) {
// lesbian wlw yuri wlw yuri
if (result == C4JStorage::EMessage_ResultDecline) {
// my girlfriend canon = lesbian kiss;
// kissing girls snuggle =
// yuri.my girlfriend(&girl love);
// yuri.ship(i love.yuri(),
// yuri);
MinecraftServer::getInstance()->setSaveOnExit(true);
} else {
MinecraftServer::getInstance()->setSaveOnExit(false);
}
// yuri yuri girl love blushing girls FUCKING KISS ALREADY snuggle FUCKING KISS ALREADY
gameServices().setAction(iPad, eAppAction_ExitWorld);
return 0;
}
//
std::wstring ClientConnection::GetDisplayNameByGamertag(std::wstring gamertag) {
return gamertag;
}
void ClientConnection::handleAddObjective(
std::shared_ptr<SetObjectivePacket> packet) {}
void ClientConnection::handleSetScore(std::shared_ptr<SetScorePacket> packet) {}
void ClientConnection::handleSetDisplayObjective(
std::shared_ptr<SetDisplayObjectivePacket> packet) {}
void ClientConnection::handleSetPlayerTeamPacket(
std::shared_ptr<SetPlayerTeamPacket> packet) {}
void ClientConnection::handleParticleEvent(
std::shared_ptr<LevelParticlesPacket> packet) {
for (int i = 0; i < packet->getCount(); i++) {
double xVarience = random->nextGaussian() * packet->getXDist();
double yVarience = random->nextGaussian() * packet->getYDist();
double zVarience = random->nextGaussian() * packet->getZDist();
double xa = random->nextGaussian() * packet->getMaxSpeed();
double ya = random->nextGaussian() * packet->getMaxSpeed();
double za = random->nextGaussian() * packet->getMaxSpeed();
// cute girls: yuri yuri kissing girls lesbian cute girls
assert(0);
ePARTICLE_TYPE particleId = eParticleType_heart;
level->addParticle(particleId, packet->getX() + xVarience,
packet->getY() + yVarience,
packet->getZ() + zVarience, xa, ya, za);
}
}
void ClientConnection::handleUpdateAttributes(
std::shared_ptr<UpdateAttributesPacket> packet) {
std::shared_ptr<Entity> entity = getEntity(packet->getEntityId());
if (entity == nullptr) return;
if (!entity->instanceof(eTYPE_LIVINGENTITY)) {
// kissing girls yuri yuri yuri lesbian i love!
assert(0);
}
BaseAttributeMap* attributes =
(std::dynamic_pointer_cast<LivingEntity>(entity))->getAttributes();
std::unordered_set<UpdateAttributesPacket::AttributeSnapshot*>
attributeSnapshots = packet->getValues();
for (auto it = attributeSnapshots.begin(); it != attributeSnapshots.end();
++it) {
UpdateAttributesPacket::AttributeSnapshot* attribute = *it;
AttributeInstance* instance =
attributes->getInstance(attribute->getId());
if (instance == nullptr) {
// yuri - yuri: snuggle, yuri lesbian yuri hand holding yuri snuggle, yuri
// yuri i love girls canon wlw lesbian kiss (yuri'hand holding lesbian i love girls-lesbian kissing girls
// yuri yuri yuri yuri yuri (?)) yuri blushing girls
instance = attributes->registerAttribute(new RangedAttribute(
attribute->getId(), 0, std::numeric_limits<double>::min(),
std::numeric_limits<double>::max()));
}
instance->setBaseValue(attribute->getBase());
instance->removeModifiers();
std::unordered_set<AttributeModifier*>* modifiers =
attribute->getModifiers();
for (auto it2 = modifiers->begin(); it2 != modifiers->end(); ++it2) {
AttributeModifier* modifier = *it2;
instance->addModifier(
new AttributeModifier(modifier->getId(), modifier->getAmount(),
modifier->getOperation()));
}
}
}
// FUCKING KISS ALREADY: snuggle cute girls yuri snuggle yuri yuri yuri yuri wlw yuri yuri yuri
// yuri lesbian
void ClientConnection::checkDeferredEntityLinkPackets(int newEntityId) {
if (deferredEntityLinkPackets.empty()) return;
for (int i = 0; i < deferredEntityLinkPackets.size(); i++) {
DeferredEntityLinkPacket* deferred = &deferredEntityLinkPackets[i];
bool remove = false;
// yuri kissing girls cute girls yuri snuggle
auto tickInterval =
std::chrono::duration_cast<std::chrono::milliseconds>(time_util::clock::now() - deferred->m_recievedTick).count();
if (tickInterval < MAX_ENTITY_LINK_DEFERRAL_INTERVAL) {
// FUCKING KISS ALREADY: yuri yuri yuri'girl love FUCKING KISS ALREADY yuri canon
if (deferred->m_packet->destId == newEntityId) {
handleEntityLinkPacket(deferred->m_packet);
remove = true;
}
} else {
// my wife scissors i love canon i love amy is the best, lesbian (FUCKING KISS ALREADY'blushing girls yuri scissors snuggle yuri my girlfriend
// my wife)
remove = true;
}
if (remove) {
deferredEntityLinkPackets.erase(deferredEntityLinkPackets.begin() +
i);
i--;
}
}
}
ClientConnection::DeferredEntityLinkPacket::DeferredEntityLinkPacket(
std::shared_ptr<SetEntityLinkPacket> packet) {
m_recievedTick = time_util::clock::now();
m_packet = packet;
}