JasonWang 6 лет назад
Родитель
Сommit
6c23c82006

+ 13 - 16
README-zh.md

@@ -7,18 +7,18 @@ MineCase
 
 #### [English](https://github.com/dotnetGame/MineCase/blob/master/README.md) | [中文](https://github.com/dotnetGame/MineCase/blob/master/README-zh.md) 
 
-`MineCase` 是一个跨平台、分布式的 `Minecraft` 服务端应用
+`MineCase` 是一个跨平台、分布式的 `Minecraft` 服务
 
 本项目使用 `.NET Core` 编写,基于 [orleans](https://github.com/dotnet/orleans) 框架。它通过 Actor 模型将各个模块分离开来,从而构建一个高效的分布式系统。
 
 不同的区块由不同的服务器管理,所有的玩家都可以在同一个世界进行游戏,这位minecraft服务器带来了更多的拓展性。
 
-目前仅支持 `Minecraft` [1.12](https://minecraft.net/en-us/article/minecraft-112-pre-release-6) 的版本。
+目前仅支持 `Minecraft`  [1.15.2](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-15-2)的版本。
 
 ![Screenshots](screenshots/1.jpg)
 
 ## 运行需要
-* [.Net Core 2.0](https://www.microsoft.com/net/download)
+* [.Net Core 3.1](https://www.microsoft.com/net/download)
 * [MongoDB](https://www.mongodb.com/download-center/community)
 
 ## 安装
@@ -28,7 +28,7 @@ MineCase
 * 2 . 下载并安装 [MongoDB](https://www.mongodb.com/download-center?jmp=nav#community)。
 * 3 . 从 [github page](https://github.com/dotnetGame/MineCase/archive/master.zip) 下载`MineCase`(或者使用 **clone:** 指令)。
 	```bash
-	git clone --depth 1 https://github.com/dotnetGame/MineCase.git
+	git clone [email protected]:dotnetGame/MineCase.git
 	cd MineCase
 	```
 * 4 . 解压 `Minecase` 压缩包.
@@ -37,19 +37,16 @@ MineCase
     * **Linux** : 运行 `build_and_run.sh`.
     * **Win** : 双击 `build_and_run.bat`.
 
-## 使用docker安装
-* 1 . 下载并安装`Docker` [Mac](https://docs.docker.com/docker-for-mac/install/) [Linux](https://docs.docker.com/install/) [Windows](https://docs.docker.com/docker-for-windows/install/)。
-* 2 .
+## 开发者
+![https://github.com/sunnycase](https://i.loli.net/2020/02/19/QWGu4759qeUam8c.png)![https://github.com/jstzwj](https://i.loli.net/2020/02/19/kSqmT7cFfp5Qi4L.png)![https://github.com/akemimadoka](https://i.loli.net/2020/02/19/s2GmUF7SwqzC9ER.png)![https://github.com/Alinshans](https://i.loli.net/2020/02/19/yt9DE4LT1RkweQb.png)![https://github.com/ray-cast](https://i.loli.net/2020/02/19/r42VmKzjlpaQPCc.png)![https://github.com/Melonpi](https://i.loli.net/2020/02/19/KcW4pes71AR5bqH.png)![https://github.com/zaoqi](https://i.loli.net/2020/02/19/15ByH8UoICESudh.png)
 
-	```bash
-	url=https://raw.githubusercontent.com/dotnetGame/MineCase/master/build/docker/linux/docker-compose.yml
-	curl -o docker-compose.yml $url
-	docker-compose up
-	```
-	##### 建议:
-	* 你可以输入 `docker-compose stop`停止服务器的运行。
+## 特别感谢
+* ![https://www.patreon.com/acid_chicken](https://i.loli.net/2020/02/19/qoR9anvrkNLtSY8.png) Acid Chicken
+* ![https://www.patreon.com/user/creators?u=4934636](https://i.loli.net/2020/02/19/KCRsaH4JTSIow29.png) Balajanovski
+* [![https://www.patreon.com/Gongo/creators](https://i.loli.net/2020/02/22/gH68tvU4S2JrOPL.png)](https://www.patreon.com/Gongo/creators) Gongo
 
 ## 参与开发
+
 我们需要帮助以使MineCase更好。 您可以通过修复错误,开发新功能,改进文档来帮助我们。
 一些新的贡献者想知道该做些什么来帮助我们的开发。 该项目始于对Minecraft的热爱,所以我们的答案始终是“做你喜欢的事”。
 我们珍爱你们的帮助,更喜爱看到你们在MineCase中做着你们所热爱的工作。
@@ -60,14 +57,14 @@ MineCase
 我们欢迎且感谢您对我们项目的贡献。
 
 * 通过e-mail联系我: [email protected]
-* [Discord](https://discord.gg/8Z5RSRn) : MineCase
+* Discord : [MineCase](https://discord.gg/8Z5RSRn)
 * QQ群: 667481568
 
 [License (MIT)](https://raw.githubusercontent.com/dotnetGame/MineCase/master/LICENSE)
 -------------------------------------------------------------------------------
 	MIT License
 	
-	Copyright (c) 2017-2019 MineCase
+	Copyright (c) 2017-2020 MineCase
 	
 	Permission is hereby granted, free of charge, to any person obtaining a copy
 	of this software and associated documentation files (the "Software"), to deal

+ 30 - 28
README.md

@@ -7,26 +7,29 @@ MineCase
 
 #### [English](https://github.com/dotnetGame/MineCase/blob/master/README.md) | [中文](https://github.com/dotnetGame/MineCase/blob/master/README-zh.md) 
 
-`MineCase` is a cross-platform application with distributed server of `Minecraft`. 
-The project is designed to create a high-performance, distributed system by using isolating different components through actor mode. 
-Different chunks are managed by different servers so that all players can play in a world. This makes minecraft servers more scalable.
-Anarchy servers can allow more players to join in without waiting in queue by using distributing server.
-It written in `C#` with `.NET Core 2.0` env and based on `orleans` framework to work with released [1.12 protocol](https://minecraft.net/en-us/article/minecraft-112-pre-release-6).
+`MineCase` is a `Minecraft` server implement in dotnet core. 
+The project is designed to create a high-performance, distributed `Minecraft` server with virtual actor provided by Orleans distributed framework. 
+Different chunks are managed on different servers so that more players can join in and play in the same world. This makes minecraft servers more scalable.
+Servers like Anarchy servers can allow more players to join in without waiting in queue by using distributed server.
+It written in `C#` with `.NET Core 3.1` env and based on `orleans` framework to work with released [1.15.2 protocol](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-15-2). The [website](https://wiki.vg/) describes the Minecraft protocol clearly.
+
+**MineCase is under refactoring, so branch refactor may not work.**
 
 **MineCase is not stable and lack of many features now. Please don't use MineCase in production unless you know what you're doing.**
 
 ![Screenshots](screenshots/1.jpg)
 
 ## Run Requirements
-* [.Net Core 2.0](https://www.microsoft.com/net/download)
+* [.Net Core 3.1](https://www.microsoft.com/net/download)
 * [MongoDB](https://www.mongodb.com/download-center/community)
 
 ## Install (Build From Source)
 * 1 . Download and install a `.NET Core sdk` from this [page](https://www.microsoft.com/net/download).
 * 2 . Download and install a `MongoDB` from this [page](https://www.mongodb.com/download-center?jmp=nav#community).
 * 3 . Download a `MineCase` archive from the [github page](https://github.com/dotnetGame/MineCase/archive/master.zip)  (or **clone:**)
+	
 	```bash
-	git clone --depth 1 https://github.com/dotnetGame/MineCase.git
+	git clone [email protected]:dotnetGame/MineCase.git
 	cd MineCase
 	```
 * 4 . Un-zip `Minecase` archive.
@@ -35,46 +38,45 @@ It written in `C#` with `.NET Core 2.0` env and based on `orleans` framework to
     * **Linux** : Run the `build_and_run.sh`.
     * **Win** : Double-click `build_and_run.bat`.
 
-## Install (Docker)
-* 1 . Download and install `Docker` [Mac](https://docs.docker.com/docker-for-mac/install/) [Linux](https://docs.docker.com/install/) [Windows](https://docs.docker.com/docker-for-windows/install/).
-* 2 .
+## How it works
+None
 
-	```bash
-	url=https://raw.githubusercontent.com/dotnetGame/MineCase/master/build/docker/linux/docker-compose.yml
-	curl -o docker-compose.yml $url
-	docker-compose up
-	```
-	##### Tips:
-	* You can stop the server by enter `docker-compose stop`.
+
+
+## Contributors
+[![sunnycase](https://i.loli.net/2020/02/19/QWGu4759qeUam8c.png)](https://github.com/sunnycase)[![jstzwj](https://i.loli.net/2020/02/19/kSqmT7cFfp5Qi4L.png)](https://github.com/jstzwj)[![akemimadoka](https://i.loli.net/2020/02/19/s2GmUF7SwqzC9ER.png)](https://github.com/akemimadoka)[![Alinshans](https://i.loli.net/2020/02/19/yt9DE4LT1RkweQb.png)](https://github.com/Alinshans)[![ray-cast](https://i.loli.net/2020/02/19/r42VmKzjlpaQPCc.png)](https://github.com/ray-cast)[![Melonpi](https://i.loli.net/2020/02/19/KcW4pes71AR5bqH.png)](https://github.com/Melonpi)[![zaoqi](https://i.loli.net/2020/02/19/15ByH8UoICESudh.png)](https://github.com/zaoqi)
+
+## Credits
+
+**Patreon backers**
+
+Wooden Pickaxe backers:
+
+* [![https://www.patreon.com/acid_chicken](https://i.loli.net/2020/02/19/qoR9anvrkNLtSY8.png)](https://www.patreon.com/acid_chicken) Acid Chicken
+* [![https://www.patreon.com/user/creators?u=4934636](https://i.loli.net/2020/02/19/KCRsaH4JTSIow29.png)](https://www.patreon.com/user/creators?u=4934636) Balajanovski
+* [![https://www.patreon.com/Gongo/creators](https://i.loli.net/2020/02/22/gH68tvU4S2JrOPL.png)](https://www.patreon.com/Gongo/creators) Gongo
 
 ## Get Involved
+
 We need help to make MineCase better. You can help us by fixing bugs, developing new features, improving documents.  
 Some new contributors wonder what to work. The project began with the love for Minecraft, so our answer is always "do what you love". 
 
 ## Contact
-  This project is still under development. 
+This project is still under development. 
 You can submit code by using `Pull Requests` or Feel free to contact me via `e-mail` or `issues`, I'll add your profile to team members
 and if you have any questions we can discuss together in the [Issues](https://github.com/dotnetGame/MineCase/issues).
 and also any questions you may have while using this server, or any good suggestions, can be addressed to us in [Issues](https://github.com/dotnetGame/MineCase/issues).
 we welcome and thank your contribution for this project.
 
 * Reach me via e-mail: [email protected]
-* [Discord](https://discord.gg/8Z5RSRn) : MineCase
+* Discord : [MineCase](https://discord.gg/8Z5RSRn)
 * QQ Group: 667481568
 
-## Credits
-
-**Patreon supporters list**
-
-Wooden Pickaxe Supporter:
-
-- Acid Chicken
-
 [License (MIT)](https://raw.githubusercontent.com/dotnetGame/MineCase/master/LICENSE)
 -------------------------------------------------------------------------------
 	MIT License
 	
-	Copyright (c) 2017-2019 MineCase
+	Copyright (c) 2017-2020 MineCase
 	
 	Permission is hereby granted, free of charge, to any person obtaining a copy
 	of this software and associated documentation files (the "Software"), to deal

+ 3 - 3
src/MineCase.Algorithm/MineCase.Algorithm.csproj

@@ -1,7 +1,7 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <CodeAnalysisRuleSet>../../build/Analyzers.ruleset</CodeAnalysisRuleSet>
     <Configurations>Debug;Release;Appveyor;TravisCI</Configurations>
@@ -12,7 +12,7 @@
   <ItemGroup>
     <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
     <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
-    <PackageReference Include="Stateless" Version="4.2.1" />
+    <PackageReference Include="Stateless" Version="4.4.0" />
   </ItemGroup>
 
   <ItemGroup>

+ 4 - 4
src/MineCase.Core/MineCase.Core.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <RootNamespace>MineCase</RootNamespace>
-    <TargetFrameworks>netstandard2.0</TargetFrameworks>
+    <TargetFrameworks>netcoreapp3.1</TargetFrameworks>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet>../../build/Analyzers.ruleset</CodeAnalysisRuleSet>
@@ -17,12 +17,12 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.Orleans.Core.Abstractions" Version="2.3.4" />
+    <PackageReference Include="Microsoft.Orleans.Core.Abstractions" Version="3.1.0" />
     <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
+    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
     <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
     <PackageReference Include="System.Memory" Version="4.5.3" />
-    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.5.2" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.7.0" />
     <PackageReference Include="System.ValueTuple" Version="4.5.0" />
   </ItemGroup>
 

+ 6 - 6
src/MineCase.Engine/MineCase.Server.Engine.csproj

@@ -1,7 +1,7 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet>../../build/Analyzers.ruleset</CodeAnalysisRuleSet>
@@ -13,18 +13,18 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.Orleans.CodeGenerator.MSBuild" Version="2.3.4">
+    <PackageReference Include="Microsoft.Orleans.CodeGenerator.MSBuild" Version="3.1.0">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
     </PackageReference>
-    <PackageReference Include="Microsoft.Orleans.Core" Version="2.3.4" />
+    <PackageReference Include="Microsoft.Orleans.Core" Version="3.1.0" />
   </ItemGroup>
 
   <ItemGroup>
     <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
     <PackageReference Include="System.Collections.Generic.MultiValueDictionary" Version="0.1.0-e170912-3" />
-    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
-    <PackageReference Include="MongoDB.Bson" Version="2.8.1" />
+    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.2" />
+    <PackageReference Include="MongoDB.Bson" Version="2.10.2" />
   </ItemGroup>
 
   <ItemGroup>

+ 10 - 10
src/MineCase.Gateway/MineCase.Gateway.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <ServerGarbageCollection>true</ServerGarbageCollection>
     <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
     <Configurations>Debug;Release;Appveyor;TravisCI</Configurations>
@@ -33,15 +33,15 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.ObjectPool" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Orleans.Client" Version="2.3.4" />
-    <PackageReference Include="Orleans.Providers.MongoDB" Version="2.4.0" />
-    <PackageReference Include="Polly" Version="7.1.0" />
-    <PackageReference Include="sharpcompress" Version="0.23.0" />
+    <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.ObjectPool" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Orleans.Client" Version="3.1.0" />
+    <PackageReference Include="Orleans.Providers.MongoDB" Version="3.1.1" />
+    <PackageReference Include="Polly" Version="7.2.0" />
+    <PackageReference Include="sharpcompress" Version="0.24.0" />
     <PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0006" />
   </ItemGroup>
 

+ 2 - 1
src/MineCase.Gateway/Program.cs

@@ -67,9 +67,10 @@ namespace MineCase.Gateway
                     .ConfigureApplicationParts(ConfigureApplicationParts)
                     .AddSimpleMessageStreamProvider("JobsProvider")
                     .AddSimpleMessageStreamProvider("TransientProvider")
+                    .UseMongoDBClient(Configuration.GetSection("persistenceOptions")["connectionString"])
                     .UseMongoDBClustering(options=>
                     {
-                        options.ConnectionString = Configuration.GetSection("persistenceOptions")["connectionString"];
+                        options.DatabaseName = Configuration.GetSection("persistenceOptions")["databaseName"];
                     });
                 
                 // ConfigureApplicationParts(builder);

+ 2 - 1
src/MineCase.Gateway/config.json

@@ -1,5 +1,6 @@
 {
   "persistenceOptions": {
-    "connectionString": "mongodb://localhost:27017/minecase"
+    "connectionString": "mongodb://localhost:27017/minecase",
+    "databaseName": "minecase"
   }
 }

+ 2 - 2
src/MineCase.Nbt/MineCase.Nbt.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>netstandard2.0</TargetFrameworks>
+    <TargetFrameworks>netcoreapp3.1</TargetFrameworks>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <CodeAnalysisRuleSet>../../build/Analyzers.ruleset</CodeAnalysisRuleSet>
     <Configurations>Debug;Release;Appveyor;TravisCI</Configurations>
@@ -10,7 +10,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.5.2" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.7.0" />
     <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
   </ItemGroup>
 

+ 4 - 4
src/MineCase.Protocol/MineCase.Protocol.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>netstandard2.0</TargetFrameworks>
+    <TargetFrameworks>netcoreapp3.1</TargetFrameworks>
     <RootNamespace>MineCase</RootNamespace>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
@@ -13,13 +13,13 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
+    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
     <PackageReference Include="System.Buffers" Version="4.5.0" />
     <PackageReference Include="System.Memory" Version="4.5.3" />
     <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
     <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
-    <PackageReference Include="sharpcompress" Version="0.23.0" />
-    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.5.2" />
+    <PackageReference Include="sharpcompress" Version="0.24.0" />
+    <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.7.0" />
   </ItemGroup>
 
   <ItemGroup>

+ 4 - 4
src/MineCase.Serialization/MineCase.Serialization.csproj

@@ -1,15 +1,15 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <Configurations>Debug;Release;Appveyor;TravisCI</Configurations>
     <DebugType>full</DebugType>
     <DebugSymbols>true</DebugSymbols>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.Orleans.Core" Version="2.3.4" />
-    <PackageReference Include="MongoDB.Bson" Version="2.8.1" />
+    <PackageReference Include="Microsoft.Orleans.Core" Version="3.1.0" />
+    <PackageReference Include="MongoDB.Bson" Version="2.10.2" />
   </ItemGroup>
 
   <ItemGroup>

+ 12 - 12
src/MineCase.Server.Grains/MineCase.Server.Grains.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <RootNamespace>MineCase.Server</RootNamespace>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
     <CodeAnalysisRuleSet>../../build/Analyzers.ruleset</CodeAnalysisRuleSet>
@@ -34,23 +34,23 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Autofac" Version="4.9.2" />
-    <PackageReference Include="Microsoft.Extensions.FileProviders.Abstractions" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
-    <PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="1.2.2" />
-    <PackageReference Include="Microsoft.Orleans.CodeGenerator.MSBuild" Version="2.3.4">
+    <PackageReference Include="Autofac" Version="5.1.2" />
+    <PackageReference Include="Microsoft.Extensions.FileProviders.Abstractions" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.2" />
+    <PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="1.3.2" />
+    <PackageReference Include="Microsoft.Orleans.CodeGenerator.MSBuild" Version="3.1.0">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
     </PackageReference>
-    <PackageReference Include="Microsoft.Orleans.Core" Version="2.3.4" />
-    <PackageReference Include="Microsoft.Orleans.OrleansRuntime" Version="2.3.4" />
+    <PackageReference Include="Microsoft.Orleans.Core" Version="3.1.0" />
+    <PackageReference Include="Microsoft.Orleans.OrleansRuntime" Version="3.1.0" />
     <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
+    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
     <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
-    <PackageReference Include="MongoDB.Driver" Version="2.8.1" />
+    <PackageReference Include="MongoDB.Driver" Version="2.10.2" />
     <PackageReference Include="System.Security.Cryptography.Algorithms" Version="4.3.1" />
-    <PackageReference Include="System.Threading.Tasks.Dataflow" Version="4.9.0" />
+    <PackageReference Include="System.Threading.Tasks.Dataflow" Version="4.11.0" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
src/MineCase.Server.Grains/Persistence/PersistableDependencyObject.cs

@@ -31,7 +31,7 @@ namespace MineCase.Server.Persistence
             {
                 var coll = GetStateCollection();
                 var key = GrainReference.ToKeyString();
-                await coll.ReplaceOneAsync(o => o.GrainKeyString == key, state, new UpdateOptions { IsUpsert = true });
+                await coll.ReplaceOneAsync(o => o.GrainKeyString == key, state, new ReplaceOptions { IsUpsert = true });
             }
         }
 

+ 3 - 3
src/MineCase.Server.Interfaces/MineCase.Server.Interfaces.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <AssemblyName>MineCase.Server.Interfaces</AssemblyName>
     <RootNamespace>MineCase.Server</RootNamespace>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
@@ -18,11 +18,11 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.Orleans.CodeGenerator.MSBuild" Version="2.3.4">
+    <PackageReference Include="Microsoft.Orleans.CodeGenerator.MSBuild" Version="3.1.0">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
     </PackageReference>
-    <PackageReference Include="Microsoft.Orleans.Core" Version="2.3.4" />
+    <PackageReference Include="Microsoft.Orleans.Core" Version="3.1.0" />
     <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
     <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
   </ItemGroup>

+ 13 - 13
src/MineCase.Server/MineCase.Server.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <ServerGarbageCollection>true</ServerGarbageCollection>
     <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
     <Configurations>Debug;Release;Appveyor;TravisCI</Configurations>
@@ -27,19 +27,19 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Autofac" Version="4.9.2" />
-    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.4.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Orleans.Server" Version="2.3.4" />
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
+    <PackageReference Include="Autofac" Version="5.1.2" />
+    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" />
+    <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Options" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
+    <PackageReference Include="Microsoft.Orleans.Server" Version="3.1.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
     <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
-    <PackageReference Include="Orleans.Providers.MongoDB" Version="2.4.0" />
-    <PackageReference Include="OrleansDashboard" Version="2.3.4" />
+    <PackageReference Include="Orleans.Providers.MongoDB" Version="3.1.1" />
+    <PackageReference Include="OrleansDashboard" Version="3.0.8" />
   </ItemGroup>
 
   <ItemGroup>

+ 11 - 4
src/MineCase.Server/Program.cs

@@ -28,6 +28,8 @@ namespace MineCase.Server
             ConfigureAppConfiguration(configBuilder);
             Configuration = configBuilder.Build();
 
+            var createShardKey = false;
+
             SelectAssemblies();
             var builder = new SiloHostBuilder()
                 .ConfigureLogging(ConfigureLogging)
@@ -42,15 +44,18 @@ namespace MineCase.Server
                     options.PerformDeadlockDetection = true;
                 })
                 .ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000)
+                .UseMongoDBClient(Configuration.GetSection("persistenceOptions")["connectionString"])
                 .AddSimpleMessageStreamProvider("JobsProvider")
                 .AddSimpleMessageStreamProvider("TransientProvider")
                 .UseMongoDBReminders(options =>
                 {
-                    options.ConnectionString = Configuration.GetSection("persistenceOptions")["connectionString"];
+                    options.DatabaseName = Configuration.GetSection("persistenceOptions")["databaseName"];
+                    options.CreateShardKeyForCosmos = createShardKey;
                 })
                 .UseMongoDBClustering(c =>
                 {
-                    c.ConnectionString = Configuration.GetSection("persistenceOptions")["connectionString"];
+                    c.DatabaseName = Configuration.GetSection("persistenceOptions")["databaseName"];
+                    c.CreateShardKeyForCosmos = createShardKey;
                     // c.UseJsonFormat = true;
                 })
                 .ConfigureApplicationParts(ConfigureApplicationParts)
@@ -58,11 +63,13 @@ namespace MineCase.Server
                 .UseServiceProviderFactory(ConfigureServices);
 
             MongoDBSiloExtensions.AddMongoDBGrainStorageAsDefault(builder, options => {
-                options.ConnectionString = Configuration.GetSection("persistenceOptions")["connectionString"];
+                options.DatabaseName = Configuration.GetSection("persistenceOptions")["databaseName"];
+                options.CreateShardKeyForCosmos = createShardKey;
             });
 
             MongoDBSiloExtensions.AddMongoDBGrainStorage(builder, "PubSubStore", options => {
-                options.ConnectionString = Configuration.GetSection("persistenceOptions")["connectionString"];
+                options.DatabaseName = Configuration.GetSection("persistenceOptions")["databaseName"];
+                options.CreateShardKeyForCosmos = createShardKey;
             });
 
             // ConfigureApplicationParts(builder);

+ 2 - 1
src/MineCase.Server/config.json

@@ -1,5 +1,6 @@
 {
   "persistenceOptions": {
-    "connectionString": "mongodb://localhost:27017/minecase"
+    "connectionString": "mongodb://localhost:27017/minecase",
+    "databaseName": "minecase"
   }
 }

+ 4 - 4
tests/UnitTest/MineCase.UnitTest.csproj

@@ -1,7 +1,7 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
     <CodeAnalysisRuleSet>../../build/Analyzers.ruleset</CodeAnalysisRuleSet>
     <Configurations>Debug;Release;Appveyor;TravisCI</Configurations>
     <DebugType>full</DebugType>
@@ -9,8 +9,8 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.1" />
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
     <PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0006" />
     <PackageReference Include="xunit" Version="2.4.1" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">