Ask a simple question, get a simple answer

  • Please make sure you are posting in the correct place. Server ads go here and modpack bugs go here
  • The FTB Forum is now read-only, and is here as an archive. To participate in our community discussions, please join our Discord! https://ftb.team/discord

Ashendale

New Member
Jul 29, 2019
579
0
0
Nobody wanted to go to 1.8.9 until Thaumcraft went... I suppose I'll wait until my mobo or CPU fry... Thanks for all the insights.
 

jdog1408

New Member
Jul 29, 2019
958
-11
0
Well 1.8.1 was terrible for modding because they required JSONs for all models(Not sure if that's still in 1.8.9 or not) and so larger mods were just like helllll no, and then smaller mods were like "If they aren't then I'm not" which explains why everyone followed thaumcraft.
 

McJty

Over-Achiever
Mod Developer
May 13, 2014
2,015
2,519
228
twitter.com
Well 1.8.1 was terrible for modding because they required JSONs for all models(Not sure if that's still in 1.8.9 or not) and so larger mods were just like helllll no, and then smaller mods were like "If they aren't then I'm not" which explains why everyone followed thaumcraft.

The jsons are still there but Forge extended them a lot so that you can avoid the json explosion you got with the vanilla json system
 
  • Like
Reactions: jdog1408

Azzanine

New Member
Jul 29, 2019
2,706
-11
0
Aparently that Windows version is totally different. Aparently MineCrafts modding scene is so strong BECAUSE it's a Java game. I keep hearing from coders that Java is much simpler to code for despite it's inefficiencies in performance and that C based languages are a pain.
Therefore not many folks will mod a C game unless a really robust API is present.

Sent from my GT-I9100 using Tapatalk
 

RealKC

Popular Member
Dec 6, 2015
1,004
534
129
King of the Hill
Aparently that Windows version is totally different. Aparently MineCrafts modding scene is so strong BECAUSE it's a Java game. I keep hearing from coders that Java is much simpler to code for despite it's inefficiencies in performance and that C based languages are a pain.
Therefore not many folks will mod a C game unless a really robust API is present.

Sent from my GT-I9100 using Tapatalk
And that's why i'm not going to try to make a C++ mod for MCPE, Javascript is much easier and has an already built API in Blocklauncher
 
C

Catsith13

Guest
This may be dumb but I am playing on a server currently and even in single player the guide that youo can open in your inventory does not have anything in it other then the word guide. I have seen other players and they don't have this issue. Is this a setting that you have to turn on somewhere or do I just have a random bug on my end? The server admin has the same issue on the server and in single player.
 

erindalc

Popular Member
Mar 3, 2015
992
512
109
Steam
This may be dumb but I am playing on a server currently and even in single player the guide that youo can open in your inventory does not have anything in it other then the word guide. I have seen other players and they don't have this issue. Is this a setting that you have to turn on somewhere or do I just have a random bug on my end? The server admin has the same issue on the server and in single player.
Type /reset (you may need to have an admin do it)
 

Cptqrk

Popular Member
Aug 24, 2013
1,420
646
138
The guide section is blank unless you are playing in expert mode


Sent from my igloo using Canadian Goose Mesenger
 

Someone Else 37

Forum Addict
Feb 10, 2013
1,876
1,440
168
Aparently that Windows version is totally different. Aparently MineCrafts modding scene is so strong BECAUSE it's a Java game. I keep hearing from coders that Java is much simpler to code for despite it's inefficiencies in performance and that C based languages are a pain.
Therefore not many folks will mod a C game unless a really robust API is present.

Sent from my GT-I9100 using Tapatalk

Clarification: There's several reasons why Java is so easy to mod.

For one, jar files are not single, indivisible executables like what most languages compile to. Jar files are simple zip files containing a bunch of .class files. If you create another .class file that contains a bunch of methods with all the same names and type signatures as one in a jar file, you can just swap them out and the jar will work fine. This is exactly what old-school jar mods do: they simply replace .class files in minecraft.jar with their own, modified versions. Naturally, there's no way to do this with .exe programs. To mess with them, you'd have to go into the machine code and replace chunks of it with your own machine code. There tools that can do this, but none are nearly as simple as unzip -> replace files -> rezip.

Second, Java bytecode (the stuff in those .class files) is very easy to decompile. There is really only one compiler to worry about, and only one system that the code is compiled to: the Java Virtual Machine. As such, there's something close to a 1-to-1 correspondence between source code and bydecode. For languages like C, on the other hand, there are many different compilers that each take their own spin on how to turn source code into an executable, and each can be configured in a multitude of different ways, and there are many different systems they can all target. If I write a C program and then compile it on my Macbook, I'll get an executable file. If I send my sourcecode over to my university's file server and compile it there, I'll get another executable. If I then compare the two executable files to each other- both generated from the exact same sourcecode using the exact same compiler (gcc, in this case) configured in a fairly similar way- I'll find (and, indeed, have found) that they're different. The bytes stored in them just don't match up.

A program trying to turn a compiled executable back into the human-readable sourcecode that created it would have to account for every single one of these variables. A program trying to turn a Java .jar or .class file into the sourcecode that generated it need account for almost none.

As such, Minecraft modders are a bit spoiled. We can download a bunch of files from the Internet, plug in a copy of minecraft.jar, hit run, and bam, the entire partially deobfuscated source code appears on your hard drive. Literally everything is right there, ready for modification. And once you're done, just type in a few more commands, and bam, out pops a package that can be installed using nothing more than a utility for unpacking zip files.

Sure, non-Java games have mods. Dwarf Fortress, for instance, has a vibrant modding community. But every single mod and utility for that game relies on one of two things: editing the plaintext "raws" that interface with the game's built-in API, or hacking into the memory used by the program at runtime. That's it. Nobody touches df.exe.
 
  • Like
Reactions: Ashendale

jdog1408

New Member
Jul 29, 2019
958
-11
0
How could I add botania flowers to the flowers that bees produce? The configs are extremely confusing and unclear.
 

RavynousHunter

New Member
Jul 29, 2019
2,784
-3
1
@Someone Else 37: You forget that there's more than one kind of compilation target, you've got executable files, and at least both dynamically-linked (DLL) and statically-linked libraries. Any game worth its salt stores common functionality in a DLL to make updating simpler. DLLs can also contain resources in addition to code. Compiled code is very difficult to crack, even with advanced knowledge of assembly. Of course, a theoretical C++ version of Minecraft, if it were to be extensible and/or worth a damn, would have some form of scripting system built-in, which could be just about anything from Lua to Python to methods (largely) hidden behind robust content creation tools. Otherwise, adding content to it would be an absolute nightmare, after a while. That's one thing compiling into executable/linked library format forces you to do: think ahead, and not just for the sake of people who come along later to add to your creation.
 
  • Like
Reactions: Ashendale

Someone Else 37

Forum Addict
Feb 10, 2013
1,876
1,440
168
@Someone Else 37: You forget that there's more than one kind of compilation target, you've got executable files, and at least both dynamically-linked (DLL) and statically-linked libraries. Any game worth its salt stores common functionality in a DLL to make updating simpler. DLLs can also contain resources in addition to code. Compiled code is very difficult to crack, even with advanced knowledge of assembly. Of course, a theoretical C++ version of Minecraft, if it were to be extensible and/or worth a damn, would have some form of scripting system built-in, which could be just about anything from Lua to Python to methods (largely) hidden behind robust content creation tools. Otherwise, adding content to it would be an absolute nightmare, after a while. That's one thing compiling into executable/linked library format forces you to do: think ahead, and not just for the sake of people who come along later to add to your creation.
You have a point with libraries. I'm not at all familiar with them, so I don't know how a reasonably-well-designed game would use them or how difficult they would be to decompile, modify, and replace.

In any case, I think we all know Mojang's stance on an actual modding API. How many years have they been promising to create one?