Skip to content

Commit d2e3636

Browse files
committed
feat: support 26.10(WIP)
1 parent 50a7328 commit d2e3636

File tree

12 files changed

+92
-63
lines changed

12 files changed

+92
-63
lines changed

src/legacy/api/BlockAPI.cpp

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
#include "ll/api/service/Bedrock.h"
1111
#include "lse/api/helper/BlockHelper.h"
1212
#include "mc/deps/core/utility/optional_ref.h"
13+
#include "mc/deps/shared_types/v1_26_0/block/LiquidReaction.h"
1314
#include "mc/world/level/BlockSource.h"
1415
#include "mc/world/level/ChunkBlockPos.h"
1516
#include "mc/world/level/block/BedrockBlockNames.h"
1617
#include "mc/world/level/block/Block.h"
1718
#include "mc/world/level/block/BlockChangeContext.h"
18-
#include "mc/world/level/block/LiquidReaction.h"
1919
#include "mc/world/level/block/VanillaBlockTags.h"
2020
#include "mc/world/level/block/actor/BlockActor.h"
2121
#include "mc/world/level/block/block_serialization_utils/BlockSerializationUtils.h"
@@ -281,7 +281,7 @@ Local<Value> BlockClass::isUnbreakable() const {
281281
Local<Value> BlockClass::isWaterBlockingBlock() const {
282282
try {
283283
return Boolean::newBoolean(
284-
block->mDirectData->mWaterDetectionRule->mOnLiquidTouches == LiquidReaction::Blocking
284+
block->mDirectData->mWaterDetectionRule->mOnLiquidTouches == SharedTypes::v1_26_0::LiquidReaction::Blocking
285285
);
286286
}
287287
CATCH_AND_THROW
@@ -308,7 +308,14 @@ Local<Value> BlockClass::setNbt(Arguments const& args) {
308308
->getDimension(blockPos.dim)
309309
.lock()
310310
->getBlockSourceFromMainChunkSource()
311-
.setBlock(blockPos.getBlockPos(), *bl, 3, nullptr, nullptr, BlockChangeContext(false));
311+
.setBlock(
312+
blockPos.getBlockPos(),
313+
*bl,
314+
3,
315+
nullptr,
316+
nullptr,
317+
BlockChangeContext(StatelessBlockChangeContext::Commands)
318+
);
312319
}
313320
preloadData(blockPos.getBlockPos(), blockPos.getDimensionId());
314321
return Boolean::newBoolean(true);
@@ -381,7 +388,8 @@ Local<Value> BlockClass::removeBlockEntity(Arguments const&) const {
381388
->getDimension(blockPos.dim)
382389
.lock()
383390
->getBlockSourceFromMainChunkSource()
384-
.removeBlockEntity(blockPos.getBlockPos())
391+
.getChunkAt(blockPos.getBlockPos())
392+
->removeBlockEntity(blockPos.getBlockPos())
385393
!= nullptr
386394
);
387395
}
@@ -398,8 +406,12 @@ Local<Value> BlockClass::destroyBlock(Arguments const& args) const {
398406
BlockSource& bl =
399407
ll::service::getLevel()->getDimension(blockPos.dim).lock()->getBlockSourceFromMainChunkSource();
400408
return Boolean::newBoolean(
401-
ll::service::getLevel()
402-
->destroyBlock(bl, blockPos.getBlockPos(), args[0].asBoolean().value(), BlockChangeContext(false))
409+
ll::service::getLevel()->destroyBlock(
410+
bl,
411+
blockPos.getBlockPos(),
412+
args[0].asBoolean().value(),
413+
BlockChangeContext(StatelessBlockChangeContext::Commands)
414+
)
403415
);
404416
}
405417
CATCH_AND_THROW
@@ -525,9 +537,14 @@ Local<Value> McClass::setBlock(Arguments const& args) {
525537
}
526538
BlockSource& bs =
527539
ll::service::getLevel()->getDimension(pos.dim).lock()->getBlockSourceFromMainChunkSource();
528-
return Boolean::newBoolean(
529-
bs.setBlock(pos.getBlockPos(), bl, 3, nullptr, nullptr, BlockChangeContext(false))
530-
);
540+
return Boolean::newBoolean(bs.setBlock(
541+
pos.getBlockPos(),
542+
bl,
543+
3,
544+
nullptr,
545+
nullptr,
546+
BlockChangeContext(StatelessBlockChangeContext::Commands)
547+
));
531548
}
532549
if (IsInstanceOf<NbtCompoundClass>(block)) {
533550
// Nbt
@@ -538,17 +555,29 @@ Local<Value> McClass::setBlock(Arguments const& args) {
538555
}
539556
BlockSource& bs =
540557
ll::service::getLevel()->getDimension(pos.dim).lock()->getBlockSourceFromMainChunkSource();
541-
return Boolean::newBoolean(
542-
bs.setBlock(pos.getBlockPos(), bl, 3, nullptr, nullptr, BlockChangeContext(false))
543-
);
558+
return Boolean::newBoolean(bs.setBlock(
559+
pos.getBlockPos(),
560+
bl,
561+
3,
562+
nullptr,
563+
nullptr,
564+
BlockChangeContext(StatelessBlockChangeContext::Commands)
565+
));
544566
}
545567
// other block object
546568
Block const* bl = BlockClass::extract(block);
547569
if (!bl) {
548570
throw WrongArgTypeException(__FUNCTION__);
549571
}
550572
BlockSource& bs = ll::service::getLevel()->getDimension(pos.dim).lock()->getBlockSourceFromMainChunkSource();
551-
return Boolean::newBoolean(bs.setBlock(pos.getBlockPos(), *bl, 3, nullptr, nullptr, BlockChangeContext(false)));
573+
return Boolean::newBoolean(bs.setBlock(
574+
pos.getBlockPos(),
575+
*bl,
576+
3,
577+
nullptr,
578+
nullptr,
579+
BlockChangeContext(StatelessBlockChangeContext::Commands)
580+
));
552581
}
553582
CATCH_AND_THROW
554583
}

src/legacy/api/BlockEntityAPI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include "ll/api/service/Bedrock.h"
88
#include "lse/api/MoreGlobal.h"
99
#include "mc/dataloadhelper/DefaultDataLoadHelper.h"
10-
#include "mc/nbt/CompoundTag.h"
10+
#include "mc/deps/nbt/CompoundTag.h"
1111
#include "mc/world/item/SaveContextFactory.h"
1212
#include "mc/world/level/BlockSource.h"
1313
#include "mc/world/level/block/actor/BlockActor.h"

src/legacy/api/CommandAPI.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,22 +122,22 @@ Local<Value> convertResult(ParamStorageType const& result, CommandOrigin const&
122122
auto dim = origin.getDimension();
123123
return IntPos::newPos(
124124
std::get<CommandPosition>(result.value())
125-
.getBlockPos(CommandVersion::CurrentVersion(), origin, Vec3::ZERO()),
125+
.getBlockPos(static_cast<int>(CurrentCmdVersion::Latest), origin, Vec3::ZERO()),
126126
dim ? dim->getDimensionId().id : -1
127127
);
128128
}
129129
if (result.hold(ParamKind::Kind::Vec3)) {
130130
auto dim = origin.getDimension();
131131
return FloatPos::newPos(
132132
std::get<CommandPositionFloat>(result.value())
133-
.getPosition(CommandVersion::CurrentVersion(), origin, Vec3::ZERO()),
133+
.getPosition(static_cast<int>(CurrentCmdVersion::Latest), origin, Vec3::ZERO()),
134134
dim ? dim->getDimensionId().id : -1
135135
);
136136
}
137137
if (result.hold(ParamKind::Kind::Message)) {
138138
return String::newString(
139139
std::get<CommandMessage>(result.value())
140-
.generateMessage(origin, CommandVersion::CurrentVersion())
140+
.generateMessage(origin, static_cast<int>(CurrentCmdVersion::Latest))
141141
.mMessage->c_str()
142142
);
143143
}
@@ -199,7 +199,7 @@ Local<Value> McClass::runcmd(Arguments const& args) {
199199
CommandPermissionLevel::Owner,
200200
0
201201
),
202-
CommandVersion::CurrentVersion()
202+
static_cast<int>(CurrentCmdVersion::Latest)
203203
);
204204
try {
205205
return Boolean::newBoolean(ll::service::getMinecraft()->mCommands->executeCommand(context, false).mSuccess);
@@ -217,7 +217,7 @@ Local<Value> McClass::runcmdEx(Arguments const& args) {
217217
auto command = ll::service::getMinecraft()->mCommands->compileCommand(
218218
args[0].asString().toString(),
219219
origin,
220-
static_cast<CurrentCmdVersion>(CommandVersion::CurrentVersion()),
220+
static_cast<CurrentCmdVersion>(static_cast<int>(CurrentCmdVersion::Latest)),
221221
[&](std::string const& err) { outputStr.append(err).append("\n"); }
222222
);
223223
Local<Object> resObj = Object::newObject();

src/legacy/api/CommandOriginAPI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include "legacy/api/NbtAPI.h"
77
#include "legacy/api/PlayerAPI.h"
88
#include "magic_enum.hpp"
9-
#include "mc/nbt/CompoundTag.h"
9+
#include "mc/deps/nbt/CompoundTag.h"
1010
#include "mc/server/commands/CommandOriginType.h"
1111
#include "mc/world/actor/player/Player.h"
1212
#include "mc/world/level/dimension/Dimension.h"

src/legacy/api/CommandOutputAPI.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Local<Value> CommandOutputClass::success(Arguments const& args) {
6969
std::vector<CommandOutputParameter> param{};
7070
auto paramArr = args[1].asArray();
7171
for (int i = 0; i < paramArr.size(); ++i) {
72-
param.push_back(CommandOutputParameter(paramArr.get(i).asString().toString().c_str()));
72+
param.push_back(CommandOutputParameter({paramArr.get(i).asString().toString()}));
7373
}
7474
get()->success(msg, param);
7575
send();
@@ -91,7 +91,7 @@ Local<Value> CommandOutputClass::addMessage(Arguments const& args) {
9191
std::vector<CommandOutputParameter> param{};
9292
auto paramArr = args[1].asArray();
9393
for (int i = 0; i < paramArr.size(); ++i) {
94-
param.push_back(CommandOutputParameter(paramArr.get(i).asString().toString().c_str()));
94+
param.push_back(CommandOutputParameter({paramArr.get(i).asString().toString()}));
9595
}
9696
if (args.size() >= 3) {
9797
CHECK_ARG_TYPE(args[2], ValueKind::kNumber);
@@ -120,7 +120,7 @@ Local<Value> CommandOutputClass::error(Arguments const& args) {
120120
std::vector<CommandOutputParameter> param{};
121121
auto paramArr = args[1].asArray();
122122
for (int i = 0; i < paramArr.size(); ++i) {
123-
param.push_back(CommandOutputParameter(paramArr.get(i).asString().toString().c_str()));
123+
param.push_back(CommandOutputParameter({paramArr.get(i).asString().toString()}));
124124
}
125125
get()->error(msg, param);
126126
send();

src/legacy/api/DeviceAPI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "legacy/api/APIHelp.h"
44
#include "ll/api/service/Bedrock.h"
55
#include "magic_enum.hpp"
6-
#include "mc/certificates/WebToken.h"
6+
#include "mc/deps/certificates/WebToken.h"
77
#include "mc/deps/input/InputMode.h"
88
#include "mc/deps/json/Value.h"
99
#include "mc/legacy/ActorRuntimeID.h"

src/legacy/api/EntityAPI.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "lse/api/MoreGlobal.h"
1414
#include "lse/api/helper/AttributeHelper.h"
1515
#include "mc/deps/core/math/Vec2.h"
16+
#include "mc/deps/nbt/CompoundTag.h"
1617
#include "mc/deps/shared_types/legacy/actor/ActorDamageCause.h"
1718
#include "mc/deps/vanilla_components/ActorDataFlagComponent.h"
1819
#include "mc/deps/vanilla_components/StateVectorComponent.h"
@@ -23,13 +24,13 @@
2324
#include "mc/entity/utilities/ActorMobilityUtils.h"
2425
#include "mc/legacy/ActorRuntimeID.h"
2526
#include "mc/legacy/ActorUniqueID.h"
26-
#include "mc/nbt/CompoundTag.h"
2727
#include "mc/server/commands/CommandUtils.h"
2828
#include "mc/util/BlockUtils.h"
2929
#include "mc/world/SimpleContainer.h"
3030
#include "mc/world/actor/ActorDamageByActorSource.h"
3131
#include "mc/world/actor/ActorDamageSource.h"
3232
#include "mc/world/actor/ActorDefinitionIdentifier.h"
33+
#include "mc/world/actor/ActorHurtResult.h"
3334
#include "mc/world/actor/ActorType.h"
3435
#include "mc/world/actor/Mob.h"
3536
#include "mc/world/actor/item/ItemActor.h"
@@ -636,7 +637,7 @@ Local<Value> EntityClass::getDirection() const {
636637
if (!entity) return {};
637638

638639
// getRotation()
639-
Vec2 const vec = entity->mBuiltInComponents->mActorRotationComponent->mRotationDegree;
640+
Vec2 const vec = entity->mBuiltInComponents->mActorRotationComponent->mRot;
640641
return DirectionAngle::newAngle(vec.x, vec.y);
641642
}
642643
CATCH_AND_THROW
@@ -694,7 +695,7 @@ Local<Value> EntityClass::teleport(Arguments const& args) const {
694695
}
695696
if (!rotationIsValid) {
696697
// getRotation()
697-
ang = entity->mBuiltInComponents->mActorRotationComponent->mRotationDegree;
698+
ang = entity->mBuiltInComponents->mActorRotationComponent->mRot;
698699
}
699700
entity->teleport(pos.getVec3(), pos.dim, ang);
700701
return Boolean::newBoolean(true);

src/legacy/api/NbtAPI.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22

33
#include "legacy/api/APIHelp.h"
44
#include "ll/api/utils/Base64Utils.h"
5-
#include "mc/nbt/ByteArrayTag.h"
6-
#include "mc/nbt/ByteTag.h"
7-
#include "mc/nbt/CompoundTag.h"
8-
#include "mc/nbt/DoubleTag.h"
9-
#include "mc/nbt/EndTag.h"
10-
#include "mc/nbt/FloatTag.h"
11-
#include "mc/nbt/Int64Tag.h"
12-
#include "mc/nbt/IntTag.h"
13-
#include "mc/nbt/ListTag.h"
14-
#include "mc/nbt/ShortTag.h"
15-
#include "mc/nbt/StringTag.h"
5+
#include "mc/deps/nbt/ByteArrayTag.h"
6+
#include "mc/deps/nbt/ByteTag.h"
7+
#include "mc/deps/nbt/CompoundTag.h"
8+
#include "mc/deps/nbt/DoubleTag.h"
9+
#include "mc/deps/nbt/EndTag.h"
10+
#include "mc/deps/nbt/FloatTag.h"
11+
#include "mc/deps/nbt/Int64Tag.h"
12+
#include "mc/deps/nbt/IntTag.h"
13+
#include "mc/deps/nbt/ListTag.h"
14+
#include "mc/deps/nbt/ShortTag.h"
15+
#include "mc/deps/nbt/StringTag.h"
1616

1717
#include <magic_enum.hpp>
1818
#include <memory>

src/legacy/api/NbtAPI.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#pragma once
22
#include "legacy/api/APIHelp.h"
3-
#include "mc/nbt/ByteArrayTag.h"
4-
#include "mc/nbt/DoubleTag.h"
5-
#include "mc/nbt/Tag.h"
6-
7-
#include <mc/nbt/CompoundTag.h>
8-
#include <mc/nbt/FloatTag.h>
9-
#include <mc/nbt/Int64Tag.h>
10-
#include <mc/nbt/IntTag.h>
11-
#include <mc/nbt/ListTag.h>
12-
#include <mc/nbt/ShortTag.h>
13-
#include <mc/nbt/StringTag.h>
3+
#include "mc/deps/nbt/ByteArrayTag.h"
4+
#include "mc/deps/nbt/DoubleTag.h"
5+
#include "mc/deps/nbt/Tag.h"
6+
7+
#include <mc/deps/nbt/CompoundTag.h>
8+
#include <mc/deps/nbt/FloatTag.h>
9+
#include <mc/deps/nbt/Int64Tag.h>
10+
#include <mc/deps/nbt/IntTag.h>
11+
#include <mc/deps/nbt/ListTag.h>
12+
#include <mc/deps/nbt/ShortTag.h>
13+
#include <mc/deps/nbt/StringTag.h>
1414
#include <memory>
1515

1616
// NBT Static

src/legacy/api/PlayerAPI.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
#include "lse/api/helper/ScoreboardHelper.h"
3434
#include "mc/deps/core/math/Vec2.h"
3535
#include "mc/deps/core/utility/MCRESULT.h"
36+
#include "mc/deps/nbt/CompoundTag.h"
37+
#include "mc/deps/nbt/ListTag.h"
38+
#include "mc/deps/nbt/StringTag.h"
3639
#include "mc/entity/components/ActorRotationComponent.h"
3740
#include "mc/entity/components/AttributesComponent.h"
3841
#include "mc/entity/components/InsideBlockComponent.h"
@@ -41,9 +44,6 @@
4144
#include "mc/entity/utilities/ActorMobilityUtils.h"
4245
#include "mc/legacy/ActorRuntimeID.h"
4346
#include "mc/legacy/ActorUniqueID.h"
44-
#include "mc/nbt/CompoundTag.h"
45-
#include "mc/nbt/ListTag.h"
46-
#include "mc/nbt/StringTag.h"
4747
#include "mc/network/ConnectionRequest.h"
4848
#include "mc/network/MinecraftPacketIds.h"
4949
#include "mc/network/MinecraftPackets.h"
@@ -66,7 +66,6 @@
6666
#include "mc/server/NetworkChunkPublisher.h"
6767
#include "mc/server/ServerPlayer.h"
6868
#include "mc/server/commands/CommandContext.h"
69-
#include "mc/server/commands/CommandVersion.h"
7069
#include "mc/server/commands/MinecraftCommands.h"
7170
#include "mc/server/commands/PlayerCommandOrigin.h"
7271
#include "mc/util/BlockUtils.h"
@@ -75,6 +74,7 @@
7574
#include "mc/world/Minecraft.h"
7675
#include "mc/world/actor/Actor.h"
7776
#include "mc/world/actor/ActorDamageByActorSource.h"
77+
#include "mc/world/actor/ActorHurtResult.h"
7878
#include "mc/world/actor/ai/util/BossBarColor.h"
7979
#include "mc/world/actor/ai/util/BossEventUpdateType.h"
8080
#include "mc/world/actor/player/Inventory.h"
@@ -87,7 +87,6 @@
8787
#include "mc/world/attribute/Attribute.h"
8888
#include "mc/world/attribute/AttributeInstance.h"
8989
#include "mc/world/attribute/AttributeInstanceConstRef.h"
90-
#include "mc/world/attribute/AttributeInstanceHandle.h" // IWYU pragma: keep
9190
#include "mc/world/attribute/AttributeInstanceRef.h"
9291
#include "mc/world/attribute/SharedAttributes.h"
9392
#include "mc/world/effect/EffectDuration.h"
@@ -1042,7 +1041,7 @@ Local<Value> PlayerClass::getDirection() const {
10421041
if (!player) return {};
10431042

10441043
// getRotation()
1045-
Vec2 vec = player->mBuiltInComponents->mActorRotationComponent->mRotationDegree;
1044+
Vec2 vec = player->mBuiltInComponents->mActorRotationComponent->mRot;
10461045
return DirectionAngle::newAngle(vec.x, vec.y);
10471046
}
10481047
CATCH_AND_THROW
@@ -1519,7 +1518,7 @@ Local<Value> PlayerClass::teleport(Arguments const& args) const {
15191518
throw WrongArgTypeException(__FUNCTION__);
15201519
}
15211520
if (!rotationIsValid) {
1522-
angle = player->mBuiltInComponents->mActorRotationComponent->mRotationDegree;
1521+
angle = player->mBuiltInComponents->mActorRotationComponent->mRot;
15231522
}
15241523
player->teleport(pos.getVec3(), pos.dim, angle);
15251524
return Boolean::newBoolean(true);
@@ -1611,7 +1610,7 @@ Local<Value> PlayerClass::runcmd(Arguments const& args) const {
16111610
CommandContext context = CommandContext(
16121611
args[0].asString().toString(),
16131612
std::make_unique<PlayerCommandOrigin>(ll::service::getLevel(), player->getOrCreateUniqueID()),
1614-
CommandVersion::CurrentVersion()
1613+
static_cast<int>(CurrentCmdVersion::Latest)
16151614
);
16161615
ll::service::getMinecraft()->mCommands->executeCommand(context, false);
16171616
return Boolean::newBoolean(true);
@@ -3290,9 +3289,9 @@ Local<Value> PlayerClass::getAttributes(Arguments const&) const {
32903289
player->save(tag);
32913290
try {
32923291
Local<Array> arr = Array::newArray();
3293-
tag.at("Attributes").get<ListTag>().forEachCompoundTag([&](CompoundTag const& tagP) {
3294-
arr.add(Tag2Value(&const_cast<CompoundTag&>(tagP), true));
3295-
});
3292+
for (auto& tagP : tag.at("Attributes").get<ListTag>()) {
3293+
arr.add(Tag2Value(tagP.get(), true));
3294+
}
32963295
return arr;
32973296
} catch (...) {
32983297
return Array::newArray();

0 commit comments

Comments
 (0)