Greetings

Panserbjoern

Member
Contributor
Architecture
Hello

My name is Manuel. I'm from switzerland and i am a programmer. Currently, i am working in a kitchen, though. I mostly code in Java and mostly for my own learning.

I like the idea of minecraft and i was looking for an opensource minecraft-like game.

Terasology looks very promising!

Can anyone help me out in how to setup Terasology for eclipse? I would like to study the code and maybe i will be able to contribute something in the future.

I cloned the git repository via this command:

Code:
git clone https://github.com/MovingBlocks/Terasology.git
Then i installed gradle and tried to execute the gradle script using this command:

Code:
gradle --stacktrace eclipse
Unfortunately it did not work, i got the following error message:

Code:
FAILURE: Build failed with an exception.

* Where:

Build file '/home/mbrotz/Entwicklung/eclipse_workspace_juno/Terasology/build.gradle' line: 11

* What went wrong:

A problem occurred evaluating root project 'Terasology'.

Cause: org/codehaus/groovy/transform/powerassert/ValueRecorder

Cause: org.codehaus.groovy.transform.powerassert.ValueRecorder

* Try:

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

* Exception is:

org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'Terasology'.

    at org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:51)

    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127)

    at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)

    at org.gradle.configuration.DefaultProjectEvaluator.evaluate(DefaultProjectEvaluator.java:38)

    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:487)

    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:71)

    at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:23)

    at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:21)

    at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:38)

    at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:35)

    at org.gradle.api.internal.project.AbstractProject.configure(AbstractProject.java:463)

    at org.gradle.api.internal.project.AbstractProject.allprojects(AbstractProject.java:458)

    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)

    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:141)

    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)

    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:80)

    at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)

    at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)

    at org.gradle.launcher.ExceptionReportingAction.execute(ExceptionReportingAction.java:32)

    at org.gradle.launcher.ExceptionReportingAction.execute(ExceptionReportingAction.java:21)

    at org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:219)

    at org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:203)

    at org.gradle.launcher.Main.execute(Main.java:55)

    at org.gradle.launcher.Main.main(Main.java:40)

    at org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)

    at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)

    at org.gradle.launcher.GradleMain.main(GradleMain.java:24)

Caused by: java.lang.NoClassDefFoundError: org/codehaus/groovy/transform/powerassert/ValueRecorder

    at org.gradle.plugins.ide.eclipse.model.EclipseProject.buildCommand(EclipseProject.groovy:158)

    at org.gradle.plugins.ide.eclipse.model.EclipseProject$buildCommand.call(Unknown Source)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin$_configureEclipseProject_closure2_closure13.doCall(EclipsePlugin.groovy:83)

    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:61)

    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:31)

    at org.gradle.api.internal.AbstractDomainObjectCollection$1.execute(AbstractDomainObjectCollection.java:97)

    at org.gradle.api.internal.AbstractDomainObjectCollection.all(AbstractDomainObjectCollection.java:60)

    at org.gradle.api.internal.AbstractDomainObjectCollection.all(AbstractDomainObjectCollection.java:65)

    at org.gradle.api.internal.AbstractDomainObjectCollection.withType(AbstractDomainObjectCollection.java:76)

    at org.gradle.api.DomainObjectCollection$withType$0.call(Unknown Source)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin$_configureEclipseProject_closure2.doCall(EclipsePlugin.groovy:82)

    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:61)

    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:31)

    at org.gradle.api.internal.project.AbstractProject.configure(AbstractProject.java:874)

    at org.gradle.api.Project$configure.call(Unknown Source)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin.maybeAddTask(EclipsePlugin.groovy:287)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin.this$3$maybeAddTask(EclipsePlugin.groovy)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin$this$3$maybeAddTask.callCurrent(Unknown Source)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin.configureEclipseProject(EclipsePlugin.groovy:69)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin.this$3$configureEclipseProject(EclipsePlugin.groovy)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin$this$3$configureEclipseProject.callCurrent(Unknown Source)

    at org.gradle.plugins.ide.eclipse.EclipsePlugin.onApply(EclipsePlugin.groovy:57)

    at org.gradle.plugins.ide.internal.IdePlugin.apply(IdePlugin.groovy:37)

    at org.gradle.plugins.ide.internal.IdePlugin.apply(IdePlugin.groovy)

    at org.gradle.api.internal.plugins.DefaultProjectsPluginContainer.providePlugin(DefaultProjectsPluginContainer.java:103)

    at org.gradle.api.internal.plugins.DefaultProjectsPluginContainer.addPluginInternal(DefaultProjectsPluginContainer.java:67)

    at org.gradle.api.internal.plugins.DefaultProjectsPluginContainer.apply(DefaultProjectsPluginContainer.java:37)

    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyPlugin(DefaultObjectConfigurationAction.java:101)

    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:32)

    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:72)

    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:114)

    at org.gradle.api.internal.project.AbstractProject.apply(AbstractProject.java:854)

    at org.gradle.api.Project$apply.call(Unknown Source)

    at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.groovy:35)

    at org.gradle.api.Script$apply.callCurrent(Unknown Source)

    at build_2qoujstgkkn0miebsbf2p317v6.run(/home/mbrotz/Entwicklung/eclipse_workspace_juno/Terasology/build.gradle:11)

    at org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:49)

    ... 26 more

Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.transform.powerassert.ValueRecorder

    ... 63 more

BUILD FAILED

Total time: 3.975 secs
Some support would be great! I am using Ubuntu 12.04.

Thank you very much!

Panserbjoern
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Welcome to the forum, Panserbjoern :)

Have you seen this wiki article? And there is this thread dealing with setting up TS in eclipse. You can find a youtube video there, so I think it coul help solving your problem. At the moment, we still have some Groovy files, so you'll need the Eclipse Groovy Plugin.
If you still encounter some issues, jump on the IRC and hope that someone is online (and NOT afk :barefoot:) to help you out.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Heya Panserbjoern and welcome! :)

Skaldarnar has included some of the initial pointers, one bit that may matter is using "gradlew" rather than "gradle" to run commands. That'll make sure you're using the right version of Gradle, which is based on Groovy, so a bad version could explain the stacktrace above. Give it a shot and let us know if it helps :geek:
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
He's using linux, he can't use gradlew.

That error seems to indicate some sort of issue with the gradle set up though. Make sure you are using groovy 1.6.3
 

Panserbjoern

Member
Contributor
Architecture
Hi Skaldarnar and Cervator and Immortius

Thank you very much for your answers! I got it up and running now and i am digging through the code.

I would like to contribute something to the project, unfortunately i am not very experienced in game development, though.

Can you point out some programming tasks that might be worth looking at?
 

Panserbjoern

Member
Contributor
Architecture
By the way, Immortius, i used gradlew for the eclipse setup and it worked like a charm. Though i haven't yet tried to recompile any changes...
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
You're welcome, Panserbjoern :)

Have a look at the project overview and project state here in the forum for open tasks. On github you can find a list of open issues. Maybe a good starting point is to follow one the modding tutorials (design a new block and give it the inventory property or something).

If you've found a topic you are interested in, don't hesitate and talk to the curator or contributor!

Immortius, gradlew runs fine for me on ArchLinux as well, never had problems with it. Why do you think it won't work on Linux?
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
The gradlew bash script was broken at one point, I think due to a line ending issue. I guess that's fixed now :)

Panserbjoern - any particular topic you might find more interesting than others? In-game content, GUI stuff, wiki / automated doc updates, 3D wizardry, terrain generations, creatures, etc? I know there's a lot of stuff we need and it is easy to get lost in all the todo items :)

If you want something real easy and kinda goofy to start with you could try making us some cheese wheels using a custom block shape packaged as a mod :D
 

Panserbjoern

Member
Contributor
Architecture
Cervator, whats about the sparse chunks? I've read the discussion about sparse arrays to store block-data. Is that still an issue? I did not find any code...

Maybe i might take a look at sparse chunks?

Greetings, Panserbjoern
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Cervator, whats about the sparse chunks? I've read the discussion about sparse arrays to store block-data. Is that still an issue? I did not find any code...

Maybe i might take a look at sparse chunks?

Greetings, Panserbjoern
Most definitely! dei did post a prototype for a sparse chunk array but the pastebin entry is gone now - I don't remember if anything made it to GitHub. That discussion is over here - have you read that whole thread?

Chunk/block storage is a very big and meaty topic and you'd be very welcome to work on some improvements there. The height limit thread would also be relevant, as would the idea of allowing mods to include new per-block / per-chunk data.

In quick summary off the top of my head:
  • Allow chunks to stack vertically
  • Increase the size of the block ID (I'm uncertain if we want bit manipulation for this, lighting, and whatever else, or individual data arrays)
  • Do per-chunk summary data such as counting the most common block and possibly using a lighter data structure (the "sparse chunk")
  • Adding more support for advanced liquids/pressure/integrity
  • Introduce some sort of relative "surface" counter/tracking system that can be used for world map / height map stuff, local mini map calculations, region naming (flavor), maybe lighting system
More details in the related thread, but no lack of neat stuff to look at! :)
 

Panserbjoern

Member
Contributor
Architecture
Hi Cervator

Sorry for the late answer. I am currently chewing through the code for chunk generation, caching and storage, etc...

To keep it simple for the moment, i am rewriting the implementation of TeraArray and TeraSmartArray. The goal is to write a sparse implementation of TeraArray and TeraSmartArray.

That will not be sufficient for the needs of Terasology in the long term, of course. Though its a good point to start, i think.

Now in the course of doing so, i have found two bugs not directly related to what i am doing now.

I have fixed them in my local copy and would like to propose the patches.

How do i do that ???
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Aha! I thought mbrotz avatar on GitHub looked too familiar and timed well to be a coincidence :D

Want to add the intro header to your post and note that's your ID on Github? Helps keep organized!
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Ooohhh c't did include a note about Terasology or a build on the CD/DVD? begla mentioned that might happen :)

And thanks!
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Woo! We're in dead-tree-format at last! Thanks for that picture :omg:
 
Top