Jump to content

[1.18.1] Connecting machines with Generator


Recommended Posts

Posted (edited)

Hi

(I'm trying to build my first, tech mod. I looked up several tutorial videos and their code, and tried not to use any deprecated things.)🙂

I finished making generators a few days ago, and I'm wondering how it should work(cables, etc.)

In my case, I thought that cables like IC2 cables would be better than Immersive Engineering's.

I'm not sure about how it should send&receive energy with it. I couldn't find any examples.

One way I'm thinking :

the machine(which receives the energy and consumes) tracks the connected cable. If it's connected to the generator which has energy stored, this machine works.

Mod github repository

https://github.com/hawon10617/SpaceSim

Edited by 1HA
Posted

for a basic logic you can use BlockState Properties similar to Redstone. If you need so advanced logic you can use the EnergyCapability from Forge in combination with BlockEntities

  • Like 1
Posted
On 2/10/2022 at 6:35 AM, 1HA said:

the machine(which receives the energy and consumes) tracks the connected cable. If it's connected to the generator which has energy stored, this machine works.

How do you plan on determining whether or not the bolded statement is true?
(by the way, the way IC2 works is that generators "push" power into cables and cables push that power into all connected adjacent blocks that accept power).

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)
8 hours ago, Draco18s said:

How do you plan on determining whether or not the bolded statement is true?
(by the way, the way IC2 works is that generators "push" power into cables, and cables push that power into all connected adjacent blocks that accept power).

Well, I'm working on it.

First of all, thank you for your information about IC2. I had no idea about "pushing" the power from the generator. It helped me a lot.

I made cables with BlockEntity. Because I thought that the cables should check their connection in every tick. And I did almost the same as what you said.

 

During this, I got some weird error, so I just committed and pushed it to GitHub.

Error: Cannot resolve method 'of(<method reference>, net.hawon.spacesim.common.block.CopperCableBlock)'

-> from "BlockEntityInit.java" : 27

Maybe I think this error is triggered because something's missing. I think I can fix this.

*CopperCableBlockEntity.java is not a final code. It's just a test code. 

===============

By the way, what do you mean "bolded" statement?

Edited by 1HA
Posted
3 hours ago, 1HA said:

By the way, what do you mean "bolded" statement?

I bolded a section in the quote of your previous post.

 

3 hours ago, 1HA said:

Error: Cannot resolve method 'of(<method reference>, net.hawon.spacesim.common.block.CopperCableBlock)'

-> from "BlockEntityInit.java" : 27

Maybe I think this error is triggered because something's missing. I think I can fix this.

Your CopperCableBlockEntity doesn't have a constructor that matches the parameters being passed.

Compare:

With:

I'm a bit less familiar with 1.17 and newer and how the various lambda stuff is defined, but I can compare the other block entities you have that do work with the one that doesn't: Your other two subclass and only have 2 parameters in their constructor, and generate the third for super.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)
11 hours ago, Draco18s said:

I bolded a section in the quote of your previous post.

 

Your CopperCableBlockEntity doesn't have a constructor that matches the parameters being passed.

Compare:

With:

I'm a bit less familiar with 1.17 and newer and how the various lambda stuff is defined, but I can compare the other block entities you have that do work with the one that doesn't: Your other two subclass and only have 2 parameters in their constructor, and generate the third for super.

Yeah, I also checked what caused the error last night(Now it's 1 pm in Seoul, Korea) quoting after you

 

I made both GeneratorBlockEntity and ExampleChestEntity with InventoryBlockEntity because they both need item handlers and they share basic logic. But in the case of CopperCableEntity, it was a kinda experiment and never needed for inv or containers. Maybe I should make a new "CableEntity" class. Then CoppperCableEntity will extend it as a super.

I'm not sure about making it with BlockEntity is right. In my case, each cable is made with BlockEntity, and as you know BlockEntity takes a lot of computing tasks, so I'm worried about whether it's not too "heavy". I know that in some parts, we have to let it go, but I'm just worried.

And... Your bolded statement. So, the cable works the same as IC2 one. It automatically attaches to the generator or any other machines if they're neighbored. Tell me if I need extra conditions for this.

Edited by 1HA
Posted
17 hours ago, 1HA said:

Tell me if I need extra conditions for this.

Do this (top down):

G┬┐
 └┴M

where G is the generator and the M is the machine and the four others are cables.

Will your code crash, infinite loop, or transmit power?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)
17 hours ago, Draco18s said:

Do this (top down):

G┬┐
 └┴M

where G is the generator and the M is the machine and the four others are cables.

Will your code crash, infinite loop, or transmit power?

Well, still almost nothing, 'cause I think I have to start from the scratch "again".

I think I should think more about the logic. heww...

Now I'm testing a few things with IC2 cable. 

 

About the Code Difficulty >

  1. It is hard to know how to use CapabilityEnergy.
  2. Especially, sendOutPower() (GeneratorBlockEntity:93).

And there are some serious logical problems... I'll do it tomorrow.

I really appreciate your help 

Edited by 1HA
Posted (edited)
On 2/15/2022 at 6:42 AM, Draco18s said:

Do this (top down):

G┬┐
 └┴M

where G is the generator and the M is the machine and the four others are cables.

Will your code crash, infinite loop, or transmit power?

Glad to tell u that I found a solution.

Now I'm trying to add a new custom blockstateproperty.

I hope this will work 

Edited by 1HA

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

    • that happens every time I enter a new dimension.
    • This is the last line before the crash: [ebwizardry]: Synchronising spell emitters for PixelTraveler But I have no idea what this means
    • What in particular? I barely used that mod this time around, and it's never been a problem in the past.
    • 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" } } } my entire project:https://github.com/kevin051606/DERP-Mod/tree/Derp-1.0-1.20
  • Topics

×
×
  • Create New...

Important Information

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