-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathShitModWorld.cs
56 lines (49 loc) · 2.38 KB
/
ShitModWorld.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.IO;
using ShitMod.Tiles.Ores;
using Terraria;
using Terraria.GameContent.Events;
using Terraria.GameContent.Generation;
using Terraria.ID;
using Terraria.IO;
using Terraria.ModLoader;
using Terraria.ModLoader.IO;
using Terraria.WorldBuilding;
namespace ShitMod
{
public class ShitModWorld : ModSystem
{
#region Generation
//Генерация в мире
public override void ModifyWorldGenTasks(List<GenPass> tasks, ref float totalWeight)
{
//Shinies - большинство ванильных руд
int shiniesIndex = tasks.FindIndex(genpass => genpass.Name.Equals("Shinies")); // находим по индексу
if (shiniesIndex != -1)
{
tasks.Insert(shiniesIndex + 1, new PassLegacy("Electro Ore Spawn", GenerateModOre)); // вставляем нашу руду вместо ванильной
}
}
private void GenerateModOre(GenerationProgress progress, GameConfiguration configuration)
{
progress.Message = "Spawning Mod Ores"; // ообщение пользователю
// перебор всех блоков в мире
for (int i = 0; i < (int)((Main.maxTilesX * Main.maxTilesY) * 6E-05); i++) // 6Е-05 = 0.00006
{
// выбор рандомных координат по X и Y
int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow - 100, Main.maxTilesY - 500);
// функция для размещения руды с силой и шагом
WorldGen.TileRunner(x, y, WorldGen.genRand.Next(4, 7), WorldGen.genRand.Next(3, 6), ModContent.TileType<ElectroOreTile>());
// спавн происходит только в снежном биоме (снежные и ледяные блоки)
//Tile tile = Framing.GetTileSafely(x, y);
//if (tile.HasTile && (tile.TileType == TileID.SnowBlock || tile.TileType == TileID.IceBlock))
//{
// WorldGen.TileRunner(x, y, WorldGen.genRand.Next(4, 7), WorldGen.genRand.Next(3, 6), ModContent.TileType<ElectroOreTile>());
//}
}
}
#endregion
}
}