Skip to content

Commit 36f7a51

Browse files
authored
Now the plugin works on OpenMod 3.0
1 parent 7d9be1b commit 36f7a51

10 files changed

+4306
-0
lines changed

Announcer.sln

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.31005.135
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Announcer", "Announcer\Announcer.csproj", "{21AB9E9F-B8C2-49A1-B5D4-E90F5B6AEFC7}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{21AB9E9F-B8C2-49A1-B5D4-E90F5B6AEFC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{21AB9E9F-B8C2-49A1-B5D4-E90F5B6AEFC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{21AB9E9F-B8C2-49A1-B5D4-E90F5B6AEFC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{21AB9E9F-B8C2-49A1-B5D4-E90F5B6AEFC7}.Release|Any CPU.Build.0 = Release|Any CPU
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
GlobalSection(ExtensibilityGlobals) = postSolution
23+
SolutionGuid = {30E07CD7-103B-41A1-8363-9D3D59118F5F}
24+
EndGlobalSection
25+
EndGlobal

Announcer/Announcer.cs

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Threading.Tasks;
4+
using Announcer.Models;
5+
using Microsoft.Extensions.Configuration;
6+
using Microsoft.Extensions.Localization;
7+
using Microsoft.Extensions.Logging;
8+
using Cysharp.Threading.Tasks;
9+
using DotNet.Globbing.Evaluation;
10+
using OpenMod.Unturned.Plugins;
11+
using OpenMod.API.Plugins;
12+
using System.Linq;
13+
using OpenMod.Core.Helpers;
14+
using SDG.Unturned;
15+
16+
[assembly: PluginMetadata("F.Announcer", DisplayName = "Announcer")]
17+
namespace Announcer
18+
{
19+
public class Announcer : OpenModUnturnedPlugin
20+
{
21+
private readonly IConfiguration m_Configuration;
22+
private readonly ILogger<Announcer> m_Logger;
23+
24+
private bool _SendMessage = false;
25+
private int _Message = 0;
26+
27+
public Announcer(
28+
IConfiguration configuration,
29+
ILogger<Announcer> logger,
30+
IServiceProvider serviceProvider) : base(serviceProvider)
31+
{
32+
m_Configuration = configuration;
33+
m_Logger = logger;
34+
}
35+
36+
protected override UniTask OnLoadAsync()
37+
{
38+
_SendMessage = true;
39+
if (Level.isLoaded)
40+
{
41+
AsyncHelper.Schedule("Announcement Start", () => Announcement().AsTask());
42+
}
43+
Level.onLevelLoaded += OnLevelLoaded;
44+
m_Logger.LogInformation("Announcer Plugin Loaded Correctly !");
45+
return UniTask.CompletedTask;
46+
}
47+
48+
protected override UniTask OnUnloadAsync()
49+
{
50+
_SendMessage = false;
51+
m_Logger.LogInformation("Announcer Plugin Unloaded Correctly !");
52+
return UniTask.CompletedTask;
53+
}
54+
55+
private void OnLevelLoaded(int level)
56+
{
57+
if (level == 2)
58+
{
59+
AsyncHelper.Schedule("Announcement Start", () => Announcement().AsTask());
60+
}
61+
}
62+
63+
private async UniTask Announcement()
64+
{
65+
await UniTask.SwitchToMainThread();
66+
while (_SendMessage)
67+
{
68+
await Task.Delay(TimeSpan.FromSeconds(m_Configuration.GetSection("Timer").Get<int>()));
69+
var announces = m_Configuration.GetSection("Announces").Get<List<Announce>>();
70+
71+
if (_Message >= announces.Count())
72+
{
73+
_Message = 0;
74+
}
75+
76+
var selected = announces[_Message];
77+
if (selected.Message != null)
78+
{
79+
ChatManager.serverSendMessage(selected.Message.Replace("{", "<").Replace("}", ">"), UnityEngine.Color.white, null, null, EChatMode.GLOBAL, selected.Url, selected.IsRich);
80+
}
81+
82+
_Message++;
83+
}
84+
}
85+
}
86+
}

Announcer/Announcer.csproj

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net461</TargetFramework>
5+
<PackageLicenseExpression>EUPL-1.2</PackageLicenseExpression>
6+
<PackageTags>openmod openmod-plugin unturned</PackageTags>
7+
<RootNamespace>Announcer</RootNamespace>
8+
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
9+
<GenerateNugetPackage>true</GenerateNugetPackage>
10+
<Product>Announcer</Product>
11+
<Nullable>enable</Nullable>
12+
<WarningsAsErrors>nullable</WarningsAsErrors>
13+
<NoWarn>$(NoWarn);NU1701;NU1702;CS0436</NoWarn>
14+
<LangVersion>9.0</LangVersion>
15+
<Version>1.2.0</Version>
16+
<InformationalVersion>1.2.0</InformationalVersion>
17+
<PackageVersion>1.2.0</PackageVersion>
18+
</PropertyGroup>
19+
20+
<PropertyGroup>
21+
<PackageId>F.Announcer</PackageId>
22+
<PackageDescription>This is a message announcer plugin for unturned</PackageDescription>
23+
<PackageLicenseExpression>EUPL-1.2</PackageLicenseExpression>
24+
<PackageAuthor>Feli</PackageAuthor>
25+
<PackageTags>openmod openmod-plugin unturned</PackageTags>
26+
<Version>1.2.0</Version>
27+
<AssemblyVersion>1.2.0</AssemblyVersion>
28+
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
29+
<GenerateNugetPackage>true</GenerateNugetPackage>
30+
</PropertyGroup>
31+
32+
33+
<ItemGroup>
34+
<PackageReference Include="OpenMod.Unturned" Version="3.0.13+c16f123" />
35+
<PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
36+
<PrivateAssets>All</PrivateAssets>
37+
</PackageReference>
38+
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies.net461" Version="1.0.0">
39+
<PrivateAssets>all</PrivateAssets>
40+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
41+
</PackageReference>
42+
</ItemGroup>
43+
44+
<ItemGroup>
45+
<EmbeddedResource Include="config.yaml" />
46+
</ItemGroup>
47+
48+
<Target Name="ChangeAliasesOfNugetRefs" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
49+
<ItemGroup>
50+
</ItemGroup>
51+
</Target>
52+
53+
</Project>

Announcer/Models/Announce.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace Announcer.Models
8+
{
9+
public class Announce
10+
{
11+
public string? Url { get; set; }
12+
public string? Message { get; set; }
13+
public bool IsRich { get; set; }
14+
}
15+
}

Announcer/config.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Timer: 5
2+
Announces:
3+
- Url: https://images-ext-1.discordapp.net/external/1Vg3rH_5wKUid81LpNF3YTOgl-x1Vvix0sNvfrhbtpE/https/unturneditems.com/media/253.png
4+
Message: "Announce by FPlugins"
5+
IsRich: true
6+
- Url: https://images-ext-1.discordapp.net/external/1Vg3rH_5wKUid81LpNF3YTOgl-x1Vvix0sNvfrhbtpE/https/unturneditems.com/media/253.png
7+
Message: "{color=red}Just another announce{/color}"
8+
IsRich: true
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
{
2+
"format": 1,
3+
"restore": {
4+
"C:\\Users\\Felipe Master Race\\Pictures\\Announcer\\Announcer.csproj": {}
5+
},
6+
"projects": {
7+
"C:\\Users\\Felipe Master Race\\Pictures\\Announcer\\Announcer.csproj": {
8+
"version": "1.2.0",
9+
"restore": {
10+
"projectUniqueName": "C:\\Users\\Felipe Master Race\\Pictures\\Announcer\\Announcer.csproj",
11+
"projectName": "F.Announcer",
12+
"projectPath": "C:\\Users\\Felipe Master Race\\Pictures\\Announcer\\Announcer.csproj",
13+
"packagesPath": "C:\\Users\\Felipe Master Race\\.nuget\\packages\\",
14+
"outputPath": "C:\\Users\\Felipe Master Race\\Pictures\\Announcer\\obj\\",
15+
"projectStyle": "PackageReference",
16+
"fallbackFolders": [
17+
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
18+
],
19+
"configFilePaths": [
20+
"C:\\Users\\Felipe Master Race\\AppData\\Roaming\\NuGet\\NuGet.Config",
21+
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
22+
],
23+
"originalTargetFrameworks": [
24+
"net461"
25+
],
26+
"sources": {
27+
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
28+
"https://api.nuget.org/v3/index.json": {},
29+
"https://www.myget.org/F/discord-net/api/v3/index.json": {}
30+
},
31+
"frameworks": {
32+
"net461": {
33+
"targetAlias": "net461",
34+
"projectReferences": {}
35+
}
36+
},
37+
"warningProperties": {
38+
"noWarn": [
39+
"NU1701",
40+
"NU1702"
41+
]
42+
}
43+
},
44+
"frameworks": {
45+
"net461": {
46+
"targetAlias": "net461",
47+
"dependencies": {
48+
"Legacy2CPSWorkaround": {
49+
"suppressParent": "All",
50+
"target": "Package",
51+
"version": "[1.0.0, )"
52+
},
53+
"Microsoft.NETFramework.ReferenceAssemblies.net461": {
54+
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
55+
"suppressParent": "All",
56+
"target": "Package",
57+
"version": "[1.0.0, )"
58+
},
59+
"OpenMod.Unturned": {
60+
"target": "Package",
61+
"version": "[3.0.13, )"
62+
}
63+
},
64+
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.103\\RuntimeIdentifierGraph.json"
65+
}
66+
}
67+
}
68+
}
69+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="utf-8" standalone="no"?>
2+
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
4+
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
5+
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
6+
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
7+
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
8+
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Felipe Master Race\.nuget\packages\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder</NuGetPackageFolders>
9+
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
10+
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.8.1</NuGetToolVersion>
11+
</PropertyGroup>
12+
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
13+
<SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" />
14+
</ItemGroup>
15+
<PropertyGroup>
16+
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
17+
</PropertyGroup>
18+
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
19+
<Import Project="$(NuGetPackageRoot)legacy2cpsworkaround\1.0.0\build\netstandard1.0\Legacy2CPSWorkaround.props" Condition="Exists('$(NuGetPackageRoot)legacy2cpsworkaround\1.0.0\build\netstandard1.0\Legacy2CPSWorkaround.props')" />
20+
</ImportGroup>
21+
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
22+
<PkgOpenMod_Analyzers Condition=" '$(PkgOpenMod_Analyzers)' == '' ">C:\Users\Felipe Master Race\.nuget\packages\openmod.analyzers\3.0.13</PkgOpenMod_Analyzers>
23+
</PropertyGroup>
24+
</Project>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8" standalone="no"?>
2+
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
5+
</PropertyGroup>
6+
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
7+
<Import Project="$(NuGetPackageRoot)microsoft.netframework.referenceassemblies.net461\1.0.0\build\Microsoft.NETFramework.ReferenceAssemblies.net461.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.netframework.referenceassemblies.net461\1.0.0\build\Microsoft.NETFramework.ReferenceAssemblies.net461.targets')" />
8+
</ImportGroup>
9+
</Project>

0 commit comments

Comments
 (0)