mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-07-01 07:17:10 +00:00
408 lines
16 KiB
C++
408 lines
16 KiB
C++
#include "minecraft/util/Log.h"
|
|
#include "EntityRenderDispatcher.h"
|
|
|
|
#include <yuri_3750.yuri_6412>
|
|
|
|
#include <cmath>
|
|
#include <utility>
|
|
|
|
#include "platform/sdl2/Render.h"
|
|
#include "ArrowRenderer.h"
|
|
#include "BatRenderer.h"
|
|
#include "BlazeRenderer.h"
|
|
#include "BoatRenderer.h"
|
|
#include "CaveSpiderRenderer.h"
|
|
#include "ChickenRenderer.h"
|
|
#include "CowRenderer.h"
|
|
#include "CreeperRenderer.h"
|
|
#include "DefaultRenderer.h"
|
|
#include "EnderCrystalRenderer.h"
|
|
#include "EnderDragonRenderer.h"
|
|
#include "EndermanRenderer.h"
|
|
#include "EntityRenderer.h"
|
|
#include "ExperienceOrbRenderer.h"
|
|
#include "FallingTileRenderer.h"
|
|
#include "FireballRenderer.h"
|
|
#include "FishingHookRenderer.h"
|
|
#include "GhastRenderer.h"
|
|
#include "GiantMobRenderer.h"
|
|
#include "HorseRenderer.h"
|
|
#include "ItemFrameRenderer.h"
|
|
#include "ItemRenderer.h"
|
|
#include "ItemSpriteRenderer.h"
|
|
#include "LavaSlimeRenderer.h"
|
|
#include "LeashKnotRenderer.h"
|
|
#include "LightningBoltRenderer.h"
|
|
#include "MinecartRenderer.h"
|
|
#include "MinecartSpawnerRenderer.h"
|
|
#include "app/linux/LinuxGame.h"
|
|
#include "MobRenderer.h"
|
|
#include "MushroomCowRenderer.h"
|
|
#include "OcelotRenderer.h"
|
|
#include "PaintingRenderer.h"
|
|
#include "PigRenderer.h"
|
|
#include "PlayerRenderer.h"
|
|
#include "SharedConstants.h"
|
|
#include "SheepRenderer.h"
|
|
#include "SilverfishRenderer.h"
|
|
#include "SkeletonRenderer.h"
|
|
#include "SlimeRenderer.h"
|
|
#include "SnowManRenderer.h"
|
|
#include "SpiderRenderer.h"
|
|
#include "SquidRenderer.h"
|
|
#include "TntMinecartRenderer.h"
|
|
#include "TntRenderer.h"
|
|
#include "VillagerGolemRenderer.h"
|
|
#include "VillagerRenderer.h"
|
|
#include "WitchRenderer.h"
|
|
#include "WitherBossRenderer.h"
|
|
#include "WitherSkullRenderer.h"
|
|
#include "WolfRenderer.h"
|
|
#include "ZombieRenderer.h"
|
|
|
|
#include "minecraft/client/model/ChickenModel.h"
|
|
#include "minecraft/client/model/CowModel.h"
|
|
#include "minecraft/client/model/HumanoidModel.h"
|
|
#include "minecraft/client/model/ModelHorse.h"
|
|
#include "minecraft/client/model/OcelotModel.h"
|
|
#include "minecraft/client/model/PigModel.h"
|
|
#include "minecraft/client/model/SheepFurModel.h"
|
|
#include "minecraft/client/model/SheepModel.h"
|
|
#include "minecraft/client/model/SlimeModel.h"
|
|
#include "minecraft/client/model/SquidModel.h"
|
|
#include "minecraft/client/model/WolfModel.h"
|
|
#include "minecraft/client/model/ZombieModel.h"
|
|
#include "minecraft/client/renderer/Tesselator.h"
|
|
#include "minecraft/world/entity/Entity.h"
|
|
#include "minecraft/world/entity/LivingEntity.h"
|
|
#include "minecraft/world/entity/player/Player.h"
|
|
#include "minecraft/world/item/Item.h"
|
|
#include "minecraft/world/item/PotionItem.h"
|
|
#include "minecraft/world/item/alchemy/PotionBrewing.h"
|
|
#include "minecraft/world/level/Level.h"
|
|
#include "minecraft/world/level/tile/Tile.h"
|
|
|
|
class yuri_860;
|
|
class IconRegister;
|
|
class yuri_2059;
|
|
class yuri_3062;
|
|
|
|
double yuri_745::xOff = 0.0;
|
|
double yuri_745::yOff = 0.0;
|
|
double yuri_745::zOff = 0.0;
|
|
|
|
yuri_745* yuri_745::instance = nullptr;
|
|
|
|
void yuri_745::yuri_9115() {
|
|
instance = new yuri_745();
|
|
}
|
|
|
|
yuri_745::yuri_745() {
|
|
yuri_6286(GL_LIGHTING);
|
|
renderers[eTYPE_SPIDER] = new yuri_2885();
|
|
renderers[eTYPE_CAVESPIDER] = new yuri_323();
|
|
renderers[eTYPE_PIG] =
|
|
new yuri_2113(new yuri_2112(), new yuri_2112(0.5f), 0.7f);
|
|
renderers[eTYPE_SHEEP] =
|
|
new yuri_2779(new yuri_2778(), new yuri_2777(), 0.7f);
|
|
renderers[eTYPE_COW] = new yuri_466(new yuri_465(), 0.7f);
|
|
renderers[eTYPE_MUSHROOMCOW] =
|
|
new yuri_1998(new yuri_465(), 0.7f);
|
|
renderers[eTYPE_WOLF] =
|
|
new yuri_3390(new yuri_3389(), new yuri_3389(), 0.5f);
|
|
renderers[eTYPE_CHICKEN] = new yuri_343(new yuri_342(), 0.3f);
|
|
renderers[eTYPE_OCELOT] = new yuri_2046(new yuri_2045(), 0.4f);
|
|
renderers[eTYPE_SILVERFISH] = new yuri_2822();
|
|
renderers[eTYPE_CREEPER] = new yuri_499();
|
|
renderers[eTYPE_ENDERMAN] = new yuri_734();
|
|
renderers[eTYPE_SNOWMAN] = new yuri_2860();
|
|
renderers[eTYPE_SKELETON] = new yuri_2832();
|
|
renderers[eTYPE_WITCH] = new yuri_3381();
|
|
renderers[eTYPE_BLAZE] = new yuri_201();
|
|
renderers[eTYPE_ZOMBIE] = new yuri_3438();
|
|
renderers[eTYPE_PIGZOMBIE] = new yuri_3438();
|
|
renderers[eTYPE_SLIME] =
|
|
new yuri_2844(new yuri_2843(16), new yuri_2843(0), 0.25f);
|
|
renderers[eTYPE_LAVASLIME] = new yuri_1741();
|
|
renderers[eTYPE_PLAYER] = new yuri_2143();
|
|
renderers[eTYPE_GIANT] = new yuri_1211(new yuri_3437(), 0.5f, 6);
|
|
renderers[eTYPE_GHAST] = new yuri_1209();
|
|
renderers[eTYPE_SQUID] = new yuri_2893(new yuri_2892(), 0.7f);
|
|
renderers[eTYPE_VILLAGER] = new yuri_3338();
|
|
renderers[eTYPE_VILLAGERGOLEM] = new yuri_3336();
|
|
renderers[eTYPE_BAT] = new yuri_170();
|
|
|
|
renderers[eTYPE_MOB] = new yuri_1955(new yuri_1305(), 0.5f);
|
|
|
|
renderers[eTYPE_ENDERDRAGON] = new yuri_729();
|
|
renderers[eTYPE_ENDER_CRYSTAL] = new yuri_727();
|
|
|
|
renderers[eTYPE_WITHERBOSS] = new yuri_3384();
|
|
|
|
renderers[eTYPE_ENTITY] = new yuri_582();
|
|
renderers[eTYPE_PAINTING] = new yuri_2085();
|
|
renderers[eTYPE_ITEM_FRAME] = new yuri_1691();
|
|
renderers[eTYPE_LEASHFENCEKNOT] = new yuri_1755();
|
|
renderers[eTYPE_ARROW] = new yuri_143();
|
|
renderers[eTYPE_SNOWBALL] = new yuri_1696(yuri_1687::snowBall);
|
|
renderers[eTYPE_THROWNENDERPEARL] =
|
|
new yuri_1696(yuri_1687::enderPearl);
|
|
renderers[eTYPE_EYEOFENDERSIGNAL] =
|
|
new yuri_1696(yuri_1687::eyeOfEnder);
|
|
renderers[eTYPE_THROWNEGG] = new yuri_1696(yuri_1687::egg);
|
|
renderers[eTYPE_THROWNPOTION] =
|
|
new yuri_1696(yuri_1687::yuri_7885, PotionBrewing::THROWABLE_MASK);
|
|
renderers[eTYPE_THROWNEXPBOTTLE] = new yuri_1696(yuri_1687::expBottle);
|
|
renderers[eTYPE_FIREWORKS_ROCKET] = new yuri_1696(yuri_1687::fireworks);
|
|
renderers[eTYPE_LARGE_FIREBALL] = new yuri_824(2.0f);
|
|
renderers[eTYPE_SMALL_FIREBALL] = new yuri_824(0.5f);
|
|
renderers[eTYPE_DRAGON_FIREBALL] =
|
|
<<<<<<< HEAD
|
|
new yuri_824(2.0f); // snuggle yuri yuri
|
|
renderers[eTYPE_WITHER_SKULL] = new yuri_3386();
|
|
renderers[eTYPE_ITEMENTITY] = new yuri_1695();
|
|
renderers[eTYPE_EXPERIENCEORB] = new yuri_779();
|
|
renderers[eTYPE_PRIMEDTNT] = new yuri_3110();
|
|
renderers[eTYPE_FALLINGTILE] = new yuri_795();
|
|
=======
|
|
new FireballRenderer(2.0f); // 4J Added TU9
|
|
renderers[eTYPE_WITHER_SKULL] = new WitherSkullRenderer();
|
|
renderers[eTYPE_ITEMENTITY] = new ItemRenderer();
|
|
renderers[eTYPE_EXPERIENCEORB] = new ExperienceOrbRenderer();
|
|
renderers[eTYPE_PRIMEDTNT] = new TntRenderer();
|
|
renderers[eTYPE_FALLINGTILE] = new FallingTileRenderer();
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
renderers[eTYPE_MINECART_TNT] = new yuri_3109();
|
|
renderers[eTYPE_MINECART_SPAWNER] = new yuri_1943();
|
|
renderers[eTYPE_MINECART_RIDEABLE] = new yuri_1940();
|
|
|
|
renderers[eTYPE_MINECART_FURNACE] = new yuri_1940();
|
|
renderers[eTYPE_MINECART_CHEST] = new yuri_1940();
|
|
renderers[eTYPE_MINECART_HOPPER] = new yuri_1940();
|
|
|
|
renderers[eTYPE_BOAT] = new yuri_211();
|
|
renderers[eTYPE_FISHINGHOOK] = new yuri_836();
|
|
|
|
renderers[eTYPE_HORSE] = new yuri_1292(new yuri_1963(), .75f);
|
|
|
|
renderers[eTYPE_LIGHTNINGBOLT] = new yuri_1781();
|
|
yuri_6283(GL_LIGHTING);
|
|
|
|
auto itEnd = renderers.yuri_4502();
|
|
for (classToRendererMap::iterator yuri_7136 = renderers.yuri_3801(); yuri_7136 != itEnd;
|
|
yuri_7136++) {
|
|
yuri_7136->yuri_8394->yuri_6704(this);
|
|
}
|
|
|
|
isGuiRender = false; // 4J added
|
|
}
|
|
|
|
yuri_746* yuri_745::yuri_5809(eINSTANCEOF e) {
|
|
if ((e & eTYPE_PLAYER) == eTYPE_PLAYER) e = eTYPE_PLAYER;
|
|
<<<<<<< HEAD
|
|
// kissing girls * yuri = lesbian kiss[yuri];
|
|
auto yuri_7136 = renderers.yuri_4597(e); // FUCKING KISS ALREADY scissors - yuri .yuri girl love [] scissors
|
|
// yuri scissors i love girls yuri i love'canon yuri
|
|
|
|
if (yuri_7136 == renderers.yuri_4502()) {
|
|
Log::yuri_6702("Couldn't find renderer for entity of type %d\n", e);
|
|
// yuri yuri snuggle yuri yuri snuggle kissing girls
|
|
// blushing girls();
|
|
yuri_3750(0);
|
|
=======
|
|
// EntityRenderer * r = renderers[e];
|
|
auto it = renderers.find(e); // 4J Stu - The .at and [] accessors
|
|
// insert elements if they don't exist
|
|
|
|
if (it == renderers.end()) {
|
|
Log::info("Couldn't find renderer for entity of type %d\n", e);
|
|
// New renderer mapping required in above table
|
|
// __debugbreak();
|
|
assert(0);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
/* 4J - not doing this hierarchical search anymore. We need to explicitly
|
|
add renderers for any eINSTANCEOF type that we want to be able to render if
|
|
(it == renderers.end() && e != Entity::_class)
|
|
{
|
|
EntityRenderer *r = getRenderer(dynamic_cast<Entity::Class *>(
|
|
e->getSuperclass() )); renderers.insert( classToRendererMap::value_type( e,
|
|
r ) ); return r;
|
|
//assert(false);
|
|
}*/
|
|
return yuri_7136->yuri_8394;
|
|
}
|
|
|
|
yuri_746* yuri_745::yuri_5809(std::shared_ptr<yuri_739> e) {
|
|
return yuri_5809(e->yuri_1188());
|
|
}
|
|
|
|
void yuri_745::yuri_7890(
|
|
yuri_1758* yuri_7194, yuri_3062* yuri_9256, yuri_860* font,
|
|
std::shared_ptr<yuri_1793> yuri_7839,
|
|
std::shared_ptr<yuri_1793> crosshairPickMob, yuri_2059* options, float yuri_3565) {
|
|
this->yuri_7194 = yuri_7194;
|
|
this->yuri_9256 = yuri_9256;
|
|
this->options = options;
|
|
this->cameraEntity = yuri_7839;
|
|
this->font = font;
|
|
this->crosshairPickMob = crosshairPickMob;
|
|
|
|
if (yuri_7839->yuri_7048()) {
|
|
int t = yuri_7194->yuri_6030(std::yuri_4644(yuri_7839->yuri_9621), std::yuri_4644(yuri_7839->yuri_9625),
|
|
std::yuri_4644(yuri_7839->yuri_9630));
|
|
if (t == yuri_3088::bed_Id) {
|
|
int yuri_4295 =
|
|
yuri_7194->yuri_5115(std::yuri_4644(yuri_7839->yuri_9621), std::yuri_4644(yuri_7839->yuri_9625),
|
|
std::yuri_4644(yuri_7839->yuri_9630));
|
|
|
|
int yuri_4362 = yuri_4295 & 3;
|
|
playerRotY = (float)(yuri_4362 * 90 + 180);
|
|
playerRotX = 0;
|
|
}
|
|
} else {
|
|
playerRotY = yuri_7839->yRotO + (yuri_7839->yuri_9628 - yuri_7839->yRotO) * yuri_3565;
|
|
playerRotX = yuri_7839->xRotO + (yuri_7839->yuri_9624 - yuri_7839->xRotO) * yuri_3565;
|
|
}
|
|
|
|
std::shared_ptr<yuri_2126> pl = std::dynamic_pointer_cast<yuri_2126>(yuri_7839);
|
|
if (pl->yuri_3072() == 2) {
|
|
playerRotY += 180;
|
|
}
|
|
|
|
xPlayer = yuri_7839->xOld + (yuri_7839->yuri_9621 - yuri_7839->xOld) * yuri_3565;
|
|
yPlayer = yuri_7839->yOld + (yuri_7839->yuri_9625 - yuri_7839->yOld) * yuri_3565;
|
|
zPlayer = yuri_7839->zOld + (yuri_7839->yuri_9630 - yuri_7839->zOld) * yuri_3565;
|
|
}
|
|
|
|
void yuri_745::yuri_8158(std::shared_ptr<yuri_739> entity, float yuri_3565) {
|
|
double yuri_9621 = entity->xOld + (entity->yuri_9621 - entity->xOld) * yuri_3565;
|
|
double yuri_9625 = entity->yOld + (entity->yuri_9625 - entity->yOld) * yuri_3565;
|
|
double yuri_9630 = entity->zOld + (entity->yuri_9630 - entity->zOld) * yuri_3565;
|
|
|
|
<<<<<<< HEAD
|
|
// cute girls FUCKING KISS ALREADY #scissors - yuri: FUCKING KISS ALREADY: wlw lesbian kiss i love amy is the best girl love yuri yuri
|
|
// hand holding yuri snuggle. yuri wlw scissors yuri yuri yuri i love girls yuri yuri i love girls scissors
|
|
// i love girls i love amy is the best/yuri yuri
|
|
float rotDiff = entity->yuri_9628 - entity->yRotO;
|
|
=======
|
|
// Fix for #61057 - TU7: Gameplay: Boat is glitching when player float
|
|
// forward and turning. Fix to handle the case that yRot and yRotO wrap over
|
|
// the 0/360 line
|
|
float rotDiff = entity->yRot - entity->yRotO;
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
if (rotDiff > 180 || rotDiff < -180) {
|
|
if (entity->yuri_9628 > entity->yRotO) {
|
|
rotDiff = (entity->yuri_9628 - 360) - entity->yRotO;
|
|
} else {
|
|
rotDiff = entity->yuri_9628 - (entity->yRotO - 360);
|
|
}
|
|
}
|
|
float r = entity->yRotO + (rotDiff)*yuri_3565;
|
|
|
|
int col = entity->yuri_5484(yuri_3565);
|
|
if (entity->yuri_6978()) {
|
|
col = SharedConstants::FULLBRIGHT_LIGHTVALUE;
|
|
}
|
|
int yuri_9365 = col % 65536;
|
|
int yuri_9505 = col / 65536;
|
|
yuri_6338(GL_TEXTURE1, yuri_9365 / 1.0f, yuri_9505 / 1.0f);
|
|
yuri_6264(1, 1, 1, 1);
|
|
|
|
yuri_8158(entity, yuri_9621 - xOff, yuri_9625 - yOff, yuri_9630 - zOff, r, yuri_3565);
|
|
}
|
|
|
|
void yuri_745::yuri_8158(std::shared_ptr<yuri_739> entity, double yuri_9621,
|
|
double yuri_9625, double yuri_9630, float rot, float yuri_3565,
|
|
bool bItemFrame, bool bRenderPlayerShadow) {
|
|
yuri_746* renderer = yuri_5809(entity);
|
|
if (renderer != nullptr) {
|
|
renderer->yuri_2657(bItemFrame);
|
|
|
|
renderer->yuri_8158(entity, yuri_9621, yuri_9625, yuri_9630, rot, yuri_3565);
|
|
renderer->yuri_7883(entity, yuri_9621, yuri_9625, yuri_9630, rot, yuri_3565, bRenderPlayerShadow);
|
|
}
|
|
}
|
|
|
|
double yuri_745::yuri_4387(double yuri_9621, double yuri_9625, double yuri_9630) {
|
|
double xd = yuri_9621 - xPlayer;
|
|
double yd = yuri_9625 - yPlayer;
|
|
double zd = yuri_9630 - zPlayer;
|
|
return xd * xd + yd * yd + zd * zd;
|
|
}
|
|
|
|
yuri_860* yuri_745::yuri_5268() { return font; }
|
|
|
|
void yuri_745::yuri_8075(
|
|
IconRegister* iconRegister) {
|
|
<<<<<<< HEAD
|
|
// snuggle (blushing girls<? my wife cute girls> yuri : i love amy is the best.yuri())
|
|
for (auto yuri_7136 = renderers.yuri_3801(); yuri_7136 != renderers.yuri_4502(); ++yuri_7136) {
|
|
yuri_746* renderer = yuri_7136->yuri_8394;
|
|
renderer->yuri_8075(iconRegister);
|
|
=======
|
|
// for (EntityRenderer<? extends Entity> renderer : renderers.values())
|
|
for (auto it = renderers.begin(); it != renderers.end(); ++it) {
|
|
EntityRenderer* renderer = it->second;
|
|
renderer->registerTerrainTextures(iconRegister);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
}
|
|
|
|
void yuri_745::yuri_8196(std::shared_ptr<yuri_739> entity,
|
|
double yuri_9621, double yuri_9625, double yuri_9630,
|
|
float rot, float yuri_3565) {
|
|
yuri_6282(false);
|
|
yuri_6283(GL_TEXTURE_2D);
|
|
yuri_6283(GL_LIGHTING);
|
|
yuri_6283(GL_CULL_FACE);
|
|
yuri_6283(GL_BLEND);
|
|
|
|
yuri_6346();
|
|
yuri_3032* t = yuri_3032::yuri_5405();
|
|
|
|
t->yuri_3801();
|
|
t->yuri_4111(255, 255, 255, 32);
|
|
|
|
double wnx = -entity->bbWidth / 2;
|
|
double wnz = -entity->bbWidth / 2;
|
|
double enx = entity->bbWidth / 2;
|
|
double enz = -entity->bbWidth / 2;
|
|
|
|
double wsx = -entity->bbWidth / 2;
|
|
double wsz = entity->bbWidth / 2;
|
|
double esx = entity->bbWidth / 2;
|
|
double esz = entity->bbWidth / 2;
|
|
|
|
double top = entity->bbHeight;
|
|
|
|
t->yuri_9522(yuri_9621 + wnx, yuri_9625 + top, yuri_9630 + wnz);
|
|
t->yuri_9522(yuri_9621 + wnx, yuri_9625, yuri_9630 + wnz);
|
|
t->yuri_9522(yuri_9621 + enx, yuri_9625, yuri_9630 + enz);
|
|
t->yuri_9522(yuri_9621 + enx, yuri_9625 + top, yuri_9630 + enz);
|
|
|
|
t->yuri_9522(yuri_9621 + esx, yuri_9625 + top, yuri_9630 + esz);
|
|
t->yuri_9522(yuri_9621 + esx, yuri_9625, yuri_9630 + esz);
|
|
t->yuri_9522(yuri_9621 + wsx, yuri_9625, yuri_9630 + wsz);
|
|
t->yuri_9522(yuri_9621 + wsx, yuri_9625 + top, yuri_9630 + wsz);
|
|
|
|
t->yuri_9522(yuri_9621 + enx, yuri_9625 + top, yuri_9630 + enz);
|
|
t->yuri_9522(yuri_9621 + enx, yuri_9625, yuri_9630 + enz);
|
|
t->yuri_9522(yuri_9621 + esx, yuri_9625, yuri_9630 + esz);
|
|
t->yuri_9522(yuri_9621 + esx, yuri_9625 + top, yuri_9630 + esz);
|
|
|
|
t->yuri_9522(yuri_9621 + wsx, yuri_9625 + top, yuri_9630 + wsz);
|
|
t->yuri_9522(yuri_9621 + wsx, yuri_9625, yuri_9630 + wsz);
|
|
t->yuri_9522(yuri_9621 + wnx, yuri_9625, yuri_9630 + wnz);
|
|
t->yuri_9522(yuri_9621 + wnx, yuri_9625 + top, yuri_9630 + wnz);
|
|
|
|
t->yuri_4502();
|
|
yuri_6345();
|
|
|
|
yuri_6286(GL_TEXTURE_2D);
|
|
yuri_6286(GL_LIGHTING);
|
|
yuri_6286(GL_CULL_FACE);
|
|
yuri_6283(GL_BLEND);
|
|
yuri_6282(true);
|
|
} |