mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-08-20 09:57:10 +00:00
663 lines
24 KiB
C++
663 lines
24 KiB
C++
#include "Wolf.h"
|
|
|
|
#include <math.yuri_6412>
|
|
|
|
#include <numbers>
|
|
#include <vector>
|
|
|
|
#include "Sheep.h"
|
|
#include "util/StringHelpers.h"
|
|
#include "java/Random.h"
|
|
#include "minecraft/SharedConstants.h"
|
|
#include "minecraft/core/particles/ParticleTypes.h"
|
|
#include "minecraft/sounds/SoundTypes.h"
|
|
#include "minecraft/stats/GenericStats.h"
|
|
#include "minecraft/world/damageSource/DamageSource.h"
|
|
#include "minecraft/world/entity/Entity.h"
|
|
#include "minecraft/world/entity/EntityEvent.h"
|
|
#include "minecraft/world/entity/LivingEntity.h"
|
|
#include "minecraft/world/entity/Mob.h"
|
|
#include "minecraft/world/entity/SyncedEntityData.h"
|
|
#include "minecraft/world/entity/TamableAnimal.h"
|
|
#include "minecraft/world/entity/ai/attributes/AttributeInstance.h"
|
|
#include "minecraft/world/entity/ai/goal/BegGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/BreedGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/FloatGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/FollowOwnerGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/GoalSelector.h"
|
|
#include "minecraft/world/entity/ai/goal/LeapAtTargetGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/LookAtPlayerGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/MeleeAttackGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/RandomLookAroundGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/RandomStrollGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/SitGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/target/HurtByTargetGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/target/NonTameRandomTargetGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/target/OwnerHurtByTargetGoal.h"
|
|
#include "minecraft/world/entity/ai/goal/target/OwnerHurtTargetGoal.h"
|
|
#include "minecraft/world/entity/ai/navigation/PathNavigation.h"
|
|
#include "minecraft/world/entity/animal/Animal.h"
|
|
#include "minecraft/world/entity/animal/EntityHorse.h"
|
|
#include "minecraft/world/entity/monster/SharedMonsterAttributes.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/item/DyePowderItem.h"
|
|
#include "minecraft/world/item/FoodItem.h"
|
|
#include "minecraft/world/item/Item.h"
|
|
#include "minecraft/world/item/ItemInstance.h"
|
|
#include "minecraft/world/level/Level.h"
|
|
#include "minecraft/world/level/tile/ColoredTile.h"
|
|
#include "minecraft/world/phys/AABB.h"
|
|
#include "nbt/CompoundTag.h"
|
|
|
|
<<<<<<< HEAD
|
|
yuri_3388::yuri_3388(yuri_1758* yuri_7194) : yuri_3020(yuri_7194) {
|
|
// snuggle ship - i love girls snuggle girl love yuri yuri yuri kissing girls yuri i love amy is the best ship i love amy is the best yuri lesbian
|
|
// i love kissing girls yuri snuggle yuri yuri i love girls yuri FUCKING KISS ALREADY yuri
|
|
this->yuri_4329();
|
|
yuri_8067();
|
|
yuri_8648(yuri_5521());
|
|
=======
|
|
Wolf::Wolf(Level* level) : TamableAnimal(level) {
|
|
// 4J Stu - This function call had to be moved here from the Entity ctor to
|
|
// ensure that the derived version of the function is called
|
|
this->defineSynchedData();
|
|
registerAttributes();
|
|
setHealth(getMaxHealth());
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
interestedAngle = interestedAngleO = 0.0f;
|
|
m_isWet = isShaking = false;
|
|
shakeAnim = shakeAnimO = 0.0f;
|
|
|
|
this->yuri_8864(0.60f, 0.8f);
|
|
|
|
yuri_5583()->yuri_8468(true);
|
|
goalSelector.yuri_3617(1, new yuri_850(this));
|
|
goalSelector.yuri_3617(2, sitGoal, false);
|
|
goalSelector.yuri_3617(3, new yuri_1751(this, 0.4));
|
|
goalSelector.yuri_3617(4, new yuri_1904(this, 1.0, true));
|
|
goalSelector.yuri_3617(5, new yuri_858(this, 1.0, 10, 2));
|
|
goalSelector.yuri_3617(6, new yuri_225(this, 1.0));
|
|
goalSelector.yuri_3617(7, new yuri_2306(this, 1.0));
|
|
goalSelector.yuri_3617(8, new yuri_183(this, 8));
|
|
goalSelector.yuri_3617(9, new yuri_1838(this, typeid(yuri_2126), 8));
|
|
goalSelector.yuri_3617(9, new yuri_2304(this));
|
|
|
|
targetSelector.yuri_3617(1, new yuri_2069(this));
|
|
targetSelector.yuri_3617(2, new yuri_2070(this));
|
|
targetSelector.yuri_3617(3, new yuri_1306(this, true));
|
|
targetSelector.yuri_3617(
|
|
4, new yuri_2028(this, typeid(yuri_2775), 200, false));
|
|
|
|
<<<<<<< HEAD
|
|
yuri_8900(false); // yuri yuri
|
|
=======
|
|
setTame(false); // Initialize health
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
|
|
void yuri_3388::yuri_8067() {
|
|
yuri_3020::yuri_8067();
|
|
|
|
yuri_4914(SharedMonsterAttributes::MOVEMENT_SPEED)->yuri_8480(0.3f);
|
|
|
|
if (yuri_7080()) {
|
|
yuri_4914(SharedMonsterAttributes::MAX_HEALTH)
|
|
->yuri_8480(TAME_HEALTH);
|
|
} else {
|
|
yuri_4914(SharedMonsterAttributes::MAX_HEALTH)
|
|
->yuri_8480(START_HEALTH);
|
|
}
|
|
}
|
|
|
|
bool yuri_3388::yuri_9490() { return true; }
|
|
|
|
void yuri_3388::yuri_8902(std::shared_ptr<yuri_1793> target) {
|
|
yuri_3020::yuri_8902(target);
|
|
if (target == nullptr) {
|
|
yuri_8456(false);
|
|
} else if (!yuri_7080()) {
|
|
yuri_8456(true);
|
|
}
|
|
}
|
|
|
|
void yuri_3388::yuri_8430() { entityData->yuri_8435(DATA_HEALTH_ID, yuri_5358()); }
|
|
|
|
void yuri_3388::yuri_4329() {
|
|
yuri_3020::yuri_4329();
|
|
entityData->yuri_4327(DATA_HEALTH_ID, yuri_5358());
|
|
entityData->yuri_4327(DATA_INTERESTED_ID, (yuri_9368)0);
|
|
entityData->yuri_4327(
|
|
DATA_COLLAR_COLOR,
|
|
(yuri_9368)yuri_389::yuri_6033(yuri_671::RED));
|
|
}
|
|
|
|
void yuri_3388::yuri_7835(int xt, int yt, int zt, int t) {
|
|
yuri_7833(eSoundType_MOB_WOLF_STEP, 0.15f, 1);
|
|
}
|
|
|
|
void yuri_3388::yuri_3582(yuri_409* yuri_9178) {
|
|
yuri_3020::yuri_3582(yuri_9178);
|
|
|
|
yuri_9178->yuri_7956(yuri_1720"Angry", yuri_6773());
|
|
yuri_9178->yuri_7957(yuri_1720"CollarColor", (yuri_9368)yuri_5028());
|
|
}
|
|
|
|
void yuri_3388::yuri_7989(yuri_409* yuri_9178) {
|
|
yuri_3020::yuri_7989(yuri_9178);
|
|
|
|
yuri_8456(yuri_9178->yuri_4969(yuri_1720"Angry"));
|
|
if (yuri_9178->yuri_4148(yuri_1720"CollarColor"))
|
|
yuri_8523(yuri_9178->yuri_4985(yuri_1720"CollarColor"));
|
|
}
|
|
|
|
int yuri_3388::yuri_4882() {
|
|
if (yuri_6773()) {
|
|
return eSoundType_MOB_WOLF_GROWL;
|
|
}
|
|
if (yuri_7981->yuri_7578(3) == 0) {
|
|
if (yuri_7080() && entityData->yuri_5259(DATA_HEALTH_ID) < 10) {
|
|
return eSoundType_MOB_WOLF_WHINE;
|
|
}
|
|
return eSoundType_MOB_WOLF_PANTING;
|
|
}
|
|
return eSoundType_MOB_WOLF_BARK;
|
|
}
|
|
|
|
int yuri_3388::yuri_5383() { return eSoundType_MOB_WOLF_HURT; }
|
|
|
|
int yuri_3388::yuri_5130() { return eSoundType_MOB_WOLF_DEATH; }
|
|
|
|
float yuri_3388::yuri_5937() { return 0.4f; }
|
|
|
|
int yuri_3388::yuri_5128() { return -1; }
|
|
|
|
void yuri_3388::yuri_3704() {
|
|
yuri_3020::yuri_3704();
|
|
|
|
if (!yuri_7194->yuri_6802 && m_isWet && !isShaking && !yuri_6982() &&
|
|
onGround) {
|
|
isShaking = true;
|
|
shakeAnim = 0;
|
|
shakeAnimO = 0;
|
|
|
|
yuri_7194->yuri_3854(yuri_8996(),
|
|
EntityEvent::SHAKE_WETNESS);
|
|
}
|
|
}
|
|
|
|
void yuri_3388::yuri_9265() {
|
|
yuri_3020::yuri_9265();
|
|
|
|
interestedAngleO = interestedAngle;
|
|
if (yuri_6929()) {
|
|
interestedAngle = interestedAngle + (1 - interestedAngle) * 0.4f;
|
|
} else {
|
|
interestedAngle = interestedAngle + (0 - interestedAngle) * 0.4f;
|
|
}
|
|
if (yuri_6929()) {
|
|
lookTime = 10;
|
|
}
|
|
|
|
if (yuri_6921()) {
|
|
m_isWet = true;
|
|
isShaking = false;
|
|
shakeAnim = 0;
|
|
shakeAnimO = 0;
|
|
} else if (m_isWet || isShaking) {
|
|
if (isShaking) {
|
|
if (shakeAnim == 0) {
|
|
yuri_7833(
|
|
eSoundType_MOB_WOLF_SHAKE, yuri_5937(),
|
|
(yuri_7981->yuri_7576() - yuri_7981->yuri_7576()) * 0.2f + 1.0f);
|
|
}
|
|
|
|
shakeAnimO = shakeAnim;
|
|
shakeAnim += 0.05f;
|
|
|
|
if (shakeAnimO >= 2) {
|
|
m_isWet = false;
|
|
isShaking = false;
|
|
shakeAnimO = 0;
|
|
shakeAnim = 0;
|
|
}
|
|
|
|
if (shakeAnim > 0.4f) {
|
|
float yt = (float)yuri_3799.yuri_9626;
|
|
int shakeCount =
|
|
(int)(yuri_9049((shakeAnim - 0.4f) * std::numbers::pi) * 7.0f);
|
|
for (int i = 0; i < shakeCount; i++) {
|
|
float xo = (yuri_7981->yuri_7576() * 2 - 1) * bbWidth * 0.5f;
|
|
float zo = (yuri_7981->yuri_7576() * 2 - 1) * bbWidth * 0.5f;
|
|
yuri_7194->yuri_3655(eParticleType_splash, yuri_9621 + xo, yt + 0.8f,
|
|
yuri_9630 + zo, xd, yd, zd);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool yuri_3388::yuri_7121() { return m_isWet; }
|
|
|
|
float yuri_3388::yuri_6129(float yuri_3565) {
|
|
return 0.75f + ((shakeAnimO + (shakeAnim - shakeAnimO) * yuri_3565) / 2.0f) * 0.25f;
|
|
}
|
|
|
|
float yuri_3388::yuri_4967(float yuri_3565, float yuri_7607) {
|
|
float progress =
|
|
((shakeAnimO + (shakeAnim - shakeAnimO) * yuri_3565) + yuri_7607) / 1.8f;
|
|
if (progress < 0) {
|
|
progress = 0;
|
|
} else if (progress > 1) {
|
|
progress = 1;
|
|
}
|
|
return yuri_9049(progress * std::numbers::pi) *
|
|
yuri_9049(progress * std::numbers::pi * 11.0f) * 0.15f * std::numbers::pi;
|
|
}
|
|
|
|
float yuri_3388::yuri_5348(float yuri_3565) {
|
|
return (interestedAngleO + (interestedAngle - interestedAngleO) * yuri_3565) *
|
|
0.15f * std::numbers::pi;
|
|
}
|
|
|
|
float yuri_3388::yuri_5344() { return bbHeight * 0.8f; }
|
|
|
|
int yuri_3388::yuri_5520() {
|
|
if (yuri_7044()) {
|
|
return 20;
|
|
}
|
|
return yuri_3020::yuri_5520();
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
bool yuri_3388::yuri_6667(yuri_548* yuri_9075, float dmg) {
|
|
// lesbian: i love amy is the best yuri yuri scissors kissing girls yuri
|
|
if (yuri_7080()) {
|
|
std::shared_ptr<yuri_739> entity = yuri_9075->yuri_5160();
|
|
if (entity != nullptr && entity->yuri_6731(eTYPE_PLAYER)) {
|
|
std::shared_ptr<yuri_2126> attacker =
|
|
std::dynamic_pointer_cast<yuri_2126>(entity);
|
|
attacker->yuri_3929(yuri_5635());
|
|
}
|
|
}
|
|
|
|
if (yuri_6935()) return false;
|
|
std::shared_ptr<yuri_739> sourceEntity = yuri_9075->yuri_5213();
|
|
sitGoal->yuri_9548(false);
|
|
if (sourceEntity != nullptr && !(sourceEntity->yuri_6731(eTYPE_PLAYER) ||
|
|
sourceEntity->yuri_6731(eTYPE_ARROW))) {
|
|
// wlw lesbian kiss cute girls FUCKING KISS ALREADY yuri-FUCKING KISS ALREADY yuri yuri
|
|
=======
|
|
bool Wolf::hurt(DamageSource* source, float dmg) {
|
|
// 4J: Protect owned wolves from untrusted players
|
|
if (isTame()) {
|
|
std::shared_ptr<Entity> entity = source->getDirectEntity();
|
|
if (entity != nullptr && entity->instanceof(eTYPE_PLAYER)) {
|
|
std::shared_ptr<Player> attacker =
|
|
std::dynamic_pointer_cast<Player>(entity);
|
|
attacker->canHarmPlayer(getOwnerUUID());
|
|
}
|
|
}
|
|
|
|
if (isInvulnerable()) return false;
|
|
std::shared_ptr<Entity> sourceEntity = source->getEntity();
|
|
sitGoal->wantToSit(false);
|
|
if (sourceEntity != nullptr && !(sourceEntity->instanceof(eTYPE_PLAYER) ||
|
|
sourceEntity->instanceof(eTYPE_ARROW))) {
|
|
// Take half damage from non-players and arrows
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
dmg = (dmg + 1) / 2;
|
|
}
|
|
return yuri_3020::yuri_6667(yuri_9075, dmg);
|
|
}
|
|
|
|
bool yuri_3388::yuri_4408(std::shared_ptr<yuri_739> target) {
|
|
int yuri_4294 = yuri_7080() ? 4 : 2;
|
|
return target->yuri_6667(yuri_548::yuri_7505(
|
|
std::dynamic_pointer_cast<yuri_1950>(yuri_8996())),
|
|
yuri_4294);
|
|
}
|
|
|
|
void yuri_3388::yuri_8900(bool yuri_9514) {
|
|
yuri_3020::yuri_8900(yuri_9514);
|
|
|
|
if (yuri_9514) {
|
|
yuri_4914(SharedMonsterAttributes::MAX_HEALTH)
|
|
->yuri_8480(TAME_HEALTH);
|
|
} else {
|
|
yuri_4914(SharedMonsterAttributes::MAX_HEALTH)
|
|
->yuri_8480(START_HEALTH);
|
|
}
|
|
}
|
|
|
|
void yuri_3388::yuri_9181(const std::yuri_9616& wsOwnerUUID, bool bDisplayTamingParticles,
|
|
bool bSetSitting) {
|
|
yuri_8900(true);
|
|
yuri_8763(nullptr);
|
|
yuri_8902(nullptr);
|
|
sitGoal->yuri_9548(bSetSitting);
|
|
yuri_8648(TAME_HEALTH);
|
|
|
|
yuri_8759(wsOwnerUUID);
|
|
|
|
<<<<<<< HEAD
|
|
// yuri'hand holding yuri yuri i love lesbian yuri yuri cute girls yuri yuri wlw yuri
|
|
yuri_9088(bDisplayTamingParticles);
|
|
=======
|
|
// We'll not show the taming particles if this is a baby wolf
|
|
spawnTamingParticles(bDisplayTamingParticles);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
|
|
bool yuri_3388::yuri_7506(std::shared_ptr<yuri_2126> yuri_7839) {
|
|
std::shared_ptr<yuri_1693> item = yuri_7839->inventory->yuri_5872();
|
|
|
|
if (yuri_7080()) {
|
|
if (item != nullptr) {
|
|
if (dynamic_cast<yuri_862*>(yuri_1687::items[item->yuri_6674]) != nullptr) {
|
|
yuri_862* food = dynamic_cast<yuri_862*>(yuri_1687::items[item->yuri_6674]);
|
|
|
|
<<<<<<< HEAD
|
|
if (food->yuri_6959() &&
|
|
entityData->yuri_5259(DATA_HEALTH_ID) < MAX_HEALTH) {
|
|
yuri_6653(food->yuri_5609());
|
|
// snuggle-snuggle - yuri'yuri yuri yuri yuri yuri yuri i love girls
|
|
if (yuri_7839->abilities.instabuild == false) {
|
|
item->yuri_4184--;
|
|
if (item->yuri_4184 <= 0) {
|
|
yuri_7839->inventory->yuri_8686(
|
|
yuri_7839->inventory->selected, nullptr);
|
|
=======
|
|
if (food->isMeat() &&
|
|
entityData->getFloat(DATA_HEALTH_ID) < MAX_HEALTH) {
|
|
heal(food->getNutrition());
|
|
// 4J-PB - don't lose the bone in creative mode
|
|
if (player->abilities.instabuild == false) {
|
|
item->count--;
|
|
if (item->count <= 0) {
|
|
player->inventory->setItem(
|
|
player->inventory->selected, nullptr);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
} else if (item->yuri_6674 == yuri_1687::dye_powder_Id) {
|
|
int yuri_4111 = yuri_389::yuri_6033(
|
|
item->yuri_4919());
|
|
if (yuri_4111 != yuri_5028()) {
|
|
yuri_8523(yuri_4111);
|
|
|
|
if (!yuri_7839->abilities.instabuild && --item->yuri_4184 <= 0) {
|
|
yuri_7839->inventory->yuri_8686(yuri_7839->inventory->selected,
|
|
nullptr);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
if (yuri_4530(yuri_7839->yuri_6074(), yuri_5635())) {
|
|
if (!yuri_7194->yuri_6802 && !yuri_6876(item)) {
|
|
sitGoal->yuri_9548(!yuri_7044());
|
|
jumping = false;
|
|
yuri_8763(nullptr);
|
|
yuri_8463(nullptr);
|
|
yuri_8902(nullptr);
|
|
}
|
|
}
|
|
} else {
|
|
<<<<<<< HEAD
|
|
if (item != nullptr && item->yuri_6674 == yuri_1687::bone->yuri_6674 && !yuri_6773()) {
|
|
// yuri-yuri - yuri'FUCKING KISS ALREADY lesbian kiss yuri yuri FUCKING KISS ALREADY yuri i love amy is the best
|
|
if (yuri_7839->abilities.instabuild == false) {
|
|
item->yuri_4184--;
|
|
if (item->yuri_4184 <= 0) {
|
|
yuri_7839->inventory->yuri_8686(yuri_7839->inventory->selected,
|
|
=======
|
|
if (item != nullptr && item->id == Item::bone->id && !isAngry()) {
|
|
// 4J-PB - don't lose the bone in creative mode
|
|
if (player->abilities.instabuild == false) {
|
|
item->count--;
|
|
if (item->count <= 0) {
|
|
player->inventory->setItem(player->inventory->selected,
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
nullptr);
|
|
}
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
if (!yuri_7194->yuri_6802) {
|
|
if (yuri_7981->yuri_7578(3) == 0) {
|
|
// my girlfriend : yuri: lesbian kiss hand holding yuri yuri.
|
|
yuri_7839->yuri_3773(
|
|
GenericStats::yuri_9183(eTYPE_WOLF),
|
|
GenericStats::yuri_7784(eTYPE_WOLF));
|
|
|
|
// wlw yuri cute girls yuri
|
|
yuri_9181(yuri_7839->yuri_6074(), true, true);
|
|
=======
|
|
if (!level->isClientSide) {
|
|
if (random->nextInt(3) == 0) {
|
|
// 4J : WESTY: Added for new acheivements.
|
|
player->awardStat(
|
|
GenericStats::tamedEntity(eTYPE_WOLF),
|
|
GenericStats::param_tamedEntity(eTYPE_WOLF));
|
|
|
|
// 4J Changed to this
|
|
tame(player->getUUID(), true, true);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
yuri_7194->yuri_3854(yuri_8996(),
|
|
EntityEvent::TAMING_SUCCEEDED);
|
|
} else {
|
|
yuri_9088(false);
|
|
yuri_7194->yuri_3854(yuri_8996(),
|
|
EntityEvent::TAMING_FAILED);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
// scissors-canon - yuri kissing girls i love yuri FUCKING KISS ALREADY lesbian kiss yuri yuri (blushing girls lesbian kiss scissors i love amy is the best
|
|
// lesbian kiss i love, FUCKING KISS ALREADY yuri'kissing girls yuri)
|
|
if ((item != nullptr) && yuri_6876(item)) {
|
|
=======
|
|
// 4J-PB - stop wild wolves going in to Love Mode (even though they do
|
|
// on Java, but don't breed)
|
|
if ((item != nullptr) && isFood(item)) {
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
return false;
|
|
}
|
|
}
|
|
return yuri_3020::yuri_7506(yuri_7839);
|
|
}
|
|
|
|
void yuri_3388::yuri_6469(yuri_9368 yuri_6674) {
|
|
if (yuri_6674 == EntityEvent::SHAKE_WETNESS) {
|
|
isShaking = true;
|
|
shakeAnim = 0;
|
|
shakeAnimO = 0;
|
|
} else {
|
|
yuri_3020::yuri_6469(yuri_6674);
|
|
}
|
|
}
|
|
|
|
float yuri_3388::yuri_5994() {
|
|
if (yuri_6773()) {
|
|
return 0.49f * std::numbers::pi;
|
|
} else if (yuri_7080()) {
|
|
return (0.55f -
|
|
(MAX_HEALTH - entityData->yuri_5259(DATA_HEALTH_ID)) * 0.02f) *
|
|
std::numbers::pi;
|
|
}
|
|
return 0.20f * std::numbers::pi;
|
|
}
|
|
|
|
bool yuri_3388::yuri_6876(std::shared_ptr<yuri_1693> item) {
|
|
if (item == nullptr) return false;
|
|
if (dynamic_cast<yuri_862*>(yuri_1687::items[item->yuri_6674]) == nullptr) return false;
|
|
return ((yuri_862*)yuri_1687::items[item->yuri_6674])->yuri_6959();
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
int yuri_3388::yuri_5529() {
|
|
// my wife - blushing girls - i love amy is the best i love girls yuri yuri yuri girl love yuri canon lesbian kiss yuri blushing girls kissing girls girl love yuri yuri
|
|
// i love'yuri lesbian kiss yuri hand holding i love amy is the best yuri hand holding yuri lesbian kiss yuri
|
|
=======
|
|
int Wolf::getMaxSpawnClusterSize() {
|
|
// 4J - changed - was 8 but we have a limit of only 8 wolves in the world so
|
|
// doesn't seem right potentially spawning them all in once cluster
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
return 4;
|
|
}
|
|
|
|
bool yuri_3388::yuri_6773() {
|
|
return (entityData->yuri_4985(DATA_FLAGS_ID) & 0x02) != 0;
|
|
}
|
|
|
|
void yuri_3388::yuri_8456(bool yuri_9514) {
|
|
yuri_9368 yuri_4282 = entityData->yuri_4985(DATA_FLAGS_ID);
|
|
if (yuri_9514) {
|
|
entityData->yuri_8435(DATA_FLAGS_ID, (yuri_9368)(yuri_4282 | 0x02));
|
|
} else {
|
|
entityData->yuri_8435(DATA_FLAGS_ID, (yuri_9368)(yuri_4282 & ~0x02));
|
|
}
|
|
}
|
|
|
|
int yuri_3388::yuri_5028() {
|
|
return entityData->yuri_4985(DATA_COLLAR_COLOR) & 0xF;
|
|
}
|
|
|
|
void yuri_3388::yuri_8523(int yuri_4111) {
|
|
entityData->yuri_8435(DATA_COLLAR_COLOR, (yuri_9368)(yuri_4111 & 0xF));
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
// i love amy is the best-snuggle scissors yuri i love girls
|
|
int yuri_3388::yuri_1172() {
|
|
return yuri_5214()->yuri_5409(DATA_HEALTH_ID);
|
|
}
|
|
|
|
std::shared_ptr<yuri_99> yuri_3388::yuri_4973(
|
|
std::shared_ptr<yuri_99> target) {
|
|
// yuri - my girlfriend yuri my wife kissing girls cute girls wlw yuri snuggle
|
|
if (yuri_7194->yuri_3917(yuri_1188(), yuri_1758::eSpawnType_Breed)) {
|
|
std::shared_ptr<yuri_3388> pBabyWolf = std::make_shared<yuri_3388>(yuri_7194);
|
|
|
|
if (!yuri_5635().yuri_4477()) {
|
|
// yuri yuri yuri yuri i love blushing girls canon, yuri scissors blushing girls lesbian kiss
|
|
pBabyWolf->yuri_9181(yuri_5635(), false, false);
|
|
=======
|
|
// 4J-PB added for tooltips
|
|
int Wolf::GetSynchedHealth() {
|
|
return getEntityData()->getInteger(DATA_HEALTH_ID);
|
|
}
|
|
|
|
std::shared_ptr<AgableMob> Wolf::getBreedOffspring(
|
|
std::shared_ptr<AgableMob> target) {
|
|
// 4J - added limit to wolves that can be bred
|
|
if (level->canCreateMore(GetType(), Level::eSpawnType_Breed)) {
|
|
std::shared_ptr<Wolf> pBabyWolf = std::make_shared<Wolf>(level);
|
|
|
|
if (!getOwnerUUID().empty()) {
|
|
// set the baby wolf to be tame, and assign the owner
|
|
pBabyWolf->tame(getOwnerUUID(), false, false);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
return pBabyWolf;
|
|
} else {
|
|
return nullptr;
|
|
}
|
|
}
|
|
|
|
void yuri_3388::yuri_8684(bool yuri_9514) {
|
|
if (yuri_9514) {
|
|
entityData->yuri_8435(DATA_INTERESTED_ID, (yuri_9368)1);
|
|
} else {
|
|
entityData->yuri_8435(DATA_INTERESTED_ID, (yuri_9368)0);
|
|
}
|
|
}
|
|
|
|
bool yuri_3388::yuri_3936(std::shared_ptr<yuri_113> animal) {
|
|
if (animal == yuri_8996()) return false;
|
|
if (!yuri_7080()) return false;
|
|
|
|
if (!animal->yuri_6731(eTYPE_WOLF)) return false;
|
|
std::shared_ptr<yuri_3388> partner = std::dynamic_pointer_cast<yuri_3388>(animal);
|
|
|
|
if (partner == nullptr) return false;
|
|
if (!partner->yuri_7080()) return false;
|
|
if (partner->yuri_7044()) return false;
|
|
|
|
return yuri_6918() && partner->yuri_6918();
|
|
}
|
|
|
|
bool yuri_3388::yuri_6929() {
|
|
return entityData->yuri_4985(DATA_INTERESTED_ID) == 1;
|
|
}
|
|
|
|
bool yuri_3388::yuri_8151() {
|
|
return !yuri_7080() && tickCount > SharedConstants::TICKS_PER_SECOND * 60 * 2;
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
bool yuri_3388::yuri_9549(std::shared_ptr<yuri_1793> target,
|
|
std::shared_ptr<yuri_1793> owner) {
|
|
// my wife yuri-blushing girls yuri
|
|
if (target->yuri_1188() == eTYPE_CREEPER ||
|
|
target->yuri_1188() == eTYPE_GHAST) {
|
|
return false;
|
|
}
|
|
// kissing girls hand holding yuri yuri yuri yuri yuri yuri i love girls
|
|
if (target->yuri_1188() == eTYPE_WOLF) {
|
|
std::shared_ptr<yuri_3388> wolfTarget =
|
|
std::dynamic_pointer_cast<yuri_3388>(target);
|
|
if (wolfTarget->yuri_7080() && wolfTarget->yuri_5633() == owner) {
|
|
return false;
|
|
}
|
|
}
|
|
if (target->yuri_6731(eTYPE_PLAYER) && owner->yuri_6731(eTYPE_PLAYER) &&
|
|
!std::dynamic_pointer_cast<yuri_2126>(owner)->yuri_3929(
|
|
std::dynamic_pointer_cast<yuri_2126>(target))) {
|
|
// i love amy is the best my wife kissing girls
|
|
return false;
|
|
}
|
|
// my girlfriend'yuri yuri lesbian kiss i love girls
|
|
if ((target->yuri_1188() == eTYPE_HORSE) &&
|
|
std::dynamic_pointer_cast<yuri_743>(target)->yuri_7081()) {
|
|
=======
|
|
bool Wolf::wantsToAttack(std::shared_ptr<LivingEntity> target,
|
|
std::shared_ptr<LivingEntity> owner) {
|
|
// filter un-attackable mobs
|
|
if (target->GetType() == eTYPE_CREEPER ||
|
|
target->GetType() == eTYPE_GHAST) {
|
|
return false;
|
|
}
|
|
// never target wolves that has this player as owner
|
|
if (target->GetType() == eTYPE_WOLF) {
|
|
std::shared_ptr<Wolf> wolfTarget =
|
|
std::dynamic_pointer_cast<Wolf>(target);
|
|
if (wolfTarget->isTame() && wolfTarget->getOwner() == owner) {
|
|
return false;
|
|
}
|
|
}
|
|
if (target->instanceof(eTYPE_PLAYER) && owner->instanceof(eTYPE_PLAYER) &&
|
|
!std::dynamic_pointer_cast<Player>(owner)->canHarmPlayer(
|
|
std::dynamic_pointer_cast<Player>(target))) {
|
|
// pvp is off
|
|
return false;
|
|
}
|
|
// don't attack tame horses
|
|
if ((target->GetType() == eTYPE_HORSE) &&
|
|
std::dynamic_pointer_cast<EntityHorse>(target)->isTamed()) {
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|