From 96b57b80d035f2bb47a2fdd30e79019b7dd9da18 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sat, 7 Sep 2019 09:40:10 +1000 Subject: [PATCH] Add a mac version of classicube icon --- credits.txt | 5 +- misc/CCIcon.icns | Bin 0 -> 62576 bytes readme.md | 2 +- src/Formats.c | 138 +++++++++++++++++++++++------------------------ src/Resources.c | 2 +- 5 files changed, 74 insertions(+), 73 deletions(-) create mode 100644 misc/CCIcon.icns diff --git a/credits.txt b/credits.txt index 23a4d40e2..bd360a946 100644 --- a/credits.txt +++ b/credits.txt @@ -1,7 +1,8 @@ * Goodlyay - many suggestions, and being a great second pairs of eyes for issues and improvements with character modelling, animating, and view bobbing. Also designed the icons. + Also designed all the textures in the web client. Big thanks! * AndrewPH - Advice on how to improve ui of both client and launcher, multiple - suggestions, and hosting the automatic build bot for ClassicalSharp. + suggestions, and hosting the automatic build bot for ClassiCube. * 123DMWM - many suggestions, and assistance in identifying bugs and their causes. * video_error - Allowing remote use of an OSX machine, pointing out many flaws in the plugin API. The OSX port would not have been possible without you, thanks! @@ -14,4 +15,4 @@ And a big thanks to everyone else in the ClassiCube community (who I didn't mention here), who in the past have provided many suggestions and assisted in identifying bugs. -* Portions of the FreeType project (https://www.freetype.org/) are used for text rendering \ No newline at end of file +* Portions of the FreeType project (https://www.freetype.org/) are used for text rendering diff --git a/misc/CCIcon.icns b/misc/CCIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..d52d05fa332792d9c3a9c76c6e2a17a9a1f25964 GIT binary patch literal 62576 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 literal 0 HcmV?d00001 diff --git a/readme.md b/readme.md index 41d348c68..4127b95b7 100644 --- a/readme.md +++ b/readme.md @@ -16,7 +16,7 @@ It **does not** work with 'modern/premium' Minecraft servers. #### Requirements * Windows: 2000 or later. (Windows 98 with KernelEx also *technically* works) -* OSX: OSX 10.5 or later. +* OSX: OSX 10.5 or later. (Can be compiled to work with 10.4 though) * Linux: libcurl and libopenal. #### Instructions diff --git a/src/Formats.c b/src/Formats.c index 0c3d0ff27..ad5cba895 100644 --- a/src/Formats.c +++ b/src/Formats.c @@ -289,58 +289,58 @@ enum NbtTagType { #define NBT_SMALL_SIZE STRING_SIZE #define NBT_STRING_SIZE STRING_SIZE -#define NbtTag_IsSmall(tag) ((tag)->DataSize <= NBT_SMALL_SIZE) +#define NbtTag_IsSmall(tag) ((tag)->dataSize <= NBT_SMALL_SIZE) struct NbtTag; struct NbtTag { - struct NbtTag* Parent; - cc_uint8 TagID; - char NameBuffer[NBT_STRING_SIZE]; - String Name; - cc_uint32 DataSize; /* size of data for arrays */ + struct NbtTag* parent; + cc_uint8 type; + String name; + cc_uint32 dataSize; /* size of data for arrays */ union { - cc_uint8 U8; - cc_int16 I16; - cc_uint16 U16; - cc_uint32 U32; - float F32; - cc_uint8 Small[NBT_SMALL_SIZE]; - cc_uint8* Big; /* malloc for big byte arrays */ - struct { String Text; char Buffer[NBT_STRING_SIZE]; } Str; - } Value; + cc_uint8 u8; + cc_int16 i16; + cc_uint16 u16; + cc_uint32 u32; + float f32; + cc_uint8 small[NBT_SMALL_SIZE]; + cc_uint8* big; /* malloc for big byte arrays */ + struct { String text; char buffer[NBT_STRING_SIZE]; } str; + } value; + char _nameBuffer[NBT_STRING_SIZE]; }; static cc_uint8 NbtTag_U8(struct NbtTag* tag) { - if (tag->TagID != NBT_I8) Logger_Abort("Expected I8 NBT tag"); - return tag->Value.U8; + if (tag->type != NBT_I8) Logger_Abort("Expected I8 NBT tag"); + return tag->value.u8; } static cc_int16 NbtTag_I16(struct NbtTag* tag) { - if (tag->TagID != NBT_I16) Logger_Abort("Expected I16 NBT tag"); - return tag->Value.I16; + if (tag->type != NBT_I16) Logger_Abort("Expected I16 NBT tag"); + return tag->value.i16; } static cc_uint16 NbtTag_U16(struct NbtTag* tag) { - if (tag->TagID != NBT_I16) Logger_Abort("Expected I16 NBT tag"); - return tag->Value.U16; + if (tag->type != NBT_I16) Logger_Abort("Expected I16 NBT tag"); + return tag->value.u16; } static float NbtTag_F32(struct NbtTag* tag) { - if (tag->TagID != NBT_F32) Logger_Abort("Expected F32 NBT tag"); - return tag->Value.F32; + if (tag->type != NBT_F32) Logger_Abort("Expected F32 NBT tag"); + return tag->value.f32; } static cc_uint8* NbtTag_U8_Array(struct NbtTag* tag, int minSize) { - if (tag->TagID != NBT_I8S) Logger_Abort("Expected I8_Array NBT tag"); - if (tag->DataSize < minSize) Logger_Abort("I8_Array NBT tag too small"); + if (tag->type != NBT_I8S) Logger_Abort("Expected I8_Array NBT tag"); + if (tag->dataSize < minSize) Logger_Abort("I8_Array NBT tag too small"); - return NbtTag_IsSmall(tag) ? tag->Value.Small : tag->Value.Big; + return NbtTag_IsSmall(tag) ? tag->value.small : tag->value.big; } static String NbtTag_String(struct NbtTag* tag) { - if (tag->TagID != NBT_STR) Logger_Abort("Expected String NBT tag"); - return tag->Value.Str.Text; + if (tag->type != NBT_STR) Logger_Abort("Expected String NBT tag"); + return tag->value.str.text; } static ReturnCode Nbt_ReadString(struct Stream* stream, String* str) { @@ -367,27 +367,27 @@ static ReturnCode Nbt_ReadTag(cc_uint8 typeId, bool readTagName, struct Stream* cc_uint32 i, count; if (typeId == NBT_END) return 0; - tag.TagID = typeId; - tag.Parent = parent; - tag.DataSize = 0; - String_InitArray(tag.Name, tag.NameBuffer); + tag.type = typeId; + tag.parent = parent; + tag.dataSize = 0; + String_InitArray(tag.name, tag._nameBuffer); if (readTagName) { - res = Nbt_ReadString(stream, &tag.Name); + res = Nbt_ReadString(stream, &tag.name); if (res) return res; } switch (typeId) { case NBT_I8: - res = stream->ReadU8(stream, &tag.Value.U8); + res = stream->ReadU8(stream, &tag.value.u8); break; case NBT_I16: res = Stream_Read(stream, tmp, 2); - tag.Value.U16 = Stream_GetU16_BE(tmp); + tag.value.u16 = Stream_GetU16_BE(tmp); break; case NBT_I32: case NBT_F32: - res = Stream_ReadU32_BE(stream, &tag.Value.U32); + res = Stream_ReadU32_BE(stream, &tag.value.u32); break; case NBT_I64: case NBT_R64: @@ -395,21 +395,21 @@ static ReturnCode Nbt_ReadTag(cc_uint8 typeId, bool readTagName, struct Stream* break; /* (8) data */ case NBT_I8S: - if ((res = Stream_ReadU32_BE(stream, &tag.DataSize))) break; + if ((res = Stream_ReadU32_BE(stream, &tag.dataSize))) break; if (NbtTag_IsSmall(&tag)) { - res = Stream_Read(stream, tag.Value.Small, tag.DataSize); + res = Stream_Read(stream, tag.value.small, tag.dataSize); } else { - tag.Value.Big = (cc_uint8*)Mem_TryAlloc(tag.DataSize, 1); - if (!tag.Value.Big) return ERR_OUT_OF_MEMORY; + tag.value.big = (cc_uint8*)Mem_TryAlloc(tag.dataSize, 1); + if (!tag.value.big) return ERR_OUT_OF_MEMORY; - res = Stream_Read(stream, tag.Value.Big, tag.DataSize); - if (res) Mem_Free(tag.Value.Big); + res = Stream_Read(stream, tag.value.big, tag.dataSize); + if (res) Mem_Free(tag.value.big); } break; case NBT_STR: - String_InitArray(tag.Value.Str.Text, tag.Value.Str.Buffer); - res = Nbt_ReadString(stream, &tag.Value.Str.Text); + String_InitArray(tag.value.str.text, tag.value.str.buffer); + res = Nbt_ReadString(stream, &tag.value.str.text); break; case NBT_LIST: @@ -440,10 +440,10 @@ static ReturnCode Nbt_ReadTag(cc_uint8 typeId, bool readTagName, struct Stream* if (res) return res; callback(&tag); /* NOTE: callback must set DataBig to NULL, if doesn't want it to be freed */ - if (!NbtTag_IsSmall(&tag)) Mem_Free(tag.Value.Big); + if (!NbtTag_IsSmall(&tag)) Mem_Free(tag.value.big); return 0; } -#define IsTag(tag, tagName) (String_CaselessEqualsConst(&tag->Name, tagName)) +#define IsTag(tag, tagName) (String_CaselessEqualsConst(&tag->name, tagName)) /*########################################################################################################################* *--------------------------------------------------ClassicWorld format----------------------------------------------------* @@ -491,11 +491,11 @@ COMPOUND "ClassicWorld" { static BlockRaw* Cw_GetBlocks(struct NbtTag* tag) { BlockRaw* ptr; if (NbtTag_IsSmall(tag)) { - ptr = (BlockRaw*)Mem_Alloc(tag->DataSize, 1, ".cw map blocks"); - Mem_Copy(ptr, tag->Value.Small, tag->DataSize); + ptr = (BlockRaw*)Mem_Alloc(tag->dataSize, 1, ".cw map blocks"); + Mem_Copy(ptr, tag->value.small, tag->dataSize); } else { - ptr = tag->Value.Big; - tag->Value.Big = NULL; /* So Nbt_ReadTag doesn't call Mem_Free on World.Blocks */ + ptr = tag->value.big; + tag->value.big = NULL; /* So Nbt_ReadTag doesn't call Mem_Free on World.Blocks */ } return ptr; } @@ -506,13 +506,13 @@ static void Cw_Callback_1(struct NbtTag* tag) { if (IsTag(tag, "Z")) { World.Length = NbtTag_U16(tag); return; } if (IsTag(tag, "UUID")) { - if (tag->DataSize != sizeof(World.Uuid)) Logger_Abort("Map UUID must be 16 bytes"); - Mem_Copy(World.Uuid, tag->Value.Small, sizeof(World.Uuid)); + if (tag->dataSize != sizeof(World.Uuid)) Logger_Abort("Map UUID must be 16 bytes"); + Mem_Copy(World.Uuid, tag->value.small, sizeof(World.Uuid)); return; } if (IsTag(tag, "BlockArray")) { - World.Volume = tag->DataSize; + World.Volume = tag->dataSize; World.Blocks = Cw_GetBlocks(tag); } #ifdef EXTENDED_BLOCKS @@ -522,7 +522,7 @@ static void Cw_Callback_1(struct NbtTag* tag) { static void Cw_Callback_2(struct NbtTag* tag) { struct LocalPlayer* p = &LocalPlayer_Instance; - if (!IsTag(tag->Parent, "Spawn")) return; + if (!IsTag(tag->parent, "Spawn")) return; if (IsTag(tag, "X")) { p->Spawn.X = NbtTag_I16(tag); return; } if (IsTag(tag, "Y")) { p->Spawn.Y = NbtTag_I16(tag); return; } @@ -546,17 +546,17 @@ static void Cw_Callback_4(struct NbtTag* tag) { BlockID id = cw_curID; struct LocalPlayer* p = &LocalPlayer_Instance; - if (!IsTag(tag->Parent->Parent, "CPE")) return; - if (!IsTag(tag->Parent->Parent->Parent, "Metadata")) return; + if (!IsTag(tag->parent->parent, "CPE")) return; + if (!IsTag(tag->parent->parent->parent, "Metadata")) return; - if (IsTag(tag->Parent, "ClickDistance")) { + if (IsTag(tag->parent, "ClickDistance")) { if (IsTag(tag, "Distance")) { p->ReachDistance = NbtTag_U16(tag) / 32.0f; return; } } - if (IsTag(tag->Parent, "EnvWeatherType")) { + if (IsTag(tag->parent, "EnvWeatherType")) { if (IsTag(tag, "WeatherType")) { Env.Weather = NbtTag_U8(tag); return; } } - if (IsTag(tag->Parent, "EnvMapAppearance")) { + if (IsTag(tag->parent, "EnvMapAppearance")) { if (IsTag(tag, "SideBlock")) { Env.SidesBlock = NbtTag_U8(tag); return; } if (IsTag(tag, "EdgeBlock")) { Env.EdgeBlock = NbtTag_U8(tag); return; } if (IsTag(tag, "SideLevel")) { Env.EdgeHeight = NbtTag_I16(tag); return; } @@ -569,7 +569,7 @@ static void Cw_Callback_4(struct NbtTag* tag) { } /* Callback for compound tag is called after all its children have been processed */ - if (IsTag(tag->Parent, "EnvColors")) { + if (IsTag(tag->parent, "EnvColors")) { if (IsTag(tag, "Sky")) { Env.SkyCol = Cw_ParseCol(Env_DefaultSkyCol); return; } else if (IsTag(tag, "Cloud")) { @@ -583,9 +583,9 @@ static void Cw_Callback_4(struct NbtTag* tag) { } } - if (IsTag(tag->Parent, "BlockDefinitions") && Game_AllowCustomBlocks) { + if (IsTag(tag->parent, "BlockDefinitions") && Game_AllowCustomBlocks) { static const String blockStr = String_FromConst("Block"); - if (!String_CaselessStarts(&tag->Name, &blockStr)) return; + if (!String_CaselessStarts(&tag->name, &blockStr)) return; /* hack for sprite draw (can't rely on order of tags when reading) */ if (Blocks.SpriteOffset[id] == 0) { @@ -609,16 +609,16 @@ static void Cw_Callback_5(struct NbtTag* tag) { cc_uint8* arr; cc_uint8 sound; - if (!IsTag(tag->Parent->Parent->Parent, "CPE")) return; - if (!IsTag(tag->Parent->Parent->Parent->Parent, "Metadata")) return; + if (!IsTag(tag->parent->parent->parent, "CPE")) return; + if (!IsTag(tag->parent->parent->parent->parent, "Metadata")) return; - if (IsTag(tag->Parent->Parent, "EnvColors")) { + if (IsTag(tag->parent->parent, "EnvColors")) { if (IsTag(tag, "R")) { cw_colR = NbtTag_U16(tag); return; } if (IsTag(tag, "G")) { cw_colG = NbtTag_U16(tag); return; } if (IsTag(tag, "B")) { cw_colB = NbtTag_U16(tag); return; } } - if (IsTag(tag->Parent->Parent, "BlockDefinitions") && Game_AllowCustomBlocks) { + if (IsTag(tag->parent->parent, "BlockDefinitions") && Game_AllowCustomBlocks) { if (IsTag(tag, "ID")) { cw_curID = NbtTag_U8(tag); return; } if (IsTag(tag, "ID2")) { cw_curID = NbtTag_U16(tag); return; } if (IsTag(tag, "CollideType")) { Block_SetCollide(id, NbtTag_U8(tag)); return; } @@ -641,7 +641,7 @@ static void Cw_Callback_5(struct NbtTag* tag) { Block_Tex(id, FACE_ZMIN) = arr[4]; Block_Tex(id, FACE_ZMAX) = arr[5]; /* hacky way of storing upper 8 bits */ - if (tag->DataSize >= 12) { + if (tag->dataSize >= 12) { Block_Tex(id, FACE_YMAX) |= arr[6] << 8; Block_Tex(id, FACE_YMIN) |= arr[7] << 8; Block_Tex(id, FACE_XMIN) |= arr[8] << 8; Block_Tex(id, FACE_XMAX) |= arr[9] << 8; Block_Tex(id, FACE_ZMIN) |= arr[10] << 8; Block_Tex(id, FACE_ZMAX) |= arr[11] << 8; @@ -681,9 +681,9 @@ static void Cw_Callback_5(struct NbtTag* tag) { } static void Cw_Callback(struct NbtTag* tag) { - struct NbtTag* tmp = tag->Parent; + struct NbtTag* tmp = tag->parent; int depth = 0; - while (tmp) { depth++; tmp = tmp->Parent; } + while (tmp) { depth++; tmp = tmp->parent; } switch (depth) { case 1: Cw_Callback_1(tag); return; diff --git a/src/Resources.c b/src/Resources.c index 7027d8b20..c4d9d771e 100644 --- a/src/Resources.c +++ b/src/Resources.c @@ -372,7 +372,7 @@ static ReturnCode ZipPatcher_WritePng(struct Stream* s, struct ResourceTexture* "6 2 0 0 16 32 0" static Bitmap terrainBmp; -static bool ClassicPatcher_SelectEntry(const String* path ) { +static bool ClassicPatcher_SelectEntry(const String* path) { String name = *path; Utils_UNSAFE_GetFilename(&name); return Resources_FindTex(&name) != NULL;