Folia icon indicating copy to clipboard operation
Folia copied to clipboard

Unusable datapacks

Open Lythrilla opened this issue 2 years ago • 7 comments

Expected behavior

7LOG_SRGY4C9TFI$1AI5HG3

Observed/Actual behavior

%IC)J97A2KH 5488XI IQRW

Steps/models to reproduce

I am using translation software, so what I said may be incorrect. I apologize I added several datapacks of vanilla that can be used normally under paper, but there are several issues with function under folia

Plugin and Datapack List

I found that the “/datapack list” command cannot be used

Folia version

[20:45:00 INFO]: This server is running Folia version git-Folia-"ed7a5c5" (MC: 1.19.4) (Implementing API version 1.19.4-R0.1-SNAPSHOT) (Git: ed7a5c5) You are running the latest version Previous version: git-Purpur-1947 (MC: 1.19.4)

Other

In addition, I found that the “/datapack list” command cannot be used

Lythrilla avatar Mar 31 '23 12:03 Lythrilla

Several commands are currently disabled as they need to be updated to support what folia does

On Fri, 31 Mar 2023, 13:56 可爱的皮卡丘, @.***> wrote:

Expected behavior

[image: 7LOG_SRGY4C9TFI$1AI5HG3] https://user-images.githubusercontent.com/61087334/229122295-8934e94d-f3ee-44d7-a1bd-cc71573b972a.png Observed/Actual behavior

[image: %IC)J97A2KH 5488XI IQRW] https://user-images.githubusercontent.com/61087334/229122360-be03b0d8-07ba-4ffc-9e52-aa5b091f07d0.png Steps/models to reproduce

I am using translation software, so what I said may be incorrect. I apologize I added several datapacks of vanilla that can be used normally under paper, but there are several issues with function under folia Plugin and Datapack List

I found that the “/datapack list” command cannot be used Folia version

[20:45:00 INFO]: This server is running Folia version git-Folia-"ed7a5c5" (MC: 1.19.4) (Implementing API version 1.19.4-R0.1-SNAPSHOT) (Git: ed7a5c5 https://github.com/PaperMC/Folia/commit/ed7a5c57f4082107751dd8aad431d45ab5fab1d2 ) You are running the latest version Previous version: git-Purpur-1947 (MC: 1.19.4) Other

In addition, I found that the “/datapack list” command cannot be used

— Reply to this email directly, view it on GitHub https://github.com/PaperMC/Folia/issues/20, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJMAZGGSEZMTK34RBIHJQLW63H6DANCNFSM6AAAAAAWOTZQIE . You are receiving this because you are subscribed to this thread.Message ID: @.***>

electronicboy avatar Mar 31 '23 13:03 electronicboy

thanks

Lythrilla avatar Mar 31 '23 13:03 Lythrilla

Unlikely that command functions will ever be fixed. This is because now commands need to schedule onto the owning target's region, whether it be a block, entity, player, or something else. They may not even need to be scheduled at all.

This results in undefined completion order of the commands, which while some command functions may be able to tolerate, some may not be able to. There is no solution to this issue that I can see.

Spottedleaf avatar Apr 01 '23 02:04 Spottedleaf

What if we do something like a command execution stack and only run the next vanilla command after the logic of the previous command is complete?

koteelok avatar Jul 14 '23 04:07 koteelok

Because vanilla commands expect to be run within a global context, not a limited one delaying execution of stuff would break behavior as now you'd have commands running across various ticks; teleport entity to Y, set flag on entity, etc, etc, would be spread across ticks and cause many dozens of issues.

Command functions are also generally replacable using plugins which offers a much more performant solution and allows them to deal with those issues on their own, as they won't need to delay execution in an uncontrolled manner

electronicboy avatar Jul 14 '23 11:07 electronicboy

I think you could have a synchronous context running for datapacks that's running on a single thread - while you can't really implement multithreading here, most servers that would use Folia for big server networks won't even use datapacks, while people who just want to get the most bang out of their server would still have compatibility with VanillaTweaks and whatever else they need to run. It's a bit complicated to act on things that are on different threads, you'd need some kind of localized system that lets specifically datapacks/vanilla minecraft commands access them

The intent would be to provide compatibility with pre-existing vanilla things while giving the ability to expand beyond that for servers that need more power.

It's something that needs to be thought out well, I think if you want for average people to use this just like paper, you need that sort of compatibility there. While plugins could replicate these functions, not everyone's up to replicating all of these with plugins.

If I have enough time on my hands, I might look into implementing datapack functionality into Folia, and maybe making a PR if it works out.

TheRedXD avatar Sep 24 '23 15:09 TheRedXD

except now you'd need to have a tick thread which locks each region from ticking so that it itself can tick once per tick in a global state for the world, which would break the whole "you can have a region tanking performance without killing the entire server" 'feature'

I don't think that that would really be something that would be deemed acceptable to the project

electronicboy avatar Sep 24 '23 15:09 electronicboy