Jump to content

[1.4.6][Concept/WIP] ThermoCraft


Recommended Posts

Posted

ThermoCraft will be a mod that implements ambient air temperature and effects related to it to Minecraft. Players wanting to explore cold biomes will have to put a jacket on, and those who build their houses in the desert must install air conditioning.

 

The full WIP design document is here (in PDF format): http://www.filedropper.com/thermocraftdesigndoc (http://www.mediafire.com/view/?2ik6az65k15uwru in case filedropper breaks)

 

Here's the short version: The mod adds a temperature value to every air block in the game, which they all try to equalize with each-other. The player also has a heat value, and if this gets too far from 98 F then he starts to get status effects and eventually dies. To prevent this, the player can wear clothes that protect him (players that start in cold or hot biomes spawn with clothing), but that only lasts so long; to remain in a cold or hot biome indefinitely, the player needs to build an HVAC system in his house with a heat exchanger, which takes BC/IC2 energy.

 

As you can see, I've put a pretty significant amount of planning into this already. However, my modding skills are not up-to-par (Forge modding seems pretty... obtuse might be the right word. Very difficult to get started). It'd be great if I could have a mentor of some sort to answer basic questions and offer suggestions on how to do things.

 

Anyone have any comments?

 

 

Posted

Added a summary of the document's contents, since it's kind of silly to expect people to download something just to read your dumb ideas. :P

 

Disappointing lack of interest, though. "ur dum go craw in a holl and die" type responses would be better than silence.

 

Well, alright, maybe not.

  • 3 weeks later...
Posted

It's an interesting thought, though from a technical perspective, you'll probably want to tweak it. If you consider that a room with a 5x5x3 interior has 75 air blocks, each trying to normalize with 6 neighbors, that's as many 450 checks per room's worth of air. Even if you get it to only worry about blocks adjacent to places that just changed, dumping small amounts of heat would create large cascades of processing.

 

A different way you may consider thinking about it is having "zones" that modify the ambient biome based temperature. You get nearly the same apparent net result, but without all the ongoing computational overhead. If you wanted, you could even have zones defined by a radial search, rather than a simple cube, so that walls matter. The only thing you'd be losing out on is the snow/lava based effects. Those you could emulate to a degree with "constant" temperature zones, that transition from a set temperature to the biome temperature.

 

All in all it would add a layer of challenge that isn't there now, though you may consider how temperature can also help some things?

Posted

Worst comes to worst, I can just do the same thing Elorram did with Blutricity: make it work really really slowly, spreading those 450 checks over a hundred ticks.

 

 

I'm not totally sure how your 'zone' idea would work, but one way it might work based on that idea was if every uninterrupted square of air blocks on one z-level were treated as one entity, or something.

 

Probably the best thing to do would be to code up a rudimentary form of the simulation and see what happens. I'm not sure if I mentioned it in the design doc, but I think I might not run the simulation on any air block that can see the sky. That ought to save a pretty good amount of computation.

 

It'd be neat for beneficial temperature effects to exist, but I can't really think of any.

 

Posted

you could make it so that if you are in a warm area, bees from forestry could use that temperature instead of the biome, and also some engines could take longer or shorter depending on the temperature to heat up. also those engines when heated up should output warmth.

Posted

That might work- I'd have to talk to Sengir about making the mods talk to eachother, and the Minecraft modding community seems pretty closed, so that's not likely to happen 'till I'm famous or something, but it'd probably be a piece of cake on both ends once contact was made. And the mod itself was made, of course.

 

Engines and such making ThermoCraft heat is another thing I'm planning, which might be a bit easier to do since BuildCraft extends an API. There's one advantage ThermoCraft could offer- engines don't heat up and explode as fast in a cold area.

 

I'm gonna try to figure out Forge modding again over the weekend. If I make any progress I'll knock up a prototype and see if it works or drags the game's FPS down to hell.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Im trying to build my mod using shade since i use the luaj library however i keep getting this error Reason: Task ':reobfJar' uses this output of task ':shadowJar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. So i try adding reobfJar.dependsOn shadowJar  Could not get unknown property 'reobfJar' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. my gradle file plugins { id 'eclipse' id 'idea' id 'maven-publish' id 'net.minecraftforge.gradle' version '[6.0,6.2)' id 'com.github.johnrengelman.shadow' version '7.1.2' id 'org.spongepowered.mixin' version '0.7.+' } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' apply plugin: 'com.github.johnrengelman.shadow' version = mod_version group = mod_group_id base { archivesName = mod_id } // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(17) //jarJar.enable() println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" minecraft { mappings channel: mapping_channel, version: mapping_version copyIdeResources = true runs { configureEach { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' arg "-mixin.config=derp.mixin.json" mods { "${mod_id}" { source sourceSets.main } } } client { // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. property 'forge.enabledGameTestNamespaces', mod_id } server { property 'forge.enabledGameTestNamespaces', mod_id args '--nogui' } gameTestServer { property 'forge.enabledGameTestNamespaces', mod_id } data { workingDirectory project.file('run-data') args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') } } } sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { flatDir { dirs './libs' } maven { url = "https://jitpack.io" } } configurations { shade implementation.extendsFrom shade } dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" implementation 'org.luaj:luaj-jse-3.0.2' implementation fg.deobf("com.github.Virtuoel:Pehkui:${pehkui_version}") annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' minecraftLibrary 'luaj:luaj-jse:3.0.2' shade 'luaj:luaj-jse:3.0.2' } // Example for how to get properties into the manifest for reading at runtime. tasks.named('jar', Jar).configure { manifest { attributes([ 'Specification-Title' : mod_id, 'Specification-Vendor' : mod_authors, 'Specification-Version' : '1', // We are version 1 of ourselves 'Implementation-Title' : project.name, 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors, 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", "TweakOrder" : 0, "MixinConfigs" : "derp.mixin.json" ]) } rename 'mixin.refmap.json', 'derp.mixin-refmap.json' } shadowJar { archiveClassifier = '' configurations = [project.configurations.shade] finalizedBy 'reobfShadowJar' } assemble.dependsOn shadowJar reobf { re shadowJar {} } publishing { publications { mavenJava(MavenPublication) { artifact jar } } repositories { maven { url "file://${project.projectDir}/mcmodsrepo" } } }  
    • Todas as versões do Minecraft Forge são repentinamente tela preta, mesmo sem mods (tentei reinstalar o Minecraft original, Java, atualizar os drivers não funciona)
    • When i join minecraft all ok, when i join world all working fine, but when i open indentity menu, i get this The game crashed whilst unexpected error Error: java.lang.NullPointerException: Cannot invoke "top.ribs.scguns.common.Gun$Projectile.getDamage()" because "this.projectile" is null crash report here https://paste.ee/p/0vKaf
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.