summary refs log tree commit diff
diff options
context:
space:
mode:
authorWlodekM <[email protected]>2025-01-26 13:41:50 +0200
committerWlodekM <[email protected]>2025-01-26 13:41:50 +0200
commit25d676545255d1f7a6814b869655ece61bcf87b5 (patch)
tree8ad1aca3766637478926f45f64d6d1b714fdafa0
parentb359faa5b925f147886d1183e78a88aa893308c6 (diff)
wip rewrite to use override option in settings
-rwxr-xr-xclascub/build.sh7
-rw-r--r--src/Entity.c17
-rw-r--r--src/EntityComponents.c32
-rw-r--r--src/EntityComponents.h1
-rw-r--r--src/Menus.c32
-rw-r--r--src/Options.h1
6 files changed, 66 insertions, 24 deletions
diff --git a/clascub/build.sh b/clascub/build.sh
new file mode 100755
index 0000000..9f5bdab
--- /dev/null
+++ b/clascub/build.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+cd ..
+make -j 4
+mv -f ClassiCube clascub
+cd clascub
+
diff --git a/src/Entity.c b/src/Entity.c
index b400c85..79a8afd 100644
--- a/src/Entity.c
+++ b/src/Entity.c
@@ -763,6 +763,7 @@ static void LocalPlayer_Init(struct LocalPlayer* p, int index) {
 	hacks->NoclipSlide     = Options_GetBool(OPT_NOCLIP_SLIDE,     false);
 	hacks->WOMStyleHacks   = Options_GetBool(OPT_WOM_STYLE_HACKS,  false);
 	hacks->FullBlockStep   = Options_GetBool(OPT_FULL_BLOCK_STEP,  false);
+	hacks->Override        = Options_GetBool(OPT_HACKS_OVERRIDE, true);
 	p->Physics.UserJumpVel = Options_GetFloat(OPT_JUMP_VELOCITY, 0.0f, 52.0f, 0.42f);
 	p->Physics.JumpVel     = p->Physics.UserJumpVel;
 	hackPermMsgs           = Options_GetBool(OPT_HACK_PERM_MSGS, true);
@@ -822,7 +823,7 @@ static void LocalPlayer_DoRespawn(struct LocalPlayer* p) {
 
 	/* Spawn player at highest solid position to match vanilla Minecraft classic */
 	/* Only when player can noclip, since this can let you 'clip' to above solid blocks */
-	if (true) { // p->Hacks.CanNoclip //
+	if (p->Hacks.CanNoclip) { // WL - reverted //
 		AABB_Make(&bb, &spawn, &p->Base.Size);
 		for (y = pos.y; y <= World.Height; y++) {
 			spawnY = Respawn_HighestSolidY(&bb);
@@ -856,7 +857,7 @@ static void LocalPlayer_DoRespawn(struct LocalPlayer* p) {
 
 static cc_bool LocalPlayer_HandleRespawn(int key) {
 	struct LocalPlayer* p = Entities.CurPlayer;
-	if (true) { // p->Hacks.CanRespawn //
+	if (p->Hacks.CanRespawn) { // WL - reverted //
 		LocalPlayer_DoRespawn(p);
 		return true;
 	} else if (!p->_warnedRespawn) {
@@ -868,15 +869,15 @@ static cc_bool LocalPlayer_HandleRespawn(int key) {
 
 static cc_bool LocalPlayer_HandleSetSpawn(int key) {
 	struct LocalPlayer* p = Entities.CurPlayer;
-	if (true) { // p->Hacks.CanRespawn //
+	if (p->Hacks.CanRespawn) { // WL - reverted //
 
-		if (!true && !p->Base.OnGround) { // p->Hacks.CanNoclip //
+		if (!p->Hacks.CanNoclip && !p->Base.OnGround) { // WL - reverted //
 			Chat_AddRaw("&cCannot set spawn midair when noclip is disabled");
 			return false;
 		}
 
 		/* Spawn is normally centered to match vanilla Minecraft classic */
-		if (!true) { // p->Hacks.CanNoclip //
+		if (!p->Hacks.CanNoclip) { // WL - reverted //
 			/* Don't want to use Position because it is interpolated between prev and next. */
 			/* This means it can be halfway between stepping up a stair and clip through the floor. */
 			p->Spawn   = p->Base.prev.pos;
@@ -895,7 +896,7 @@ static cc_bool LocalPlayer_HandleSetSpawn(int key) {
 static cc_bool LocalPlayer_HandleFly(int key) {
 	struct LocalPlayer* p = Entities.CurPlayer;
 
-	if (true && p->Hacks.Enabled) { // p->Hacks.CanFly //
+	if (p->Hacks.CanFly && p->Hacks.Enabled) { // WL - reverted //
 		HacksComp_SetFlying(&p->Hacks, !p->Hacks.Flying);
 		return true;
 	} else if (!p->_warnedFly) {
@@ -908,7 +909,7 @@ static cc_bool LocalPlayer_HandleFly(int key) {
 static cc_bool LocalPlayer_HandleNoclip(int key) {
 	struct LocalPlayer* p = Entities.CurPlayer;
 
-	if (true && p->Hacks.Enabled) { // p->Hacks.CanNoclip //
+	if (p->Hacks.CanNoclip && p->Hacks.Enabled) { // WL - reverted //
 		if (p->Hacks.WOMStyleHacks) return true; /* don't handle this here */
 		if (p->Hacks.Noclip) p->Base.Velocity.y = 0;
 
@@ -976,7 +977,7 @@ static void LocalPlayer_HookBinds(void) {
 }
 
 cc_bool LocalPlayer_CheckCanZoom(struct LocalPlayer* p) {
-	if (true) return true; // p->Hacks.CanFly //
+	if (p->Hacks.CanFly) return true; // WL - reverted //
 
 	if (!p->_warnedZoom) {
 		p->_warnedZoom = true;
diff --git a/src/EntityComponents.c b/src/EntityComponents.c
index 3cde107..9652a71 100644
--- a/src/EntityComponents.c
+++ b/src/EntityComponents.c
@@ -13,6 +13,7 @@
 #include "Physics.h"
 #include "Model.h"
 #include "Audio.h"
+#include "Options.h"
 
 /*########################################################################################################################*
 *----------------------------------------------------AnimatedComponent----------------------------------------------------*
@@ -228,18 +229,31 @@ void HacksComp_RecheckFlags(struct HacksComp* hacks) {
 	HacksComp_SetAll(hacks, hax);
 	hacks->CanBePushed   = true;
 
-	HacksComp_ParseFlag(hacks, "+fly",         "-fly",         &hacks->CanFly);
-	HacksComp_ParseFlag(hacks, "+noclip",      "-noclip",      &hacks->CanNoclip);
-	HacksComp_ParseFlag(hacks, "+speed",       "-speed",       &hacks->CanSpeed);
-	HacksComp_ParseFlag(hacks, "+respawn",     "-respawn",     &hacks->CanRespawn);
-	HacksComp_ParseFlag(hacks, "+push",        "-push",        &hacks->CanBePushed);
-	HacksComp_ParseFlag(hacks, "+thirdperson", "-thirdperson", &hacks->CanUseThirdPerson);
-	HacksComp_ParseFlag(hacks, "+names",       "-names",       &hacks->CanSeeAllNames);
+	if(Options_GetBool(OPT_HACKS_OVERRIDE, true)) {
+		Platform_Log("Overriding cheats", 18);
+		hacks->CanFly = true;
+		hacks->CanNoclip = true;
+		hacks->CanSpeed = true;
+		hacks->CanRespawn = true;
+		hacks->CanBePushed = true;
+		hacks->CanUseThirdPerson = true;
+		hacks->CanSeeAllNames = true;
+	} else {
+		Platform_Log("Not overriding cheats", 22);
+		HacksComp_ParseFlag(hacks, "+fly",         "-fly",         &hacks->CanFly);
+		HacksComp_ParseFlag(hacks, "+noclip",      "-noclip",      &hacks->CanNoclip);
+		HacksComp_ParseFlag(hacks, "+speed",       "-speed",       &hacks->CanSpeed);
+		HacksComp_ParseFlag(hacks, "+respawn",     "-respawn",     &hacks->CanRespawn);
+		HacksComp_ParseFlag(hacks, "+push",        "-push",        &hacks->CanBePushed);
+		HacksComp_ParseFlag(hacks, "+thirdperson", "-thirdperson", &hacks->CanUseThirdPerson);
+		HacksComp_ParseFlag(hacks, "+names",       "-names",       &hacks->CanSeeAllNames);
+		if (hacks->IsOp) HacksComp_ParseAllFlag(hacks, "+ophax", "-ophax");
+	}
 
-	if (hacks->IsOp) HacksComp_ParseAllFlag(hacks, "+ophax", "-ophax");
 	hacks->BaseHorSpeed = HacksComp_ParseFlagFloat("horspeed=", hacks);
 	hacks->MaxHorSpeed  = HacksComp_ParseFlagFloat("maxspeed=", hacks);
-	hacks->MaxJumps =     HacksComp_ParseFlagInt("jumps=",  hacks) + 2;
+	//TODO - WL - add jump ammount to hax settings
+	hacks->MaxJumps =     HacksComp_ParseFlagInt("jumps=",  hacks);
 	HacksComp_Update(hacks);
 }
 
diff --git a/src/EntityComponents.h b/src/EntityComponents.h
index 30f2882..f70be08 100644
--- a/src/EntityComponents.h
+++ b/src/EntityComponents.h
@@ -47,6 +47,7 @@ struct HacksComp {
 	cc_bool FullBlockStep;
 	/* Whether user has allowed hacks as an option. Note 'can use X' set by the server override this */
 	cc_bool Enabled;
+	cc_bool Override;
 
 	cc_bool CanAnyHacks, CanUseThirdPerson, CanSpeed, CanFly;
 	cc_bool CanRespawn, CanNoclip, CanPushbackBlocks,CanSeeAllNames;
diff --git a/src/Menus.c b/src/Menus.c
index 7e18b78..5ba1a71 100644
--- a/src/Menus.c
+++ b/src/Menus.c
@@ -510,10 +510,21 @@ static struct Widget* pause_widgets[1 + 6 + 2];
 
 static void PauseScreen_CheckHacksAllowed(void* screen) {
 	struct PauseScreen* s = (struct PauseScreen*)screen;
+	//NOTE - WL
+	if (Options_GetBool(OPT_HACKS_OVERRIDE, true)) {
+		// i think this makes you able to do hax when u turn on override
+		Platform_Log("enabling buttonse", 18);
+		Widget_SetDisabled(&s->btns[1], false);
+		s->dirty = true;
+		return;
+	}
 	if (Gui.ClassicMenu) return;
 
 	Widget_SetDisabled(&s->btns[1],
 			!Entities.CurPlayer->Hacks.CanAnyHacks); /* select texture pack */
+	if(!Entities.CurPlayer->Hacks.CanAnyHacks) {
+		Platform_Log("disabling buttons", 18);
+	}
 	s->dirty = true;
 }
 
@@ -3189,6 +3200,13 @@ static void HacksSettingsScreen_SetWOMHacks(const cc_string* v) {
 	Entities.CurPlayer->Hacks.WOMStyleHacks = Menu_SetBool(v, OPT_WOM_STYLE_HACKS);
 }
 
+//a
+static void HacksSettingsScreen_GetOverride(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.Override); }
+static void HacksSettingsScreen_SetOverride(const cc_string* v) {
+	HacksComp_RecheckFlags(&Entities.CurPlayer->Hacks);
+	Entities.CurPlayer->Hacks.Override = Menu_SetBool(v, OPT_HACKS_OVERRIDE);
+}
+
 static void HacksSettingsScreen_GetFullStep(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.FullBlockStep); }
 static void HacksSettingsScreen_SetFullStep(const cc_string* v) {
 	Entities.CurPlayer->Hacks.FullBlockStep = Menu_SetBool(v, OPT_FULL_BLOCK_STEP);
@@ -3220,12 +3238,13 @@ static void HacksSettingsScreen_SetFOV(const cc_string* v) {
 }
 
 static void HacksSettingsScreen_CheckHacksAllowed(struct MenuOptionsScreen* s) {
+	PauseScreen_CheckHacksAllowed(s);
 	struct Widget** widgets = s->widgets;
 	struct LocalPlayer* p   = Entities.CurPlayer;
 	cc_bool disabled        = !p->Hacks.Enabled;
 
 	Widget_SetDisabled(widgets[3], disabled || !p->Hacks.CanSpeed);
-	Widget_SetDisabled(widgets[4], disabled || !p->Hacks.CanSpeed);
+	// Widget_SetDisabled(widgets[4], disabled || !p->Hacks.CanSpeed);
 	Widget_SetDisabled(widgets[5], disabled || !p->Hacks.CanSpeed);
 	Widget_SetDisabled(widgets[7], disabled || !p->Hacks.CanPushbackBlocks);
 	MenuInputOverlay_CheckStillValid(s);
@@ -3241,8 +3260,10 @@ static void HacksSettingsScreen_InitWidgets(struct MenuOptionsScreen* s) {
 			HacksSettingsScreen_GetClipping, HacksSettingsScreen_SetClipping },
 		{ -1,    0, "Jump height",      MenuOptionsScreen_Input,
 			HacksSettingsScreen_GetJump,     HacksSettingsScreen_SetJump },
-		{ -1,   50, "WoM style hacks",  MenuOptionsScreen_Bool,
-			HacksSettingsScreen_GetWOMHacks, HacksSettingsScreen_SetWOMHacks },
+		// { -1,   50, "WoM style hacks",  MenuOptionsScreen_Bool,
+		// 	HacksSettingsScreen_GetWOMHacks, HacksSettingsScreen_SetWOMHacks },
+		{ -1,   50, "Hack override",  MenuOptionsScreen_Bool,
+			HacksSettingsScreen_GetOverride, HacksSettingsScreen_SetOverride },
 	
 		{ 1, -150, "Full block stepping", MenuOptionsScreen_Bool,
 			HacksSettingsScreen_GetFullStep, HacksSettingsScreen_SetFullStep },
@@ -3263,10 +3284,7 @@ static void HacksSettingsScreen_InitWidgets(struct MenuOptionsScreen* s) {
 	s->descriptions[2] = "&eIf &fON&e, then the third person cameras will limit\n&etheir zoom distance if they hit a solid block.";
 	s->descriptions[3] = "&eSets how many blocks high you can jump up.\n&eNote: You jump much higher when holding down the Speed key binding.";
 	s->descriptions[4] = \
-		"&eIf &fON&e, gives you a triple jump which increases speed massively,\n" \
-		"&ealong with older noclip style. This is based on the \"World of Minecraft\"\n" \
-		"&eclassic client mod, which popularized hacks conventions and controls\n" \
-		"&ebefore ClassiCube was created.";
+		"&eIf &fON&e, overrides the server's hack settings and allows you to use hacks wherever\n";
 	s->descriptions[7] = \
 		"&eIf &fON&e, placing blocks that intersect your own position cause\n" \
 		"&ethe block to be placed, and you to be moved out of the way.\n" \
diff --git a/src/Options.h b/src/Options.h
index e359b3d..cb10e69 100644
--- a/src/Options.h
+++ b/src/Options.h
@@ -40,6 +40,7 @@ Copyright 2014-2023 ClassiCube | Licensed under BSD-3
 #define OPT_WOM_STYLE_HACKS "hacks-womstylehacks"
 #define OPT_FULL_BLOCK_STEP "hacks-fullblockstep"
 #define OPT_HACK_PERM_MSGS "hacks-perm-msgs"
+#define OPT_HACKS_OVERRIDE "hacks-hacksoverride"
 
 #define OPT_TAB_AUTOCOMPLETE "gui-tab-autocomplete"
 #define OPT_SHOW_BLOCK_IN_HAND "gui-blockinhand"