Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ PutItemInNearbyChest()

static Item Terraria.Chest.PutItemInNearbyChest ( Item item,
Vector2 position )
inlinestatic

Definition at line 272 of file Chest.cs.

273 {
274 if (Main.netMode == 1)
275 {
276 return item;
277 }
278 bool flag = true;
279 for (int i = 0; i < 8000; i++)
280 {
281 bool flag2 = false;
282 bool flag3 = false;
283 if (Main.chest[i] == null || IsPlayerInChest(i) || IsLocked(Main.chest[i].x, Main.chest[i].y))
284 {
285 continue;
286 }
287 Vector2 vector = new Vector2(Main.chest[i].x * 16 + 16, Main.chest[i].y * 16 + 16);
288 if ((vector - position).Length() >= 600f)
289 {
290 continue;
291 }
292 for (int j = 0; j < Main.chest[i].item.Length; j++)
293 {
294 if (Main.chest[i].item[j].IsAir)
295 {
296 flag3 = true;
297 }
298 else if (item.IsTheSameAs(Main.chest[i].item[j]))
299 {
300 flag2 = true;
301 int num = Main.chest[i].item[j].maxStack - Main.chest[i].item[j].stack;
302 if (num > 0)
303 {
304 if (num > item.stack)
305 {
306 num = item.stack;
307 }
308 VisualizeChestTransfer(position, vector, item, num);
309 if (flag)
310 {
311 item.stack -= num;
312 Main.chest[i].item[j].stack += num;
313 }
314 if (item.stack <= 0)
315 {
317 return item;
318 }
319 }
320 }
321 else
322 {
323 flag3 = true;
324 }
325 }
326 if (!(flag2 && flag3) || item.stack <= 0)
327 {
328 continue;
329 }
330 for (int k = 0; k < Main.chest[i].item.Length; k++)
331 {
332 if (Main.chest[i].item[k].type == 0 || Main.chest[i].item[k].stack == 0)
333 {
335 if (flag)
336 {
337 Main.chest[i].item[k] = item.Clone();
339 }
340 return item;
341 }
342 }
343 }
344 return item;
345 }
static bool IsLocked(int x, int y)
Definition Chest.cs:235
Item[] item
Definition Chest.cs:41
static void VisualizeChestTransfer(Vector2 position, Vector2 chestPosition, Item item, int amountMoved)
Definition Chest.cs:347
static bool IsPlayerInChest(int i)
Definition Chest.cs:210
Item Clone()
Definition Item.cs:49916
int stack
Definition Item.cs:149
bool IsTheSameAs(Item compareItem)
Definition Item.cs:49926
void SetDefaults(int Type=0)
Definition Item.cs:47332

References Terraria.Main.chest, Terraria.Item.Clone(), Terraria.Chest.IsLocked(), Terraria.Chest.IsPlayerInChest(), Terraria.Item.IsTheSameAs(), Terraria.Chest.item, Terraria.Main.netMode, Terraria.Item.SetDefaults(), Terraria.Item.stack, and Terraria.Chest.VisualizeChestTransfer().

Referenced by Terraria.Player.QuickStackAllChests(), and Terraria.Chest.ServerPlaceItem().