Skip to content

Commit d224ab1

Browse files
committed
Merge branch 'master' into release
2 parents 5552048 + 891612d commit d224ab1

25 files changed

+3621
-3397
lines changed

.github/workflows/dotnet.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,5 @@ jobs:
3838
file: src/MiNET/MiNET.Console/minet.zip
3939
asset_name: MiNET.zip
4040
tag: ${{ github.ref }}
41-
release_name: MiNET-CobwebSMP 1.13.0.11 (1.20.80)
41+
release_name: MiNET-CobwebSMP 1.13.0.12 (1.21.0)
4242
body: ${{ github.event.head_commit.message }}

src/MiNET/MiNET.Client/BedrockTraceHandler.cs

Lines changed: 41 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,29 @@ public override void HandleMcpeUpdateSoftEnum(McpeUpdateSoftEnum message)
6464

6565
public override void HandleMcpeDisconnect(McpeDisconnect message)
6666
{
67-
Log.InfoFormat("Disconnect {1}: {0}", message.message, Client.Username);
68-
67+
Log.Warn("[Disconnect Screen] ");
68+
switch (message.message.ToString())
69+
{
70+
case "disconnectionScreen.notAuthenticated":
71+
Log.Warn("You need to authenticate to Xbox Live services to join this server.");
72+
break;
73+
case "disconnectionScreen.invalidSkin":
74+
Log.Warn("Invalid skin.");
75+
break;
76+
case "disconnectionScreen.serverFull":
77+
case "disconnectionScreen.serverFull.title":
78+
Log.Warn("Server is full.");
79+
break;
80+
case "disconnectionScreen.resourcePack":
81+
Log.Warn("Resource pack error.");
82+
break;
83+
case "disconnectionScreen.badPacket":
84+
Log.Warn("Client sent invalid packet.");
85+
break;
86+
default:
87+
Log.Warn($"Server requested disconnect with message {message.message.ToString()}");
88+
break;
89+
}
6990
base.HandleMcpeDisconnect(message);
7091
}
7192

@@ -184,6 +205,12 @@ public override void HandleMcpeInventoryContent(McpeInventoryContent message)
184205

185206
public override void HandleMcpeCreativeContent(McpeCreativeContent message)
186207
{
208+
Log.Warn($"[McpeCreativeContent] Received {message.input.Count} creative items");
209+
foreach (var item in message.input)
210+
{
211+
//Log.Warn($"Got item: {item.Name} ({item.Id} : {item.Metadata})");
212+
}
213+
Log.Warn($"[McpeCreativeContent] Done reading {message.input.Count} creative items\n");
187214
}
188215

189216
public override void HandleMcpeAddItemEntity(McpeAddItemEntity message)
@@ -208,19 +235,6 @@ public override void HandleMcpeStartGame(McpeStartGame message)
208235
Client.SpawnPoint = message.spawn;
209236
Client.CurrentLocation = new PlayerLocation(Client.SpawnPoint, message.rotation.X, message.rotation.X, message.rotation.Y);
210237

211-
Log.Warn($"Got position from startgame packet: {Client.CurrentLocation}");
212-
213-
var settings = new JsonSerializerSettings
214-
{
215-
PreserveReferencesHandling = PreserveReferencesHandling.Arrays,
216-
TypeNameHandling = TypeNameHandling.Auto,
217-
Formatting = Formatting.Indented,
218-
DefaultValueHandling = DefaultValueHandling.Include
219-
};
220-
221-
var fileNameItemstates = "newResources/itemstates.json";
222-
File.WriteAllText(fileNameItemstates, JsonConvert.SerializeObject(message.itemstates, settings));
223-
224238
LogGamerules(message.levelSettings.gamerules);
225239

226240
Client.LevelInfo.LevelName = "Default";
@@ -591,9 +605,11 @@ public override void HandleMcpeLevelChunk(McpeLevelChunk message)
591605
Client.Chunks.GetOrAdd(new ChunkCoordinates(message.chunkX, message.chunkZ), coordinates =>
592606
{
593607
Log.Debug($"Chunk X={message.chunkX}, Z={message.chunkZ}, size={message.chunkData.Length}, Count={Client.Chunks.Count}");
594-
595-
ChunkColumn chunk = null;
596-
try
608+
if (BlockstateGenerator.running == false){ Console.WriteLine($"[McpeLevelChunk] Got chunk | X: {message.chunkX,-4} | Z: {message.chunkZ,-4} |"); ; }
609+
//broken, chunkData have weird values. Expected header something like: 09 01 02 08
610+
//Log.Debug($"{Packet.HexDump(message.Bytes)}");
611+
ChunkColumn chunk = null;
612+
/*try
597613
{
598614
chunk = ClientUtils.DecodeChunkColumn((int) message.subChunkCount, message.chunkData);
599615
if (chunk != null)
@@ -611,7 +627,7 @@ public override void HandleMcpeLevelChunk(McpeLevelChunk message)
611627
catch (Exception e)
612628
{
613629
Log.Error("Reading chunk", e);
614-
}
630+
}*/
615631

616632
return chunk;
617633
});
@@ -649,19 +665,12 @@ private static void LogGamerules(GameRules rules)
649665

650666
public override void HandleMcpeAvailableCommands(McpeAvailableCommands message)
651667
{
652-
//{
653-
// dynamic json = JObject.Parse(message.commands);
654-
655-
// //if (Log.IsDebugEnabled) Log.Debug($"Command JSON:\n{json}");
656-
// string fileName = Path.GetTempPath() + "AvailableCommands_" + Guid.NewGuid() + ".json";
657-
// Log.Info($"Writing commands to filename: {fileName}");
658-
// File.WriteAllText(fileName, message.commands);
659-
//}
660-
//{
661-
// dynamic json = JObject.Parse(message.unknown);
662-
663-
// //if (Log.IsDebugEnabled) Log.Debug($"Command (unknown) JSON:\n{json}");
664-
//}
668+
Log.Warn($"[McpeAvailableCommands] Received {message.CommandList.Count} commnands");
669+
foreach (var command in message.CommandList)
670+
{
671+
//Log.Warn($"Got command: {command.Name} - {command.Versions[0].Description}");
672+
}
673+
Log.Warn($"[McpeAvailableCommands] Done reading {message.CommandList.Count} commnands\n");
665674
}
666675

667676
public override void HandleMcpeResourcePackChunkData(McpeResourcePackChunkData message)

src/MiNET/MiNET.Client/BlockstateGenerator.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class BlockstateGenerator
1515
public static List<Schema> Schemas = new List<Schema>();
1616
public static Dictionary<int, Schema> blockPosition = new Dictionary<int, Schema>();
1717
public static bool customMode = false;
18+
public static bool running = false;
1819
public static int customId = 0;
1920
public static int customData = 0;
2021

@@ -48,6 +49,8 @@ public static void preInit()
4849
public static void init()
4950
{
5051
BlockPalette = new BlockPalette();
52+
running = true;
53+
Log.Warn("[McpeLevelChunk] Chunk reading disabled by BlockstateGenerator\n");
5154
}
5255

5356
public static void createContainer(string name, uint blockRuntime, int id, int data, List<schemaStates> states)
@@ -88,6 +91,8 @@ public static void write()
8891
{
8992
Log.Warn($"Completed successfully. All blockstates exported to 'newResources/blockstates.json'");
9093
}
94+
running = false;
95+
Log.Warn("[McpeLevelChunk] Chunk reading enabled by BlockstateGenerator\n");
9196
}
9297

9398
private static List<IBlockState> createState(string name, string value, string type)

src/MiNET/MiNET.Client/ClientUtils.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ public static ChunkColumn DecodeChunkColumn(int subChunkCount, byte[] buffer, Bl
8282
int blocksPerWord = (int) Math.Floor(32f / bitsPerBlock);
8383
int wordsPerChunk = (int) Math.Ceiling(4096f / blocksPerWord);
8484
uint wordsPer = (uint) Math.Ceiling(4096f / blocksPerWord);
85-
if (Log.IsTraceEnabled())
86-
Log.Trace($"New section {chunkIndex}, " +
85+
86+
Log.Debug($"New section {chunkIndex}, " +
8787
$"version={version}, " +
8888
$"storageSize={storageSize}, " +
8989
$"storageIndex={storageIndex}, " +
@@ -103,6 +103,7 @@ public static ChunkColumn DecodeChunkColumn(int subChunkCount, byte[] buffer, Bl
103103
return null;
104104

105105
words[i] = (uint) ((byte) stream.ReadByte()) | (uint) ((byte) stream.ReadByte()) << 8 | (uint) ((byte) stream.ReadByte()) << 16 | (uint) ((byte) stream.ReadByte()) << 24;
106+
Log.Debug($"bitsPerBlock {words[i]}");
106107
}
107108

108109
var paletteCount = 1;
@@ -194,12 +195,12 @@ public static ChunkColumn DecodeChunkColumn(int subChunkCount, byte[] buffer, Bl
194195
int borderBlock = (byte)VarInt.ReadSInt32(stream);
195196
if (borderBlock != 0)
196197
{
197-
Log.Warn($"??? Got borderblock with value {borderBlock}.");
198+
//Log.Warn($"??? Got borderblock with value {borderBlock}.");
198199

199200
int len = (int) (stream.Length - stream.Position);
200201
var bytes = new byte[len];
201202
stream.Read(bytes, 0, len);
202-
Log.Warn($"Data to read for border blocks\n{Packet.HexDump(new ReadOnlyMemory<byte>(bytes))}");
203+
//Log.Warn($"Data to read for border blocks\n{Packet.HexDump(new ReadOnlyMemory<byte>(bytes))}");
203204

204205
//byte[] buf = new byte[borderBlock];
205206
//int len = stream.Read(buf, 0, borderBlock);

src/MiNET/MiNET.Client/ICommandExecutioner.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ async void ExecuteBlockstates(BedrockTraceHandler caller)
108108
SendCommand(client, $"/setblock 0 50 0 cobblestone"); //hack to place air
109109
await Task.Delay(4000); //delay just to read this /|\
110110
SetGameRules(caller);
111-
SendCommand(client, $"/tp TheGrey 0 52 0");
111+
SendCommand(client, $"/tp TheGrey 0 352 0");
112112
await Task.Delay(500);
113113

114114
var x = 0;
@@ -138,7 +138,7 @@ async void ExecuteBlockstates(BedrockTraceHandler caller)
138138
SendCommand(client, $"/setblock {posX} 50 {posZ} {block.Command}");
139139
SendCommand(client, $"/setblock {posX} 50 {posZ} {block.Command}"); //TODO find out why sometimes at random time and random block are not placed
140140
SendCommand(client, $"/setblock {posX} 50 {posZ} {block.Command}");
141-
SendCommand(client, $"/tp TheGrey {x} 52 0");
141+
SendCommand(client, $"/tp TheGrey {x} 352 0");
142142
if (!BlockstateGenerator.blockPosition.ContainsKey(x)) { BlockstateGenerator.blockPosition.Add(x, block); }
143143
x += 2;
144144
tp++;
@@ -172,7 +172,6 @@ public void HandleMcpeUpdateBlock(BedrockTraceHandler caller, McpeUpdateBlock me
172172
BlockstateGenerator.blockPosition.Remove(message.coordinates.X);
173173
if (state.Name == "minecraft:barrier")
174174
{
175-
176175
BlockstateGenerator.write();
177176
}
178177
if (state.Id == BlockstateGenerator.customId && state.Data == BlockstateGenerator.customData && BlockstateGenerator.customMode)
@@ -186,7 +185,7 @@ public void HandleMcpeUpdateSubChunkBlocksPacket(BedrockTraceHandler caller, Mcp
186185
{
187186
foreach (var block in message.layerZeroUpdates)
188187
{
189-
//Log.Error($"layer2 {block.BlockRuntimeId} {block.Coordinates.X} {block.Coordinates.Y} {block.Coordinates.Z}");
188+
//Log.Error($"layer0 {block.BlockRuntimeId} {block.Coordinates.X} {block.Coordinates.Y} {block.Coordinates.Z}");
190189
if (BlockstateGenerator.blockPosition.TryGetValue(block.Coordinates.X, out var state) && block.Coordinates.Y == 50 && block.Coordinates.Z == 0 && !BlockstateGenerator.BlockPalette.ContainsKey((int)block.BlockRuntimeId))
191190
{
192191
Log.Warn($"Got runtimeID for {state.Name} (id: {state.Id} data: {state.Data})");

src/MiNET/MiNET.Client/McpeClientMessageHandlerBase.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -238,10 +238,6 @@ public virtual void HandleMcpeAddPainting(McpeAddPainting message)
238238
{
239239
}
240240

241-
public virtual void HandleMcpeTickSync(McpeTickSync message)
242-
{
243-
}
244-
245241
public virtual void HandleMcpeLevelSoundEventOld(McpeLevelSoundEventOld message)
246242
{
247243
}
@@ -738,7 +734,7 @@ public void HandleMcpeDimensionData(McpeDimensionData message)
738734
/// <inheritdoc />
739735
public void HandleMcpeUpdateAbilities(McpeUpdateAbilities message)
740736
{
741-
737+
Client.permissionLevel = (PermissionLevel) message.playerPermissions;
742738
}
743739

744740
/// <inheritdoc />

src/MiNET/MiNET.Client/MiNetClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,8 @@ public void InitiateEncryption(byte[] serverKey, byte[] randomKeyToken)
235235

236236
public CommandPermission UserPermission { get; set; }
237237

238+
public PermissionLevel permissionLevel { get; set; }
239+
238240
public AutoResetEvent PlayerStatusChangedWaitHandle = new AutoResetEvent(false);
239241

240242
public bool HasSpawned { get; set; }

src/MiNET/MiNET.Client/README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ Client used for debugging, tests and resource generation.
88
1. Download official [Minecraft Bedrock Edition server software](https://www.minecraft.net/en-us/download/server/bedrock)
99
2. Open `server.properties` and set `online-mode=false`
1010
3. Run official Minecraft Bedrock Edition server software and MiNET client.
11-
4. When MiNET client say `... spawned` in official Minecraft Bedrock Edition server software console type `op thegrey` and `say blockstates`
12-
13-
For better results it is recommended to load flat world file to official Minecraft Bedrock Edition server.
11+
4. When MiNET client say `... spawned`, in MiNET client console type `/blockstates`
1412

1513
After couple of minutes you should see `Completed successfully. All blockstates exported to 'newResources/blockstates.json`

0 commit comments

Comments
 (0)