Plugin API

From Mineserver Wiki

(Difference between revisions)
Jump to: navigation, search
(callback formatted.)
Line 23: Line 23:
   {
   {
     mineserver = mineserver_temp;
     mineserver = mineserver_temp;
-
     if (mineserver->plugin.getPluginVersion(pluginName.c_str(),pluginName.size()) > 0)
+
     if (mineserver->plugin.getPluginVersion(pluginName.c_str()) > 0)
     {
     {
-
       std::string msg="command is already loaded v." +dtos(mineserver->plugin.getPluginVersion(pluginName.c_str(),pluginName.size()));
+
       std::string msg="command is already loaded v." +dtos(mineserver->plugin.getPluginVersion(pluginName.c_str()));
       mineserver->screen.log(msg.c_str(),msg.size());
       mineserver->screen.log(msg.c_str(),msg.size());
       return;
       return;
     }
     }
     std::string msg="Loaded "+pluginName+"!";
     std::string msg="Loaded "+pluginName+"!";
-
     mineserver->screen.log(msg.c_str(),msg.size());
+
     mineserver->screen.log(msg.c_str());
-
     mineserver->plugin.setPluginVersion(pluginName.c_str(),pluginName.size(), PLUGIN_COMMAND_VERSION);
+
     mineserver->plugin.setPluginVersion(pluginName.c_str(), PLUGIN_COMMAND_VERSION);
-
    std::string hookName="ChatPre";
+
     mineserver->callback.add_hook("ChatPre", (void *)SOMEFUNCTIONNAME);
-
     mineserver->callback.add_hook(hookName.c_str(),hookName.size(), (void *)SOMEFUNCTIONNAME);
+
     mineserver->callback.add_hook("BlockPlacePre", (void *)SOMEFUNCTIONNAME2);
-
    hookName = "BlockPlacePre";
+
-
     mineserver->callback.add_hook(hookName.c_str(),hookName.size(), (void *)SOMEFUNCTIONNAME2);
+
   }
   }
   PLUGIN_API_EXPORT void (plugin_name)_shutdown(void)
   PLUGIN_API_EXPORT void (plugin_name)_shutdown(void)
   {
   {
-
     if (mineserver->plugin.getPluginVersion(pluginName.c_str(),pluginName.size()) <= 0)
+
     if (mineserver->plugin.getPluginVersion(pluginName.c_str()) <= 0)
     {
     {
-
       std::string msg="command is not loaded!";
+
       mineserver->screen.log("command is not loaded!"));
-
      mineserver->screen.log(msg.c_str(),msg.size());
+
       return;
       return;
     }
     }
Line 64: Line 61:
! class="col3" | Parameter info
! class="col3" | Parameter info
|- class="row1"
|- class="row1"
-
| class="col0" rowspan="4" | '''sendmsgTo'''
+
| class="col0" rowspan="2" | '''sendmsgTo'''
| class="col1" | user
| class="col1" | user
| class="col2" | const char*
| class="col2" | const char*
-
| class="col3" | Username in char array
+
| class="col3" | Username in null terminated char array
|- class="row2"
|- class="row2"
-
| class="col1" | userLen
 
-
| class="col2" | size_t
 
-
| class="col3" | Length of username
 
-
|- class="row4"
 
| class="col1" | msg
| class="col1" | msg
| class="col2" | const char*
| class="col2" | const char*
-
| class="col3" | Message in char array
+
| class="col3" | Message in null terminated char array
-
|- class="row5"
+
|- class="row3"
-
| class="col1" | msgLen
+
-
| class="col2" | size_t
+
-
| class="col3" | length of the message
+
-
|- class="row6"
+
! class="col0" | Return value
! class="col0" | Return value
| class="col1 rightalign" colspan="3" | bool, telling it the user was found
| class="col1 rightalign" colspan="3" | bool, telling it the user was found
Line 92: Line 81:
! class="col3" | Parameter info
! class="col3" | Parameter info
|- class="row1"
|- class="row1"
-
| class="col0" rowspan="2" | '''sendmsg'''
+
| class="col0" rowspan="1" | '''sendmsg'''
| class="col1" | msg
| class="col1" | msg
| class="col2" | const char*
| class="col2" | const char*
-
| class="col3" | Message in char array
+
| class="col3" | Message in null terminated char array
|- class="row2"
|- class="row2"
-
| class="col1" | msgLen
 
-
| class="col2" | size_t
 
-
| class="col3" | length of the message
 
-
|- class="row3"
 
! class="col0" | Return value
! class="col0" | Return value
| class="col1 rightalign" colspan="3" | bool, telling it the user was found
| class="col1 rightalign" colspan="3" | bool, telling it the user was found
Line 114: Line 99:
! class="col3" | Parameter info
! class="col3" | Parameter info
|- class="row1"
|- class="row1"
-
| class="col0" rowspan="2" | '''log'''
+
| class="col0" rowspan="1" | '''log'''
| class="col1" | msg
| class="col1" | msg
| class="col2" | const char*
| class="col2" | const char*
-
| class="col3" | Message in char array
+
| class="col3" | Message in null terminated char array
|- class="row2"
|- class="row2"
-
| class="col1" | msgLen
 
-
| class="col2" | size_t
 
-
| class="col3" | length of the message
 
-
|- class="row3"
 
! class="col0" | Return value
! class="col0" | Return value
| class="col1 rightalign" colspan="3" | void
| class="col1 rightalign" colspan="3" | void
-
|- class="row8"
+
|- class="row3"
| class="col0" colspan="4" | Prints message to server window
| class="col0" colspan="4" | Prints message to server window
|}
|}
Line 139: Line 120:
! class="col3" | Parameter info
! class="col3" | Parameter info
|- class="row1"
|- class="row1"
-
| class="col0" rowspan="7" | '''createPickupSpawn'''
+
| class="col0" rowspan="6" | '''createPickupSpawn'''
| class="col1" | x
| class="col1" | x
| class="col2" | int
| class="col2" | int
Line 164: Line 145:
| class="col3" | Username
| class="col3" | Username
|- class="row6"
|- class="row6"
-
| class="col1" | userLen
 
-
| class="col2" | size_t
 
-
| class="col3" | Length of username
 
-
|- class="row7"
 
! class="col0" | Return value
! class="col0" | Return value
| class="col1 rightalign" colspan="3" | void
| class="col1 rightalign" colspan="3" | void
-
|- class="row8"
+
|- class="row7"
| class="col0" colspan="4" | Spawns an item at (x,y,z) with type,count and health specified. If "user" is set, he will not be able to pick up the item right away to make it possible to throw stuff away.
| class="col0" colspan="4" | Spawns an item at (x,y,z) with type,count and health specified. If "user" is set, he will not be able to pick up the item right away to make it possible to throw stuff away.
|}
|}
Line 297: Line 274:
! class="col3" | Parameter info
! class="col3" | Parameter info
|- class="row1"
|- class="row1"
-
| class="col0" rowspan="4" | '''ChatPre'''
+
| class="col0" rowspan="2" | '''ChatPre'''
| class="col1" | user
| class="col1" | user
| class="col2" | const char*
| class="col2" | const char*
-
| class="col3" | Username in char array
+
| class="col3" | Username in null terminated char array
|- class="row2"
|- class="row2"
-
| class="col1" | userLen
 
-
| class="col2" | size_t
 
-
| class="col3" | Length of username
 
-
|- class="row4"
 
| class="col1" | msg
| class="col1" | msg
| class="col2" | const char*
| class="col2" | const char*
-
| class="col3" | Message in char array
+
| class="col3" | Message in null terminated char array
-
|- class="row5"
+
|- class="row3"
-
| class="col1" | msgLen
+
-
| class="col2" | size_t
+
-
| class="col3" | Length of the message
+
-
|- class="row6"
+
! class="col0" | Return value
! class="col0" | Return value
| class="col1 rightalign" colspan="3" | bool
| class="col1 rightalign" colspan="3" | bool
-
|- class="row7"
+
|- class="row4"
| class="col0" colspan="4" | called on chat message prosessing, returning false will terminate the callback.
| class="col0" colspan="4" | called on chat message prosessing, returning false will terminate the callback.
|}
|}
Line 327: Line 296:
! class="col3" | Parameter info
! class="col3" | Parameter info
|- class="row1"
|- class="row1"
-
| class="col0" rowspan="6" | '''BlockPlacePre'''
+
| class="col0" rowspan="5" | '''BlockPlacePre'''
| class="col1" | user
| class="col1" | user
| class="col2" | const char*
| class="col2" | const char*
| class="col3" | Username in char array
| class="col3" | Username in char array
|- class="row2"
|- class="row2"
-
| class="col1" | userLen
 
-
| class="col2" | size_t
 
-
| class="col3" | Length of username
 
-
|- class="row4"
 
| class="col1" | x
| class="col1" | x
| class="col2" | int
| class="col2" | int
| class="col3" | x-coord
| class="col3" | x-coord
-
|- class="row5"
+
|- class="row3"
| class="col1" | y
| class="col1" | y
| class="col2" | int
| class="col2" | int
| class="col3" | y-coord
| class="col3" | y-coord
-
|- class="row6"
+
|- class="row4"
| class="col1" | z
| class="col1" | z
| class="col2" | int
| class="col2" | int
| class="col3" | z-coord
| class="col3" | z-coord
-
|- class="row7"
+
|- class="row5"
| class="col1" | block
| class="col1" | block
| class="col2" | char
| class="col2" | char
| class="col3" | block type
| class="col3" | block type
-
|- class="row8"
+
|- class="row6"
! class="col0" | Return value
! class="col0" | Return value
| class="col1 rightalign" colspan="3" | bool
| class="col1 rightalign" colspan="3" | bool
-
|- class="row9"
+
|- class="row7"
| class="col0" colspan="4" | called on block placement, returning false will prevent block placement and terminate callback.
| class="col0" colspan="4" | called on block placement, returning false will prevent block placement and terminate callback.
|}
|}
Line 365: Line 330:
! class="col3" | Parameter info
! class="col3" | Parameter info
|- class="row1"
|- class="row1"
-
| class="col0" rowspan="5" | '''BlockBreakPre'''
+
| class="col0" rowspan="4" | '''BlockBreakPre'''
| class="col1" | user
| class="col1" | user
| class="col2" | const char*
| class="col2" | const char*
| class="col3" | Username in char array
| class="col3" | Username in char array
|- class="row2"
|- class="row2"
-
| class="col1" | userLen
 
-
| class="col2" | size_t
 
-
| class="col3" | Length of username
 
-
|- class="row4"
 
| class="col1" | x
| class="col1" | x
| class="col2" | int
| class="col2" | int
| class="col3" | x-coord
| class="col3" | x-coord
-
|- class="row5"
+
|- class="row3"
| class="col1" | y
| class="col1" | y
| class="col2" | int
| class="col2" | int
| class="col3" | y-coord
| class="col3" | y-coord
-
|- class="row6"
+
|- class="row4"
| class="col1" | z
| class="col1" | z
| class="col2" | int
| class="col2" | int
| class="col3" | z-coord
| class="col3" | z-coord
-
|- class="row8"
+
|- class="row5"
! class="col0" | Return value
! class="col0" | Return value
| class="col1 rightalign" colspan="3" | bool
| class="col1 rightalign" colspan="3" | bool
-
|- class="row9"
+
|- class="row6"
| class="col0" colspan="4" | called on block break, returning false will prevent block breaking and terminate callback.
| class="col0" colspan="4" | called on block break, returning false will prevent block breaking and terminate callback.
|}
|}

Revision as of 01:26, 7 January 2011

Mineserver uses a C-plugin API which is described in this page.

Contents

Creating a plugin

You will need to include plugin_api.h to your project.

...write some more stuff here...

Example plugin structure:

 #include "plugin_api.h"
 #define PLUGIN_VERSION 1.0
 std::string dtos( double n )
 {
   std::ostringstream result;
   result << n;
   return result.str();
 }
 mineserver_pointer_struct* mineserver;
 std::string pluginName = "command";
 PLUGIN_API_EXPORT void (plugin_name)_init(mineserver_pointer_struct* mineserver_temp)
 {
   mineserver = mineserver_temp;
   if (mineserver->plugin.getPluginVersion(pluginName.c_str()) > 0)
   {
     std::string msg="command is already loaded v." +dtos(mineserver->plugin.getPluginVersion(pluginName.c_str()));
     mineserver->screen.log(msg.c_str(),msg.size());
     return;
   }
   std::string msg="Loaded "+pluginName+"!";
   mineserver->screen.log(msg.c_str());
   mineserver->plugin.setPluginVersion(pluginName.c_str(), PLUGIN_COMMAND_VERSION);
   mineserver->callback.add_hook("ChatPre", (void *)SOMEFUNCTIONNAME);
   mineserver->callback.add_hook("BlockPlacePre", (void *)SOMEFUNCTIONNAME2);
 }
 PLUGIN_API_EXPORT void (plugin_name)_shutdown(void)
 {
   if (mineserver->plugin.getPluginVersion(pluginName.c_str()) <= 0)
   {
     mineserver->screen.log("command is not loaded!"));
     return;
   }
 }

Available functions

Mineserver

Chat

Function Parameter name Parameter type Parameter info
sendmsgTo user const char* Username in null terminated char array
msg const char* Message in null terminated char array
Return value bool, telling it the user was found
Function Parameter name Parameter type Parameter info
sendmsg msg const char* Message in null terminated char array
Return value bool, telling it the user was found

Screen

Function Parameter name Parameter type Parameter info
log msg const char* Message in null terminated char array
Return value void
Prints message to server window

Map

Function Parameter name Parameter type Parameter info
createPickupSpawn x int x-coordinate
y int y-coordinate
z int z-coordinate
count int How many to spawn (1-64)
health int item health (0 = full health, max value depends on the item)
user const char* Username
Return value void
Spawns an item at (x,y,z) with type,count and health specified. If "user" is set, he will not be able to pick up the item right away to make it possible to throw stuff away.


Function Parameter name Parameter type Parameter info
setTime timeValue int value 0-24000
Return value bool
Sets server time to timeValue, which can be in range 0-24000
Function Parameter name Parameter type Parameter info
getSpawn x int* x-coordinate
y int* y-coordinate
z int* z-coordinate
Return value void
Gets server spawn position
Function Parameter name Parameter type Parameter info
getBlock x int x-coordinate
y int y-coordinate
z int z-coordinate
type unsigned char* block type
meta unsigned char* block metadata
Return value bool
Get block type and metadata (absolute block coordinates)
Function Parameter name Parameter type Parameter info
setBlock x int x-coordinate
y int y-coordinate
z int z-coordinate
type unsigned char block type
meta unsigned char block metadata
Return value bool
Set block type and metadata (absolute block coordinates)

Available callbacks

Name Parameter name Parameter type Parameter info
ChatPre user const char* Username in null terminated char array
msg const char* Message in null terminated char array
Return value bool
called on chat message prosessing, returning false will terminate the callback.
Name Parameter name Parameter type Parameter info
BlockPlacePre user const char* Username in char array
x int x-coord
y int y-coord
z int z-coord
block char block type
Return value bool
called on block placement, returning false will prevent block placement and terminate callback.
Name Parameter name Parameter type Parameter info
BlockBreakPre user const char* Username in char array
x int x-coord
y int y-coord
z int z-coord
Return value bool
called on block break, returning false will prevent block breaking and terminate callback.