Урна: пункт «Сумка» с иконкой мешка вместо «Обыскать» игры, первым в меню

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-16 15:13:07 +03:00
co-authored by Claude Opus 5.5
parent bd76360eeb
commit 35313f2e90
3 changed files with 19 additions and 3 deletions
+17 -3
View File
@@ -117,10 +117,14 @@ namespace NecromancerTome
/// <summary>Меню как у велосипеда (EntityVehicle.InitLocalActivationCommands): «service» - багажник (у транспорта
/// «Обслуживание», окно модификаций), «wrench» - починить, «frames» - границы, как у земельного камня. Сумку даёт
/// TEFeatureStorage («Search»), подъём - TEFeaturePickup («Take»), обе детали игры.</summary>
/// TEFeatureStorage, подъём - TEFeaturePickup («Take»), обе детали игры. «Сумка» (16.10: «переименуй в Сумка») -
/// своя команда с иконкой мешка, как «Хранилище» у транспорта: открывает то же хранилище командой
/// TEFeatureStorage:Search (составной блок выполняет команду по имени, не глядя на enabled), а «Обыскать» игры у
/// урны спрятан. Стоит первой - короткое E открывает сумку.</summary>
public override void InitBlockActivationCommands(Action<BlockActivationCommand, TileEntityComposite.EBlockCommandOrder, TileEntityFeatureData> _addCallback)
{
base.InitBlockActivationCommands(_addCallback);
_addCallback(new BlockActivationCommand("bag", "loot_sack", _enabled: false), TileEntityComposite.EBlockCommandOrder.First, FeatureData);
_addCallback(new BlockActivationCommand("trunk", "service", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
_addCallback(new BlockActivationCommand("urn_repair", "wrench", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
_addCallback(new BlockActivationCommand("bounds_show", "frames", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
@@ -430,10 +434,14 @@ namespace NecromancerTome
{
continue;
}
if (text.EndsWith(":trunk") || text == "trunk")
if (text.EndsWith(":trunk") || text == "trunk" || text.EndsWith(":bag"))
{
_commands[i].enabled = true;
}
else if (text == "TEFeatureStorage:Search")
{
_commands[i].enabled = false; // вместо него - «Сумка»
}
else if (text.EndsWith("urn_repair"))
{
_commands[i].enabled = _world != null && _world.GetBlock(_blockPos).damage > 0;
@@ -469,8 +477,9 @@ namespace NecromancerTome
}
bool skull = _commandName.EndsWith(":trunk") || _commandName == "trunk";
bool repair = _commandName.EndsWith("urn_repair");
bool bag = _commandName.EndsWith("TEFeatureCinerarium:bag");
bool bounds = _commandName.EndsWith("bounds_show") || _commandName.EndsWith("bounds_hide");
if (!skull && !bounds && !repair)
if (!skull && !bounds && !repair && !bag)
{
return true;
}
@@ -480,6 +489,11 @@ namespace NecromancerTome
{
return true;
}
if (bag)
{
__result = composite.OnBlockActivated(null, "TEFeatureStorage:Search", world, _blockPos, world.GetBlock(_blockPos), _player);
return false;
}
if (skull)
{
XUiC_NecroCinerariumSkullGrid.Open(_player, urn);