init a bigInjectbag project

This commit is contained in:
2025-10-22 02:09:18 +08:00
parent 2a79a885eb
commit 6915ad54ba
9 changed files with 828 additions and 9 deletions

View File

@@ -0,0 +1,80 @@
using HarmonyLib;
using ItemStatsSystem;
using System.Reflection;
using UnityEngine;
namespace test
{
/// <summary>
/// ItemDetailsDisplay的Harmony补丁
/// 为Setup方法添加后缀方法在控制台输出激活文本和Item对象的ID
/// </summary>
[HarmonyPatch(typeof(Duckov.UI.ItemHoveringUI))]
[HarmonyPatch("SetupRegisteredInfo")]
public class ItemDetailsCatchPatch
{
/// <summary>
/// Setup方法的后缀补丁在原始方法执行后调用
/// </summary>
/// <param name="__instance">ItemDetailsDisplay实例</param>
/// <param name="item">设置的Item对象</param>
[HarmonyPostfix]
static void Postfix(Duckov.UI.ItemDetailsDisplay __instance, Item item)
{
if (item != null)
{
// 检查是否是ID为882的物品
if (item.TypeID == 882)
{
Debug.Log("=== 物品ID 882 的详细信息 ===");
// 获取Item类的所有字段和属性
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
FieldInfo[] fields = typeof(Item).GetFields(flags);
PropertyInfo[] properties = typeof(Item).GetProperties(flags);
Debug.Log("字段信息:");
foreach (FieldInfo field in fields)
{
try
{
object value = field.GetValue(item);
string valueStr = value != null ? value.ToString() : "null";
Debug.Log($" {field.FieldType} {field.Name}: {valueStr}");
}
catch (System.Exception e)
{
Debug.Log($" {field.FieldType} {field.Name}: [获取失败] {e.Message}");
}
}
Debug.Log("属性信息:");
foreach (PropertyInfo property in properties)
{
try
{
if (property.GetIndexParameters().Length == 0) // 确保不是索引器属性
{
object value = property.GetValue(item);
string valueStr = value != null ? value.ToString() : "null";
Debug.Log($" {property.PropertyType} {property.Name}: {valueStr}");
}
}
catch (System.Exception e)
{
Debug.Log($" {property.PropertyType} {property.Name}: [获取失败] {e.Message}");
}
}
Debug.Log("=== 物品ID 882 信息结束 ===");
}
else
{
// 对于其他物品,只显示基本信息
string activationText = $"displayPatch激活 Item ID: {item.TypeID}";
Debug.Log(activationText);
}
}
}
}
}

View File

@@ -0,0 +1,58 @@
using HarmonyLib;
using UnityEngine;
namespace test
{
/// <summary>
/// 基础模板
/// 继承自Duckov.Modding.ModBehaviour
/// </summary>
public class ModBehaviour : Duckov.Modding.ModBehaviour
{
private Harmony harmony;
/// <summary>
/// 模组初始化时调用,类似于构造函数
/// </summary>
void Awake()
{
// 初始化Harmony实例
harmony = new Harmony("com.test.itemdetailsdisplay");
// 应用所有Harmony补丁
harmony.PatchAll();
Debug.Log("Test模组已加载ItemDetailsDisplay补丁已应用");
}
/// <summary>
/// 模组销毁时调用,用于清理资源
/// </summary>
void OnDestroy()
{
// 卸载所有Harmony补丁
harmony?.UnpatchAll();
}
void OnEnable()
{
// 模组启用时重新应用补丁
if (harmony == null)
{
harmony = new Harmony("com.test.itemdetailsdisplay");
harmony.PatchAll();
}
}
/// <summary>
/// 模组禁用时调用,取消事件监听器
/// 取消订阅事件,防止在模组禁用后仍然响应事件
/// </summary>
void OnDisable()
{
// 模组禁用时卸载补丁
harmony?.UnpatchAll();
harmony = null;
}
}
}