木框是个好东西老玩家都知道,上可叠上云霄,下可各种白嫖,然而这个并不科学(我就是要在虚拟世界中寻求真实感),所以下面通过两个办法禁止叠木框、铁框、干草堆、钢筋框架等。
方法一:通过Harmony注入的形式,话不多说来看代码,编译放在Mod的Harmony文件夹下即可。
using DMT;
using Harmony;
using System;
using System.Reflection;
using UnityEngine;
public class AntiPileUpFrame
{
// 这里是固定格式不用管
public class AntiPileUpFrame_Init : IHarmony
{
public void Start()
{
Debug.Log(” Loading Patch : ” + GetType().ToString());
var harmony = HarmonyInstance.Create(GetType().ToString());
harmony.PatchAll(Assembly.GetExecutingAssembly());
}
}
// 钩住放置Block的PlaceBlock Class
[HarmonyPatch(typeof(Block))]
[HarmonyPatch(“PlaceBlock”)]
[HarmonyPatch(new Type[] { typeof(WorldBase), typeof(BlockPlacement.Result), typeof(EntityAlive) })]
public class PatchBlockPlaceBlock
{
static bool Prefix(Block __instance, ref global::WorldBase _world, ref global::BlockPlacement.Result _result, ref global::EntityAlive _ea)
{
// 不在地面上时放不了木框、铁框、干草堆、钢筋框架
if ((__instance.GetBlockName().ToLower().Contains(“woodframe”)
|| __instance.GetBlockName().ToLower().Contains(“scrapironframe”)
|| __instance.GetBlockName().ToLower().Contains(“rebarframe”)
|| __instance.GetBlockName().ToLower().Contains(“haybale”)) && (!_ea.onGround))
return false;
return true;
}
}
}
方法二:柒月大佬提议的另外一种办法:Materials里面新建材质,然后将稳定系数砍半甚至砍到0,然后把你想禁止的框架使用新材质,这样堆了就塌。