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);
Binary file not shown.

After

Width:  |  Height:  |  Size: 776 B

@@ -0,0 +1,4 @@
interp:1
0*8
1*8
2*8
Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -1,440 +1,23 @@
0*15
1*15
2*15
3*15
4*15
5*15
6*15
7*15
8*15
9*15
10*15
11*15
12*15
13*15
14*15
15*15
16*15
17*15
18*15
19*15
20*15
21*15
22*15
23*15
24*15
25*15
26*15
27*15
28*15
29*15
30*15
31*15
32*15
33*15
34*15
35*15
36*15
37*15
38*15
39*15
40*15
41*15
42*15
43*15
44*15
45*15
46*15
47*15
48*15
49*15
50*15
51*15
52*15
53*15
54*15
55*15
56*15
57*15
58*15
59*15
60*15
61*15
62*15
63*15
64*15
65*15
66*15
67*15
68*15
69*15
70*15
71*15
72*15
73*15
74*15
75*15
76*15
77*15
78*15
79*15
80*15
81*15
82*15
83*15
84*15
85*15
86*15
87*15
88*15
89*15
90*15
91*15
92*15
93*15
94*15
95*15
96*15
97*15
98*15
99*15
100*15
101*15
102*15
103*15
104*15
105*15
106*15
107*15
108*15
109*15
110*15
111*15
112*15
113*15
114*15
115*15
116*15
117*15
118*15
119*15
120*15
121*15
122*15
123*15
124*15
125*15
126*15
127*15
128*15
129*15
130*15
131*15
132*15
133*15
134*15
135*15
136*15
137*15
138*15
139*15
140*15
141*15
142*15
143*15
144*15
145*15
146*15
147*15
148*15
149*15
150*15
151*15
152*15
153*15
154*15
155*15
156*15
157*15
158*15
159*15
160*15
161*15
162*15
163*15
164*15
165*15
166*15
167*15
168*15
169*15
170*15
171*15
172*15
173*15
174*15
175*15
176*15
177*15
178*15
179*15
180*15
181*15
182*15
183*15
184*15
185*15
186*15
187*15
188*15
189*15
190*15
191*15
192*15
193*15
194*15
195*15
196*15
197*15
198*15
199*15
200*15
201*15
202*15
203*15
204*15
205*15
206*15
207*15
208*15
209*15
210*15
211*15
212*15
213*15
214*15
215*15
216*15
217*15
218*15
219*15
220*15
221*15
222*15
223*15
224*15
225*15
226*15
227*15
228*15
229*15
230*15
231*15
232*15
233*15
234*15
235*15
236*15
237*15
238*15
239*15
240*15
241*15
242*15
243*15
244*15
245*15
246*15
247*15
248*15
249*15
250*15
251*15
252*15
253*15
254*15
255*15
256*15
257*15
258*15
259*15
260*15
261*15
262*15
263*15
264*15
265*15
266*15
267*15
268*15
269*15
270*15
271*15
272*15
273*15
274*15
275*15
276*15
277*15
278*15
279*15
280*15
281*15
282*15
283*15
284*15
285*15
286*15
287*15
288*15
289*15
290*15
291*15
292*15
293*15
294*15
295*15
296*15
297*15
298*15
299*15
300*15
301*15
302*15
303*15
304*15
305*15
306*15
307*15
308*15
309*15
310*15
311*15
312*15
313*15
314*15
315*15
316*15
317*15
318*15
319*15
320*15
321*15
322*15
323*15
324*15
325*15
326*15
327*15
328*15
329*15
330*15
331*15
332*15
333*15
334*15
335*15
336*15
337*15
338*15
339*15
340*15
341*15
342*15
343*15
344*15
345*15
346*15
347*15
348*15
349*15
350*15
351*15
352*15
353*15
354*15
355*15
356*15
357*15
358*15
359*15
360*15
361*15
362*15
363*15
364*15
365*15
366*15
367*15
368*15
369*15
370*15
371*15
372*15
373*15
374*15
375*15
376*15
377*15
378*15
379*15
380*15
381*15
382*15
383*15
384*15
385*15
386*15
387*15
388*15
389*15
390*15
391*15
392*15
393*15
394*15
395*15
396*15
397*15
398*15
399*15
400*15
401*15
402*15
403*15
404*15
405*15
406*15
407*15
408*15
409*15
410*15
411*15
412*15
413*15
414*15
415*15
416*15
417*15
418*15
419*15
420*15
421*15
422*15
423*15
424*15
425*15
426*15
427*15
428*15
429*15
430*15
431*15
432*15
433*15
434*15
435*15
436*15
437*15
438*15
439*15
interp:1
0*300
1*300
0*300
2*300
0*300
3*300
0*300
1*300
2*300
1*300
3*300
1*300
0*300
2*300
1*300
2*300
3*300
2*300
0*300
3*300
1*300
3*300
Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB