From 5b63d7cd0cb0ac92d159554ecf0e49423ae961a7 Mon Sep 17 00:00:00 2001 From: Daemon Date: Sun, 11 Apr 2021 12:27:31 +0100 Subject: [PATCH 1/5] Tidied code Removed `MergeRegions` function in favour of `AddRangeToArray` array method Removed old 'disable modded handshake' code Renamed `directConnect` field to `DirectConnect` --- Unify/Patches/Regions.cs | 37 ++++++++++++++++++----------------- Unify/Unify.cs | 14 ------------- build/Unify-2021.3.31.3s.dll | Bin 11264 -> 11264 bytes 3 files changed, 19 insertions(+), 32 deletions(-) diff --git a/Unify/Patches/Regions.cs b/Unify/Patches/Regions.cs index fa220f8..917b447 100644 --- a/Unify/Patches/Regions.cs +++ b/Unify/Patches/Regions.cs @@ -27,16 +27,17 @@ namespace Unify.Patches public static IRegionInfo DirectRegion { get; set; } - private static TextBox directConnect { get; set; } + private static TextBox DirectConnect { get; set; } public static void Patch() { ServerManager serverManager = ServerManager.Instance; - IRegionInfo[] customRegions = UnifyPlugin.MergeRegions(_newRegions, ModRegions.ToArray()); - customRegions = UnifyPlugin.MergeRegions(customRegions, LoadCustomUserRegions()); - if (DirectRegion != null) customRegions = customRegions.AddToArray(DirectRegion); - IRegionInfo[] patchedRegions = UnifyPlugin.MergeRegions(_oldRegions, customRegions); + IRegionInfo[] patchedRegions = _oldRegions + .AddRangeToArray(_newRegions) + .AddRangeToArray(ModRegions.ToArray()) + .AddRangeToArray(LoadCustomUserRegions()); + if (DirectRegion != null) patchedRegions = patchedRegions.AddToArray(DirectRegion); ServerManager.DefaultRegions = patchedRegions; serverManager.AvailableRegions = patchedRegions; @@ -72,11 +73,11 @@ namespace Unify.Patches { RegionMenu regionMenu = GameObject.Find("RegionMenu").GetComponent(); - bool success = UnifyPlugin.SetDirectRegion(directConnect.text, out IRegionInfo newRegion); + bool success = UnifyPlugin.SetDirectRegion(DirectConnect.text, out IRegionInfo newRegion); if (!success) { - directConnect.StartCoroutine(Effects.FIJHCJMBGFP(directConnect.transform, 0.75f, 0.25f)); + DirectConnect.StartCoroutine(Effects.FIJHCJMBGFP(DirectConnect.transform, 0.75f, 0.25f)); return; } @@ -92,17 +93,17 @@ namespace Unify.Patches JoinGameButton joinGameButton = DestroyableSingleton.Instance; RegionMenu regionMenu = DestroyableSingleton.Instance; - directConnect = Object.Instantiate(joinGameButton.GameIdText, regionMenu.transform); - directConnect.gameObject.SetActive(false); - directConnect.IpMode = true; - directConnect.characterLimit = 15; - directConnect.ClearOnFocus = false; + DirectConnect = Object.Instantiate(joinGameButton.GameIdText, regionMenu.transform); + DirectConnect.gameObject.SetActive(false); + DirectConnect.IpMode = true; + DirectConnect.characterLimit = 15; + DirectConnect.ClearOnFocus = false; - directConnect.OnEnter = new Button.ButtonClickedEvent(); - directConnect.OnEnter.AddListener((Action) UpdateRegion); + DirectConnect.OnEnter = new Button.ButtonClickedEvent(); + DirectConnect.OnEnter.AddListener((Action) UpdateRegion); int offset = ((ServerManager.DefaultRegions.Length + 1) / 2) + 1; - directConnect.transform.localPosition = new Vector3(0, 2f - (offset / 2f), -100f); + DirectConnect.transform.localPosition = new Vector3(0, 2f - (offset / 2f), -100f); } } @@ -111,7 +112,7 @@ namespace Unify.Patches { public static void Postfix(RegionMenu __instance) { - directConnect.gameObject.SetActive(true); + DirectConnect.gameObject.SetActive(true); var regionButtons = __instance.ButtonPool.activeChildren.ToArray(); int half = (regionButtons.Length + 1) / 2; @@ -144,7 +145,7 @@ namespace Unify.Patches { public static void Postfix() { - directConnect.gameObject.SetActive(false); + DirectConnect.gameObject.SetActive(false); } } @@ -153,7 +154,7 @@ namespace Unify.Patches { public static void Postfix() { - directConnect.gameObject.SetActive(false); + DirectConnect.gameObject.SetActive(false); } } } diff --git a/Unify/Unify.cs b/Unify/Unify.cs index 8cdb028..96aa87f 100644 --- a/Unify/Unify.cs +++ b/Unify/Unify.cs @@ -23,11 +23,6 @@ namespace Unify public static ConfigFile ConfigFile { get; private set; } - // public static readonly bool HandshakeDisabled = !PluginSingleton.Instance.ModdedHandshake.Value; - - /*public static readonly string[] NormalHandshake = - new string[] {"North America", "Europe", "Asia", "skeld.net"};*/ - public Harmony Harmony { get; } = new Harmony(Id); public override void Load() @@ -52,15 +47,6 @@ namespace Unify Harmony.PatchAll(); } - public static IRegionInfo[] MergeRegions(IRegionInfo[] oldRegions, IRegionInfo[] newRegions) - { - IRegionInfo[] patchedRegions = new IRegionInfo[oldRegions.Length + newRegions.Length]; - Array.Copy(oldRegions, patchedRegions, oldRegions.Length); - Array.Copy(newRegions, 0, patchedRegions, oldRegions.Length, newRegions.Length); - - return patchedRegions; - } - public static IRegionInfo AddRegion(string name, string ip) { if (Uri.CheckHostName(ip) != UriHostNameType.IPv4) return ServerManager.Instance.CurrentRegion; diff --git a/build/Unify-2021.3.31.3s.dll b/build/Unify-2021.3.31.3s.dll index 61b62804ff7d1b9197d403c25438930ba0ede4eb..4d06d21906b99a6cd7cd068bc37bde221476d02b 100644 GIT binary patch delta 3537 zcmZ`*3vg7`8UFus-*=Zyb~g_QN!TR`TsDA7)FL)OVuG-sm4G}%1XqXwi(J`7$LQEy zYOzwGHrxRV+8Ge5rd2A<*bY^wj1TIAK?j)Hhqmb0DbumlmT7%d>37afe5_?9G8~wfxtC!KJ)6V4i4v>oTI+ASosX*YHF>7i{MI znAhQxpSfs)4ALhM6>5n%IMX;SSRiV7eQ>i_8oVrOXUAI%x>L=gXwD`wT~oWuB+|`0 zC3-HAJ7#Lg3!(SJfRr~1=rK{V`MK#JB3BkeNb+-H%zhO2pn}K!EV7V5aJYH&*uZG#`n$qA0E| z2@{RY^6 zBOpa2OZ6t!!gHg!CivW{&?V1Oo=8^1%pQhtt9scs#IT2wyV;ZQWZwc*_$Vd{^Cj~> zmh;Y!%p3J(^O)(DgtdgI!ng3exbFBK)_1*0SZzw1WaQck6MsQTijJu6L%o|Dsd?Nm zqlVfZ$PHQJ+*$4C&!0C{nNsl=}!TVv4@PzDNSD4 z<>-q8Q!#+zb<6@3W_lOMxE8>Klxg{`FigJ|qrI;HTz{HcOUm&O(Cn3uNSqE|m4B%m zk-1d+UmZ5bmHF+%c9lPa(xoZ6neh6vhKKwPSQVd}INWBgQ+n~Txqg?lhdpEDJCjC!DPFmbuXUNuxL|u-G)BAiA1+o5Iuzx z*|2yK$+rwuqJ}w()5w4>0iPTEz@FF%iG)DHD@8RWdntMxFPeyk#Bj+J`{8+bDB%uJ zV{TwLN!}7nbn1e6&b-Q#wo95h-gT+bk$8hU-d!CGI!$~eIN@|%_;mwaOr&U(^&Gt#On2*o8{8Cs8fRgu}ey0V-y=x zVl}j+(8+P?3Fd^7V|H>YJ;xFs;XNFsb^I{!Eq*lE9BRsMb~C8i+62VWOVrJ2usHVnCDa8itMfQ)_qTiL+0ma@? zY?r+{Z$E{>vnASQ9s>KI#JbEQU>}tN?{Z#Xo6eWm{m#o^Hr{S2ZM{(|9NMJV0A;a+ zL(6dY5e-n2DaW2IveBr`ZsDh4Ir(i$l{Fb)D zexG*JC(gg9meQ>AARX7EoP>WHIlwd>1Ww{Z%5xNWJ--3W^BG{8Iw^16$7gAW8|9B_ zp?jKZX?fm#2V{=>XKti@&ZnHA2W?9*KTc7Rp^%ftVlwzFt#D?FC{>DXF`0Jgz2Yo2 zi(Ba;Ww&yT=ohVg0^&ZThHtir^Ywgt9X|wT=b_o8xS|>kmKBi6L1IB3mWq!}7*RMv6+nV(iYSIci zY|PfTB6yj81_5_yXNwB}pEg*?A_rAvso?Umn(MwUwi{C^Cw2kv6wd=iiIx zX+Iy(&ZxQXDw|oxX}q6r)RW3?fc=Wzq3lkDUGR8D5H3&UZ=?Y_!3nWZbZH@7;Na=% z68w%B$3$D)M&MHW8Qg_GRoG`Ag}u~#1sFIdgpAP81W+~u=;AUGkmLZv=mm|!A5#P< zs0@FMYq^Z}(rXjwGdjmB#ZBT-F;82lP14(Sy->V|<-1e-WP^9hGkkk6J383mLSP*o zqa<1r+6=T#w5w=|xQdpGYp5VL(oI?u&DW`Y=IT|ey4U4yS)b|eTA#_~T3d&_*ee`- zBW@0T6#uRn1T{Z27GyT9UK_NG?TvS@%l59`)a7s3fR1v#n^tuPkB>cKcdl8pFteer zcW7npKe>GOiBHpOch$^4`0Cp~pZ-Y4JHeXzfxK;Lv2ZLIOX8Z2PKub7u_+vD)$s$1 z^aRC{__nW%UCgm$xSYAJ9%KgBlkUP}RmM6+EGdkH;M&o#a>mz0aaa!2lW-CSMW~$b25Y?3wNH;_&nI#j$ z%&~sMVoZWM0d>WHBSCd>3XQnb$})!#u}mf|haE&0GjpLwS%obcem`=ZRT64f#tK_G z@?U640U{Eqjkd6^{Ph%x)Kjc5pt&4Dld&=g#Y2wDwk%7;3Oi#-lQ>q`9WhY6!cK^c z753rlH&z&g5f0l4xO)zQ$^xnK7M?~QhN3tM3lb;8Rwc2)RY`1=L4_HJTEVn%VQ+9edEH{dD+J>U3zwtne^&i0jV+Q~L delta 3563 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 K`7s-5HvR+K!)A*B From fd5a11394a31ad969265029d032a6ce814c1ed8c Mon Sep 17 00:00:00 2001 From: Daemon Date: Sun, 11 Apr 2021 14:15:05 +0100 Subject: [PATCH 2/5] Fixed bug caused by reckless code Changed how regions menu is displayed --- Unify/Patches/Regions.cs | 39 +++++++++++++++++++++++++++-------- Unify/Unify.cs | 4 +++- build/Unify-2021.3.31.3s.dll | Bin 11264 -> 11776 bytes 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/Unify/Patches/Regions.cs b/Unify/Patches/Regions.cs index 917b447..14e4982 100644 --- a/Unify/Patches/Regions.cs +++ b/Unify/Patches/Regions.cs @@ -102,8 +102,8 @@ namespace Unify.Patches DirectConnect.OnEnter = new Button.ButtonClickedEvent(); DirectConnect.OnEnter.AddListener((Action) UpdateRegion); - int offset = ((ServerManager.DefaultRegions.Length + 1) / 2) + 1; - DirectConnect.transform.localPosition = new Vector3(0, 2f - (offset / 2f), -100f); + int offset = _newRegions.Length + ModRegions.Count; + DirectConnect.transform.localPosition = new Vector3(0, 1f - (offset / 2f), -100f); } } @@ -115,15 +115,35 @@ namespace Unify.Patches DirectConnect.gameObject.SetActive(true); var regionButtons = __instance.ButtonPool.activeChildren.ToArray(); - int half = (regionButtons.Length + 1) / 2; - - for (int x = 0; x < regionButtons.Length; x++) - { - ServerListButton regionButton = regionButtons[x].Cast(); - regionButton.transform.localPosition = new Vector3(1.25f * ((x < half)? -1: 1), 2f - 0.5f * (x - ((x < half)? 0 : half)), 0f); + for (int i = 0; i < regionButtons.Length; i++) + { + ServerListButton regionButton = regionButtons[i].Cast(); + + (float x, float y) = CalculatePosition(i); + regionButton.transform.localPosition = new Vector3(1.25f + x, 2f - 0.5f * y, 0f); } } + + private static (float x, float y) CalculatePosition(int index) + { + // currently broken + /*if (DirectRegion != null && ServerManager.DefaultRegions[index].Name == DirectRegion.Name) + { + int offset = Math.Max( + Math.Max(LoadCustomUserRegions().Length, _newRegions.Length + ModRegions.Count), + _oldRegions.Length); + return (1.25f, 2f - offset); + }*/ + + bool isCustomRegion = index >= _oldRegions.Length; + bool isCustomUserRegion = index >= _oldRegions.Length + _newRegions.Length + ModRegions.Count; + float x = (isCustomRegion ? 3f : 0) + (isCustomUserRegion ? 3f : 0) - 4.25f; + float y = index - (isCustomRegion ? _oldRegions.Length : 0) - + (isCustomUserRegion ? _newRegions.Length + ModRegions.Count : 0); + + return (x, y); + } } [HarmonyPatch(typeof(JoinGameButton), nameof(JoinGameButton.OnClick))] @@ -161,4 +181,5 @@ namespace Unify.Patches } // TODO: -// Store custom servers in a JSON file \ No newline at end of file +// Store custom servers in a JSON file +// Mention `AddRegion` method in README \ No newline at end of file diff --git a/Unify/Unify.cs b/Unify/Unify.cs index 96aa87f..c1f9ee8 100644 --- a/Unify/Unify.cs +++ b/Unify/Unify.cs @@ -6,6 +6,7 @@ using BepInEx; using BepInEx.Configuration; using BepInEx.IL2CPP; using HarmonyLib; +using Hazel.Udp; using Reactor; using Unify.Patches; @@ -42,7 +43,8 @@ namespace Unify RegionsPatch.Patch(); - Harmony.UnpatchAll(ReactorPlugin.Id); + // Unpatches the modded handshake, because Impostor is STILL not fully updated yet + Harmony.Unpatch(typeof(UdpConnection).GetMethod("HandleSend"), HarmonyPatchType.Prefix, ReactorPlugin.Id); Harmony.PatchAll(); } diff --git a/build/Unify-2021.3.31.3s.dll b/build/Unify-2021.3.31.3s.dll index 4d06d21906b99a6cd7cd068bc37bde221476d02b..dab467af08f55da7be93b2769301c08778f5cf0b 100644 GIT binary patch delta 5115 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 delta 4640 zcmZ`+3vg7`8UD|?&%Iff?A>HHtjV&Q7dHu{Nz?+BK*B>@BFaPFj1Vyf1#@8oRD5(d zRZ%b&t@Tl6d`rJ`cEiKbo80gG-+%sd z{>M4@+`E|tnK}2~ReI;?!JKc0cLIJIAR)3@vOyj9ecyS864N7>@Y2#_iR3`u% zX&9-#il?^1s=Mc>hr*Mnz~2;?zZux}zcl z8G$>*Yf+taLUf~6R)y{e*)0=*s$11Wp*oGkl3-AP5t2MCNp3 z2y;+GD|HB()CYh97a<_mpRoH%*qs8TvxevWlp$lZJZ{V)DsT-<7*c(%14m93V0c58 zm{Jx0H>#Ue1XUNoTb-xN7}E5hCM%9`^NbozmSQlt!MRI+fr7JAs0!JUDb} zFj_2ljpYnNqV8~Tn>k2HA6_9{PWnDz{l~-CshaNI2+Rgg~9211xt0POuuEUX*4L28dkV;o^&c;tSOX64GYg*I!^?F z1vwpr8JXiZvokk5S$+MPP3By98D<~OBh`*bJY0RrnFzDx{1FX#+syLDWmti-UlF~F zb_>EQo3S!=T}OMT@O)zd(NlQz%4W_WaYA67sBF^ABx*<_!7ueR-_SHNCk!N<3lz=C zv(aMj(NNqd7|zFRJ79-Nr|zjG{SU;r8A4Bn5C9Z zw`d2kpYG)c;i~|{^)z*B`!t=7@qJp9CSi&wO+iN~wb4nKF5}IHjzB6IhLNy|qc=+R z*tVr~iVK^oWN)=~$h1h&OD&7aeFCqxO0C7z2+IIXQ1%)Dn#K2Gw$(o2ai1z?OOHhY zVcKQttX4X%m2p{g3yBQY!=**X^bLBHBCw3nV&8rqqrXTzpzY^T`Xhp_q^FI~%@`dr zMDM$NKQE<=kU*H)G##OTEYmxQM=1vP`*}5;XY8go=>0SnPN&E9eOiour`P*p^odX4 z{UoOTjm-5SU?sAQvnVN$bt+X)B9E047b-`MZ>RuSB3$JORj2vt4ut-ZB2bg^Rw?h6 zI8JIhA&Uh|KO~Tt{L807ddkwItgw8vL@O|@NnK!mt;}43{b13r!6FEJ1$IH9WdFm< zL9no7SKts8EF#(ATwjr7BXfO&B^#X1(J0NzG_w#*%RIvc-ib3HNK@EEO3=4#I)bP* zLR3$8vR+nCyCrU853nFz#~ucLz#d^!<06%f<}djygg#rc9&;_954KRUwPu&qitW5a zvVAmxrIVl^O1hEG*Dc1WJwdoO(v^CIsnjRg+M-=X5<%=dhwYKRCmp zw6+wh`Vx0(6ix800^VcY1T0m$u>QM@wOId6S~u`sElEjwfp3cb{X39%`~FVrAb(7o=xg5>R7^>xvd8Fv8e|FRyU7Pk(hgv{itUuDJ-|im zZJ}aEfk|qnv~f2(LHAif_7zRH4zpsoIR<%>^)FUVeZFs4D{VFn&e-oM$XhATmxMDh z_5>~Pjp0Em_X3RriuQS7hUTApNoqi#Nz z9pd-%Dt1`k0?b#EG#bvf^A!yF@d+~f%OrNOQ@(l1Iu=$IDx+A3&sFN#!|E#KGiv1m zpY+`XZ1Js9HeqZMzB-LGH0{P(rBBR8>Bm@~uUpx{<{Q1rXzJ1)RCc0ci_*+q(H~W+ z*mkW*eT^O0V(OL1zCm3eZ5Ggr+C+67#?DcX!u}@ZMAiZD8I5sSWQjqEgC!;;R!OXv zI7*X^_vxT$dMUq0tEEo95qL9y0eBmK6?ixQ7U*$Pucghr5V)0B0RO-nfc?A?_&l%) z@31K}o}Q;VHlALg%YkoDJMa+Q!4}Eh#S*(D_DS4ITiN^k71}zAZC8#;)jy%yt}rI1 zQ`lB^t(uT>8RXa1CMh>d91o47c`xS=YwV$eEY4T(@k*Y`vBy>U23^mGFv1(K95~y2 z9=rc(iS6bd$g}m=fu8T6H$2!_xP{)N@8~4EieJwk;ggl=N|id=>k5X_DZF{aoC6o5 zAs8nPd~w+li9VM)`JJBA5beb?`9r(ovX>*mGuMssHLl=vXSrF4>g8DI(q}1qPdmZ) zSnfJ0+j9p8Wwht&cK?W7*2&qSSQN>Pl|Rc6j`xTisId@l3GK&0u%9Y$H{x!_eFa|X zSI|5@moj_>U9VJ7i}#-0ZFQ`?pn)z~)vb)WHBJc9p#r+S(<}$3qri0%kmu!r-?0DnIpGIwKI_8=2?z9?bEMOXn z?Y9$l0&mw~RX{Jahcmk#d51`ilbyipyU@Of*$IC>VKHySF!?l$)8IEmdI4c@AfOTFfq)?}-%faqiAm`; z6gtq}UYlxbUA)pw)wV9j&j@jek-;1ANe8OLDFBW+RJ{bj3N6BdGyCCS`@Z&6k<;Mpv+ zGwWF3EHs2mBv%})W2)50C=iH|o#|057QijWia{tfDk5dWFu0vb_u2`an4Q@a&`|44 zFXFN@efW;FGmk;=`^`AiJHSLyl%7cg19k5NjfdeI<< zSF_EY{zc_iGM@R)d$!`YG4Ug0;M!7-Uuok87}1e&UPon=zcsFZedPq!A8@`__@@p1 L!C{}Uo;u_IRXg_` From 4c8866a33e8a6274123880e65d7f378fcf3da4fb Mon Sep 17 00:00:00 2001 From: Daemon Date: Sun, 11 Apr 2021 14:15:53 +0100 Subject: [PATCH 3/5] Reduced custom regions length from 10 to 9 --- Unify/Patches/Regions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Unify/Patches/Regions.cs b/Unify/Patches/Regions.cs index 14e4982..d058bf7 100644 --- a/Unify/Patches/Regions.cs +++ b/Unify/Patches/Regions.cs @@ -48,7 +48,7 @@ namespace Unify.Patches { List customRegions = new List(); - for (int x = 0; x < 10; x++) + for (int x = 0; x < 9; x++) { ConfigEntry regionName = UnifyPlugin.ConfigFile.Bind( $"Region {x + 1}", $"Name", "custom region"); From 6df20f83c86e1760444b7ba81211b84ed4b2ed94 Mon Sep 17 00:00:00 2001 From: Daemon Date: Sun, 11 Apr 2021 14:17:23 +0100 Subject: [PATCH 4/5] Updated README --- README.md | 5 ++++- Unify/Patches/Regions.cs | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 604014e..b55b8a3 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,9 @@ Regions can be connected to directly using an IP address. Custom regions can be added as detailed below in the [configuration](#configuration) section. +Other mods can add regions via the +`AddRegion(string name, string ip)` method. + ## Installation > **⚠ WARNING** @@ -60,7 +63,7 @@ The configuration file is located at ### Custom regions Custom regions can be added by modifying the `[Region 1]`, -`[Region 2]` ... `[Region 10]` sections of the configuration file. +`[Region 2]` ... `[Region 9]` sections of the configuration file. You can modify the display name of the region, the IP address of the region and the port of the region. diff --git a/Unify/Patches/Regions.cs b/Unify/Patches/Regions.cs index d058bf7..cf47c9a 100644 --- a/Unify/Patches/Regions.cs +++ b/Unify/Patches/Regions.cs @@ -181,5 +181,4 @@ namespace Unify.Patches } // TODO: -// Store custom servers in a JSON file -// Mention `AddRegion` method in README \ No newline at end of file +// Store custom servers in a JSON file \ No newline at end of file From 1f5736c7f8693fb50e33a81ec0ff8580f026a8ad Mon Sep 17 00:00:00 2001 From: Daemon Date: Sun, 11 Apr 2021 14:18:43 +0100 Subject: [PATCH 5/5] Updated version --- Unify/Unify.cs | 2 +- Unify/Unify.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Unify/Unify.cs b/Unify/Unify.cs index c1f9ee8..7317e9b 100644 --- a/Unify/Unify.cs +++ b/Unify/Unify.cs @@ -20,7 +20,7 @@ namespace Unify { public const string Id = "daemon.unify"; private const string Name = "Unify"; - private const string Version = "3.0.0"; + private const string Version = "3.0.1"; public static ConfigFile ConfigFile { get; private set; } diff --git a/Unify/Unify.csproj b/Unify/Unify.csproj index 8b029dc..377fedd 100644 --- a/Unify/Unify.csproj +++ b/Unify/Unify.csproj @@ -1,7 +1,7 @@ netstandard2.1 - 3.0.0 + 3.0.1 NuclearPowered/Mappings:0.3.0 Region mod