begin
This commit is contained in:
@@ -3,7 +3,7 @@ project(MinecraftPE)
|
|||||||
|
|
||||||
include(cmake/CPM.cmake)
|
include(cmake/CPM.cmake)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.10)
|
set(CMAKE_POLICY_VERSION_MINIMUM 3.10)
|
||||||
|
|
||||||
@@ -95,6 +95,46 @@ else()
|
|||||||
"GLFW_BUILD_TESTS OFF"
|
"GLFW_BUILD_TESTS OFF"
|
||||||
"GLFW_BUILD_DOCS OFF"
|
"GLFW_BUILD_DOCS OFF"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
CPMAddPackage("gh:halx99/sol2#support-lua-5.5")
|
||||||
|
CPMAddPackage("gh:lua/lua#master")
|
||||||
|
|
||||||
|
add_library(
|
||||||
|
lua STATIC
|
||||||
|
${lua_SOURCE_DIR}/lapi.c
|
||||||
|
${lua_SOURCE_DIR}/lauxlib.c
|
||||||
|
${lua_SOURCE_DIR}/lbaselib.c
|
||||||
|
${lua_SOURCE_DIR}/lcode.c
|
||||||
|
${lua_SOURCE_DIR}/lcorolib.c
|
||||||
|
${lua_SOURCE_DIR}/lctype.c
|
||||||
|
${lua_SOURCE_DIR}/ldblib.c
|
||||||
|
${lua_SOURCE_DIR}/ldebug.c
|
||||||
|
${lua_SOURCE_DIR}/ldo.c
|
||||||
|
${lua_SOURCE_DIR}/ldump.c
|
||||||
|
${lua_SOURCE_DIR}/lfunc.c
|
||||||
|
${lua_SOURCE_DIR}/lgc.c
|
||||||
|
${lua_SOURCE_DIR}/linit.c
|
||||||
|
${lua_SOURCE_DIR}/liolib.c
|
||||||
|
${lua_SOURCE_DIR}/llex.c
|
||||||
|
${lua_SOURCE_DIR}/lmathlib.c
|
||||||
|
${lua_SOURCE_DIR}/lmem.c
|
||||||
|
${lua_SOURCE_DIR}/loadlib.c
|
||||||
|
${lua_SOURCE_DIR}/lobject.c
|
||||||
|
${lua_SOURCE_DIR}/lopcodes.c
|
||||||
|
${lua_SOURCE_DIR}/loslib.c
|
||||||
|
${lua_SOURCE_DIR}/lparser.c
|
||||||
|
${lua_SOURCE_DIR}/lstate.c
|
||||||
|
${lua_SOURCE_DIR}/lstring.c
|
||||||
|
${lua_SOURCE_DIR}/lstrlib.c
|
||||||
|
${lua_SOURCE_DIR}/ltable.c
|
||||||
|
${lua_SOURCE_DIR}/ltablib.c
|
||||||
|
${lua_SOURCE_DIR}/ltm.c
|
||||||
|
${lua_SOURCE_DIR}/lua.c
|
||||||
|
${lua_SOURCE_DIR}/lundump.c
|
||||||
|
${lua_SOURCE_DIR}/lutf8lib.c
|
||||||
|
${lua_SOURCE_DIR}/lvm.c
|
||||||
|
${lua_SOURCE_DIR}/lzio.c
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
CPMAddPackage(
|
CPMAddPackage(
|
||||||
@@ -215,6 +255,8 @@ file(GLOB SERVER_SOURCES
|
|||||||
|
|
||||||
"src/world/phys/HitResult.cpp"
|
"src/world/phys/HitResult.cpp"
|
||||||
"src/commands/*.cpp"
|
"src/commands/*.cpp"
|
||||||
|
|
||||||
|
"src/plugins/*.cpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB CLIENT_SOURCES
|
file(GLOB CLIENT_SOURCES
|
||||||
@@ -300,6 +342,8 @@ file(GLOB CLIENT_SOURCES
|
|||||||
"src/main.cpp"
|
"src/main.cpp"
|
||||||
|
|
||||||
"src/commands/*.cpp"
|
"src/commands/*.cpp"
|
||||||
|
"src/plugins/*.cpp"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (${PLATFORM} STREQUAL "Desktop")
|
if (${PLATFORM} STREQUAL "Desktop")
|
||||||
@@ -313,10 +357,12 @@ target_compile_definitions("${PROJECT_NAME}-server" PUBLIC "STANDALONE_SERVER" "
|
|||||||
|
|
||||||
target_include_directories("${PROJECT_NAME}-server" PUBLIC
|
target_include_directories("${PROJECT_NAME}-server" PUBLIC
|
||||||
"${CMAKE_SOURCE_DIR}/src/"
|
"${CMAKE_SOURCE_DIR}/src/"
|
||||||
|
"${lua_SOURCE_DIR}/"
|
||||||
|
|
||||||
"project/lib_projects/raknet/jni/RaknetSources"
|
"project/lib_projects/raknet/jni/RaknetSources"
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries("${PROJECT_NAME}-server" ${CMAKE_THREAD_LIBS_INIT} ${EXTRA_LIBS})
|
target_link_libraries("${PROJECT_NAME}-server" ${CMAKE_THREAD_LIBS_INIT} ${EXTRA_LIBS} lua sol2::sol2)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${CLIENT_SOURCES})
|
add_executable(${PROJECT_NAME} ${CLIENT_SOURCES})
|
||||||
|
|
||||||
@@ -328,6 +374,8 @@ target_include_directories(${PROJECT_NAME} PUBLIC
|
|||||||
"${openal_SOURCE_DIR}/include"
|
"${openal_SOURCE_DIR}/include"
|
||||||
"${glfw_SOURCE_DIR}/include"
|
"${glfw_SOURCE_DIR}/include"
|
||||||
"lib/include"
|
"lib/include"
|
||||||
|
"${lua_SOURCE_DIR}/"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if(${PLATFORM} MATCHES "Web")
|
if(${PLATFORM} MATCHES "Web")
|
||||||
@@ -375,7 +423,7 @@ endif()
|
|||||||
|
|
||||||
# Client
|
# Client
|
||||||
target_compile_definitions(${PROJECT_NAME} PUBLIC "OPENGL_ES" "NO_EGL" ${PLATFORM})
|
target_compile_definitions(${PROJECT_NAME} PUBLIC "OPENGL_ES" "NO_EGL" ${PLATFORM})
|
||||||
target_link_libraries(${PROJECT_NAME} zlib ${PNG_LIB} OpenAL::OpenAL glfw ${EXTRA_LIBS})
|
target_link_libraries(${PROJECT_NAME} zlib ${PNG_LIB} OpenAL::OpenAL glfw ${EXTRA_LIBS} lua sol2::sol2)
|
||||||
|
|
||||||
if (OpenSSL_FOUND)
|
if (OpenSSL_FOUND)
|
||||||
target_link_libraries(${PROJECT_NAME} OpenSSL::SSL OpenSSL::Crypto)
|
target_link_libraries(${PROJECT_NAME} OpenSSL::SSL OpenSSL::Crypto)
|
||||||
|
|||||||
@@ -186,7 +186,8 @@ Minecraft::Minecraft() :
|
|||||||
commandPort(4711),
|
commandPort(4711),
|
||||||
reserved_d1(0),reserved_d2(0),
|
reserved_d1(0),reserved_d2(0),
|
||||||
reserved_f1(0),reserved_f2(0), options(this),
|
reserved_f1(0),reserved_f2(0), options(this),
|
||||||
m_commandManager()
|
m_commandManager(),
|
||||||
|
m_pluginsManager(*level)
|
||||||
{
|
{
|
||||||
//#ifdef ANDROID
|
//#ifdef ANDROID
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include "Options.h"
|
#include "Options.h"
|
||||||
#include "commands/CommandManager.hpp"
|
#include "commands/CommandManager.hpp"
|
||||||
|
#include <plugins/PluginsManager.hpp>
|
||||||
|
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
#include "MouseHandler.h"
|
#include "MouseHandler.h"
|
||||||
#include "gui/Gui.h"
|
#include "gui/Gui.h"
|
||||||
@@ -243,6 +245,8 @@ private:
|
|||||||
CommandServer* _commandServer;
|
CommandServer* _commandServer;
|
||||||
|
|
||||||
CommandManager m_commandManager;
|
CommandManager m_commandManager;
|
||||||
|
|
||||||
|
PluginsManager m_pluginsManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT__Minecraft_H__*/
|
#endif /*NET_MINECRAFT_CLIENT__Minecraft_H__*/
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#include "platform/time.h"
|
#include "platform/time.h"
|
||||||
#include "SharedConstants.h"
|
#include "SharedConstants.h"
|
||||||
#include "world/level/LevelConstants.h"
|
#include "world/level/LevelConstants.h"
|
||||||
|
#include <sol/sol.hpp>
|
||||||
|
|
||||||
#define MAIN_CLASS NinecraftApp
|
#define MAIN_CLASS NinecraftApp
|
||||||
static App* g_app = 0;
|
static App* g_app = 0;
|
||||||
@@ -64,7 +65,6 @@ std::string findStringInConfig(std::string line, std::string config) {
|
|||||||
return valueStr;
|
return valueStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int numArguments, char* pszArgs[]) {
|
int main(int numArguments, char* pszArgs[]) {
|
||||||
std::ifstream serverProperties("server.properties");
|
std::ifstream serverProperties("server.properties");
|
||||||
|
|
||||||
@@ -201,6 +201,15 @@ int main(int numArguments, char* pszArgs[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string pluginsFolder = "plugins/";
|
||||||
|
struct stat sb;
|
||||||
|
|
||||||
|
if (stat(pluginsFolder.c_str(), &sb) == 0) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
std::cout << "Level has been generated in " << getTimeS() - startTime << std::endl;
|
std::cout << "Level has been generated in " << getTimeS() - startTime << std::endl;
|
||||||
((MAIN_CLASS*)g_app)->level->saveLevelData();
|
((MAIN_CLASS*)g_app)->level->saveLevelData();
|
||||||
std::cout << "Level has been saved!" << std::endl;
|
std::cout << "Level has been saved!" << std::endl;
|
||||||
|
|||||||
@@ -226,7 +226,6 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, LoginPac
|
|||||||
std::string nicknameLower = packet->clientName.C_String();
|
std::string nicknameLower = packet->clientName.C_String();
|
||||||
std::transform(nicknameLower.begin(), nicknameLower.end(), nicknameLower.begin(), ::tolower);
|
std::transform(nicknameLower.begin(), nicknameLower.end(), nicknameLower.begin(), ::tolower);
|
||||||
|
|
||||||
printf("%s lower \n", nicknameLower.c_str());
|
|
||||||
for (int i = 0; i < level->players.size(); i++) {
|
for (int i = 0; i < level->players.size(); i++) {
|
||||||
ServerPlayer* player = (ServerPlayer*) level->players.at(i);
|
ServerPlayer* player = (ServerPlayer*) level->players.at(i);
|
||||||
|
|
||||||
@@ -306,8 +305,6 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ReadyPac
|
|||||||
|
|
||||||
if (packet->type == ReadyPacket::READY_REQUESTEDCHUNKS)
|
if (packet->type == ReadyPacket::READY_REQUESTEDCHUNKS)
|
||||||
onReady_RequestedChunks(source);
|
onReady_RequestedChunks(source);
|
||||||
|
|
||||||
LOGI("Ready player two ready ready player two!!\n ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerSideNetworkHandler::onReady_ClientGeneration(const RakNet::RakNetGUID& source)
|
void ServerSideNetworkHandler::onReady_ClientGeneration(const RakNet::RakNetGUID& source)
|
||||||
|
|||||||
16
src/plugins/PluginsManager.cpp
Normal file
16
src/plugins/PluginsManager.cpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#include <plugins/PluginsManager.hpp>
|
||||||
|
#include <world/level/Level.h>
|
||||||
|
|
||||||
|
PluginsManager::PluginsManager(Level& level) : m_level(level) {
|
||||||
|
m_lua.open_libraries(sol::lib::base);
|
||||||
|
|
||||||
|
registerTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PluginsManager::registerTypes() {
|
||||||
|
m_lua.set_function("subscribe", &PluginsManager::subscribe);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PluginsManager::subscribe(std::string event, sol::function function) {
|
||||||
|
m_callbacks.at(event).push_back(function);
|
||||||
|
}
|
||||||
20
src/plugins/PluginsManager.hpp
Normal file
20
src/plugins/PluginsManager.hpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <sol/sol.hpp>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class Level;
|
||||||
|
|
||||||
|
class PluginsManager {
|
||||||
|
public:
|
||||||
|
PluginsManager(Level& level);
|
||||||
|
|
||||||
|
void registerTypes();
|
||||||
|
|
||||||
|
void subscribe(std::string event, sol::function function);
|
||||||
|
private:
|
||||||
|
std::unordered_map<std::string, std::vector<sol::function>> m_callbacks;
|
||||||
|
|
||||||
|
sol::state m_lua;
|
||||||
|
Level& m_level;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user