[GregTech-6][1.7.10][Website][Patreon] Info, Support and Suggestions


  • The conversion rate was quite high actually, and it needed a lot of string.

    String was an absolute non-issue the moment you got your first flax seeds. The amount of it you got from a single 9x9 field harvest was just stupid.

    The new Remain in Motion (Which is the 1.7 replacement to Redstone in Motion), now has an option to require power. Link.

    RiM also had far less problems than RP2 frames while actually allowing people to, *gasp*, configure the options! That's one of the (many) options RP2 didn't have.


    Actually it was not balanced, she did repeatedly say that the recipes were temporary until she got her multiblock machines built (of which they almost were done when she got overtaken by real life), they were going to become drastically more expensive at that point, and I do not mean in just creation cost, I mean in on-going cost. There was going to be more bluetricity usage. Solar and wind power were still very low tier, the new multiblock machines she created were going to require *multiple* concurrent wind generators going, or a higher tier power, which involved types of fuels. Green power in RP2 was the lowest tier power possible, you were going to be very polluting very quickly if you wanted to generate any useful amount of power at all.

    Yes, I know her mod was "alpha" state but it was in that state for several years. At same pace we'll first get Minecraft 2 than non-alpha RP2. It doesn't really matter that she said "it's just temporary" when in reality that "temporary" stuff had existed for far longer time than vast majority of popular mods out there.

  • Come on now, how would you feel if IC2 experimental development, or at least the addition of features, slowed down and people started taking for granted that this is how ic2 is going to be from now on.


    ...Oh, wait!


    Edit, more on topic(no, no it's not, it's still off topic...):


    I was using RP in the time before machines, tubes and blutricity, so to me it remained a redstone+ mod even afterwards. I found bulky, overengineered BC automation much more fun, plus there wasn't really much need for automation at the time. I found frames amazing since I mainly used the logic to help me build silly piston contraptions, but when they came around I had taken a hiatus from minecraft, and by the time I returned the mod had stopped updating.


    Early blutricity seemed trite at the very least, but the demonstrations of the more developed, more "realistic" energy system were very interesting. Without higher tier generators and machines, though, there wasn't much purpose to it at the time.


    If Elo wants to go back to developing RP she should just go ahead. The arguments going on right now are mainly spurred by biterness from people that felt betrayed when RP stopped updating, and those that want to see someone who at the very least was a great modder back in action. Also, the general ball of insecurity that Feed the RF, the main "faction" of FTB, is.


    My own opinion is that RP should become more of a niche mod now that there are all these alternatives. When you have competition for all-in-one, something for everyone mods, the lowest common denominator wins. It has, in fact, won. We all know which mods I'm talking about.

    The post was edited 3 times, last by okaolias ().

  • (TL/DR is at the bottom)


    Oh crap I hit that Waila massive slowdown that people spoke of earlier (and yes I am using the latest version).... I debugged into the issue and this is what I found when it happens:
    When Waila calls to get information on an item that does not fulfill the extra Waila information interface (please add that to GT items) it calls getTooltip, which makes sense, that in turn calls 'addInformation' on the GT_Item_Machines class, which calls addStringLocalization:21, which in turn calls another addStringLocalization:26, which apparently accesses the GT_LanguageManager, which then writes out the language Configuration file. For note at the time that writeToLangFile is called the passed in args are:

    Code
    1. static = gregtech.api.util.GT_LanguageManager
    2. aKey = {java.lang.String@7384}"TileEntity_DESCRIPTION_4985_Index_0"
    3. aEnglish = {java.lang.String@7385}"Just something you can put a Cover or CFoam on."
    4. tProperty = {net.minecraftforge.common.config.Property@7386}
    5. sEnglishFile = {net.minecraftforge.common.config.Configuration@7369}


    It is apparently caused by writing out the *massive* config file that is parsed and handled by Forge's default Config system (which is utter crap, really need to use something like HOCON, which forge is likely moving to very soon anyway, if not 1.8 then shortly after).


    The question is why is writeToLangFile being called and writing out data when getToolTip is called just once on the main game thread (called more on other threads, I find this out later in this post), let's examine. Since it gets called due to calling addStringLocalization and this is an API file thus we have the source available, lets check. This is the source with the extremely slow line highlighted with a comment at the end of it:

    Code
    1. public static String addStringLocalization(String aKey, String aEnglish, boolean aWriteIntoLangFile) {
    2. if (aKey == null) return "";
    3. if (aWriteIntoLangFile) aEnglish = writeToLangFile(aKey, aEnglish); // ***SLOW LINE***
    4. TEMPMAP.put(aKey.trim(), aEnglish);
    5. LanguageRegistry.instance().injectLanguage("en_US", TEMPMAP);
    6. TEMPMAP.clear();
    7. return aEnglish;
    8. }


    And the given line is indeed the slow one on repeated profiled runs of the Waila stack during the times of slowdown, nothing else even makes a blip.
    Obviously a boolean compare and jump is not costly, and we know that the function is getting called since it is always next in the call stack, the boolean is passed in, and it is passed in from:

    Code
    1. public static String addStringLocalization(String aKey, String aEnglish) {
    2. return addStringLocalization(aKey, aEnglish, true);
    3. }


    Thus it defaults to true, higher up in the callstack leaps out of the API source so I will not post it here as GT can check it out on his own just fine (GT_Item_Machines.addInformation:46), so lets check the other way, diving deeper! Looking in to writeToLangFile, which is also in the API code so I can post it here is:


    With the slow line marked again, specifically the slow call is the save() call. Since the forge config system is an amazing new amount of slowness then this is the cause, however, why is save being called at all, because it thinks that the Property.wasRead is false, so checking in Forge's Property class show that wasRead is false by default and is only set true if set in its constructor from the config file, so checking in Forge's Configuration class shows that true is only passed in if it successfully reads a property name after an equals since in the file, so lets look at the argument passed in that it is reading from the key, that is pasted above and it is apparently "TileEntity_DESCRIPTION_4985_Index_0", so lets look that up in the default LanguageFile (which is in the minecraft root instead of configs for some reason, the file GregTech.lang, why is it in the root directory instead of config/GregTech? There is a GregTech.cfg in the root directory too, is this right? Shouldn't the lang file be from the minecraft language system instead so it could be switched with everything else at the same time with proper fallbacks? Also this file is 296K! Huge!), so I look up "TileEntity_DESCRIPTION_4985_Index_0" and found:

    Code
    1. S:TileEntity_DESCRIPTION_4985_Index_0=Just something you can put a Cover or CFoam on.


    So that line obviously exists, yet wasRead is seemingly false instead of true... So lets dig more into Forge's Configuration callstack, we see that the Configuration fos.path is indeed the right path to the GregTech.lang file in the root directory so that is right. Further watching reveals that this gets called a *LOT* in the span of a single frame, and it seems to be calling it with a different key every other time. Half the time it is "TileEntity_DESCRIPTION_4985_Index_0", which is indeed what I am looking at, and the other half of the time it seems to be a loop iterating over the names of all the other meta machines?! Names like "TileEntity_DESCRIPTION_103_Index_0" and 100 and 101 and 102 and 104 and etc... It seems to be growing over time, the longer I look at the block, the more it iterates over... Going back 'up' the stack then. Going back up I see that it manually injects the entries into the LanguageRegistry for minecraft itself, going back up gets back in to code that is not in the API so I will not demonstrate it here, but this function (stated above, the GT_Item_Machines.addInformation) calls addStringLocalization multiple times for different information, all of which save the file each time. It seems that this entire callstack is being called by NEI's pattern matcher as well to grab the item information to match and compare against (MASSIVELY slowing down NEI matching times as it builds its cache), however the bit slowing down the game loop is the one that waila calls, so having the debugger ignore other threads now I trace it up and up into the callstack to find the point where has its most slowdown, and it is waiting on NEI as NEI matches on the names of things and what makes up the things.


    So, in essence:
    Waila only calls getTooltip once per frame.
    NEI does on another thread getTooltip calls on many many items as it builds up its matching database, this is done on another thread so should not be 'so' bad, except that writeToLangFile is synchronized, so it is blocking the main thread.
    GT grabs the data and stores it to the language file, Every*Single*Time, which would not necessarily be bad except that the language *file* itself is accessed every single time, when it should really never be read or written to ever except at startup.
    During this process I noticed that the Configuration class is stored into a static var of sEnglishFile and the language class tests if that is null before doing anything, so I null that out after program load and badda-bing Waila works perfect, and NEI search is speedy again!
    So basically the Forge Config system is utter crap, but it is not 'so' bad if you only ever use it in the PreInit event, once.


    Thus, GregoriousT, please please please if you are going to keep using the horrible Forge Config system, at least never ever *EVER* access or store the Configuration classes past the PreInit event, *EVER*. And writeToLangFile being synchronized and read by NEI on its matching thread and being accessed once per frame by waila is what is freezing the program.


    Basically it is a combination of the horrible Forge Configuration class system, GregTech holding on to it later and writing to it *synchronously*, and NEI calling getTooltip a *lot* of times on it matching thread, which is completely legit, the bottleneck is the synchronous and the file writing *repeatedly*.


    EDIT: Do remember that writing the config files is a big reason why GT takes so long to load.

  • Thus, GregoriousT, please please please if you are going to keep using the horrible Forge Config system, at least never ever *EVER* access or store the Configuration classes past the PreInit event, *EVER*. And writeToLangFile being synchronized and read by NEI on its matching thread and being accessed once per frame by waila is what is freezing the program.


    Basically it is a combination of the horrible Forge Configuration class system, GregTech holding on to it later and writing to it *synchronously*, and NEI calling getTooltip a *lot* of times on it matching thread, which is completely legit, the bottleneck is the synchronous and the file writing *repeatedly*.

    I have done something against that Lag right now.


    -----


    So Scala is basically a "prettier" form of writing Code, with the ability of C to add makros into it? Looks pretty "Overpowered", I should nerf it. XD

    I don't say, your "insert whatever" is bad. I'm only showing ways for making it better.
    GregTech Website
    Patreon really helps me out. If you consider funding the development of GT, so I might be able to do it fulltime, why not?
    GregTech 6, the Main Thread, Bug Reports go here too.
    I'm also on #gt-dev on irc.esper.net, if you don't want to make a Forum account just to contact me.
    (I'm there almost every day, when I'm at my own computer. Yes you can drop bugs and suggestions there too)

  • I have done something against that Lag right now.


    Ah that was fast, so I can remove this chunk of code from my mod then? :-)

    Code
    1. GregTech_API.sAfterGTPostload += { () =>
    2. GT_LanguageManager.sEnglishFile = null // TODO: Remove this once GregTech has this Waila/NEI bug fixed...
    3. }




    So Scala is basically a "prettier" form of writing Code, with the ability of C to add makros into it? Looks pretty "Overpowered", I should nerf it. XD


    Heh, Scala is Java with a different syntax, compiles to the same bytecode, perfectly interoperable in all ways, you can even mix-and-match them in a project so you can gradually convert. Scala was help designed by one of the original Java authors, it is basically what he wanted Java to become. It helps shorten a *LOT* of the Java cruft (as in the examples I gave earlier) and tries to encourage better programming styles (though you can still fall back to a very Java'ish style Scala code if so wanted). It does not have macro support in any form, everything is namespaced and extremely type safe (it is more strongly typed then java to allow the compiler to do better optimizations and allow you to not define a lot of things that can be properly inferred). It does have a very C++ like template system for code generation, although the syntax is a few worlds better, but you never need to deal with that in normal usercode unless you want to make something exceptionally unique. Forge has had full support for Scala in its build system for a few minecraft versions now.

  • Hey Greg I would love to see compability with the Time-Speed-Mod.
    It may be a bit hard to find. Just google: Minecraft
    Вращение Земли.
    No worry the thread is in english.
    The mod lets you make the day/night cycle longer wich, in my opinion, is too short in vanilla MC.


    Here's the crashlog:


    I asked in his thread aswell in case there's nothing you can do but
    I hope it's easy to fix.

  • Also, the general ball of insecurity that Feed the RF, the main "faction" of FTB, is.


    Why do you use the term 'ball of insecurity' to describe Feed the RF?



    So Scala is basically a "prettier" form of writing Code, with the ability of C to add makros into it? Looks pretty "Overpowered", I should nerf it. XD


    Oh imagine if the people who complained about you "hacking" things last year got a hold of this...
    "Scala is overpowered, I should nerf it." -GregTech Intergalactical 2014


  • you mean this

  • Ditto. It gives every negative side-effect at once, yet seems to be the only ore that does this. IRL, palladium is not poisono9us. Certainly not radioactive, nauseating, slowing, withering, or hungering!

    is Palladium supposed to be radioactive? it gives about 6 different effects, but not for a few seconds after collecting

    Quote

    Quoted from "zorn":
    People can't handle losing. Lots of new games are like this. My son's Lego games? You die and respawn on the spot, just lose a bit of money. It's made so that anyone can win, even the worst players. Like TE, or EU. They say that IC2 is 'keeping them from moving on' but can never say what that is. In reality they just failed, blew up a bunch of stuff, and their fragile egos couldn't take it so they gravitate towards mods designed to guarantee that you succeed.

  • Palladium is slightly toxic, but not very. Mostly causing irritation/chemical burns, but it is definitely not radioactive.

  • Now try Enriched Naquadah ore... :3


    Palladium radioisotopes can be found in nature, but the majority isnt
    Also palladium has several uses on technology, like hydrogen purification, catalysts and other stuff.

  • While GregTech has several storage units available, I would love to be able to store a full suit like the 'Hazmat' suit with leggings, rubber boots and scuba helmet and be able to exchange it with the current armour I am wearing or store that in a different storage unit. Could we have something like a 'locker', to store full armour sets? Maybe even a possibility to hook it up to a power supply to charge a full set of nano armour at once?

    "You cannot depend on your eyes when your imagination is out of focus." (Mark Twain)
    GregTech is a wonderful time consuming challenge!
    Fun Paradise V is on it's way ...

  • While GregTech has several storage units available, I would love to be able to store a full suit like the 'Hazmat' suit with leggings, rubber boots and scuba helmet and be able to exchange it with the current armour I am wearing or store that in a different storage unit. Could we have something like a 'locker', to store full armour sets? Maybe even a possibility to hook it up to a power supply to charge a full set of nano armour at once?

    try bibliocraft armor stands great for quick suit changes if supplied with a redstone signal

  • try bibliocraft armor stands great for quick suit changes if supplied with a redstone signal

    I know about the armour stands from Bibliocraft. Thanks for the suggestion though.

    "You cannot depend on your eyes when your imagination is out of focus." (Mark Twain)
    GregTech is a wonderful time consuming challenge!
    Fun Paradise V is on it's way ...

  • Why using the Armor Stands if you can use Lockers?


    Update: Added Lockers, fixed Implosion Compressor Sound, fixed a ton of other Bugs such as accidentially overriding vanilla Aspects of Thaumcraft.

    I don't say, your "insert whatever" is bad. I'm only showing ways for making it better.
    GregTech Website
    Patreon really helps me out. If you consider funding the development of GT, so I might be able to do it fulltime, why not?
    GregTech 6, the Main Thread, Bug Reports go here too.
    I'm also on #gt-dev on irc.esper.net, if you don't want to make a Forum account just to contact me.
    (I'm there almost every day, when I'm at my own computer. Yes you can drop bugs and suggestions there too)

  • 145 Mods isn't too many. 9 types of copper and 8 types of tin aren't too many. 3 types of coffee though?

    I know that you believe that you understood what you think I said, but I am not sure you realise that what you read was not what I meant.


    ---- Minecraft Crash Report ----
    // I just don't know what went wrong :(


    I see this too much.

  • Not now, the NEXT release is out of Alpha :P

    I don't say, your "insert whatever" is bad. I'm only showing ways for making it better.
    GregTech Website
    Patreon really helps me out. If you consider funding the development of GT, so I might be able to do it fulltime, why not?
    GregTech 6, the Main Thread, Bug Reports go here too.
    I'm also on #gt-dev on irc.esper.net, if you don't want to make a Forum account just to contact me.
    (I'm there almost every day, when I'm at my own computer. Yes you can drop bugs and suggestions there too)