public static void OnTryChangeBlock(ModLoader.OnTryChangeBlockData userData) { Players.Player causedBy = null; if (userData.RequestOrigin.Type == BlockChangeRequestOrigin.EType.Player) { causedBy = userData.RequestOrigin.AsPlayer; } if (causedBy == null || AngryGuards.ModeSetting != GuardMode.Passive || PermissionsManager.HasPermission(causedBy, AngryGuards.PERMISSION_PREFIX + ".peacekeeper")) { return; } // check if the block change is within range of a banner(colony) foreach (Colony checkColony in ServerManager.ColonyTracker.ColoniesByID.Values) { if (IsOwnerOrFriendly(checkColony, causedBy)) { continue; } foreach (BannerTracker.Banner checkBanner in checkColony.Banners) { int distanceX = (int)System.Math.Abs(causedBy.Position.x - checkBanner.Position.x); int distanceZ = (int)System.Math.Abs(causedBy.Position.z - checkBanner.Position.z); if (distanceX < PassiveProtectionRange && distanceZ < PassiveProtectionRange) { PlayerTracker.AddEnemy(checkColony, causedBy); return; } } } return; }
public static void OnNPCHit(NPC.NPCBase npc, ModLoader.OnHitData data) { if (!(data.HitSourceObject is Players.Player)) { return; } Players.Player killer = (Players.Player)data.HitSourceObject; foreach (Players.Player owner in npc.Colony.Owners) { if (owner == killer || PlayerTracker.IsFriendly(owner, killer)) { return; } } PlayerTracker.AddEnemy(npc.Colony, killer); }