From d733e645713e02429f8f8f2ea3c18384cad0a06c Mon Sep 17 00:00:00 2001 From: saschahi <39934087+saschahi@users.noreply.github.com> Date: Tue, 30 Nov 2021 12:12:15 +0100 Subject: [PATCH] Include Herosmod Permission system helps public servers --- BMConfig.cs | 25 ++++++++++++++++++------- BetterMultiplayer.cs | 43 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/BMConfig.cs b/BMConfig.cs index 314bdea..23a997f 100644 --- a/BMConfig.cs +++ b/BMConfig.cs @@ -8,13 +8,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Linq; -using System.Runtime.Serialization; -using Terraria; -using Terraria.ID; -using Terraria.ModLoader; using Terraria.ModLoader.Config; -using Terraria.ModLoader.Config.UI; -using Terraria.UI; namespace BetterMultiplayer @@ -45,5 +39,22 @@ public class BMConfig : ModConfig [DefaultValue(true)] [Label("Witch Doctor sells Wormhole Potions")] public bool WitchDoctorWormhole; - } + + public override bool AcceptClientChanges(ModConfig pendingConfig, int whoAmI, ref string message) + { + if (BetterMultiplayer.instance.herosmod != null) + { + //find a better alternative? + if (BetterMultiplayer.instance.herosmod.Call("HasPermission", whoAmI, BetterMultiplayer.heropermission) is bool result && result) + { + return true; + } + } + else + { + return base.AcceptClientChanges(pendingConfig, whoAmI, ref message); + } + return false; + } + } } diff --git a/BetterMultiplayer.cs b/BetterMultiplayer.cs index 5909516..d3e341e 100644 --- a/BetterMultiplayer.cs +++ b/BetterMultiplayer.cs @@ -1,6 +1,3 @@ -using Microsoft.Xna.Framework; -using Terraria; -using Terraria.ID; using Terraria.ModLoader; @@ -8,8 +5,44 @@ namespace BetterMultiplayer { public class BetterMultiplayer : Mod { - public BetterMultiplayer() + public Mod herosmod; + public static BetterMultiplayer instance; + public const string heropermission = "BetterMultiplayer"; + public const string heropermissiondisplayname = "Better Multiplayer Config"; + public bool hasPermission; + + public BetterMultiplayer() { + } - } + + public override void Load() + { + instance = this; + herosmod = ModLoader.GetMod("HEROsMod"); + } + public override void Unload() + { + instance = null; + } + + public override void PostAddRecipes() + { + SetupHerosMod(); + } + + public void SetupHerosMod() + { + if (herosmod != null) + { + herosmod.Call( + // Special string + "AddPermission", + // Permission Name + heropermission, + // Permission Display Name + heropermissiondisplayname); + } + } + } }