コード例 #1
0
        protected override bool RunCommand(Players.Player ply, string[] args, NetworkID[] targets)
        {
            if (PermissionsManager.CheckAndWarnPermission(ply, "chunk.info") && Classes.Managers.ConfigManager.getConfigBoolean("chunks.enabled"))
            {
                Vector3Int pos       = Managers.WorldManager.positionToVector3Int(ply.Position).ToChunk();
                string     chunkName = Managers.WorldManager.positionToString(pos);
                if (Managers.WorldManager.ChunkDataList.ContainsKey(chunkName))
                {
                    Data.ChunkData c = Managers.WorldManager.ChunkDataList[chunkName];
                    Chat.sendSilent(ply, String.Format("Chunk data for chunk: {0}", chunkName), Chat.ChatColour.lime, Chat.ChatStyle.bold);
                    Chat.sendSilent(ply, String.Format("Currently owned: {0}", c.hasOwner()), Chat.ChatColour.lime, Chat.ChatStyle.bold);

                    if (c.hasOwner())
                    {
                        Chat.sendSilent(ply, String.Format("Currently owned by: {0}", Players.GetPlayer(c.getOwner()).Name), Chat.ChatColour.lime, Chat.ChatStyle.bold);
                    }

                    string prevOwners = "";

                    foreach (NetworkID n in c.ownerHistory)
                    {
                        prevOwners += Players.GetPlayer(n).Name + ", ";
                    }

                    Chat.sendSilent(ply, String.Format("Previous Owners ({0}): {1}", c.ownerHistory.Count, prevOwners), Chat.ChatColour.lime, Chat.ChatStyle.bold);
                }
                else
                {
                    Chat.sendSilent(ply, "No chunk data", Chat.ChatColour.red, Chat.ChatStyle.bold);
                }
            }
            else
            {
                Chat.sendSilent(ply, "You cannot check chunk info", Chat.ChatColour.red, Chat.ChatStyle.bold);
            }

            return(true);
        }
コード例 #2
0
        private static bool allowBlockPlaceChunkOwnership(ModLoader.OnTryChangeBlockUserData d)
        {
            if (d.requestedBy.ID.steamID.m_SteamID == 0)
            {
                return(true);
            }

            string ChunkID = ColonyAPI.Managers.WorldManager.XZPositionToString(d.voxelHit.ToChunk());

            if (Managers.WorldManager.ChunkDataList.ContainsKey(ChunkID))
            {
                Data.ChunkData cd = Managers.WorldManager.ChunkDataList[ChunkID];
                NetworkID      id = cd.getOwner();
                if (cd.hasOwner())
                {
                    if (id == d.requestedBy.ID)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    //Utilities.WriteLog("Enforce: " + ConfigManager.getConfigBoolean("chunks.enforce"));
                    if (ColonyAPI.Managers.ConfigManager.getConfigBoolean("ColonyPlusPlus-Utilities", "chunks.enforce") == true)
                    {
                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                }
            }
            else
            {
                //Utilities.WriteLog("Enforce: " + ConfigManager.getConfigBoolean("chunks.enforce"));
                if (ColonyAPI.Managers.ConfigManager.getConfigBoolean("ColonyPlusPlus-Utilities", "chunks.enforce") == true)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
        }
コード例 #3
0
        public static bool AllowPlaceBlock(ModLoader.OnTryChangeBlockUserData d)
        {
            if (PermissionsManager.CheckAndWarnPermission(Players.GetPlayer(d.requestedBy.ID), "world.admin"))
            {
                return(true);
            }

            // Check permissions
            if (PermissionsManager.CheckAndWarnPermission(Players.GetPlayer(d.requestedBy.ID), "world.build"))
            {
                //Helpers.Chat.send(Players.GetPlayer(d.requestedBy.ID), "You have build permissions");

                // first check if near spawn
                if (allowBlockFarEnoughFromSpawn(d))
                {
                    //Helpers.Chat.send(Players.GetPlayer(d.requestedBy.ID), "You are far enough from spawn");
                    // what about chunk ownership
                    if (allowBlockPlaceChunkOwnership(d))
                    {
                        if (d.TypeNew == ItemTypes.IndexLookup.GetIndex("water"))
                        {
                            if (PermissionsManager.CheckAndWarnPermission(Players.GetPlayer(d.requestedBy.ID), "world.spawnbuilder"))
                            {
                                return(true);
                            }
                            return(false);
                        }
                        //Helpers.Chat.send(Players.GetPlayer(d.requestedBy.ID), "You own the chunk");
                        return(true);
                    }
                    else
                    {
                        if (d.TypeNew == ItemTypes.IndexLookup.GetIndex("banner"))
                        {
                            string ChunkID = ColonyAPI.Managers.WorldManager.XZPositionToString(d.voxelHit.ToChunk());
                            if (Managers.WorldManager.ChunkDataList.ContainsKey(ChunkID))
                            {
                                Data.ChunkData cd = Managers.WorldManager.ChunkDataList[ChunkID];
                                if (cd.hasOwner())
                                {
                                    NetworkID id = cd.getOwner();
                                    if (id == d.requestedBy.ID)
                                    {
                                        return(true);
                                    }
                                    return(false);
                                }
                            }
                        }
                        ColonyAPI.Helpers.Chat.send(Players.GetPlayer(d.requestedBy.ID), "You don't own the chunk");
                        return(false);
                    }
                }
                else
                {
                    //This section is for spawn.
                    if (PermissionsManager.CheckAndWarnPermission(Players.GetPlayer(d.requestedBy.ID), "spawnbuilder"))
                    {
                        //Helpers.Chat.send(Players.GetPlayer(d.requestedBy.ID), "You aren't far enough from spawn, but you are admin");
                        return(true);
                    }
                    else
                    {
                        ColonyAPI.Helpers.Chat.send(Players.GetPlayer(d.requestedBy.ID), "You aren't far enough from spawn");
                        return(false);
                    }
                }
            }
            else
            {
                ColonyAPI.Helpers.Chat.send(Players.GetPlayer(d.requestedBy.ID), "You don't have build permissions");
                return(false);
            }
        }