diff --git a/Minecraft.World/GenericStats.cpp b/Minecraft.World/GenericStats.cpp index 1fa90151..792c15d0 100644 --- a/Minecraft.World/GenericStats.cpp +++ b/Minecraft.World/GenericStats.cpp @@ -870,11 +870,6 @@ byteArray GenericStats::param_craftedEntity(eINSTANCEOF entityId) return instance->getParam_craftedEntity(entityId); } -byteArray GenericStats::param_shearedEntity(eINSTANCEOF entityId) -{ - return instance->getParam_shearedEntity(entityId); -} - byteArray GenericStats::param_time(int timediff) { return instance->getParam_time(timediff); diff --git a/Minecraft.World/GenericStats.h b/Minecraft.World/GenericStats.h index 541424db..dba7fa87 100644 --- a/Minecraft.World/GenericStats.h +++ b/Minecraft.World/GenericStats.h @@ -59,7 +59,6 @@ public: static Stat* tamedEntity(eINSTANCEOF entityId) { return instance->get_tamedEntity(entityId); } static Stat* curedEntity(eINSTANCEOF entityId) { return instance->get_curedEntity(entityId); } static Stat* craftedEntity(eINSTANCEOF entityId) { return instance->get_craftedEntity(entityId); } - static Stat* shearedEntity(eINSTANCEOF entityId) { return instance->get_shearedEntity(entityId); } static Stat* totalBlocksMined() { return instance->get_totalBlocksMined(); } static Stat* timePlayed() { return instance->get_timePlayed(); } @@ -168,7 +167,6 @@ public: static byteArray param_tamedEntity(eINSTANCEOF mobType); static byteArray param_curedEntity(eINSTANCEOF mobType); static byteArray param_craftedEntity(eINSTANCEOF mobType); - static byteArray param_shearedEntity(eINSTANCEOF mobType); static byteArray param_time(int timediff); diff --git a/Minecraft.World/Player.cpp b/Minecraft.World/Player.cpp index 806e5028..e5aa7765 100644 --- a/Minecraft.World/Player.cpp +++ b/Minecraft.World/Player.cpp @@ -1646,6 +1646,23 @@ void Player::attack(shared_ptr entity) entity->clearFire(); } } + if(entity->GetType()==eTYPE_SHEEP) + { + shared_ptr sheep = dynamic_pointer_cast(entity); + + if (!level->isClientSide && !sheep->isSheared() && !isBaby()) + { + sheep->setSheared(true); + int count = 1 + random->nextInt(3); + for (int i = 0; i < count; i++) + { + shared_ptr ie = spawnAtLocation(shared_ptr( new ItemInstance(Tile::cloth_Id, 1, sheep->getColor()) ), 1.0f); + ie->yd += random->nextFloat() * 0.05f; + ie->xd += (random->nextFloat() - random->nextFloat()) * 0.1f; + ie->zd += (random->nextFloat() - random->nextFloat()) * 0.1f; + } + } + } causeFoodExhaustion(FoodConstants::EXHAUSTION_ATTACK); } diff --git a/Minecraft.World/Sheep.cpp b/Minecraft.World/Sheep.cpp index 30eeefcd..037052ed 100644 --- a/Minecraft.World/Sheep.cpp +++ b/Minecraft.World/Sheep.cpp @@ -162,32 +162,6 @@ float Sheep::getHeadEatAngleScale(float a) bool Sheep::interact(shared_ptr player) { - shared_ptr item = player->inventory->getSelected(); - - // 4J-JEV: Fix for #88212, - // Untrusted players shouldn't be able to sheer sheep. - if (!player->isAllowedToInteract( shared_from_this() )) - return false; //Animal::interact(player); - - if (item != NULL && item->id == Item::shears->id && !isSheared() && !isBaby()) - { - if (!level->isClientSide) - { - setSheared(true); - int count = 1 + random->nextInt(3); - for (int i = 0; i < count; i++) - { - shared_ptr ie = spawnAtLocation(shared_ptr( new ItemInstance(Tile::cloth_Id, 1, getColor()) ), 1.0f); - ie->yd += random->nextFloat() * 0.05f; - ie->xd += (random->nextFloat() - random->nextFloat()) * 0.1f; - ie->zd += (random->nextFloat() - random->nextFloat()) * 0.1f; - } - - player->awardStat( GenericStats::shearedEntity(eTYPE_SHEEP), GenericStats::param_shearedEntity(eTYPE_SHEEP) ); - } - item->hurt(1, player); - } - return Animal::interact(player); } diff --git a/README.md b/README.md index 9f0ac270..a6703e4c 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Bringing the October 10th 2014 Source Leak back down to TU0 ## Added Features - [ ] Eat to Instantly Heal -- [ ] Punching Sheep for wool +- [x] Punching Sheep for wool ## Removed Structures - [ ] Abandoned Mineshafts