mirror of
https://github.com/neoStudiosLCE/neoLegacy.git
synced 2026-08-20 09:57:09 +00:00
implement la's TU22 patch file
This commit is contained in:
parent
f255035afd
commit
beec56d3be
|
|
@ -241,7 +241,7 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
|
|
||||||
if (riding)
|
if (riding)
|
||||||
{
|
{
|
||||||
if(uiBitmaskOverrideAnim&(1<<eAnim_SmallModel) == 0)
|
if ((uiBitmaskOverrideAnim&(1<<eAnim_SmallModel)) == 0)
|
||||||
{
|
{
|
||||||
arm0->xRot += -HALF_PI * 0.4f;
|
arm0->xRot += -HALF_PI * 0.4f;
|
||||||
arm1->xRot += -HALF_PI * 0.4f;
|
arm1->xRot += -HALF_PI * 0.4f;
|
||||||
|
|
@ -256,6 +256,8 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
arm1->xRot += -HALF_PI * 0.4f;
|
arm1->xRot += -HALF_PI * 0.4f;
|
||||||
leg0->xRot = -HALF_PI * 0.4f;
|
leg0->xRot = -HALF_PI * 0.4f;
|
||||||
leg1->xRot = -HALF_PI * 0.4f;
|
leg1->xRot = -HALF_PI * 0.4f;
|
||||||
|
leg0->yRot = HALF_PI * 0.2f;
|
||||||
|
leg1->yRot = -HALF_PI * 0.2f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(idle && !sneaking )
|
else if(idle && !sneaking )
|
||||||
|
|
|
||||||
|
|
@ -501,7 +501,7 @@ void LivingEntityRenderer::renderNameTag(shared_ptr<LivingEntity> mob, const wst
|
||||||
constexpr float s = 1 / 60.0f * size;
|
constexpr float s = 1 / 60.0f * size;
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(static_cast<float>(x) + 0, static_cast<float>(y) + mob->bbHeight + 0.5f, static_cast<float>(z));
|
glTranslatef(static_cast<float>(x), static_cast<float>(y) + mob->bbHeight + 0.5f, static_cast<float>(z));
|
||||||
glNormal3f(0, 1, 0);
|
glNormal3f(0, 1, 0);
|
||||||
|
|
||||||
glRotatef(-this->entityRenderDispatcher->playerRotY, 0, 1, 0);
|
glRotatef(-this->entityRenderDispatcher->playerRotY, 0, 1, 0);
|
||||||
|
|
|
||||||
|
|
@ -3142,14 +3142,15 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
|
||||||
{
|
{
|
||||||
*piUse=IDS_TOOLTIPS_UNLEASH;
|
*piUse=IDS_TOOLTIPS_UNLEASH;
|
||||||
}
|
}
|
||||||
else if (heldItemId == Item::lead_Id)
|
// 4J: fix improper tooltips for TU20
|
||||||
|
/*else if (heldItemId == Item::lead_Id)
|
||||||
{
|
{
|
||||||
if (!pig->isLeashed()) *piUse=IDS_TOOLTIPS_LEASH;
|
if (!pig->isLeashed()) *piUse=IDS_TOOLTIPS_LEASH;
|
||||||
}
|
}
|
||||||
else if (heldItemId == Item::nameTag_Id)
|
else if (heldItemId == Item::nameTag_Id)
|
||||||
{
|
{
|
||||||
*piUse = IDS_TOOLTIPS_NAME;
|
*piUse = IDS_TOOLTIPS_NAME;
|
||||||
}
|
}*/
|
||||||
else if (pig->hasSaddle()) // does the pig have a saddle?
|
else if (pig->hasSaddle()) // does the pig have a saddle?
|
||||||
{
|
{
|
||||||
*piUse=IDS_TOOLTIPS_MOUNT;
|
*piUse=IDS_TOOLTIPS_MOUNT;
|
||||||
|
|
|
||||||
|
|
@ -470,7 +470,7 @@ void PlayerRenderer::additionalRendering(shared_ptr<LivingEntity> _mob, float a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerRenderer::renderNameTags(shared_ptr<LivingEntity> player, double x, double y, double z, wstring msg, float scale, double dist)
|
void PlayerRenderer::renderNameTags(shared_ptr<LivingEntity> player, double x, double y, double z, const wstring &msg, float scale, double dist)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
if (dist < 10 * 10)
|
if (dist < 10 * 10)
|
||||||
|
|
@ -496,7 +496,17 @@ void PlayerRenderer::renderNameTags(shared_ptr<LivingEntity> player, double x, d
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LivingEntityRenderer::renderNameTags(player, x, y, z, msg, scale, dist);
|
shared_ptr<Player> pPlayer = dynamic_pointer_cast<Player>(player);
|
||||||
|
int color = getNametagColour(pPlayer->getPlayerIndex());
|
||||||
|
|
||||||
|
if (player->isSleeping())
|
||||||
|
{
|
||||||
|
renderNameTag(player, msg, x, y - 1.5f, z, 64, color);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
renderNameTag(player, msg, x, y, z, 64, color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerRenderer::scale(shared_ptr<LivingEntity> player, float a)
|
void PlayerRenderer::scale(shared_ptr<LivingEntity> player, float a)
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void additionalRendering(shared_ptr<LivingEntity> _mob, float a);
|
virtual void additionalRendering(shared_ptr<LivingEntity> _mob, float a);
|
||||||
void renderNameTags(shared_ptr<LivingEntity> player, double x, double y, double z, wstring msg, float scale, double dist);
|
void renderNameTags(shared_ptr<LivingEntity> player, double x, double y, double z, const wstring &msg, float scale, double dist);
|
||||||
|
|
||||||
virtual void scale(shared_ptr<LivingEntity> _player, float a);
|
virtual void scale(shared_ptr<LivingEntity> _player, float a);
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -221,6 +221,12 @@ void Animal::readAdditionalSaveData(CompoundTag *tag)
|
||||||
setDespawnProtected();
|
setDespawnProtected();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Animal::dropLeash(bool synch, bool createItemDrop)
|
||||||
|
{
|
||||||
|
setDespawnProtected();
|
||||||
|
Mob::dropLeash(synch, createItemDrop);
|
||||||
|
}
|
||||||
|
|
||||||
shared_ptr<Entity> Animal::findAttackTarget()
|
shared_ptr<Entity> Animal::findAttackTarget()
|
||||||
{
|
{
|
||||||
if (fleeTime > 0) return nullptr;
|
if (fleeTime > 0) return nullptr;
|
||||||
|
|
@ -301,7 +307,7 @@ int Animal::getAmbientSoundInterval()
|
||||||
|
|
||||||
bool Animal::removeWhenFarAway()
|
bool Animal::removeWhenFarAway()
|
||||||
{
|
{
|
||||||
return !isDespawnProtected(); // 4J changed - was false
|
return !hasCustomName() && !isLeashed() && !isDespawnProtected();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Animal::getExperienceReward(shared_ptr<Player> killedBy)
|
int Animal::getExperienceReward(shared_ptr<Player> killedBy)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ public:
|
||||||
virtual bool hurt(DamageSource *source, float dmg);
|
virtual bool hurt(DamageSource *source, float dmg);
|
||||||
virtual void addAdditonalSaveData(CompoundTag *tag);
|
virtual void addAdditonalSaveData(CompoundTag *tag);
|
||||||
virtual void readAdditionalSaveData(CompoundTag *tag);
|
virtual void readAdditionalSaveData(CompoundTag *tag);
|
||||||
|
virtual void dropLeash(bool synch, bool createItemDrop);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual shared_ptr<Entity> findAttackTarget();
|
virtual shared_ptr<Entity> findAttackTarget();
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,14 @@ HtmlString AttributeModifier::getHoverText(eATTRIBUTE_ID attribute)
|
||||||
}
|
}
|
||||||
|
|
||||||
wchar_t formatted[256];
|
wchar_t formatted[256];
|
||||||
swprintf(formatted, 256, L"%ls%d%ls %ls", (amount > 0 ? L"+" : L"-"), static_cast<int>(displayAmount), (percentage ? L"%" : L""), app.GetString(Attribute::getName(attribute)));
|
if (percentage)
|
||||||
|
{
|
||||||
|
swprintf(formatted, 256, L"%ls%d%ls %ls", (amount > 0 ? L"+" : L"-"), (int)displayAmount, L"%", app.GetString(Attribute::getName(attribute)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
swprintf(formatted, 256, L"%ls%.1g %ls", (amount > 0 ? L"+" : L"-"), displayAmount, app.GetString(Attribute::getName(attribute)));
|
||||||
|
}
|
||||||
|
|
||||||
return HtmlString(formatted, color);
|
return HtmlString(formatted, color);
|
||||||
}
|
}
|
||||||
|
|
@ -122,6 +122,7 @@ Biome::Biome(int id) : id(id)
|
||||||
enemies.push_back(new MobSpawnerData(eTYPE_CREEPER, 10, 4, 4));
|
enemies.push_back(new MobSpawnerData(eTYPE_CREEPER, 10, 4, 4));
|
||||||
enemies.push_back(new MobSpawnerData(eTYPE_SLIME, 10, 4, 4));
|
enemies.push_back(new MobSpawnerData(eTYPE_SLIME, 10, 4, 4));
|
||||||
enemies.push_back(new MobSpawnerData(eTYPE_ENDERMAN, 1, 1, 4));
|
enemies.push_back(new MobSpawnerData(eTYPE_ENDERMAN, 1, 1, 4));
|
||||||
|
enemies.push_back(new MobSpawnerData(eTYPE_WITCH, 1, 1, 1));
|
||||||
|
|
||||||
// wolves are added to forests and taigas
|
// wolves are added to forests and taigas
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,13 +60,17 @@ void EatTileGoal::tick()
|
||||||
|
|
||||||
if (level->getTile(xx, yy, zz) == Tile::tallgrass_Id)
|
if (level->getTile(xx, yy, zz) == Tile::tallgrass_Id)
|
||||||
{
|
{
|
||||||
level->destroyTile(xx, yy, zz, false);
|
if (level->getGameRules()->getBoolean(GameRules::RULE_MOBGRIEFING))
|
||||||
|
level->destroyTile(xx, yy, zz, false);
|
||||||
mob->ate();
|
mob->ate();
|
||||||
}
|
}
|
||||||
else if (level->getTile(xx, yy - 1, zz) == Tile::grass_Id)
|
else if (level->getTile(xx, yy - 1, zz) == Tile::grass_Id)
|
||||||
{
|
{
|
||||||
level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, xx, yy - 1, zz, Tile::grass_Id);
|
if (level->getGameRules()->getBoolean(GameRules::RULE_MOBGRIEFING))
|
||||||
level->setTileAndData(xx, yy - 1, zz, Tile::dirt_Id, 0, Tile::UPDATE_CLIENTS);
|
{
|
||||||
|
level->levelEvent(LevelEvent::PARTICLES_DESTROY_BLOCK, xx, yy - 1, zz, Tile::grass_Id);
|
||||||
|
level->setTileAndData(xx, yy - 1, zz, Tile::dirt_Id, 0, Tile::UPDATE_CLIENTS);
|
||||||
|
}
|
||||||
mob->ate();
|
mob->ate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1598,8 +1598,13 @@ void Entity::rideTick()
|
||||||
|
|
||||||
// jeb: This caused the crosshair to "drift" while riding horses. For now I've just disabled it,
|
// jeb: This caused the crosshair to "drift" while riding horses. For now I've just disabled it,
|
||||||
// because I can't figure out what it's needed for. Riding boats and minecarts seem unaffected...
|
// because I can't figure out what it's needed for. Riding boats and minecarts seem unaffected...
|
||||||
// yRot += yra;
|
//
|
||||||
// xRot += xra;
|
// 3UR: re-enabled this for TU20 but only for rideable minecarts
|
||||||
|
if (riding->instanceof(eTYPE_MINECART_RIDEABLE))
|
||||||
|
{
|
||||||
|
yRot += yra;
|
||||||
|
xRot += xra;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Entity::positionRider()
|
void Entity::positionRider()
|
||||||
|
|
|
||||||
|
|
@ -14,4 +14,5 @@ HellBiome::HellBiome(int id) : Biome(id)
|
||||||
enemies.push_back(new MobSpawnerData(eTYPE_GHAST, 50, 4, 4));
|
enemies.push_back(new MobSpawnerData(eTYPE_GHAST, 50, 4, 4));
|
||||||
enemies.push_back(new MobSpawnerData(eTYPE_PIGZOMBIE, 100, 4, 4));
|
enemies.push_back(new MobSpawnerData(eTYPE_PIGZOMBIE, 100, 4, 4));
|
||||||
enemies.push_back(new MobSpawnerData(eTYPE_LAVASLIME, 1, 4, 4));
|
enemies.push_back(new MobSpawnerData(eTYPE_LAVASLIME, 1, 4, 4));
|
||||||
|
enemies.push_back(new MobSpawnerData(eTYPE_SKELETON, 1, 4, 4));
|
||||||
}
|
}
|
||||||
|
|
@ -1138,11 +1138,11 @@ const int Item::record_04_Id ;
|
||||||
const int Item::record_05_Id ;
|
const int Item::record_05_Id ;
|
||||||
const int Item::record_06_Id ;
|
const int Item::record_06_Id ;
|
||||||
const int Item::record_07_Id ;
|
const int Item::record_07_Id ;
|
||||||
|
const int Item::record_08_Id ;
|
||||||
const int Item::record_09_Id ;
|
const int Item::record_09_Id ;
|
||||||
const int Item::record_10_Id ;
|
const int Item::record_10_Id ;
|
||||||
const int Item::record_11_Id ;
|
const int Item::record_11_Id ;
|
||||||
const int Item::record_12_Id ;
|
const int Item::record_12_Id ;
|
||||||
const int Item::record_08_Id ;
|
|
||||||
const int Item::fireball_Id ;
|
const int Item::fireball_Id ;
|
||||||
const int Item::itemFrame_Id ;
|
const int Item::itemFrame_Id ;
|
||||||
const int Item::netherbrick_Id ;
|
const int Item::netherbrick_Id ;
|
||||||
|
|
|
||||||
|
|
@ -577,13 +577,13 @@ public:
|
||||||
static const int record_05_Id = 2260;
|
static const int record_05_Id = 2260;
|
||||||
static const int record_06_Id = 2261;
|
static const int record_06_Id = 2261;
|
||||||
static const int record_07_Id = 2262;
|
static const int record_07_Id = 2262;
|
||||||
static const int record_09_Id = 2263;
|
|
||||||
static const int record_10_Id = 2264;
|
|
||||||
static const int record_11_Id = 2265;
|
|
||||||
static const int record_12_Id = 2266;
|
|
||||||
|
|
||||||
// 4J-PB - this one isn't playable in the PC game, but is fine in ours
|
// 4J-PB - this one isn't playable in the PC game, but is fine in ours
|
||||||
static const int record_08_Id = 2267;
|
static const int record_08_Id = 2263;
|
||||||
|
static const int record_09_Id = 2264;
|
||||||
|
static const int record_10_Id = 2265;
|
||||||
|
static const int record_11_Id = 2266;
|
||||||
|
static const int record_12_Id = 2267;
|
||||||
|
|
||||||
// TU9
|
// TU9
|
||||||
static const int fireball_Id = 385;
|
static const int fireball_Id = 385;
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static const int MAX_XBOX_BOATS = 40; // Max number of boats
|
static const int MAX_XBOX_BOATS = 40; // Max number of boats
|
||||||
static const int MAX_CONSOLE_MINECARTS = 40;
|
static const int MAX_CONSOLE_MINECARTS = 250;
|
||||||
static const int MAX_DISPENSABLE_FIREBALLS = 200;
|
static const int MAX_DISPENSABLE_FIREBALLS = 200;
|
||||||
static const int MAX_DISPENSABLE_PROJECTILES = 300;
|
static const int MAX_DISPENSABLE_PROJECTILES = 300;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -259,9 +259,16 @@ void LivingEntity::baseTick()
|
||||||
}
|
}
|
||||||
|
|
||||||
// If lastHurtByMob is dead, remove it
|
// If lastHurtByMob is dead, remove it
|
||||||
if (lastHurtByMob != nullptr && !lastHurtByMob->isAlive())
|
if (lastHurtByMob != NULL)
|
||||||
{
|
{
|
||||||
setLastHurtByMob(nullptr);
|
if (!lastHurtByMob->isAlive())
|
||||||
|
{
|
||||||
|
setLastHurtByMob(nullptr);
|
||||||
|
}
|
||||||
|
else if (tickCount - lastHurtByMobTimestamp > 100)
|
||||||
|
{
|
||||||
|
setLastHurtByMob(nullptr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update effects
|
// Update effects
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,15 @@ ChunkStorage *McRegionLevelStorage::createChunkStorage(Dimension *dimension)
|
||||||
delete netherFiles;
|
delete netherFiles;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
vector<FileEntry *> *fortressFiles = m_saveFile->getFilesWithPrefix(L"data/Fortress");
|
||||||
|
if(fortressFiles!=NULL)
|
||||||
|
{
|
||||||
|
for (auto& fortressFile : *fortressFiles)
|
||||||
|
{
|
||||||
|
m_saveFile->deleteFile(fortressFile);
|
||||||
|
}
|
||||||
|
delete fortressFiles;
|
||||||
|
}
|
||||||
resetNetherPlayerPositions();
|
resetNetherPlayerPositions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,11 @@ bool Pig::useNewAi()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Pig::removeWhenFarAway()
|
||||||
|
{
|
||||||
|
return Animal::removeWhenFarAway() && !hasSaddle();
|
||||||
|
}
|
||||||
|
|
||||||
void Pig::registerAttributes()
|
void Pig::registerAttributes()
|
||||||
{
|
{
|
||||||
Animal::registerAttributes();
|
Animal::registerAttributes();
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ public:
|
||||||
virtual bool useNewAi();
|
virtual bool useNewAi();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual bool removeWhenFarAway();
|
||||||
virtual void registerAttributes();
|
virtual void registerAttributes();
|
||||||
virtual void newServerAiStep();
|
virtual void newServerAiStep();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@
|
||||||
void ScatteredFeaturePieces::loadStatic()
|
void ScatteredFeaturePieces::loadStatic()
|
||||||
{
|
{
|
||||||
StructureFeatureIO::setPieceId(eStructurePiece_DesertPyramidPiece, DesertPyramidPiece::Create, L"TeDP");
|
StructureFeatureIO::setPieceId(eStructurePiece_DesertPyramidPiece, DesertPyramidPiece::Create, L"TeDP");
|
||||||
StructureFeatureIO::setPieceId(eStructurePiece_JunglePyramidPiece, DesertPyramidPiece::Create, L"TeJP");
|
StructureFeatureIO::setPieceId(eStructurePiece_JunglePyramidPiece, JunglePyramidPiece::Create, L"TeJP");
|
||||||
StructureFeatureIO::setPieceId(eStructurePiece_SwamplandHut, DesertPyramidPiece::Create, L"TeSH");
|
StructureFeatureIO::setPieceId(eStructurePiece_SwamplandHut, SwamplandHut::Create, L"TeSH");
|
||||||
}
|
}
|
||||||
|
|
||||||
ScatteredFeaturePieces::ScatteredFeaturePiece::ScatteredFeaturePiece()
|
ScatteredFeaturePieces::ScatteredFeaturePiece::ScatteredFeaturePiece()
|
||||||
|
|
|
||||||
|
|
@ -472,6 +472,7 @@ void Villager::addOffers(int addCount)
|
||||||
addItemForPurchase(newOffers, Tile::glass_Id, random, getRecipeChance(.2f));
|
addItemForPurchase(newOffers, Tile::glass_Id, random, getRecipeChance(.2f));
|
||||||
addItemForPurchase(newOffers, Item::compass_Id, random, getRecipeChance(.2f));
|
addItemForPurchase(newOffers, Item::compass_Id, random, getRecipeChance(.2f));
|
||||||
addItemForPurchase(newOffers, Item::clock_Id, random, getRecipeChance(.2f));
|
addItemForPurchase(newOffers, Item::clock_Id, random, getRecipeChance(.2f));
|
||||||
|
addItemForPurchase(newOffers, Item::nameTag_Id, random, getRecipeChance(.2f));
|
||||||
|
|
||||||
if (random->nextFloat() < getRecipeChance(0.07f))
|
if (random->nextFloat() < getRecipeChance(0.07f))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -509,7 +509,7 @@ void Wolf::setCollarColor(int color)
|
||||||
// 4J-PB added for tooltips
|
// 4J-PB added for tooltips
|
||||||
int Wolf::GetSynchedHealth()
|
int Wolf::GetSynchedHealth()
|
||||||
{
|
{
|
||||||
return getEntityData()->getInteger(DATA_HEALTH_ID);
|
return getEntityData()->getFloat(DATA_HEALTH_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
shared_ptr<AgableMob> Wolf::getBreedOffspring(shared_ptr<AgableMob> target)
|
shared_ptr<AgableMob> Wolf::getBreedOffspring(shared_ptr<AgableMob> target)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue