diff --git a/Minecraft.Client/Common/Audio/SoundNames.cpp b/Minecraft.Client/Common/Audio/SoundNames.cpp index 4f2373f7..e0564f27 100644 --- a/Minecraft.Client/Common/Audio/SoundNames.cpp +++ b/Minecraft.Client/Common/Audio/SoundNames.cpp @@ -229,9 +229,47 @@ const WCHAR *ConsoleSoundEngine::wchSoundNames[eSoundType_MAX]= L"mob.rabbit.bunnymurder", L"mob.rabbit.hop", - + L"item.armor.equip_leather1", + L"item.armor.equip_leather2", + L"item.armor.equip_leather3", + L"item.armor.equip_leather4", + L"item.armor.equip_leather5", + L"item.armor.equip_leather6", + L"item.armor.equip_chain1", + L"item.armor.equip_chain2", + L"item.armor.equip_chain3", + L"item.armor.equip_chain4", + L"item.armor.equip_chain5", + L"item.armor.equip_chain6", + L"item.armor.equip_iron1", + L"item.armor.equip_iron2", + L"item.armor.equip_iron3", + L"item.armor.equip_iron4", + L"item.armor.equip_iron5", + L"item.armor.equip_iron6", + + L"item.armor.equip_gold1", + L"item.armor.equip_gold2", + L"item.armor.equip_gold3", + L"item.armor.equip_gold4", + L"item.armor.equip_gold5", + L"item.armor.equip_gold6", + + L"item.armor.equip_diamond1", + L"item.armor.equip_diamond2", + L"item.armor.equip_diamond3", + L"item.armor.equip_diamond4", + L"item.armor.equip_diamond5", + L"item.armor.equip_diamond6", + + L"item.armor.equip_generic1", + L"item.armor.equip_generic2", + L"item.armor.equip_generic3", + L"item.armor.equip_generic4", + L"item.armor.equip_generic5", + L"item.armor.equip_generic6" }; diff --git a/Minecraft.Client/Minecraft.cpp b/Minecraft.Client/Minecraft.cpp index 85a60160..f0aa53c4 100644 --- a/Minecraft.Client/Minecraft.cpp +++ b/Minecraft.Client/Minecraft.cpp @@ -2646,6 +2646,28 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) case Item::writtenBook_Id: *piUse = IDS_TOOLTIPS_READ; break; + case Item::helmet_leather_Id: + case Item::helmet_chain_Id: + case Item::helmet_iron_Id: + case Item::helmet_gold_Id: + case Item::helmet_diamond_Id: + case Item::chestplate_leather_Id: + case Item::chestplate_chain_Id: + case Item::chestplate_iron_Id: + case Item::chestplate_gold_Id: + case Item::chestplate_diamond_Id: + case Item::leggings_leather_Id: + case Item::leggings_chain_Id: + case Item::leggings_iron_Id: + case Item::leggings_gold_Id: + case Item::leggings_diamond_Id: + case Item::boots_leather_Id: + case Item::boots_chain_Id: + case Item::boots_iron_Id: + case Item::boots_gold_Id: + case Item::boots_diamond_Id: + *piUse = IDS_TOOLTIPS_EQUIP; + break; } } diff --git a/Minecraft.Client/Model.cpp b/Minecraft.Client/Model.cpp index 63ba0c53..439cc2b7 100644 --- a/Minecraft.Client/Model.cpp +++ b/Minecraft.Client/Model.cpp @@ -6,7 +6,7 @@ Model::Model() { riding = false; - young=true; + young=false; //andi change texWidth=64; texHeight=32; } diff --git a/Minecraft.Client/ServerPlayerGameMode.cpp b/Minecraft.Client/ServerPlayerGameMode.cpp index ffba1501..5e622be4 100644 --- a/Minecraft.Client/ServerPlayerGameMode.cpp +++ b/Minecraft.Client/ServerPlayerGameMode.cpp @@ -324,6 +324,7 @@ bool ServerPlayerGameMode::useItem(shared_ptr player, Level *level, shar player->inventory->items[player->inventory->selected] = itemInstance; if (isCreative()) { + //if (!(Item::items[itemInstance->id]->getBaseItemType() == 7 || Item::items[itemInstance->id]->getBaseItemType() == 8 || Item::items[itemInstance->id]->getBaseItemType() == 9 || Item::items[itemInstance->id]->getBaseItemType() == 10)) itemInstance->count = oldCount; if (itemInstance->isDamageableItem()) itemInstance->setAuxValue(oldAux); } diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain1.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain1.ogg new file mode 100644 index 00000000..548ade93 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain1.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain2.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain2.ogg new file mode 100644 index 00000000..ba21390f Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain2.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain3.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain3.ogg new file mode 100644 index 00000000..5daf5671 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain3.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain4.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain4.ogg new file mode 100644 index 00000000..63d4cd32 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain4.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain5.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain5.ogg new file mode 100644 index 00000000..6919e7d0 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain5.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain6.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain6.ogg new file mode 100644 index 00000000..2a1a210b Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_chain6.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond1.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond1.ogg new file mode 100644 index 00000000..79d43b94 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond1.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond2.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond2.ogg new file mode 100644 index 00000000..5f71c986 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond2.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond3.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond3.ogg new file mode 100644 index 00000000..c5460e73 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond3.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond4.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond4.ogg new file mode 100644 index 00000000..e5adccad Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond4.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond5.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond5.ogg new file mode 100644 index 00000000..77d64980 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond5.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond6.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond6.ogg new file mode 100644 index 00000000..bfe499bb Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_diamond6.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic1.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic1.ogg new file mode 100644 index 00000000..7f7f78f7 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic1.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic2.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic2.ogg new file mode 100644 index 00000000..732f7819 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic2.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic3.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic3.ogg new file mode 100644 index 00000000..5d0fb173 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic3.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic4.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic4.ogg new file mode 100644 index 00000000..328a115d Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic4.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic5.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic5.ogg new file mode 100644 index 00000000..ee36a970 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic5.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic6.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic6.ogg new file mode 100644 index 00000000..fe2e9efc Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_generic6.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold1.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold1.ogg new file mode 100644 index 00000000..c0bd9c98 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold1.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold2.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold2.ogg new file mode 100644 index 00000000..3b60eb5c Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold2.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold3.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold3.ogg new file mode 100644 index 00000000..7844aa95 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold3.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold4.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold4.ogg new file mode 100644 index 00000000..333583b9 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold4.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold5.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold5.ogg new file mode 100644 index 00000000..c820ba3a Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold5.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold6.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold6.ogg new file mode 100644 index 00000000..21dbf985 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_gold6.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron1.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron1.ogg new file mode 100644 index 00000000..829b3eb3 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron1.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron2.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron2.ogg new file mode 100644 index 00000000..61dddefe Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron2.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron3.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron3.ogg new file mode 100644 index 00000000..0126098f Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron3.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron4.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron4.ogg new file mode 100644 index 00000000..7ac1a948 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron4.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron5.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron5.ogg new file mode 100644 index 00000000..a3a9d0e9 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron5.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron6.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron6.ogg new file mode 100644 index 00000000..1fdcb559 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_iron6.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather1.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather1.ogg new file mode 100644 index 00000000..8e93a287 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather1.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather2.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather2.ogg new file mode 100644 index 00000000..fd9bb6c5 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather2.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather3.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather3.ogg new file mode 100644 index 00000000..73ad511a Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather3.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather4.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather4.ogg new file mode 100644 index 00000000..234518e6 Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather4.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather5.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather5.ogg new file mode 100644 index 00000000..6e27779a Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather5.ogg differ diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather6.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather6.ogg new file mode 100644 index 00000000..a6bb8c1f Binary files /dev/null and b/Minecraft.Client/Windows64Media/Sound/Minecraft/item/armor/equip_leather6.ogg differ diff --git a/Minecraft.World/ArmorItem.cpp b/Minecraft.World/ArmorItem.cpp index 0bd6111b..51bf3def 100644 --- a/Minecraft.World/ArmorItem.cpp +++ b/Minecraft.World/ArmorItem.cpp @@ -1,4 +1,5 @@ #include "stdafx.h" +#include #include "../Minecraft.Client/Minecraft.h" #include "net.minecraft.world.h" #include "net.minecraft.world.level.tile.h" @@ -128,6 +129,54 @@ ArmorItem::ArmorItem(int id, const ArmorMaterial *armorType, int icon, int slot) DispenserTile::REGISTRY.add(this, new ArmorDispenseItemBehavior()); } +shared_ptr ArmorItem::use(shared_ptr instance, Level* level, shared_ptr player) { + int slot = Mob::getEquipmentSlotForItem(instance) - 1; + + // If player is in survival mode (not creative) + if (!player->abilities.instabuild) { // + // Equip the armor to the appropriate slot + ItemInstance copy = *instance->copy_not_shared(); + if (player->inventory->armor[slot] == nullptr) { + player->inventory->armor[slot] = make_shared(copy); + player->inventory->removeItemNoUpdate(player->inventory->selected); + // Remove the item from hand (set count to 0) + instance->count = 0; + } + else { + player->inventory->setItem(player->inventory->selected, player->inventory->armor[slot]); + player->inventory->armor[slot] = make_shared(copy); + } + } + else { + ItemInstance copy = *instance->copy_not_shared(); + if (player->inventory->armor[slot] == nullptr) { + player->inventory->armor[slot] = make_shared(copy); + } + else { + player->inventory->setItem(player->inventory->selected, player->inventory->armor[slot]); + player->inventory->armor[slot] = make_shared(copy); + } + } + + int material = Item::items[instance->id]->getMaterial(); + int lo, hi; + switch (material) { + case Item::eMaterial_cloth: lo = 194; hi = 199; break; + case Item::eMaterial_chain: lo = 200; hi = 205; break; + case Item::eMaterial_iron: lo = 206; hi = 211; break; + case Item::eMaterial_gold: lo = 212; hi = 217; break; + case Item::eMaterial_diamond: lo = 218; hi = 223; break; + default: lo = 224; hi = 229; break; + } + + std::mt19937 rng(std::random_device{}()); + std::uniform_int_distribution dist(lo, hi); + player->playSound(dist(rng), 0.5f, 1.0f); + + // Return the (now empty) instance + return instance; +} + int ArmorItem::getColor(shared_ptr item, int spriteLayer) { if (spriteLayer > 0) diff --git a/Minecraft.World/ArmorItem.h b/Minecraft.World/ArmorItem.h index 92a40aea..7d976aee 100644 --- a/Minecraft.World/ArmorItem.h +++ b/Minecraft.World/ArmorItem.h @@ -87,5 +87,7 @@ public: virtual bool isValidRepairItem(shared_ptr source, shared_ptr repairItem); virtual void registerIcons(IconRegister *iconRegister); + virtual shared_ptr use(shared_ptr instance, Level* level, shared_ptr player); + static Icon *getEmptyIcon(int slot); }; \ No newline at end of file diff --git a/Minecraft.World/SoundTypes.h b/Minecraft.World/SoundTypes.h index c577eb83..388cd43a 100644 --- a/Minecraft.World/SoundTypes.h +++ b/Minecraft.World/SoundTypes.h @@ -218,7 +218,47 @@ enum eSOUND_TYPE eSoundType_MOB_RABBIT_DEATH, eSoundType_MOB_RABBIT_HOP, + eSoundType_ITEM_ARMOR_equipLeather1, + eSoundType_ITEM_ARMOR_equipLeather2, + eSoundType_ITEM_ARMOR_equipLeather3, + eSoundType_ITEM_ARMOR_equipLeather4, + eSoundType_ITEM_ARMOR_equipLeather5, + eSoundType_ITEM_ARMOR_equipLeather6, + eSoundType_ITEM_ARMOR_equipChain1, + eSoundType_ITEM_ARMOR_equipChain2, + eSoundType_ITEM_ARMOR_equipChain3, + eSoundType_ITEM_ARMOR_equipChain4, + eSoundType_ITEM_ARMOR_equipChain5, + eSoundType_ITEM_ARMOR_equipChain6, + + eSoundType_ITEM_ARMOR_equipIron1, + eSoundType_ITEM_ARMOR_equipIron2, + eSoundType_ITEM_ARMOR_equipIron3, + eSoundType_ITEM_ARMOR_equipIron4, + eSoundType_ITEM_ARMOR_equipIron5, + eSoundType_ITEM_ARMOR_equipIron6, + + eSoundType_ITEM_ARMOR_equipGold1, + eSoundType_ITEM_ARMOR_equipGold2, + eSoundType_ITEM_ARMOR_equipGold3, + eSoundType_ITEM_ARMOR_equipGold4, + eSoundType_ITEM_ARMOR_equipGold5, + eSoundType_ITEM_ARMOR_equipGold6, + + eSoundType_ITEM_ARMOR_equipDiamond1, + eSoundType_ITEM_ARMOR_equipDiamond2, + eSoundType_ITEM_ARMOR_equipDiamond3, + eSoundType_ITEM_ARMOR_equipDiamond4, + eSoundType_ITEM_ARMOR_equipDiamond5, + eSoundType_ITEM_ARMOR_equipDiamond6, + + eSoundType_ITEM_ARMOR_equipGeneric1, + eSoundType_ITEM_ARMOR_equipGeneric2, + eSoundType_ITEM_ARMOR_equipGeneric3, + eSoundType_ITEM_ARMOR_equipGeneric4, + eSoundType_ITEM_ARMOR_equipGeneric5, + eSoundType_ITEM_ARMOR_equipGeneric6, eSoundType_MAX };