Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Harmony/Harmony_BlockWorkstation.cs
Nathaniel Cosford 062dfab2cd Patched
2025-05-30 01:04:40 +09:30

179 lines
7.7 KiB
C#

namespace Harmony.BlockWorkstationPatches
{
/*[HarmonyPatch(typeof(BlockWorkstation))]
[HarmonyPatch("PlaceBlock")]
public class PlaceBlockPatch
{
public static void Postfix(BlockWorkstation __instance, WorldBase _world, BlockPlacement.Result _result, EntityAlive _ea)
{
TileEntityWorkstation tileEntity = (TileEntityWorkstation)_world.GetTileEntity(_result.blockPos);
if (tileEntity != null)
{
tileEntity.entityId = _ea.entityId;
tileEntity.setModified();
}
}
}
[HarmonyPatch(typeof(BlockWorkstation))]
[HarmonyPatch("GetBlockActivationCommands")]
public class GetBlockActivationCommandsPatch
{
public static bool Prefix(BlockWorkstation __instance, ref BlockActivationCommand[] __result, WorldBase _world, BlockValue _blockValue, int _clrIdx, Vector3i _blockPos, EntityAlive _entityFocusing)
{
bool flag1 = _world.IsMyLandProtectedBlock(_blockPos, _world.GetGameManager().GetPersistentLocalPlayer());
TileEntityWorkstation tileEntity = (TileEntityWorkstation)_world.GetTileEntity(_blockPos);
bool flag2 = false;
bool flag3 = false;
if (tileEntity != null)
{
flag2 = tileEntity.IsPlayerPlaced;
flag3 = tileEntity.entityId == _entityFocusing.entityId;
}
__instance.cmds[1].enabled = ((flag1 & flag2) || flag3) && (double)__instance.TakeDelay > 0.0;
__result = __instance.cmds;
return false;
}
}*/
[HarmonyPatch(typeof(Block))]
[HarmonyPatch("OnBlockEntityTransformAfterActivated")]
public class OnBlockEntityTransformAfterActivatedPatch
{
public static bool Prefix(WorldBase _world, Vector3i _blockPos, int _cIdx, BlockValue _blockValue, BlockEntityData _ebcd
)
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated START");
if (_blockValue.Block.Properties.Values.ContainsKey("HasAnim"))
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated HAS ANIM");
if (_ebcd != null)
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated GetBlockName(): " + _ebcd.blockValue.Block.GetBlockName());
if (_ebcd.bHasTransform)
{
Animator[] componentsInChildren = _ebcd.transform.GetComponentsInChildren<Animator>();
if (componentsInChildren != null)
{
for (int i = componentsInChildren.Length - 1; i >= 0; i--)
{
Animator animator = componentsInChildren[i];
animator.enabled = true;
if (_blockValue.meta != 0)
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated TURN ON");
animator.enabled = true;
animator.SetBool("isOn", true);
}
else if (_blockValue.meta == 0)
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated TURN OFF");
animator.SetBool("isOn", false);
}
}
}
Transform transform2 = GameUtils.FindDeepChild(_ebcd.transform, "Audio");
if (transform2 != null)
{
if (_blockValue.meta != 0)
{
transform2.gameObject.SetActive(true);
}
else
{
transform2.gameObject.SetActive(false);
}
}
}
else
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated NO TRANSFORM");
}
}
else
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated NO BLOCK INFO, _blockValue: " + _blockValue.Block.GetBlockName());
}
}
return true;
}
}
[HarmonyPatch(typeof(BlockWorkstation))]
[HarmonyPatch("checkParticles")]
public class checkParticlesPatch
{
public static bool Prefix(BlockWorkstation __instance, WorldBase _world, int _clrIdx, Vector3i _blockPos, BlockValue _blockValue
)
{
//Log.Out("BlockWorkstationPatches-checkParticles START");
if (_blockValue.Block.Properties.Values.ContainsKey("HasAnim"))
{
//Log.Out("BlockWorkstationPatches-checkParticles HAS ANIM");
BlockEntityData _ebcd = ((World)_world).ChunkClusters[_clrIdx].GetBlockEntity(_blockPos);
if (_ebcd != null)
{
//Log.Out("BlockWorkstationPatches-checkParticles GetBlockName(): " + _ebcd.blockValue.Block.GetBlockName());
if (_ebcd.bHasTransform)
{
Animator[] componentsInChildren = _ebcd.transform.GetComponentsInChildren<Animator>();
if (componentsInChildren != null)
{
for (int i = componentsInChildren.Length - 1; i >= 0; i--)
{
Animator animator = componentsInChildren[i];
animator.enabled = true;
if (_blockValue.meta != 0)
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated TURN ON");
animator.enabled = true;
animator.SetBool("isOn", true);
}
else if (_blockValue.meta == 0)
{
//Log.Out("BlockWorkstationPatches-OnBlockEntityTransformAfterActivated TURN OFF");
animator.SetBool("isOn", false);
}
}
}
Transform transform2 = GameUtils.FindDeepChild(_ebcd.transform, "Audio");
if (transform2 != null)
{
if (_blockValue.meta != 0)
{
transform2.gameObject.SetActive(true);
}
else
{
transform2.gameObject.SetActive(false);
}
}
}
else
{
//Log.Out("BlockWorkstationPatches-checkParticles NO TRANSFORM");
}
}
else
{
//Log.Out("BlockWorkstationPatches-checkParticles NO BLOCK INFO, _blockValue: " + _blockValue.Block.GetBlockName());
}
}
return true;
}
}
}