RELEASED [SMAPI] Extended Minecart 1.8.1

Minecarts on your farm and in the desert!

  1. Entoarox

    Entoarox Oxygen Tank

    That is due to how CA's tile editing code works, Since the next release of EM is going to require EntoFramework anyhow, I am going to switch out CA's tile editing code with my more robust custom tile editing code.
     
    • TenkoKuugen

      TenkoKuugen Scruffy Nerf-Herder

      Good to know there's a fix coming. For now, the mod is fine if you just disable the farm location
      Strangely enough, there IS a minecart on the Omnifarm already, not sure if it is your mod or the Omnifarm mod, but you can go from there to the other locations but not go back there. Heh.
       
      • Entoarox

        Entoarox Oxygen Tank

        that is possible yes, any xnb mod can easily add new entry minecarts, but exit minecarts requires a smapi mod.
         
        • Entoarox

          Entoarox Oxygen Tank

          Entoarox updated [SMAPI] Extended Minecart with a new update entry:

          Bugfix and dependencies!

          Read the rest of this update entry...
           
          • TenkoKuugen

            TenkoKuugen Scruffy Nerf-Herder

            Improvements!
            Small ones. Basically, before the update, it would corrupt the tiles it attempted to patch, causing invisible blocks in the map. Now it is just graphical errors.
            That's with the newest ALL, Framework and Minecart. Interestingly enough, this does not cause the CTD issue that ALL mods caused.
            Also, the other locations seem to get patched fine, so it's really an issue of warning people to disable the farm location if they use a custom farm mod. I thought about trying to crack open the DLL and change the target coordinates but that's a pretty big step for the average joe player.

            Code:
            [20:05:12 ERROR Extended Minecart] Could not patch the Farm due to a unknown error
            The specified Tile Index is out of range
               at xTile.Tiles.StaticTile..ctor(Layer layer, TileSheet tileSheet, BlendMode blendMode, Int32 tileIndex)
               at Entoarox.Framework.LocationHelper.Entoarox.Framework.ILocationHelper.SetStaticTile(LocationReference location, String layer, Int32 x, Int32 y, Int32 index, String sheet)
               at Entoarox.ExtendedMinecart.GLExtension.SetTile(GameLocation self, Int32 x, Int32 y, Int32 index, String layer, Int32 sheet)
               at Entoarox.ExtendedMinecart.ExtendedMinecart.GameEvents_UpdateTick(Object s, EventArgs e)
             
            • Entoarox

              Entoarox Oxygen Tank

              Looks like the custom farm map adds a new tilesheet and throws the tilesheet order out of whack... didnt think to account for that one >_<
              Expect a patch "soonish" to fix that one....
               
              • Entoarox

                Entoarox Oxygen Tank

              • TenkoKuugen

                TenkoKuugen Scruffy Nerf-Herder

                No more errors and it places the cart correctly. It also works correctly. 92.5% correctly.
                (The alternate farm spot is still broken because the cliff extends a little into the map now, so you are still inside the cliff when you spawn there but that's beside the point)
                I don't really see any way you can fix what's happening here without making adding to config two things:
                1) to set the tile ID for where to spawn the player (if that is even possible to define in a config)
                2) Enable the farm location with the ID above but optionally do not actually patch in the cart (because a cart is already present. Thus, you'd change the player spawn upon travel tile ID to just below the existing cart)
                I am not sure if this is doable or worth the effort, but I think that's probably the only way to make this work without wonky graphical glitches.

                The cart up above is the Omnifarm cart. It works fine, really. Except it is only a start point, there is no option to travel to the farm. So up above is basically the best option for compatibility. I could probably change the spawn target location myself but doing the second thing by myself is way above my pay grade.
                [​IMG]
                 
                • Entoarox

                  Entoarox Oxygen Tank

                  Yeah, that is simply not something I can fix, the map author would have to deal with making either the primary or secondary position usable, for now just throw a few trees around to hide the ugly :p
                   
                  • TenkoKuugen

                    TenkoKuugen Scruffy Nerf-Herder

                    So lets say if I want to make a private Omni compatible version for just myself and compile from source, can I do that?

                    Code:
                                    case "Farm":
                                        if(Config.AlternateFarmMinecart)
                                            Game1.warpFarmer("Farm", 19, 8, 1);
                                        else
                                            Game1.warpFarmer("Farm", 78, 14, 1);
                    Setting both values to the appropriate tile (in front of the Omnicart) will get me there, that much is clear.
                    Code:
                                // # Farm
                                if (Config.FarmDestinationEnabled)
                                {
                                    try
                                    {
                                        GameLocation farm = Game1.getFarm();
                                        if (Config.AlternateFarmMinecart)
                                        {
                                            farm.SetTile(18, 5, 483, "Front", "untitled tile sheet");
                    
                    ETC
                    If I cut this entire section, will the dll just crash or, as I intent, do nothing? The way I look at it, this just sets the tiles. If I don't intent to use the mod cart on the farm but need the mod to set the location spawn, this is basically the best way. Not really used to stardew mods yet, all that time with FF7 and Skyrim; useless, lol.
                     
                    • Entoarox

                      Entoarox Oxygen Tank

                      Compiling my source, even for personal use would invade my copyright, and unfortunately, without a specific contract, I cannot grant you such a right without granting it to everyone.
                       
                      • TenkoKuugen

                        TenkoKuugen Scruffy Nerf-Herder

                        Does that include opening up the dll with VS and making changes? I really would prefer to hammer in the changes so this is compatible with Omnifarm. Alternatively, how difficult would it write a small ALL patch that basically overrides the minecart on the farm after extended minecart runs?
                         
                        • Entoarox

                          Entoarox Oxygen Tank

                          You cant open the DLL itself using VS, you need the source or decompiled files, and it is explicitly compiling my code that is copyrighted in the current situation. (Excempting when I have disappeared as some other modders, as I do have a exception for that potential)

                          Writing a ALL patch might be possible, I would suggest trying it out, it would end up depending on what mods edits are applied first, ALL or EM... If you dont mind the exit being stuck where it is now, I could easily add a config option to disable tile-editing the farm completely?

                          Edit: Give me some time to think on it, and I will see if I cant make a easy "Custom" option for the farm where no tiles are edited and you specify the exit point in the config....
                           
                          • Entoarox

                            Entoarox Oxygen Tank

                            Entoarox updated [SMAPI] Extended Minecart with a new update entry:

                            Custom farm destination!

                            Read the rest of this update entry...
                             
                            • TenkoKuugen

                              TenkoKuugen Scruffy Nerf-Herder

                              If I look at the source, if you add another check that just calls "AddFarmCart=true" in the config or something like that before it actually edits the farm map, that would really boost compatibility with custom farm maps. It's too many tiles to add the cart entirely via custom tile assignment, but the spawn location is just one reference point.
                              Code:
                                              case "Farm":[/S][/S]
                              [S][S]                    if(Config.AlternateFarmMinecart)
                                                      Game1.warpFarmer("Farm", 19, 8, 1);
                                                  else
                                                      Game1.warpFarmer("Farm", 78, 14, 1);
                                                  break;

                              If you put an IF check there that asks for another config entry and then overwrites the tile coordinates only with whatever is written in the config, that would also allow custom spawn points


                              -> Write post
                              "Oh new posts"
                              "Oh my post is now useless, haha"

                              Edit: Works exactly as intended and envisioned. For the Omnifarm, the coordinates are 77,7.
                              Much thanks. Now I can finally go to sleep, haha.
                               
                                Last edited: Dec 16, 2016
                              • quirkyquark

                                quirkyquark Phantasmal Quasar

                                This is a ***** lifesaver -- thank you SOOOO much @Entoarox and @Pathoschild!

                                Bug report:

                                Warping from the Desert to the BusStop freezes in a black screen with a stuck minecart sound (like you hear next to the Blacksmith). Setting RefuelingEnabled to false resolves this, although instead of warping to the BusStop minecart point, the player returns via the bus with the usual return-from-desert animation.
                                • The SMAPI console with debugging enabled shows no messages when this issue is triggered, but here's the log anyway.
                                • Also tested without any mods except the framework to make sure this wasn't a conflict
                                • Triggers any time of day (i.e., doesn't matter whether Pam is at the Bus Stop)
                                • Not affected by AlternateDesertMinecart
                                • Warps from the other custom destinations to BusStop work correctly.
                                 
                                  Last edited: Jan 29, 2017
                                • Entoarox

                                  Entoarox Oxygen Tank

                                  Thank you for reporting this, especially the detailed information as to what begin/end combination causes it, as it allows me to go in and debug it :)
                                   
                                  • TheRingisHot

                                    TheRingisHot Scruffy Nerf-Herder

                                    The coloration in the screenshots is really nice, is it hosted as a mod or a private project?
                                     
                                    • foghorn

                                      foghorn Pangalactic Porcupine

                                    • TheRingisHot

                                      TheRingisHot Scruffy Nerf-Herder

                                      great thank you
                                       

                                      Share This Page