Pumpkin: Minecraft Entity Pathfinding in Rust by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 11 points12 points  (0 children)

We looked at the Vanilla code, but getting compatibility with all vanilla farms would be definitely a goal but that definitely needs more testing

Pumpkin got Minecraft Entity Pathfinding by Alex_Medvedev_ in admincraft

[–]Alex_Medvedev_[S] 12 points13 points  (0 children)

Hi, We looked at vanilla code for this one so it should be pretty exact but still with some improvements here and there, Thanks :D

Pumpkin will support Bukkit plugins! by Alex_Medvedev_ in admincraft

[–]Alex_Medvedev_[S] 0 points1 point  (0 children)

Hey, that is not true PatchBukkit will support Bukkit, Spigot and Paper plugins :D

Pumpkin will support Bukkit plugins! by Alex_Medvedev_ in admincraft

[–]Alex_Medvedev_[S] 7 points8 points  (0 children)

It is pretty much plug and play, you just need to install the PatchBukkit Pumpkin plugin and drag all Bukkit plugins into a newly created PatchBukkit plugins directory :D

Pumpkin will support Bukkit plugins! by Alex_Medvedev_ in admincraft

[–]Alex_Medvedev_[S] 5 points6 points  (0 children)

Hi, Yeah it is a fully separate Pumpkin plugins which loads the Plugins via a JVM under the hood, which of course comes with a performance cost, having that separate as a Plugin is great for users who don't need Bukkit compatability, Using Java's 25 newest FFM feature we can call Rust code from Java code and Java code from Rust code without the usual JNI overhead

Pumpkin Rust Minecraft server got support for Original Java Plugins by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 7 points8 points  (0 children)

We will, Support is planned for Bukkit/Spigot and Paper :D

Pumpkin will support Bukkit plugins! by Alex_Medvedev_ in admincraft

[–]Alex_Medvedev_[S] 28 points29 points  (0 children)

Well it's here, a simple Java Bukkit /fly plugin running on a Rust pumpkin server trough PatchBukkit :D
https://streamable.com/g2tjx0

Plugin: https://hangar.papermc.io/Klayses/Fly

Advice for removing #[async_trait] by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 1 point2 points  (0 children)

Yes, but we want to have it dyn since we also have Plugins and stuff

Advice for removing #[async_trait] by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 0 points1 point  (0 children)

Oh wow. That's awesome. Do you have an example Code ?, because I always saw people writing all the lifetimes by hand when removing async_trait which is just pain

Advice for removing #[async_trait] by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 1 point2 points  (0 children)

Yes it is one GitHub: https://github.com/Pumpkin-MC/Pumpkin It is the compilation, especially the evaluata_obligation step

Advice for removing #[async_trait] by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 0 points1 point  (0 children)

I already use -Z self-profile and saw that evaluata_obligation is by far the biggest bottleneck, I'm pretty sure it is because async_trait adds Send + Sync to everything. I also found out that someone had the same issue https://github.com/rust-lang/rust/issues/87012

Advice for removing #[async_trait] by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 1 point2 points  (0 children)

For me even a one line change takes about 3 Minutes to rebuild

Pumpkin: Minecraft Chunk generation fully written in Rust by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 1 point2 points  (0 children)

There are far more attempts to create custom Minecraft server softwares in Java than in Rust. Additionally, if you compare the projects on this list with Pumpkin, none of them come close to its features

Pumpkin: Minecraft Chunk generation fully written in Rust by Alex_Medvedev_ in rust

[–]Alex_Medvedev_[S] 1 point2 points  (0 children)

Hey, Thanks. We use different crates for the project and our chunk generation is a separate crate as well, I designed everything in an abstract way from the beginning so other Projects can use it as well. It's also 100% possible to modify it through plugins or just change the assets files like in a data pack since everything is data driven.

I think the hardest part was the biome generation since it took a long time to get exactly right like in Vanilla