diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index c2520f8e1..adbf3432f 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -23,7 +23,7 @@ dependencies { // NMS compileOnly("net.momirealms:craft-engine-nms-helper:${rootProject.properties["nms_helper_version"]}") // Platform - compileOnly("dev.folia:folia-api:${rootProject.properties["paper_version"]}-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:${rootProject.properties["paper_version"]}-R0.1-SNAPSHOT") // OpenGL Math compileOnly("org.joml:joml:${rootProject.properties["joml_version"]}") // Gson diff --git a/bukkit/compatibility/build.gradle.kts b/bukkit/compatibility/build.gradle.kts index 8a7807cc9..0165818bd 100644 --- a/bukkit/compatibility/build.gradle.kts +++ b/bukkit/compatibility/build.gradle.kts @@ -15,7 +15,7 @@ dependencies { compileOnly(project(":core")) compileOnly("net.momirealms:sparrow-nbt:${rootProject.properties["sparrow_nbt_version"]}") // Platform - compileOnly("dev.folia:folia-api:${rootProject.properties["paper_version"]}-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:${rootProject.properties["paper_version"]}-R0.1-SNAPSHOT") // NeigeItems compileOnly("pers.neige.neigeitems:NeigeItems:1.21.42") // Placeholder diff --git a/bukkit/legacy/build.gradle.kts b/bukkit/legacy/build.gradle.kts index 4d8b59eca..ae80f6f46 100644 --- a/bukkit/legacy/build.gradle.kts +++ b/bukkit/legacy/build.gradle.kts @@ -9,7 +9,7 @@ repositories { dependencies { // Platform - compileOnly("dev.folia:folia-api:1.20.1-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT") } java { diff --git a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyEntityUtils.java b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyEntityUtils.java new file mode 100644 index 000000000..35a23f0ad --- /dev/null +++ b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyEntityUtils.java @@ -0,0 +1,16 @@ +package net.momirealms.craftengine.bukkit.util; + +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.event.entity.CreatureSpawnEvent; + +import java.util.function.Consumer; + +public class LegacyEntityUtils { + + public static Entity spawnEntity(World world, Location loc, EntityType type, Consumer function) { + return world.spawnEntity(loc, type, CreatureSpawnEvent.SpawnReason.CUSTOM, function::accept); + } +} diff --git a/bukkit/loader/build.gradle.kts b/bukkit/loader/build.gradle.kts index 7f2a8a975..49c1cecf5 100644 --- a/bukkit/loader/build.gradle.kts +++ b/bukkit/loader/build.gradle.kts @@ -12,7 +12,7 @@ repositories { dependencies { // Platform - compileOnly("dev.folia:folia-api:${rootProject.properties["paper_version"]}-R0.1-SNAPSHOT") + compileOnly("io.papermc.paper:paper-api:${rootProject.properties["paper_version"]}-R0.1-SNAPSHOT") implementation(project(":shared")) implementation(project(":core")) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java index c2636d665..ea666d381 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java @@ -92,8 +92,15 @@ public class BukkitServerPlayer extends Player { } public void setPlayer(org.bukkit.entity.Player player) { - playerRef = new WeakReference<>(player); - serverPlayerRef = new WeakReference<>(FastNMS.INSTANCE.method$CraftPlayer$getHandle(player)); + this.playerRef = new WeakReference<>(player); + this.serverPlayerRef = new WeakReference<>(FastNMS.INSTANCE.method$CraftPlayer$getHandle(player)); + if (Reflections.method$CraftPlayer$setSimplifyContainerDesyncCheck != null) { + try { + Reflections.method$CraftPlayer$setSimplifyContainerDesyncCheck.invoke(player, true); + } catch (Exception e) { + this.plugin.logger().warn("Failed to setSimplifyContainerDesyncCheck", e); + } + } } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java index c5fe84760..89f66906d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/EntityUtils.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.bukkit.util; import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.BlockPos; import org.bukkit.Location; import org.bukkit.World; @@ -9,6 +10,8 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.entity.CreatureSpawnEvent; +import java.util.function.Consumer; + public class EntityUtils { private EntityUtils() {} @@ -23,12 +26,11 @@ public class EntityUtils { } } - @SuppressWarnings("deprecation") - public static Entity spawnEntity(World world, Location loc, EntityType type, org.bukkit.util.Consumer function) { - try { - return (Entity) Reflections.method$World$spawnEntity.invoke(world, loc, type, CreatureSpawnEvent.SpawnReason.CUSTOM, function); - } catch (ReflectiveOperationException e) { - throw new RuntimeException("Failed to spawn entity", e); + public static Entity spawnEntity(World world, Location loc, EntityType type, Consumer function) { + if (VersionHelper.isVersionNewerThan1_20_2()) { + return world.spawnEntity(loc, type, CreatureSpawnEvent.SpawnReason.CUSTOM, function); + } else { + return LegacyEntityUtils.spawnEntity(world, loc, type, function); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java index f4c7903a9..1769f1d3c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java @@ -4000,12 +4000,12 @@ public class Reflections { ) ); - @SuppressWarnings("deprecation") - public static final Method method$World$spawnEntity = requireNonNull( - VersionHelper.isVersionNewerThan1_20_2() ? - ReflectionUtils.getMethod(World.class, Entity.class, Location.class, EntityType.class, CreatureSpawnEvent.SpawnReason.class, Consumer.class) : - ReflectionUtils.getMethod(World.class, Entity.class, Location.class, EntityType.class, CreatureSpawnEvent.SpawnReason.class, org.bukkit.util.Consumer.class) - ); +// @SuppressWarnings("deprecation") +// public static final Method method$World$spawnEntity = requireNonNull( +// VersionHelper.isVersionNewerThan1_20_2() ? +// ReflectionUtils.getMethod(World.class, Entity.class, Location.class, EntityType.class, CreatureSpawnEvent.SpawnReason.class, Consumer.class) : +// ReflectionUtils.getMethod(World.class, Entity.class, Location.class, EntityType.class, CreatureSpawnEvent.SpawnReason.class, org.bukkit.util.Consumer.class) +// ); // 1.21.4+ public static final Class clazz$ServerboundPickItemFromEntityPacket = @@ -6444,4 +6444,9 @@ public class Reflections { BukkitReflectionUtils.assembleMCClass("network.protocol.game.PacketPlayOutScoreboardScore") ) ); + + public static final Method method$CraftPlayer$setSimplifyContainerDesyncCheck = + ReflectionUtils.getMethod( + clazz$CraftPlayer, new String[]{"setSimplifyContainerDesyncCheck"}, boolean.class + ); } diff --git a/gradle.properties b/gradle.properties index 56793b92e..fc8249bc9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,13 +7,13 @@ config_version=26 lang_version=4 project_group=net.momirealms latest_supported_version=1.21.5 -latest_minecraft_version=1.21.4 +latest_minecraft_version=1.21.5 # Supported languages supported_languages=en,zh_cn,zh_tw,es # Dependency settings -paper_version=1.21.4 +paper_version=1.21.5 jetbrains_annotations_version=26.0.2 slf4j_version=2.0.17 log4j_version=2.24.3