TU43 Structures, bug fixes & minor changes

- Elytra flight, damage, kinetic energy, pretty much any bug someone reported, paper doll, etc.
- Fossil & Igloo generation
- Texture interpolation
- Iggy mouse fix for world settings
- Neo branding on main screen
- Release build txt logger
- Debug mode spectator
- Several server fixes
- Flowerpot fixes
- Several more changes made in TU43
This commit is contained in:
Tranqlmao
2026-07-11 19:30:16 -04:00
parent d236146e92
commit a4c746bee4
89 changed files with 1793 additions and 590 deletions
@@ -77,11 +77,28 @@ void UIControl_MinecraftPlayer::render(IggyCustomDrawCallbackRegion *region)
glTranslatef(0, pMinecraft->localplayers[containerMenu->getPad()]->heightOffset, 0);
EntityRenderDispatcher::instance->playerRotY = 180;
auto lp = pMinecraft->localplayers[containerMenu->getPad()];
float owp = lp->walkAnimPos;
float ows = lp->walkAnimSpeed;
float owsO = lp->walkAnimSpeedO;
if (lp->isElytraFlying())
{
lp->walkAnimPos = 0.0f;
lp->walkAnimSpeed = 0.0f;
lp->walkAnimSpeedO = 0.0f;
}
// 4J Stu - Turning on hideGui while we do this stops the name rendering in split-screen
bool wasHidingGui = pMinecraft->options->hideGui;
pMinecraft->options->hideGui = true;
EntityRenderDispatcher::instance->render(pMinecraft->localplayers[containerMenu->getPad()], 0, 0, 0, 0, 1, false, false);
EntityRenderDispatcher::instance->isInventoryRender = true;
EntityRenderDispatcher::instance->render(lp, 0, 0, 0, 0, 1, false, false);
EntityRenderDispatcher::instance->isInventoryRender = false;
pMinecraft->options->hideGui = wasHidingGui;
lp->walkAnimPos = owp;
lp->walkAnimSpeed = ows;
lp->walkAnimSpeedO = owsO;
//pMinecraft->localplayers[m_iPad]->glow = 0;
pMinecraft->localplayers[containerMenu->getPad()]->yBodyRot = oybr;
@@ -80,6 +80,8 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini
m_bUpdateCheats = false;
// Update cheat checkboxes
UpdateCheats();
m_bPendingTabSwitch = false;
m_iPendingTabIndex = -1;
m_checkboxes[eLaunchCheckbox_Online].init(app.GetString(IDS_ONLINE_GAME),eLaunchCheckbox_Online,bOnlineGame);
m_checkboxes[eLaunchCheckbox_InviteOnly].init(app.GetString(IDS_INVITE_ONLY),eLaunchCheckbox_InviteOnly,bInviteOnly);
@@ -240,6 +242,14 @@ void UIScene_LaunchMoreOptionsMenu::tick()
UpdateOnline();
m_bUpdateOnline = false;
}
if (m_bPendingTabSwitch)
{
m_bPendingTabSwitch = false;
m_tabIndex = m_iPendingTabIndex;
updateTooltips();
IggyDataValue result;
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result, IggyPlayerRootPath(getMovie()), m_funcChangeTab, 0, nullptr);
}
}
void UIScene_LaunchMoreOptionsMenu::handleDestroy()
@@ -339,6 +349,42 @@ void UIScene_LaunchMoreOptionsMenu::handleTouchInput(unsigned int iPad, S32 x, S
}
#endif
#ifdef _WINDOWS64
bool UIScene_LaunchMoreOptionsMenu::handleMouseClick(F32 x, F32 y)
{
if (!hasFocus(m_iPad) || getMovie() == nullptr || g_KBMInput.IsMouseGrabbed() || !g_KBMInput.IsKBMActive())
return false;
if (m_bIgnoreInput)
return false;
float sceneMouseX = x;
float sceneMouseY = y;
if (sceneMouseY >= 190.0f && sceneMouseY <= 270.0f)
{
int newTab = -1;
if (sceneMouseX >= 480.0f && sceneMouseX <= 700.0f)
newTab = TAB_WORLD_OPTIONS;
else if (sceneMouseX > 700.0f && sceneMouseX <= 960.0f)
newTab = TAB_GAME_OPTIONS;
if (newTab >= 0)
{
if (m_tabIndex != newTab)
{
m_bPendingTabSwitch = true;
m_iPendingTabIndex = newTab;
ui.PlayUISFX(eSFX_Press);
}
return true;
}
}
return UIScene::handleMouseClick(x, y);
}
#endif
#if defined(__PSVITA__) || defined(_WINDOWS64)
UIControl* UIScene_LaunchMoreOptionsMenu::GetMainPanel()
{
@@ -146,6 +146,9 @@ public:
#endif
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
#ifdef _WINDOWS64
virtual bool handleMouseClick(F32 x, F32 y);
#endif
virtual void handleFocusChange(F64 controlId, F64 childId);
virtual void handleTimerComplete(int id);
static int KeyboardCompleteSeedCallback(LPVOID lpParam,const bool bRes);
@@ -162,6 +165,9 @@ private:
bool m_bUpdateOnline; // If true, update online settings on next tick
void UpdateOnline();
bool m_bPendingTabSwitch;
int m_iPendingTabIndex;
#ifdef __PSVITA__
virtual void handleTouchInput(unsigned int iPad, S32 x, S32 y, int iId, bool bPressed, bool bRepeat, bool bReleased);
#endif //__PSVITA__
@@ -1,4 +1,9 @@
#include "stdafx.h"
#include "../../Lighting.h"
#ifdef _WINDOWS64
#include "../../Windows64/Iggy/gdraw/gdraw_d3d11.h"
#include "../../Windows64/4JLibs/inc/4J_Render.h"
#endif
#include "../../../Minecraft.World/Mth.h"
#include "../../../Minecraft.World/StringHelpers.h"
#include "../../../Minecraft.World/Random.h"
@@ -553,7 +558,61 @@ void UIScene_MainMenu::customDrawSplash(IggyCustomDrawCallbackRegion *region)
// Finish GDraw and anything else that needs to be finalised
ui.endCustomDraw(region);
ui.endCustomDraw(region);
}
void UIScene_MainMenu::render(S32 width, S32 height, C4JRender::eViewportType viewport)
{
UIScene::render(width, height, viewport);
Minecraft *pMinecraft = Minecraft::GetInstance();
if (!pMinecraft || !pMinecraft->font) return;
Font *font = pMinecraft->font;
const wstring part1 = L"neo";
const wstring part2 = L"Legacy";
const float scale = 0.6f;
const int pad = 4;
ScreenSizeCalculator ssc(pMinecraft->options, pMinecraft->width_phys, pMinecraft->height_phys);
S32 sw = ssc.getWidth();
S32 sh = ssc.getHeight();
#ifdef _WINDOWS64
RenderManager.StartFrame();
gdraw_D3D11_setViewport_4J();
#endif
RenderManager.Set_matrixDirty();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, sw, sh, 0, 1000, 3000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -2000.0f);
Lighting::turnOff();
glDisable(GL_DEPTH_TEST);
glDepthMask(false);
glDisable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_TEXTURE_2D);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
int totalW = static_cast<int>((font->width(part1) + font->width(part2)) * scale);
int tx = sw - totalW - pad;
int ty = sh - static_cast<int>(8 * scale) - pad;
glPushMatrix();
glTranslatef(static_cast<float>(tx), static_cast<float>(ty), 0.0f);
glScalef(scale, scale, scale);
font->drawShadow(part1, 0, 0, 0x66A254FA);
font->drawShadow(part2, font->width(part1), 0, 0x66ffffff);
glPopMatrix();
glDepthMask(true);
glEnable(GL_DEPTH_TEST);
}
int UIScene_MainMenu::MustSignInReturned(void *pParam, int iPad, C4JStorage::EMessageResult result)
@@ -118,6 +118,7 @@ public:
virtual EUIScene getSceneType() { return eUIScene_MainMenu;}
virtual void customDraw(IggyCustomDrawCallbackRegion *region);
virtual void render(S32 width, S32 height, C4JRender::eViewportType viewport);
protected:
void customDrawSplash(IggyCustomDrawCallbackRegion *region);