diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Bindings/LuaState.cpp | 12 | ||||
-rw-r--r-- | src/Bindings/LuaState.h | 1 | ||||
-rw-r--r-- | src/Bindings/PluginLua.cpp | 2 | ||||
-rw-r--r-- | src/Bindings/virtual_method_hooks.lua | 8 | ||||
-rw-r--r-- | src/CMakeLists.txt | 28 | ||||
-rw-r--r-- | src/ClientHandle.h | 6 | ||||
-rw-r--r-- | src/MCServer.vcproj.user | 167 | ||||
-rw-r--r-- | src/OSSupport/Socket.cpp | 4 | ||||
-rw-r--r-- | src/Protocol/Protocol17x.cpp | 25 | ||||
-rw-r--r-- | src/Resources/MCServer.rc | 17 | ||||
-rw-r--r-- | src/Resources/icon.ico | bin | 0 -> 353118 bytes | |||
-rw-r--r-- | src/Resources/icon_128.png | bin | 0 -> 26758 bytes | |||
-rw-r--r-- | src/Resources/icon_256.png | bin | 0 -> 66137 bytes | |||
-rw-r--r-- | src/Resources/resource_MCServer.h | 5 |
14 files changed, 254 insertions, 21 deletions
diff --git a/src/Bindings/LuaState.cpp b/src/Bindings/LuaState.cpp index 149c304ed..00e62fcf6 100644 --- a/src/Bindings/LuaState.cpp +++ b/src/Bindings/LuaState.cpp @@ -632,18 +632,6 @@ void cLuaState::Push(cTNTEntity * a_TNTEntity) -void cLuaState::Push(cCreeper * a_Creeper) -{ - ASSERT(IsValid()); - - tolua_pushusertype(m_LuaState, a_Creeper, "cCreeper"); - m_NumCurrentFunctionArgs += 1; -} - - - - - void cLuaState::Push(Vector3i * a_Vector) { ASSERT(IsValid()); diff --git a/src/Bindings/LuaState.h b/src/Bindings/LuaState.h index a43d39732..414e5e4b2 100644 --- a/src/Bindings/LuaState.h +++ b/src/Bindings/LuaState.h @@ -177,7 +177,6 @@ public: void Push(cWebAdmin * a_WebAdmin); void Push(const HTTPTemplateRequest * a_Request); void Push(cTNTEntity * a_TNTEntity); - void Push(cCreeper * a_Creeper); void Push(Vector3i * a_Vector); void Push(void * a_Ptr); void Push(cHopperEntity * a_Hopper); diff --git a/src/Bindings/PluginLua.cpp b/src/Bindings/PluginLua.cpp index eefcd2b09..4c4664815 100644 --- a/src/Bindings/PluginLua.cpp +++ b/src/Bindings/PluginLua.cpp @@ -436,7 +436,7 @@ bool cPluginLua::OnExploding(cWorld & a_World, double & a_ExplosionSize, bool & { case esOther: m_LuaState.Call((int)(**itr), &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break; case esPrimedTNT: m_LuaState.Call((int)(**itr), &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (cTNTEntity *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break; - case esCreeper: m_LuaState.Call((int)(**itr), &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (cCreeper *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break; + case esMonster: m_LuaState.Call((int)(**itr), &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (cMonster *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break; case esBed: m_LuaState.Call((int)(**itr), &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (Vector3i *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break; case esEnderCrystal: m_LuaState.Call((int)(**itr), &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, (Vector3i *)a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break; case esGhastFireball: m_LuaState.Call((int)(**itr), &a_World, a_ExplosionSize, a_CanCauseFire, a_X, a_Y, a_Z, a_Source, a_SourceData, cLuaState::Return, res, a_CanCauseFire, a_ExplosionSize); break; diff --git a/src/Bindings/virtual_method_hooks.lua b/src/Bindings/virtual_method_hooks.lua index 15ff1d7f8..c610d424f 100644 --- a/src/Bindings/virtual_method_hooks.lua +++ b/src/Bindings/virtual_method_hooks.lua @@ -504,3 +504,11 @@ end + +function post_output_hook() + print("Bindings have been generated.") +end + + + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 853138769..1c031173b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,12 +25,34 @@ if (NOT MSVC) list(REMOVE_ITEM SOURCE "${PROJECT_SOURCE_DIR}/StackWalker.cpp" "${PROJECT_SOURCE_DIR}/LeakFinder.cpp") + # If building a windows version, but not using MSVC, add the resources directly to the makefile: + if (WIN32) + FILE(GLOB ResourceFiles + "Resources/*.rc" + ) + list(APPEND SOURCE "${ResourceFiles}") + endif() + + else () + # Generate the Bindings if they don't exist: + if (NOT EXISTS "${PROJECT_SOURCE_DIR}/Bindings/Bindings.cpp") + message("Bindings.cpp not found, generating now") + set(tolua_executable ${PROJECT_SOURCE_DIR}/Bindings/tolua++.exe) + execute_process( + COMMAND ${tolua_executable} -L virtual_method_hooks.lua -o Bindings.cpp -H Bindings.h AllToLua.pkg + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/Bindings + ) + endif() + + # Add all subfolders as solution-folders: + list(APPEND FOLDERS "Resources") function(includefolder PATH) FILE(GLOB FOLDER_FILES "${PATH}/*.cpp" "${PATH}/*.h" + "${PATH}/*.rc" ) source_group("${PATH}" FILES ${FOLDER_FILES}) endfunction(includefolder) @@ -59,9 +81,9 @@ else () SET_SOURCE_FILES_PROPERTIES( "StackWalker.cpp LeakFinder.h" PROPERTIES COMPILE_FLAGS "/Yc\"Globals.h\"" ) + list(APPEND SOURCE "Resources/MCServer.rc") endif() - set(EXECUTABLE MCServer) add_executable(${EXECUTABLE} ${SOURCE}) @@ -78,6 +100,10 @@ endif() # Make the debug executable have a "_debug" suffix SET_TARGET_PROPERTIES(${EXECUTABLE} PROPERTIES DEBUG_POSTFIX "_debug") +# Make the profiled executables have a "_profile" postfix +SET_TARGET_PROPERTIES(${EXECUTABLE} PROPERTIES DEBUGPROFILE_POSTFIX "_debug_profile") +SET_TARGET_PROPERTIES(${EXECUTABLE} PROPERTIES RELEASEPROFILE_POSTFIX "_profile") + # Precompiled headers (2nd part) if (MSVC) diff --git a/src/ClientHandle.h b/src/ClientHandle.h index 297d62d57..da2704b72 100644 --- a/src/ClientHandle.h +++ b/src/ClientHandle.h @@ -171,7 +171,13 @@ public: void HandleCreativeInventory(short a_SlotNum, const cItem & a_HeldItem); void HandleDisconnect (const AString & a_Reason); void HandleEntityAction (int a_EntityID, char a_ActionID); + + /** Called when the protocol handshake has been received (for protocol versions that support it; + otherwise the first instant when a username is received). + Returns true if the player is to be let in, false if they were disconnected + */ bool HandleHandshake (const AString & a_Username); + void HandleKeepAlive (int a_KeepAliveID); void HandleLeftClick (int a_BlockX, int a_BlockY, int a_BlockZ, char a_BlockFace, char a_Status); void HandlePing (void); diff --git a/src/MCServer.vcproj.user b/src/MCServer.vcproj.user new file mode 100644 index 000000000..b17909f71 --- /dev/null +++ b/src/MCServer.vcproj.user @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="UTF-8"?> +<VisualStudioUserFile + ProjectType="Visual C++" + Version="9,00" + ShowAllFiles="false" + > + <Configurations> + <Configuration + Name="Debug|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="..\MCServer" + CommandArguments="" + Attach="false" + DebuggerType="3" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="DebugProfile|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="..\MCServer" + CommandArguments="" + Attach="false" + DebuggerType="3" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="MinSizeRel|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="..\MCServer" + CommandArguments="" + Attach="false" + DebuggerType="3" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="Release|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="..\MCServer" + CommandArguments="" + Attach="false" + DebuggerType="3" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="ReleaseProfile|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="..\MCServer" + CommandArguments="" + Attach="false" + DebuggerType="3" + Remote="1" + RemoteMachine="ASAGA" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + <Configuration + Name="RelWithDebInfo|Win32" + > + <DebugSettings + Command="$(TargetPath)" + WorkingDirectory="..\MCServer" + CommandArguments="" + Attach="false" + DebuggerType="3" + RemoteCommand="" + HttpUrl="" + PDBPath="" + SQLDebugging="" + Environment="" + EnvironmentMerge="true" + DebuggerFlavor="0" + MPIRunCommand="" + MPIRunArguments="" + MPIRunWorkingDirectory="" + ApplicationCommand="" + ApplicationArguments="" + ShimCommand="" + MPIAcceptMode="" + MPIAcceptFilter="" + /> + </Configuration> + </Configurations> +</VisualStudioUserFile> diff --git a/src/OSSupport/Socket.cpp b/src/OSSupport/Socket.cpp index f25f800c2..d511e5487 100644 --- a/src/OSSupport/Socket.cpp +++ b/src/OSSupport/Socket.cpp @@ -72,10 +72,6 @@ void cSocket::CloseSocket() #else // _WIN32 - if (shutdown(m_Socket, SHUT_RDWR) != 0)//SD_BOTH); - { - LOGWARN("Error on shutting down socket %d (%s): %s", m_Socket, m_IPString.c_str(), GetLastErrorString().c_str()); - } if (close(m_Socket) != 0) { LOGWARN("Error closing socket %d (%s): %s", m_Socket, m_IPString.c_str(), GetLastErrorString().c_str()); diff --git a/src/Protocol/Protocol17x.cpp b/src/Protocol/Protocol17x.cpp index 9c46c6843..68992155e 100644 --- a/src/Protocol/Protocol17x.cpp +++ b/src/Protocol/Protocol17x.cpp @@ -216,8 +216,23 @@ void cProtocol172::SendDestroyEntity(const cEntity & a_Entity) void cProtocol172::SendDisconnect(const AString & a_Reason) { - cPacketizer Pkt(*this, 0x40); - Pkt.WriteString(Printf("{\"text\":\"%s\"}", EscapeString(a_Reason).c_str())); + switch (m_State) + { + case 2: + { + // During login: + cPacketizer Pkt(*this, 0); + Pkt.WriteString(Printf("{\"text\":\"%s\"}", EscapeString(a_Reason).c_str())); + break; + } + case 3: + { + // In-game: + cPacketizer Pkt(*this, 0x40); + Pkt.WriteString(Printf("{\"text\":\"%s\"}", EscapeString(a_Reason).c_str())); + break; + } + } } @@ -1156,6 +1171,12 @@ void cProtocol172::HandlePacketLoginStart(cByteBuffer & a_ByteBuffer) // TODO: Protocol encryption should be set up here if not localhost / auth + if (!m_Client->HandleHandshake(Username)) + { + // The client is not welcome here, they have been sent a Kick packet already + return; + } + // Send login success: { cPacketizer Pkt(*this, 0x02); // Login success packet diff --git a/src/Resources/MCServer.rc b/src/Resources/MCServer.rc new file mode 100644 index 000000000..e0fbbea5d --- /dev/null +++ b/src/Resources/MCServer.rc @@ -0,0 +1,17 @@ +// Generated by ResEdit 1.5.11 +// Copyright (C) 2006-2012 +// http://www.resedit.net + +#include <windows.h> +#include <commctrl.h> +#include <richedit.h> +#include "resource_MCServer.h" + + + + +// +// Icon resources +// +LANGUAGE 9, SUBLANG_DEFAULT +IDI_ICON1 ICON "icon.ico" diff --git a/src/Resources/icon.ico b/src/Resources/icon.ico Binary files differnew file mode 100644 index 000000000..4024523a1 --- /dev/null +++ b/src/Resources/icon.ico diff --git a/src/Resources/icon_128.png b/src/Resources/icon_128.png Binary files differnew file mode 100644 index 000000000..87d939a04 --- /dev/null +++ b/src/Resources/icon_128.png diff --git a/src/Resources/icon_256.png b/src/Resources/icon_256.png Binary files differnew file mode 100644 index 000000000..9a77a490f --- /dev/null +++ b/src/Resources/icon_256.png diff --git a/src/Resources/resource_MCServer.h b/src/Resources/resource_MCServer.h new file mode 100644 index 000000000..42f6c4eaf --- /dev/null +++ b/src/Resources/resource_MCServer.h @@ -0,0 +1,5 @@ +#ifndef IDC_STATIC +#define IDC_STATIC (-1) +#endif + +#define IDI_ICON1 101 |