FANDOM


The project.xml file is created by the game and holds all the data for the world that is not included as terrain. It is in xml format and can be read and modified using many different tools, such as a text editor.

This file holds data specific to the world, not to the game itself. For instance, it holds the design of any furnitures used in the world. Any other furniture imported into the game's "content" but not added in the world will NOT be included in the project file.

The actual .xml file has a lot of 'formatting' needed for the computer to read it. All that 'extra' formatting has been removed in the samples shown in this article.


Opening the world file

To edit the project.xml file, you need to be able to do 3 things.

First you must be able to locate the world file. This is the worldname.scworld file that the world is saved as. It is just a 'zip' collection of several files the game creates for the world. This is found inside the folder Survivalcraft makes for itself.

Second you must be able to extract the project file from inside the world file, and then replace the file with the modified version. Many file browsers let you extract the file without 'unzipping' the entire .scworld file.

Third you have to be able to edit the project file. This only requires a basic text editor. A basic editor may be better than a full-featured one because the file MUST be saved as a text-only file. It cannot be in rtf, doc, or any other format.


Opening it in Android

If you are android user, you can easily edit the project.xml with your device. There are several apps that will be helpful. The first is a file browser that lets you open zip files. A good one is X-Plore and another is called File Manager made by Cheetah Mobile.

  1. Upload the world that you want to edit to sd card.
  2. Open the file browser and find the folder named "Survivalcraft", in the internal memory. It's usually at the top of the file tree.
  3. Open the folder. There will be the list of all worlds you had uploaded to SD.
  4. Select the file you just saved (the most recent one) then change the extention to ".zip".
  5. Open the zip file (You can open it without unzipping it if you use the recommended apps). You will see at least three files: chunks.dat, project.bak, project.xml. Chunks.dat contains the data about chunks (duh). The project.bak file is a backup for the project.xml file.
  6. EDIT THE "project.xml" FILE.
    1. You should copy this file to another location while editing it.
    2. Use a text editor to make the changes. Be sure to resave it in plain text format.
    3. When finished, copy the file back into the original 'zip' file.
  7. Change the world file's extention back to ".scworld".


Opening it in windows

Opening it in a desktop or mobile windows machine is very similar to using android. The process is the same, only the location of the world files are different.

One user reports that this is the common location for the world files: C:\Users\"username"\AppData\Local\Packages\20961CandyRufusGames.Survivalcraft2_c7jxg4av36ap6\LocalState\Worlds\World (0-20}.


Opening it in iOS

Apple users have a different 'problem'. iOS does not allow you to save to SD memory, so the world has to be uploaded to dropbox first.

Then you must access the world as a zip file. This may be easiest by using another system. At this point, the procedure is the same.

Once you're finished editing it and changed the extention back to ".scworld", it must be resaved to dropbox so Survivalcraft can access it again.


Project file description

The file is arranged into two main sections with sub-sections inside them.

Subsystems

This holds most of the useful information.

Inside of "Subsystems" are the following entries. Some may not be present in your world and they may have different orders. Some sections may be very large if you have a lot of that particular item in your world.

  • "PlayerStats"
  • "Players"
  • "TruthTableCircuitrBlockBehavior"
  • "Spawn" (which may be HUGE)
  • "Pickables"
  • "MemoryBankBlockBehavior"
  • "ExplosivesBlockBehavior"
  • "WoodBlockBehavior"
  • "Camera"
  • "Weather"
  • "SignBlockBehavior"
  • "Projectiles"
  • "MovingBlocks"
  • "GameInfo"
  • "FurnitureBlockBehavior"
  • "Intro"
  • "Electricity"
  • "Gui"
  • "SaplingBlockBehavior"
  • "BlocksScanner"
  • "RotBlockBehavior"
  • "MagnetBlockBehavior"
  • "TimeOfDay"
  • "CollapsingBlockBehavior".

Entities

This section can be huge. It holds the individual information for each entity - that is each player, chest, crafting table, furnace, dispenser and every 'active' animal. These are not in any specific order but the parts for players will generally be first in this section.

The first line for each entity has a unique identifying number (GUID) and the name of the type of entity. The next lines depend on what that entry is. Some may be short and some are long.


Individual Entry Descriptions

Game Info

This is a sample (stripped down) Game Info entry:

   "WorldName" = "Phoenix Federation" /
   "OriginalSerializationVersion" = "2.0" /
   "GameMode" = "Cruel" /
   "EnvironmentBehaviorMode" = "Living" /
   "TimeOfDayMode" = "Changing" /
   "AreWeatherEffectsEnabled" = "True" /
   "IsAdventureRespawnAllowed" = "True" /
   "AreAdventureSurvivalMechanicsEnabled" = "True" /
   "AreSupernaturalCreaturesEnabled" = "False" /
   "WorldSeedString" = "" /
   "TerrainGenerationMode" = "Continent" /
   "IslandSize" = "200,200" /
   "TerrainLevel" = "64" /
   "TerrainBlockIndex" = "8" /
   "TerrainOceanBlockIndex" = "18" /
   "TemperatureOffset" = "0" /
   "HumidityOffset" = "0" /
   "SeaLevelOffset" = "0" /
   "BiomeSize" = "1" /
   "BlockTextureName" Type = "PhF 2.1 plus.png.scbtex" /
   "Palette"
      "Colors" = ";;;;;;;;;;;;;;;" /
      "Names" Type = ";;;;;;;;;;;;;;;" /
   
   "WorldSeed" = "137277" /
   "TotalElapsedGameTime" = "6367149.0882766638" /

Many of these entries are set by the OPTIONS during normal world generation. Some may be changed afterward, depending on the current game mode.

Hacking Game Info

The following items are useful to edit:

  • Game Mode: Put the game into the specified mode. (This is the only way to get out of Cruel mode.) The accepted modes are: Cruel, Challenging, Harmless, Creative and Adventure. Only these exact words will be accepted.
  • WorldSeedString: This is the string entered when the world was created. It will be blank if a random seed was used. You CAN use this string to create a new "identical" world (if it isn't blank).
  • TerrainOceanBlockIndex: The ocean is made up of the block id specified here. Only works on flat worlds and the id must represent a valid block.
  • TemperatureOffset and HumidityOffset: These represent the overall world's base settings. They reflect the values chosen when the world was created.
  • SeaLevelOffset: This sets the level of water throughout the world. By editing this in a non-flat world, the water can be made to cover more of the land. In-game the ocean may be raised up to 16 blocks. By editing the xml, it can be raised further if you want a deeper ocean with much less land mass. It may even be edited to a negative number but this will often cause strange effects:
Survivalcraft 2018-07-07 11-51-44

This can be avoided by editing the world before adding a player. (See below.)

  • BiomeSize: Controls the relative sizes of the biomes. Normally between 1 and 3. If it's set to smaller values than 1, very small and strange terrain biomes are generated. This can be set to "Infinity" to create a single, huge biome.
  • BlockTextureName: Shows the name of the texture pack chosen for this world.
  • Palette: Used when the palette colors are different than the default ones.
  • WorldSeed: This is internal seed created by the game, to identify this particular terrain generation. It is NOT the same as what is entered when creating a new world. You can NOT use this when creating a new world, hoping it will make the same one.
  • TotalElapsedGameTime: displays the total play time in the game since it was first created.

Also, see below for more detailed "World Modifications" which can be made to this section.


Player Specific Sections

There are three sections devoted to information about the player(s). "PlayerStats" holds the details of what the player has done in the past. "Players" holds the system-related specifications for that player (see below). Player (entity) holds all the current data for the player, such as current location, hunger, inventory, etc.

Player Stats

Since 2.0, the game keeps track of more information about the characters (players). Most of these stats are shown on the pause screen. There is little point in modifying them since they represent past 'achievements'.

Here is a typical entry for this section:

    "PlayerStats"
      "Stats"
        "1"
          "DistanceTravelled" = "153106.8052464803"
          "DistanceWalked" = "106555.81852962566"
          "DistanceFallen" = "44113.418842129344"
          "DistanceClimbed" = "0"
          "DistanceFlown" = "0"
          "DistanceSwam" = "43.043845433596289"
          "DistanceRidden" = "2394.508053181893"
          "LowestAltitude" = "3.9999997615814209"
          "HighestAltitude" = "112.225341796875"
          "DeepestDive" = "1.7996444702148438"
          "Jumps" = "14119"
          "BlocksDug" = "12762"
          "BlocksPlaced" = "3493"
          "BlocksInteracted" = "2391"
          "PlayerKills" = "0"
          "LandCreatureKills" = "282"
          "WaterCreatureKills" = "2"
          "AirCreatureKills" = "93"
          "MeleeAttacks" = "1163"
          "MeleeHits" = "1132"
          "RangedAttacks" = "177"
          "RangedHits" = "104"
          "HitsReceived" = "224"
          "StruckByLightning" = "1"
          "TotalHealthLost" = "28.515389336273074"
          "FoodItemsEaten" = "172"
          "TimesWasSick" = "0"
          "TimesHadFlu" = "0"
          "TimesPuked" = "0"
          "TimesWentToSleep" = "123"
          "TimeSlept" = "36491.68495955877"
          "ItemsCrafted" = "2765"
          "FurnitureItemsMade" = "0"
          "EasiestModeUsed" =  "Challenging"
          "HighestLevel" =  "20.736208"
          "DeathRecordsString" =  "3.4306013577994112,306.019684,64.0674744,206.587173,mauled by a brown bear;"


Players

This will show certain details for each player in the world. There will be an entry for each player.

Here is a typical entry for one player:

  "Players"
    "NextPlayerIndex" Type="int" Value="2"
    "GlobalSpawnPosition" Type="Vector3" Value="-44.8986778,65.35824,18"
    "Players"
      "1"
        "SpawnPosition" = "466.25,64.1,-8.25"
        "FirstSpawnTime" = "0.016241099685430527"
        "LastSpawnTime" = "4462.9115594206378"
        "SpawnsCount" = "11"
        "Name" = "Explorer"
        "PlayerClass" = "Male"
        "Level" = "20.736208"
        "CharacterSkinName" = "Explorer.scskin"
        "InputDevice" = "None"

Player (Entity)

Here is a typical entry:

  <Entities>
    "1" Guid="bef1b918-6418-41c9-a598-95e8ffd39ab3" Name="MalePlayer">
      "Player">
        "ConstantSpawn" = "False"
        "PlayerIndex" = "1"
      "Locomotion"
        "IsCreativeFlyEnabled" = "False"
      "Health"
        "Health" = "1"
        "Air" = "1"
      "Intro"
        "PlayIntro" = "False"
      "Sickness"
        "SicknessDuration" = "0"
      "Body">
        "Position" = "340.25,54,236.20903"
        "Rotation" = "0,-0.342197448,0,0.939628065"
        "Velocity" = "0,0,5.20547039E-13"
      "Gui">
        "KeyboardHelpMessageShown" = "False"
        "GamepadHelpMessageShown" = "False"
      "FurnitureInventory">
        "FurnitureSet" = ""
      "Spawn">
        "SpawnTime" = "4462.9115594206378"
      "Inventory">
        "Slots">
          "Slot0">
            "Contents" = "38"
            "Count" = "1"
          "Slot1">
            "Contents" = "36"
            "Count" = "1"
          "Slot2">
            "Contents" = "3932197"
            "Count" = "1"
          "Slot3">
            "Contents" = "31"
            "Count" = "39"
          "Slot4">
            "Contents" = "67633343"
            "Count" = "1"
. . . 
          "Slot21">
            "Contents" = "65709"
            "Count" = "23"
        "ActiveSlotIndex" = "5"
      "Flu">
        "FluDuration" = "0"
        "FluOnset" = "0"
      "Clothing">
        "Clothes">
          "Head" = ""
          "Torso" = ""
          "Legs" = ""
          "Feet" = ""
      "Sleep">
        "SleepStartTime" = "0"
        "AllowManualWakeUp" = "True"
      "CraftingTable">
        "Slots"
      "VitalStats">
        "Food" = "0.9906888"
        "Stamina" = "1"
        "Sleep" = "0.590762258"
        "Temperature" = "18.7428932"
        "Wetness" = "0"
        "Satiation">
          "89" = "1.66374815"
      "OnFire">
        "FireDuration" = "0"
      "CreativeInventory">
        "ActiveSlotIndex" = "0"
        "CategoryIndex" = "0"
        "PageIndex" = "0"
        "Slots"

Useful Changes

  • If you change the player's 'HEALTH' to "Infinity", you are essentially invincible and can fly high above the world or even underneath it and are not damaged. You cannot even 'suicide'. Health is normally from 0 (dead) to 1 (full health). This value is found in the Player (entity) section.
  • You can set things like what is in the character's inventory and what clothing it is wearing. The section labelled "Inventory" has a total of 21 slots. This is because the first 6 (0-5) refer to the hotbar slots. There is a separate entry for the inventory seen when in creative mode, called "CreativeInventory". In this example it's empty. The personal crafting space has its own entry as well.
  • You can enable flying even in non-creative modes by changing "IsCreativeFlyEnabled" to "True".


Memory Bank

This is an example code for the MemoryBankBlockBehavior section in a sample xml file:

"[b]MemoryBankBlockBehavior[/b]"
   "[b]Blocks[/b]"
      "3405,66,5002" = "FEDCBA9876543210;3"
      "3403,65,5004" = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F;0"
   "[b]Items[/b]"

That is the code for two banks placed and programmed with data.

What that code means:

"MemoryBankBlockBehavior" has two sub-heads - "Blocks" and "Items".

The "Blocks" heading lists every bank by a unique 'Name', which is actually their location. Each bank in this list has two values. The first value is the data in that bank. The second value is the data that is currently being output by the bank.

As you can see, the programmed data assumes all trailing data are '0's. The first bank was only programmed in the first row, so the remaining data are all '0's. The second bank was only programmed in the last cell so all leading data was fillled in as '0's. The first bank has a battery connected to the AddressLow input which is supplying a steady voltage value of 'C' to the input. This causes the bank to output a '3' as indicated. The second bank has nothing connected to the address inputs and accordingly is outputting a '0'.

What the "Items" heading means for the bank behavior is yet unknown.

Note that this is NOT the block data for the memory bank so does not include the bank's orientation or connections. That information is inside the chunks file.

This means that it is possible to program every bank in a world, and set its current state outside of the game itself.


Truth Table

The xml code for a truth table entry is:

"[b]TruthTableCircuitBlockBehavior[/b]"
   "[b]Blocks[/b]"
      "3407,66,4999" = "0F0000000000000F"
   "[b]Items[/b]"

The structure is the same as for the Memory Bank. It has two sub-headings, "Blocks" and "Items". Each table listed in the block section is also identified by its location. There is only a single value for each table and this tells how it is programmed. Each digit in the string represents one checkbox in the table's interface. The left-most digit is the top box, etc. Where the box is checked, an 'F' is present in the file.

This shows that through the xml file, we can do something that cannot be done 'normally', however! Each input and the output are normally assumed to be binary (digital). But, the above data shows that the output may be treated as a hexadecimal (analog) value. Rather than outputting an 'F' (digital '1') the table can actually output ANY hex value. This feature gives us more flexibility in the Truth Table although it can only be utilized via editing the xml file. And it has been verified to work.


Furniture

There are two general entries for furniture use. The first is for each furniture design and the second is for furniture packs.

This is an example basic entry for a furniture design:

  Name = "4"
    Name = "Stone light"
    TerrainUseCount = "71"
    Resolution = "15"
    InteractionMode = "None"
    Values = "1582*0,1*26,14*0,1*79903,14*0,1*26,14*0,1*26,14*0,1*26,1732*0,"

There are 6 fields in this entry:

  • The first Name is the internal reference to this particular furniture design. The game assigns this unique number to each design.
  • The second Name is what the player named this design.
  • The third field, "TerrainUseCount" keeps track of how many times this design is used in the world. If it is '0' and the design is not included in a furniture pack, it will be deleted by the game.
  • The fourth field records the resolution, or initial size of the design. This can be from 2 to 16.
  • The fifth field, "InteractionMode" tells the system what 'type' of furniture this piece is. The valid values are: "None", "ElectricButton", "ElectricSwitch", "Interactive" and "Connected".
  • The last field holds the actual design parameters of this piece. It calls out the BlockID and the amount of those blocks, using a defined starting point and pattern. The first entry in the above example is "1582*0" and tells there are 1582 blocks of air ('0') before the first non-air block is found.


If the design is a switch, interactive or connected type, there will be an additional field:

  "LinkedDesign" = "56" />

This is how each different design for a changing piece is defined and it creates a "linked list". The value specifies the next design in this list and refers to the first 'Name' in the entry (the number). For a toggle switch, there will only be two designs in the list. For others, there may be up to 9 different designs. See below, "Infinite State Blocks".


Hacking Furniture

  • Unsuitable Blocks

There are several blocks that are not acceptable in normal furniture creation, such as dirt, leaves and trees (wood). By editing the furniture in the xml, these blocks can be incorporated into a furniture design. Many of these unsuitables will not turn out as expected. In particular, any items with a 3-D model or ones that are 'activated' blocks, such as grass (not dirt) or furnace may not work well.

The easiest way is to create the design you want, using a unique block where you want the unsuitable block to be. Use a block which you know the block ID of, and which is not used anywhere else in the design. Then edit the xml to find that furniture design. Within the design, locate the place(s) where the unique block is and simply replace its ID with the ID of the unsuitable block.

  • Infinite-State Blocks

Interactive blocks have several states. As described above, these states form a 'linked list'. The limit of 9 states is a block is imposed by the crafting table, not by the furniture itself since linked lists have no inherent limit. In a linked list, each state has a pointer to the next state. The 'final' state simply points back to the first state, so a circle is formed. By editing the list pointers, we can do several things not possible in-game. These are all accomplished by simply changing the "LinkedDesign" pointers.

  1. The list can be extended to any length desired.
  2. The piece does not have to repeat - it can be made to 'freeze' in one specified state, by specifying the LinkedDesign as the current state.
  3. The piece can go through some states only once and then repeat in a pattern which doesn't include those states. This includes the possibility of one piece 'morphing' into another. Instead of the last state linking to the first, it can link to any one along the chain.
  4. Using the above idea, two apparently different pieces can 'morph' into the same one.


Furniture Packs

Here is a sample entry for a furniture pack (set):

  Name = "0"
    Name = "Hexkeys"
    ImportedFrom = "Hexkeys.scfpack"
    Indices = "0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15"

As in furniture pieces, the first "Name" is assigned by the game. The second "Name" is the name given by the creator of the pack. This third field, "ImportedFrom" defines the file this pack was saved as. It will not be included if the pack was created in the current world. The last field, "Indices" specifies which individual pieces are included in this furniture pack.


Moving Blocks

This section is meant as support for falling blocks and it keeps track of blocks being moved by pistons. Moving blocks are defined in sets since there is often more than a single block moving together.

This is a sample (stripped-down) entry:

 MovingBlocks
   MovingBlockSets
     Name="0">
       "Position" = "128,69.7492752,941" />
       "TargetPosition" = "128,-2,941" />
       "Speed" = "1.91046238" />
       "Acceleration" = "10" />
       "Drag" = "0.7" />
       "Id" = "CollapsingBlock" />
       "Blocks" = "7,0,0,0;" />

This is an example entry for a single falling block of sand.

  • Position is the current location of the 'reference block' for the group.
  • TargetPosition is the final position when motion will stop. For all falling blocks this is set to -2. For blocks being moved by pistons, this is determined by the setting and location of the piston.
  • Speed is the group's current speed of movement.
  • Acceleration is set to "10" for falling groups and "0" for piston groups.
  • Drag is non-zero in this example. This particular block is falling while up against a wall, causing the drag.
  • Smoothness is present in piston-based groups and is a 2-valued vector.
  • Id indicates the type of group this is. So far, the only known acceptable values are "CollapsingBlock" and "Piston".
  • Tag is present in piston-based groups and defines the position of the piston block itself.
  • Blocks lists the blocks that make up this group. Each block has a 4-valued entry where the first value is the block ID and the rest are its location relative to the 'reference block'. One block will always have "n,0,0,0" showing it's the reference block.

Hacking 'Moving Blocks'

Thanks to @Lion, from the russian SC community, for discovering the unique things we can do by modifying this section.

You can (theoretically) make a huge building move across the ground or blocks that shoot up into the sky and go on forever. First it is necessary to explore and define certain characteristics of freely moving blocks and piston-driven groups.


Signs

Here's a typical sign entry:

(    <Values Name="SignBlockBehavior">
      <Values Name="Texts">)
--- SIGN ENTRY: ---
        <Values Name="0">
          <Value Name="Point" Type="Point3" Value="11,66,-20" />
          <Value Name="Line1" Type="string" Value="blue" />
          <Value Name="Line2" Type="string" Value="white" />
          <Value Name="Color1" Type="Color" Value="0,0,96" />
          <Value Name="Color2" Type="Color" Value="180,180,180" />
          <Value Name="Url" Type="string" Value="http:blome" />
        </Values>
      </Values>
    </Values>

The first line has the unique identified the game assigns to each sign. The next line ("Point") is the location of the sign inmthe world coordinates.

Next, each line of text is listed after "Line1", "Line2", etc. The colors of each line are listed similarly. "Color1" is the color oo=f the text in Line1, etc. The line "Url" holds the web address the sign will open if tapped in adventure mode. (See Sign.)

Custom text colors

You can make the color of the text to be any color you choose.

The three values in the 'color' fields specify an "xna frameworks" color. This is a standard way to define colors and is used throughout the internet. Each number can be from 0 to 255. The first one is the amount of red in the final color. The second is the amount of green, and the third is blue.

You can reference a standard color chart to find the color and value you wish.

Entities

Here is a part of a typical entities section:

    <Entity Id="2" Guid="c7dfa822-ba6e-4f3f-905c-0241823edf15" Name="Ray_Brown">
      <Values Name="Locomotion">
        <Value Name="IsCreativeFlyEnabled" Type="bool" Value="False" />
      </Values>
      <Values Name="Creature">
        <Value Name="ConstantSpawn" Type="bool" Value="False" />
      </Values>
      <Values Name="Spawn">
        <Value Name="SpawnTime" Type="double" Value="362.393716359511" />
      </Values>
      <Values Name="Loot">
        <Value Name="LootDropped" Type="bool" Value="False" />
      </Values>
      <Values Name="Body">
        <Value Name="Position" Type="Vector3" Value="406.512665,62.4463348,56.9966545" />
        <Value Name="Rotation" Type="Quaternion" Value="0,0.436656624,0,0.8996283" />
        <Value Name="Velocity" Type="Vector3" Value="-0.639416754,-0.09736531,-0.496444345" />
      </Values>
      <Values Name="Health">
        <Value Name="Health" Type="float" Value="1" />
        <Value Name="Air" Type="float" Value="1" />
      </Values>
      <Values Name="OnFire">
        <Value Name="FireDuration" Type="float" Value="0" />
      </Values>
    </Entity>
    <Entity Id="3" Guid="f00144f5-ede0-461c-96f9-2206babbbf06" Name="Bison">
      <Values Name="Creature">
        <Value Name="ConstantSpawn" Type="bool" Value="False" />
      </Values>
      <Values Name="Locomotion">
        <Value Name="IsCreativeFlyEnabled" Type="bool" Value="False" />
      </Values>
      <Values Name="Loot">
        <Value Name="LootDropped" Type="bool" Value="False" />
      </Values>
      <Values Name="Body">
        <Value Name="Position" Type="Vector3" Value="403.7786,63.76605,85.55463" />
        <Value Name="Rotation" Type="Quaternion" Value="0.000128486674,0.9976713,-0.0018801156,0.0681806356" />
        <Value Name="Velocity" Type="Vector3" Value="-0.0159330163,0.0493074059,0.188022658" />
      </Values>
      <Values Name="OnFire">
        <Value Name="FireDuration" Type="float" Value="0" />
      </Values>
      <Values Name="Health">
        <Value Name="Health" Type="float" Value="1" />
        <Value Name="Air" Type="float" Value="1" />
      </Values>
      <Values Name="Spawn">
        <Value Name="SpawnTime" Type="double" Value="358.38871435076" />
      </Values>
    </Entity>
    <Entity Id="4" Guid="60dc514b-2b8e-40a7-9bc3-09bb1efe0732" Name="Raven">
      <Values Name="Locomotion">
        <Value Name="IsCreativeFlyEnabled" Type="bool" Value="False" />
      </Values>
      <Values Name="Creature">
        <Value Name="ConstantSpawn" Type="bool" Value="False" />
      </Values>
      <Values Name="OnFire">
        <Value Name="FireDuration" Type="float" Value="0" />
      </Values>
      <Values Name="Body">
        <Value Name="Position" Type="Vector3" Value="439.135132,73.6557846,101.548668" />
        <Value Name="Rotation" Type="Quaternion" Value="0,0.667251945,0,0.7448321" />
        <Value Name="Velocity" Type="Vector3" Value="-3.11229944,0.991040468,-0.7202861" />
      </Values>
      <Values Name="Loot">
        <Value Name="LootDropped" Type="bool" Value="False" />
      </Values>
      <Values Name="Health">
        <Value Name="Health" Type="float" Value="1" />
        <Value Name="Air" Type="float" Value="1" />
      </Values>
      <Values Name="Spawn">
        <Value Name="SpawnTime" Type="double" Value="354.37284226063639" />
      </Values>
    </Entity>
    <Entity Id="5" Guid="abf17893-e4d4-4638-943d-50a545761ecc" Name="Piranha">
      <Values Name="Creature">
        <Value Name="ConstantSpawn" Type="bool" Value="False" />
      </Values>
      <Values Name="Locomotion">
        <Value Name="IsCreativeFlyEnabled" Type="bool" Value="False" />
      </Values>
      <Values Name="Spawn">
        <Value Name="SpawnTime" Type="double" Value="362.393716359511" />
      </Values>
      <Values Name="Loot">
        <Value Name="LootDropped" Type="bool" Value="False" />
      </Values>
      <Values Name="Health">
        <Value Name="Health" Type="float" Value="1" />
        <Value Name="Air" Type="float" Value="1" />
      </Values>
      <Values Name="Body">
        <Value Name="Position" Type="Vector3" Value="366.109283,62.91997,73.52771" />
        <Value Name="Rotation" Type="Quaternion" Value="0,0.8390603,0,0.5440384" />
        <Value Name="Velocity" Type="Vector3" Value="-0.9491566,0.08113135,0.3140725" />
      </Values>
      <Values Name="OnFire">
        <Value Name="FireDuration" Type="float" Value="0" />
      </Values>
    </Entity>

Entities mods

This is a list of things that can be done by editing entity section;

-teleport player/animals (by editing position)

-make player/animals immortal (by editing health in vital stats)

-make animals fly in creative (by enabling creative flying mode)

-spawn rare animals(by putting in their data)

-despawn animals. they just disappear, like dead animals do.(by adding DespawnTime value)

-bring animals from the dead. Only works when the body still exists. (by modifying health and deathtime?)

-make indestructable boat(by editing hitpoint of the boat) - with this, you can travel in magma! Sadly the heat will kill you.


-If you type in coordinates in the magnet behavior, you can get an invisible magnet at that location.


World modification

Most of the entries in the project file are related to things inside the world but some entries are about the world itself.


Flatten portions of the world

You can have a world with only certain areas modified to “Flat”. These areas could be at any level you wish, from 0 to 120. The rest of the world may be generated normally with common terrain features.

How it works: The game has a terrain generator that creates the untouched world without saving any parts of it. But once any block is added, broken or changed by the player, it no longer can use the generator and the chunk that the block was in must be saved as it is. The saved chunks are in the chunks32.dat file. (We will not modify that file, here.)

The terrain generator can be affected by some settings in the project file. These changes do not affect the chunks already stored in the chunks file, only ones that were never modified.

This procedure will "lock in" only certain chunks (by modifying them) but let other chunks change according to the new settings. Then those chunks may be "locked in" at the new settings.

The Process

  1. create a random or seeded world
  2. mark any chunks you wish to keep as normal terrain (place or remove any block in that chunk)
  3. exit the world and save it to SD
  4. open that world’s xml file
  5. change terrain type to "Flat"
  6. set new terrain level
  7. set terrain block type as wanted
  8. save the xml file
  9. load the world into SC and open it
  10. mark all chunks to keep at that new level
  11. exit the world and save it to SD
  12. open that world’s xml file
  13. change back to Normal terrain and level 64
  14. save the xml file
  15. load the world into SC and open it

You now have a ‘normal’ world with deep pits or high towers of flat terrain. You can repeat this process for any other levels you wish, higher or lower than normal. These will be flat with the terrain block specified.

Other World mods

If you start with a “Flat” world, you could change it to Normal to generate terrain but it always generates infinite ocean with islands, even if you don’t modify it before making it “Normal”. As long as terrain generation is “Normal”, the terrain level doesn’t seem to matter.

Worlds without people

Some changes are affected by whether a chunk has been 'spawned' already or not. You can avoid this in new worlds by creating a world without a player character in it. Such a world cannot be opened normally but it can be saved and edited. There will be no sections for player info so you can't hack anything in there. But there is also no "Spawn" / "Chunks" section and so is an untouched, pristine world.

Doing so is simple. Create your new world as you want it set up and enter the "SETUP PLAYER" screen but tap the BACK arrow instead of OK. The world may be saved and edited as any other.