Merge pull request #532 from PolyhedralDev/dev/1.21.9

Updated to 1.21.9
This commit is contained in:
Zoë Gidiere
2025-10-03 00:49:23 -06:00
committed by GitHub
34 changed files with 115 additions and 147 deletions

View File

@@ -28,7 +28,7 @@ object Versions {
}
object Fabric {
const val fabricAPI = "0.129.0+${Mod.minecraft}"
const val fabricAPI = "0.133.14+${Mod.minecraft}"
const val cloud = "2.0.0-beta.11"
}
//
@@ -41,12 +41,12 @@ object Versions {
const val mixin = "0.15.5+mixin.0.8.7"
const val mixinExtras = "0.4.1"
const val minecraft = "1.21.8"
const val minecraft = "1.21.9"
const val yarn = "$minecraft+build.1"
const val fabricLoader = "0.16.14"
const val fabricLoader = "0.17.2"
const val architecuryLoom = "1.10.431"
const val architecturyPlugin = "3.4.161"
const val architecuryLoom = "1.11.440"
const val architecturyPlugin = "3.4.162"
}
//
@@ -56,13 +56,14 @@ object Versions {
// }
object Bukkit {
const val minecraft = "1.21.8-R0.1"
const val paperBuild = "$minecraft-20250717.233435-4"
const val minecraft = "1.21.9-rc1-R0.1"
const val paperBuild = "$minecraft-20250930.133904-13"
const val paper = paperBuild
const val paperLib = "1.0.8"
const val reflectionRemapper = "0.1.2"
const val paperDevBundle = paperBuild
const val runPaper = "2.3.1"
const val runPaperMinecraft = "1.21.9"
const val paperWeight = "2.0.0-beta.17"
const val cloud = "2.0.0-beta.11"
const val multiverse = "5.0.2"

View File

@@ -8,7 +8,7 @@ dependencies {
paperweight.paperDevBundle(Versions.Bukkit.paperDevBundle)
shaded(project(":platforms:bukkit:common"))
shaded(project(":platforms:bukkit:nms:v1_21_8"))
shaded(project(":platforms:bukkit:nms:v1_21_9"))
shaded("xyz.jpenilla", "reflection-remapper", Versions.Bukkit.reflectionRemapper)
}
@@ -27,7 +27,7 @@ tasks {
}
runServer {
minecraftVersion(Versions.Bukkit.minecraft)
minecraftVersion(Versions.Bukkit.runPaperMinecraft)
dependsOn(shadowJar)
pluginJars(shadowJar.get().archiveFile)

View File

@@ -1,62 +0,0 @@
/*
* This file is part of Terra.
*
* Terra is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Terra is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Terra. If not, see <https://www.gnu.org/licenses/>.
*/
package com.dfsek.terra.bukkit;
import org.bukkit.ChatColor;
import java.util.Optional;
import com.dfsek.terra.api.command.CommandSender;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
public class BukkitCommandSender implements CommandSender {
private final org.bukkit.command.CommandSender delegate;
public BukkitCommandSender(org.bukkit.command.CommandSender delegate) {
this.delegate = delegate;
}
@Override
public void sendMessage(String message) {
delegate.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
}
@Override
public Optional<Entity> getEntity() {
if(delegate instanceof org.bukkit.entity.Entity entity) {
return Optional.of(BukkitAdapter.adapt(entity));
}
return Optional.empty();
}
@Override
public Optional<Player> getPlayer() {
if(delegate instanceof org.bukkit.entity.Player player) {
return Optional.of(BukkitAdapter.adapt(player));
}
return Optional.empty();
}
@Override
public org.bukkit.command.CommandSender getHandle() {
return delegate;
}
}

View File

@@ -0,0 +1,46 @@
package com.dfsek.terra.bukkit;
import com.dfsek.terra.api.command.CommandSender;
import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import org.bukkit.ChatColor;
import java.util.Optional;
public class CloudCommandSender implements CommandSender {
private final CommandSourceStack delegate;
public CloudCommandSender(CommandSourceStack delegate) {
this.delegate = delegate;
}
@Override
public void sendMessage(String message) {
delegate.getSender().sendMessage(ChatColor.translateAlternateColorCodes('&', message));
}
@Override
public Optional<Entity> getEntity() {
if(delegate instanceof org.bukkit.entity.Entity entity) {
return Optional.of(BukkitAdapter.adapt(entity));
}
return Optional.empty();
}
@Override
public Optional<Player> getPlayer() {
if(delegate instanceof org.bukkit.entity.Player player) {
return Optional.of(BukkitAdapter.adapt(player));
}
return Optional.empty();
}
@Override
public CommandSourceStack getHandle() {
return delegate;
}
}

View File

@@ -23,10 +23,8 @@ import org.bukkit.Bukkit;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin;
import org.incendo.cloud.SenderMapper;
import org.incendo.cloud.brigadier.CloudBrigadierManager;
import org.incendo.cloud.bukkit.CloudBukkitCapabilities;
import org.incendo.cloud.execution.ExecutionCoordinator;
import org.incendo.cloud.paper.LegacyPaperCommandManager;
import org.incendo.cloud.paper.PaperCommandManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
@@ -73,7 +71,7 @@ public class TerraBukkitPlugin extends JavaPlugin {
platform.getEventManager().callEvent(new PlatformInitializationEvent());
try {
LegacyPaperCommandManager<CommandSender> commandManager = getCommandSenderPaperCommandManager();
PaperCommandManager<CommandSender> commandManager = getCommandSenderPaperCommandManager();
platform.getEventManager().callEvent(new CommandRegistrationEvent(commandManager));
@@ -93,25 +91,15 @@ public class TerraBukkitPlugin extends JavaPlugin {
}
@NotNull
private LegacyPaperCommandManager<CommandSender> getCommandSenderPaperCommandManager() throws Exception {
// TODO: Update to PaperCommandManager
LegacyPaperCommandManager<CommandSender> commandManager = new LegacyPaperCommandManager<>(
this,
ExecutionCoordinator.simpleCoordinator(),
SenderMapper.create(
private PaperCommandManager<CommandSender> getCommandSenderPaperCommandManager() throws Exception {
PaperCommandManager<CommandSender> commandManager = PaperCommandManager.builder(SenderMapper.create(
BukkitAdapter::adapt,
BukkitAdapter::adapt
));
))
.executionCoordinator(ExecutionCoordinator.simpleCoordinator())
.buildOnEnable(this);
if(commandManager.hasCapability(CloudBukkitCapabilities.NATIVE_BRIGADIER)) {
commandManager.registerBrigadier();
final CloudBrigadierManager<?, ?> brigManager = commandManager.brigadierManager();
if(brigManager != null) {
brigManager.setNativeNumberSuggestions(false);
}
} else if(commandManager.hasCapability(CloudBukkitCapabilities.ASYNCHRONOUS_COMPLETION)) {
commandManager.registerAsynchronousCompletions();
}
commandManager.brigadierManager().setNativeNumberSuggestions(false);
return commandManager;
}

View File

@@ -46,12 +46,7 @@ public interface Initializer {
private static PlatformImpl constructPlatform(TerraBukkitPlugin plugin) {
try {
String packageVersion = NMS;
if (NMS.equals("v1_21_5") || NMS.equals("v1_21_6") || NMS.equals("v1_21_7")) {
packageVersion = "v1_21_8";
}
Class<?> platformClass = Class.forName(TERRA_PACKAGE + "." + packageVersion + ".NMSPlatform");
Class<?> platformClass = Class.forName(TERRA_PACKAGE + "." + NMS + ".NMSPlatform");
try {
return (PlatformImpl) platformClass
.getConstructor(TerraBukkitPlugin.class)

View File

@@ -18,6 +18,9 @@
package com.dfsek.terra.bukkit.world;
import com.dfsek.terra.bukkit.CloudCommandSender;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@@ -38,7 +41,6 @@ import com.dfsek.terra.api.util.vector.Vector3;
import com.dfsek.terra.api.world.ServerWorld;
import com.dfsek.terra.api.world.chunk.Chunk;
import com.dfsek.terra.api.world.info.WorldProperties;
import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.BukkitEntity;
import com.dfsek.terra.bukkit.BukkitPlayer;
import com.dfsek.terra.bukkit.world.block.BukkitBlockTypeAndItem;
@@ -157,16 +159,16 @@ public final class BukkitAdapter {
return Vector3.of(vector.getX(), vector.getY(), vector.getZ());
}
public static CommandSender adapt(org.bukkit.command.CommandSender sender) {
return new BukkitCommandSender(sender);
public static CommandSender adapt(CommandSourceStack sender) {
return new CloudCommandSender(sender);
}
public static Entity adapt(org.bukkit.entity.Entity entity) {
return new BukkitEntity(entity);
}
public static org.bukkit.command.CommandSender adapt(CommandSender sender) {
return ((BukkitCommandSender) sender).getHandle();
public static CommandSourceStack adapt(CommandSender sender) {
return ((CloudCommandSender) sender).getHandle();
}
public static ServerWorld adapt(org.bukkit.World world) {

View File

@@ -1,6 +1,6 @@
package com.dfsek.terra.bukkit.nms.v1_21_8;
package com.dfsek.terra.bukkit.nms.v1_21_9;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.VanillaBiomeProperties;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties;
import com.dfsek.terra.bukkit.world.BukkitBiomeInfo;

View File

@@ -1,11 +1,11 @@
package com.dfsek.terra.bukkit.nms.v1_21_8;
package com.dfsek.terra.bukkit.nms.v1_21_9;
import com.dfsek.terra.api.event.events.config.ConfigurationLoadEvent;
import com.dfsek.terra.api.event.functional.FunctionalEventHandler;
import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.bukkit.BukkitAddon;
import com.dfsek.terra.bukkit.PlatformImpl;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.VanillaBiomeProperties;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties;
public class NMSAddon extends BukkitAddon {

View File

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

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8;
package com.dfsek.terra.bukkit.nms.v1_21_9;
import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
@@ -12,7 +12,7 @@ import java.util.Objects;
import java.util.Optional;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.VanillaBiomeProperties;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.VanillaBiomeProperties;
public class NMSBiomeInjector {

View File

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

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8;
package com.dfsek.terra.bukkit.nms.v1_21_9;
import com.mojang.serialization.MapCodec;
import net.minecraft.core.BlockPos;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8;
package com.dfsek.terra.bukkit.nms.v1_21_9;
import net.minecraft.server.level.ChunkMap;
import net.minecraft.server.level.ServerLevel;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8;
package com.dfsek.terra.bukkit.nms.v1_21_9;
import com.dfsek.tectonic.api.TypeRegistry;
@@ -12,22 +12,22 @@ import com.dfsek.terra.api.world.biome.PlatformBiome;
import com.dfsek.terra.bukkit.PlatformImpl;
import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.BiomeAdditionsSoundTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.BiomeMoodSoundTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.BiomeParticleConfigTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.EntityTypeTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeAdditionsSoundTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeMoodSoundTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.BiomeParticleConfigTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.EntityTypeTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.MusicSoundTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.MusicSoundTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.SoundEventTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.SoundEventTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnCostConfig;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnCostConfig;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnEntryConfig;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnSettingsTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.SpawnTypeConfig;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnEntryConfig;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnSettingsTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.SpawnTypeConfig;
import com.dfsek.terra.bukkit.nms.v1_21_8.config.VillagerTypeTemplate;
import com.dfsek.terra.bukkit.nms.v1_21_9.config.VillagerTypeTemplate;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.Music;

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.ConfigTemplate;
import com.dfsek.tectonic.api.config.template.annotations.Default;

View File

@@ -1,4 +1,4 @@
package com.dfsek.terra.bukkit.nms.v1_21_8.config;
package com.dfsek.terra.bukkit.nms.v1_21_9.config;
import com.dfsek.tectonic.api.config.template.annotations.Default;
import com.dfsek.tectonic.api.config.template.annotations.Value;

View File

@@ -35,7 +35,7 @@
"depends": {
"fabricloader": ">=0.16.10",
"java": ">=21",
"minecraft": "1.21.8",
"minecraft": "1.21.9",
"fabric": "*"
}
}

View File

@@ -7,6 +7,7 @@ import ca.solostudios.strata.version.Version;
import com.dfsek.terra.api.util.reflection.ReflectionUtil;
import net.minecraft.MinecraftVersion;
import net.minecraft.SharedConstants;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKeys;
@@ -107,7 +108,7 @@ public abstract class LifecyclePlatform extends ModPlatform {
super.platformAddon().forEach(addons::add);
String mcVersion = MinecraftVersion.CURRENT.name();
String mcVersion = SharedConstants.getGameVersion().name();
try {
addons.add(new EphemeralAddon(Versions.parseVersion(mcVersion), "minecraft"));
} catch(ParseException e) {

View File

@@ -1,14 +1,11 @@
package com.dfsek.terra.lifecycle.mixin.lifecycle;
import com.dfsek.terra.mod.CommonPlatform;
import com.dfsek.terra.mod.ModPlatform;
import com.mojang.datafixers.DataFixer;
import net.minecraft.resource.ResourcePackManager;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.SaveLoader;
import net.minecraft.server.WorldGenerationProgressListenerFactory;
import net.minecraft.util.ApiServices;
import net.minecraft.world.chunk.ChunkLoadProgress;
import net.minecraft.world.level.storage.LevelStorage;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@@ -25,11 +22,11 @@ public class MinecraftServerMixin {
@Inject(method = "<init>(Ljava/lang/Thread;Lnet/minecraft/world/level/storage/LevelStorage$Session;" +
"Lnet/minecraft/resource/ResourcePackManager;Lnet/minecraft/server/SaveLoader;Ljava/net/Proxy;" +
"Lcom/mojang/datafixers/DataFixer;Lnet/minecraft/util/ApiServices;" +
"Lnet/minecraft/server/WorldGenerationProgressListenerFactory;)V",
"Lnet/minecraft/world/chunk/ChunkLoadProgress;)V",
at = @At("RETURN"))
private void injectConstructor(Thread serverThread, LevelStorage.Session session, ResourcePackManager dataPackManager,
SaveLoader saveLoader, Proxy proxy, DataFixer dataFixer, ApiServices apiServices,
WorldGenerationProgressListenerFactory worldGenerationProgressListenerFactory, CallbackInfo ci) {
ChunkLoadProgress chunkLoadProgress, CallbackInfo ci) {
LifecyclePlatform.setServer((MinecraftServer) (Object) this);
}
}