Modding:World Access: Difference between revisions

From Vintage Story Wiki
no edit summary
No edit summary
(8 intermediate revisions by 3 users not shown)
Line 4: Line 4:


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
     public class SampleMod : ModBase
     public class SampleMod : ModSystem
     {
     {
         ICoreServerAPI api;
         ICoreServerAPI api;
Line 21: Line 21:
</syntaxhighlight>
</syntaxhighlight>


With this you can already start setting or reading blocks using the api object. Please not that mods are loaded before the world is loaded. So you cannot immediately access the world. So depending on what you want to achieve, you have to register to the appropriate event. For some examples in order to do something...
With this you can already start placing or reading blocks using the api object. Please note that mods are loaded before the world is loaded, so you cannot immediately access the world. Depending on what you want to achieve, you have to register to the appropriate event. For some examples in order to do something...
* after the world has loaded you could register to the RunGame phase: <code>api.Event.ServerRunPhase(EnumServerRunPhase.RunGame, OnRunGame);</code>
* after the world has loaded you could register to the RunGame phase: <code>api.Event.ServerRunPhase(EnumServerRunPhase.RunGame, OnRunGame);</code>
* during world generation we'd have to register to the [[WorldGen API|appropriate world gen events]].
* during world generation we'd have to register to the [[WorldGen API|appropriate world gen events]].
* when the player runs a command has to type we can register a command: <code>api.RegisterCommand("test", "a test command", "", OnCommand);</code>
* when the player runs a custom command we need to register one: <code>api.RegisterCommand("test", "a test command", "", OnCommand);</code>
* when a player joins the game: <code>api.Event.PlayerJoin(OnPlayerJoin);</code>
* when a player joins the game: <code>api.Event.PlayerJoin += OnPlayerJoin;</code>


Let's register to the player join event.  
Let's register to the player join event.  
Line 33: Line 33:
         {
         {
             this.api = api;
             this.api = api;
             api.Event.PlayerJoin(OnPlayerJoin);
             api.Event.PlayerJoin += OnPlayerJoin;
         }
         }


Line 46: Line 46:
* Count the amount log blocks around the player in a 3 block radius
* Count the amount log blocks around the player in a 3 block radius


Now, blocks are always uniquely identified by a number of characters called the block code. If you want to find out a blocks code, a simple way of doing it is to start the game, enable the debug info mode via the command .edi and look at a block in the creative inventory:
Now, blocks are always uniquely identified by a number of characters called the block code. If you want to find out a blocks code, a simple way of doing it is to start the game, enable the debug info mode via the command <code>.edi</code> and look at a block in the creative inventory:


[[File:Blockcode.png]]
[[File:Blockcode.png]]
Line 74: Line 74:


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
             // Check a 3x3x3 area for logs
             // Check a 7x7x7 area for logs
             int quantityLogs = 0;
             int quantityLogs = 0;
             for (int x = -3; x <= 3; x++)
             for (int x = -3; x <= 3; x++)
Line 120: Line 120:
             api.World.BlockAccessor.SetBlock(blockId, plrpos.DownCopy());
             api.World.BlockAccessor.SetBlock(blockId, plrpos.DownCopy());


             // Check a 3x3x3 area for logs
             // Check a 7x7x7 area for logs
             int quantityLogs = 0;
             int quantityLogs = 0;
             api.World.BlockAccessor.WalkBlocks(
             api.World.BlockAccessor.WalkBlocks(
Line 134: Line 134:
[[File:SetblockTut.png|500px]]
[[File:SetblockTut.png|500px]]


I hope this taught you the basics of accessing the world.
I hope this taught you the basics of accessing the world. More ways to access blocks and entities will be added here in the future.
 
 
 
{{Navbox/modding|Vintage Story}}
Confirmedusers, Bureaucrats, editor, Administrators
1,778

edits