Updated bukkit platform to 1.21

This commit is contained in:
Oak 2024-06-16 19:21:34 +01:00
parent 9e60db4b0d
commit 4e7de501c0
13 changed files with 40 additions and 22 deletions

View File

@ -52,12 +52,12 @@ object Versions {
// } // }
object Bukkit { object Bukkit {
const val minecraft = "1.20.6" const val minecraft = "1.21"
const val paperBuild = "$minecraft-R0.1-20240602.222958-107" const val paperBuild = "$minecraft-R0.1-20240615.005026-1"
const val paper = paperBuild const val paper = paperBuild
const val paperLib = "1.0.8" const val paperLib = "1.0.8"
const val reflectionRemapper = "0.1.1" const val reflectionRemapper = "0.1.1"
const val paperDevBundle = "$minecraft-R0.1-20240601.143523-105" const val paperDevBundle = paperBuild
const val runPaper = "2.3.0" const val runPaper = "2.3.0"
const val paperWeight = "1.7.1" const val paperWeight = "1.7.1"
} }

View File

@ -10,7 +10,7 @@ repositories {
dependencies { dependencies {
shaded(project(":platforms:bukkit:common")) shaded(project(":platforms:bukkit:common"))
shaded(project(":platforms:bukkit:nms:v1_20_R6", configuration = "reobf")) shaded(project(":platforms:bukkit:nms:v1_21", configuration = "reobf"))
shaded("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper) shaded("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper)
} }

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
@ -41,12 +41,12 @@ public class AwfulBukkitHacks {
try { try {
BukkitPlatformBiome platformBiome = (BukkitPlatformBiome) biome.getPlatformBiome(); BukkitPlatformBiome platformBiome = (BukkitPlatformBiome) biome.getPlatformBiome();
NamespacedKey vanillaBukkitKey = platformBiome.getHandle().getKey(); NamespacedKey vanillaBukkitKey = platformBiome.getHandle().getKey();
ResourceLocation vanillaMinecraftKey = new ResourceLocation(vanillaBukkitKey.getNamespace(), vanillaBukkitKey.getKey()); ResourceLocation vanillaMinecraftKey = ResourceLocation.fromNamespaceAndPath(vanillaBukkitKey.getNamespace(), vanillaBukkitKey.getKey());
Biome platform = NMSBiomeInjector.createBiome(biome, Objects.requireNonNull(biomeRegistry.get(vanillaMinecraftKey))); Biome platform = NMSBiomeInjector.createBiome(biome, Objects.requireNonNull(biomeRegistry.get(vanillaMinecraftKey)));
ResourceKey<Biome> delegateKey = ResourceKey.create( ResourceKey<Biome> delegateKey = ResourceKey.create(
Registries.BIOME, Registries.BIOME,
new ResourceLocation("terra", NMSBiomeInjector.createBiomeID(pack, key)) ResourceLocation.fromNamespaceAndPath("terra", NMSBiomeInjector.createBiomeID(pack, key))
); );
Reference<Biome> holder = biomeRegistry.register(delegateKey, platform, RegistrationInfo.BUILT_IN); Reference<Biome> holder = biomeRegistry.register(delegateKey, platform, RegistrationInfo.BUILT_IN);

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import com.mojang.serialization.MapCodec; import com.mojang.serialization.MapCodec;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import com.mojang.serialization.MapCodec; import com.mojang.serialization.MapCodec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -26,7 +26,6 @@ import org.slf4j.LoggerFactory;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@ -87,10 +86,10 @@ public class NMSChunkGeneratorDelegate extends ChunkGenerator {
} }
@Override @Override
public @NotNull CompletableFuture<ChunkAccess> fillFromNoise(@NotNull Executor executor, @NotNull Blender blender, public CompletableFuture<ChunkAccess> fillFromNoise(@NotNull Blender blender,
@NotNull RandomState noiseConfig, @NotNull RandomState noiseConfig,
@NotNull StructureManager structureAccessor, @NotNull ChunkAccess chunk) { @NotNull StructureManager structureAccessor, @NotNull ChunkAccess chunk) {
return vanilla.fillFromNoise(executor, blender, noiseConfig, structureAccessor, chunk) return vanilla.fillFromNoise(blender, noiseConfig, structureAccessor, chunk)
.thenApply(c -> { .thenApply(c -> {
LevelAccessor level = Reflection.STRUCTURE_MANAGER.getLevel(structureAccessor); LevelAccessor level = Reflection.STRUCTURE_MANAGER.getLevel(structureAccessor);
BiomeProvider biomeProvider = pack.getBiomeProvider(); BiomeProvider biomeProvider = pack.getBiomeProvider();

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;

View File

@ -1,7 +1,9 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import net.minecraft.server.level.ChunkMap;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.chunk.status.WorldGenContext;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -10,6 +12,7 @@ import org.bukkit.event.world.WorldInitEvent;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
@ -37,8 +40,24 @@ public class NMSInjectListener implements Listener {
ChunkGenerator vanilla = serverWorld.getChunkSource().getGenerator(); ChunkGenerator vanilla = serverWorld.getChunkSource().getGenerator();
NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), craftWorld.getSeed()); NMSBiomeProvider provider = new NMSBiomeProvider(pack.getBiomeProvider(), craftWorld.getSeed());
ChunkMap chunkMap = serverWorld.getChunkSource().chunkMap;
serverWorld.getChunkSource().chunkMap.generator = new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()); try {
Field worldGenContextField = chunkMap.getClass().getDeclaredField("worldGenContext");
worldGenContextField.setAccessible(true);
WorldGenContext worldGenContext = (WorldGenContext) worldGenContextField.get(chunkMap);
worldGenContextField.set(chunkMap,
new WorldGenContext(
worldGenContext.level(),
new NMSChunkGeneratorDelegate(vanilla, pack, provider, craftWorld.getSeed()),
worldGenContext.structureManager(),
worldGenContext.lightEngine(),
worldGenContext.mainThreadMailBox()
));
} catch(NoSuchFieldException | IllegalAccessException e) {
throw new RuntimeException(e);
}
LOGGER.info("Successfully injected into world."); LOGGER.info("Successfully injected into world.");

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import net.minecraft.world.level.LevelHeightAccessor; import net.minecraft.world.level.LevelHeightAccessor;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Holder.Reference; import net.minecraft.core.Holder.Reference;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_20_6; package com.dfsek.terra.bukkit.nms.v1_21;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;