#build-tooling-help
1 messages · Page 23 of 1
Trying to update my paperweight version and I keep getting this error in gradle
Expected configuration ':paperweightDevelopmentBundle' to contain exactly one file, however, it contains more than one file.
Can send my full build.gradle if needed
is there a guide anywhere on how to migrate a fork buildscript to the new 2.0 version?
well you have the example repo
use that
@naive cedar
well it shows the new layout
so you can migrate
look at the commit history if you need to there its shown how the build script changed
how is this a paper fork
OH A FORK i read as plugin lmao
then look at paperweight examples
repo
on github
same thing
i did check it out, yeah, problem is that i'm trying to fork folia ("fork of a fork") rather than base paper
this was relatively easy in the older version, here it seems to be quite a bit more involved and honestly i've made it this far off of educated guesses
there is a fork of a fork branch afaik
look at it
missed that, thanks
So are forks on their own when it comes to migrating to the new patch structure etc? Does anyone have any advice, i’m terrible at this
generally yes
hey, when using paperweight we like to pin it to a specific version rather than using -SNAPSHOT which can change over time
however, this has been causing issues for us because the paper repos don't seem to retain snapshots indefinitely, so eventually that means that old commits (or even the latat commit if it hasn't been updated recently) can't be built, which is a serious issue for us
is there any way the retention could be changed for the papermc repos to keep snapshots indefinitely?
here is one such issue, however we've had it happen multiple times:
Tried with Java 21 and 24... Commands git init git pull https://github.com/PolyhedralDev/Terra bash gradlew build
not sure what channel that belongs in but it's not this one
it's related to build tooling so I went with here bc I wasn't sure where else
#paper-dev would be my next choice, but it feels even less relevant?
Ok thanks it seems difficult
youll get used to it its only hard at the beginning
and when you get past that its a lot easier than before

i can give you some advice
that you can try splitting your patches one by one into two patches one that changes vanilla code, second craftbukkit etc and put the vanilla modifying one in the minecraft-patches/features dir and the other sources to the analogical paper-patches/features
and enable rejects optionally in the build.gradle.kts
theres a chance you wont have to reapply everything manually like this
later you can squish all those “feature” patches into file patches if you so wish
you add something like this
patchFile {
path = "paper-server/build.gradle.kts"
outputFile = file("fork-server/build.gradle.kts")
patchFile = file("fork-server/build.gradle.kts.patch")
rejectsFile = file("fork-server/rejects")
}
to every source set
the rejectsFile property
this is an example how to add it
other than what ive said theres no easier way to migrate nor official docs
the rejects are named (patch).rej and they contain hunks that failed to apply so you can apply those manually
@gentle viper
got kinda lengthy here lol
and you can refer to paper’s contributing guide too it also has some useful info you can easily adapt to forks with a bit of knowledge
thanks i'll give it a look
does https://github.com/PaperMC/paperweight-examples/tree/v2-fork need updating? i find that applying patches will fail on server and api build.gradle.kts
perhaps but the code isnt changed for forks
you still use the exact same code as in those patches in your fork
with replacing fork in this code to your fork's name
ofc
look at the 1.21.5 pr
it should work
how do i alter resources? i made a commit in forky-server/src/minecraft/resources but rebuildAllServerPatches doesn't seem to generate anything
is there another task i'm not seeing
you need to modify the file patches commit
uhm, can you elaborate?
probably just another quirk of v2 i don't know anything about
ooh i got it
okay, sure
not a huge fan of this but whatever
what's wrong with normal git patches?
like what prompted the change
we like file patches more for our needs
especially since it allows us to work on stuff concurrently while updating
meh
should be optional i'd say
it makes sense for you, but in a private fork with 1 or 2 guys doing everything feature patches are more organized
You can do that still, just not for resources
i know
would be nice to have for those
on an unrelated note
am i mistaken in assuming that any code that i put under forky-server/src/main/ will be built into the jar and should be reachable from the NMS code?
because it seems to be built into the jar but then at runtime it hits me with a NoClassDef
it should be reachable
thats the whole point
it’s your fork’s own classes
okay well
i guessed as much
it's building them into the jar, but at runtime it NoClassDefFoundError's them
I mean, our tooling is designed for us, idk many platforms that go out of their way to allow forks of their software to have access to our stuff
are you sure you defined those classes correctly like correct package etc
We'd need to see the full log, NoClassDefFoundError can mean many things
yeah i am
i can pull it, give me a min
ive never run into this with my fork ever
well yeah it's weird
those wouldn't build at all though pretty sure
just saying, since that's implemented for the sources i dont see why not make it for the resources as well
They're in seperate folders
i'd PR that to you but i don't really do kotlin
We're also generally more focused on solving our own issues, one of those being "we cannot see the contents of our patches folder on github"
i remember that time where paper had over a thousand patches and you couldn’t see them lol
okay whatever i just did a clean rebuild and this time it worked fine, it was probably a cache problem
okay another question
i know it's not best practice and all, but does paperweight also allow patching of minecraft's libraries (i.e. netty and so on)?
idk if support for forks was implemented but yes
how do you do it? do i use dev-imports.txt or is that fully deprecated now?
yes, you'd use that
what'd be the artifactId for a library
look at the comments for this file in the paper github
i think it was mentioned there at some point
yeah it is
the authlib is an example for a lib
iirc it was in beta 16
or 15
yeah i mean i get that
i was asking how can i guess the artifactId for a library
i've tried those that made sense to no avail so i turned here
where did you check for their presence?
well, my target is netty-transport and i know that one is there
none of netty_transport, netty, netty-transport and nettytransport as artifactId did it
oh it might be just minecraft libraries like authlib etc
it's fine if it's not possible, just wanted to see if it was pointless to waste more time on this
you can always override the class
just place it in my sources and it'll work?
by creating the package and respective class yourself in your fork’s sources dir
i have a question related to reobfPackagesToFix
i noticed that all paper etc packages are added there
should forks also add their packages into that block?
any reason as to why I can't make a JavaDoc but it builds fine?
youre running an old version of java 21
its a known issue with the early builds
update it
np
I just felt it was adjacent enough to build tooling
since it's been a few days, any idea where it would be better to post it, or still not sure?
i doubt it will be changed since they recently opted to use a snapshot of velocity natives in paper because of the exact same issue instead of keeping specific snapshots indefinitely
and if they didnt do that for paper/velo then yea
they prob wont do it
also just imagine the size of the maven repo with paper builds almost daily
it would become unmaintainable
We already have enough storage issues as-is, it's just not maintainable
if you require pinning stuff, I'd suggest using your own repo to mirror
having some trouble using paperweight-userdev
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
update gradle
Use 8.14.1
Hey, after relocating Jetbrains Exposed using ShadowJar the logs are Error type, I really didn't changed the code or anything except relocating it like this:
relocate("org.jetbrains", "me.xii69.org.jetbrains")
i did transform(ServiceFileTransformer::class.java) too
i found the problem, it was because of relocating slf4j
that's probably what I'm going to do, though last time I tried mirroring I ran into some funky issues with reposilite not wanting to fetch the versions iirc (this is an issue with reposilite and not the repo though afaik)
I have a multi-module project and I'm trying to avoid having to copy repositories between modules... I thought I'd use gradle's new(ish) dependencyResolutionManagement in settings.gradle.kts:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
...
maven(url = "https://repo.jeff-media.com/public/") // SpigotUpdateChecker
maven(url = "https://repo.codemc.io/repository/maven-releases/") // PacketEvents
}
}
But paper's userdev seems to be incompatible with it... So I remove the "strict" line
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) // REMOVE THIS
Which skips the error, but unfortunately the repositories block is never set on any project that uses paper's userdev... I'm not sure exactly what is going wrong, but I guess either gradle finds a settings.gradle.kts from the paper userdev, thus ignoring mine? Or maybe userdev is just incompatible with this gradle feature? Any theories would be a major help! Thanks very much.
So here is an example of a module using paper's userdev:
plugins {
`java-library`
id("io.papermc.paperweight.userdev")
}
dependencies {
compileOnly(project(":weaponmechanics-core"))
compileOnly(libs.mechanicsCore)
compileOnly(libs.adventureApi)
compileOnly(libs.foliaScheduler)
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
}
Which will not work, since the repositories for mechanicsCore will not be included... so a fixed version might look like:
plugins {
`java-library`
id("io.papermc.paperweight.userdev")
}
repositories {
maven(url = "url for mechanicsCore")
}
dependencies {
compileOnly(project(":weaponmechanics-core"))
compileOnly(libs.mechanicsCore)
compileOnly(libs.adventureApi)
compileOnly(libs.foliaScheduler)
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
}
Which will fix mechanicsCore not being found... but I'm trying to use gradle's new features specifically to avoid this
check the paperweight issue tracker
Thanks for the tip
honestly, look at using gradle convention plugins
Was previously using a convention plugin but am trying to simplify my project structure
I understand that you are frustrated, but it is not fair to treat people who are trying to help you like this... try invaliding caches and restart
Hi, trying to understand the new paperweight forky server stuff
https://github.com/PaperMC/paperweight-examples
https://github.com/MineInAbyss/Cartridge
We have a fork to just apply some falldamage changes and other misc stuff
Trying to applly upstream changes is tricky though as im not sure what gradle tasks are needed
Is there any documentation anywhere on how this new system works?
As there is about 200 new gradle tasks im a tad lost lol
currently changing gitRef, ./gradlew rebuildLeafSingleFilePatches, ./gradlew applyAllPatches, ./gradlew rebuildAllServerPatches & ./gradlew createMojmapPaperclipJar
am i missing somehting? as it seems to not correctly apply upstream changes
Thanks 
(yes its based on leaf atm just general question how it works)
Hi, I added id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" and paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT") following the docs but I am getting an error: https://pastes.dev/acy33Iu8kN
Umm
yea
also you need jdk 21
update gradle and if it still is broken then send the build scripts
I thought paperweight might fix this issue I had running the plugin but using the -all jar without paperweight and old gradle version works fine now 
I guess I should still update Gradle?
if you plan on using userdev then yea
Well I don't even know if I need it now
you should keep gradle up to date always anyway
./gradlew wrapper --gradle-version 8.14.1
i think you have to run it twice
for it to update both gradle and the wrapper
Umm where do I run it?
yes
do you use the wrapper?
or straight up gradle
if you use gradle without the wrapper then look at gradle’s docs on how to update
do you have a gradlew file in the root of your project?
I have gradle-wrapper.properties
thats in the gradle folder
i mean the root folder
of the project
with the build.gradle etc
No gradlew file
then youre either using gradle in itself or your ide to build
if youre using an IDE to build look at the settings idk
Uh
i cant help u with that
try updating gradle manually by going into the gradle folder and changing the link in the gradle-wrapper.properties to have 8.14.1 instead of 8.8
and running a build after that
is anyone able to assist me with this error when trying to apply all patches command
ive looked everywhere, tried multiple authentications to setup gitbash/github and ive found nothing
I am on a fork of paper, and the repository is private
you need atleast jdk 21
intellijs project setup is jdk 21
for paper
you need to enable long file paths
its in git config right
run git config --global core.longpaths=true
and also you need to tweak something in the registry
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem and change/create a dword value LongPathsEnabled and set it to 1
or just run on wsl its gonna be a lot faster that way
there’s some unsupported maven plugin somewhere
so i have to switch to using gradle?
if you want to use an official solution that is officially supported, yes
actually, I'm curious, how much storage is needed for the repo currently?
bc depending on how much storage is needed, I have a bunch of free storage space on my vps that I'd be willing to donate, idk if that's possible
or maybe if like donating storage directly isn't super feasible there could just be like some automated script that periodically rsyncs any new artifacts over to my server as like a "cold storage" or "archive" type of thing that others could use, idk
or if either of those aren't doable, possibly just donating a monetary amount if it can go to upgrading the storage to allow for storing artifacts for longer possibly indefinitely
(should this conversation maybe move elsewhere?)
It's above a TB iirc
But the storage itself isn't the main issue. The main issue is what it's on an old server and it being so large that moving is infeasible
We proxy a bunch of repos and people use us to grab artifacts from that repo and we store all of that, that def needs to stop. In the future we will only proxy the artifacts we actually use ourselves, the rest will be deleted, that should give us some headroom to look at changing our cleanup policies
yeah I was looking through the repo and it looks like you're just proxying maven central?
bc I even noticed that some of the libraries I've pushed to central are on it lol
for the repos I'm proxying in reposilite, I heavily restrict it to only the relevang group ids, eg. io.papermc for the papermc repo, etc.
Well, it's good practice to do that to reduce the load on central
Federation and stuff
plugins {
id 'java'
id("xyz.jpenilla.run-paper") version "2.3.1"
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17"
}
group = 'de.emn4tor'
version = '1.0.0'
repositories {
mavenCentral()
maven {
name = "papermc-repo"
url = "https://repo.papermc.io/repository/maven-public/"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/groups/public/"
}
maven("https://repo.papermc.io/repository/maven-public/")
}
dependencies {
compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT")
paperweight.paperDevBundle("1.21.5-R0.1-SNAPSHOT")
}
tasks {
runServer {
// Configure the Minecraft version for our task.
// This is the only required configuration besides applying the plugin.
// Your plugin's jar (or shadowJar if present) will be used automatically.
minecraftVersion("1.21")
}
}
def targetJavaVersion = 21
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
options.release.set(targetJavaVersion)
}
}
processResources {
def props = [version: version]
inputs.properties props
filteringCharset 'UTF-8'
filesMatching('plugin.yml') {
expand props
}
}
I just copied from the docs, I know those are for kts
A problem occurred configuring root project 'WorldGen'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not resolve io.papermc.paperweight:paperweight-userdev:2.0.0-beta.17.
Required by:
project : > io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:2.0.0-beta.17
> No matching variant of io.papermc.paperweight:paperweight-userdev:2.0.0-beta.17 was found. The consumer was configured to find a library for use during runtime, compatible with Java 21, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.8' but:
- Variant 'javadocElements' declares a component for use during runtime, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about its target Java version (required compatibility with Java 21)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.8')
- Variant 'shadowRuntimeElements' declares a library for use during runtime, compatible with Java 17, packaged as a jar, and its dependencies repackaged (shadow jar):
- Incompatible because this component declares a component, as well as attribute 'org.gradle.plugin.api-version' with value '8.14' and the consumer needed a component, as well as attribute 'org.gradle.plugin.api-version' with value '8.8'
- Variant 'sourcesElements' declares a component for use during runtime, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about its target Java version (required compatibility with Java 21)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.8')
* Try:
> No matching variant errors are explained in more detail at https://docs.gradle.org/8.8/userguide/variant_model.html#sub:variant-no-match.
> Review the variant matching algorithm at https://docs.gradle.org/8.8/userguide/variant_attributes.html#sec:abm_algorithm.
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
ohh
what gradle version are you using?
Check your gradle/wrapper/gradle-wrapper.properties
update it to 8.14.2
sec
Seems to be working, had papermc repo twice...
thx, gradle version was the problem
@amber gulch Check to make sure you're defining it as 21
in your gradle configuration
Also are you using Gradle 8.14.1
It should be fine?
What's your Gradle version
And it doesn't work?
Good
Remove the API dependancy, the dev bundle contains it
thanks
?
Can you explain what sort of issue, question, or help you need? A config pasted into a channel doesn't offer a lot of context.
Oh I was asked to post my build script here
My question is in #paper-dev
Maybe link to your question and/or re-ask it here?
is that the whole build script? it should work fine then
actually, 1.21.4 unbreakable was valued and had a factory method, it became non-valued in .5
Yes I think thats the whole build script?
So how do I use it?
static method in Unbreakable interface
does anyone have any examples of making a general rebuild task for a fork?
like creating a task that runs all the rebuild tasks in the root build file
i tried one but it complained bout some provided things missing
i dont remember what it complained about but something that should had been already set up by applying patches
the tasks ordering could be more defined in paperweight as not to cause issues like this and other but ik its not a priority or anything
its not really possible, thats why paperweight doesnt provide it
whats wrong with just doing changes and then rebuilding depending on where you did changes?
sometimes i just want to rebuild all patches in my upstream script and not input two diff tasks or more if i seperate things out like during mc updates
are there any obvious or potential problems from ticking entities before running block events and ticking block entities?
Guys I have dev bundle error
The paperweight development bundle you are attempting to use is of data version '7', but the currently running version of paperweight only supports data versions '[2, 3, 4, 5, 6]'.
Can I link directly the github repo? Plugin is not mine
follow the steps
update paperweight and it will work
you’re outdated
Okay but why for me not work and for original dev yes 😅
Because they've got an older version of the userdev bundle
well a new dev bundle main version 7 has been released recently so if youre forking a project then thats why
you're building now and it's fetching the latest bundle for that version
you'll need to update PW
I see on github that the v7 is the beta 17 right?
Im thinking we could add a note to the error message saying “Ensure you are running the latest version of the paperweight-userdev plugin”
17 works for v7 bundles, yes
I mean, the error is pretty clear in what it's saying
perhaps not since with every dev bundle version bump this channel gets flooded
I use beta 11
with why my plugin doesnt work
I mean, I'm not sure adding a "make sure you're on the latest version" will enchance the outcome of missing the basic logical deduction that is expressed within that message
it should help atleast
for some people
but more so there could be an additional module like loom or whatever they changed to now, with the gradle/java errors
cuz the output can get confusing if you have gradle 8.2 for eg
and it fails to apply pw
Another questions related that, the plugin have nms and module for each version.
v7 is good for all versions 1.17 to 1.21.x ?
that's the version of the packaging of the dev bundle
Ah okk
we have not gone back to update the dev bundles to v7
Now I am afk. Then I send you the error that appear when I change to beta 17
is there a way to automatically merge in the single file patches? (e.g. when paper changes the build.gradle.kts) All my other patches apply perfectly or allow me to handle the merge with git.
The way I currently do it is to manually copy over changes from the patch file. Is there a better way?
do you mean creating a patch file for the build files?
or applying them when there are conflicts
that
to create use ./gradlew rebuildPaperSingleFilePatches (replace paper with your upstream)
to apply fuzzily use ./gradlew applyPaperSingleFilePatchesFuzzy
and then rebuild
with the first command
you can also add the Fuzzy suffix to minecraft source patches applying task on a note and you can modify the fuzz factor too
the fuzzy command worked. Did not know that existed
thank you
Would the paperweight team be open to implementing a plugin bootstrap like loom had?
for better outputs when there is outdated gradle/java
instead of the mess saying 8.13 then 8.2 etc
i can pr something like that if so
no
thanks, now seems work
I have a multi-module gradle project which I'm trying to migrate from groovy to kotlin script. I got an issue tough that in one submodule I can't semm to be able to load the "common" submodule:
apply(from = rootProject.file("common/build.gradle.kts")
Because I'm using configurations and stuff which are in the subprojects of the main script but as I'm shading and relocating stuff in the common module, which I can't access without the apply part idk what to do other and just load it in myself and not have it be in the common module which seams unreasonable.
Also I'm using gradle.properties files for version stuff which I can't access in the plugins section of the build scripts anymore? And now need to load them in the settings file of the root project? Which also seemed weird but I'm too unfamiliar with gradle to get it to work like I want.
-# I also tried asking o4-mini and gemini-2.5-flash but they are mostly incompetent.
your groovy scripts worked originally?
send the script where you were doing the apply thing
yea, but iirc because of the appy from file I had problems with downloading jd and stuff
so you had some .gradle file that you applied in multiple projects, but wasn't for a project itself?
it was, the common module and I loaded it in because the shaded libs (inside the common module) wheren't accessible without it or smth.
so you were applying the common module's build script to other projects as well?
usually you use dependencies to have projects depend on each other
exactly
I have/had
dependencies {
shadow(project(":common"))
}
but seemingly it wasn't enough, as I can't use the libs shaded in the common module
no
thats not the correct use of the shadow configuration unless you are overriding the behavior of shadowJar
shadow will include the runtime classpath by default, things on shadow will not be included
not sure what you mean, I have this though?
tasks.named<ShadowJar>("shadowJar") {
configurations = listOf(project.configurations.getByName("shadow"))
}
I tried/thought I could make the configuration so it would just be included, what do you mean by
shadow will include the runtime classpath by default
?
ah, I'm dumb idk why I did that with groovy then I did it there too
I have a main/root script with a subprojects section where I define compileTime stuff and the shadow, manifest stuff etc.
and then a common module which is supposed to be included in the two other sub modules wiht it's shaded libs.
for plugins the easiest thing is just put things you want shaded on implementation (including your common project in this case) and things you don't want shaded on compileOnly
and then you don't need to change configurations for shadowjar, just configure the relocations
and then in the common module, use implementation for a lib to be shaded but not on subprojects compile classpath, api for it to be shaded and on the subprojects compile classpath, or compileOnlyApi to put it on subprojects compile classpath but not shaded
(again shadowjar just shades the runtimeclasspath by default, so this strategy is just using that fact to minimize extra configuration like includes and excludes)
ah, although I don't seem to have an api configuration available?
apply java-library instead of java
seems to work now, thank you very much!
should I also migrate the .properties files to the lib tompl files in .gradle because that seems to be the norm now or what is with that?
https://docs.gradle.org/current/userguide/version_catalogs.html yeah that's the standard now if you want to have a centralized dependency manifest
it has better compatibility with external tools as well in my experience
(like, iirc renovate can handle versions in .properties, but dependabot can't, they can both handle the toml though)
will keep that in mind, thank you again!
how can I get something I can include for plugins, i.e. either a jar with all the classes, for the dev/1.21.6-dialog branch?
if you have git downloaded on your computer you can just clone papermc on github and then select the dialog branch and compile it using the gradle file
When I uncomment lines 13 and 14 from my build.gradle reloading/syncing fails with this error: Unable to resolve a dev bundle, which is required for paperweight to function. Add a dev bundle to the 'paperweightDevelopmentBundle' configuration (the dependencies.paperweight extension can help with this), and ensure there is a repository to resolve it from (the Paper repository is used by default). I wanted to add FastAsyncWorldEdit as a dependency, but adding this mavenrepository without changingdependencies causes the error too, I am unsure what went wrong
TL;DR: adding maven("https://repo.papermc.io/repository/maven-public/") to repositories {} in build.gradle causes the error, but without that line building works just fine I'm confused by this
that's how i can run the server but how do i get the nms and paper internal classes, since the API isn't updated there yet
That’s what I did and you just find the paper-api.jar file once it builds and that is used for the internal classes
huh that has internals? i thought that's just the API
ah I've been dumb yesterday.. I def didn't build the wrong branch, thought I switched it... welp
anyways, how can I make my path shorter...
error: unable to create file data/minecraft/advancement/recipes/building_blocks/waxed_oxidized_cut_copper_stairs_from_waxed_oxidized_cut_copper_stonecutting.json: Filename too long
https://bin.bloom.host/cenevekupo
I already cloned it to the root of my drive and named it p instead of paper qwq
enable long paths in git
huh thats a thing? interesting
I think I'm going crazy I can't find a jar that is just all the server code + apis qwq
We don't have a combined jar
why can't we build that?
Because we have no reason for one and so don't care to package one
you'd need to publish a dev bundle if you want easy access
ah how will I access it after I publish it?
also whats the task called? I cant seem to find it?
ah generateDevelopmentBundle?
hmm I have the zip file but what now
I said publish, ./gradlew publishToMavenLocal -PpublishDevBundle
bump, anyone please
this is frustrating and I don't see what i'm doing wrong 😦
afaik you cant specify custom repos
with pw
sadly
its a known issue on the issue tracker
If you dont use nms simply compile against paper-api
and dont use the userdef plugin
userdev*
and then you can add whatever dependency and repo you want
I mean, paperweight always injects that thing, so it makes 0 sense that adding it would break the build
probably want to see the full output from gradle
is this it? doesn't look that helpful to me
Could not find method maven()
no, this is not what the issue you are referring to is about
where is that even mentioned in the docs 😫
that is specifically about centralized repo declaration in the settings file
yeah... i should have used maven { url = "https://repo.papermc.io/repository/maven-public/" } instead of maven(), weird bug but whatever
hello, tried setting up paperweight in my project, attempted to follow the tutorial on the website, and copied the template from the example repo but still getting this error: https://pastes.dev/thZRjdQDRd
Update gradle
okay i believe i found a bug with paperweight. it's not exactly a major issue, it's such an edge case, but it's your call whether this is worth fixing
i haven't really investigated it in depth
here is how to trigger it:
- i have a "submodule" folder in my project root. in here, i keep a git submodule with a dependency i want to have.
- i symlinked submodule/mySubmodule/src/main/java/dev into forky-server/src/main/java/dev. the idea is to get all that built into the jar without having to package a proper dependency.
- all of this happens into a branch separate from main.
then, and only then, i get Out Of Memory: Java heap during the compileJava step when i call one of the create*BundlerJar or create*PaperclipJar
same exact source setup merged into the master branch worked
i have no idea why or how
Current Behavior When you run the compileJava task with forking enabled the project sometimes runs out of heap memory https://pastes.dev/BlJgtmJ3Ew ^ example stacktrace Expected Behavior The build ...
its a bug with gradle
that triggers randomly
the out of heap
idk if randomly
i consistently get it with this setup
and i consistently don't get it without it
well there are some reproduction steps, try increasing the java fork heap in the server build.gradle.kts
whatever, i got it to work anyway
you can also get it on the main branch by ctrl + c in the middle of build and then running build again
did that before and it worked fine
i figured i'd let you know anyway, but i it's a gradle bug then whatever
it's worth noting though that updating to 8.14.2 did not fix it despite what this title says
yea it has to be updated
I mean, then you'd need to look into memory dumps
Unless you have a public repo that we can test, there is 0 chance anybody is going to look into it
it's okay, i got it to work
(and, even then, it would just be on the long backburner of stuff)
it just seemed like a weird thing to fail on, paperweight seemed the likely culprit
but if it's a gradle bug it's not your problem
Hello, I saw the latest announcement and I can no longer build my project because the dependencies cannot be found, do you have a solution?
None of those are paper dependencies, you shouldn't be fetching them from our repo in the first place
gradle (rightfully) fails if you get unexpected http codes from earlier repos
Cannot add task 'applyUpstream' as a task with that name already exists.
hmm anyidea to set name on task?
try to apply paperweight in the root build file with apply false and then in the module build files instead of pasting in the version etc just do id(“io.papermc.paperweight.userdev”)
and it should work
Hey everyone. I currently have a mincraft plugin project that is configured with maven. Which steps should I take to properly configure paperweight-userdev? I've been trying a couple of things for a while now, but I'm struggling to set it up.
I would generally suggest by copying everything from the appropriate test-plugin branch except for the java code obviously
and then making changes testing along the way, so you know why something breaks if it does
Hello there,
Can't figure out if I can put a purpur dependency as a development bundle, and how exactly? What should I do if I want to use purpur API + userdev?
ask purpur
Execution failed for task ':bukkit:reobfJar'.
> Failed to calculate the value of task ':bukkit:reobfJar' property 'mappingsFile'.
> The current dev bundle does not provide reobf mappings.
no reobf mappings in 1.21.6?
why would you want to reobf on modern versions anyways
(but, spigot released after paper, so naturally there is nothing to reobf to in initial builds)
I don't know if this is a Paperweight issue or a setup issue with my project for 1.21.6, but when I try to use the Mojang mappings in each location, it still uses the reobfJar task and throws the same error that @craggy storm already posted above.
I tried:
- manifest = DEOBF_NAMESPACE ("mojang")
- paperweight.reobfArtifactConfiguration = MOJANG_PRODUCTION
- removed "tasks.assemble { dependsOn(tasks.reobfJar) }"
Update commit: https://github.com/gecolay/GSit/commit/d075a0441a3bdebedc2a0e5ed0a48b9ab5bd3f3d
REOBF_CONFIG
I used this only for the old versions. for 1.21.6 i didn't set any special config
oh, missed that it wasn't set on there, but, something is still likely asking for reobf somewhere
Yes, I think so too, but I don't know where else I could change something for 1.21.6 which would change the build process.
idk what the side-effect of the reobfArtifactConfiguration thing is, but, you are setting it to that for .6 in your module
or, no, I'm apparently blind
i set it to the mojang mapping
try producing a build scan
outside of that, I'm on the wrong machine to really look
it generally seems to indiate that the root project is asking for the reobf config
I explictly told to to use the default configuration and it works, idk why it's trying to pull the reobf configuration
technically both variants have attributes that satisfy selection
just the reobf one has an extra attribute
it's possible the default logic changed
Has anything broke today?
Intellij decided that org.bukkit does exis anymore
Invalidate caches did the trick, nvm... IDEA having a stroke
is there a way to use multiple paperweight dev bundles within a project with differend modules?
you apply paperweight-userdev to the root with apply false and then apply it in the modules’ build gradle files but without the version specified
and there you specify the dev bundles
in the modules’ build files
What is the default configuration key?
"default"
oh wow, that was a bit too obvious, thank you xd
Has something changed with recent userdev versions in regards to NMS not showing up anymore in external libraries in IDEA? I can't browse the source tree anywhere
e: nvm, apparently it lives here but isn't shown in external libraries anymore
Apparently it's a change in IDEA 2025.1? With 2024.3.6 mappedServerJar.jar shows up in external libraries just fine, but 2025.1 onwards (EAP included) it's not there
must be something about your setup, it's all there and fine for me on the latest version of intellij 
Unable to resolve a dev bundle, which is required for paperweight to function.
Add a dev bundle to the 'paperweightDevelopmentBundle' configuration (the dependencies.paperweight extension can help with this), and ensure there is a repository to resolve it from (the Paper repository is used by default).
what is this
nvm
Hi, I've noticed that that the mojang-spigot-reobf.tiny file isn't part of the 1.21.6 dev-bundle anymore. I guess this is because there's no need to remap our plugins anymore and probably also due to the hardfork, right?
Anyway, I've no problem with that. All I want to know is whether it was intentionally removed or not? Will this file be permanently removed from now on? Is my reasoning above correct?
Thanks in advance!
the first couple of builds happened before spigot made their release public, so no mappings were available to bundle
there is an open pr to include them now that they are
PR is open
we just released early yea
Oh I see, thanks!
Makes sense, I hadn't thought of that. 🤦♂️
Please tell me how to apply paperweight-userdev to a paper project created using the minecraft development plugin in intellij.
I've been looking for it since yesterday, but I still don't know.
see https://docs.papermc.io/paper/dev/userdev/ and the example plugin at https://github.com/PaperMC/paperweight-test-plugin
wait, let me show you my log.
id 'java'
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" // I added it.
id("xyz.jpenilla.run-paper") version "2.3.1"
}```
```dependencies {
// compileOnly("io.papermc.paper:paper-api:1.21.5-R0.1-SNAPSHOT") // I removed it.
paperweight.paperDevBundle("1.21.6-R0.1-SNAPSHOT") // I added it.
}```
Is there anything else to do?
-# settings.gradle
repositories {
gradlePluginPortal()
maven("https://repo.papermc.io/repository/maven-public/")
}
}
rootProject.name = 'untitled11111111'```
-# result
```Settings file '~~~~~~~~~~~~~~~~~\untitled11111111\settings.gradle' line: 5
A problem occurred evaluating settings 'untitled11111111'.
> Could not find method maven() for arguments [https://repo.papermc.io/repository/maven-public/] on repository container of type org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
help..
You are using kts syntax in a groovy build file
oh sorry
> Could not resolve all artifacts for configuration ':classpath'.
> Could not resolve io.papermc.paperweight:paperweight-userdev:2.0.0-beta.17.
Required by:
project : > io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:2.0.0-beta.17
> No matching variant of io.papermc.paperweight:paperweight-userdev:2.0.0-beta.17 was found. The consumer was configured to find a library for use during runtime, compatible with Java 17, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.8' but:
- Variant 'javadocElements' declares a component for use during runtime, and its dependencies declared
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about its target Java version (required compatibility with Java 17)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.8')
- Variant 'shadowRuntimeElements' declares a library for use during runtime, compatible with Java 17, packaged as a jar, and its dependencies repackaged (shadow jar):
- Incompatible because this component declares a component, as well as attribute 'org.gradle.plugin.api-version' with value '8.14' and the consumer needed a component, as well as attribute 'org.gradle.plugin.api-version' with value '8.8'
- Variant 'sourcesElements' declares a component for use during runtime, and its dependencies declared externally:
- Incompatible because this component declares documentation and the consumer needed a library
- Other compatible attributes:
- Doesn't say anything about its elements (required them packaged as a jar)
- Doesn't say anything about its target Java version (required compatibility with Java 17)
- Doesn't say anything about org.gradle.plugin.api-version (required '8.8')```
idk
yes
^
you are using Gradle 8.8, which is outdated. Latest is 8.14
see https://docs.gradle.org/current/userguide/gradle_wrapper.html for updating the wrapper
okay
-# "build.gradle"
id 'java'
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17"
id("xyz.jpenilla.run-paper") version "2.3.1"
}
group = 'net.asdfkim'
version = '1.0'
repositories {
mavenCentral()
maven {
name = "papermc-repo"
url = "https://repo.papermc.io/repository/maven-public/"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/groups/public/"
}
}
dependencies {
paperweight.paperDevBundle("1.21.6-R0.1-SNAPSHOT")
// compileOnly("io.papermc.paper:paper-api:1.21.6-R0.1-SNAPSHOT")
}
tasks {
runServer {
// Configure the Minecraft version for our task.
// This is the only required configuration besides applying the plugin.
// Your plugin's jar (or shadowJar if present) will be used automatically.
minecraftVersion("1.21")
}
}
def targetJavaVersion = 21
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
options.release.set(targetJavaVersion)
}
}
processResources {
def props = [version: version]
inputs.properties props
filteringCharset 'UTF-8'
filesMatching('plugin.yml') {
expand props
}
}```
_ _
_ _
-# "result ❌❌❌"
_ _
_ _
-# "??"
help me
Does this example works for you?
https://github.com/PaperMC/paperweight-test-plugin
its an example that you can then use in your own plugin
Hello everyone, what should be the best gradle version for building plugins?
Was currently transfering an old plugin using 6.8 but I'm now using 8.14.2 and I have trouble using it
latest
coming from such an old version means that you're going to need to update stuff, like plugins, and potentially fix your script
Actually, it's more like a Entry plugin.yml is a duplicate but no duplicate handling strategy has been set. Please refer to issue I'm getting
Cleaning gradle wasn't working much too
Yea, they made such broken states warn now
the solution is to deal with why you're getting the dupliciate
Ah 
(you can also specifiy a handling strategey, i.e. replace)
On the build gradle?
yes
The hardest is that I don't know what is causing the duplication, since I'm kinda new on this and that it's potentially on a specific dependency I assume
it would generally be down to resource filtering
Ah ok I see what you mean
I think the easiest would be to do handling strategy but ye I have to find how
Somehow I find where it cause the issue
from(sourceSets.main.resources.srcDirs) {
filter ReplaceTokens, tokens: [version: version]
}
This makes the error duplication
Yea, as that's basically double dutying the default processResources operation
I am trying to compile against #12713, but I am getting some very weird "not found" build exceptions.
- Gradle log: https://pastes.dev/IXoNPBVpAi
build.gradle.kts: https://pastes.dev/fT0xiTrCgW
Is this just a genuine error in papermc-pr-publishing, or am I just doing something horribly wrong?
you're missing the paper repo?
Ah I need to include both?
Yes
It's still complaining, but other error
C:\Dev\Java\Plugins\TestProject\src\main\java\io\papermc\commands\CustomJavaPlugin.java:62: error: cannot find symbol
.requires(Commands.restricted(c -> true))
^
symbol: method restricted((c)->true)
location: interface Commands
It basically doesn't find the PR artefact now
make sure that the paper repo is after the pr repo?
Can someone point me to a tutorial on how to set up a complete development environment for the paperweight-userdev plugin in intellij? I've been searching and asking questions for 3 days now, but I keep having problems.
help me
please
Does this guide assume you've created a new Java project?
I mean, the guide assumes that you have a gradle project you can copy and paste a few things into
There is also the paperweight test plugin on the github that can be used as a template
but, this is advanced tooling, there comes a level of expectations around your abilities when using it
Would like to test Configuration API PR. Is it possible to use it with run-task Gradle plugin? Or not possible atm?
afaik if you provide a dev bundle it should pick it up
alright, will try to figure this out - thanks
apply paperweight-userdev and use runDevBundleServer
I dont know how to solve this one exactly, I dont relaly like the build tools stuff xD ```gradle
A problem occurred configuring project ':BingoReloaded'.
Could not resolve all artifacts for configuration 'classpath'.
Could not resolve io.papermc.paperweight:paperweight-userdev:2.0.0-beta.17.
I have the correct repositories and stuff
repositories {
mavenCentral()
maven {
name = "papermc-repo"
url = "https://repo.papermc.io/repository/maven-public/"
}
maven {
url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/'
}
maven {
url 'https://repo.codemc.io/repository/maven-releases/'
}
maven {
url 'https://repo.codemc.io/repository/maven-snapshots/'
}
}```
I was about to send the paste, but then I figured, might as well try to update gradle, and that seems to have fixed it (8.12 -> 8.14). I swear I read somewhere that 8.12 would also work
guess not
anyways, thanks for the reminders 😛
ill post full logs next time I have issues
why ,please help me !
You have a corrupted patch file; easiest step would generally be to make sure that you grabbed the repo from the correct point for that version of paper
the layout has changed a bit over the past few months
how should i fix it, minecraft version is 1.20.1
as I said, checkout a commit of that repo that works for 1.20.1
otherwise, you'll need to figure out how to fix it yourself, we don't provide support for that version of MC, and we're generally not here to teach git
I am trying to use paper weight, I used ./gradlew wrapper --gradle-version=latest and still same issue
I also used clean
paperweight version?
update the gradle version manually, then you'll be able to update the wrapper using the command
otherwise, there is not enough information there
`java-library`
id("io.github.goooler.shadow") version "8.1.8"
id("io.papermc.paperweight.userdev") version "1.7.3"
id("xyz.jpenilla.run-paper") version "2.3.1"
}
okey I am trying
Groovy: 3.0.24
Ant: Apache Ant(TM) version 1.10.15 compiled on August 25 2024
Launcher JVM: 21.0.4 (Eclipse Adoptium 21.0.4+7-LTS)
Daemon JVM: C:\Program Files\Eclipse Adoptium\jdk-21.0.4.7-hotspot (no JDK specified, using current Java home)
OS: Windows 10 10.0 amd64
are these latest version of gradle?
yes
renaming jars is generally kinda asking for headaches
you would otherwise need to change the artifact of the main jar task or whatever it was, otherwise the files are going to conflict, as it's saying
Okay thank you, maybe I'll just have a separate folder and copy and rename the file into there
Hey i got this error while adding the dependency to the gradle project:
Please ensure the host name is correct. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.
2.0.0-beta.17 doesnt resolve, 2.0.0-SNAPSHOT (which is stored in paper nexus repo and is the same version) sort of resolves but still fails.
It seems it was changed back to snapshot in the latest version, but it still being tagged as beta 17
2.0.0-SNAPSHOT works after upgrading gradle version tho
paper publishes to gradle plugin portal afaik so make sure it still has it
@tender vine check the link in my message directly below, like ebic mentioned paperweight is hosted on the gradle plugin portal
if you have any further errors, share your build script, your settings script, and the full error log
I was just pointing out that it is stored in both, thats all
Nexus Repository Manager
snapshots specifically are published to our repository yes
but it is advised against depending on snapshots unless you really need to
... i def don't do that...
trying to use paperweight, i dont think i skipped a step but i still cant use nms methods
for (Player p : Bukkit.getOnlinePlayers()) {
p.getHandle() // doesn't exist
}
no errors in gradle
Player is a bukkit interface, it does ofc not have a method that exposes nms, as nms does not exist in the API
you would need to cast it to CraftPlayer, that has a getHandle method
ah it works thank you
How would I use the applyPatches task without setting a global git user?
I tried it without --global in the root repository and the server repository and it's giving me this error.
> Task :paper-server:applyFeaturePatches FAILED
Committer identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
why not set it globally?
I have a school and personal account
if you just omit the --global, it will per repo
though iirc paperweight uses multiple repos still? So you might need to use the global one. Can always just set it back afterwards tho
Yeah I Just decided to use global and unset it afterwards, this is what I did originally and it didn't work
Hello, I'm making a new plugin to use the new Dialogs in 1.21.6. There aren't any APIs out for it yet, so I'm trying to use paperweight-userdev.
However, the plugin doesn't seem to work. Can anyone help me?
update gradle
Thank you so much, it works now!
PSA - https://central.sonatype.org/pages/ossrh-eol/ is effective today :D
new snapshots repo: ```kotlin
maven("https://central.sonatype.com/repository/maven-snapshots/") {
mavenContent { snapshotsOnly() }
}
and I've been using https://github.com/lukebemishprojects/CentralPortalPublishing to publish Gradle projects
for search: Unable to load Maven meta-data from https://s01.oss.sonatype.org/content/repositories/snapshots/ Unable to load Maven meta-data from https://oss.sonatype.org/content/repositories/snapshots/ ^
I use nexus publish plugin and works fine for snapshots and releases using the hybrid releases for legacy
https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/
I am happy to get away from that plugin
Also they fix the issue where publish a stage release only can be published by the same user who create the stage
that they updated is nice but its very much full of legacy jank
The nexus gradle?
and is always lagging behind on updating for gradle changes
yes
the one I linked is fully compatible with config cache and project isolation
from the ground up following proper conventions
When i see the date and search a fast mitigation (because forget the date xd) if maven central release a proper gradle plugin can try full migrate from that... By the moment works xd
if they release something official I will look at it, but I kind of doubt it will be as idiomatic as luke's
and with how many community options sprung up, I don't really think they will be in a rush to make their own
Maybe can try but im not familiar if need make any for make this works with gradle subprojects
at the end of the day it will just be consuming the same public apis
https://github.com/Incendo/cloud-build-logic/blob/master/src/main/kotlin/org/incendo/cloudbuildlogic/RootProjectPublishingPlugin.kt I apply this to the root project
https://github.com/Incendo/cloud-build-logic/blob/master/src/main/kotlin/org/incendo/cloudbuildlogic/PublishingPlugin.kt and this to any project that publishes artifacts
Kotlin again 
But i take note when have time for make tests using that, thanks 
Ended with an error
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
What error are you getting
oh, that's another one of those bad plugins that doesn't use gradle's pre-existing stuff and instead does its own thing on top of it
I wrote my own plugin sometime back which uses the infrastructure already set up for publishing to normal maven repos
I can share how to use it if you'd like, once I'm at my pc again
why's this happening ```Unknown host 'piston-meta.mojang.com'.
Please ensure the host name is correct. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle```
?
Where are you running this? Your own machine? Some CI server? Something else?
Intellij
are you in some country that limits the internet?
cab you open https://piston-meta.mojang.com/ in your browser?
If i open it this is comming? Im from germany
that looks ok
Mmh, strange, no clue why IntelliJ has an issue then
Wait are you running IntelliJ on your phone?
Noo but on pc its the same result
Any ideas? :/
are you using WSL or something?
otherwise, it's probably firewall or antivirus or something stupid
I mean, the question was to open the link on the same device as you're having issues with, not on some other device
update gradle
i run the newest
your wrapper is using 8.8
is this something i need to worry about?
no
theres more
you can ignore them
Unless you're parsing untrusted data it's not a huge concern
well im getting the same error:
Since the Package Search plugin https://plugins.jetbrains.com/plugin/12507-package-search has been deprecated and removed from Intellij, what have yall been using to notice/check for outdated dependencies?
github renovate
doesn't intellij show that automatically in the pom?
It used to, but since Intellij 2025.1 has removed the Package Search plugin that doesn't happen anymore
at least for me it marks the outdated dependencies and even security warnings in red
Do you have the newest version of IJ?
of course not
I uase 2024.3.5 from March, I basically never update to latest as they always break workflows in new versions -.- (also I do not have a "package search" plugin)
this is the feature I mean: https://www.jetbrains.com/help/inspectopedia/VgoDependencyUpdateAvailable.html
wait, no, that's for go. google is so useless
iirc Package Search came bundled with IntelliJ up until sometime last year, after that it was deprecated but you could still install it manually via the Plugins marketplace, but since 2025.1 it's not even supported anymore.
The Package Search plugin is what adds "Dependencies" under "View -> Tool Windows -> Dependencies"
I don't have that
Hm
Do you have some other plugin installed that could be responsible for showing these tooltips?
I don't think so
Because that's exactly what I'm looking for
although I can't seem to trigger it right now but I'm sure it still worked recently (at least after the last time I updated IntelliJ)
23:26:21: Executing 'build'…
Calculating task graph as configuration cache cannot be reused because file 'settings.gradle.kts' has changed.
[Fatal Error] core-7.2.14.pom:1:44: Content is not allowed in prolog.
[Fatal Error] core-7.2.14.pom:1:44: Content is not allowed in prolog.
FAILURE: Build failed with an exception.
* What went wrong:
Configuration cache state could not be cached: field `provider` of `org.gradle.internal.serialize.codecs.core.ProviderBackedFileCollectionSpec` bean found in field `__remapper__` of task `:reobfJar` of type `io.papermc.paperweight.tasks.RemapJar`: error writing value of type 'org.gradle.api.internal.DefaultNamedDomainObjectCollection$ExistingNamedDomainObjectProvider'
> Could not resolve all files for configuration ':pluginRemapper'.
> Could not find tiny-remapper-0.11.1-fat.jar (net.fabricmc:tiny-remapper:0.11.1).
Searched in the following locations:
file:/C:/Users/Max/.m2/repository/net/fabricmc/tiny-remapper/0.11.1/tiny-remapper-0.11.1-fat.jar
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
BUILD FAILED in 1s
Configuration cache entry discarded due to serialization error.
23:26:23: Execution finished 'build'.
Hello how can I fix that ?
dont use mavenLocal unless you are specifically trying to test something from your local repository, and even then use a content filter
thanks it helps
but now I have some classes not found
how that's possible I used it and it worked when I was on maven
that event existed a decade ago
it was moved packages eventually
looks like it was removed when one was added into their bukkit fork
ok ty lol
Well, what happens if you click that url?
It's the repo URL
And those are ones like the paper one (https://repo.papermc.io/repository/maven-public/)
So they should be valid
Googling the error implies that there must be an empty <repository></repository>, but checking my Pom files shows no such thing
Oh it's not the actual url of the artifact?
Have you checked that you didn't accidentally enable offline mode in IJ?
Try running via CLI
Offline mode is disabled.
Hi i have a build.gradle like this
https://pastes.dev/8uGPSIm6hY
currently works but i feel like im a little redundant for the "i just wanna one jar" if try mess with jar get a issue for the genResourcePack
And running a mvn clean install is actually building the stuff
Tho, opening any class in the project that uses external imports (i.e. JavaPlugin import) show it as invalid.
Like just so you see what I mean
Ok so IJ is fucked, invalidate caches and restart and pray?
tried it twice already
Check maven settings, maybe it points to a different maven home than your cli
Looks to be the default settings
There's an IJ update that also updates the maven plugin.
Maybe this will help, but I honestly don't have much hope here
This project i last visited it 3 weeks ago, and it was fine. i came back today, but now i cannot execute any gradle commands ? can anyone tell me what im doing wrong
try ./gradlew instead
Caused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain```
What can I do about this?
Patch failed at 0001 Rebrand
error: invalid object 100644 bf9520bf4f314dacc66db9a7d30dbcc239db2c7d for 'net/minecraft/world/damagesource/DamageSource.java'
depends on the what you did to induce that
but, that is generally a 3way merge failback when the patch changes and your repo doesn't have a reference to the OG commit to try to do a 3way diff
easiest option is iether to try to figure out how to get it that context, i.e. make sure that you do an apply and rebuild before updating, otherwise, just redo whatever failed manually
Okay
I was updating from 1.21.4, so I'm resetting to the last 1.21.4 commit and running apply all and rebuild
Well that's interesting
wait I forgot to run rebuild lol
Is there some arg I need to use? Rebuilding server patches doesn't seem to be changing anything.
well, idk how filtering stuff worked now, there might be a gradle propery for it
-Ppaperweight.filter-patches=false from what I gather
I mean, the commit ver doesn't really matter
stuff changed
the hopes for rebuilding without filtering is that the git stuff should line up better in order to allow it to try a 3 way
It didn't change anything
Although now I got a failed three way merge from three files, instead of a file that can't be found
Well, yea
that's a change
that means that the info was there so that it could try to do a 3way
it's not magically going to change the fact that a conflict was found, as I already said, it just had a better shot of trying to auto resolve it
I mean none of the patches had any changes after rebuilding
your patch failed to apply because the code that it is applying over changed
the only change that would occur from a straight rebuild is the hashes inside of the patch file changing
I mean, apply and rebuild generally also means that you applied the patches so that those objects will exist, especially if this was a fresh clone
Okay well 1.21.5 decided to apply, apparently
I hard reset back to 1.21.4 and applied then rebuilt
Okay so I think I know what's happening
I have three classes that failed to patch, whatever. I fix them, cd into src/minecraft/java, add them to git, run am continue, and then rebuild server patches.
But, the changes I had to make to fix the feature patch don't seem to save to the patch file
Not sure what I'm doing wrong, maybe this is the old way to fix patches from before feature and file patches?
@limpid heart im using jdk 23, ill do this now: #paper-dev message
I've tried jdk21 aswell
probably a good idea to use 1.21.7 at this point. .5 was a weird in-between version that never got a proper Paper release.
Check your gradle (wrapper) version though, and make sure its up-to-date
Are you replying to me?
no
Oh, mb
though if you are on 1.21.5 for some reason I would update too 
Yeah I'm trying
One of my patches failed to apply and I fixed it, but my changes refuse the save to the feature patch for some reason. Although I could be doing it wrong.
are you running the correct tasks? e.g. fixup first, then rebuild? And for the right part of the server (api/minecraftSources/server?
Is fixup also for server feature patches?
I got the idea that it was only for single file patches
it might be, I haven't used feature patches with the new tooling
but pretty sure for feature patches it works the same as it did with the old tooling, e.g. git rebase and then rebuilding patches. But see the contributing.md of Paper, it should be covered there
Wait, small problem, it's already rebasing because this was from a failed applyAllPatches
hmm
"Saved modified patches (0/1)"
wait
it's not rebuilding Minecraft patches
???
That would generally scream that you failed to finish the rebase session
Nope
I had to run rebuildMinecraftFeaturePatches manually and not just rebuildServerPatches, apparently
Well that's nice to know for the future lol
you would know that if you read the descriptions for every task
or at the minimum the ones you are running
I am having slight issues with my fork of Folia. I got a setup almost the same as the fork-of-fork v2 paperweight-examples project. I have added one new file to the server, and done a few small changes to existing files. I cannot seem to be able to make a feature patch out of those changes though.
My steps:
- After doing my changes, I cd'ed into my -server/src/minecraft/java dir
git add .git commit -m "message"- cd back into root
gradle rebuildAllServerPatches
This resulted in me getting a 0001-<message>.patch file under -server/minecraft-patches/features.
For some reasons though, this patch only contained my added method, not the changes I did to other source files.
Examining the git list and checking the diff, my commit from above also only contained the new file and no modifications to previous ones.
So I have two questions related to that:
- Is this patch intended to be in the minecraft-patches or am I using the wrong rebuild task? Just doing
rebuildServerPatchesdoesn't seem to create a patch.- Am I doing something incorrectly in the commit step for my changes to not show up? And what would be the correct way?
Okay I finally understood what is going on. The project is separated into three source sets:
minecraft, where all minecraft changes gopaper-server, where all paper server file changes gofolia-server, where all folia server file changes go
Since I had commit to the minecraft folder, which only contained my freshly created file, it only created a patch for making that one fresh file. It didn't contain the changes which I (unknowingly) did to paper-server. This is also the reason it created a minecraft patch instead of a Paper one.
After moving my new file to the paper-server folder (it doesn't really matter, but just so only one patch happens), running rebuildPaperServerPatches creates the expected paper-patches patch which contains the freshly created file and the changes to paper source files
?
bruh
I'm trying to look at your paste, but Malwarebytes blocks lucko.me by default for some reason lol
It looks like the paste is expired

however i dont understand groovy dsl so 
I manually unblocked it and it's still blocked
Hold on, I think I know what it wants
That's so stupid
Part of it was browser cache, part of it was having to exclude the subdomain
crazy idea, but what if we didn't blanket block everything
Groovy is pain
I'm not exactly sure what you want to get rid of, the shadow jar? It doesn't look like you can without figuring out how to keep it in memory manually, disabling it (enabled = false) completely breaks shadow.
i mean i just wanna the shadow jar with all... i feel the build its redundant and can be better... because when touch a few dependsOn i get issues with tasks depending with other and invalid inputs... then im sure this build is a messs.. works but its a mess xd
That's just how Gradle looks, Kotlin would help, but it can only help so much
Well, you shouldn't need build and deploy to depend on shadowJar
why Kotlin?
Because it's generally a nicer looking language than Groovy
not? because already depens in jar and that already depends in shadow?
Yes
If it doesn't work without those dependsOn then something else is wrong
Groovy allowing you to use single quotations for strings is heinous
Can anyone help me with the migration of the whole part of the Build system from Gradle to Gradle Kotlin DSL, I tried to use the option of overwriting the file type in IntelliJ after copying from a project created so the contents of the .kts files before I did the overwriting it gave various errors is problems after that it seems gone I don't know if anything else needs to be done or if I did everything wrong
Can you post your whole build.gradle.kts with all errors? Only then can we tell you what parts are syntactically incorrect
(You'd want to use pastes.dev in this case)
For errors it was giving ID type etc so syntax I converted the type file in Kotlin to build.gradle.kts is settings.gradle.kts is it removed the errors
Before I did that it also gave me this error.
i try to debug a 403 with a repository in github actions.... not sure why calling ./gradlew build --stacktrace get the 403 and only in github actions.. i wanna know if can debug to show the full response of the repo because if test a curl i get the content from where i get 403 with gradle
edit: clear github cache looks like fix.. or not sure what happen in that... because the self-hosted runner not has that issue
So.... do you have a problem or not
It looks like the build ends without errors so I think it goes
Can anyone ire me if it is normal that after doing Build > Build Artifacts > Build, the final file weighs 120 MB
are you sure you dont shade anything by accident?
it shouldnt be that big ever
@exotic basin
so im using paperweight and today it stopped working, i assumed i needed to update my gradle.kts so i did so but the newest version errors
is there something im missing?
plugins {
`java-library`
//id("io.papermc.paperweight.userdev") version "1.7.1"
//id("io.papermc.paperweight.userdev") version "1.7.5"
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17"
id("xyz.jpenilla.run-paper") version "2.3.1"
}
group = "io.dinoboy50.spinosaurus"
version = "1.5.0"
description = "General plugin for DINOBOY50"
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
dependencies {
paperweight.paperDevBundle("1.21.3-R0.1-SNAPSHOT")
}
tasks {
runServer {
downloadPlugins {
hangar("ViaVersion", "5.1.1")
}
minecraftVersion("1.21.3")
jvmArgs("-Dcom.mojang.eula.agree=true")
}
// Configure reobfJar to run when invoking the build task esk
assemble {
dependsOn(reobfJar)
}
compileJava {
options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything
options.release.set(21)
}
javadoc {
options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything
}
processResources {
filteringCharset = Charsets.UTF_8.name() // We want UTF-8 for everything
val props = mapOf(
"name" to project.name,
"version" to project.version,
"description" to project.description,
"apiVersion" to "1.21" //1.20
)
inputs.properties(props)
filesMatching("plugin.yml") {
expand(props)
}
}
}
What error do you get?
also the latest ver would be beta.18 but ^^
message.txt by @exotic shoal: https://pastes.dev/BaPPOg4bfI
You'll most likely need to update gradle
i think updating gradle worked
yea it did
sweet, yeah same thing happened to me lol
Can someone help me with an internal kotlin compiler error im getting. It says "source must not be null" and points to a random line in a file.
org.jetbrains.kotlin.util.FileAnalysisException: While analysing C:/dev/java/Typewriter/engine/engine-loader/src/main/kotlin/com/typewritermc/loader/ExtensionLoader.kt:49:5: java.lang.IllegalArgumentException: source must not be null
It would probably be easier to VC over this
Also, this error stops me from syncing the gradle project entirely, not compiling
im not even doing gradle build, im just syncing it in IDEA. I have invalidated all caches and restarted, as well as reinstalling my gradle wrapper
I mean, unless --stacktrace gives you some interesting output, outside of advising that you try to update stuff, there isn't much we can advice if kotlinc dies
stacktrace is just kotlin compiler internals
only rela thing would be to see if there are any updates to the kotlin plugins, etc, for gradle, and go file a report on their tracker
This channel is generally for help with build tooling configuration stuff, theres not much we can do if the compiler is eating dirt
well, turns out my build script was freaking out over the version catalogue. i messed with it and now it works
no idea what was going wrong, i think something was using an older version of kotlin from the build cache
version mismatch or something weird was my general guess, hence why I suggested to just update everything
Only getting back into MC stuff, but have some server changes to make lol.
Is there a specific gradle task to create a patch for the forked build.gradle.kts files?
Found it, don't mind me :)
Is there a guide for making a fork in 1.24+ ? i'm working on upgrading my server to latest but I'm not sure how the forks work now and I haven't been able to really find any documentation
I checked strange I don't know if it has anything to do with this I only use PaperMC API is Adventure the rest I deactivated it I don't know if Mixin is MCP should be activated
no, thats generally an area where you are expected to figure out things yourself. See the example repo at https://github.com/PaperMC/paperweight-examples and read the descriptions of the gradle tasks. + look at existing forks (e.g. Purpur) and how they are set up. The Paper Contributing.md also provides some docs on how the patching works
anybody else having trouble building paper?
#5 8.131 > Task :paper-server:cloneSpigotBuildData FAILED
#5 8.131
#5 8.131 $ (pwd) /work/Paper/paper-server/.gradle/caches/paperweight/taskCache/cloneSpigotBuildData.zip-1925470213
#5 8.131 $ git -c commit.gpgsign=false -c core.safecrlf=false init --quiet
#5 8.131
#5 8.131 $ (pwd) /work/Paper/paper-server/.gradle/caches/paperweight/taskCache/cloneSpigotBuildData.zip-1925470213
#5 8.132 $ git -c commit.gpgsign=false -c core.safecrlf=false remote add origin https://hub.spigotmc.org/stash/scm/spigot/builddata.git
#5 8.132
#5 8.132 $ (pwd) /work/Paper/paper-server/.gradle/caches/paperweight/taskCache/cloneSpigotBuildData.zip-1925470213
#5 8.132 $ git -c commit.gpgsign=false -c core.safecrlf=false fetch --depth 1 origin 436eac9815c211be1a2a6ca0702615f995e81c44
#5 8.132 fatal: unable to access 'https://hub.spigotmc.org/stash/scm/spigot/builddata.git/': The requested URL returned error: 403
Which version of Paper are you trying to build?
main branch
403 on the spigot repo is uhhh
Yeah that's kinda weird.
idk, rate limited maybe?
We're still hitting the spigot repo post hardfork?
We are for reobf mappings
if you don't care for those, disable them ™
is there a way to?
set enabled under the spigot ext in the server build file to false
alrighty ty
now I nuked my local env by accident while testing
since actions doesn't run this task to populate remote caches
did md change something o.O
the webpage for it works on my end
yes
nice 
I'll add "spigot infra does not work" to my list of arguments for "drop remapping one day
"

if I wanted to use a snapshot of adventure, would the best way be to just change the adventure version being used in my fork of paper? if that's the case, how would I go about making it use the snapshots repository? I made an attempt at it but failed.
hello there
I use maven/gradle, but i also would like to get paper .jar which i can use for offline coding and import in my plugin
Precisely i would like to compile paper 1.21.4 and 1.21.7
Can someone tell me which exact jar file or files for 1.21.4 for example i need? and where can i find instructions to compile
Paper JARs don't work like spigot's, I think if you just reference the API it should copy to your local maven repo, adding mavenLocal() to the repos list would do it I suppose
what i more need is to prepare for full offline environment, like to import jar file/s as offline dependency, then to code
do i need for that to compile jar from source?
why would you want to compile paper? And AFAIK you need a connection to compile Paper as it checks the origin
the paperweight-userdev also needs a connection I think
if you're just reffering to the API it's just a library that gets copied to your mavenLocal
i am going away somewhere and i probably will not have internet connection
i want to have offline dependencies of paper so i can use to code
i have connection now to compile
i am not sure which jar files of paper are needed to have everything that minecraft offers, like all potion effects, all entities, everything
i don't know specifically which jar files because i know there is mojmap, papermap(?), api, etc
well are you using paperweight-userdev?
i only ever used gradle and maven, never had interested in what actually happens beneath
cause if you're not then simply referencing the API and adding local maven repo to your repo list should do it
you can check if you have a copy downloaded in ~/.m2/repository/
both Gradle and Maven use this repo to check for cached libraries
just make sure mavenLocal is not the first one, also quick google search tells me an --offline flag exists that essentially does what I've been saying but safer or something
Hey I'm using the run server task and it keeps launching 1.21.1 and id like to use 1.21.7, how would i change it?
are you using paperweight userdev as well or just run-paper
@honest raven can you send your build.gradle(.kts) to https://pastes.dev
Updating a 1.20.6 paperweight to 1.21.5.
paperweight.paperDevBundle("1.21.5-R0.1-SNAPSHOT")
Getting this:
Expected configuration ':paperweightDevelopmentBundle' to contain exactly one file, however, it contains more than one file.
Paperweight version is 1.7.7
That is the latest non-beta version
The latest version is the beta version
hi, I wanted to ask how I can make one of my plugins depend on another plugin I've made. I'm using gradle
there are two ways you could go about that. The easiest but not so standard is depending on the binary (the JAR file) directly like so:
dependencies {
implementation(files("libs/myPlugin.jar"))
}
The more standard way to go about that, is to use the maven-publish plugin in your dependent plugin, like so:
plugins {
`maven-publish`
// java plugin goes here too
}
group = "me.ladycat"
version = "0.0.1"
publishing {
publications {
create<MavenPublication>("local") {
groupId = group
artifactId = project.name
version = version
from(components["java"])
}
}
}
Then you execute ./gradlew publishToMavenLocal which should publish it to your local m2 repository
once you do that, you can depend on it like so:
repositories {
mavenLocal()
// other repositories...
}
dependencies {
implementation("me.ladycat:MyPlugin:0.0.1")
}
https://docs.gradle.org/current/userguide/publishing_maven.html to learn more about the maven publish plugin. You'll probably use it if you end up hosting a maven repository at some point (or publishing to something like github packages or maven central)
thank you so much ❤️
In the nms docs there is a section on running version specific code. So, in my plugin, I have an NMS interface for version specific code, and I have two questions about using paperweight for this purpose.
- How would one set up the gradle so that each implementing class for the NMS interface uses a different server jar? So, the project at large runs 1.21.5 api but a single class runs 1.21.7.
- Do paper api changes between versions need to be added to nms as version specific? For instance, between 1.20 and 1.21
GENERIC_MAX_HEALTHwas changed toMAX_HEALTH- if my paper plugin yml api version is, say, 1.20.6, does this kind of thing get translated automatically, or would I need to create version specific implementations for this? What's a good way to leverage the build tooling to check for these incompatibilities between versions?
(Note if you care: I'm not planning to support ancient versions of Minecraft, but I think actively testing for the most two recent major releases, such as 1.20.x and 1.21.x, is a reasonable middle ground considering internals shift less with the new mojang mappings)
for the first question, you would use a multi-module/project structure where you define the paperweight plugin on the root project and then the rest inherit it with different paperDevBundle configurations on seach sub-project. You can check paperweight-test-plugin's multi-project branch for an example
as for the other question, in theory Commodore (spigot's remapping tool) should deal with API incompatibilities for you. I think this changes if you use paper plugins however I am not too keen on the details
Yeah I'm using the new paper plugins for all of my stuff so I probably shouldn't rely on undefined/undocumented behavior
Out of curiosity: Is there any plans to make paperweight/userdev no longer beta? Aka release an actual 2.0.0 version
I feel like it's been long overdue, but I also don't know the specifics of the paperweight codebase
inb4 get hit with the /eta command
i got hit with /eta two days ago for this question so 
I imagine it is just that nobody has time to work on it yet and there's probably some things they want to iron out
io.papermc.paperweight.PaperweightException: Command finished with 128 exit code: git -c commit.gpgsign=false -c core.safecrlf=false fetch --depth 1 origin d6c81daebcec6c595dda004bdc13f3cfb305c9ed
how to fix it?
run again with -Dpaperweight.debug=true
Im developing new fork of paper for my some 1.21.3 test.
But I cant load paper upstream..
paperweight {
serverProject = project(":${brandName.lowercase()}-server")
remapRepo = "https://repo.papermc.io/repository/maven-public/"
decompileRepo = "https://repo.papermc.io/repository/maven-public/"
useStandardUpstream("paper") {
url = github("PaperMC", "Paper-archive")
ref = "da7138233f6392e791d790d1c3407414c855f9c2"
withStandardPatcher {
baseName("Paper")
apiPatchDir.set(projectDir.resolve("patches/api"))
apiOutputDir.set(projectDir.resolve("Test-API"))
serverPatchDir.set(projectDir.resolve("patches/server"))
serverOutputDir.set(projectDir.resolve("Test-Server"))
}
patchTasks.register("generatedApi") {
isBareDirectory = true
upstreamDirPath = "paper-api-generator/generated"
patchDir = projectDir.resolve("patches/generated-api")
outputDir = projectDir.resolve("paper-api-generator/generated")
}
}
}
Execution failed for task '
downloadSpigotDependencies'.
Cannot create consumable configurations in detached resolvers