88#include " mc/common/SharedConstants.h"
99#include " mc/network/ServerNetworkHandler.h"
1010#include " mc/network/packet/SetTimePacket.h"
11+ #include " mc/world/level/dimension/VanillaDimensions.h"
1112#include " mc/world/level/storage/LevelData.h"
1213
1314#include < ll/api/service/ServerInfo.h>
1415
16+ Local<Value> McClass::getMotd (Arguments const & args) {
17+ try {
18+ return String::newString (ll::service::getServerNetworkHandler ().and_then (&ServerNetworkHandler::mServerName ));
19+ }
20+ CATCH_AND_THROW
21+ }
22+
1523Local<Value> McClass::setMotd (Arguments const & args) {
1624 CHECK_ARGS_COUNT (args, 1 )
1725 CHECK_ARG_TYPE (args[0 ], ValueKind::kString )
@@ -24,6 +32,30 @@ Local<Value> McClass::setMotd(Arguments const& args) {
2432
2533Local<Value> McClass::crashBDS (Arguments const &) { return Boolean::newBoolean (false ); }
2634
35+ Local<Value> McClass::getOnlinePlayerNum (Arguments const & args) {
36+ if (args.size () >= 1 ) CHECK_ARG_TYPE (args[0 ], ValueKind::kBoolean );
37+
38+ try {
39+ if (args.size () >= 1 && args[0 ].asBoolean ().value ()) {
40+ return Number::newNumber (ll::service::getServerNetworkHandler ().and_then ([](auto & handler) {
41+ return static_cast <int64>(handler.mClients ->size ());
42+ }));
43+ } else {
44+ return Number::newNumber (ll::service::getLevel ().and_then (&Level::getUserCount));
45+ }
46+ }
47+ CATCH_AND_THROW
48+ }
49+
50+ Local<Value> McClass::getMaxNumPlayers (Arguments const & args) {
51+ try {
52+ return Number::newNumber (
53+ ll::service::getServerNetworkHandler ().and_then (&ServerNetworkHandler::mMaxNumPlayers )
54+ );
55+ }
56+ CATCH_AND_THROW
57+ }
58+
2759Local<Value> McClass::setMaxNumPlayers (Arguments const & args) {
2860 CHECK_ARGS_COUNT (args, 1 )
2961 CHECK_ARG_TYPE (args[0 ], ValueKind::kNumber )
@@ -128,3 +160,35 @@ Local<Value> McClass::setWeather(Arguments const& args) {
128160
129161 return Boolean::newBoolean (true );
130162}
163+
164+ Local<Value> McClass::getDimensionId (Arguments const & args) {
165+ CHECK_ARGS_COUNT (args, 1 )
166+ CHECK_ARG_TYPE (args[0 ], ValueKind::kString )
167+
168+ try {
169+ if (auto dimid = VanillaDimensions::fromString (args[0 ].asString ().toString ());
170+ dimid != VanillaDimensions::Undefined ()) {
171+ return Number::newNumber (dimid);
172+ }
173+ return {};
174+ }
175+ CATCH_AND_THROW
176+
177+ return Boolean::newBoolean (true );
178+ }
179+
180+ Local<Value> McClass::getDimensionName (Arguments const & args) {
181+ CHECK_ARGS_COUNT (args, 1 )
182+ CHECK_ARG_TYPE (args[0 ], ValueKind::kNumber )
183+
184+ try {
185+ auto & map = VanillaDimensions::DimensionMap ().mLeft ;
186+ if (auto it = map.find (args[0 ].asNumber ().toInt32 ()); it != map.end ()) {
187+ return String::newString (it->second );
188+ }
189+ return {};
190+ }
191+ CATCH_AND_THROW
192+
193+ return Boolean::newBoolean (true );
194+ }
0 commit comments