Neo's Home for Map Mods

Discussion in 'Mods' started by 13akoors, Aug 1, 2017.

  1. 13akoors

    13akoors Scruffy Nerf-Herder

    This is simply a hub with links to each of the mods that I have my hands in, both to help me and everyone else quickly get around to any map mod I mention. Plus, it saves space on each individual map mod description.

    Revised Stardew Maps (RSM)
    This mod is my personal map mod, slowly replacing every map in the game with more interconnected, lived in maps that fit together like a puzzle. Eventually, there will be some custom areas to add to the aesthetic of the world, and make other maps better connect to each other.
    http://community.playstarbound.com/threads/revised-stardew-maps-rsm.135896/

    Tego's Stardew Expansion (TSE)
    This mod is one of the two oldest map mods, which I personally upkeep. This mod adds an entirely new area to the game and lots of interesting text that gives the world a bit more history. Eventually, this mod may add more areas and custom NPCs, but at this moment the areas many people love will have to do.
    http://community.playstarbound.com/...xpansion-neos-home-for-abandoned-mods.135898/

    Yama's Desert Expansion and Sewer Expansion (YDE & YSE)
    This mod is the second of the two oldest map mods in the game, and completely overhauls the Desert map, adding several new huge areas to explore. Currently, there is very little content, but there is a plan to create a deserted Desert town to explore, given someone who can build tilesheets. And if someone is crazy enough to donate their time and talents to build working NPCs, then we'll add those too.
    http://community.playstarbound.com/...ewer-expansions-1-4-ready-for-testing.113751/

    Ulithium's Jungle Temple (UJT)
    This mod adds a new area to the game, a Jungle Temple. Like Yama's Desert Expansion, there isn't much content here yet. Ulithium has plans for add more stuff, but until ALL is updated, his plans are impossible. As such, he has stepped away from modding for now, and I am keeping the mod working while he's gone. I'll possibly add some stuff myself as inspiration comes to me, but as of now it's just bug fixing and code simplification for me.
    http://community.playstarbound.com/threads/new-map-jungle-temple.131420/


    As of now, that's all the mods I have my hand in. Feel free to check them out as you will. Keep in mind that all of these mods should be fully compatible EXCEPT for RSM and TSE. There is currently a plan to change this, but I'm currently waiting for fan approval before doing this. For now, you'll just have to choose one and use it.
     
    • hihihi330

      hihihi330 Poptop Tamer

      Thanks for collecting all these mods in one place, Map Mods are my favorite kind of mod for Stardew Valley. Since you seem to be pretty experienced with making a map mod I was wondering if you could help me some.

      I am new to modding and just started working with tIDE a couple of days ago. I can figure it out enough to where I can expand and edit maps that were already in the game, but I can't make entirely new ones. I saw that someone else created a mode where the player could access a second floor in the Farm Cave through a staircase, which could then be used for extra space. I have been able to expand the Farm Cave and add warp actions to the tiles I add, but I don't know how to create an entirely new zone.

      I haven't confirmed yet, but I'm pretty sure one way to solve this would be to make the Farm Cave map big enough to where I could have two separate areas divided by walls so the player couldn't see the other room. Then I could just add a warp tile from one room to the other. I feel like there should be a way to create new zones entirely with tIDE though.

      This is the mod I found with two floors: http://community.playstarbound.com/threads/bigger-cave-now-with-2-floors-and-farmable.109636/

      If you have any ideas or advice, I would really appreciate it. Thanks!
       
      • 13akoors

        13akoors Scruffy Nerf-Herder

        Sure. Happy to help out. I personally had to figure everything out myself, so I know the difficulties in trying to figure out the intricacies of TIDE.

        To go off the example, one easy way is to just expand the room itself, but adding the new room is clearly preferred.

        Honestly, adding a new map really isn't very hard at all. Mostly, it's getting to the new map that's a problem. I'm going to assume you're using ALL for these changes.

        Firstly, you want to go into TIDE and make a completely new .tide file. If the original cave is named FarmCave, call this one something like FarmCave2. Then you'll have to add in all the tile sheets you want on that map, which I assume you have and will (probably) be the same as the first room. You'll also have to add the same 5 layers as the first map. If you need more info on all this, I can go more in depth, but looking at the original map is usually helpful in answering most questions.

        Once you have the map looking like you want, the way to make the player be able to go between them is in the "Map Properties". You'll probably want to copy all the properties exactly from the first map to yours, except for the "Warp" property, which tells the game how to teleport the player. It's set up as X1 Y1 Mapname X2 Y2, where X1 Y1 is the tile on the current map, and X2 Y2 is the location that you want to teleport to on the map labeled "Mapname". This works for walking onto the tile like most other maps do. If you want a ladder like the sewers, you'll need to use some more complex methods that I don't have time to go into right now (on vacation in the internet-less forest)

        Hopefully that answers the question. If not, I'll try to get back to you in the next 2 days with a more detailed answer. As for using ALL to add the maps into the game, Ento has his own documentation to look at, but I can also give a description on that if needed
         
        • hihihi330

          hihihi330 Poptop Tamer

          I think I had done everything besides getting ALL. I had copied my FarmCave map and then edited it a bit and renamed it FarmCave1. I had originally hoped that I could just put FarmCave1.xnb back into the contents folder of the actual game, but I realized that didn't work and wasn't sure where to go from there.

          Thanks to you though, I figured out about ALL. I'm starting to figure it out now, so it may be a little while before I get an actual working map mod since I have to learn what to do exactly. I'm trying to make a manifest.json for my map now. I downloaded Tego's Stardew Expansion to look at the manifest from that mod for an example. I'm pretty much a novice at coding, so I'm learning as I go.

          Thanks for the help so far and hope the internet-less forest is going well.
           
            Last edited: Aug 3, 2017
          • 13akoors

            13akoors Scruffy Nerf-Herder

            Assuming you don't add any new tilesheets, you actually CAN just add it back into the base game by giving it the same name (remove the 1), but more and more, it's getting looked down on to modify the base files of the game. You might be able to get it to work by using XNBLoader, but ALL is gererally the best bet.

            I remember when I started modding I did the same as you, looking at Tego's manifest. It should give you a lot of insight into how ALL works. If you still have questions, I'll do what I can to answer them.

            The internet-less forest is fine. The lack of cell phone reception, not so much...
             
            • hihihi330

              hihihi330 Poptop Tamer

              I'm slowly piecing together the ALL program and was able to get it to load my new Farm Cave. I want to make an in depth map mod, but I'm still working through what I want to do exactly. Custom tilesheets feels like the way to go once I figure out ALL.

              EDIT: I was looking through your RSM manifest and the SVE manifest and have learned a lot. I'm starting to get areas unlocked through purchasing them. I tried putting in a lake into the Farm Cave because I wanted to try and recreate the Underground lake on level 20 of the mine. I was wondering if you had any knowledge on how to choose which fish can appear in certain areas. The lake in the Farm Cave is entirely new, so I don't know how Stardew Valley determined what fish would be caught. I've mostly caught Sunfish and various junk. I'd like to be able to catch Ghost Fish if possible though.

              Also, just in case this isn't how it is normally done, the way I got the lake to be fishable was going into tIDE and setting each of the water tiles to have a custom property of "water" being true. That was the only way I could seem to get the tiles fishable.
               
                Last edited: Aug 3, 2017
              • 13akoors

                13akoors Scruffy Nerf-Herder

                Unfortunately I have very little idea how the specific fish are determined. There's several things that are still a bit unknown about some of Stardew Valley's code. How fish are coded may be one of them. If I remember correctly, there is a "Fish" property in Tide, but the numbers are nonsensical to me. Good luck in figuring those out, and please post a detailed summary if you figure it out
                 
                • hihihi330

                  hihihi330 Poptop Tamer

                  Sorry for the late response, but I have good news and bad news. Good news - I think I know how to make fish spawn where I want them to/Bad news - it's kind of tedious and not streamlined. I'll explain what I did to get it to work, but I haven't tested it in depth yet, so it is still a work in progress. How to use XNB node is described in other posts, so I'm going to assume anyone reading this has a basic understanding of how to use the program to extract xnb files. Sorry for the over complicated explanation ahead of time.

                  To start, you'll need XNB node to extract Locations.xnb and a list of Stardew Valley object ID's. Locations.xnb is found in the data folder of your stardew valley folder, so for me it was "C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Content\Data". There is a built in Object ID list you can use if you extract ObjectInformation.xnb, also found in the data, but it's basically just as good to find a list online. I used this file: http://www.nexusmods.com/stardewvalley/mods/882/?. Once you use XNB node to extract Locations.xnb, you'll need to open up the Locations.yaml file you get with a text editor. I used Notepad++ since that was recommended by other people. If you double click the yaml file, your computer probably won't know how to open it. To avoid this right click the file and select "edit with Notepad++". This will show you a list of numbers that looks similar to this (If it is a bad quality picture I can retake upon request):

                  upload_2017-8-5_1-31-12.png

                  This locations file basically, to my understanding, tells Stardew Valley what object should appear in what areas. It is broken into nine different segments separated by slashes ("/"). The nine different segments refer to the four season and what can be foraged, the four seasons and what can be fished, and then what can be found from digging the ground. So it's spring forage items/summer forage items/.../winter fish/digging possibilities. Then there's two numbers for each item that can spawn there. A whole positive integer, typically a triple digit number like 143, followed by a -1,0, or 1. The integer refers to the object that can spawn naturally or the fish that can be caught. So the number 143 refers to Catfish. 0 and 1 locations only distinguish between the lake in the woods or the river in the woods, every other location value is -1. This can be better explained here: http://stardewvalleywiki.com/Modding:Fish_data. So a sting of Town: ~/~/~/~/143 -1/~/~/~/~ means that the object 143(Catfish) can be caught in -1(anywhere) of the location "Town". This makes sense because Catfish is a river fish that can be caught during spring and the only water source in the town zone is the river. If you look at the Forest though, there will be a 0 after 143. This just denotes that the Catfish can be caught in 0(the river) of the location Forest, it can't be caught in the lake(1) and it can't be caught in both(-1). If this description is too confusing, this website can help explain what the different sections represent: http://catox.free.fr/StardewTools/yaml_analyzer.html. Just go there and then select Locations.yaml.

                  So after understanding all this, I wanted to see if I could add my own area. When I created my FarmCave1 in tIDE, I used the "Water" action with the "T" (True) property. This allowed me to fish, refill my watering can, and throw things into the water in game. However upon further testing, I realized that the first time you try to fish in game, you are guaranteed (in my research) to catch a Sunfish. Every catch after that, though, was just various pieces of trash. That is because there were no fish set to spawn there and I assume Stardew Valley has a command that says if there's no fish, spawn trash. I don't have proof of that, it's just my assumption based on me catching 20 pieces of trash after the Sunfish. So I went back to my Locations.yaml file I opened with Notepad++ and added the last line of the code I showed you above:

                  upload_2017-8-5_1-55-49.png

                  This was an exact copy of the "UndergroundMine" code, but I replaced the location name with my custom FarmCave1. This means that in the location FarmCave1, which I added using the mod ALL, the fish 153 (Green Algae), 156 (Ghost Fish), and 157 (White Algae) will spawn in every season. The first four "-1" means that nothing considered a "forage" item, like spice berries or snow yams, will spawn in this location. The "107 .01" means there is a 1% chance of a dinosaur egg (107) spawning when I dig the diggable area of the location. I think making a tile "diggable" can be done in tIDE, but I haven't looked into it.

                  Once I did this I used XNB node to repackage my edited locations.yaml file back into a locations.xnb file. I copied this file and pasted it back into the Stardew Valley\Content\Data folder. I loaded up my StardewModding API game and headed to my edited FarmCave map. Initially there's no water at all in FarmCave which is why I figured the was no FarmCave location list to begin with. I was able to catch green algae and white algae immediately which was different than before. After a few attempts I managed to catch a Ghost fish, which is what I was aiming for the whole time. The chance of catching fish and behavior of fish are found in the Fish.xnb file, so altering Locations.xnb won't change how difficult a fish is or how rare it is, just where you can catch it. I'll post a pic here of me next to my small FarmCave1 lake to show I caught a fish.

                  upload_2017-8-5_2-19-25.png

                  I had CJB cheat mods installed to make moving through a new save easier, but I don't believe that should affect it since I had them installed before and after I got the fish to spawn. In the picture you can see I just caught another Ghost fish after catching green and white algae. I have the sunfish because it was the first time I fished in that save.

                  That's basically it though. I haven't found any quicker way to do it, but I don't feel like it's that much more complicated than tIDE. Sadly it does require altering actual game files, so backups should be saved. If there is any confusion, feel free to ask questions. I know I explained it in a bit of a confusing and complicated way, but I was trying to explain the entire process I did.

                  The process is basically:
                  - 1. Extract Locations.xnb using XNB node
                  - 2. Open Locations.yaml using a text editor like Notepad++
                  - 3. Create a new location with the same name as your custom location and the same 9 section format as the official game locations
                  - - 3a. This nine section format requires object id data which can be found online or if you extract and open ObjectInformation.xnb
                  - 4. Repackage your modified Locations.yaml using XNB node
                  - 5. Replace the original Locations.xnb with the modified Locations.xnb
                  This should allow you to catch the fish you added on whichever tiles you set as water.

                  Object ID's file: http://www.nexusmods.com/stardewvalley/mods/882/?
                  Locations.yaml format visualization: http://catox.free.fr/StardewTools/yaml_analyzer.html
                  Modding Fish spawn data explanation: http://stardewvalleywiki.com/Modding:Fish_data
                  Notepad++ link: https://notepad-plus-plus.org/
                   
                    Last edited: Aug 5, 2017
                    13akoors likes this.
                  • 13akoors

                    13akoors Scruffy Nerf-Herder

                    Looks really good and detailed. I followed it at least. This will definitely mean that new areas I add will have working fishing, probably even add it to TSE too.

                    Have you attempted to do this along with XNBLoader, so you don't need to overwrite the base game files? If not, I'll probably look into it in the next week myself
                     
                    • hihihi330

                      hihihi330 Poptop Tamer

                      I haven't tried using XNB Loader yet. I'll probably try and do that too because it is better to add new files than rewrite official game files. I was just grateful this worked in the first place. I was up until 3:00 am trying to get fish to spawn in my custom Farm Cave, so when I finally got a ghostfish, I was really glad and ready to call it a night. Now that I've confirmed it's possible I'll try and see if it can be used with XNB Loader and ALL. To be honest, I haven't used XNB Loader at all yet, which is why I didn't see if it could work before posting. :nurutease:

                      EDIT: It does work with XNB Loader. I was catching only trash originally, but I think that was just because of low fishing level and bad luck, but I eventually caught a fish. So it must still work.

                      Also, one quick question. I was wondering if I wanted to add a custom Farm map, is there a way to get it to be selectable from the start game menu? I found the Custom Farm Types mod on Nexus, but just wanted to make sure I wasn't missing anything that you may know of.

                      Actually, one more question. I was interested in making a map similar to the Mining Farm Map and wanted to see if I could make rocks and ores spawn at different locations. When figuring out the fishing spawns, I also found the "forage" items spawn, but I don't think the Locations file only affects fish and forage items. I haven't been able to figure out at all how Stardew determines to spawn ores only on the mining map or respawns the tree stumps on the foraging map. I think I would really like to make that a feature on my map if you have any ideas how it could be done. I may try putting in the Object ID for the ores into the Locations file and seeing if that spawns them like forage-able items, but that doesn't seem to be how it is done for the Mining Farm or the Mines themselves. I opened up both in tIDE and checked their yaml files to see if anything stood out, but I didn't see anything of interest.

                      Anyways, sorry for all the bother. I usually try to figure things out myself, but I'm stumped and you've been really helpful with all the other things I was trying to figure out.
                       
                        Last edited: Aug 7, 2017
                        13akoors likes this.
                      • hihihi330

                        hihihi330 Poptop Tamer

                        Hey Neo, I was just wondering if you had ever seen this error by ALL before. It caused my game to crash and wasn't sure where to start in an attempt to fix it.

                        ERROR Advanced Location Loader] Advanced Location Loader requested an immediate game shutdown: Unable to patch the game, a unexpected error occured at stage 1
                        Object reference not set to an instance of an object.
                        at Entoarox.AdvancedLocationLoader.Loaders.Loader1_2.ApplyPatches()
                         
                        • 13akoors

                          13akoors Scruffy Nerf-Herder

                          I don't know too much about error codes, unfortunately. ALL is currently being rewritten by Ento, so he'll likely fix whatever is broken once he (eventually) gets everything re-coded.

                          I've seen that error before, but I can't exactly remember what it's for. I could be wrong, but I think last I saw it, it had to do with loading tilesheets incorrectly. Are you sure what you're trying to load is properly coded? As I recall from the post on ALL's forum, you were loading ALL and Custom Farm Map when this occurs. Is there any error if you only use ALL?

                          EDIT: After re-looking at the ALL post, I realize these are 2 separate issues. Well, I still seem to recall that error being related to improper tilesheet loading, but I could be wrong
                           
                            Last edited: Aug 10, 2017
                          • hihihi330

                            hihihi330 Poptop Tamer

                            So I double checked to see if ALL was causing the issue on it's own, but I can't be totally sure. So I went to delete the Custom Farm Maps folder from the Mods folder and for some reason I don't have permission to delete that folder. Despite being the admin of my computer, my computer is not allowing me to delete it because I need permission from a different computer. Except the computer that it says I need permission from is this exact computer. So I don't really know what is going on with that.

                            I did manage to use a virus blocker program to delete everything inside the folders though which made SMAPI skip it, which leads me to believe it is an issue with ALL. Worse case scenario, I'll try and work on some maps in tIDE and wait for Ento to finish the updates. You can't rush something like that, so I'll just wait for his updated version.

                            Now I just need to figure out why I can't delete this empty folder.
                             
                              13akoors likes this.
                            • 13akoors

                              13akoors Scruffy Nerf-Herder

                              Sorry I didn't respond to this when you first sent it. I completely missed it when reading your post.

                              I'm working on some changes to the Mining Farm map, but similarly to the fish, it's not very well known how Stardew determines a lot of these things. I know for a fact that no one knows how stump/log/large rock spawning works, as minds more well-versed with SV have tried and failed to make them appear on maps that normally don't have them. I'm guessing normal rocks work alongside the paths layer, but i'm not sure how the ore works. I'm assuming there must be somewhere in the code where a similar code to the "forage" code is running which handles this, but I have no idea where to tell you to look, besides the Mining farm map or the Mountains map. You're going into code that few if anyone else understands, so I wish you good luck. And as always, if you find out anything, post it here.
                               

                              Share This Page