Using net.minecraft with SpongeForge

I’m new to Sponge and want to make a Sponge plugin with Pixelmon interactions and for it, I will need to use some NM like “net.minecraft.item.ItemStack”, but I did not find some way to get it in.
Thanks in all.

I would advise understanding SpongeCommon if you wish to use NMS. Here is ItemStackBuilder in Sponge common

From that you should be able to gather that to get a Sponge ItemStack to be converted into a net.minecraft ItemStack is as simple as casting it. You can see this done on line 319 (as of writing this message)

This is thanks to in part, the amazing technology of Mixens which runs Sponge

Thanks for replying. I’m sorry, but I did not get how convertig from sponge to nms and from nms to sponge works. I would use “fromItemStack” method? I don’t have access to the net.minecraft package.

So as shown on 319, the sponge ItemStack is a instance of minecraft ItemStack. The only difference is its been casted from a minecraft ItemStack to a Sponge ItemStack. This is possible due to them being the same instance of the same object. So as mentioned before, the way to convert one to another would be to

MoseMister
to get a Sponge ItemStack to be converted into a net.minecraft ItemStack is as simple as casting it.

I understand it, but my problem is that I don’t have the net.minecraft package to cast it. I’m using the minecraft plugin of IntelliJ.

Ah thats different. The Minecraft development plugin sets up the maven/gradle for development.
Im assuming you clicked sponge and nothing else meaning you need to add forge to the porm file inside your project. I would also recommend adding spongecommon and spongeforge to the porm file too

This forum post is old but should have what you are looking for

I followed the thread and this link Internal Sponge Classes — Sponge 7.2.0 documentation and the build.gradle goes to:

buildscript {
repositories {
    jcenter()
    maven { url = "http://files.minecraftforge.net/maven" }
}
dependencies {
    compile 'org.spongepowered:spongeforge:1.12.2-2768-7.1.1-RC3484:dev'
    compile 'org.spongepowered:spongecommon:7.1.0:dev'
}
}
apply plugin: 'net.minecraftforge.gradle.forge'

group = pluginGroup
version = pluginVersion

dependencies {
compile 'org.spongepowered:spongeapi:7.1.0-SNAPSHOT'
}

sponge.plugin.id = pluginId

But I still doesnt have the nms classes. The gradle throws an error saying that wasn’t find a ‘compile’ method.

So I believe the real issue here is that when using Sponge, you should not NEED to directly access the NM classes… The sponge ItemStack class IS a copy of sorts of the net.minecraft ItemStack class.

The better question here is what are you trying to do? Can you share some pseudo-code so that we can see what you are attempting?

public class Util
{
private Util() {}
private static Util util = new Util();
public static Util getInstance() { return util; }

public ItemStack getPixelSprite(Player p, int i)
{
if(i >= 6 || i < 0)
{
return null;
}

PartyStorage partyStorage = new PartyStorage(p.getUniqueId());

SpongeItemStackBuilder builder = new SpongeItemStackBuilder();

return builder.fromItemStack(com.pixelmonmod.pixelmon.items.ItemPixelmonSprite.getPhoto(partyStorage.getAll()[i]));
}
}

this is all I have.

To fix the Gradle setup, you’ll need to do a few things:

  • Add apply plugin: 'java' to the script.
  • Add a minecraft { ... } block to the script specifying the Forge version and mappings version.
minecraft {
    version = '1.12.2-14.3.5.2825'
    mappings = 'snapshot_20180808'
}
  • Run gradle setupDecompWorkspace (or ./gradlew setupDecompWorkspace) to set up the Minecraft code.

It crashes on run the gradle command.

> Could not find method compile() for arguments [org.spongepowered:spongeforge:1.12.2-2768-7.1.1-RC3484:dev] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'KPixelmon'.
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:173)
        at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:61)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:58)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:41)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:64)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100(LifecycleProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureProject.run(LifecycleProjectEvaluator.java:110)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:666)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:135)
        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:249)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:167)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:126)
        at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:109)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78)
        at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
        at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
        at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
        at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
        at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:47)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:69)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:30)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method compile() for arguments [org.spongepowered:spongeforge:1.12.2-2768-7.1.1-RC3484:dev] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
        at org.gradle.internal.metaobject.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:179)
        at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:87)
        at build_6ntntfgh5j6xqkbj4ljjelm9j$_run_closure1$_closure3.doCall(C:\Users\nicol\Desktop\Kyuu\CraftSuporte\Sponge\build.gradle:7)
        at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
        at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:160)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
        at org.gradle.api.internal.initialization.DefaultScriptHandler.dependencies(DefaultScriptHandler.java:62)
        at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
        at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
        at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:57)
        at build_6ntntfgh5j6xqkbj4ljjelm9j$_run_closure1.doCall(C:\Users\nicol\Desktop\Kyuu\CraftSuporte\Sponge\build.gradle:6)
        at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
        at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:160)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
        at org.gradle.api.internal.project.DefaultProject.buildscript(DefaultProject.java:1176)
        at org.gradle.api.internal.project.ProjectScript.buildscript(ProjectScript.java:42)
        at org.gradle.api.Script$buildscript.callCurrent(Unknown Source)
        at build_6ntntfgh5j6xqkbj4ljjelm9j.run(C:\Users\nicol\Desktop\Kyuu\CraftSuporte\Sponge\build.gradle:1)
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
        ... 91 more

Can you show your porm file?

buildscript {
repositories {
jcenter()
maven { url = “https://repo.spongepowered.org/maven” }
}
dependencies {
compile ‘org.spongepowered:spongeforge:1.12.2-2768-7.1.1-RC3484:dev’
compile ‘org.spongepowered:spongecommon:7.1.0-SNAPSHOT:dev’
}
}
apply plugin: ‘net.minecraftforge.gradle.forge’
apply plugin: ‘java’

group = pluginGroup
version = pluginVersion

dependencies {
compile ‘org.spongepowered:spongeapi:7.1.0-SNAPSHOT’
}

minecraft {
version = ‘1.12.2-14.3.5.2825’
mappings = ‘snapshot_20180808’
}

sponge.plugin.id = pluginId

That’s not what the instructions say to do. The compile dependency (or implementation dependency for Gradle 5.0+) go in your regular dependencies. Your buildscript needs a runtime dependency, on ForgeGradle.

So, I think i didn’t understand, I never worked with gradle before. I don’t understand it very well.

I already tried a lot of build.gradle, I’m really confusing right now, never worked with it.

I recreate the project using Forge and Sponge and it working, but the error changed. How can I convert from nms stack to sponge stack?

By casting it. Casting works both ways.

I already tried and not works.
Screenshot_149

This is typically an issue with Intellij. Its attempting to be useful however it does not understand how mixins work.
You can normally fix this by correctly configurating the Project Language level found in the Project Structure dialog (open by the following command on Linux/Windows ‘Ctrl + Alt + S’ or on Mac ‘CMD + ;’). Failing that you can override this error message in the individual modules too