Skip to content

Commit

Permalink
feat: 适配 MoreDimensions 0.5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
engsr6982 committed Feb 2, 2025
1 parent 9a82818 commit 4e3d730
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 35 deletions.
4 changes: 2 additions & 2 deletions src/plotcraft/command/Command.cc
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ static const auto LambdaGo = [](CommandOrigin const& origin, CommandOutput& outp
static const auto LambdaPlot = [](CommandOrigin const& origin, CommandOutput& output) {
CHECK_COMMAND_TYPE(output, origin, CommandOriginType::Player);
Player& player = *static_cast<Player*>(origin.getEntity());
if (player.getDimensionId() != getPlotWorldDimensionId()) {
if (player.getDimensionId().id != getPlotWorldDimensionId()) {
sendText<LogLevel::Error>(player, "此命令只能在地皮世界使用!");
return;
}
Expand Down Expand Up @@ -120,7 +120,7 @@ static const auto LambdaSetting = [](CommandOrigin const& origin, CommandOutput&
static const auto LambdaFindUnownedPlot = [](CommandOrigin const& origin, CommandOutput& output) {
CHECK_COMMAND_TYPE(output, origin, CommandOriginType::Player);
Player& player = *static_cast<Player*>(origin.getEntity());
if (player.getDimensionId() != getPlotWorldDimensionId()) {
if (player.getDimensionId().id != getPlotWorldDimensionId()) {
sendText<LogLevel::Error>(player, "此命令只能在地皮世界使用!");
return;
}
Expand Down
16 changes: 11 additions & 5 deletions src/plotcraft/core/PlotDimension.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,25 @@
#include "PlotDimension.h"
#include "DefaultGenerator.h"
#include "TemplateGenerator.h"
#include "mc/common/Brightness.h"
#include "mc/common/BrightnessPair.h"
#include "mc/world/level/BlockSource.h"
#include "mc/world/level/DimensionConversionData.h"
#include "mc/world/level/Level.h"
#include "mc/world/level/LevelSeed64.h"
#include "mc/world/level/chunk/ChunkGeneratorStructureState.h"
#include "mc/world/level/chunk/VanillaLevelChunkUpgrade.h"
#include "mc/world/level/biome/source/FixedBiomeSource.h"
#include "mc/world/level/chunk/vanilla_level_chunk_upgrade/VanillaLevelChunkUpgrade.h"
#include "mc/world/level/dimension/Dimension.h"
#include "mc/world/level/dimension/DimensionBrightnessRamp.h"
#include "mc/world/level/dimension/DimensionHeightRange.h"
#include "mc/world/level/dimension/OverworldBrightnessRamp.h"
#include "mc/world/level/dimension/VanillaDimensions.h"
#include "mc/world/level/levelgen/flat/FlatWorldGenerator.h"
#include "mc/world/level/levelgen/structure/StructureFeatureRegistry.h"
#include "mc/world/level/levelgen/structure/StructureSetRegistry.h"
#include "mc/world/level/levelgen/structure/VillageFeature.h"
#include "mc/world/level/levelgen/structure/registry/StructureSetRegistry.h"
#include "mc/world/level/levelgen/v2/ChunkGeneratorStructureState.h"
#include "mc/world/level/storage/LevelData.h"
#include "more_dimensions/api/dimension/CustomDimensionManager.h"
#include "plotcraft/Config.h"
#include "plotcraft/Global.h"
Expand All @@ -25,7 +31,7 @@ namespace plot::core {
PlotDimension::PlotDimension(std::string const& name, more_dimensions::DimensionFactoryInfo const& info)
: Dimension(info.level, info.dimId, {-64, 320}, info.scheduler, name) {
// 这里说明下,在DimensionFactoryInfo里面more-dimensions会提供维度id,请不要使用固定维度id,避免id冲突导致维度注册出现异常
mDefaultBrightness.sky = Brightness::MAX;
mDefaultBrightness->sky = Brightness::MAX();
mSeaLevel = -61;
mHasWeather = true;
mDimensionBrightnessRamp = std::make_unique<OverworldBrightnessRamp>();
Expand All @@ -49,7 +55,7 @@ PlotDimension::createGenerator(br::worldgen::StructureSetRegistry const& /* stru
std::make_unique<plot::core::TemplateGenerator>(*this, seed, levelData.getFlatWorldGeneratorOptions());
}

worldGenerator->init(); // 必须调用,初始化生成器
// worldGenerator->init(); // 必须调用,初始化生成器

return std::move(worldGenerator);
}
Expand Down
48 changes: 24 additions & 24 deletions src/plotcraft/event/Event.cc
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ bool registerEventListener() {
mPlayerDestroyBlockEvent =
bus->emplaceListener<ll::event::PlayerDestroyBlockEvent>([db, logger](ll::event::PlayerDestroyBlockEvent& ev) {
auto& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return; // 被破坏的方块不在地皮世界
if (player.getDimensionId().id != getPlotWorldDimensionId()) return; // 被破坏的方块不在地皮世界

BlockPos const& blockPos = ev.pos();
PlotPos pps = PlotPos(blockPos);
Expand All @@ -189,7 +189,7 @@ bool registerEventListener() {
mPlayerPlaceingBlockEvent =
bus->emplaceListener<ll::event::PlayerPlacingBlockEvent>([db, logger](ll::event::PlayerPlacingBlockEvent& ev) {
auto& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

BlockPos blockPos = mc::face2Pos(ev.pos(), ev.face()); // 计算实际放置位置
auto pps = PlotPos(blockPos);
Expand All @@ -214,7 +214,7 @@ bool registerEventListener() {
bus->emplaceListener<ll::event::PlayerInteractBlockEvent>([db,
logger](ll::event::PlayerInteractBlockEvent& ev) {
auto& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

auto& vec3 = ev.clickPos();
auto pps = PlotPos(vec3);
Expand Down Expand Up @@ -294,7 +294,7 @@ bool registerEventListener() {
mPlayerAttackEntityEvent =
bus->emplaceListener<ll::event::PlayerAttackEvent>([db, logger](ll::event::PlayerAttackEvent& ev) {
auto& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

auto const& pos = ev.target().getPosition();
auto pps = PlotPos(pos);
Expand Down Expand Up @@ -324,7 +324,7 @@ bool registerEventListener() {
mPlayerPickUpItemEvent =
bus->emplaceListener<ll::event::PlayerPickUpItemEvent>([db, logger](ll::event::PlayerPickUpItemEvent& ev) {
auto& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

auto const& pos = ev.itemActor().getPosition();
auto pps = PlotPos(pos);
Expand All @@ -350,7 +350,7 @@ bool registerEventListener() {
bus->emplaceListener<ll::event::PlayerInteractBlockEvent>([db,
logger](ll::event::PlayerInteractBlockEvent& ev) {
auto& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

auto const& pos = ev.blockPos(); // 交互的方块位置
auto pps = PlotPos(pos);
Expand Down Expand Up @@ -389,7 +389,7 @@ bool registerEventListener() {

mPlayerUseItemEvent =
bus->emplaceListener<ll::event::PlayerUseItemEvent>([logger](ll::event::PlayerUseItemEvent& ev) {
if (ev.self().getDimensionId() != getPlotWorldDimensionId()) return;
if (ev.self().getDimensionId().id != getPlotWorldDimensionId()) return;
if (!ev.item().getTypeName().ends_with("bucket")) return;

auto& player = ev.self();
Expand Down Expand Up @@ -421,7 +421,7 @@ bool registerEventListener() {
// 可开关事件(作用于地皮世界)
mSpawningMobEvent =
bus->emplaceListener<ll::event::SpawningMobEvent>([/* logger */](ll::event::SpawningMobEvent& ev) {
if (ev.blockSource().getDimensionId() != getPlotWorldDimensionId()) return;
if (ev.blockSource().getDimensionId().id != getPlotWorldDimensionId()) return;

// logger->debug("[SpawningMob]: {}", ev.identifier().getFullName());

Expand All @@ -432,7 +432,7 @@ bool registerEventListener() {

mActorHurtEvent = bus->emplaceListener<ll::event::ActorHurtEvent>([db, logger](ll::event::ActorHurtEvent& ev) {
auto& self = ev.self();
if (self.getDimensionId() != getPlotWorldDimensionId()) return;
if (self.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[ActorHurtEvent] mob: {}", self.getTypeName());

Expand Down Expand Up @@ -466,7 +466,7 @@ bool registerEventListener() {
if (!pl.has_value()) return;
Player& player = pl.value();

if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[AttackBlock]: Pos: {}", ev.getPos().toString());

Expand All @@ -488,7 +488,7 @@ bool registerEventListener() {
bus->emplaceListener<ila::mc::ArmorStandSwapItemBeforeEvent>([logger](ila::mc::ArmorStandSwapItemBeforeEvent& ev
) {
Player& player = ev.getPlayer();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[ArmorStandSwapItem]: executed");

Expand All @@ -508,7 +508,7 @@ bool registerEventListener() {
mPlayerDropItemEvent =
bus->emplaceListener<ila::mc::PlayerDropItemBeforeEvent>([logger](ila::mc::PlayerDropItemBeforeEvent& ev) {
Player& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[PlayerDropItem]: executed");

Expand All @@ -527,7 +527,7 @@ bool registerEventListener() {

mActorRideEvent = bus->emplaceListener<ila::mc::ActorRideBeforeEvent>([logger](ila::mc::ActorRideBeforeEvent& ev) {
Actor& passenger = ev.self();
if (passenger.getDimensionId() != getPlotWorldDimensionId()) return;
if (passenger.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[生物骑乘] executed!");

Expand Down Expand Up @@ -562,7 +562,7 @@ bool registerEventListener() {
auto& exp = ev.getExplosion();
auto pos = BlockPos{exp.mPos};

if (bs.getDimensionId() != getPlotWorldDimensionId()) return;
if (bs.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[Explode] pos: {}", pos.toString());

Expand All @@ -589,7 +589,7 @@ bool registerEventListener() {

mFarmDecayEvent = bus->emplaceListener<ila::mc::FarmDecayBeforeEvent>([logger](ila::mc::FarmDecayBeforeEvent& ev) {
auto& region = ev.blockSource();
if (region.getDimensionId() != getPlotWorldDimensionId()) return;
if (region.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[耕地退化] pos: {}", ev.getPos().toString());

Expand All @@ -607,7 +607,7 @@ bool registerEventListener() {
mMobHurtEffectEvent =
bus->emplaceListener<ila::mc::MobHurtEffectBeforeEvent>([logger](ila::mc::MobHurtEffectBeforeEvent& ev) {
auto& self = ev.self();
if (self.getDimensionId() != getPlotWorldDimensionId()) return;
if (self.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[MobHurt] mob: {}", self.getTypeName());

Expand Down Expand Up @@ -636,7 +636,7 @@ bool registerEventListener() {
mPistonTryPushEvent =
bus->emplaceListener<ila::mc::PistonPushBeforeEvent>([logger](ila::mc::PistonPushBeforeEvent& ev) {
auto& region = ev.blockSource();
if (region.getDimensionId() != getPlotWorldDimensionId()) return;
if (region.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[活塞推动方块] 目标: {}", ev.getPushPos().toString());

Expand All @@ -658,7 +658,7 @@ bool registerEventListener() {
mPlayerUseItemFrameEvent = bus->emplaceListener<ila::mc::PlayerOperatedItemFrameBeforeEvent>(
[logger](ila::mc::PlayerOperatedItemFrameBeforeEvent& ev) {
auto& player = ev.self();
if (player.getDimensionId() != getPlotWorldDimensionId()) return;
if (player.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[物品展示框] pos: {}", ev.getBlockPos().toString());

Expand All @@ -681,7 +681,7 @@ bool registerEventListener() {
auto& region = self.getDimensionBlockSource();
auto& pos = ev.getPos();

if (region.getDimensionId() != getPlotWorldDimensionId()) return;
if (region.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[压力板] pos: {} entity: {}", pos.toString(), self.getTypeName());

Expand All @@ -707,7 +707,7 @@ bool registerEventListener() {
mProjectileSpawnEvent =
bus->emplaceListener<ila::mc::ProjectileCreateBeforeEvent>([logger](ila::mc::ProjectileCreateBeforeEvent& ev) {
auto& actor = ev.self();
if (actor.getDimensionId() != getPlotWorldDimensionId()) return;
if (actor.getDimensionId().id != getPlotWorldDimensionId()) return;

auto const& type = actor.getTypeName();

Expand Down Expand Up @@ -744,7 +744,7 @@ bool registerEventListener() {
mRedstoneUpdateEvent =
bus->emplaceListener<ila::mc::RedstoneUpdateBeforeEvent>([logger](ila::mc::RedstoneUpdateBeforeEvent& ev) {
auto& region = ev.blockSource();
if (region.getDimensionId() != getPlotWorldDimensionId()) return;
if (region.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[RedstoneUpdate] pos: {}", ev.getPos().toString());

Expand All @@ -762,7 +762,7 @@ bool registerEventListener() {
mWitherDestroyBlockEvent =
bus->emplaceListener<ila::mc::WitherDestroyBeforeEvent>([logger](ila::mc::WitherDestroyBeforeEvent& ev) {
auto& region = ev.blockSource();
if (region.getDimensionId() != getPlotWorldDimensionId()) return;
if (region.getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[凋零破坏方块] executed!");

Expand Down Expand Up @@ -796,7 +796,7 @@ bool registerEventListener() {

mMossFertilizerEvent =
bus->emplaceListener<ila::mc::MossGrowthBeforeEvent>([logger, db](ila::mc::MossGrowthBeforeEvent& ev) {
if (ev.blockSource().getDimensionId() != getPlotWorldDimensionId()) return;
if (ev.blockSource().getDimensionId().id != getPlotWorldDimensionId()) return;

logger->debug("[MossSpread] {}", ev.getPos().toString());

Expand All @@ -821,7 +821,7 @@ bool registerEventListener() {
mLiquidFlowEvent =
bus->emplaceListener<ila::mc::LiquidTryFlowBeforeEvent>([](ila::mc::LiquidTryFlowBeforeEvent& ev) {
auto& bs = ev.blockSource();
if (bs.getDimensionId() != getPlotWorldDimensionId()) return;
if (bs.getDimensionId().id != getPlotWorldDimensionId()) return;

auto& sou = ev.getPos();
auto pps = PlotPos(sou);
Expand Down
2 changes: 1 addition & 1 deletion src/plotcraft/event/Scheduler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ void _SetupPlotEventScheduler() {

// 获取当前位置信息
auto const& curPos = pl.getPosition();
auto const curDim = pl.getDimensionId();
auto const curDim = pl.getDimensionId().id;
auto const curPlot = PlotPos(curPos);

// 获取上一次位置信息
Expand Down
2 changes: 1 addition & 1 deletion src/plotcraft/gui/MainGUI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void MainGUI(Player& player) {

fm.setContent("PlotCraft > 选择一个操作:");

if (player.getDimensionId() == getPlotWorldDimensionId()) {
if (player.getDimensionId().id == getPlotWorldDimensionId()) {
fm.appendButton("前往主世界", "textures/ui/realmsIcon", "path", [](Player& pl) {
mc::executeCommand("plot go overworld", &pl);
});
Expand Down
4 changes: 2 additions & 2 deletions src/plotcraft/gui/PluginSettingGUI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ void PluginSettingGUI(Player& player) {
fm.setContent("PlotCraft > 插件设置");

fm.appendButton("设置当前位置为主世界安全坐标", "textures/ui/Wrenches1", "path", [cfg](Player& pl) {
if (pl.getDimensionId() != 0) {
if (pl.getDimensionId().id != 0) {
sendText<LogLevel::Error>(pl, "你必须在主世界才能执行此操作");
return;
}
Expand All @@ -29,7 +29,7 @@ void PluginSettingGUI(Player& player) {
});

fm.appendButton("设置当前位置为地皮世界安全坐标", "textures/ui/Wrenches1", "path", [cfg](Player& pl) {
if (pl.getDimensionId() != getPlotWorldDimensionId()) {
if (pl.getDimensionId().id != getPlotWorldDimensionId()) {
sendText<LogLevel::Error>(pl, "你必须在地皮世界才能执行此操作");
return;
}
Expand Down

0 comments on commit 4e3d730

Please sign in to comment.