I have set an option
"CanOvenToggle": false,and player trying to toggle is getting the message from plugin, but toggle itself is not prevented.
"CanOvenToggle": false,and player trying to toggle is getting the message from plugin, but toggle itself is not prevented.
private object OnOvenToggle(StorageContainer oven, BasePlayer player)
{
if (oven is BaseFuelLightSource || oven.needsBuildingPrivilegeToUse && !player.CanBuild())
return null;
if(oven.OwnerID != player.userID) return null;
PrintDebug("OnOvenToggle called");
var component = oven.gameObject.GetComponent<FurnaceController>();
var canUse = CanUse(oven.OwnerID) || CanUse(player.userID);
if (oven.IsOn())
{
component.StopCooking();
}
else
{
if (canUse)
component.StartCooking();
else
{
PrintDebug($"No permission ({player.userID})");
return null;
}
}
return false;
}And replace it with this one: private object OnOvenToggle(StorageContainer oven, BasePlayer player)
{
if (oven is BaseFuelLightSource || oven.needsBuildingPrivilegeToUse && !player.CanBuild())
return null;
if(oven.OwnerID != player.userID)
{
BasePlayer owner = BasePlayer.FindByID(oven.OwnerID);
if(owner == null) return null;
if (owner.currentTeam == (long)0) return null;
RelationshipManager.PlayerTeam playerTeam = RelationshipManager.Instance.FindTeam(player.currentTeam);
if(!playerTeam.members.Contains(player.userID)) return null;
}
PrintDebug("OnOvenToggle called");
var component = oven.gameObject.GetComponent<FurnaceController>();
var canUse = CanUse(oven.OwnerID) || CanUse(player.userID);
if (oven.IsOn())
{
component.StopCooking();
}
else
{
if (canUse)
component.StartCooking();
else
{
PrintDebug($"No permission ({player.userID})");
return null;
}
}
return false;
}This way only owner of oven or his teammate will have the ability to toggle oven.