Compare commits
3 Commits
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "${pluginName}",
|
"name": "${modName}",
|
||||||
"entry": "${pluginFile}",
|
"entry": "${modFile}",
|
||||||
"version": "1.0.1",
|
"version": "${modVersion}",
|
||||||
"author": "GroupMountain",
|
"author": "GroupMountain",
|
||||||
"type": "native",
|
"type": "native",
|
||||||
"passive": true,
|
"passive": true,
|
||||||
|
|||||||
@@ -1,121 +0,0 @@
|
|||||||
function beautify_json(value, indent)
|
|
||||||
import("core.base.json")
|
|
||||||
local json_text = ""
|
|
||||||
local stack = {}
|
|
||||||
|
|
||||||
local function escape_str(s)
|
|
||||||
return string.gsub(s, '[%c\\"]', function(c)
|
|
||||||
local replacements = {['\b'] = '\\b', ['\f'] = '\\f', ['\n'] = '\\n', ['\r'] = '\\r', ['\t'] = '\\t', ['"'] = '\\"', ['\\'] = '\\\\'}
|
|
||||||
return replacements[c] or string.format('\\u%04x', c:byte())
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function is_null(v)
|
|
||||||
return v == json.null
|
|
||||||
end
|
|
||||||
|
|
||||||
local function is_empty_table(t)
|
|
||||||
if type(t) ~= 'table' then return false end
|
|
||||||
for _ in pairs(t) do
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
local function is_array(t)
|
|
||||||
return type(t) == 'table' and json.is_marked_as_array(t) or #t > 0
|
|
||||||
end
|
|
||||||
|
|
||||||
local function serialize(val, level)
|
|
||||||
local spaces = string.rep(" ", level * indent)
|
|
||||||
|
|
||||||
if type(val) == "table" and not stack[val] then
|
|
||||||
if is_empty_table(val) then
|
|
||||||
json_text = json_text .. (is_array(val) and "[]" or "{}")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
stack[val] = true
|
|
||||||
local isArray = is_array(val)
|
|
||||||
json_text = json_text .. (isArray and "[\n" or "{\n")
|
|
||||||
|
|
||||||
local keys = isArray and {} or {}
|
|
||||||
for k in pairs(val) do
|
|
||||||
table.insert(keys, k)
|
|
||||||
end
|
|
||||||
if not isArray then
|
|
||||||
table.sort(keys)
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, k in ipairs(keys) do
|
|
||||||
local v = val[k]
|
|
||||||
json_text = json_text .. spaces .. (isArray and "" or '"' .. escape_str(tostring(k)) .. '": ')
|
|
||||||
serialize(v, level + 1)
|
|
||||||
json_text = json_text .. ",\n"
|
|
||||||
end
|
|
||||||
|
|
||||||
json_text = string.sub(json_text, 1, -3) .. "\n" .. string.rep(" ", (level - 1) * indent) .. (isArray and "]" or "}")
|
|
||||||
stack[val] = nil
|
|
||||||
elseif type(val) == "string" then
|
|
||||||
json_text = json_text .. '"' .. escape_str(val) .. '"'
|
|
||||||
elseif type(val) == "number" then
|
|
||||||
if val % 1 == 0 then
|
|
||||||
json_text = json_text .. tostring(math.floor(val))
|
|
||||||
else
|
|
||||||
json_text = json_text .. tostring(val)
|
|
||||||
end
|
|
||||||
elseif type(val) == "boolean" then
|
|
||||||
json_text = json_text .. tostring(val)
|
|
||||||
elseif is_null(val) then
|
|
||||||
json_text = json_text .. "null"
|
|
||||||
else
|
|
||||||
error("Invalid value type: " .. type(val))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
serialize(value, 1)
|
|
||||||
return json_text
|
|
||||||
end
|
|
||||||
|
|
||||||
function string_formatter(str, variables)
|
|
||||||
return str:gsub("%${(.-)}", function(var)
|
|
||||||
return variables[var] or "${" .. var .. "}"
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
function pack_plugin(target,plugin_define)
|
|
||||||
import("lib.detect.find_file")
|
|
||||||
|
|
||||||
local manifest_path = find_file("manifest.json", os.projectdir())
|
|
||||||
if manifest_path then
|
|
||||||
local manifest = io.readfile(manifest_path)
|
|
||||||
local bindir = path.join(os.projectdir(), "bin/DLL")
|
|
||||||
local pdbdir = path.join(os.projectdir(), "bin/PDB")
|
|
||||||
local outputdir = path.join(bindir, plugin_define.pluginName)
|
|
||||||
local targetfile = path.join(outputdir, plugin_define.pluginFile)
|
|
||||||
local pdbfile = path.join(pdbdir, path.basename(plugin_define.pluginFile) .. ".pdb")
|
|
||||||
local libfile = path.join(os.projectdir(), "lib")
|
|
||||||
local manifestfile = path.join(outputdir, "manifest.json")
|
|
||||||
local oritargetfile = target:targetfile()
|
|
||||||
local oripdbfile = path.join(path.directory(oritargetfile), path.basename(oritargetfile) .. ".pdb")
|
|
||||||
|
|
||||||
os.mkdir(outputdir)
|
|
||||||
os.cp(oritargetfile, targetfile)
|
|
||||||
if os.isfile(oripdbfile) then
|
|
||||||
os.cp(oripdbfile, pdbfile)
|
|
||||||
end
|
|
||||||
os.cp(libfile, outputdir)
|
|
||||||
|
|
||||||
formattedmanifest = string_formatter(manifest, plugin_define)
|
|
||||||
io.writefile(manifestfile,formattedmanifest)
|
|
||||||
cprint("${bright green}[Plugin Packer]: ${reset}plugin already generated to " .. outputdir)
|
|
||||||
else
|
|
||||||
cprint("${bright yellow}warn: ${reset}not found manifest.json in root dir!")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
return {
|
|
||||||
pack_plugin = pack_plugin,
|
|
||||||
beautify_json = beautify_json,
|
|
||||||
string_formatter = string_formatter
|
|
||||||
}
|
|
||||||
@@ -78,6 +78,7 @@ void Export_BinaryStream_API() {
|
|||||||
EXPORTAPI("writeItem", ItemStack*, bs->writeNetworkItemStackDescriptor(NetworkItemStackDescriptor(*value)));
|
EXPORTAPI("writeItem", ItemStack*, bs->writeNetworkItemStackDescriptor(NetworkItemStackDescriptor(*value)));
|
||||||
EXPORTAPI("writeString", std::string const&, bs->writeString(value));
|
EXPORTAPI("writeString", std::string const&, bs->writeString(value));
|
||||||
EXPORTAPI("writeCompoundTag", CompoundTag*, bs->writeCompoundTag(*value));
|
EXPORTAPI("writeCompoundTag", CompoundTag*, bs->writeCompoundTag(*value));
|
||||||
|
EXPORTAPI("writeUnsignedChar", uchar, bs->writeUnsignedChar(value));
|
||||||
EXPORTAPI2(writeBool);
|
EXPORTAPI2(writeBool);
|
||||||
EXPORTAPI2(writeByte);
|
EXPORTAPI2(writeByte);
|
||||||
EXPORTAPI2(writeDouble);
|
EXPORTAPI2(writeDouble);
|
||||||
@@ -86,7 +87,6 @@ void Export_BinaryStream_API() {
|
|||||||
EXPORTAPI2(writeSignedInt);
|
EXPORTAPI2(writeSignedInt);
|
||||||
EXPORTAPI2(writeSignedInt64);
|
EXPORTAPI2(writeSignedInt64);
|
||||||
EXPORTAPI2(writeSignedShort);
|
EXPORTAPI2(writeSignedShort);
|
||||||
EXPORTAPI2(writeUnsignedChar);
|
|
||||||
EXPORTAPI2(writeUnsignedInt);
|
EXPORTAPI2(writeUnsignedInt);
|
||||||
EXPORTAPI2(writeUnsignedInt64);
|
EXPORTAPI2(writeUnsignedInt64);
|
||||||
EXPORTAPI2(writeUnsignedShort);
|
EXPORTAPI2(writeUnsignedShort);
|
||||||
|
|||||||
+44
-28
@@ -1,4 +1,5 @@
|
|||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
|
#include "mc/platform/UUID.h"
|
||||||
#include <regex>
|
#include <regex>
|
||||||
|
|
||||||
ActorUniqueID parseScriptUniqueID(std::string const& uniqueId) {
|
ActorUniqueID parseScriptUniqueID(std::string const& uniqueId) {
|
||||||
@@ -35,7 +36,7 @@ void Export_Compatibility_API() {
|
|||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "getPlayerNbt", [](std::string const& uuid) -> std::unique_ptr<CompoundTag> {
|
RemoteCall::exportAs("GMLIB_API", "getPlayerNbt", [](std::string const& uuid) -> std::unique_ptr<CompoundTag> {
|
||||||
if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) {
|
if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) {
|
||||||
return std::make_unique<CompoundTag>(*player->getNbt());
|
return std::make_unique<CompoundTag>(*player->getNbt());
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@@ -44,7 +45,7 @@ void Export_Compatibility_API() {
|
|||||||
"GMLIB_API",
|
"GMLIB_API",
|
||||||
"setPlayerNbt",
|
"setPlayerNbt",
|
||||||
[](std::string const& uuid, CompoundTag* nbt, bool forceCreate) -> bool {
|
[](std::string const& uuid, CompoundTag* nbt, bool forceCreate) -> bool {
|
||||||
if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) return player->setNbt(*nbt);
|
if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) return player->setNbt(*nbt);
|
||||||
return forceCreate ? OfflinePlayer::createNewPlayerNbt(mce::UUID::fromString(uuid), *nbt).has_value()
|
return forceCreate ? OfflinePlayer::createNewPlayerNbt(mce::UUID::fromString(uuid), *nbt).has_value()
|
||||||
: false;
|
: false;
|
||||||
}
|
}
|
||||||
@@ -53,7 +54,7 @@ void Export_Compatibility_API() {
|
|||||||
"GMLIB_API",
|
"GMLIB_API",
|
||||||
"setPlayerNbtTags",
|
"setPlayerNbtTags",
|
||||||
[](std::string const& uuid, CompoundTag* nbt, std::vector<std::string> tags) -> bool {
|
[](std::string const& uuid, CompoundTag* nbt, std::vector<std::string> tags) -> bool {
|
||||||
if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) {
|
if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) {
|
||||||
auto nbt2 = *player->getNbt();
|
auto nbt2 = *player->getNbt();
|
||||||
GMCompoundTag::writeNbtTags(nbt2, *nbt, tags);
|
GMCompoundTag::writeNbtTags(nbt2, *nbt, tags);
|
||||||
return player->setNbt(nbt2);
|
return player->setNbt(nbt2);
|
||||||
@@ -187,8 +188,9 @@ void Export_Compatibility_API() {
|
|||||||
RemoteCall::exportAs(
|
RemoteCall::exportAs(
|
||||||
"GMLIB_API",
|
"GMLIB_API",
|
||||||
"updateOrCreateLanguageFile",
|
"updateOrCreateLanguageFile",
|
||||||
[](std::string const& code, std::unordered_map<std::string, std::string> lang, std::string const& path
|
[](std::string const& code,
|
||||||
) -> void {
|
std::unordered_map<std::string, std::string> lang,
|
||||||
|
std::string const& path) -> void {
|
||||||
if (GMLevel::getInstance()) {
|
if (GMLevel::getInstance()) {
|
||||||
I18nAPI::updateOrCreateLanguageFile(path, code, lang);
|
I18nAPI::updateOrCreateLanguageFile(path, code, lang);
|
||||||
}
|
}
|
||||||
@@ -200,7 +202,7 @@ void Export_Compatibility_API() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "getPlayerPosition", [](std::string const& uuid) -> std::pair<BlockPos, int> {
|
RemoteCall::exportAs("GMLIB_API", "getPlayerPosition", [](std::string const& uuid) -> std::pair<BlockPos, int> {
|
||||||
if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) {
|
if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) {
|
||||||
if (auto pos = player->getPlayerPosition()) {
|
if (auto pos = player->getPlayerPosition()) {
|
||||||
return *pos;
|
return *pos;
|
||||||
}
|
}
|
||||||
@@ -214,7 +216,7 @@ void Export_Compatibility_API() {
|
|||||||
"GMLIB_API",
|
"GMLIB_API",
|
||||||
"setPlayerPosition",
|
"setPlayerPosition",
|
||||||
[](std::string const& uuid, std::pair<BlockPos, int> pos) -> bool {
|
[](std::string const& uuid, std::pair<BlockPos, int> pos) -> bool {
|
||||||
if (auto player = OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))) {
|
if (auto player = OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))) {
|
||||||
return player->setPosition(pos.first, pos.second);
|
return player->setPosition(pos.first, pos.second);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -475,33 +477,47 @@ void Export_Compatibility_API() {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
RemoteCall::exportAs("GMLIB_API", "getXuidByUuid", [](std::string const& uuid) -> std::string {
|
RemoteCall::exportAs("GMLIB_API", "getXuidByUuid", [](std::string const& uuid) -> std::string {
|
||||||
return UserCache::getXuidByUuid(mce::UUID::fromString(uuid)).value_or("");
|
if (auto uce = UserCache::getInstance()->from(mce::UUID::fromString(uuid))) {
|
||||||
|
return uce->mXuid;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "getXuidByName", [](std::string const& name) -> std::string {
|
RemoteCall::exportAs("GMLIB_API", "getXuidByName", [](std::string const& name) -> std::string {
|
||||||
return UserCache::getXuidByName(name).value_or("");
|
if (auto uce = UserCache::getInstance()->from(name, UserCache::QueryType::Name)) {
|
||||||
|
return uce->mXuid;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "getNameByUuid", [](std::string const& uuid) -> std::string {
|
RemoteCall::exportAs("GMLIB_API", "getNameByUuid", [](std::string const& uuid) -> std::string {
|
||||||
return UserCache::getNameByUuid(mce::UUID::fromString(uuid)).value_or("");
|
if (auto uce = UserCache::getInstance()->from(mce::UUID::fromString(uuid))) {
|
||||||
|
return uce->mName;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "getNameByXuid", [](std::string const& xuid) -> std::string {
|
RemoteCall::exportAs("GMLIB_API", "getNameByXuid", [](std::string const& xuid) -> std::string {
|
||||||
return UserCache::getNameByXuid(xuid).value_or("");
|
if (auto uce = UserCache::getInstance()->from(xuid, UserCache::QueryType::Xuid)) {
|
||||||
|
return uce->mName;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "getUuidByXuid", [](std::string const& xuid) -> std::string {
|
RemoteCall::exportAs("GMLIB_API", "getUuidByXuid", [](std::string const& xuid) -> std::string {
|
||||||
return UserCache::getUuidByXuid(xuid).transform(
|
if (auto uce = UserCache::getInstance()->from(xuid, UserCache::QueryType::Xuid)) {
|
||||||
[](mce::UUID&& uuid) -> std::string { return uuid.asString(); }
|
return uce->mUuid.asString();
|
||||||
).value_or("");
|
}
|
||||||
|
return "";
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "getUuidByName", [](std::string const& name) -> std::string {
|
RemoteCall::exportAs("GMLIB_API", "getUuidByName", [](std::string const& name) -> std::string {
|
||||||
return UserCache::getUuidByName(name).transform(
|
if (auto uce = UserCache::getInstance()->from(name, UserCache::QueryType::Name)) {
|
||||||
[](mce::UUID&& uuid) -> std::string { return uuid.asString(); }
|
return uce->mUuid.asString();
|
||||||
).value_or("");
|
}
|
||||||
|
return "";
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs(
|
RemoteCall::exportAs(
|
||||||
"GMLIB_API",
|
"GMLIB_API",
|
||||||
"getAllPlayerInfo",
|
"getAllPlayerInfo",
|
||||||
[]() -> std::vector<std::unordered_map<std::string, std::string>> {
|
[]() -> std::vector<std::unordered_map<std::string, std::string>> {
|
||||||
std::vector<std::unordered_map<std::string, std::string>> result;
|
std::vector<std::unordered_map<std::string, std::string>> result;
|
||||||
for (auto entry : UserCache::entries()) {
|
for (auto entry : UserCache::getInstance()->entries()) {
|
||||||
result.push_back({
|
result.push_back({
|
||||||
{"Name", entry.mName },
|
{"Name", entry.mName },
|
||||||
{"Xuid", entry.mXuid },
|
{"Xuid", entry.mXuid },
|
||||||
@@ -610,23 +626,23 @@ void Export_Compatibility_API() {
|
|||||||
switch (gameRule.mType) {
|
switch (gameRule.mType) {
|
||||||
case GameRule::Type::Bool:
|
case GameRule::Type::Bool:
|
||||||
result.push_back({
|
result.push_back({
|
||||||
{"Name", gameRule.mName },
|
{"Name", gameRule.mName },
|
||||||
{"Type", "Bool" },
|
{"Type", "Bool" },
|
||||||
{"Value", std::to_string(gameRule.mValue->mUnk29fff1.as<bool>())}
|
{"Value", std::to_string(gameRule.mValue->boolVal)}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case GameRule::Type::Float:
|
case GameRule::Type::Float:
|
||||||
result.push_back({
|
result.push_back({
|
||||||
{"Name", gameRule.mName },
|
{"Name", gameRule.mName },
|
||||||
{"Type", "Float" },
|
{"Type", "Float" },
|
||||||
{"Value", std::to_string(gameRule.mValue->mUnk768db5.as<float>())}
|
{"Value", std::to_string(gameRule.mValue->floatVal)}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case GameRule::Type::Int:
|
case GameRule::Type::Int:
|
||||||
result.push_back({
|
result.push_back({
|
||||||
{"Name", gameRule.mName },
|
{"Name", gameRule.mName },
|
||||||
{"Type", "Int" },
|
{"Type", "Int" },
|
||||||
{"Value", std::to_string(gameRule.mValue->mUnk2ab4f3.as<int>())}
|
{"Value", std::to_string(gameRule.mValue->intVal)}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case GameRule::Type::Invalid:
|
case GameRule::Type::Invalid:
|
||||||
@@ -804,7 +820,7 @@ void Export_Compatibility_API() {
|
|||||||
return magic_enum::enum_name(container->mContainerType).data();
|
return magic_enum::enum_name(container->mContainerType).data();
|
||||||
});
|
});
|
||||||
RemoteCall::exportAs("GMLIB_API", "hasPlayerNbt", [](std::string const& uuid) -> bool {
|
RemoteCall::exportAs("GMLIB_API", "hasPlayerNbt", [](std::string const& uuid) -> bool {
|
||||||
return OfflinePlayer::getOfflinePlayer(mce::UUID::fromString(uuid))
|
return OfflinePlayer::fromUuid(mce::UUID::fromString(uuid))
|
||||||
.transform([&](auto&& player) -> bool { return player.hasNbt(); })
|
.transform([&](auto&& player) -> bool { return player.hasNbt(); })
|
||||||
.value_or(false);
|
.value_or(false);
|
||||||
});
|
});
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ bool LegacyRemoteCallApi::load() {
|
|||||||
logger->info(
|
logger->info(
|
||||||
"Loaded Version: {} with {}",
|
"Loaded Version: {} with {}",
|
||||||
fmt::format(fg(fmt::color::pink), "GMLIB-" GMLIB_FILE_VERSION_STRING),
|
fmt::format(fg(fmt::color::pink), "GMLIB-" GMLIB_FILE_VERSION_STRING),
|
||||||
fmt::format(fg(fmt::color::light_green), "GMLIB-LegacyRemoteCallApi-" + LIB_VERSION.to_string())
|
fmt::format(fg(fmt::color::light_green), "GMLIB-LegacyRemoteCallApi-{}", LIB_VERSION.to_string())
|
||||||
);
|
);
|
||||||
logger->info("Author: GroupMountain");
|
logger->info("Author: GroupMountain");
|
||||||
logger->info("Repository: https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi");
|
logger->info("Repository: https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi");
|
||||||
|
|||||||
+46
-55
@@ -162,12 +162,10 @@ void Export_Event_API() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
case doHash("gmlib::PlayerStartSleepBeforeEvent"): {
|
case doHash("gmlib::PlayerStartSleepBeforeEvent"): {
|
||||||
REGISTER_EVENT_LISTEN(
|
REGISTER_EVENT_LISTEN(ila::mc::PlayerStartSleepBeforeEvent,
|
||||||
ila::mc::PlayerStartSleepBeforeEvent,
|
(Player * entity, BlockPos pos, bool isCancelled),
|
||||||
(Player * entity, BlockPos pos, bool isCancelled),
|
(&event.self(), event.pos(), event.isCancelled()),
|
||||||
(&event.self(), event.pos(), event.isCancelled()),
|
event.setCancelled(result););
|
||||||
event.setCancelled(result);
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
case doHash("gmlib::PlayerStartSleepAfterEvent"): {
|
case doHash("gmlib::PlayerStartSleepAfterEvent"): {
|
||||||
REGISTER_EVENT_LISTEN(
|
REGISTER_EVENT_LISTEN(
|
||||||
@@ -182,7 +180,7 @@ void Export_Event_API() {
|
|||||||
ila::mc::PlayerStopSleepBeforeEvent,
|
ila::mc::PlayerStopSleepBeforeEvent,
|
||||||
(Player * entity, bool forcefulWakeUp, bool updateLevelList, bool isCancelled),
|
(Player * entity, bool forcefulWakeUp, bool updateLevelList, bool isCancelled),
|
||||||
(&event.self(), event.forcefulWakeUp(), event.updateLevelList(), false),
|
(&event.self(), event.forcefulWakeUp(), event.updateLevelList(), false),
|
||||||
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
case doHash("gmlib::PlayerStopSleepAfterEvent"): {
|
case doHash("gmlib::PlayerStopSleepAfterEvent"): {
|
||||||
@@ -251,43 +249,36 @@ void Export_Event_API() {
|
|||||||
({event.pos(), event.blockSource().getDimensionId()}, event.isCancelled()),
|
({event.pos(), event.blockSource().getDimensionId()}, event.isCancelled()),
|
||||||
event.setCancelled(result););
|
event.setCancelled(result););
|
||||||
}
|
}
|
||||||
case doHash("gmlib::SpawnWanderingTraderAfterEvent"): {
|
case doHash("gmlib::HandleRequestActionBeforeEvent"): {
|
||||||
REGISTER_EVENT_LISTEN(
|
// clang-format off
|
||||||
ila::mc::SpawnWanderingTraderAfterEvent,
|
REGISTER_EVENT_LISTEN(
|
||||||
(std::pair<BlockPos, int> pos),
|
ila::mc::PlayerRequestItemActionBeforeEvent,
|
||||||
({event.pos(), event.blockSource().getDimensionId()}),
|
(
|
||||||
);
|
Player * player,
|
||||||
|
std::string const& actionType,
|
||||||
|
int count,
|
||||||
|
std::string const& sourceContainerNetId,
|
||||||
|
int sourceSlot,
|
||||||
|
std::string const& destinationContainerNetId,
|
||||||
|
int destinationSlot,
|
||||||
|
bool isCancelled
|
||||||
|
),
|
||||||
|
(
|
||||||
|
(Player*)&event.self(),
|
||||||
|
magic_enum::enum_name(event.actionType()).data(),
|
||||||
|
event.amount(),
|
||||||
|
magic_enum::enum_name(event.src().mFullContainerName.mName).data(),
|
||||||
|
(int)event.src().mSlot,
|
||||||
|
magic_enum::enum_name(event.dst().mFullContainerName.mName).data(),
|
||||||
|
(int)event.dst().mSlot,
|
||||||
|
event.isCancelled()
|
||||||
|
),
|
||||||
|
event.setCancelled(result);,
|
||||||
|
);
|
||||||
|
// clang-format on
|
||||||
}
|
}
|
||||||
case doHash("gmlib::HandleRequestActionBeforeEvent"): {
|
case doHash("gmlib::HandleRequestActionAfterEvent"): {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
REGISTER_EVENT_LISTEN(
|
|
||||||
ila::mc::PlayerRequestItemActionBeforeEvent,
|
|
||||||
(
|
|
||||||
Player * player,
|
|
||||||
std::string const& actionType,
|
|
||||||
int count,
|
|
||||||
std::string const& sourceContainerNetId,
|
|
||||||
int sourceSlot,
|
|
||||||
std::string const& destinationContainerNetId,
|
|
||||||
int destinationSlot,
|
|
||||||
bool isCancelled
|
|
||||||
),
|
|
||||||
(
|
|
||||||
(Player*)&event.self(),
|
|
||||||
magic_enum::enum_name(event.actionType()).data(),
|
|
||||||
event.amount(),
|
|
||||||
magic_enum::enum_name(event.src().mFullContainerName.mName).data(),
|
|
||||||
(int)event.src().mSlot,
|
|
||||||
magic_enum::enum_name(event.dst().mFullContainerName.mName).data(),
|
|
||||||
(int)event.dst().mSlot,
|
|
||||||
event.isCancelled()
|
|
||||||
),
|
|
||||||
event.setCancelled(result);,
|
|
||||||
);
|
|
||||||
// clang-format on
|
|
||||||
}
|
|
||||||
case doHash("gmlib::HandleRequestActionAfterEvent"): {
|
|
||||||
// clang-format off
|
|
||||||
REGISTER_EVENT_LISTEN(
|
REGISTER_EVENT_LISTEN(
|
||||||
ila::mc::PlayerRequestItemActionAfterEvent,
|
ila::mc::PlayerRequestItemActionAfterEvent,
|
||||||
(
|
(
|
||||||
@@ -310,18 +301,18 @@ void Export_Event_API() {
|
|||||||
),
|
),
|
||||||
,
|
,
|
||||||
);
|
);
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
case doHash("gmlib::ContainerClosePacketSendAfterEvent"): {
|
case doHash("gmlib::ContainerClosePacketSendAfterEvent"): {
|
||||||
REGISTER_EVENT_LISTEN(
|
REGISTER_EVENT_LISTEN(
|
||||||
ila::mc::PlayerCloseContainerAfterEvent,
|
ila::mc::PlayerCloseContainerAfterEvent,
|
||||||
(Player * player, int containerId, bool serverInitiatedClose, bool),
|
(Player * player, int containerId, bool serverInitiatedClose, bool),
|
||||||
(&event.self(), (int)event.containerId(), event.serverInitiatedClose(), false),
|
(&event.self(), (int)event.containerId(), event.serverInitiatedClose(), false),
|
||||||
,
|
,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
+5
-5
@@ -2,7 +2,7 @@
|
|||||||
"format_version": 3,
|
"format_version": 3,
|
||||||
"format_uuid": "289f771f-2c9a-4d73-9f3f-8492495a924d",
|
"format_uuid": "289f771f-2c9a-4d73-9f3f-8492495a924d",
|
||||||
"tooth": "github.com/GroupMountain/GMLIB-LegacyRemoteCallApi",
|
"tooth": "github.com/GroupMountain/GMLIB-LegacyRemoteCallApi",
|
||||||
"version": "1.0.1",
|
"version": "1.2.0",
|
||||||
"info": {
|
"info": {
|
||||||
"name": "GMLIB-LegacyRemoteCallApi",
|
"name": "GMLIB-LegacyRemoteCallApi",
|
||||||
"description": "Legacy RemoteCall API for GMLIB",
|
"description": "Legacy RemoteCall API for GMLIB",
|
||||||
@@ -19,15 +19,15 @@
|
|||||||
{
|
{
|
||||||
"platform": "win-x64",
|
"platform": "win-x64",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"github.com/LiteLDev/LeviLamina": ">=1.1.1",
|
"github.com/LiteLDev/LeviLamina": ">=1.3.0",
|
||||||
"github.com/GroupMountain/GMLIB-Release": ">=1.0.0",
|
"github.com/GroupMountain/GMLIB-Release": ">=1.3.0-rc.1",
|
||||||
"github.com/MiracleForest/iListenAttentively-Release": ">=0.4.1"
|
"github.com/MiracleForest/iListenAttentively-Release": ">=0.6.0"
|
||||||
},
|
},
|
||||||
"assets": [
|
"assets": [
|
||||||
{
|
{
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"urls": [
|
"urls": [
|
||||||
"https://github.com/GroupMountain/GMLIB-LegacyRemoteCallApi/releases/download/v$(version)/GMLIB-LegacyRemoteCallApi-windows-x64.zip"
|
"https://{{tooth}}/releases/download/v{{version}}/GMLIB-LegacyRemoteCallApi-windows-x64.zip"
|
||||||
],
|
],
|
||||||
"placements": [
|
"placements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ if not has_config("vs_runtime") then
|
|||||||
set_runtimes("MD")
|
set_runtimes("MD")
|
||||||
end
|
end
|
||||||
|
|
||||||
add_requires("levilamina 1.1.1", {configs = {target_type = "server"}})
|
add_requires("levilamina 1.3.0", {configs = {target_type = "server"}})
|
||||||
add_requires("legacyremotecall")
|
add_requires("legacyremotecall")
|
||||||
add_requires("levibuildscript")
|
add_requires("levibuildscript")
|
||||||
add_requires("ilistenattentively")
|
add_requires("ilistenattentively 0.6.0")
|
||||||
add_requires("gmlib")
|
add_requires("gmlib 1.3.0-rc.1")
|
||||||
|
|
||||||
target("GMLIB-LegacyRemoteCallApi")
|
target("GMLIB-LegacyRemoteCallApi")
|
||||||
add_cxflags(
|
add_cxflags(
|
||||||
@@ -38,18 +38,15 @@ target("GMLIB-LegacyRemoteCallApi")
|
|||||||
"gmlib"
|
"gmlib"
|
||||||
)
|
)
|
||||||
add_rules("@levibuildscript/linkrule")
|
add_rules("@levibuildscript/linkrule")
|
||||||
|
add_rules("@levibuildscript/modpacker")
|
||||||
set_exceptions("none")
|
set_exceptions("none")
|
||||||
set_kind("shared")
|
set_kind("shared")
|
||||||
set_languages("cxx20")
|
set_languages("cxx20")
|
||||||
set_symbols("debug")
|
set_symbols("debug")
|
||||||
|
|
||||||
after_build(function (target)
|
after_build(function (target)
|
||||||
local plugin_packer = import("scripts.after_build")
|
local target_path = path.join("bin", target:name(), "lib")
|
||||||
|
if os.exists(target_path) then
|
||||||
local plugin_define = {
|
os.rm(target_path)
|
||||||
pluginName = target:name(),
|
end
|
||||||
pluginFile = path.filename(target:targetfile()),
|
os.cp("lib", target_path)
|
||||||
}
|
end)
|
||||||
|
|
||||||
plugin_packer.pack_plugin(target,plugin_define)
|
|
||||||
end)
|
|
||||||
Reference in New Issue
Block a user