From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/RiverMixerLayer.cpp | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Minecraft.World/RiverMixerLayer.cpp (limited to 'Minecraft.World/RiverMixerLayer.cpp') diff --git a/Minecraft.World/RiverMixerLayer.cpp b/Minecraft.World/RiverMixerLayer.cpp new file mode 100644 index 00000000..62dfdd6c --- /dev/null +++ b/Minecraft.World/RiverMixerLayer.cpp @@ -0,0 +1,47 @@ +#include "stdafx.h" +#include "net.minecraft.world.level.biome.h" +#include "net.minecraft.world.level.newbiome.layer.h" + +RiverMixerLayer::RiverMixerLayer(__int64 seed, shared_ptrbiomes, shared_ptrrivers) : Layer(seed) +{ + this->biomes = biomes; + this->rivers = rivers; +} + +void RiverMixerLayer::init(__int64 seed) +{ + biomes->init(seed); + rivers->init(seed); + Layer::init(seed); +} + +intArray RiverMixerLayer::getArea(int xo, int yo, int w, int h) +{ + intArray b = biomes->getArea(xo, yo, w, h); + intArray r = rivers->getArea(xo, yo, w, h); + + intArray result = IntCache::allocate(w * h); + for (int i = 0; i < w * h; i++) + { + if (b[i] == Biome::ocean->id) + { + result[i] = b[i]; + + } + else + { + if (r[i] >= 0) + { + if (b[i] == Biome::iceFlats->id) result[i] = Biome::frozenRiver->id; + else if (b[i] == Biome::mushroomIsland->id || b[i] == Biome::mushroomIslandShore->id) result[i] = Biome::mushroomIsland->id; // 4J - don't make mushroom island shores as we don't have any island left once we do this as our islands are small (this used to change to mushroomIslandShore) + else result[i] = r[i]; + } + else + { + result[i] = b[i]; + } + } + } + + return result; +} \ No newline at end of file -- cgit v1.2.3