-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModHelper.cs
147 lines (123 loc) · 5.44 KB
/
ModHelper.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
using System;
using Microsoft.Xna.Framework;
using SpawnHouses.Structures;
using Terraria;
using Terraria.DataStructures;
using Terraria.ModLoader;
using WorldGenTesting.Helpers;
// ReSharper disable InconsistentNaming
namespace SpawnHouses;
public class ModHelper : ModSystem
{
public static bool IsMSEnabled;
public static bool ErrorLoadingMS;
public static int CraftingAccessTileID;
public static int CraftingAccessTileEntityID;
public static int RemoteAccessTileID;
public static int RemoteAccessTileEntityID;
public static int StorageAccessTileID;
public static int StorageAccessTileEntityID;
public static int StorageHeartTileID;
public static int StorageHeartTileEntityID;
public static int StorageUnitTileID;
public static int StorageUnitTileEntityID;
public static int EnviromentAccessTileID;
public static int EnviromentAccessTileEntityID;
public static bool IsRemnantsEnabled;
public static bool IsWorldGenTestingEnabled;
[JITWhenModsEnabled("MagicStorage")]
public static void GetMagicStorage()
{
IsMSEnabled = true;
try
{
CraftingAccessTileID = ModContent.TileType<MagicStorage.Components.CraftingAccess>();
CraftingAccessTileEntityID = ModContent.TileEntityType<MagicStorage.Components.TECraftingAccess>();
RemoteAccessTileID = ModContent.TileType<MagicStorage.Components.RemoteAccess>();
RemoteAccessTileEntityID = ModContent.TileEntityType<MagicStorage.Components.TERemoteAccess>();
StorageAccessTileID = ModContent.TileType<MagicStorage.Components.StorageAccess>();
StorageAccessTileEntityID = ModContent.TileEntityType<MagicStorage.Components.TEStoragePoint>();
StorageHeartTileID = ModContent.TileType<MagicStorage.Components.StorageHeart>();
StorageHeartTileEntityID = ModContent.TileEntityType<MagicStorage.Components.TEStorageHeart>();
StorageUnitTileID = ModContent.TileType<MagicStorage.Components.StorageUnit>();
StorageUnitTileEntityID = ModContent.TileEntityType<MagicStorage.Components.TEStorageUnit>();
EnviromentAccessTileID = ModContent.TileType<MagicStorage.Components.EnvironmentAccess>();
EnviromentAccessTileEntityID = ModContent.TileEntityType<MagicStorage.Components.TEEnvironmentAccess>();
//AutomatonEntityID = ModContent.NPCType<MagicStorage.NPCs.Golem>()
}
catch (Exception)
{
IsMSEnabled = false;
ErrorLoadingMS = true;
ModContent.GetInstance<SpawnHouses>().Logger.Error("Failed to retrieve Magic Storage TileIDs. Contact the mod author about this issue");
}
}
[JITWhenModsEnabled("MagicStorage")]
public static bool LinkRemoteStorage(Point16 remotePos, Point16 heartPos)
{
if (!IsMSEnabled) return false;
void SendError()
{
ModContent.GetInstance<SpawnHouses>().Logger.Error("Failed to link Magic Storage's remote storage to storage heart. Contact the mod author about this issue");
}
try
{
TileEntity.ByPosition.TryGetValue(remotePos, out TileEntity tileEntity);
MagicStorage.Components.TERemoteAccess remoteTileEntity = (MagicStorage.Components.TERemoteAccess)tileEntity;
if (remoteTileEntity == null)
{
SendError();
return false;
}
bool success = remoteTileEntity.TryLocate(heartPos, out string message);
if (!success) SendError();
return success;
}
catch (Exception)
{
SendError();
return false;
}
}
[JITWhenModsEnabled("Remnants")]
public static void GetRemnants()
{
IsRemnantsEnabled = true;
}
[JITWhenModsEnabled("WorldGenTesting")]
public static void GetWorldGenTesting()
{
IsWorldGenTestingEnabled = true;
var consoleInstance = ModContent.GetInstance<WorldGenTesting.UI.MenuConsoleSystem>();
string CreateWorld()
{
TestingHelper.MakeWorld("SpawnHousesAutomatedTesting", TestingHelper.WorldSize.Medium);
return null;
}
consoleInstance.AddTest(new Test(
ModInstance.Mod, [CreateWorld, SpawnHousesTesting.TestMainHouse], "mainhouse"
));
consoleInstance.AddTest(new Test(
ModInstance.Mod, [CreateWorld, SpawnHousesTesting.TestBeachHouse], "beachhouse"
));
consoleInstance.AddTest(new Test(
ModInstance.Mod, [CreateWorld, SpawnHousesTesting.TestMainBasement], "mainbasement"
));
consoleInstance.AddTest(new Test(
ModInstance.Mod, [CreateWorld, SpawnHousesTesting.TestMineshaft], "mineshaft"
));
consoleInstance.AddTest(new Test(
ModInstance.Mod, [CreateWorld, SpawnHousesTesting.TestMainHouse, SpawnHousesTesting.TestBeachHouse,
SpawnHousesTesting.TestMainBasement, SpawnHousesTesting.TestMineshaft], "all"
));
}
public override void OnModLoad()
{
if (ModLoader.HasMod("MagicStorage") && ModContent.GetInstance<SpawnHousesConfig>().MagicStorageIntegrations)
GetMagicStorage();
if (ModLoader.HasMod("Remnants"))
GetRemnants();
if (ModLoader.HasMod("WorldGenTesting"))
GetWorldGenTesting();
}
}