From 49bc675f51aad004a7f4619f5be9ba88e3cfa73d Mon Sep 17 00:00:00 2001 From: Pierre Maurice Schwang Date: Tue, 8 Mar 2022 18:55:52 +0100 Subject: [PATCH] Fix `//regen -b` on 1.18.2 (#1647) * fix: adapt correct biome type * fix: PaperweightPlatformAdapter#adapt should return BiomeType --- .../impl/fawe/v1_18_R2/PaperweightGetBlocks.java | 2 +- .../fawe/v1_18_R2/PaperweightGetBlocks_Copy.java | 3 ++- .../fawe/v1_18_R2/PaperweightPlatformAdapter.java | 13 ++++--------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks.java index ed75aba86..7c0c2cefe 100644 --- a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks.java @@ -197,7 +197,7 @@ public class PaperweightGetBlocks extends CharGetBlocks implements BukkitGetBloc public BiomeType getBiomeType(int x, int y, int z) { LevelChunkSection section = getSections(false)[(y >> 4) - getMinSectionPosition()]; Holder biomes = section.getNoiseBiome(x >> 2, (y & 15) >> 2, z >> 2); - return (BiomeType) PaperweightPlatformAdapter.adapt(biomes, serverLevel); + return PaperweightPlatformAdapter.adapt(biomes, serverLevel); } @Override diff --git a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks_Copy.java index dd16729a3..d9168b13f 100644 --- a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightGetBlocks_Copy.java @@ -11,6 +11,7 @@ import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v1_18_R2.nbt.PaperweightLazyCompoundTag; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.biome.BiomeType; +import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; @@ -145,7 +146,7 @@ public class PaperweightGetBlocks_Copy implements IChunkGet { @Override public BiomeType getBiomeType(int x, int y, int z) { Holder biome = biomes[(y >> 4) - getMinSectionPosition()].get(x >> 2, (y & 15) >> 2, z >> 2); - return biome != null ? (BiomeType) PaperweightPlatformAdapter.adapt(biome, serverLevel) : null; + return PaperweightPlatformAdapter.adapt(biome, serverLevel); } @Override diff --git a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java index 56ba845fa..f535014ba 100644 --- a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java @@ -26,8 +26,6 @@ import net.minecraft.core.IdMap; import net.minecraft.core.Registry; import net.minecraft.core.SectionPos; import net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ChunkHolder; import net.minecraft.server.level.ChunkMap; import net.minecraft.server.level.ServerLevel; @@ -39,7 +37,6 @@ import net.minecraft.util.ZeroBitStorage; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.biome.Biomes; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.EntityBlock; @@ -566,15 +563,13 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { fieldNonEmptyBlockCount.setShort(section, (short) nonEmptyBlockCount); } - public static Holder adapt(Holder biome, LevelAccessor levelAccessor) { + public static BiomeType adapt(Holder biome, LevelAccessor levelAccessor) { final Registry biomeRegistry = levelAccessor.registryAccess().ownedRegistryOrThrow(Registry.BIOME_REGISTRY); - final IdMap> holders = biomeRegistry.asHolderIdMap(); - ResourceLocation resourceLocation = biomeRegistry.getKey(biome.value()); - if (resourceLocation == null) { - return holders.getId(biome) == -1 ? Holder.Reference.createStandAlone(biomeRegistry, Biomes.OCEAN) + if (biomeRegistry.getKey(biome.value()) == null) { + return biomeRegistry.asHolderIdMap().getId(biome) == -1 ? BiomeTypes.OCEAN : null; } - return Holder.Reference.createStandAlone(biomeRegistry, ResourceKey.create(biomeRegistry.key(), resourceLocation)); + return BiomeTypes.get(biome.unwrapKey().orElseThrow().location().toString()); } @SuppressWarnings("unchecked")