Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion Minecraft.Client/ClientConnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
#include "Common/Network/PlatformNetworkManagerStub.h"
#endif

#include "../Minecraft.World/Recipes.h"

#ifdef _DURANGO
#include "../Minecraft.World/DurangoStats.h"
Expand Down Expand Up @@ -244,6 +245,10 @@ void ClientConnection::handleLogin(shared_ptr<LoginPacket> packet)
iUserID=m_userIndex;

TelemetryManager->SetMultiplayerInstanceId(packet->m_multiplayerInstanceId);

if (Recipes::getInstance()->m_bPendingRecipeRebuild) {
Recipes::getInstance()->rebuildRecipeArray();
}
}
else
{
Expand Down Expand Up @@ -2013,6 +2018,7 @@ void ClientConnection::handleEntityActionAtPosition(shared_ptr<EntityActionAtPos
void ClientConnection::handlePreLogin(shared_ptr<PreLoginPacket> packet)
{
// printf("Client: handlePreLogin\n");
Recipes::getInstance()->m_bPendingRecipeRebuild = true;
#if 1
// 4J - Check that we can play with all the players already in the game who have Friends-Only UGC set
BOOL canPlay = TRUE;
Expand Down Expand Up @@ -3742,7 +3748,12 @@ void ClientConnection::handleSoundEvent(shared_ptr<LevelSoundPacket> packet)

void ClientConnection::handleCustomPayload(shared_ptr<CustomPayloadPacket> customPayloadPacket)
{
if (CustomPayloadPacket::TRADER_LIST_PACKET.compare(customPayloadPacket->identifier) == 0)
if (CustomPayloadPacket::UPDATE_CRAFTING_RECIPES_PACKET.compare(customPayloadPacket->identifier) == 0)
{
Recipes::getInstance()->rebuildRecipeArray(customPayloadPacket);
Recipes::getInstance()->m_bPendingRecipeRebuild = false;
}
else if (CustomPayloadPacket::TRADER_LIST_PACKET.compare(customPayloadPacket->identifier) == 0)
{
ByteArrayInputStream bais(customPayloadPacket->data);
DataInputStream input(&bais);
Expand Down
2 changes: 2 additions & 0 deletions Minecraft.Client/PendingConnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "../Minecraft.World/net.minecraft.world.item.h"
#include "../Minecraft.World/SharedConstants.h"
#include "Settings.h"
#include "../Minecraft.World/Recipes.h"
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD)
#include "../Minecraft.Server/ServerLogManager.h"
#include "../Minecraft.Server/Access/Access.h"
Expand Down Expand Up @@ -336,6 +337,7 @@ void PendingConnection::handleAcceptedLogin(shared_ptr<LoginPacket> packet)
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD)
ServerRuntime::ServerLogManager::OnAcceptedPlayerLogin(GetPendingConnectionSmallId(connection), name);
#endif
connection->send(std::make_shared<CustomPayloadPacket>(CustomPayloadPacket::UPDATE_CRAFTING_RECIPES_PACKET, Recipes::getInstance()->buildSyncedRecipeArray()));
server->getPlayers()->placeNewPlayer(connection, playerEntity, packet);
connection = nullptr; // We've moved responsibility for this over to the new PlayerConnection, nullptr so we don't delete our reference to it here in our dtor
}
Expand Down
3 changes: 3 additions & 0 deletions Minecraft.World/CustomPayloadPacket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ const wstring CustomPayloadPacket::SET_ADVENTURE_COMMAND_PACKET = L"MC|AdvCdm";
const wstring CustomPayloadPacket::SET_BEACON_PACKET = L"MC|Beacon";
const wstring CustomPayloadPacket::SET_ITEM_NAME_PACKET = L"MC|ItemName";

// MinecraftConsoles-defined custom packets
const wstring CustomPayloadPacket::UPDATE_CRAFTING_RECIPES_PACKET = L"MC|Recipes";

CustomPayloadPacket::CustomPayloadPacket()
{
}
Expand Down
3 changes: 3 additions & 0 deletions Minecraft.World/CustomPayloadPacket.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ class CustomPayloadPacket : public Packet, public enable_shared_from_this<Custom
static const wstring SET_BEACON_PACKET;
static const wstring SET_ITEM_NAME_PACKET;

// MinecraftConsoles-defined custom packets
static const wstring UPDATE_CRAFTING_RECIPES_PACKET;

wstring identifier;
int length;
byteArray data;
Expand Down
62 changes: 38 additions & 24 deletions Minecraft.World/FurnaceRecipes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,7 @@ FurnaceRecipes *FurnaceRecipes::getInstance()

FurnaceRecipes::FurnaceRecipes()
{
addFurnaceRecipy(Tile::ironOre_Id, new ItemInstance(Item::ironIngot), .7f);
addFurnaceRecipy(Tile::goldOre_Id, new ItemInstance(Item::goldIngot), 1);
addFurnaceRecipy(Tile::diamondOre_Id, new ItemInstance(Item::diamond), 1);
addFurnaceRecipy(Tile::sand_Id, new ItemInstance(Tile::glass), .1f);
addFurnaceRecipy(Item::porkChop_raw_Id, new ItemInstance(Item::porkChop_cooked), .35f);
addFurnaceRecipy(Item::beef_raw_Id, new ItemInstance(Item::beef_cooked), .35f);
addFurnaceRecipy(Item::chicken_raw_Id, new ItemInstance(Item::chicken_cooked), .35f);
addFurnaceRecipy(Item::fish_raw_Id, new ItemInstance(Item::fish_cooked), .35f);
addFurnaceRecipy(Tile::cobblestone_Id, new ItemInstance(Tile::stone), .1f);
addFurnaceRecipy(Item::clay_Id, new ItemInstance(Item::brick), .3f);
addFurnaceRecipy(Tile::clay_Id, new ItemInstance(Tile::clayHardened), .35f);
addFurnaceRecipy(Tile::cactus_Id, new ItemInstance(Item::dye_powder, 1, DyePowderItem::GREEN), .2f);
addFurnaceRecipy(Tile::treeTrunk_Id, new ItemInstance(Item::coal, 1, CoalItem::CHAR_COAL), .15f);
addFurnaceRecipy(Tile::emeraldOre_Id, new ItemInstance(Item::emerald), 1);
addFurnaceRecipy(Item::potato_Id, new ItemInstance(Item::potatoBaked), .35f);
addFurnaceRecipy(Tile::netherRack_Id, new ItemInstance(Item::netherbrick), .1f);

// special silk touch related recipes:
addFurnaceRecipy(Tile::coalOre_Id, new ItemInstance(Item::coal), .1f);
addFurnaceRecipy(Tile::redStoneOre_Id, new ItemInstance(Item::redStone), .7f);
addFurnaceRecipy(Tile::lapisOre_Id, new ItemInstance(Item::dye_powder, 1, DyePowderItem::BLUE), .2f);
addFurnaceRecipy(Tile::netherQuartz_Id, new ItemInstance(Item::netherQuartz), .2f);


this->rebuildRecipeArray();
}

void FurnaceRecipes::addFurnaceRecipy(int itemId, ItemInstance *result, float value)
Expand Down Expand Up @@ -79,4 +56,41 @@ float FurnaceRecipes::getRecipeValue(int itemId)
return it->second;
}
return 0.0f;
}

void FurnaceRecipes::rebuildRecipeArray() {
this->clearAllRecipies();

addFurnaceRecipy(Tile::ironOre_Id, new ItemInstance(Item::ironIngot), .7f);
addFurnaceRecipy(Tile::goldOre_Id, new ItemInstance(Item::goldIngot), 1);
addFurnaceRecipy(Tile::diamondOre_Id, new ItemInstance(Item::diamond), 1);
addFurnaceRecipy(Tile::sand_Id, new ItemInstance(Tile::glass), .1f);
addFurnaceRecipy(Item::porkChop_raw_Id, new ItemInstance(Item::porkChop_cooked), .35f);
addFurnaceRecipy(Item::beef_raw_Id, new ItemInstance(Item::beef_cooked), .35f);
addFurnaceRecipy(Item::chicken_raw_Id, new ItemInstance(Item::chicken_cooked), .35f);
addFurnaceRecipy(Item::fish_raw_Id, new ItemInstance(Item::fish_cooked), .35f);
addFurnaceRecipy(Tile::cobblestone_Id, new ItemInstance(Tile::stone), .1f);
addFurnaceRecipy(Item::clay_Id, new ItemInstance(Item::brick), .3f);
addFurnaceRecipy(Tile::clay_Id, new ItemInstance(Tile::clayHardened), .35f);
addFurnaceRecipy(Tile::cactus_Id, new ItemInstance(Item::dye_powder, 1, DyePowderItem::GREEN), .2f);
addFurnaceRecipy(Tile::treeTrunk_Id, new ItemInstance(Item::coal, 1, CoalItem::CHAR_COAL), .15f);
addFurnaceRecipy(Tile::emeraldOre_Id, new ItemInstance(Item::emerald), 1);
addFurnaceRecipy(Item::potato_Id, new ItemInstance(Item::potatoBaked), .35f);
addFurnaceRecipy(Tile::netherRack_Id, new ItemInstance(Item::netherbrick), .1f);

// special silk touch related recipes:
addFurnaceRecipy(Tile::coalOre_Id, new ItemInstance(Item::coal), .1f);
addFurnaceRecipy(Tile::redStoneOre_Id, new ItemInstance(Item::redStone), .7f);
addFurnaceRecipy(Tile::lapisOre_Id, new ItemInstance(Item::dye_powder, 1, DyePowderItem::BLUE), .2f);
addFurnaceRecipy(Tile::netherQuartz_Id, new ItemInstance(Item::netherQuartz), .2f);
}

void FurnaceRecipes::clearAllRecipies()
{
for (auto &pair : recipies) {
delete pair.second;
}

recipies.clear();
recipeValue.clear();
}
3 changes: 3 additions & 0 deletions Minecraft.World/FurnaceRecipes.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ class FurnaceRecipes
public:
FurnaceRecipes();

void rebuildRecipeArray();
void clearAllRecipies();

public:
void addFurnaceRecipy(int itemId, ItemInstance *result, float value);
bool isFurnaceItem(int itemId);
Expand Down
6 changes: 6 additions & 0 deletions Minecraft.World/ItemInstance.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include "ItemInstance.h"
#include "stdafx.h"
#include "com.mojang.nbt.h"
#include "net.minecraft.locale.h"
Expand Down Expand Up @@ -220,6 +221,11 @@ void ItemInstance::setAuxValue(int value)
}
}

void ItemInstance::setRawAuxValue(int value)
{
auxValue = value;
}

int ItemInstance::getMaxDamage()
{
return Item::items[id]->getMaxDamage();
Expand Down
1 change: 1 addition & 0 deletions Minecraft.World/ItemInstance.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ class ItemInstance: public enable_shared_from_this<ItemInstance>
int getDamageValue();
int getAuxValue() const;
void setAuxValue(int value);
void setRawAuxValue(int value);
int getMaxDamage();
bool hurt(int dmg, Random *random);
void hurtAndBreak(int dmg, shared_ptr<LivingEntity> owner);
Expand Down
2 changes: 1 addition & 1 deletion Minecraft.World/Packet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ void Packet::staticCtor()

map(162, true, false, false, false, typeid(MoveEntityPacketSmall), MoveEntityPacketSmall::create);
map(163, true, false, false, true, typeid(MoveEntityPacketSmall::Pos), MoveEntityPacketSmall::Pos::create);
map(164, true, false, false, true, typeid( MoveEntityPacketSmall::Rot), MoveEntityPacketSmall::Rot::create);
map(164, true, false, false, true, typeid(MoveEntityPacketSmall::Rot), MoveEntityPacketSmall::Rot::create);
map(165, true, false, false, true, typeid(MoveEntityPacketSmall::PosRot), MoveEntityPacketSmall::PosRot::create);
map(166, true, true, false, false, typeid(XZPacket), XZPacket::create);
map(167, false, true, false, false, typeid(GameCommandPacket), GameCommandPacket::create);
Expand Down
Loading
Loading