the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 85 lines 2.8 kB view raw
1#include "stdafx.h" 2#include "net.minecraft.world.level.h" 3#include "net.minecraft.world.level.tile.h" 4#include "net.minecraft.world.item.h" 5#include "net.minecraft.world.entity.player.h" 6#include "net.minecraft.world.entity.item.h" 7#include "..\Minecraft.Client\Textures.h" 8#include "MushroomCow.h" 9#include "MobCategory.h" 10#include "AABB.h" 11 12 13 14MushroomCow::MushroomCow(Level *level) : Cow(level) 15{ 16 // 4J Stu - This function call had to be moved here from the Entity ctor to ensure that 17 // the derived version of the function is called 18 this->defineSynchedData(); 19 setHealth(getMaxHealth()); 20 21 this->setSize(0.9f, 1.3f); 22} 23 24bool MushroomCow::mobInteract(shared_ptr<Player> player) 25{ 26 shared_ptr<ItemInstance> item = player->inventory->getSelected(); 27 if (item != NULL && item->id == Item::bowl_Id && getAge() >= 0) 28 { 29 if (item->count == 1) 30 { 31 player->inventory->setItem(player->inventory->selected, shared_ptr<ItemInstance>( new ItemInstance(Item::mushroomStew) ) ); 32 return true; 33 } 34 35 if (player->inventory->add(shared_ptr<ItemInstance>(new ItemInstance(Item::mushroomStew))) && !player->abilities.instabuild) 36 { 37 player->inventory->removeItem(player->inventory->selected, 1); 38 return true; 39 } 40 } 41 // 4J: Do not allow shearing if we can't create more cows 42 if (item != NULL && item->id == Item::shears_Id && getAge() >= 0 && level->canCreateMore(eTYPE_COW, Level::eSpawnType_Breed)) 43 { 44 remove(); 45 level->addParticle(eParticleType_largeexplode, x, y + bbHeight / 2, z, 0, 0, 0); 46 if(!level->isClientSide) 47 { 48 remove(); 49 shared_ptr<Cow> cow = shared_ptr<Cow>( new Cow(level) ); 50 cow->moveTo(x, y, z, yRot, xRot); 51 cow->setHealth(getHealth()); 52 cow->yBodyRot = yBodyRot; 53 level->addEntity(cow); 54 for (int i = 0; i < 5; i++) 55 { 56 level->addEntity( shared_ptr<ItemEntity>( new ItemEntity(level, x, y + bbHeight, z, shared_ptr<ItemInstance>( new ItemInstance(Tile::mushroom_red))) )); 57 } 58 return true; 59 } 60 return true; 61 } 62 return Cow::mobInteract(player); 63} 64 65// 4J - added so that mushroom cows have more of a chance of spawning, they can now spawn on mycelium as well as grass - seems a bit odd that they don't already really 66bool MushroomCow::canSpawn() 67{ 68 int xt = Mth::floor(x); 69 int yt = Mth::floor(bb->y0); 70 int zt = Mth::floor(z); 71 return ( level->getTile(xt, yt - 1, zt) == Tile::grass_Id || level->getTile(xt, yt - 1, zt) == Tile::mycel_Id ) && level->getDaytimeRawBrightness(xt, yt, zt) > 8 && PathfinderMob::canSpawn(); 72} 73 74shared_ptr<AgableMob> MushroomCow::getBreedOffspring(shared_ptr<AgableMob> target) 75{ 76 // 4J - added limit to number of animals that can be bred 77 if( level->canCreateMore( GetType(), Level::eSpawnType_Breed) ) 78 { 79 return shared_ptr<MushroomCow>( new MushroomCow(level) ); 80 } 81 else 82 { 83 return nullptr; 84 } 85}