SetDimension bug fix

Fixed bug in `SetDimension` method of `World` class, where it would c…
This commit is contained in:
Anon 2024-12-06 17:13:10 +00:00 committed by GitHub
commit 814cd69380
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 6 deletions

View file

@ -19,7 +19,7 @@ namespace MinecraftClient.Mapping
/// <summary>
/// The dimension info of the world
/// </summary>
private static Dimension curDimension = new();
private static Dimension curDimension= new();
private static readonly Dictionary<string, Dimension> dimensionList = new();
@ -87,10 +87,32 @@ namespace MinecraftClient.Mapping
/// </summary>
/// <param name="name"> The name of the dimension type</param>
/// <param name="nbt">The dimension type (NBT Tag Compound)</param>
public static void SetDimension(string name)
{
curDimension = dimensionList[name]; // Should not fail
}
public static void SetDimension(string name)
{
// Try to get the dimension using the name as is
if (dimensionList.TryGetValue(name, out Dimension dimension))
{
curDimension = dimension;
return; // Dimension found
}
// If not found, check if name lacks 'minecraft:' prefix and try again
if (!name.StartsWith("minecraft:"))
{
string prefixedName = "minecraft:" + name;
if (dimensionList.TryGetValue(prefixedName, out dimension))
{
curDimension = dimension;
return; // Dimension found with prefixed name
}
}
// If still not found, dimension does not exist
throw new KeyNotFoundException($"Dimension '{name}' not found in dimensions dictionary.");
}
/// <summary>

View file

@ -660,7 +660,8 @@ namespace MinecraftClient.Protocol.Handlers
{
case >= MC_1_16_2_Version and <= MC_1_18_2_Version:
World.StoreOneDimension(dimensionName, dimensionType!);
World.SetDimension(dimensionName);
// World.SetDimension(dimensionName);
World.SetDimension(dimensionName);
break;
default:
World.SetDimension(dimensionTypeName!);