Giter Club home page Giter Club logo

spongeforge's Introduction

SpongeForge Build Status

Moved

This repository is obsolete! Development on modern (1.16+) versions continues in the Sponge repository.


A Forge implementation of the Sponge API.

Prerequisites

Cloning

The following steps will ensure your project is cloned properly.

  1. git clone --recursive https://github.com/SpongePowered/SpongeForge.git
  2. cd SpongeForge
  3. cp scripts/pre-commit .git/hooks

Setup

Note: SpongeForge uses Gradle as its build system. The repo includes the Gradle wrapper that will automatically download the correct Gradle version. Local installations of Gradle may work but are untested. To execute the Gradle wrapper, run the ./gradlew script on Unix systems or only gradlew on Windows systems.

Before you are able to build SpongeForge, you must first prepare the environment:

  • Run ./gradlew setupDecompWorkspace --refresh-dependencies

IDE Setup

For Eclipse

  1. Run ./gradlew eclipse
  2. Import Sponge as an existing project (File > Import > General)
  3. Select the root folder for SpongeForge and make sure Search for nested projects is enabled
  4. Check Sponge when it finishes building and click Finish

For IntelliJ

  1. Make sure you have the Gradle plugin enabled (File > Settings > Plugins).
  2. Click File > New > Project from Existing Sources > Gradle and select the root folder for SpongeForge.
  3. Make sure Use default gradle wrapper is selected. Older/newer Gradle versions may work but we only test using the wrapper.
  4. Make sure Create separate module per source set is selected. This ensures that Intellij properly handles SpongeForge's Kotlin and Java dependencies.

Running

Note: The following is aimed to help you setup run configurations for Eclipse and IntelliJ, if you do not want to be able to run SpongeForge directly from your IDE then you can skip this.

For Eclipse

  1. Running ./gradlew eclipse should have generated the run configurations automatically.
  2. When launching the server for the first time, it will shutdown by itself. You will need to modify eula.txt to set eula=true (this means you agree to the Mojang EULA, if you do not wish to do this then you cannot run the server).

For IntelliJ

  1. Run ./gradlew genIntelliJRuns
  2. Restart IntelliJ IDEA or reload the project, the run configuration should now be generated.
  3. When launching the server for the first time, it will shutdown by itself. You will need to modify eula.txt to set eula=true (this means you agree to the Mojang EULA, if you do not wish to do this then you cannot run the server).

Building

Note: You must Setup the environment before you can build SpongeForge.

In order to build SpongeForge you simply need to run the gradlew command. On Windows systems you should run gradlew instead of ./gradlew to invoke the Gradle wrapper. You can find the compiled JAR files in ./build/libs but in most cases you'll only need 'spongeforge-x.x.x-x-x.x-x.jar'.

Updating your Clone

The following steps will update your clone with the official repo.

  1. git pull
  2. git submodule update --recursive
  3. ./gradlew setupDecompWorkspace --refresh-dependencies

FAQ

A dependency was added, but my IDE is missing it! How do I add it?

If a new dependency was added, you can just restart your IDE and the Gradle plugin for that IDE should pull in the new dependencies.

Contributing

Are you a talented programmer looking to contribute some code? We'd love the help!

  • Open a pull request with your changes, following our guidelines.
  • Please follow the above guidelines for your pull request(s) to be accepted.

Help! Things are not working!

Some issues can be resolved by deleting the '.gradle' folder in your user directory and running through the setup steps again, or even running gradle cleanCache and running through the setup again. Otherwise if you are having trouble with something that the README does not cover, feel free to join our IRC channel and ask for assistance.

spongeforge's People

Contributors

aaron1011 avatar abrarsyed avatar bloodmc avatar caseif avatar cpw avatar cybermaxke avatar ddos avatar deamon5550 avatar dualspiral avatar faithcaio avatar gabizou avatar grinch avatar immorpheus avatar jbyoshi avatar kobata avatar maxov avatar me4502 avatar mumfrey avatar parlough avatar phit avatar progwml6 avatar raphfrk avatar simon816 avatar sk89q avatar skepfyr avatar stephan-gh avatar windy1 avatar zephirenz avatar zidane avatar zml2008 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spongeforge's Issues

A simple way for forge mods to use some Sponge types.

For things that directly correspond to a Minecraft object, there could be an interface not in the server API, but in the Forge implementation: "IMinecraftType". It could look like this:

public interface IMinecraftType<T>{
    public Optional<T> getMinecraftType();
}

This way, objects like, say DamageType could implement it, and behind the scenes the default ones could return the corresponding DamageSource, to allow for mod/plugin interop.

mcmod.info?

I've noticed while poking through the code that there is no mcmod.info file. In the build.gradle script there is a section that apparently replaces the information in such a file, but such a file doesn't exist. Shouldn't it be added, 1 so build.gradle doesn't have unnecessary scripts, and 2 so that it shows up in the forge mods list?

Command problem

I have a problem, where I can do the command "gradle setupDecompWorkspace --refresh-dependencies" for eclipse ?

Implement World Creation

The API is fairly complete for worlds, so the implementation needs to start on this.

Worlds is a fairly complex thing to implement given that it has a lot of extensibility and we aim for full compatibility with forge mods. Since world creation and manipulation in forge is based around the concept of dimensions instead of worlds, we need to figure out what system we want to use for Sponge's implementation.

Currently I see two main options:

  1. The original minecraft system where worlds are levels and what SpongeAPI calls Worlds are referred to as dimensions, with only one level.dat file and session.lock for an entire set of dimensions
  2. We use a Bukkit style system where each World is split into a seperate level folder with it's own level.dat and session.lock files. Each world folder only stores a single dimension and the folder as a whole makes up the entirety of a World.

One posibility is an extension of 2 where those seperate world folders are expanded into another concept, allowing multiple World's (Dimensions) per Universe (Level), a sort of combination of 1 and 2.

Failed to build Sponge with Gradle

I tried to build Sponge with Gradle but I did not succeed.

Here is my setup.

gradle -v


Gradle 2.2

Build time: 2014-11-10 13:31:44 UTC
Build number: none
Revision: aab8521f1fd9a3484cac18123a72bcfdeb7006ec

Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.6.0_33 (Sun Microsystems Inc. 23.25-b01)
OS: Linux 3.13.0-29-generic amd64

Version of Linux

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"

The error of building

Failed to notify ProjectEvaluationListener.afterEvaluate(), but
primary configuration failure takes precedence.
org.gradle.api.ProjectConfigurationException: You must set the
Minecraft Version!
at net.minecraftforge.gradle.user.patch.UserPatchExtension.getApiVersion(UserPatchExtension.java:64)
at net.minecraftforge.gradle.user.patch.UserPatchExtension_Decorated.getApiVersion(Unknown
Source)
at net.minecraftforge.gradle.user.patch.UserPatchBasePlugin.getApiVersion(UserPatchBasePlugin.java:242)
at net.minecraftforge.gradle.user.patch.UserPatchBasePlugin.getApiVersion(UserPatchBasePlugin.java:35)
at net.minecraftforge.gradle.user.UserBasePlugin.resolve(UserBasePlugin.java:254)
at net.minecraftforge.gradle.user.patch.UserPatchBasePlugin.resolve(UserPatchBasePlugin.java:333)
at net.minecraftforge.gradle.user.patch.UserPatchBasePlugin.resolve(UserPatchBasePlugin.java:35)
at net.minecraftforge.gradle.delayed.DelayedBase.resolve(DelayedBase.java:84)
at net.minecraftforge.gradle.delayed.DelayedString.resolveDelayed(DelayedString.java:22)
at net.minecraftforge.gradle.delayed.DelayedString.resolveDelayed(DelayedString.java:5)
at net.minecraftforge.gradle.delayed.DelayedBase.call(DelayedBase.java:50)
at net.minecraftforge.gradle.common.BasePlugin.afterEvaluate(BasePlugin.java:169)
at net.minecraftforge.gradle.user.UserBasePlugin.afterEvaluate(UserBasePlugin.java:905)
at net.minecraftforge.gradle.common.BasePlugin$2.execute(BasePlugin.java:110)
at net.minecraftforge.gradle.common.BasePlugin$2.execute(BasePlugin.java:106)
at org.gradle.listener.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:109)
at org.gradle.listener.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:98)
at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:83)
at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:31)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy13.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:79)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:65)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:504)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:83)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:42)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.Main.doAction(Main.java:33)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23) Caused by: java.lang.NullPointerException
... 54 more

FAILURE: Build failed with an exception.

  • Where: Build file '/home/mimidevos/Sponge/build.gradle' line: 33

  • What went wrong: A problem occurred evaluating root project 'Sponge'.

    Failed to apply plugin [id 'com.github.johnrengelman.shadow']
    No signature of method: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar_Decorated.getManifest()
    is applicable for argument types: () values: []
    Possible solutions: getManifest(), getManifest(), getManifest(), setManifest(org.gradle.api.java.archives.Manifest),
    setManifest(org.gradle.api.java.archives.Manifest),
    manifest(groovy.lang.Closure)

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 2 mins 50.089 secs

Q: How you do dis?

Hello there!

How do you write a Minecraft Server?

I've been looking around the internet on a tutorial or any explanation as to how you create a server, and I've found nothing. http://wiki.vg only shows how to write a client, not a server, but it does have a lot of stuff on the packet system in Minecraft. I have no idea how to implement that in Java or any other language, though.

Thanks,
Phase.

Support listening to generic events

It would be awesome if a plugin could listen to generic events, such as PlayerEvent or StateEvent, rather than listening to all of its child events. This wasn't supported in Bukkit, so it would be great if it could be supported here.

Thanks guys!

You guys are awesome - jumping straight into something that has the potential to be ten times bigger and better!

Just want to say thanks! :)

help pleas!!!

i have downloaded the zip and put it on my server but it don't work
can u help me pls

Error converting chat message to Text in MessageEvent

getMessage() in the chat event doesn't work. care to take a look @Minecrell (or @gratimax ?)

[22:58:40] [Server thread/WARN] [Sponge]: A handler raised an error when handling an event
java.lang.NullPointerException: translation
        at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:229) ~[minecraft_server.1.8.jar:?]
        at org.spongepowered.api.text.TextBuilder$Translatable.translation(TextBuilder.java:636) ~[TextBuilder$Translatable.class:1.8-1334-1.1DEV-0+unknown-b0.git-unknown]
        at org.spongepowered.api.text.TextBuilder$Translatable.<init>(TextBuilder.java:553) ~[TextBuilder$Translatable.class:1.8-1334-1.1DEV-0+unknown-b0.git-unknown]
        at org.spongepowered.api.text.Texts.builder(Texts.java:217) ~[Texts.class:1.8-1334-1.1DEV-0+unknown-b0.git-unknown]
        at net.minecraft.util.ChatComponentTranslation.createBuilder(SourceFile:44) ~[hz.class:?]
        at net.minecraft.util.ChatComponentStyle.toText(SourceFile:108) ~[hj.class:?]
        at net.minecraftforge.event.ServerChatEvent.getMessage(ServerChatEvent.java:59) ~[ServerChatEvent.class:?]
        at com.zachsthings.testplugin.TestPlugin.onChat(TestPlugin.java:37) ~[TestPlugin.class:?]
        at org.spongepowered.mod.event.handler.MessageEventHandler_TestPlugin_onChat3.handle(Unknown Source) ~[?:?]
        at org.spongepowered.mod.event.SpongeEventBus.callListener(SpongeEventBus.java:209) [SpongeEventBus.class:1.8-1334-1.1DEV-0+unknown-b0.git-unknown]
        at org.spongepowered.mod.event.SpongeEventBus.post(SpongeEventBus.java:269) [SpongeEventBus.class:1.8-1334-1.1DEV-0+unknown-b0.git-unknown]
        at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:56) [EventBus.class:?]
        at net.minecraftforge.common.ForgeHooks.onServerChatEvent(ForgeHooks.java:431) [ForgeHooks.class:?]
        at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:796) [rj.class:?]
        at net.minecraft.network.play.client.C01PacketChatMessage.func_180757_a(SourceFile:37) [lu.class:?]
        at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(SourceFile:9) [lu.class:?]
        at net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13) [ih.class:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_25]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_25]
        at net.minecraftforge.fml.common.FMLCommonHandler.callFuture(FMLCommonHandler.java:709) [FMLCommonHandler.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:655) [MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:364) [po.class:?]
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:598) [MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:478) [MinecraftServer.class:?]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25]
[22:58:40] [Server thread/INFO]: <zml> oh noes
[22:58:52] [Server thread/INFO]: zml lost connection: TextComponent{text='Disconnected', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}

Dependency server forbidden access to download

I run gradle setup to build project but get problem.
Everything downloaded except forgeBin which returns following error:

Could not resolve all dependencies for configuration ':runtime'.

Could not resolve :forgeBin:1.8-11.14.0.1246-1.8.
Required by:
org.spongepowered:Sponge:1.8-11.14.0.1239-SNAPSHOT
Could not GET 'https://libraries.minecraft.net//forgeBin/1.8-11.14.0.1246-1.8/forgeBin-1.8-11.14.0.1246-1.8.pom'. Received status code 403 from server: Forbidden

Maybe host unavailable?

Could not find property 'javadoc' on task set

Hi;
I have tried to follow your instructions but an error occurred while I was running the gradle setupDecompWorkspace command error: Could not find property javadoc on task set. I'll checked the path variable but it preforms right.
Would appreciate every help.
greetings

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'Sponge'.
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory
.java:54)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:15
4)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:39)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.j
ava:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:59)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:492)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:86)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:42)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter
.java:80)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)
        at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:169)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:23
7)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:21
0)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
Caused by: groovy.lang.MissingPropertyException: Could not find property 'javadoc' on task set.
        at org.gradle.api.internal.AbstractDynamicObject.propertyMissingException(AbstractDynamicObject.java:43)
        at org.gradle.api.internal.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:35)
        at org.gradle.api.internal.CompositeDynamicObject.getProperty(CompositeDynamicObject.java:94)
        at org.gradle.api.internal.tasks.DefaultTaskContainer_Decorated.getProperty(Unknown Source)
        at build_dq07vtv2mdc6uqql3vjzid18x$_run_closure18.doCall(E:\Users\Karol\Desktop\Sponge\rsc\Sponge-master\build.g
radle:266)
        at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:67)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:130)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:110)
        at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:488)
        at org.gradle.api.internal.project.AbstractProject.task(AbstractProject.java:867)
        at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:225)
        at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:129)
        at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147)
        at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.java:79)
        at build_dq07vtv2mdc6uqql3vjzid18x.run(E:\Users\Karol\Desktop\Sponge\rsc\Sponge-master\build.gradle:264)
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory
.java:52)
        ... 32 more

Some questions about the project...

Hello,

I was a big user of MCPC+ and Cauldron servers witch are now down due to the famous big DMCA takedown !

I just want to know two things :

  • Will this software be able to run old CraftBukkit plugins ?
  • Will this software be able to run Minecraft Forge server so i can install about 50 Mods like i was making on Cauldron ?

CommandBlock implementation problems

Right now we have BlockCommandSource as mixin for CommandBlockLogic, where the commands are internally stored and also executed with. However, additionally right now CommandBlock and MinecartCommandBlock extend BlockCommandSource with no implementation in the mixins for these interfaces.

While we could theoretically just proxy all CommandSource methods to the CommandBlockLogic, this would most likely cause issues when plugins try to execute commands as a CommandBlock. The internal Vanilla commands require ICommandSender which just CommandBlockLogic implements. Whie we could also proxy ICommandSender this may also cause a few other problems at some places where Minecraft would expect the command to be a CommandBlockLogic and not the actual tile entity or minecart we've modified to proxy everything to the command block logic.

One way to fix this would be to change the CommandBlock and MinecartCommandBlock interfaces to have a BlockCommandSource getSource() method, but I agree with @Deamon5550 after a discussion about this that this might be an implementation leak in the API because there wouldn't be a big reason for CommandBlock not to implement the BlockCommandSource directly normally.

Build faild

+ git submodule update --init --recursive

  • cp scripts/pre-commit .git/hooks
    [Gradle] - Launching build.
    [Sponge] $ /var/lib/jenkins/tools/hudson.plugins.gradle.GradleInstallation/Gradle-2.1/bin/gradle

Powered By MCP:
http://mcp.ocean-labs.de/
Searge, ProfMobius, Fesh0r,
R4wk, ZeuX, IngisKahn, bspkrs
MCP Data version : snapshot_20141001


Found AccessTransformer in main resources: sponge_at.cfg

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':runtime'.

Could not resolve :forgeBin:1.8-11.14.0.1290-1.8.
Required by:
org.spongepowered:Sponge:1.8-11.14.0.1290-SNAPSHOT
Could not GET 'https://libraries.minecraft.net//forgeBin/1.8-11.14.0.1290-1.8/forgeBin-1.8-11.14.0.1290-1.8.pom'. Received status code 403 from server: Forbidden

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

like a depency error?

Event bus needs to support event supertypes

For example, if a plugin is subscribed to the A event, B event is fired, and B extends A, then the plugin should be able to consume the B event in the event handler for A.

Someone needs to implement this, preferably as a PR to FML.

Cannot Run 'gradle setupDecompWorkspace --refresh-dependencies' Build Fails

I am trying to use sponge to see how it works, and it seems the build fails when I try to decompile it. I have installed gradle and everything correctly, but it still fails. It appears to be at line 255 of the build.gradle file, but opening in Notepad just scrambles the lines to where I can't tell where a line starts and where one ends. This is the command prompt output:

FAILURE: Build failed with an exception.

  • Where:
    Build file 'C:\Users\GizmoCodes\Desktop\Sponge Plugin\build.gradle' line: 255

  • What went wrong:
    A problem occurred evaluating root project 'Sponge'.

    Could not find property 'javadoc' on task set.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 15.334 secs

May I join this project?

May I jon this project please? That will be awesome if it supports Minecraft Pocket Edition too. :)

Can't resolve depends.

I'll build sponge by gradlew.bat, but I have problem.

  • What went wrong:
    Could not resolve all dependencies for configuration ':runtime'.

    Could not resolve :forgeBin:1.8-11.14.0.1246-1.8.
    Required by:
    org.spongepowered:Sponge:1.8-11.14.0.1239-SNAPSHOT
    Could not GET 'https://libraries.minecraft.net//forgeBin/1.8-11.14.0.1246-1
    .8/forgeBin-1.8-11.14.0.1246-1.8.pom'. Received status code 403 from server: For
    bidden

Please fix

Permission Denied during 'git clone [email protected]:SpongePowered/Sponge.git'

Trying to do git clone [email protected]:SpongePowered/Sponge.git and got:

Cloning into 'Sponge'...
The authenticity of host 'github.com (192.30.252.128)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

CommandBlock CommandSource

Currently TileEntityCommandBlock$1 which is the class implementing ICommandSender and is the actual object passed to the command handlers doesn't implement sponge's CommandSource which causes the server to crash whenever a commandblock is activated. However the fix is not quite as simple as it may seem at first glance. There are three requirements for a correct solution in descending importance (only the first is absolutely required):

  • CommandSource: The object passed to the internal command handler must implement CommandSource in order to stop the crash from occurring.
  • instanceof: The class passed to the command handler should also implement CommandBlock in order to allow an instanceof check in a plugin's CommandCallable to see if the command is originating from a command block.
  • equals: The class passed to the command handler should be the actual instance of the command block, to allow an equals check against a specific tile entity in a plugin's CommandCallable.

There are three possible solutions that I currently see.

Solution A: Inner class implements CommandSource
This is the simplest solution and does stop the crash from occurring. However this does not solve the instanceof or equals requirements. No other immediate drawbacks that I can see.

Solution B: Inner class implements CommandBlock
By implementing commandblock you are implicitly implementing CommandSource thus solving the first issue. You are also solving the instanceof requirement as the source passed to a plugin's CommandCallable will be a class implementing CommandBlock. However, the object passed to the command handler will still be a different object to the actual command block tile entity sourcing the command so it does not cover the equals requirement. Additionally this is a bit of a janky solution as the inner class would have to proxy all extraneous CommandBlock methods back to the parent tile entity.

Solution C: TileEntityCommandBlock implements ICommandSender and bypasses the inner class
By having the actual tile entity implement ICommandSender and CommandBlock we can pass the actual object of the tile entity to the command handler thus solving all three requirements. However this is quite an invasive change as any other forge mods expecting the origin of the commands from the commandblock to be the inner class will fail.

An alternative would be if it was possible to send one object to the minecraft/forge command handler (the inner class) and another to the sponge command handler (the tile entity). However I'm not sure of the feasibility of this within the current system.

As you can see there is no perfect solution so any input would be appreciated.

Implement permissions handling for non-Player CommandSources

paging @SpongePowered/developers

Handling CommandSource permissions

Server console

Do we give server console real permissions? Maybe just make it be the default subject where UNDEFINED becomes TRUE??? I can see that we want to like stop the console from doing certain commands like accidentally, but if someone could access the console the sender could also access the permissions configuration to change permissions.

Console permissions subjects could also be lumped in with like 'remote' subjects -- like rcon, console, etc are part of the same collection?

Rcon

Should be handled similar defaults to server console. More of a point to give this actual permissions, since there is a point to restricting capabilities (rcon access != FS access)

Command Blocks

Command blocks are harder. There are really multiple ways of going about this:

  1. All command blocks have the same permissions -- this is simple, lump the single 'commandblock' subject in with the rest of the system subjects
  2. Each command block's permissions are determined by the name given to it -- so default command block has permissions for '@', others by name. Enabling this means we might as well expect permissions plugins to support arbitrary subject types -- not just users/groups. This gives command blocks separate permissions from users/groups i prefer this one
  3. The command blocks share permissions with the same-named player. This may cause issues though if a command block is not required to have the same name as a player. Gotta test???

Any other senders I missed? Let me know what you think about these proposals.

Broken static colored Text instances

It seems that whenever you build a static Text instance with a color, like the following:

private static final Text MY_TEXT = Texts.of(TextColors.RED, "My red text!");

the TextColor is interpreted as null somewhere, and so when the Text is sent to a player, they would see: nullMy red text! (uncolored).

Just a few questions from a possibly user

I have only a few questions, based on what i have seen in the past.

  • Bukkit was stable, until minecraft started to change significantly (namely 1.7), where bukkit has "broken minecraft". I'm not sure how you plan stability, at the point where there is no stability.
  • If the mod api comes out for real, than forge possibly dies(like modloader did before, and i hope that it will, because that means that the api is good), because of the power of defaults.

-(coming from "why not wait for the official minecraft api?") We really need proper "official"(with this i mean something unlike a supportless bukkit/cauldron build) server side tools. Why not try to build something proper on top of forge for now, so people can use it (for now).

I have a few more, but no time to write, i will edit it later.

Semi-Urgently needed implemented methods (2 of them)

Two methods are needed semi-urgently (Within a day), for internal reasons.

See me on IRC for more details as to why.

SpongeMessage#of, and Entity#setLocationAndRotations

And more:
Message#toLegacy

Alongside this, the Tile Entity branch is needed, however that can just be obtained from that branch.

Add JLine support

It would be really nice to add JLine support, kinda like CraftBukkit had. The minecraft console is really messy, and this would solve the log messages that interfer with your commands by threading this.

Command problem

Hello, I have a little problem, when I want to install Sponge with eclipse, I need to do "Run gradle setupDecompWorkspace --refresh-dependencies" but where I can do that ?

Build ERROR at latest update [cb65628]

Build ERROR at latest update cb65628

https://travis-ci.org/SpongePowered/Sponge/builds/45869583

:compileJavawarning: Unable to locate obfuscation mapping for @Shadow field entityPlayer in org.spongepowered.mod.mixin.event.player.MixinEventPlayer
warning: Unable to locate obfuscation mapping for @Shadow field player in org.spongepowered.mod.mixin.event.player.MixinEventPlayerFML
warning: Unable to locate obfuscation mapping for @Shadow field action in org.spongepowered.mod.mixin.event.player.MixinEventPlayerInteract
warning: Unable to locate obfuscation mapping for @Shadow field world in org.spongepowered.mod.mixin.event.player.MixinEventPlayerInteract
warning: Unable to locate obfuscation mapping for @Shadow field pos in org.spongepowered.mod.mixin.event.player.MixinEventPlayerInteract
warning: Unable to locate obfuscation mapping for @Shadow field modContainer in org.spongepowered.mod.mixin.event.state.MixinEventPreInit
warning: Unable to locate obfuscation mapping for @Shadow field entityRegistrations in org.spongepowered.mod.mixin.fml.MixinEntityRegistry
warning: Unable to locate obfuscation mapping for @Shadow field entityNames in org.spongepowered.mod.mixin.fml.MixinEntityRegistry
warning: Unable to locate obfuscation mapping for @Shadow field entityClassRegistrations in org.spongepowered.mod.mixin.fml.MixinEntityRegistry
warning: Unable to locate obfuscation mapping for @Shadow field providers in org.spongepowered.mod.mixin.forge.MixinDimensionManager
warning: Unable to locate obfuscation mapping for @Shadow field spawnSettings in org.spongepowered.mod.mixin.forge.MixinDimensionManager
warning: Unable to locate obfuscation mapping for @Shadow method isAllowedOnBooks in org.spongepowered.mod.mixin.item.MixinEnchantment
error: No obfuscation mapping for @Overwrite method doModEntityRegistration in org.spongepowered.mod.mixin.fml.MixinEntityRegistry
error: No obfuscation mapping for @Overwrite method registerProviderType in org.spongepowered.mod.mixin.forge.MixinDimensionManager
error: No obfuscation mapping for @Inject target updateWeatherBody in org.spongepowered.mod.mixin.world.MixinWorld
error: @At(INVOKE.<target>) is not fully qualified, missing owner in "setThundering(Z)V" in org.spongepowered.mod.mixin.world.MixinWorld
error: @At(INVOKE.<target>) is not fully qualified, missing owner in "setRaining(Z)V" in org.spongepowered.mod.mixin.world.MixinWorld
warning: No processor claimed any of these annotations: [com.google.common.eventbus.Subscribe, org.spongepowered.asm.mixin.Implements, javax.inject.Inject, net.minecraftforge.fml.relauncher.SideOnly, net.minecraftforge.fml.common.eventhandler.Cancelable, org.spongepowered.api.util.annotation.NonnullByDefault, net.minecraftforge.fml.common.eventhandler.SubscribeEvent, javax.annotation.Nullable, com.google.inject.ScopeAnnotation]
5 errors
 FAILED

FAILURE: Build failed with an exception.

Exception when run in forge.

I heard that sponge should now at least build (which it does) but results in a runtime exception being thrown as follows:

[08:57:59] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[08:57:59] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[08:57:59] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[08:57:59] [main/INFO] [FML]: Forge Mod Loader version 8.0.16.1021 for Minecraft 1.8 loading
[08:57:59] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_05, running on Windows 8.1:amd64:6.3, installed at C:\Program Files\Java\jre8
[08:57:59] [main/WARN] [FML]: The coremod org.spongepowered.mod.SpongeCoremod does not have a MCVersion annotation, it may cause issues with this version of Minecraft
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.NoClassDefFoundError: org/spongepowered/asm/mixin/MixinEnvironment
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at org.spongepowered.mod.SpongeCoremod.<init>(SpongeCoremod.java:38)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.reflect.Constructor.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.Class.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.CoreModManager.loadCoreMod(CoreModManager.java:461)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.CoreModManager.discoverCoreMods(CoreModManager.java:349)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.CoreModManager.handleLaunch(CoreModManager.java:217)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupHome(FMLLaunchHandler.java:90)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupClient(FMLLaunchHandler.java:67)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.FMLLaunchHandler.configureForClientLaunch(FMLLaunchHandler.java:34)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.common.launcher.FMLTweaker.injectIntoClassLoader(FMLTweaker.java:125)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraft.launchwrapper.Launch.launch(Launch.java:115)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: Caused by: java.lang.ClassNotFoundException: org.spongepowered.asm.mixin.MixinEnvironment
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.net.URLClassLoader$1.run(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.net.URLClassLoader$1.run(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.security.AccessController.doPrivileged(Native Method)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.net.URLClassLoader.findClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:106)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   ... 15 more
[08:57:59] [main/ERROR] [FML]: An error occurred trying to configure the minecraft home at C:\Users\Ryan\AppData\Roaming\.minecraft for Forge Mod Loader
java.lang.NoClassDefFoundError: org/spongepowered/asm/mixin/MixinEnvironment
    at org.spongepowered.mod.SpongeCoremod.<init>(SpongeCoremod.java:38) ~[sponge-1.8-11.14.0.1281-SNAPSHOT-release.jar:1.8-11.14.0.1281-SNAPSHOT+unknown-b0.git-unknown]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_05]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_05]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_05]
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_05]
    at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_05]
    at net.minecraftforge.fml.relauncher.CoreModManager.loadCoreMod(CoreModManager.java:461) ~[fml-1.8-8.0.16.1021-1.8.jar:?]
    at net.minecraftforge.fml.relauncher.CoreModManager.discoverCoreMods(CoreModManager.java:349) ~[fml-1.8-8.0.16.1021-1.8.jar:?]
    at net.minecraftforge.fml.relauncher.CoreModManager.handleLaunch(CoreModManager.java:217) ~[fml-1.8-8.0.16.1021-1.8.jar:?]
    at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupHome(FMLLaunchHandler.java:90) [fml-1.8-8.0.16.1021-1.8.jar:?]
    at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupClient(FMLLaunchHandler.java:67) [fml-1.8-8.0.16.1021-1.8.jar:?]
    at net.minecraftforge.fml.relauncher.FMLLaunchHandler.configureForClientLaunch(FMLLaunchHandler.java:34) [fml-1.8-8.0.16.1021-1.8.jar:?]
    at net.minecraftforge.fml.common.launcher.FMLTweaker.injectIntoClassLoader(FMLTweaker.java:125) [fml-1.8-8.0.16.1021-1.8.jar:?]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:115) [launchwrapper-1.11.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
Caused by: java.lang.ClassNotFoundException: org.spongepowered.asm.mixin.MixinEnvironment
    at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.8.0_05]
    at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.8.0_05]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_05]
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_05]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_05]
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[?:1.8.0_05]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_05]
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:106) ~[launchwrapper-1.11.jar:?]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_05]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_05]
    ... 15 more
Exception in thread "main" [08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.NoClassDefFoundError: org/spongepowered/asm/mixin/MixinEnvironment
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at org.spongepowered.mod.SpongeCoremod.<init>(SpongeCoremod.java:38)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.reflect.Constructor.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.Class.newInstance(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.CoreModManager.loadCoreMod(CoreModManager.java:461)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.CoreModManager.discoverCoreMods(CoreModManager.java:349)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.CoreModManager.handleLaunch(CoreModManager.java:217)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupHome(FMLLaunchHandler.java:90)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupClient(FMLLaunchHandler.java:67)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.relauncher.FMLLaunchHandler.configureForClientLaunch(FMLLaunchHandler.java:34)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraftforge.fml.common.launcher.FMLTweaker.injectIntoClassLoader(FMLTweaker.java:125)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraft.launchwrapper.Launch.launch(Launch.java:115)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: Caused by: java.lang.ClassNotFoundException: org.spongepowered.asm.mixin.MixinEnvironment
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.net.URLClassLoader$1.run(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.net.URLClassLoader$1.run(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.security.AccessController.doPrivileged(Native Method)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.net.URLClassLoader.findClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:106)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[08:57:59] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:   ... 15 more

IOException on build

org.gradle.internal.UncheckedException: java.io.IOException: Operation not supported
at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:39)
at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:83)
at org.gradle.cache.internal.DefaultCacheAccess.onStartWork(DefaultCacheAccess.java:344)
at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:186)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:102)
at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.useCache(DefaultCacheFactory.java:183)
at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:54)
at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository.loadHistory(CacheBackedTaskHistoryRepository.java:89)
at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository.getHistory(CacheBackedTaskHistoryRepository.java:41)
at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository.getStateFor(DefaultTaskArtifactStateRepository.java:54)
at org.gradle.api.internal.changedetection.changes.ShortCircuitTaskArtifactStateRepository.getStateFor(ShortCircuitTaskArtifactStateRepository.java:46)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:49)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:296)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:105)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:85)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:81)
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:39)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.Main.doAction(Main.java:33)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:58)
Caused by: java.io.IOException: Operation not supported
at org.gradle.cache.internal.filelock.LockStateAccess.tryLock(LockStateAccess.java:83)
at org.gradle.cache.internal.filelock.LockFileAccess.tryLockState(LockFileAccess.java:83)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.lockStateRegion(DefaultFileLockManager.java:312)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.lock(DefaultFileLockManager.java:255)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.(DefaultFileLockManager.java:127)
at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:80)
... 54 more

Invalid character constant

When I build Sponge, I get an error that says "Invalid character constant". I fixed it by replacing '§' with just '§'. But then I get "Unmappable character for encoding UTF-8.

ASM / EventTransformer

In EventTransformer.java

// TODO: This is a temporary thing to make PreInit work. 
// The different things needed to make different events work should be abstracted.
if (interf != null && PreInitializationEvent.class.isAssignableFrom(interf)) {
    ASMHelper.generateSelfForwardingMethod(classNode, "getConfigurationDirectory", "getModConfigurationDirectory",
     Type.getType(File.class));
    ASMHelper.generateSelfForwardingMethod(classNode, "getPluginLog", "getModLog",
    Type.getType(Logger.class));
}

I could use some help understanding how this works and what the details are that are "TODO". I'm chomping at the bit to get a few more Event implemented and if I can decipher the Rosetta-Stone on Forge-2-Sponge Transformation for Events I can get moving.

In the reobf I found the class name and added as such:

events.put("net.minecraftforge.event.ServerChatEvent.class", AsyncPlayerChatEvent.class);

But this doesn't help fire the event as intended. It fails in SpongeEventManager.register

        if (BaseEvent.class.isAssignableFrom(eventType)) {
            implementingEvent = eventType;
        } else {
            implementingEvent = EventRegistry.getImplementingClass(eventType);
        }

        if (implementingEvent == null) {
            SpongeGame.getInstance().getLogger().warn("Unknown event type " + eventType.getCanonicalName() + ", registration failed");

implementingEvent comes back null

I think there's more to it than just this than I can currently see. A quick and dirty primer on what the Transformer is supposed to do for a few more types of Event would be really helpful. I want to make this work.

Error in Setup Description

In the part with the setup in the Description it says:

gradle setupDecompWorkspace --refresh-dependencies

but it should be:

gradlew setupDecompWorkspace --refresh-dependencies

Javadoc error

Hi I have this error when I compile sponge.

FAILURE: Build failed with an exception.

  • Where:
    Build file 'F:\sponge\build.gradle' line: 256

  • What went wrong:
    A problem occurred evaluating root project 'Sponge'.

    Could not find property 'javadoc' on task set.

  • Try:
    Run with --info or --debug option to get more log output.

  • Exception is:
    org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'Sponge'.
    at >org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:187)
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:39)
    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.evaluate(LifecycleProjectEvaluator.java:55)
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:470)
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:79)
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:31)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:128)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:105)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:85)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:81)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:39)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
    at org.gradle.launcher.Main.doAction(Main.java:33)
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:58)
    Caused by: groovy.lang.MissingPropertyException: Could not find property 'javadoc' on task set.
    at org.gradle.api.internal.AbstractDynamicObject.propertyMissingException(AbstractDynamicObject.java:43)
    at org.gradle.api.internal.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:35)
    at org.gradle.api.internal.CompositeDynamicObject.getProperty(CompositeDynamicObject.java:94)
    at org.gradle.api.internal.tasks.DefaultTaskContainer_Decorated.getProperty(Unknown Source)
    at build_u6d1j3l8gi2ba8iaou33npftt$_run_closure17.doCall(F:\sponge\build.gradle:256)
    at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:59)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:130)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:110)
    at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:473)
    at org.gradle.api.internal.project.AbstractProject.task(AbstractProject.java:840)
    at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:225)
    at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:129)
    at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147)
    at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.java:79)
    at build_u6d1j3l8gi2ba8iaou33npftt.run(F:\sponge\build.gradle:254)
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52)
    ... 34 more

BUILD FAILED

Total time: 1 mins 5.031 secs

Damageable interface conflicts with EntityLivingBase

Currently the only conflicting issues are the float based health methods.

Minecraft (EntityLivingBase):

    float getHealth()
    void setHealth(float amount)
    void damageEntity(DamageSource source, float amount) // This one isn't really an issue due to the different definition

Sponge (Damageable):

    double getHealth()
    void setHealth(double amount)
    void damage(double amount)

The clean implementation of the SpongeAPI seems to be with Mixins, however a Mixin class must extend the same parent class as the class it mixes into. So to implement Player you have to both extend EntityPlayer (a subclass of EntityLivingBase) and implement the Player interface from Sponge's API. Because now you have to have methods that differ only by return type, the code will run, but not compile. @Shadow does nothing here because the methods are defined by the fixed base class.

Even by injecting the fixed methods into EntityLivingBase isn't a solution because EntityPlayerMP needs a Mixin also. Which means that while the runtime EntityLivingBase is fixed at runtime, your player Mixin won't compile because of the compile time conflict.

README is not clear on just building Sponge.

The README states that setting up the Sponge project for importing into an IDE requires running gradlew setupDecompWorkspace but for building, it is unclear whether running gradlew setupDecompWorkspace is necessary.

Instructions need to be clearer for the general populace wanting to simply build Sponge without an IDE involved.

HELP !

Hello I'm french and I can not use sponge ... Can you help me thank you

User implementation requires discussion

I made an attempt today to implement the User interface and quickly realized that Minecraft has no comparable concept, and that the differences between Sponge and vanilla Minecraft's inheritance tree make it somewhat difficult to find an appropriate place to do so.

Most of the methods from User can theoretically be implemented within Minecraft's EntityPlayer class; however, EntityPlayer is comparable to Sponge's Human, which, being a superclass of User, makes this solution unfeasible. Likewise, while it could also be implemented in Minecraft's EntityPlayerMP (comparable to Sponge's Player), not all Users are necessarily Player entities, and the methods would remain unimplemented for such cases.

Currently, I'm unsure of how to proceed, and would appreciate input on the matter.

BaseEvent has been removed

When any class is loaded that has BaseEvent as it's super class (Custom events included). It's automatically rewritten to use forge based cancellation methods. However BaseEvent was removed so now either we need to change how that's handled, or switch to GameEvent which seems to have the same spirit.

Support for firing Sponge events that quack like Forge events

Currently we have no way to fire Sponge events in a way that also activates handlers listening to the equivalent Forge event. For example, the "PlayerBreakBlockEvent" has an equivalent in Forge and so it should trigger both Forge and Sponge event handlers.

Requirements:

  • The event handlers must called in the right order, interweaving Sponge and Forge event handlers.
  • Raising the Forge event must also raise the Sponge-equivalent event.
  • Raising the Sponge event must also raise the Forge-equivalent event.
  • It should be possible for developers to extend Sponge events and raise them, while also raising equivalent Forge events if relevant.

The following solutions have been on the table for the past few months, but none are satisfactory:

  • Generate monolithic classes at runtime that implement both the Sponge and Forge event interfaces (as Forge intends to switch to interfaces for events). This has the downside of runtime conflict involving method signatures.
  • Modify the event bus code to handle firing "paired" events. Firing the Sponge event would, for example, also trigger the equivalent Forge event handlers who would receive a Forge event version of the Sponge event.

Player.getName() throws an AbstractMethodError

[03:37:23] [Server thread/WARN] [SpongeAPIMod]: A handler raised an error when handling an event
java.lang.AbstractMethodError: net.minecraft.entity.player.EntityPlayerMP.getName()Ljava/lang/String;
at com.me4502.Kingdoms.Kingdoms.onBlock(Kingdoms.java:22) ~[Kingdoms.class:?]
at org.spongepowered.mod.event.handler.EventHandler_Kingdoms_onBlock1.handle(Unknown Source) ~[?:?]
at org.spongepowered.mod.event.SpongeEventBus.callListener(SpongeEventBus.java:197) [SpongeEventBus.class:1.8-11.14.0.1282-SNAPSHOT+unknown-b0.git-unknown]
at org.spongepowered.mod.event.SpongeEventBus.post(SpongeEventBus.java:250) [SpongeEventBus.class:1.8-11.14.0.1282-SNAPSHOT+unknown-b0.git-unknown]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:55) [EventBus.class:?]
at net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(ForgeHooks.java:522) [ForgeHooks.class:?]
at net.minecraft.server.management.ItemInWorldManager.func_180237_b(ItemInWorldManager.java:280) [qx.class:?]
at net.minecraft.server.management.ItemInWorldManager.func_180784_a(ItemInWorldManager.java:154) [qx.class:?]
at net.minecraft.network.NetHandlerPlayServer.func_147345_a(NetHandlerPlayServer.java:526) [rj.class:?]
at net.minecraft.network.play.client.C07PacketPlayerDigging.func_180763_a(SourceFile:40) [ml.class:?]
at net.minecraft.network.play.client.C07PacketPlayerDigging.func_148833_a(SourceFile:10) [ml.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13) [ih.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_25]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_25]
at net.minecraftforge.fml.common.FMLCommonHandler.callFuture(FMLCommonHandler.java:676) [FMLCommonHandler.class:?]
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:655) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:364) [po.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:598) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:478) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25]

JarLoader & MCMOD.info

I initially tried to make this a PR but eventually gave up. I almost ended up breaking this computer from rage trying to fix it. I'm just giving up and posting this issue with some links to the code instead, then I'll go find something around the house I don't need nor want that I would have tossed out soon anyway, and destroy it it.

You should add an MCMOD.info, I created one that might work here:
http://pastebin.com/YypKeqhF

I also wrote a JarLoader that could be used for loading Sponge plugins. I don't expect you to directly use it, but you could use it as is or base something off of it if you wanted. Just bringing an idea to the table for how to load plugins:
http://pastebin.com/nFy7B7W6

This SHOULD be a PR, but I couldn't take it anymore.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.