Difference between revisions of "Plugin API"

From Mineserver Wiki
Jump to navigation Jump to search
<code>
<code>
−
#include "plugin_api.h"
+
#include <stdio.h>
−
  #define PLUGIN_VERSION 1.0
+
#include <stdlib.h>
−
  std::string dtos( double n )
+
#include <time.h>
−
  {
+
#include <string.h>
−
    std::ostringstream result;
+
#include <cstdlib>
−
    result << n;
+
#include <iostream>
−
    return result.str();
+
−
  }
+
#define MINESERVER_C_API
−
  mineserver_pointer_struct* mineserver;
+
#include "../src/plugin_api.h"
−
  std::string pluginName = "command";
+
#include "../src/logtype.h"
−
  PLUGIN_API_EXPORT void (plugin_name)_init(mineserver_pointer_struct* mineserver_temp)
+
 +
#define PLUGIN_VERSION 1.0
 +
double pluginVersion = PLUGIN_VERSION;
 +
 +
#define PLUGIN_NAME "samplePlugin"
 +
const char* pluginName = PLUGIN_NAME;
 +
 +
const char* logSource = "plugin.screen";
 +
mineserver_pointer_struct* mineserver;
 +
 +
 PLUGIN_API_EXPORT void CALLCONVERSION samplePlugin_init(mineserver_pointer_struct* mineserver_temp)
 +
{
 +
  mineserver = mineserver_temp;
 +
 +
  if (mineserver->plugin.getPluginVersion(pluginName) > 0)
  {
  {
−
mineserver = mineserver_temp;
+
mineserver->logger.log(LogType::LOG_INFO, logSource, "The " PLUGIN_NAME " plugin is already loaded");
−
if (mineserver->plugin.getPluginVersion(pluginName.c_str()) > 0)
+
return;
−
    {
 
−
      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->plugin.addCallback("PlayerChatPre", (void *)SOMEFUNCTIONNAME);
 
−
    mineserver->plugin.addCallback("BlockPlacePre", (void *)SOMEFUNCTIONNAME2);
 
  }
  }
−
  PLUGIN_API_EXPORT void (plugin_name)_shutdown(void)
+
 +
  mineserver->logger.log(LogType::LOG_INFO, logSource, "Loaded " PLUGIN_NAME);
 +
  mineserver->plugin.setPluginVersion(pluginName, pluginVersion);
 +
 +
}
 +
 +
 +
PLUGIN_API_EXPORT void CALLCONVERSION samplePlugin_shutdown(void)
 +
{
 +
  if (mineserver->plugin.getPluginVersion(pluginName) <= 0)
  {
  {
−
if (mineserver->plugin.getPluginVersion(pluginName.c_str()) <= 0)
+
mineserver->logger.log(LogType::LOG_INFO, logSource, PLUGIN_NAME " is not loaded!");
−
{
+
return;
−
      mineserver->screen.log("command is not loaded!"));
 
−
      return;
 
−
    }
 
  }
  }
 +
  mineserver->logger.log(LogType::LOG_INFO, logSource, PLUGIN_NAME " has been unloaded!");
 +
}
 +
</code>
</code>