Skip to content

Commit 8fa5ba1

Browse files
committed
refactor: adapt to LeviLamina 1.0.0 (WIP)
1 parent 5223e5e commit 8fa5ba1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+904
-835
lines changed

src/legacy/api/BaseAPI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ Local<Value> McClass::getBDSVersion(const Arguments&) {
242242

243243
Local<Value> McClass::getServerProtocolVersion(const Arguments&) {
244244
try {
245-
return Number::newNumber(SharedConstants::NetworkProtocolVersion);
245+
return Number::newNumber(SharedConstants::NetworkProtocolVersion());
246246
}
247247
CATCH("Fail in GetServerProtocolVersion!")
248248
}

src/legacy/api/BlockAPI.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99
#include "api/McAPI.h"
1010
#include "api/NbtAPI.h"
1111
#include "ll/api/service/Bedrock.h"
12-
#include "mc/common/wrapper/optional_ref.h"
1312
#include "mc/deps/core/string/HashedString.h"
13+
#include "mc/deps/core/utility/optional_ref.h"
1414
#include "mc/nbt/CompoundTag.h"
1515
#include "mc/world/level/BlockSource.h"
1616
#include "mc/world/level/Level.h"
1717
#include "mc/world/level/block/Block.h"
1818
#include "mc/world/level/block/actor/BlockActor.h"
19+
#include "mc/world/level/block/components/BlockLiquidDetectionComponent.h"
1920
#include "mc/world/level/dimension/Dimension.h"
2021

2122
#include <exception>
@@ -262,7 +263,7 @@ Local<Value> BlockClass::isUnbreakable() {
262263

263264
Local<Value> BlockClass::isWaterBlockingBlock() {
264265
try {
265-
return Boolean::newBoolean(block->isWaterBlocking());
266+
return Boolean::newBoolean(BlockLiquidDetectionComponent::isLiquidBlocking(*block));
266267
}
267268
CATCH("Fail in isWaterBlockingBlock!");
268269
}
@@ -289,7 +290,7 @@ Local<Value> BlockClass::getNbt(const Arguments&) {
289290
CATCH("Fail in getNbt!");
290291
}
291292

292-
#include "mc/world/level/block/utils/BlockSerializationUtils.h"
293+
#include "mc/world/level/block/block_serialization_utils/BlockSerializationUtils.h"
293294

294295
Local<Value> BlockClass::setNbt(const Arguments& args) {
295296
CHECK_ARGS_COUNT(args, 1);
@@ -299,7 +300,7 @@ Local<Value> BlockClass::setNbt(const Arguments& args) {
299300
if (!nbt) return Local<Value>(); // Null
300301

301302
// update Pre Data
302-
auto result = BlockSerializationUtils::tryGetBlockFromNBT(*nbt);
303+
auto result = BlockSerializationUtils::tryGetBlockFromNBT(*nbt, nullptr);
303304
const Block* bl = result.second;
304305
if (bl) {
305306
ll::service::getLevel()
@@ -377,7 +378,6 @@ Local<Value> BlockClass::removeBlockEntity(const Arguments&) {
377378
}
378379
CATCH("Fail in removeBlockEntity!");
379380
}
380-
381381
#include "mc/world/level/ChunkBlockPos.h"
382382
#include "mc/world/level/chunk/LevelChunk.h"
383383

src/legacy/api/BlockEntityAPI.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "main/Global.h"
1010
#include "mc/dataloadhelper/DefaultDataLoadHelper.h"
1111
#include "mc/nbt/CompoundTag.h"
12+
#include "mc/world/item/SaveContextFactory.h"
1213
#include "mc/world/level/BlockSource.h"
1314
#include "mc/world/level/block/Block.h"
1415
#include "mc/world/level/block/actor/BlockActor.h"
@@ -71,7 +72,7 @@ Local<Value> BlockEntityClass::getType() {
7172
Local<Value> BlockEntityClass::getNbt(const Arguments&) {
7273
try {
7374
CompoundTag* tag = new CompoundTag();
74-
blockEntity->save(*tag);
75+
blockEntity->save(*tag, *SaveContextFactory::createCloneSaveContext());
7576
return NbtCompoundClass::pack(std::move(tag)); // Not sure is that will get right value
7677
}
7778
CATCH("Fail in getNbt!")

src/legacy/api/CommandAPI.cpp

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@
1818
#include "lse/Plugin.h"
1919
#include "magic_enum.hpp"
2020
#include "mc/_HeaderOutputPredefine.h"
21-
#include "mc/common/wrapper/GenerateMessageResult.h"
22-
#include "mc/deps/json/JsonHelpers.h"
23-
#include "mc/enums/CurrentCmdVersion.h"
21+
#include "mc/deps/core/string/HashedString.h"
22+
#include "mc/deps/core/utility/MCRESULT.h"
2423
#include "mc/locale/I18n.h"
2524
#include "mc/locale/Localization.h"
2625
#include "mc/server/ServerLevel.h"
@@ -30,8 +29,11 @@
3029
#include "mc/server/commands/CommandOutputType.h"
3130
#include "mc/server/commands/CommandPermissionLevel.h"
3231
#include "mc/server/commands/CommandVersion.h"
32+
#include "mc/server/commands/CurrentCmdVersion.h"
33+
#include "mc/server/commands/GenerateMessageResult.h"
3334
#include "mc/server/commands/MinecraftCommands.h"
3435
#include "mc/server/commands/ServerCommandOrigin.h"
36+
#include "mc/util/JsonHelpers.h"
3537
#include "mc/world/Minecraft.h"
3638
#include "mc/world/item/ItemInstance.h"
3739
#include "mc/world/item/ItemStack.h"
@@ -109,9 +111,9 @@ Local<Value> convertResult(DynamicCommand::Result const& result) {
109111
return FloatPos::newPos(result.get<Vec3>(), dim ? (int)dim->getDimensionId() : -1);
110112
}
111113
case DynamicCommand::ParameterType::Message:
112-
return String::newString(
113-
result.getRaw<CommandMessage>().generateMessage(*result.origin, CommandVersion::CurrentVersion).mString
114-
);
114+
return String::newString(result.getRaw<CommandMessage>()
115+
.generateMessage(*result.origin, CommandVersion::CurrentVersion())
116+
.mMessage->c_str());
115117
case DynamicCommand::ParameterType::RawText:
116118
return String::newString(result.getRaw<std::string>());
117119
case DynamicCommand::ParameterType::JsonValue:
@@ -120,13 +122,13 @@ Local<Value> convertResult(DynamicCommand::Result const& result) {
120122
return ItemClass::newItem(
121123
new ItemStack(result.getRaw<CommandItem>()
122124
.createInstance(1, 1, *new CommandOutput(CommandOutputType::None), true)
123-
.value_or(ItemInstance::EMPTY_ITEM)),
125+
.value_or(ItemInstance::EMPTY_ITEM())),
124126
false
125127
); // Not managed by BDS, pointer will be saved as unique_ptr
126128
case DynamicCommand::ParameterType::Block:
127129
return BlockClass::newBlock(
128130
const_cast<Block*>(result.getRaw<CommandBlockName>().resolveBlock(0).getBlock()),
129-
&const_cast<BlockPos&>(BlockPos::MIN),
131+
&const_cast<BlockPos&>(BlockPos::MIN()),
130132
-1
131133
);
132134
case DynamicCommand::ParameterType::Effect:
@@ -169,10 +171,11 @@ Local<Value> McClass::runcmd(const Arguments& args) {
169171
ll::service::getLevel()->asServer(),
170172
CommandPermissionLevel::Owner,
171173
0
172-
)
174+
),
175+
CommandVersion::CurrentVersion()
173176
);
174177
try {
175-
return Boolean::newBoolean(ll::service::getMinecraft()->getCommands().executeCommand(context, false));
178+
return Boolean::newBoolean(ll::service::getMinecraft()->getCommands().executeCommand(context, false).mSuccess);
176179
}
177180
CATCH("Fail in RunCmd!")
178181
}
@@ -187,7 +190,7 @@ Local<Value> McClass::runcmdEx(const Arguments& args) {
187190
auto command = ll::service::getMinecraft()->getCommands().compileCommand(
188191
args[0].asString().toString(),
189192
origin,
190-
(CurrentCmdVersion)CommandVersion::CurrentVersion,
193+
(CurrentCmdVersion)CommandVersion::CurrentVersion(),
191194
[&](std::string const& err) { outputStr.append(err).append("\n"); }
192195
);
193196
Local<Object> resObj = Object::newObject();
@@ -266,13 +269,13 @@ CommandClass::CommandClass(std::unique_ptr<DynamicCommandInstance>&& p)
266269
: ScriptClass(ScriptClass::ConstructFromCpp<CommandClass>{}),
267270
uptr(std::move(p)),
268271
ptr(uptr.get()),
269-
registered(false) {};
272+
registered(false){};
270273

271274
CommandClass::CommandClass(DynamicCommandInstance* p)
272275
: ScriptClass(ScriptClass::ConstructFromCpp<CommandClass>{}),
273276
uptr(),
274277
ptr(p),
275-
registered(true) {};
278+
registered(true){};
276279

277280
Local<Object> CommandClass::newCommand(std::unique_ptr<DynamicCommandInstance>&& p) {
278281
auto newp = new CommandClass(std::move(p));

src/legacy/api/CommandOriginAPI.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
#include "api/PlayerAPI.h"
88
#include "magic_enum.hpp"
99
#include "mc/nbt/CompoundTag.h"
10+
#include "mc/server/commands/Command.h"
1011
#include "mc/server/commands/CommandOriginType.h"
1112
#include "mc/world/actor/player/Player.h"
12-
#include "mc/world/level/Command.h"
1313
#include "mc/world/level/Level.h"
1414
#include "mc/world/level/dimension/Dimension.h"
1515

1616
#include <magic_enum.hpp>
1717

18+
1819
//////////////////// Class Definition ////////////////////
1920
ClassDefine<void> OriginTypeStaticBuilder = EnumDefineBuilder<CommandOriginType>::build("OriginType");
2021

@@ -38,7 +39,7 @@ ClassDefine<CommandOriginClass> CommandOriginClassBuilder =
3839

3940
CommandOriginClass::CommandOriginClass(CommandOrigin const* p)
4041
: ScriptClass(ScriptClass::ConstructFromCpp<CommandOriginClass>{}),
41-
ptr(p) {};
42+
ptr(p){};
4243

4344
Local<Object> CommandOriginClass::newCommandOrigin(CommandOrigin const* p) {
4445
auto newp = new CommandOriginClass(p);

src/legacy/api/DatabaseAPI.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,9 @@ Local<Value> KVDBClass::listKey(const Arguments&) {
254254
if (!isValid()) return Local<Value>();
255255

256256
Local<Array> array = Array::newArray();
257-
kvdb->iter([&array](std::string_view key, std::string_view) {
257+
for (auto const& [key, _] : kvdb->iter()) {
258258
array.add(String::newString(key));
259-
return true;
260-
});
259+
}
261260
return array;
262261
}
263262
CATCH_AND_THROW("Fail in DbListKey!");

src/legacy/api/DeviceAPI.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44
#include "ll/api/service/Bedrock.h"
55
#include "magic_enum.hpp"
66
#include "mc/certificates/WebToken.h"
7-
#include "mc/enums/InputMode.h"
7+
#include "mc/common/ActorRuntimeID.h"
8+
#include "mc/deps/input/InputMode.h"
89
#include "mc/network/ConnectionRequest.h"
910
#include "mc/network/ServerNetworkHandler.h"
10-
#include "mc/world/ActorUniqueID.h"
1111
#include "mc/world/actor/player/Player.h"
1212
#include "mc/world/level/Level.h"
1313

1414
#include <mc/deps/json/Value.h>
1515
#include <string>
1616

17+
1718
//////////////////// Class Definition ////////////////////
1819
ClassDefine<void> InputModeStaticBuilder = EnumDefineBuilder<InputMode>::build("InputMode");
1920

src/legacy/api/EntityAPI.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,23 @@
1111
#include "ll/api/memory/Memory.h"
1212
#include "ll/api/service/Bedrock.h"
1313
#include "lse/api/MoreGlobal.h"
14-
#include "mc/world/phys/HitDetection.h"
14+
#include "mc/common/ActorUniqueID.h"
15+
#include "mc/deps/core/math/Vec2.h"
1516
#include "mc/deps/core/string/HashedString.h"
16-
#include "mc/world/actor/ActorDamageCause.h"
17-
#include "mc/world/actor/provider/ActorEquipment.h"
1817
#include "mc/entity/utilities/ActorMobilityUtils.h"
19-
#include "mc/world/actor/ActorType.h"
20-
#include "mc/deps/core/math/Vec2.h"
2118
#include "mc/nbt/CompoundTag.h"
2219
#include "mc/world/SimpleContainer.h"
20+
#include "mc/world/actor/ActorDamageCause.h"
2321
#include "mc/world/actor/ActorDefinitionIdentifier.h"
22+
#include "mc/world/actor/ActorType.h"
2423
#include "mc/world/actor/Mob.h"
25-
#include "mc/world/actor/provider/SynchedActorDataAccess.h"
2624
#include "mc/world/actor/item/ItemActor.h"
2725
#include "mc/world/actor/player/Player.h"
26+
#include "mc/world/actor/provider/ActorEquipment.h"
27+
#include "mc/world/actor/provider/SynchedActorDataAccess.h"
2828
#include "mc/world/attribute/AttributeInstance.h"
2929
#include "mc/world/attribute/SharedAttributes.h"
30+
#include "mc/world/effect/EffectDuration.h"
3031
#include "mc/world/effect/MobEffectInstance.h"
3132
#include "mc/world/level/BlockSource.h"
3233
#include "mc/world/level/IConstBlockSource.h"
@@ -35,9 +36,8 @@
3536
#include "mc/world/level/block/Block.h"
3637
#include "mc/world/level/material/Material.h"
3738
#include "mc/world/phys/AABB.h"
38-
#include "mc/common/ActorUniqueID.h"
39+
#include "mc/world/phys/HitDetection.h"
3940
#include "mc/world/phys/HitResult.h"
40-
#include "mc/world/effect/EffectDuration.h"
4141

4242
#include <climits>
4343
#include <entt/entt.hpp>
@@ -296,7 +296,9 @@ Local<Value> EntityClass::isOnHotBlock() {
296296
Actor* entity = get();
297297
if (!entity) return Local<Value>();
298298

299-
return Boolean::newBoolean(entity->getDimensionBlockSource().getBlock(entity->getFeetBlockPos()).getMaterial().isSuperHot()); // TODO: Unsure
299+
return Boolean::newBoolean(
300+
entity->getDimensionBlockSource().getBlock(entity->getFeetBlockPos()).getMaterial().isSuperHot()
301+
); // TODO: Unsure
300302
}
301303
CATCH("Fail in isOnHotBlock!")
302304
}
@@ -1490,9 +1492,9 @@ Local<Value> EntityClass::addEffect(const Arguments& args) {
14901492
if (!actor) {
14911493
return Boolean::newBoolean(false);
14921494
}
1493-
unsigned int id = args[0].asNumber().toInt32();
1494-
EffectDuration duration;
1495-
duration.mUnk178312.as<int>() = args[1].asNumber().toInt32();
1495+
unsigned int id = args[0].asNumber().toInt32();
1496+
EffectDuration duration{};
1497+
duration.mValue = args[1].asNumber().toInt32();
14961498
int level = args[2].asNumber().toInt32();
14971499
bool showParticles = args[3].asBoolean().value();
14981500
MobEffectInstance effect = MobEffectInstance(id, duration, level, false, showParticles, false);

src/legacy/api/EntityAPI.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22
#include "api/APIHelp.h"
3+
#include "mc/common/ActorRuntimeID.h"
34
#include "mc/deps/ecs/WeakEntityRef.h"
4-
#include "mc/world/ActorRuntimeID.h"
55

66
//////////////////// Classes ////////////////////
77
class Actor;

0 commit comments

Comments
 (0)