예제 #1
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            this.api = api;

            api.Event.PlayerJoin += OnPlayerJoin;
            api.RegisterCommand("house", "Places a house (sample mod)", "", CmdGenHouse, Privilege.controlserver);
            api.RegisterCommand("block", "", "Places a block 2m in front of you (sample mod)", CmdBlock, Privilege.controlserver);
        }
예제 #2
0
 public override void StartServerSide(ICoreServerAPI api)
 {
     sapi = api;
     api.RegisterCommand("collectibleexchange", descriptionMsg, syntaxMsg, (byPlayer, id, args)
                         => CmdCollectibleExchange(byPlayer, id, args));
     api.RegisterCommand("ce", descriptionMsg, syntaxMsg, (byPlayer, id, args)
                         => CmdCollectibleExchange(byPlayer, id, args));
 }
예제 #3
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);

            sapi = api;
            api.RegisterCommand("npc", "Npc control", "[list|enqueue or enq|upd|start|clear]", OnCmdNpc, Privilege.controlserver);
            api.RegisterCommand("npcs", "Npc control", "[startall|stopall]", OnCmdNpcs, Privilege.controlserver);

            api.Event.OnPlayerInteractEntity += Event_OnPlayerInteractEntity;
        }
예제 #4
0
        public override void StartServerSide(ICoreServerAPI sapi)
        {
            this.sapi = sapi;

            sapi.RegisterCommand("weather", "Show/Set current weather info", "", cmdWeatherServer, Privilege.controlserver);
//#if DEBUG
            sapi.RegisterCommand("prectest", "Precipitation test export", "", cmdPrecTestServer, Privilege.controlserver);
            sapi.RegisterCommand("snowaccum", "Snow accum test", "", cmdSnowAccum, Privilege.controlserver);
//#endif
        }
        public WaypointMapLayer(ICoreAPI api, IWorldMapManager mapSink) : base(api, mapSink)
        {
            if (api.Side == EnumAppSide.Server)
            {
                ICoreServerAPI sapi = api as ICoreServerAPI;
                this.sapi = sapi;

                sapi.Event.GameWorldSave += OnSaveGameGettingSaved;
                sapi.RegisterCommand("waypoint", "Put a waypoint at this location which will be visible for you on the map", "[add|addat|modify|remove|list]", OnCmdWayPoint, Privilege.chat);
                sapi.RegisterCommand("tpwp", "Teleport yourself to a waypoint starting with the supplied name", "[name]", OnCmdTpTo, Privilege.tp);
            }
        }
        public override void StartServerSide(ICoreServerAPI sapi)
        {
            this.sapi = sapi;

            sapi.RegisterCommand("weather", "Show/Set current weather info", "", cmdWeatherServer, Privilege.controlserver);
#if DEBUG
            sapi.RegisterCommand("prectest", "Precipitation test export", "", cmdPrecTestServer, Privilege.controlserver);
            sapi.RegisterCommand("snowaccum", "Snow accum test", "", cmdSnowAccum, Privilege.controlserver);
#endif

            sapi.RegisterCommand("whenwillitstopraining", "When does it finally stop to rain around here?!", "", cmdWhenWillItStopRaining, Privilege.controlserver);
        }
예제 #7
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);
            this.api = api;

            //Bases
            api.RegisterCommand("me", "Send message as player action", "/me msg", MeCommand, Privilege.chat);
            api.RegisterCommand("tell", "Send private message to other player", "/tell player msg", TellCommand, Privilege.chat);
            api.RegisterCommand("reply", "Reply to last private message", "/reply msg", ReplyCommand, Privilege.chat);

            //Aliases
            api.RegisterCommand("t", "Send private message to other player", "/t player msg", TellCommand, Privilege.chat);
            api.RegisterCommand("r", "Reply to last private message", "/r msg", ReplyCommand, Privilege.chat);
        }
예제 #8
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);
            sapi = api;

            api.RegisterCommand("astar", "A* path finding debug testing", "[start|end]", onCmdAStar, Privilege.controlserver);
        }
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);
            api.RegisterCommand("cleanworld", "Reverts ? blocks that have an ID but do not have an associated block code to air. Only works on chunks that have been loaded. Requires world save and restart.", "",
                                (IServerPlayer player, int groupId, CmdArgs args) =>
            {
                IBlockAccessor worldBlockAccessor = api.World.BlockAccessor;
                IServerChunk currentChunk         = api.WorldManager.GetChunk(player.Entity.Pos.AsBlockPos);
                int chunkSize = worldBlockAccessor.ChunkSize;
                Dictionary <long, IServerChunk> loadedChunks = api.WorldManager.AllLoadedChunks;

                for (int i = 0; i < loadedChunks.Count; i++)
                {
                    currentChunk = loadedChunks.ElementAt(i).Value;

                    for (int x = 0; x < chunkSize; x++)
                    {
                        for (int y = 0; y < chunkSize; y++)
                        {
                            for (int z = 0; z < chunkSize; z++)
                            {
                                if (currentChunk.Blocks != null)
                                {
                                    if (api.World.GetBlock(currentChunk.Blocks[(y * chunkSize + z) * chunkSize + x]).Code == null)
                                    {
                                        currentChunk.Blocks[(y * chunkSize + z) * chunkSize + x] = 0;
                                    }
                                }
                            }
                        }
                    }
                    currentChunk.MarkModified();
                }
            }, Privilege.controlserver);
        }
예제 #10
0
        public WorldMap(ICoreServerAPI api)
        {
            this.api = api;
            string mapFolder = api.GetOrCreateDataPath("Maps");

            string landformPath = mapFolder + @"/landforms.png";

            if (File.Exists(landformPath))
            {
                this.landformMap = new Bitmap(landformPath);
            }

            string climatePath = mapFolder + @"/climate.png";

            if (File.Exists(climatePath))
            {
                this.climateMap = new Bitmap(climatePath);
            }

            api.RegisterCommand("getpixelinfo", "gets pixel values on maps", "", (IServerPlayer player, int i, CmdArgs args) =>
            {
                int chunkx = player.Entity.ServerPos.AsBlockPos.X / 32;
                int chunkz = player.Entity.ServerPos.AsBlockPos.Z / 32;

                player.SendMessage(0,
                                   "landform:" +
                                   ChunkToPixel(chunkx, chunkz, landformMap).R.ToString() +
                                   " temp:" +
                                   ChunkToPixel(chunkx, chunkz, climateMap).R.ToString() +
                                   " humid:" +
                                   ChunkToPixel(chunkx, chunkz, landformMap).R.ToString(),
                                   EnumChatType.Notification);
            });
        }
예제 #11
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            this.api = api;
            api.RegisterTreeGenerator(new AssetLocation("immersion:palm"), new PalmTreeGenerator(api, "palm"));
            api.RegisterTreeGenerator(new AssetLocation("immersion:palmcoconut"), new PalmTreeGenerator(api, "palmcoconut"));
            api.RegisterTreeGenerator(new AssetLocation("immersion:palmbanana"), new PalmTreeGenerator(api, "palmbanana"));

            api.RegisterCommand("genpalm", "genpalm", "", (p, g, a) =>
            {
                var pos = p.CurrentBlockSelection?.Position?.AddCopy(0, 1, 0);
                if (sNoise == null)
                {
                    SetupPalm(api.World.BlockAccessor.GetBlock(new AssetLocation("immersion:palmlog-bottom-grown")));
                }
                if (pos != null)
                {
                    GenPalmTree(api.World.BlockAccessor, pos);
                }
            }, Privilege.ban);

            if (!ImmersionWorldgenConfig.GenPalms)
            {
                return;
            }
            chunksize = api.WorldManager.ChunkSize;
            api.Event.ChunkColumnGeneration(OnChunkColumnGen, EnumWorldGenPass.Vegetation, "standard");
            api.Event.InitWorldGenerator(() => SetupPalm(api.World.BlockAccessor.GetBlock(new AssetLocation("immersion:palmlog-bottom-grown"))), "standard");
            api.Event.GetWorldgenBlockAccessor(c => blockAccessor = c.GetBlockAccessor(true));
        }
예제 #12
0
        public override void StartServerSide(ICoreServerAPI Api)
        {
            sapi = Api;
            sapi.RegisterCommand("setmaterial", "Set the material of currently looked at chiseled block", "[block code]", (player, groupId, args) =>
            {
                BlockPos pos          = player.CurrentBlockSelection.Position;
                BlockEntityChisel bet = sapi.World.BlockAccessor.GetBlockEntity(pos) as BlockEntityChisel;
                Block block           = sapi.World.GetBlock(new AssetLocation(args.PopWord()));

                if (bet == null)
                {
                    player.SendMessage(groupId, "Not looking at a chiseled block. Must look at one to set its material", EnumChatType.CommandError);
                    return;
                }
                if (block == null)
                {
                    player.SendMessage(groupId, "Did not supply a valid block code", EnumChatType.CommandError);
                    return;
                }

                bet.MaterialIds = new int[] { block.Id };
                bet.MarkDirty(true);
                player.SendMessage(groupId, "Material set.", EnumChatType.CommandError);
            }
                                 , Privilege.controlserver);
        }
예제 #13
0
        public override void StartServerSide(ICoreServerAPI sapi)
        {
            this.sapi = sapi;

            exportFolderPath = sapi.GetOrCreateDataPath("WorldEdit");

            sapi.Permissions.RegisterPrivilege("worldedit", "Ability to use world edit tools");

            sapi.RegisterCommand("we", "World edit tools", "[ms|me|mc|mex|clear|mdelete|mfill|imp|impr|blu|brs|brm|ers|range|tool|on|off|undo|redo|sovp|block|...]", CmdEditServer, "worldedit");

            sapi.Event.PlayerJoin += OnPlayerJoin;

            sapi.Event.PlayerSwitchGameMode += OnSwitchedGameMode;

            sapi.Event.BreakBlock     += OnBreakBlock;
            sapi.Event.DidPlaceBlock  += OnDidBuildBlock;
            sapi.Event.SaveGameLoaded += OnLoad;
            sapi.Event.GameWorldSave  += OnSave;

            serverChannel =
                sapi.Network.RegisterChannel("worldedit")
                .RegisterMessageType(typeof(RequestWorkSpacePacket))
                .RegisterMessageType(typeof(WorldEditWorkspace))
                .RegisterMessageType(typeof(ChangePlayerModePacket))
                .RegisterMessageType(typeof(CopyToClipboardPacket))
                .RegisterMessageType(typeof(SchematicJsonPacket))
                .SetMessageHandler <RequestWorkSpacePacket>(OnRequestWorkSpaceMessage)
                .SetMessageHandler <ChangePlayerModePacket>(OnChangePlayerModeMessage)
                .SetMessageHandler <SchematicJsonPacket>(OnReceivedSchematic)
            ;
        }
예제 #14
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);
            api.Event.ChunkColumnGeneration(GenChunkColumn, EnumWorldGenPass.Terrain);
            api.Event.GetWorldgenBlockAccessor(OnWorldGenBlockAccessor);

            api.RegisterCommand("gencaves", "Cave generator test tool. Deletes all chunks in the area and generates inverse caves around the world middle", "", CmdCaveGenTest, Privilege.controlserver);
        }
예제 #15
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);

            api.RegisterCommand("jsonexport", "Export items and blocks as json files", "", CmdExport, Privilege.controlserver);

            this.api = api;
        }
예제 #16
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);

            api.RegisterCommand("mycdebug", "", "", onCmd, Privilege.controlserver);
            api.Event.SaveGameLoaded += Event_SaveGameLoaded;

            this.api = api;
        }
        public override void StartServerSide(ICoreServerAPI api)
        {
            api.Event.ServerRunPhase(EnumServerRunPhase.ModsAndConfigReady, addReinforcementBehavior);
            api.Event.SaveGameLoaded += Event_SaveGameLoaded;
            api.Event.GameWorldSave  += Event_GameWorldSave;
            api.Event.PlayerJoin     += Event_PlayerJoin;

            serverChannel = api.Network
                            .RegisterChannel("blockreinforcement")
                            .RegisterMessageType(typeof(ChunkReinforcementData))
                            .RegisterMessageType(typeof(PrivGrantsData))
            ;

            api.RegisterCommand("bre", "Player owned Block reinforcement privilege management", "[grant|revoke|grantgroup|revokegroup] [playername/groupname] [use or all]", onCmd, Privilege.chat);
            api.RegisterCommand("gbre", "Group owned Block reinforcement privilege management", "[grant|revoke|grantgroup|revokegroup] members or [playername/groupname] [use or all]", onCmdGroup, Privilege.chat);

            api.Permissions.RegisterPrivilege("denybreakreinforced", "Deny the ability to break reinforced blocks", false);
        }
예제 #18
0
 public override void StartServerSide(ICoreServerAPI api)
 {
     this.api = api;
     api.RegisterCommand("returnthings",
                         "[" + Core.ModId + "] Returns things losing on last death", ReturnThingsHelp,
                         ReturnThingsCommand,
                         Config.Current.NeedPrivilegeForReturnThings.Value
                         );
 }
예제 #19
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            serverApi = api;

            api.Event.GameWorldSave  += OnSaveGameSaving;
            api.Event.SaveGameLoaded += OnSaveGameLoading;

            api.RegisterCommand("lfg", "Access the lfg list.", "[list|join|leave]", OnLfg);
        }
예제 #20
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            this.api = api;

            exportFolderPath = api.GetOrCreateDataPath("WorldEdit");

            api.RegisterPrivilege("worldedit", "Ability to use world edit tools");

            api.RegisterCommand("wo", "World edit tools (Old Version)", "[ms|me|mc|mex|cla|clm|fillm|blu]", CmdEdit, "worldedit");
        }
예제 #21
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            serverApi = api;

            api.Network.GetChannel("networkapitest")
            .SetMessageHandler <NetworkApiTestResponse>(OnClientMessage)
            ;

            api.RegisterCommand("nwtest", "Send a test network message", "", OnNwTestCmd, Privilege.controlserver);
        }
예제 #22
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);
            _coreServerApi = api;

            // Kit Config register
            LoadedKitsStorageClass = api.LoadOrCreateConf <KitsStorageClass>(KitsConfigName);

            // Kit Cooldown manager
            KitsCooldownManagerStorage = new KitCooldownManagerStorage(_coreServerApi, CooldownsConfigName);
            KitsCooldownManagerStorage.Load();
            KitsCooldownManager = KitsCooldownManagerStorage.CooldownManager;

            var kitsInstance = new Api.DefaultKits();

            if (LoadedKitsStorageClass.kits.Count == 0)
            {
                var defaultKit = kitsInstance.GetDefaultKit();
                LoadedKitsStorageClass.kits.Add(defaultKit);
                api.StoreModConfig(kitsInstance.GetLoadedKits(), KitsConfigName);
            }

            // Register commands
            api.RegisterCommand(new Commands.Kit(api, kitsInstance));
            api.RegisterCommand(new Commands.Kits(api, kitsInstance));

            // Register priveleges
            api.RegisterPrivilegeClass(typeof(Privilege));
            foreach (var kit in LoadedKitsStorageClass.kits)
            {
                api.Logger.Event($"Register {Privilege.kit}.{kit.name} kit-based permission");
                api
                .Permissions
                .RegisterPrivilege($"{Privilege.kit}.{kit.name}", $"Kit {kit.name}", true);
            }

            // Give kits on first join
            api.Event.PlayerCreate += kitsInstance.GiveFirstJoinKits;

            // Saving cooldowns to file
            api.Event.Timer(CooldownSaveTimer, 3600);
        }
예제 #23
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            this.sapi = api;

            api.Event.SaveGameLoaded += onSaveGameLoaded;
            api.Event.GameWorldSave  += onGameGettingSaved;
            api.Event.RegisterEventBusListener(onLeafDecayEventReceived, 0.5, "testForDecay");
            api.Event.RegisterGameTickListener(processReadyToDecayQueue, leafRemovalInterval);

            api.RegisterCommand("leafdecaydebug", "", "", onLeafdecaydebug, Privilege.controlserver);
        }
예제 #24
0
        public WaypointMapLayer(ICoreAPI api, IWorldMapManager mapSink) : base(api, mapSink)
        {
            if (api.Side == EnumAppSide.Server)
            {
                ICoreServerAPI sapi = api as ICoreServerAPI;
                this.sapi = sapi;

                sapi.Event.GameWorldSave += OnSaveGameGettingSaved;
                sapi.RegisterCommand("waypoint", "Put a waypoint at this location which will be visible for you on the map", "[add|remove|list]", OnCmdWayPoint, Privilege.chat);
            }
        }
예제 #25
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            api.RegisterCommand("errorreporter", "Toggles on/off the error reporting dialog on startup", "[on|off]", OnCmdErrRep, Privilege.controlserver);

            serverChannel =
                api.Network.RegisterChannel("errorreporter")
                .RegisterMessageType(typeof(ServerLogEntries))
            ;

            api.Event.PlayerJoin += OnPlrJoin;
        }
예제 #26
0
        public override void StartServerSide(ICoreServerAPI Api)
        {
            sapi = Api;
            sapi.Event.PlayerJoin += (player) =>
            {
                ServerMain server       = (sapi.World as ServerMain);
                var        PlayerGroups = server.GetField <ServerMain, ServerSystem[]>("Systems").OfType <ServerySystemPlayerGroups>().Single();
                var        serverAdmin  = (object)(new ServerPlayer(server, ServerWorldPlayerData.CreateNew("!!!ImmersionAdmin", "!!!ImmersionAdmin")));
                if (!PlayerGroups.PlayerGroupsByUid.Any(g => g.Value.Name == "suplayer"))
                {
                    PlayerGroups.CallMethod("CmdCreategroup", (object)(serverAdmin), (object)0, new CmdArgs("suplayer"));
                }
                var group = PlayerGroups.PlayerGroupsByUid.Where(t => t.Value.Name == "suplayer").Single().Value;
                if (player.Privileges.Contains(Privilege.ban))
                {
                    server.PlayerDataManager.PlayerDataByUid[player.PlayerUID].JoinGroup(group, EnumPlayerGroupMemberShip.Op);
                }
                else
                {
                    server.PlayerDataManager.PlayerDataByUid[player.PlayerUID].JoinGroup(group, EnumPlayerGroupMemberShip.Member);
                }

                server.PlayerDataManager.playerDataDirty   = true;
                server.PlayerDataManager.playerGroupsDirty = true;
            };

            sapi.RegisterCommand("setmaterial", "Set the material of currently looked at chiseled block", "[block code]", (player, groupId, args) =>
            {
                BlockPos pos          = player.CurrentBlockSelection.Position;
                BlockEntityChisel bet = sapi.World.BlockAccessor.GetBlockEntity(pos) as BlockEntityChisel;
                Block block           = sapi.World.GetBlock(new AssetLocation(args.PopWord()));

                if (bet == null)
                {
                    player.SendMessage(groupId, "Not looking at a chiseled block. Must look at one to set its material", EnumChatType.CommandError);
                    return;
                }
                if (block == null)
                {
                    player.SendMessage(groupId, "Did not supply a valid block code", EnumChatType.CommandError);
                    return;
                }

                bet.MaterialIds = new int[] { block.Id };
                bet.MarkDirty(true);
                player.SendMessage(groupId, "Material set.", EnumChatType.CommandError);
            }
                                 , Privilege.controlserver);
        }
예제 #27
0
        public override void StartServerSide(ICoreServerAPI api)
        {
            base.StartServerSide(api);

            sapi = api;

            api.Event.SaveGameLoaded += Event_SaveGameLoaded;
            api.Event.GameWorldSave  += Event_GameWorldSave;
            api.Event.PlayerJoin     += Event_PlayerJoin;
            api.Event.RegisterGameTickListener(OnServerTick100ms, 101);
            api.Event.RegisterGameTickListener(OnServerTick3s, 2999);
            api.RegisterCommand("rifttest", "", "", onCmdRiftTest);

            schannel = sapi.Network.GetChannel("rifts");
        }
예제 #28
0
        public override void StartServerSide(ICoreServerAPI m)
        {
            this.api       = m;
            treeGenerators = new TreeGeneratorsUtil(m);

            m.RegisterCommand("wgen", "World generator tools", "[testmap|genmap|testnoise|chunk|region|pos|tree]", CmdWgen, Privilege.controlserver);

            m.Event.SaveGameLoaded += OnGameWorldLoaded;
            if (api.Server.CurrentRunPhase == EnumServerRunPhase.RunGame)
            {
                OnGameWorldLoaded();
            }

            //  api.WorldManager.AutoGenerateChunks = false;
        }
        /// <summary>
        /// This is our starting point. This method will be called by the server.
        /// </summary>
        public override void StartServerSide(ICoreServerAPI api)
        {
            _api = api;
            _worldBlockAccessor = api.World.BlockAccessor;
            _chunkSize          = _worldBlockAccessor.ChunkSize;
            _treeTypes          = new HashSet <string>();
            LoadTreeTypes(_treeTypes);

            //Registers our command with the system's command registry.
            _api.RegisterCommand("treasure", "Place a treasure chest with random items", "", PlaceTreasureChestInFrontOfPlayer, Privilege.controlserver);

            //Registers a delegate to be called so we can get a reference to the chunk gen block accessor
            _api.Event.GetWorldgenBlockAccessor(OnWorldGenBlockAccessor);

            //Registers a delegate to be called when a chunk column is generating in the Vegetation phase of generation
            _api.Event.ChunkColumnGeneration(OnChunkColumnGeneration, EnumWorldGenPass.PreDone, "standard");
        }
        public override void StartServerSide(ICoreServerAPI api)
        {
            this.sapi = api;
            api.Event.SaveGameLoaded += OnLoadGame;
            api.Event.GameWorldSave  += OnSaveGame;

            api.Event.RegisterEventBusListener(OnConfigEventServer, 0.5, "configTeleporter");
            api.RegisterCommand("settlpos", "Set translocator target teleport position of currently looked at translocator", "[position]", onSetTlPos, Privilege.setspawn);

            serverChannel =
                api.Network.RegisterChannel("tpManager")
                .RegisterMessageType(typeof(TpLocations))
                .RegisterMessageType(typeof(TeleporterLocation))
                .RegisterMessageType(typeof(DidTeleport))
                .SetMessageHandler <TeleporterLocation>(OnSetLocationReceived)
            ;
        }