From 701117b7ca2528ef66ebca24bdbece05150db1a2 Mon Sep 17 00:00:00 2001 From: Nicola Date: Tue, 6 Dec 2022 22:19:24 +0000 Subject: [PATCH] Fix Grinder & Drill behaviour to not crash out SE --- TetherSE/Tether.cs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/TetherSE/Tether.cs b/TetherSE/Tether.cs index 944b943..1dd72b2 100644 --- a/TetherSE/Tether.cs +++ b/TetherSE/Tether.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -88,26 +88,44 @@ public static void DoWelder(MyCharacter localPlayer) public static void DoGrinder() { var inventory = (MyInventory)GetTargetedBlock.selectedBlock.GetInventory(); + var toRemove = new List(); + foreach (var objectId in MySession.Static.LocalCharacter.GetInventory().GetItems()) { if (!objectId.Content.GetObjectId().ToString().ToLower().Contains("ore") && !objectId.Content.GetObjectId().ToString().ToLower().Contains("ingot") && !objectId.Content.GetObjectId().ToString().ToLower().Contains("component")) continue; + MyConstants.DEFAULT_INTERACTIVE_DISTANCE = 10000; - MyInventory.TransferByPlanner(MySession.Static.LocalCharacter.GetInventory(), inventory, objectId.Content.GetObjectId(), MyItemFlags.None, objectId.Amount); + + toRemove.Add(objectId); MyConstants.DEFAULT_INTERACTIVE_DISTANCE = 10; } + + foreach (var item in toRemove) + { + MyInventory.TransferByPlanner(MySession.Static.LocalCharacter.GetInventory(), inventory, + item.Content.GetObjectId(), MyItemFlags.None, item.Amount); + } } public static void DoDrill() { var inventory = (MyInventory)GetTargetedBlock.selectedBlock.GetInventory(); + var toRemove = new List(); + foreach (var objectId in MySession.Static.LocalCharacter.GetInventory().GetItems()) { if (!objectId.Content.GetObjectId().ToString().ToLower().Contains("ore")) continue; MyConstants.DEFAULT_INTERACTIVE_DISTANCE = 10000; - MyInventory.TransferByPlanner(MySession.Static.LocalCharacter.GetInventory(), inventory, objectId.Content.GetObjectId(), MyItemFlags.None, objectId.Amount); + toRemove.Add(objectId); MyConstants.DEFAULT_INTERACTIVE_DISTANCE = 10; } + + foreach (var item in toRemove) + { + MyInventory.TransferByPlanner(MySession.Static.LocalCharacter.GetInventory(), inventory, + item.Content.GetObjectId(), MyItemFlags.None, item.Amount); + } } public static int ticks = 0; }