mirror of
https://github.com/quizhizhe/LiteLoaderBDS-1.16.40.git
synced 2025-06-05 03:43:40 +00:00
111 lines
4.0 KiB
C++
111 lines
4.0 KiB
C++
// #include <Global.h>
|
|
// #include <MC/SimulatedPlayer.hpp>
|
|
// #include <MC/BlockInstance.hpp>
|
|
// #include <MC/ServerNetworkHandler.hpp>
|
|
// #include <MC/Minecraft.hpp>
|
|
// #include <MC/StackResultStorageEntity.hpp>
|
|
// #include <MC/OwnerStorageEntity.hpp>
|
|
// #include <MC/Level.hpp>
|
|
|
|
// // static_assert(sizeof(ScriptNavigationResult) == 32);
|
|
|
|
// // For compatibility
|
|
// bool SimulatedPlayer::simulateDestory() {
|
|
// return SimulatedPlayer::simulateDestroy();
|
|
// }
|
|
|
|
// bool SimulatedPlayer::simulateDestroy() {
|
|
// FaceID face = FaceID::Unknown;
|
|
// auto blockIns = getBlockFromViewVector(face);
|
|
// if (blockIns.isNull())
|
|
// return false;
|
|
// return simulateDestroyBlock(blockIns.getPosition(), (ScriptModuleMinecraft::ScriptFacing)face);
|
|
// }
|
|
|
|
// bool SimulatedPlayer::simulateUseItem() {
|
|
// auto slot = getSelectedItemSlot();
|
|
// return simulateUseItemInSlot(slot);
|
|
// }
|
|
|
|
// bool SimulatedPlayer::simulateSneak() {
|
|
// setSneaking(true);
|
|
// return isSneaking();
|
|
// }
|
|
|
|
// bool SimulatedPlayer::simulateStopSneaking() {
|
|
// setSneaking(false);
|
|
// return !isSneaking();
|
|
// }
|
|
|
|
// template <>
|
|
// class OwnerPtrT<struct EntityRefTraits> {
|
|
// char filler[24];
|
|
|
|
// public:
|
|
// MCAPI ~OwnerPtrT();
|
|
|
|
// inline OwnerPtrT(OwnerPtrT&& right) noexcept {
|
|
// void (OwnerPtrT::*rv)(OwnerPtrT && right);
|
|
// *((void**)&rv) = dlsym("??0OwnerStorageEntity@@IEAA@$$QEAV0@@Z");
|
|
// (this->*rv)(std::move(right));
|
|
// }
|
|
// inline OwnerPtrT& operator=(OwnerPtrT&& right) noexcept {
|
|
// void (OwnerPtrT::*rv)(OwnerPtrT && right);
|
|
// *((void**)&rv) = dlsym("??4OwnerStorageEntity@@IEAAAEAV0@$$QEAV0@@Z");
|
|
// (this->*rv)(std::move(right));
|
|
// }
|
|
|
|
// inline SimulatedPlayer* tryGetSimulatedPlayer(bool b = false) {
|
|
// auto& context = dAccess<StackResultStorageEntity, 0>(this).getStackRef();
|
|
// return SimulatedPlayer::tryGetFromEntity(context, b);
|
|
// }
|
|
|
|
// inline bool hasValue() const {
|
|
// if (!this)
|
|
// return false;
|
|
// return dAccess<bool, 16>(this);
|
|
// }
|
|
// // inline bool isValid()
|
|
// };
|
|
|
|
// class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class BlockPos const& position, class AutomaticID<class Dimension, int> dimensionId) {
|
|
// // auto handler = Global<Minecraft>->getServerNetworkHandler();
|
|
// // return create(name, position, dimensionId, Global<Minecraft>->getServerNetworkHandler());
|
|
// OwnerPtrT<EntityRefTraits> ownerPtr = Global<ServerNetworkHandler>->createSimulatedPlayer(name, dimensionId, "");
|
|
// auto player = ownerPtr.tryGetSimulatedPlayer();
|
|
|
|
// if (player /* && player->isSimulatedPlayer() */) {
|
|
// player->postLoad(/* isNewPlayer */ true);
|
|
// Level& level = player->getLevel();
|
|
// level.addUser(std::move(ownerPtr));
|
|
// auto pos = position.bottomCenter();
|
|
// pos.y = pos.y + 1.62001f;
|
|
// player->setPos(pos);
|
|
// player->setRespawnReady(pos);
|
|
// player->setSpawnBlockRespawnPosition(position, dimensionId);
|
|
// player->setLocalPlayerAsInitialized();
|
|
// player->doInitialSpawn();
|
|
// }
|
|
// return player;
|
|
// }
|
|
|
|
|
|
// class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class AutomaticID<class Dimension, int> dimensionId) {
|
|
// OwnerPtrT<EntityRefTraits> ownerPtr = Global<ServerNetworkHandler>->createSimulatedPlayer(name, dimensionId, "");
|
|
// auto player = ownerPtr.tryGetSimulatedPlayer();
|
|
|
|
// if (player /* && player->isSimulatedPlayer() */) {
|
|
// player->postLoad(/* isNewPlayer */ true);
|
|
// Level& level = player->getLevel();
|
|
// level.addUser(std::move(ownerPtr));
|
|
// // auto pos = bpos.bottomCenter();
|
|
// // pos.y = pos.y + 1.62001;
|
|
// // player->setPos(pos);
|
|
// // player->setRespawnReady(pos);
|
|
// // player->setSpawnBlockRespawnPosition(bpos, dimId);
|
|
// player->setLocalPlayerAsInitialized();
|
|
// player->doInitialSpawn();
|
|
// }
|
|
// return player;
|
|
// }
|