Jump to content

[1.11.2] How do I program a block with redstone properties


The_G0dPiXeL
 Share

Recommended Posts

What I am trying to do is create a block that does AND gate logic, which has 2 sides for input and 1 side for output.

I have no code except the block registration because I have literally no clue where to start, the API for redstone blocks is terrible and I tried to look at the code for the Observer block and that gave me a little bit of information but I have no idea how to modify that code to my liking as I have no idea what any of those functions do. I've looked everywhere for documentation but alas I could not find a single tutorial, so I had to turn to the forums. I'm wondering if anybody has a modding library or some code that I could use make this.

 

I'm sorry if this seems like I'm asking people to do my homework for me but I did hours upon hours of research and trial and error, yet I can't make it work, so I need help from the community.

Edited by The_G0dPiXeL
Link to comment
Share on other sites

Mmm, mind you I have never done any redstone before, but from ten minutes of looking at Minecraft code, you just (and others please correct me if I am wrong) need to create a propertyEnum, set all of the property states and meta, have canProvidePower set to return true, then (look at how Minecraft discriminates between what "strong" and "weak" is, I choose weak, cause that might be more of what you want, if you want to have behavior like a comparator, set you getStrongPower to your weak power) have getWeakPower return an int value (between and inclusive between 0 and 15) based on the property state. For you case, specifically, you should probably also want to override onNeighborChanged so to detect when power is being provided. Beyond that, everything is self-explanatory, just look at how Minecraft does it, tends to be the best way.  

Link to comment
Share on other sites

1 minute ago, The_G0dPiXeL said:

Alright, so I did some more testing and stuff and I got the output working but I still don't know how to get inputs from both sides

 

https://pastebin.com/WXSYfmpc

from this point, it should be pretty easy all you need to do is chek if on a left and right sides there is power and if yes then give output

 

PS I don't think you should use a variable for this because it is going to be shared by all the ANDGate blocks in Mc 

Link to comment
Share on other sites

51 minutes ago, lukas2005 said:

from this point, it should be pretty easy all you need to do is chek if on a left and right sides there is power and if yes then give output

 

PS I don't think you should use a variable for this because it is going to be shared by all the ANDGate blocks in Mc 

Well, I don't see a function that gives an EnumFacing object that also watches neighbors, so can you give me some ideas.

 

Also how come I can't use a boolean, that's kinda stupid, I'll make it a PropertyBool if that is the case.

Link to comment
Share on other sites

You can NEVER use instance fields to store information about individual blocks (or items), because they are singletons. There is only one instance of that block in the entire game, so if you change that isOn field, it will effect every block of that type. That's what blockstates are for.

 

If your block is supposed to face a specific direction and behave accordingly (like a comparator, repeater, observer, or etc), then you will also need a facing property in your blockstate.

Link to comment
Share on other sites

2 minutes ago, Jay Avery said:

You can NEVER use instance fields to store information about individual blocks (or items), because they are singletons. There is only one instance of that block in the entire game, so if you change that isOn field, it will effect every block of that type. That's what blockstates are for.

 

If your block is supposed to face a specific direction and behave accordingly (like a comparator, repeater, observer, or etc), then you will also need a facing property in your blockstate.

 

I tried using a PropertyBool but it's not working

 

https://pastebin.com/u0tK9BVk

Link to comment
Share on other sites

8 minutes ago, Jay Avery said:

Oh sorry, I only read the beginning of the page which was createBlockState.

 

After I added in those other functions Forge finally initializes, I got a ModelLoader exception but I fixed that.

 

This is the current state of my code, it doesn't give any errors except the usual yggdrasil error, but it doesn't have the functionality I want.

Link to comment
Share on other sites

Do you remember when I said this?

56 minutes ago, Jay Avery said:

If your block is supposed to face a specific direction and behave accordingly (like a comparator, repeater, observer, or etc), then you will also need a facing property in your blockstate.

 

Link to comment
Share on other sites

1 hour ago, Jay Avery said:

Do you remember when I said this?

 

I tend to skim over things from time to time, sorry.

 

I made the block extend BlockDirectional and added a println statement in each function, and I found that my code doesn't even execute onNeighborChange, do you know why this is?

Edited by The_G0dPiXeL
Link to comment
Share on other sites

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
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.

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • When I tried to install forge, i got an error saying failed to download libraries com.google.code.findbugs:jsr305:3.0.2commons-io:commons-io:2.4 So i reinstalled Java on my computer, but now im getting a different error: Failed to run processor: java.net.ConnectException:Connection refused: connect How do I fix this? Log: JVM info: Oracle Corporation - 1.8.0_361 - 25.361-b09 java.net.preferIPv4Stack=true Found java version 1.8.0_361 Extracting json Considering minecraft client jar Downloading libraries Found 0 additional library directories Considering library cpw.mods:securejarhandler:2.1.4   File exists: Checksum validated. Considering library org.ow2.asm:asm:9.3   File exists: Checksum validated. Considering library org.ow2.asm:asm-commons:9.3   File exists: Checksum validated. Considering library org.ow2.asm:asm-tree:9.3   File exists: Checksum validated. Considering library org.ow2.asm:asm-util:9.3   File exists: Checksum validated. Considering library org.ow2.asm:asm-analysis:9.3   File exists: Checksum validated. Considering library net.minecraftforge:accesstransformers:8.0.4   File exists: Checksum validated. Considering library org.antlr:antlr4-runtime:4.9.1   File exists: Checksum validated. Considering library net.minecraftforge:eventbus:6.0.3   File exists: Checksum validated. Considering library net.minecraftforge:forgespi:6.0.0   File exists: Checksum validated. Considering library net.minecraftforge:coremods:5.0.1   File exists: Checksum validated. Considering library cpw.mods:modlauncher:10.0.8   File exists: Checksum validated. Considering library net.minecraftforge:unsafe:0.2.0   File exists: Checksum validated. Considering library com.electronwill.night-config:core:3.6.4   File exists: Checksum validated. Considering library com.electronwill.night-config:toml:3.6.4   File exists: Checksum validated. Considering library org.apache.maven:maven-artifact:3.8.5   File exists: Checksum validated. Considering library net.jodah:typetools:0.8.3   File exists: Checksum validated. Considering library net.minecrell:terminalconsoleappender:1.2.0   File exists: Checksum validated. Considering library org.jline:jline-reader:3.12.1   File exists: Checksum validated. Considering library org.jline:jline-terminal:3.12.1   File exists: Checksum validated. Considering library org.spongepowered:mixin:0.8.5   File exists: Checksum validated. Considering library org.openjdk.nashorn:nashorn-core:15.3   File exists: Checksum validated. Considering library net.minecraftforge:JarJarSelector:0.3.19   File exists: Checksum validated. Considering library net.minecraftforge:JarJarMetadata:0.3.19   File exists: Checksum validated. Considering library cpw.mods:bootstraplauncher:1.1.2   File exists: Checksum validated. Considering library net.minecraftforge:JarJarFileSystems:0.3.19   File exists: Checksum validated. Considering library net.minecraftforge:fmlloader:1.19.3-44.1.0   File exists: Checksum validated. Considering library com.github.jponge:lzma-java:1.3   File exists: Checksum validated. Considering library com.google.code.findbugs:jsr305:3.0.2   File exists: Checksum validated. Considering library com.google.code.gson:gson:2.8.7   File exists: Checksum validated. Considering library com.google.errorprone:error_prone_annotations:2.1.3   File exists: Checksum validated. Considering library com.google.guava:guava:20.0   File exists: Checksum validated. Considering library com.google.guava:guava:25.1-jre   File exists: Checksum validated. Considering library com.google.j2objc:j2objc-annotations:1.1   File exists: Checksum validated. Considering library com.nothome:javaxdelta:2.0.1   File exists: Checksum validated. Considering library com.opencsv:opencsv:4.4   File exists: Checksum validated. Considering library commons-beanutils:commons-beanutils:1.9.3   File exists: Checksum validated. Considering library commons-collections:commons-collections:3.2.2   File exists: Checksum validated. Considering library commons-io:commons-io:2.4   File exists: Checksum validated. Considering library commons-logging:commons-logging:1.2   File exists: Checksum validated. Considering library de.oceanlabs.mcp:mcp_config:1.19.3-20221207.122022@zip   File exists: Checksum validated. Considering library de.siegmar:fastcsv:2.0.0   File exists: Checksum validated. Considering library net.md-5:SpecialSource:1.11.0   File exists: Checksum validated. Considering library net.minecraftforge:ForgeAutoRenamingTool:0.1.22:all   File exists: Checksum validated. Considering library net.minecraftforge:binarypatcher:1.1.1   File exists: Checksum validated. Considering library net.minecraftforge:fmlcore:1.19.3-44.1.0   File exists: Checksum validated. Considering library net.minecraftforge:fmlloader:1.19.3-44.1.0   File exists: Checksum validated. Considering library net.minecraftforge:forge:1.19.3-44.1.0:universal   File exists: Checksum validated. Considering library net.minecraftforge:installertools:1.3.0   File exists: Checksum validated. Considering library net.minecraftforge:jarsplitter:1.1.4   File exists: Checksum validated. Considering library net.minecraftforge:javafmllanguage:1.19.3-44.1.0   File exists: Checksum validated. Considering library net.minecraftforge:lowcodelanguage:1.19.3-44.1.0   File exists: Checksum validated. Considering library net.minecraftforge:mclanguage:1.19.3-44.1.0   File exists: Checksum validated. Considering library net.minecraftforge:srgutils:0.4.11   File exists: Checksum validated. Considering library net.minecraftforge:srgutils:0.4.3   File exists: Checksum validated. Considering library net.minecraftforge:srgutils:0.4.9   File exists: Checksum validated. Considering library net.sf.jopt-simple:jopt-simple:5.0.4   File exists: Checksum validated. Considering library net.sf.jopt-simple:jopt-simple:6.0-alpha-3   File exists: Checksum validated. Considering library org.apache.commons:commons-collections4:4.2   File exists: Checksum validated. Considering library org.apache.commons:commons-lang3:3.8.1   File exists: Checksum validated. Considering library org.apache.commons:commons-text:1.3   File exists: Checksum validated. Considering library org.checkerframework:checker-qual:2.0.0   File exists: Checksum validated. Considering library org.codehaus.mojo:animal-sniffer-annotations:1.14   File exists: Checksum validated. Considering library org.ow2.asm:asm-analysis:9.2   File exists: Checksum validated. Considering library org.ow2.asm:asm-analysis:9.3   File exists: Checksum validated. Considering library org.ow2.asm:asm-commons:9.2   File exists: Checksum validated. Considering library org.ow2.asm:asm-commons:9.3   File exists: Checksum validated. Considering library org.ow2.asm:asm-tree:9.2   File exists: Checksum validated. Considering library org.ow2.asm:asm-tree:9.3   File exists: Checksum validated. Considering library org.ow2.asm:asm:9.2   File exists: Checksum validated. Considering library org.ow2.asm:asm:9.3   File exists: Checksum validated. Considering library trove:trove:1.0.2   File exists: Checksum validated. Created Temporary Directory: C:\Users\*\AppData\Local\Temp\forge_installer4970719337943492025   Extracting: /data/client.lzma Building Processors ===============================================================================   MainClass: net.minecraftforge.installertools.ConsoleTool   Classpath:     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\minecraftforge\installertools\1.3.0\installertools-1.3.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\md-5\SpecialSource\1.11.0\SpecialSource-1.11.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\5.0.4\jopt-simple-5.0.4.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\com\google\code\gson\gson\2.8.7\gson-2.8.7.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\de\siegmar\fastcsv\2.0.0\fastcsv-2.0.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\minecraftforge\srgutils\0.4.11\srgutils-0.4.11.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm-commons\9.3\asm-commons-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\com\google\guava\guava\20.0\guava-20.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\com\opencsv\opencsv\4.4\opencsv-4.4.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm-analysis\9.3\asm-analysis-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm-tree\9.3\asm-tree-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm\9.3\asm-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-text\1.3\commons-text-1.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-collections4\4.2\commons-collections4-4.2.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\commons-logging\commons-logging\1.2\commons-logging-1.2.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar   Args: --task, MCP_DATA, --input, C:\Users\*\AppData\Roaming\.minecraft\libraries\de\oceanlabs\mcp\mcp_config\1.19.3-20221207.122022\mcp_config-1.19.3-20221207.122022.zip, --output, C:\Users\*\AppData\Roaming\.minecraft\libraries\de\oceanlabs\mcp\mcp_config\1.19.3-20221207.122022\mcp_config-1.19.3-20221207.122022-mappings.txt, --key, mappings Task: MCP_DATA Input:  C:\Users\*\AppData\Roaming\.minecraft\libraries\de\oceanlabs\mcp\mcp_config\1.19.3-20221207.122022\mcp_config-1.19.3-20221207.122022.zip Output: C:\Users\*\AppData\Roaming\.minecraft\libraries\de\oceanlabs\mcp\mcp_config\1.19.3-20221207.122022\mcp_config-1.19.3-20221207.122022-mappings.txt Key:    mappings Extracting: config/joined.tsrg ===============================================================================   MainClass: net.minecraftforge.installertools.ConsoleTool   Classpath:     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\minecraftforge\installertools\1.3.0\installertools-1.3.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\md-5\SpecialSource\1.11.0\SpecialSource-1.11.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\5.0.4\jopt-simple-5.0.4.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\com\google\code\gson\gson\2.8.7\gson-2.8.7.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\de\siegmar\fastcsv\2.0.0\fastcsv-2.0.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\minecraftforge\srgutils\0.4.11\srgutils-0.4.11.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm-commons\9.3\asm-commons-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\com\google\guava\guava\20.0\guava-20.0.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\com\opencsv\opencsv\4.4\opencsv-4.4.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm-analysis\9.3\asm-analysis-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm-tree\9.3\asm-tree-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\ow2\asm\asm\9.3\asm-9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-text\1.3\commons-text-1.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\org\apache\commons\commons-collections4\4.2\commons-collections4-4.2.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\commons-logging\commons-logging\1.2\commons-logging-1.2.jar     C:\Users\*\AppData\Roaming\.minecraft\libraries\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar   Args: --task, DOWNLOAD_MOJMAPS, --version, 1.19.3, --side, client, --output, C:\Users\*\AppData\Roaming\.minecraft\libraries\net\minecraft\client\1.19.3-20221207.122022\client-1.19.3-20221207.122022-mappings.txt Task: DOWNLOAD_MOJMAPS MC Version: 1.19.3 Side:       client Output:     C:\Users\*\AppData\Roaming\.minecraft\libraries\net\minecraft\client\1.19.3-20221207.122022\client-1.19.3-20221207.122022-mappings.txt java.net.ConnectException: Connection refused: connect     at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)     at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)     at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)     at java.net.AbstractPlainSocketImpl.connect(Unknown Source)     at java.net.PlainSocketImpl.connect(Unknown Source)     at java.net.SocksSocketImpl.connect(Unknown Source)     at java.net.Socket.connect(Unknown Source)     at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)     at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source)     at sun.net.NetworkClient.doConnect(Unknown Source)     at sun.net.www.http.HttpClient.openServer(Unknown Source)     at sun.net.www.http.HttpClient.openServer(Unknown Source)     at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)     at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)     at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)     at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)     at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)     at java.net.URL.openStream(Unknown Source)     at net.minecraftforge.installertools.DownloadMojmaps.process(DownloadMojmaps.java:65)     at net.minecraftforge.installertools.ConsoleTool.main(ConsoleTool.java:55)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)     at java.lang.reflect.Method.invoke(Unknown Source)     at net.minecraftforge.installer.actions.PostProcessors.process(PostProcessors.java:226)     at net.minecraftforge.installer.actions.ClientInstall.run(ClientInstall.java:144)     at net.minecraftforge.installer.InstallerPanel.run(InstallerPanel.java:423)     at net.minecraftforge.installer.SimpleInstaller.launchGui(SimpleInstaller.java:175)     at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:147) Failed to run processor: java.net.ConnectException:Connection refused: connect See log for more details.  
    • I can get Player Mod Name by use this code. ImmutableList<String> mods = NetworkHooks.getConnectionData(p.connection.netManager) .getModList(); That code just getting the mod name. but I want to get mod version. How can I get Player Mod Version ? in 1.16.5 Please help me.  
    • As a result of the popularity of NFTs, today, the best crypto games are available in almost every market you can think of. To give you an idea, we discuss some of the types of blockchain games that might interest you below. 1. Virtual world games 2. Fantasy sports 3. Fighting games 4. Development games. The following two are currently popular Cryptokitties is a casual virtual cat game traded in Ethereum crypto-currency, which was launched and operated on November 28, 2017. FairyCat: Fairy Cat, a new blockchain game launching in 2023, has one of the highest returns of any blockchain game and will be the most popular virtual coin game in 2023.   One of the main reasons why most investors choose to play P2E crypto games is to make money. However, you may have noticed that many top crypto games offer rewards in the form of NFTs. However, the NFTs in the games are unique and transparent. In other words, when you buy assets in the game, you become the owner. Depending on the game, the NFTs you collect can be player avatars, characters, creatures, special items, or any other artifact. These NFTs can be traded or sold on other platforms, allowing you to receive cash or other crypto-currencies in return. In addition, you can keep these rewards until you find the right time to cash them in.
    • As a result of the popularity of NFTs, today, the best crypto games are available in almost every market you can think of. To give you an idea, we discuss some of the types of blockchain games that might interest you below. 1. Virtual world games 2. Fantasy sports 3. Fighting games 4. Development games. The following two are currently popular Cryptokitties is a casual virtual cat game traded in Ethereum crypto-currency, which was launched and operated on November 28, 2017. FairyCat: Fairy Cat, a new blockchain game launching in 2023, has one of the highest returns of any blockchain game and will be the most popular virtual coin game in 2023.   One of the main reasons why most investors choose to play P2E crypto games is to make money. However, you may have noticed that many top crypto games offer rewards in the form of NFTs. However, the NFTs in the games are unique and transparent. In other words, when you buy assets in the game, you become the owner. Depending on the game, the NFTs you collect can be player avatars, characters, creatures, special items, or any other artifact. These NFTs can be traded or sold on other platforms, allowing you to receive cash or other crypto-currencies in return. In addition, you can keep these rewards until you find the right time to cash them in.
    • As a result of the popularity of NFTs, today, the best crypto games are available in almost every market you can think of. To give you an idea, we discuss some of the types of blockchain games that might interest you below. 1. Virtual world games 2. Fantasy sports 3. Fighting games 4. Development games. The following two are currently popular   Cryptokitties is a casual virtual cat game traded in Ethereum crypto-currency, which was launched and operated on November 28, 2017. FairyCat: Fairy Cat, a new blockchain game launching in 2023, has one of the highest returns of any blockchain game and will be the most popular virtual coin game in 2023.   One of the main reasons why most investors choose to play P2E crypto games is to make money. However, you may have noticed that many top crypto games offer rewards in the form of NFTs. However, the NFTs in the games are unique and transparent. In other words, when you buy assets in the game, you become the owner. Depending on the game, the NFTs you collect can be player avatars, characters, creatures, special items, or any other artifact. These NFTs can be traded or sold on other platforms, allowing you to receive cash or other crypto-currencies in return. In addition, you can keep these rewards until you find the right time to cash them in.
  • Topics

×
×
  • Create New...

Important Information

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